@nextpa/chat-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +53 -0
- package/dist/constants/defaults.d.ts +6 -0
- package/dist/constants/defaults.js +69 -0
- package/dist/core/chat-manager.d.ts +17 -0
- package/dist/core/chat-manager.js +39 -0
- package/dist/core/config-manager.d.ts +14 -0
- package/dist/core/config-manager.js +75 -0
- package/dist/core/connection-manager.d.ts +68 -0
- package/dist/core/connection-manager.js +273 -0
- package/dist/core/connection-retry-handler.d.ts +11 -0
- package/dist/core/connection-retry-handler.js +33 -0
- package/dist/core/consent-manager.d.ts +15 -0
- package/dist/core/consent-manager.js +40 -0
- package/dist/core/conversation-persistence.d.ts +23 -0
- package/dist/core/conversation-persistence.js +109 -0
- package/dist/core/event-emitter.d.ts +7 -0
- package/dist/core/event-emitter.js +27 -0
- package/dist/core/greeting-gate.d.ts +16 -0
- package/dist/core/greeting-gate.js +53 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.js +7 -0
- package/dist/core/link-target.d.ts +15 -0
- package/dist/core/link-target.js +64 -0
- package/dist/core/local-storage-persistence.d.ts +11 -0
- package/dist/core/local-storage-persistence.js +111 -0
- package/dist/core/navigation-manager.d.ts +24 -0
- package/dist/core/navigation-manager.js +132 -0
- package/dist/core/popover-manager.d.ts +14 -0
- package/dist/core/popover-manager.js +36 -0
- package/dist/core/session-beacon.d.ts +11 -0
- package/dist/core/session-beacon.js +60 -0
- package/dist/core/text-connection-manager.d.ts +58 -0
- package/dist/core/text-connection-manager.js +200 -0
- package/dist/core/text-mode-manager.d.ts +50 -0
- package/dist/core/text-mode-manager.js +154 -0
- package/dist/core/text-types.d.ts +20 -0
- package/dist/core/text-types.js +1 -0
- package/dist/core/text-widget-controller.d.ts +47 -0
- package/dist/core/text-widget-controller.js +278 -0
- package/dist/core/theme-manager.d.ts +10 -0
- package/dist/core/theme-manager.js +25 -0
- package/dist/core/types.d.ts +50 -0
- package/dist/core/types.js +1 -0
- package/dist/core/voice-state-manager.d.ts +85 -0
- package/dist/core/voice-state-manager.js +317 -0
- package/dist/core/widget-controller.d.ts +58 -0
- package/dist/core/widget-controller.js +533 -0
- package/dist/core/widget-core.d.ts +51 -0
- package/dist/core/widget-core.js +160 -0
- package/dist/google.d.ts +1 -0
- package/dist/google.js +12 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +40 -0
- package/dist/openai.d.ts +1 -0
- package/dist/openai.js +7 -0
- package/dist/services/api.d.ts +114 -0
- package/dist/services/api.js +336 -0
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.js +3 -0
- package/dist/services/page-interaction/constants.d.ts +1 -0
- package/dist/services/page-interaction/constants.js +1 -0
- package/dist/services/page-interaction/content-extractor.d.ts +2 -0
- package/dist/services/page-interaction/content-extractor.js +104 -0
- package/dist/services/page-interaction/deep-query.d.ts +8 -0
- package/dist/services/page-interaction/deep-query.js +44 -0
- package/dist/services/page-interaction/dom-executor.d.ts +7 -0
- package/dist/services/page-interaction/dom-executor.js +172 -0
- package/dist/services/page-interaction/dom-extractor.d.ts +8 -0
- package/dist/services/page-interaction/dom-extractor.js +252 -0
- package/dist/services/page-interaction/extension-bridge.d.ts +10 -0
- package/dist/services/page-interaction/extension-bridge.js +86 -0
- package/dist/services/page-interaction/iframe-navigation-manager.d.ts +28 -0
- package/dist/services/page-interaction/iframe-navigation-manager.js +154 -0
- package/dist/services/page-interaction/index.d.ts +5 -0
- package/dist/services/page-interaction/index.js +4 -0
- package/dist/services/page-interaction/page-interaction-handler.d.ts +21 -0
- package/dist/services/page-interaction/page-interaction-handler.js +129 -0
- package/dist/services/page-interaction/selector-generator.d.ts +1 -0
- package/dist/services/page-interaction/selector-generator.js +48 -0
- package/dist/services/page-interaction/types.d.ts +75 -0
- package/dist/services/page-interaction/types.js +1 -0
- package/dist/services/realtime/google/google-audio.d.ts +44 -0
- package/dist/services/realtime/google/google-audio.js +410 -0
- package/dist/services/realtime/google/google-provider.d.ts +47 -0
- package/dist/services/realtime/google/google-provider.js +465 -0
- package/dist/services/realtime/google/google-tool-mapper.d.ts +3 -0
- package/dist/services/realtime/google/google-tool-mapper.js +70 -0
- package/dist/services/realtime/google/index.d.ts +1 -0
- package/dist/services/realtime/google/index.js +1 -0
- package/dist/services/realtime/openai/index.d.ts +1 -0
- package/dist/services/realtime/openai/index.js +1 -0
- package/dist/services/realtime/openai/openai-audio-monitor.d.ts +1 -0
- package/dist/services/realtime/openai/openai-audio-monitor.js +55 -0
- package/dist/services/realtime/openai/openai-provider.d.ts +50 -0
- package/dist/services/realtime/openai/openai-provider.js +579 -0
- package/dist/services/realtime/openai/openai-tool-mapper.d.ts +15 -0
- package/dist/services/realtime/openai/openai-tool-mapper.js +14 -0
- package/dist/services/realtime/provider-factory.d.ts +4 -0
- package/dist/services/realtime/provider-factory.js +12 -0
- package/dist/services/realtime/types.d.ts +78 -0
- package/dist/services/realtime/types.js +1 -0
- package/dist/services/realtime/vertexai/index.d.ts +1 -0
- package/dist/services/realtime/vertexai/index.js +1 -0
- package/dist/services/realtime/vertexai/vertexai-provider.d.ts +53 -0
- package/dist/services/realtime/vertexai/vertexai-provider.js +561 -0
- package/dist/services/realtime/voice-session-tracker.d.ts +10 -0
- package/dist/services/realtime/voice-session-tracker.js +62 -0
- package/dist/services/signalr.d.ts +37 -0
- package/dist/services/signalr.js +145 -0
- package/dist/services/thinking-audio-pulse.d.ts +2 -0
- package/dist/services/thinking-audio-pulse.js +72 -0
- package/dist/services/thinking-audio.d.ts +2 -0
- package/dist/services/thinking-audio.js +105 -0
- package/dist/services/voice-health-watchdog.d.ts +42 -0
- package/dist/services/voice-health-watchdog.js +90 -0
- package/dist/services/webrtc-event-handler.d.ts +4 -0
- package/dist/services/webrtc-event-handler.js +42 -0
- package/dist/services/webrtc-greeting.d.ts +3 -0
- package/dist/services/webrtc-greeting.js +62 -0
- package/dist/services/webrtc-microphone.d.ts +15 -0
- package/dist/services/webrtc-microphone.js +64 -0
- package/dist/services/webrtc.d.ts +44 -0
- package/dist/services/webrtc.js +196 -0
- package/dist/types/index.d.ts +151 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/audio-context.d.ts +11 -0
- package/dist/utils/audio-context.js +33 -0
- package/dist/utils/connect-chime.d.ts +11 -0
- package/dist/utils/connect-chime.js +230 -0
- package/dist/utils/consent.d.ts +4 -0
- package/dist/utils/consent.js +30 -0
- package/dist/utils/language-detection.d.ts +1 -0
- package/dist/utils/language-detection.js +17 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.js +40 -0
- package/dist/utils/mic-level-analyser.d.ts +13 -0
- package/dist/utils/mic-level-analyser.js +50 -0
- package/dist/utils/proactive-events.d.ts +5 -0
- package/dist/utils/proactive-events.js +1 -0
- package/dist/utils/styles.d.ts +4 -0
- package/dist/utils/styles.js +35 -0
- package/dist/utils/theme-detection.d.ts +3 -0
- package/dist/utils/theme-detection.js +121 -0
- package/dist/utils/tool-status.d.ts +10 -0
- package/dist/utils/tool-status.js +61 -0
- package/dist/utils/ui-sounds.d.ts +3 -0
- package/dist/utils/ui-sounds.js +57 -0
- package/package.json +56 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { FunctionCall, ToolDefinition } from '../../types';
|
|
2
|
+
export type RealtimeProviderType = 'openai' | 'google' | 'vertexai';
|
|
3
|
+
export type ProviderError = {
|
|
4
|
+
readonly code?: string;
|
|
5
|
+
readonly message: string;
|
|
6
|
+
};
|
|
7
|
+
export type ProviderUsage = {
|
|
8
|
+
readonly inputTokens: number;
|
|
9
|
+
readonly outputTokens: number;
|
|
10
|
+
readonly totalTokens: number;
|
|
11
|
+
readonly cachedTokens?: number;
|
|
12
|
+
readonly textCachedInputTokens?: number;
|
|
13
|
+
readonly audioCachedInputTokens?: number;
|
|
14
|
+
readonly audioInputTokens?: number;
|
|
15
|
+
readonly audioOutputTokens?: number;
|
|
16
|
+
readonly textInputTokens?: number;
|
|
17
|
+
readonly textOutputTokens?: number;
|
|
18
|
+
};
|
|
19
|
+
export type ProviderEventMap = {
|
|
20
|
+
sessionReady: () => void;
|
|
21
|
+
connectionStateChanged: (state: 'connecting' | 'connected' | 'disconnected') => void;
|
|
22
|
+
userSpeechStarted: () => void;
|
|
23
|
+
userSpeechStopped: () => void;
|
|
24
|
+
userSpeechEnded: () => void;
|
|
25
|
+
/** Normalised microphone input level (0..1), emitted continuously while voice is connected. */
|
|
26
|
+
userAudioLevel: (level: number) => void;
|
|
27
|
+
userTranscriptDelta: (delta: string) => void;
|
|
28
|
+
userTranscriptCompleted: (transcript: string) => void;
|
|
29
|
+
assistantTranscriptDelta: (delta: string) => void;
|
|
30
|
+
assistantTranscriptDone: (transcript: string) => void;
|
|
31
|
+
audioDone: () => void;
|
|
32
|
+
functionCall: (call: FunctionCall) => void;
|
|
33
|
+
usageUpdated: (usage: ProviderUsage) => void;
|
|
34
|
+
error: (error: ProviderError) => void;
|
|
35
|
+
interrupted: () => void;
|
|
36
|
+
serverDisconnecting: (timeLeft?: string) => void;
|
|
37
|
+
};
|
|
38
|
+
export type TranscriptionConfig = {
|
|
39
|
+
mode: 'oob' | 'native';
|
|
40
|
+
model?: string;
|
|
41
|
+
language: string;
|
|
42
|
+
prompt?: string;
|
|
43
|
+
};
|
|
44
|
+
export type RealtimeProviderConnectConfig = {
|
|
45
|
+
apiKey: string;
|
|
46
|
+
model: string;
|
|
47
|
+
instructions: string;
|
|
48
|
+
voice: string;
|
|
49
|
+
tools: ToolDefinition[];
|
|
50
|
+
toolChoice: string;
|
|
51
|
+
speed?: number;
|
|
52
|
+
transcription?: TranscriptionConfig;
|
|
53
|
+
proxyUrl?: string;
|
|
54
|
+
proxyBearerToken?: string;
|
|
55
|
+
};
|
|
56
|
+
export type RealtimeProviderClient = {
|
|
57
|
+
readonly status: 'disconnected' | 'connecting' | 'connected';
|
|
58
|
+
connect(config: RealtimeProviderConnectConfig): Promise<void>;
|
|
59
|
+
close(): void;
|
|
60
|
+
mute(muted: boolean): void;
|
|
61
|
+
/** Stop the assistant talking now: cancel the in-flight response and drop any queued audio. */
|
|
62
|
+
interrupt(): void;
|
|
63
|
+
requestResponse(): void;
|
|
64
|
+
sendToolResult(callId: string, name: string, output: string): void;
|
|
65
|
+
sendText(text: string): void;
|
|
66
|
+
waitForAudioPlaybackEnd(timeoutMs?: number): Promise<string>;
|
|
67
|
+
refreshAudioDevice(): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Re-arm audio after the page returns to the foreground. iOS suspends
|
|
70
|
+
* AudioContexts and pauses the playback element when an installed PWA is
|
|
71
|
+
* backgrounded; on return they must be explicitly resumed/replayed or the
|
|
72
|
+
* call goes silent and the mic-level indicator freezes. No-op where the
|
|
73
|
+
* provider has nothing suspended.
|
|
74
|
+
*/
|
|
75
|
+
resumeAudio?(): void;
|
|
76
|
+
on<K extends keyof ProviderEventMap>(event: K, handler: ProviderEventMap[K]): () => void;
|
|
77
|
+
off<K extends keyof ProviderEventMap>(event: K, handler: ProviderEventMap[K]): void;
|
|
78
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { VertexAiRealtimeProvider } from './vertexai-provider';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { VertexAiRealtimeProvider } from './vertexai-provider';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { RealtimeProviderClient, RealtimeProviderConnectConfig, ProviderEventMap } from '../types';
|
|
2
|
+
export declare class VertexAiRealtimeProvider implements RealtimeProviderClient {
|
|
3
|
+
private ws;
|
|
4
|
+
private readonly audioHandler;
|
|
5
|
+
private readonly eventHandlers;
|
|
6
|
+
private _status;
|
|
7
|
+
private readonly pendingFunctionCalls;
|
|
8
|
+
private awaitingToolResponse;
|
|
9
|
+
private isSetupComplete;
|
|
10
|
+
private modelResponding;
|
|
11
|
+
private userSpeaking;
|
|
12
|
+
private pendingCommands;
|
|
13
|
+
private outputTranscriptBuffer;
|
|
14
|
+
private inputTranscriptBuffer;
|
|
15
|
+
private lastCompletedToolCalls;
|
|
16
|
+
private sentFrames;
|
|
17
|
+
private droppedFrames;
|
|
18
|
+
constructor();
|
|
19
|
+
get status(): 'disconnected' | 'connecting' | 'connected';
|
|
20
|
+
connect(config: RealtimeProviderConnectConfig): Promise<void>;
|
|
21
|
+
private handleMicFrame;
|
|
22
|
+
private describeDropReason;
|
|
23
|
+
close(): void;
|
|
24
|
+
resumeAudio(): void;
|
|
25
|
+
mute(muted: boolean): void;
|
|
26
|
+
interrupt(): void;
|
|
27
|
+
requestResponse(): void;
|
|
28
|
+
sendToolResult(callId: string, name: string, output: string): void;
|
|
29
|
+
sendText(text: string): void;
|
|
30
|
+
waitForAudioPlaybackEnd(timeoutMs?: number): Promise<string>;
|
|
31
|
+
refreshAudioDevice(): Promise<void>;
|
|
32
|
+
on<K extends keyof ProviderEventMap>(event: K, handler: ProviderEventMap[K]): () => void;
|
|
33
|
+
off<K extends keyof ProviderEventMap>(event: K, handler: ProviderEventMap[K]): void;
|
|
34
|
+
private sendJson;
|
|
35
|
+
private sendSetupMessage;
|
|
36
|
+
private emit;
|
|
37
|
+
private resetSessionState;
|
|
38
|
+
private executeRequestResponse;
|
|
39
|
+
private executeSendToolResult;
|
|
40
|
+
private finalizeInputTranscript;
|
|
41
|
+
private handleServerMessage;
|
|
42
|
+
private extractAndEmitUsage;
|
|
43
|
+
private flushPendingCommands;
|
|
44
|
+
private handleVoiceActivity;
|
|
45
|
+
private handleServerContent;
|
|
46
|
+
private static readonly THINKING_RENDER_DELAY_MS;
|
|
47
|
+
private deferAssistantTranscript;
|
|
48
|
+
private ensureSpeechStopped;
|
|
49
|
+
private handleModelTurn;
|
|
50
|
+
private handleTurnComplete;
|
|
51
|
+
private handleInterrupted;
|
|
52
|
+
private handleToolCall;
|
|
53
|
+
}
|