@katechat/ui 1.1.35 → 1.1.37
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/cjs/index.css +1 -1
- package/dist/cjs/index.css.map +3 -3
- package/dist/cjs/index.js +71 -71
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.css.map +3 -3
- package/dist/esm/index.js +68 -68
- package/dist/esm/index.js.map +4 -4
- package/dist/types/components/chat/ChatMessagesContainer.d.ts.map +1 -1
- package/dist/types/components/chat/input/ChatInput.d.ts +12 -2
- package/dist/types/components/chat/input/ChatInput.d.ts.map +1 -1
- package/dist/types/controls/AudioVisualizer/AudioVisualizer.d.ts +18 -0
- package/dist/types/controls/AudioVisualizer/AudioVisualizer.d.ts.map +1 -0
- package/dist/types/controls/AudioVisualizer/VoiceEqualizer.d.ts +19 -0
- package/dist/types/controls/AudioVisualizer/VoiceEqualizer.d.ts.map +1 -0
- package/dist/types/controls/index.d.ts +2 -0
- package/dist/types/controls/index.d.ts.map +1 -1
- package/dist/types/core/message.d.ts +6 -0
- package/dist/types/core/message.d.ts.map +1 -1
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/hooks/useIntersectionObserver.d.ts.map +1 -1
- package/dist/types/hooks/useRealtimeVoice.d.ts +40 -0
- package/dist/types/hooks/useRealtimeVoice.d.ts.map +1 -0
- package/dist/types/hooks/useVoiceRecorder.d.ts +18 -0
- package/dist/types/hooks/useVoiceRecorder.d.ts.map +1 -0
- package/dist/types/lib/audio.encoder.d.ts +11 -0
- package/dist/types/lib/audio.encoder.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +1 -0
- package/dist/types/lib/index.d.ts.map +1 -1
- package/dist/types/lib/markdown.parser.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +7 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessagesContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/ChatMessagesContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ChatMessagesContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/ChatMessagesContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyF,MAAM,OAAO,CAAC;AAG9G,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIjE,OAAO,8BAA8B,CAAC;AAEtC,UAAU,MAAM;IACd,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,IAAI,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACxF,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,qBAAqB,yFA8MjC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { ImageInput } from "@/core";
|
|
2
|
+
import { AudioInput, ImageInput } from "@/core";
|
|
3
3
|
export interface ChatInputRef {
|
|
4
4
|
handleAddFiles: (files: File[]) => void;
|
|
5
5
|
}
|
|
@@ -18,7 +18,17 @@ interface IProps {
|
|
|
18
18
|
uploadFormats?: string[];
|
|
19
19
|
maxUploadFileSize?: number;
|
|
20
20
|
maxImagesCount?: number;
|
|
21
|
-
|
|
21
|
+
/** REALTIME (voice-to-voice) model: Send is replaced with a Mic call button */
|
|
22
|
+
realtimeMode?: boolean;
|
|
23
|
+
voiceCallActive?: boolean;
|
|
24
|
+
voiceCallConnecting?: boolean;
|
|
25
|
+
onVoiceCallStart?: () => void;
|
|
26
|
+
onVoiceCallStop?: () => void;
|
|
27
|
+
/** Model accepts audio input: a voice-recording button is shown next to Send */
|
|
28
|
+
audioInputMode?: boolean;
|
|
29
|
+
/** Reports recording state and a live microphone analyser for visualization */
|
|
30
|
+
onRecordingChange?: (recording: boolean, analyser: AnalyserNode | null) => void;
|
|
31
|
+
onSendMessage: (message: string, images?: ImageInput[], audio?: AudioInput) => Promise<void>;
|
|
22
32
|
onStopRequest?: () => void;
|
|
23
33
|
onDocumentsUpload?: (documents: File[]) => void;
|
|
24
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../../src/components/chat/input/ChatInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6F,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../../src/components/chat/input/ChatInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6F,MAAM,OAAO,CAAC;AAWlH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAOhD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;CACzC;AAED,UAAU,MAAM;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAEhF,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7F,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;CACjD;AAED,eAAO,MAAM,SAAS,6EAiZrB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface AudioVisualizerProps {
|
|
3
|
+
inputAnalyser?: AnalyserNode | null;
|
|
4
|
+
outputAnalyser?: AnalyserNode | null;
|
|
5
|
+
/** Fallback height in CSS pixels while the container has no size yet */
|
|
6
|
+
height?: number;
|
|
7
|
+
colorUser?: string;
|
|
8
|
+
colorAssistant?: string;
|
|
9
|
+
delimiterColor?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Mirrored spectrum equalizer: user microphone in the top half,
|
|
14
|
+
* assistant audio in the bottom half. Resizes with its container.
|
|
15
|
+
*/
|
|
16
|
+
export declare const AudioVisualizer: React.FC<AudioVisualizerProps>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=AudioVisualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioVisualizer.d.ts","sourceRoot":"","sources":["../../../../src/controls/AudioVisualizer/AudioVisualizer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,UAAU,oBAAoB;IAC5B,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAwG1D,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./VoiceEqualizer.scss";
|
|
3
|
+
export declare const VOICE_EQUALIZER_COLLAPSED_HEIGHT = 48;
|
|
4
|
+
export declare const VOICE_EQUALIZER_EXPANDED_HEIGHT = 384;
|
|
5
|
+
interface VoiceEqualizerProps {
|
|
6
|
+
/** Panel is rendered only while active (a voice session or recording is running) */
|
|
7
|
+
active: boolean;
|
|
8
|
+
inputAnalyser?: AnalyserNode | null;
|
|
9
|
+
outputAnalyser?: AnalyserNode | null;
|
|
10
|
+
expandedHeight?: number;
|
|
11
|
+
defaultCollapsed?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Voice session equalizer panel: expanded it shows a full-size visualizer,
|
|
15
|
+
* collapsed it shrinks to a slim strip with a live mini equalizer.
|
|
16
|
+
*/
|
|
17
|
+
export declare const VoiceEqualizer: React.FC<VoiceEqualizerProps>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=VoiceEqualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceEqualizer.d.ts","sourceRoot":"","sources":["../../../../src/controls/AudioVisualizer/VoiceEqualizer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,OAAO,uBAAuB,CAAC;AAE/B,eAAO,MAAM,gCAAgC,KAAK,CAAC;AACnD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,UAAU,mBAAmB;IAC3B,oFAAoF;IACpF,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAkCxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/controls/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/controls/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC"}
|
|
@@ -63,6 +63,12 @@ export interface ImageInput {
|
|
|
63
63
|
width?: number;
|
|
64
64
|
height?: number;
|
|
65
65
|
}
|
|
66
|
+
export interface AudioInput {
|
|
67
|
+
fileName: string;
|
|
68
|
+
mimeType: string;
|
|
69
|
+
bytesBase64: string;
|
|
70
|
+
durationSec?: number;
|
|
71
|
+
}
|
|
66
72
|
/** Context passed to a CodePlugin when the user clicks Execute */
|
|
67
73
|
export interface CodePluginContext {
|
|
68
74
|
messageId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/core/message.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/core/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntersectionObserver.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIntersectionObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,OAAO,CAAC;AAE1D,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,SAAI,
|
|
1
|
+
{"version":3,"file":"useIntersectionObserver.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIntersectionObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,OAAO,CAAC;AAE1D,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,SAAI,uCA+BnH"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type RealtimeVoiceStatus = "disconnected" | "connecting" | "connected" | "error";
|
|
2
|
+
/** Connection info minted by the backend for a realtime voice session */
|
|
3
|
+
export interface RealtimeSessionInfo {
|
|
4
|
+
transport: "webrtc" | "websocket";
|
|
5
|
+
model: string;
|
|
6
|
+
/** webrtc: short-lived client secret for the provider */
|
|
7
|
+
clientSecret?: string;
|
|
8
|
+
/** webrtc: SDP exchange endpoint, e.g. https://api.openai.com/v1/realtime?model=... */
|
|
9
|
+
sdpUrl?: string;
|
|
10
|
+
/** websocket: URL of the realtime events socket (usually a backend proxy) */
|
|
11
|
+
wsUrl?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface RealtimeTranscript {
|
|
14
|
+
role: "user" | "assistant";
|
|
15
|
+
text: string;
|
|
16
|
+
itemId?: string;
|
|
17
|
+
}
|
|
18
|
+
interface UseRealtimeVoiceProps {
|
|
19
|
+
/** Mints session connection info (ephemeral token / proxy URL) on the backend */
|
|
20
|
+
getSession: () => Promise<RealtimeSessionInfo>;
|
|
21
|
+
onTranscript?: (transcript: RealtimeTranscript) => void;
|
|
22
|
+
onError?: (message: string) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface UseRealtimeVoiceResult {
|
|
25
|
+
status: RealtimeVoiceStatus;
|
|
26
|
+
error: string | null;
|
|
27
|
+
connect: () => Promise<void>;
|
|
28
|
+
disconnect: (newStatus?: "disconnected" | "error") => void;
|
|
29
|
+
inputAnalyser: AnalyserNode | null;
|
|
30
|
+
outputAnalyser: AnalyserNode | null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Voice-to-voice session against an OpenAI-compatible Realtime API.
|
|
34
|
+
* Supports the WebRTC transport (browser connects to the provider with an
|
|
35
|
+
* ephemeral token) and a WebSocket transport (events + PCM16 audio relayed
|
|
36
|
+
* through a backend proxy for providers without ephemeral tokens).
|
|
37
|
+
*/
|
|
38
|
+
export declare function useRealtimeVoice({ getSession, onTranscript, onError }: UseRealtimeVoiceProps): UseRealtimeVoiceResult;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=useRealtimeVoice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRealtimeVoice.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRealtimeVoice.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAExF,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB;IAC7B,iFAAiF;IACjF,UAAU,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,OAAO,KAAK,IAAI,CAAC;IAC3D,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;CACrC;AAID;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAAG,sBAAsB,CAgSrH"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AudioInput } from "@/core";
|
|
2
|
+
export interface UseVoiceRecorderResult {
|
|
3
|
+
recording: boolean;
|
|
4
|
+
/** Live microphone analyser for visualization while recording */
|
|
5
|
+
analyser: AnalyserNode | null;
|
|
6
|
+
error: string | null;
|
|
7
|
+
startRecording: () => Promise<void>;
|
|
8
|
+
/** Stops recording and resolves with the recorded WAV audio (null if nothing was captured) */
|
|
9
|
+
stopRecording: () => Promise<AudioInput | null>;
|
|
10
|
+
/** Stops recording and discards the result */
|
|
11
|
+
cancelRecording: () => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Microphone recorder producing 16kHz mono 16-bit WAV (base64) —
|
|
15
|
+
* the format accepted by audio-input chat models (e.g. gpt-4o-audio).
|
|
16
|
+
*/
|
|
17
|
+
export declare function useVoiceRecorder(): UseVoiceRecorderResult;
|
|
18
|
+
//# sourceMappingURL=useVoiceRecorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../src/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAKpC,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,8FAA8F;IAC9F,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAChD,8CAA8C;IAC9C,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,sBAAsB,CA4FzD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** PCM/WAV encoding helpers for voice recording and realtime audio streaming */
|
|
2
|
+
/** Downsample Float32 PCM to the target rate with simple linear interpolation */
|
|
3
|
+
export declare function downsamplePcm(samples: Float32Array, fromRate: number, toRate: number): Float32Array;
|
|
4
|
+
/** Encode mono Float32 PCM into a 16-bit WAV file */
|
|
5
|
+
export declare function encodeWav(samples: Float32Array, sampleRate: number): ArrayBuffer;
|
|
6
|
+
export declare function arrayBufferToBase64(buffer: ArrayBuffer): string;
|
|
7
|
+
/** Decode base64-encoded little-endian PCM16 into samples */
|
|
8
|
+
export declare function base64ToInt16(b64: string): Int16Array;
|
|
9
|
+
/** Encode Float32 samples as base64 PCM16 (realtime input_audio_buffer format) */
|
|
10
|
+
export declare function float32ToPcm16Base64(samples: Float32Array): string;
|
|
11
|
+
//# sourceMappingURL=audio.encoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.encoder.d.ts","sourceRoot":"","sources":["../../../src/lib/audio.encoder.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAanG;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CA+BhF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAQ/D;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAOrD;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAOlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.parser.d.ts","sourceRoot":"","sources":["../../../src/lib/markdown.parser.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAe,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown.parser.d.ts","sourceRoot":"","sources":["../../../src/lib/markdown.parser.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAe,MAAM,gBAAgB,CAAC;AAyKtD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUrD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,UAAQ,GAAG,MAAM,EAAE,CA0B/E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,EAAE,CAsCrE;AAUD,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGvD"}
|