@chatwidgetai/chat-widget 0.3.6 → 0.3.8
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/ai-chat-widget.umd.js +1562 -1380
- package/dist/ai-chat-widget.umd.js.map +1 -1
- package/dist/api/client.d.ts +12 -2
- package/dist/api/client.d.ts.map +1 -1
- package/dist/components/ChatWidget/hooks/useWidgetAppearance.d.ts +37 -0
- package/dist/components/ChatWidget/hooks/useWidgetAppearance.d.ts.map +1 -0
- package/dist/components/ChatWidget/icons.d.ts +2 -0
- package/dist/components/ChatWidget/icons.d.ts.map +1 -0
- package/dist/components/ChatWidget/parts/WidgetTriggers.d.ts +25 -0
- package/dist/components/ChatWidget/parts/WidgetTriggers.d.ts.map +1 -0
- package/dist/components/ChatWidget.d.ts.map +1 -1
- package/dist/components/ChatWindow.d.ts +4 -1
- package/dist/components/ChatWindow.d.ts.map +1 -1
- package/dist/components/WelcomeBubble.d.ts +12 -0
- package/dist/components/WelcomeBubble.d.ts.map +1 -0
- package/dist/components/icons.d.ts +21 -0
- package/dist/components/icons.d.ts.map +1 -0
- package/dist/components/triggers/ButtonTrigger.d.ts +11 -0
- package/dist/components/triggers/ButtonTrigger.d.ts.map +1 -0
- package/dist/components/triggers/InputBarTrigger.d.ts +18 -0
- package/dist/components/triggers/InputBarTrigger.d.ts.map +1 -0
- package/dist/components/triggers/PillTrigger.d.ts +12 -0
- package/dist/components/triggers/PillTrigger.d.ts.map +1 -0
- package/dist/components/triggers/index.d.ts +8 -0
- package/dist/components/triggers/index.d.ts.map +1 -0
- package/dist/hooks/useChat/action-handler.d.ts +17 -1
- package/dist/hooks/useChat/action-handler.d.ts.map +1 -1
- package/dist/hooks/useChat/index.d.ts +5 -0
- package/dist/hooks/useChat/index.d.ts.map +1 -1
- package/dist/hooks/useChat/message-hydration.d.ts.map +1 -1
- package/dist/hooks/useChat/stream-buffer.d.ts +18 -0
- package/dist/hooks/useChat/stream-buffer.d.ts.map +1 -0
- package/dist/hooks/useChat/stream-handlers.d.ts +3 -3
- package/dist/hooks/useChat/stream-handlers.d.ts.map +1 -1
- package/dist/hooks/useChat/stream-state.d.ts.map +1 -1
- package/dist/hooks/useChat/types.d.ts +2 -0
- package/dist/hooks/useChat/types.d.ts.map +1 -1
- package/dist/index.esm.js +1562 -1380
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1562 -1380
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +5 -92
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/api/client.d.ts
CHANGED
|
@@ -36,8 +36,17 @@ export declare class WidgetApiClient {
|
|
|
36
36
|
size: number;
|
|
37
37
|
}>;
|
|
38
38
|
sendAgentMessageStream(conversationId: string, message: string, fileIds?: string[], signal?: AbortSignal): AsyncGenerator<StreamEvent>;
|
|
39
|
-
continueAgentMessageStream(conversationId: string, toolCallId: string, state: Record<string, JsonValue>, signal?: AbortSignal): AsyncGenerator<StreamEvent>;
|
|
40
39
|
dismissAgentMessageStream(conversationId: string, toolCallId: string, signal?: AbortSignal): AsyncGenerator<StreamEvent>;
|
|
40
|
+
/**
|
|
41
|
+
* Continue agent after halting action completes
|
|
42
|
+
* Call this when frontend completes an action and wants to pass result back to agent
|
|
43
|
+
*/
|
|
44
|
+
continueAgentAction(conversationId: string, toolCallId: string, body: Record<string, JsonValue>, signal?: AbortSignal): AsyncGenerator<StreamEvent>;
|
|
45
|
+
/**
|
|
46
|
+
* NEW: Call action endpoint (frontend-owned flow)
|
|
47
|
+
* Used for multi-step actions like booking appointments
|
|
48
|
+
*/
|
|
49
|
+
callActionEndpoint<T = unknown>(actionId: string, endpoint: string, input: Record<string, unknown>, token?: string): Promise<T>;
|
|
41
50
|
/**
|
|
42
51
|
* Submit feedback for a message
|
|
43
52
|
*/
|
|
@@ -48,7 +57,8 @@ export declare class WidgetApiClient {
|
|
|
48
57
|
}): Promise<void>;
|
|
49
58
|
/**
|
|
50
59
|
* Generate follow-up suggestions based on conversation context and available actions.
|
|
51
|
-
*
|
|
60
|
+
* @deprecated Follow-ups are now generated server-side in parallel and included in the done event.
|
|
61
|
+
* This method is kept for backwards compatibility but is no longer called by the widget.
|
|
52
62
|
*/
|
|
53
63
|
generateFollowUps(messages: ConversationMessage[], actionIds: string[]): Promise<FollowUpSuggestion[]>;
|
|
54
64
|
/**
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEzG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;CAOpG;AAwDD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,eAAe;IAKnC,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B,OAAO,CAAC,WAAW;IAInB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBlC,uBAAuB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IA0BhH;;OAEG;IACG,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBtG,sBAAsB,CAC3B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,WAAW,CAAC;IAgCvB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { CSSProperties, RefObject } from "react";
|
|
2
|
+
import type { WidgetConfig, TriggerType } from "../../../types";
|
|
3
|
+
interface UseWidgetAppearanceParams {
|
|
4
|
+
containerRef: RefObject<HTMLDivElement | null>;
|
|
5
|
+
config: WidgetConfig | null;
|
|
6
|
+
theme?: "light" | "dark";
|
|
7
|
+
primaryColor?: string;
|
|
8
|
+
position?: string;
|
|
9
|
+
size?: string;
|
|
10
|
+
headerTitle?: string;
|
|
11
|
+
welcomeTitle?: string;
|
|
12
|
+
welcomeMessage?: string;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
welcomeBubbleText?: string;
|
|
15
|
+
triggerType?: TriggerType;
|
|
16
|
+
triggerText?: string;
|
|
17
|
+
customStyles?: CSSProperties;
|
|
18
|
+
zIndex?: number;
|
|
19
|
+
previewMode: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function useWidgetAppearance({ containerRef, config, theme, primaryColor, position, size, headerTitle, welcomeTitle, welcomeMessage, placeholder, welcomeBubbleText, triggerType, triggerText, customStyles, zIndex, previewMode: _previewMode, }: UseWidgetAppearanceParams): {
|
|
22
|
+
effectiveTheme: "light" | "dark";
|
|
23
|
+
effectivePosition: string;
|
|
24
|
+
accentColor: string;
|
|
25
|
+
iconContrastColor: string | undefined;
|
|
26
|
+
effectiveSize: string;
|
|
27
|
+
effectiveHeaderTitle: string;
|
|
28
|
+
effectiveWelcomeTitle: string;
|
|
29
|
+
effectiveWelcomeMessage: string;
|
|
30
|
+
effectivePlaceholder: string;
|
|
31
|
+
effectiveWelcomeBubbleText: string;
|
|
32
|
+
effectiveTriggerType: TriggerType;
|
|
33
|
+
effectiveTriggerText: string;
|
|
34
|
+
mergedStyles: Record<string, string>;
|
|
35
|
+
};
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=useWidgetAppearance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWidgetAppearance.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatWidget/hooks/useWidgetAppearance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKhE,UAAU,yBAAyB;IACjC,YAAY,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,MAAM,EACN,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,WAAW,EAAE,YAAY,GAC1B,EAAE,yBAAyB;;;;;;;;;;;;;;EA+D3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/components/ChatWidget/icons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { FormEvent, MouseEvent } from "react";
|
|
3
|
+
import type { TriggerType } from "../../../types";
|
|
4
|
+
interface WidgetTriggersProps {
|
|
5
|
+
triggerType: TriggerType;
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
onToggle: () => void;
|
|
8
|
+
triggerText: string;
|
|
9
|
+
placeholder: string;
|
|
10
|
+
IconComponent: () => React.ReactElement;
|
|
11
|
+
showWelcomeBubble: boolean;
|
|
12
|
+
welcomeBubbleText?: string;
|
|
13
|
+
previewMode: boolean;
|
|
14
|
+
onDismissBubble: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
15
|
+
isInputBarCollapsed: boolean;
|
|
16
|
+
setIsInputBarCollapsed: (value: boolean) => void;
|
|
17
|
+
inputBarValue: string;
|
|
18
|
+
setInputBarValue: (value: string) => void;
|
|
19
|
+
onSubmitInputBar: (event: FormEvent<HTMLFormElement>) => void;
|
|
20
|
+
accentColor?: string;
|
|
21
|
+
iconColor?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function WidgetTriggers({ triggerType, isOpen, onToggle, triggerText, placeholder, IconComponent, showWelcomeBubble, welcomeBubbleText, previewMode, onDismissBubble, isInputBarCollapsed, setIsInputBarCollapsed, inputBarValue, setInputBarValue, onSubmitInputBar, accentColor, iconColor, }: WidgetTriggersProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=WidgetTriggers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetTriggers.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatWidget/parts/WidgetTriggers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,UAAU,mBAAmB;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC;IACxC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAChE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,sBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,MAAM,EACN,QAAQ,EACR,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,SAAS,GACV,EAAE,mBAAmB,2CAmHrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../src/components/ChatWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../src/components/ChatWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,WAAW,EAAgB,MAAM,UAAU,CAAC;AAOrD,OAAO,0CAA0C,CAAC;AAClD,OAAO,2BAA2B,CAAC;AAEnC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA6c5C,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Main chat interface window - Modern minimal design
|
|
4
4
|
*/
|
|
5
5
|
import React from 'react';
|
|
6
|
-
import { type ConversationMessage, type FollowUpSuggestion } from '@chatwidgetai/chat-components';
|
|
6
|
+
import { type ConversationMessage, type FollowUpSuggestion, type ActionEndpointCallback } from '@chatwidgetai/chat-components';
|
|
7
7
|
import { WidgetConfig } from '../types';
|
|
8
8
|
import { ConversationSummary } from '../hooks/useChat';
|
|
9
9
|
export interface ChatWindowProps {
|
|
@@ -16,12 +16,14 @@ export interface ChatWindowProps {
|
|
|
16
16
|
onFeedback: (messageId: string, feedback: 'positive' | 'negative') => void;
|
|
17
17
|
onActionClick?: (suggestion: FollowUpSuggestion) => void;
|
|
18
18
|
onActionDismiss?: (toolCallId: string) => void;
|
|
19
|
+
onCallEndpoint?: ActionEndpointCallback;
|
|
19
20
|
conversations?: ConversationSummary[];
|
|
20
21
|
onLoadConversations?: () => void;
|
|
21
22
|
onSwitchConversation?: (conversationId: string) => Promise<void>;
|
|
22
23
|
onStartNewConversation?: () => void;
|
|
23
24
|
onDeleteConversation?: (conversationId: string) => void;
|
|
24
25
|
currentConversationId?: string;
|
|
26
|
+
sizeOverride?: 'small' | 'medium' | 'large';
|
|
25
27
|
headerTitleOverride?: string;
|
|
26
28
|
welcomeTitleOverride?: string;
|
|
27
29
|
welcomeMessageOverride?: string;
|
|
@@ -30,6 +32,7 @@ export interface ChatWindowProps {
|
|
|
30
32
|
text: string;
|
|
31
33
|
actionId?: string;
|
|
32
34
|
})[];
|
|
35
|
+
onInputFocus?: () => void;
|
|
33
36
|
}
|
|
34
37
|
export declare const ChatWindow: React.FC<ChatWindowProps>;
|
|
35
38
|
//# sourceMappingURL=ChatWindow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatWindow.d.ts","sourceRoot":"","sources":["../../src/components/ChatWindow.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAC;AACrD,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"ChatWindow.d.ts","sourceRoot":"","sources":["../../src/components/ChatWindow.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAC;AACrD,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAuCvD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,KAAK,IAAI,CAAC;IAC3E,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACzD,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,cAAc,CAAC,EAAE,sBAAsB,CAAC;IAExC,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,oBAAoB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,oBAAoB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B,CAAC,EAAE,CAAC,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAE9E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA2ThD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WelcomeBubble Component
|
|
3
|
+
* Floating bubble that appears near the chat trigger to invite users to chat
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
export interface WelcomeBubbleProps {
|
|
7
|
+
text: string;
|
|
8
|
+
onClick: () => void;
|
|
9
|
+
onDismiss: (e: React.MouseEvent) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const WelcomeBubble: React.FC<WelcomeBubbleProps>;
|
|
12
|
+
//# sourceMappingURL=WelcomeBubble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WelcomeBubble.d.ts","sourceRoot":"","sources":["../../src/components/WelcomeBubble.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkBtD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Icon Components
|
|
3
|
+
* SVG icons used in the chat widget
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
export declare const MessageCircleIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const MessageSquareIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const MailIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const PhoneIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const HelpCircleIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const ZapIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare const SendIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare const UserIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare const UsersIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare const HeadphonesIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare const CpuIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare const ChevronDownIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const ChevronUpIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare const CloseIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare const iconComponents: Record<string, () => React.ReactElement>;
|
|
21
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/components/icons.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,iBAAiB,+CAI7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,+CAI7B,CAAC;AAEF,eAAO,MAAM,QAAQ,+CAKpB,CAAC;AAEF,eAAO,MAAM,SAAS,+CAIrB,CAAC;AAEF,eAAO,MAAM,cAAc,+CAM1B,CAAC;AAEF,eAAO,MAAM,OAAO,+CAInB,CAAC;AAEF,eAAO,MAAM,QAAQ,+CAKpB,CAAC;AAEF,eAAO,MAAM,QAAQ,+CAKpB,CAAC;AAEF,eAAO,MAAM,SAAS,+CAOrB,CAAC;AAEF,eAAO,MAAM,cAAc,+CAK1B,CAAC;AAEF,eAAO,MAAM,OAAO,+CAanB,CAAC;AAEF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAEF,eAAO,MAAM,aAAa,+CAIzB,CAAC;AAEF,eAAO,MAAM,SAAS,+CAKrB,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,YAAY,CAanE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ButtonTrigger Component
|
|
3
|
+
* Default circular button trigger for the chat widget
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
export interface ButtonTriggerProps {
|
|
7
|
+
isOpen: boolean;
|
|
8
|
+
onClick: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const ButtonTrigger: React.FC<ButtonTriggerProps>;
|
|
11
|
+
//# sourceMappingURL=ButtonTrigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonTrigger.d.ts","sourceRoot":"","sources":["../../../src/components/triggers/ButtonTrigger.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiBtD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InputBarTrigger Component
|
|
3
|
+
* Input bar trigger that allows typing a message before opening the widget
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
export interface InputBarTriggerProps {
|
|
7
|
+
placeholder: string;
|
|
8
|
+
value: string;
|
|
9
|
+
onChange: (value: string) => void;
|
|
10
|
+
onSubmit: (e: React.FormEvent) => void;
|
|
11
|
+
onExpand: () => void;
|
|
12
|
+
onFocus?: () => void;
|
|
13
|
+
onClick?: () => void;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
readOnly?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const InputBarTrigger: React.FC<InputBarTriggerProps>;
|
|
18
|
+
//# sourceMappingURL=InputBarTrigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputBarTrigger.d.ts","sourceRoot":"","sources":["../../../src/components/triggers/InputBarTrigger.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA4C1D,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PillTrigger Component
|
|
3
|
+
* Pill-shaped button with text that transforms to round button when open
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
export interface PillTriggerProps {
|
|
7
|
+
isOpen: boolean;
|
|
8
|
+
text: string;
|
|
9
|
+
onClick: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const PillTrigger: React.FC<PillTriggerProps>;
|
|
12
|
+
//# sourceMappingURL=PillTrigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PillTrigger.d.ts","sourceRoot":"","sources":["../../../src/components/triggers/PillTrigger.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAmBlD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trigger Components
|
|
3
|
+
* Export all trigger types for the chat widget
|
|
4
|
+
*/
|
|
5
|
+
export { ButtonTrigger, type ButtonTriggerProps } from './ButtonTrigger';
|
|
6
|
+
export { PillTrigger, type PillTriggerProps } from './PillTrigger';
|
|
7
|
+
export { InputBarTrigger, type InputBarTriggerProps } from './InputBarTrigger';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/triggers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
import type { ConversationMessage, ChatState, JsonValue } from '../../types';
|
|
3
3
|
import type { ActionRequestEvent, ActionLoopContext } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Handle the action loop for halting actions.
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. Display the action in UI
|
|
9
|
+
* 2. Call the frontend handler (which waits for user interaction or returns immediately for display actions)
|
|
10
|
+
* 3. Handler returns body when complete
|
|
11
|
+
* 4. Send body to backend via continueAgentAction
|
|
12
|
+
* 5. Process any subsequent events (may include new action_request for chained actions)
|
|
13
|
+
*/
|
|
4
14
|
export declare function handleActionLoop(client: ActionLoopContext['client'], initialEvent: ActionRequestEvent, streamState: ActionLoopContext['streamState'], onMessageUpdate: ActionLoopContext['onMessageUpdate'], setState: ActionLoopContext['setState'], widgetId: string, conversationId: string, getMessages: ActionLoopContext['getMessages']): Promise<void>;
|
|
5
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Setup resume callbacks for incomplete actions after page reload.
|
|
17
|
+
*
|
|
18
|
+
* When a page reloads with an incomplete action, this sets up callbacks
|
|
19
|
+
* so when the user completes the action, we can continue the agent flow.
|
|
20
|
+
*/
|
|
21
|
+
export declare function setupActionResumeCallbacks(messages: ConversationMessage[], client: ActionLoopContext['client'], conversationId: string, widgetId: string, setState: Dispatch<SetStateAction<ChatState>>, onMessageUpdate: (message: ConversationMessage) => void, createStreamState: () => ActionLoopContext['streamState'], registerCallback: (toolCallId: string, callback: (body: Record<string, JsonValue>) => Promise<void>) => void): void;
|
|
6
22
|
//# sourceMappingURL=action-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/action-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"action-handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/action-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMrE;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EACnC,YAAY,EAAE,kBAAkB,EAChC,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAC7C,eAAe,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,EACrD,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,EACvC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAkIf;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EACnC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAC7C,eAAe,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,EACvD,iBAAiB,EAAE,MAAM,iBAAiB,CAAC,aAAa,CAAC,EACzD,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,GAC3G,IAAI,CAmIN"}
|
|
@@ -35,6 +35,11 @@ export interface UseChatReturn {
|
|
|
35
35
|
startNewConversation: () => void;
|
|
36
36
|
deleteConversation: (conversationId: string) => void;
|
|
37
37
|
createDemoConversation: (userMessage: string, assistantMessage: string) => Promise<string | null>;
|
|
38
|
+
/** Call an action endpoint directly (frontend-owned flow) */
|
|
39
|
+
callActionEndpoint: <T = unknown>(actionId: string, endpoint: string, input: Record<string, unknown>, options?: {
|
|
40
|
+
token?: string;
|
|
41
|
+
toolCallId?: string;
|
|
42
|
+
}) => Promise<T>;
|
|
38
43
|
}
|
|
39
44
|
export declare function useChat(options: UseChatOptions): UseChatReturn;
|
|
40
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;AA8BhF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,kBAAkB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,kBAAkB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClG,6DAA6D;IAC7D,kBAAkB,EAAE,CAAC,CAAC,GAAG,OAAO,EAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,KAC9C,OAAO,CAAC,CAAC,CAAC,CAAC;CACjB;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CA6nB9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-hydration.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/message-hydration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAoB,MAAM,aAAa,CAAC;AAEzE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CA4CvF;
|
|
1
|
+
{"version":3,"file":"message-hydration.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/message-hydration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAoB,MAAM,aAAa,CAAC;AAEzE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CA4CvF;AA4CD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAItF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stream Buffer
|
|
3
|
+
* Smooths out streaming text rendering by buffering words and draining them
|
|
4
|
+
* with requestAnimationFrame for a fluid typing effect.
|
|
5
|
+
*/
|
|
6
|
+
export interface StreamBuffer {
|
|
7
|
+
pendingWords: string[];
|
|
8
|
+
displayedContent: string;
|
|
9
|
+
streamEnded: boolean;
|
|
10
|
+
rafHandle: number | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function createStreamBuffer(): StreamBuffer;
|
|
13
|
+
export declare function appendToBuffer(buffer: StreamBuffer, content: string): void;
|
|
14
|
+
export declare function startBufferDrain(buffer: StreamBuffer, onContentUpdate: (content: string) => void): void;
|
|
15
|
+
export declare function flushBuffer(buffer: StreamBuffer): string;
|
|
16
|
+
export declare function cancelBuffer(buffer: StreamBuffer): void;
|
|
17
|
+
export declare function resetBuffer(buffer: StreamBuffer): void;
|
|
18
|
+
//# sourceMappingURL=stream-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-buffer.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/stream-buffer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAOjD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI1E;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACzC,IAAI,CA0BN;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAaxD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAMvD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAQtD"}
|
|
@@ -13,9 +13,6 @@ export declare function handleToolEndEvent(event: Extract<StreamEvent, {
|
|
|
13
13
|
export declare function handleToolErrorEvent(event: Extract<StreamEvent, {
|
|
14
14
|
type: "tool_error";
|
|
15
15
|
}>, streamState: StreamState, _onMessageUpdate: (message: ConversationMessage) => void, setState: Dispatch<SetStateAction<ChatState>>): void;
|
|
16
|
-
export declare function handleDoneEvent(event: Extract<StreamEvent, {
|
|
17
|
-
type: "done";
|
|
18
|
-
}>, streamState: StreamState, _onMessageUpdate: (message: ConversationMessage) => void, setState: Dispatch<SetStateAction<ChatState>>): void;
|
|
19
16
|
export declare function handleHaltEvent(event: Extract<StreamEvent, {
|
|
20
17
|
type: "halt";
|
|
21
18
|
}>, _streamState: StreamState, onMessageUpdate: (message: ConversationMessage) => void, setState: Dispatch<SetStateAction<ChatState>>): void;
|
|
@@ -24,4 +21,7 @@ export declare function handleErrorEvent(_event: Extract<StreamEvent, {
|
|
|
24
21
|
}>, _streamState: StreamState, onMessageUpdate: (message: ConversationMessage) => void, setState: Dispatch<SetStateAction<ChatState>>): void;
|
|
25
22
|
export declare const eventHandlers: Record<StreamEvent['type'], EventHandler>;
|
|
26
23
|
export declare function handleStreamEvent(event: StreamEvent, streamState: StreamState, onMessageUpdate: (message: ConversationMessage) => void, setState: Dispatch<SetStateAction<ChatState>>): void;
|
|
24
|
+
export declare function handleDoneEvent(event: Extract<StreamEvent, {
|
|
25
|
+
type: "done";
|
|
26
|
+
}>, streamState: StreamState, onMessageUpdate: (message: ConversationMessage) => void, setState: Dispatch<SetStateAction<ChatState>>): void;
|
|
27
27
|
//# sourceMappingURL=stream-handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-handlers.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/stream-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"stream-handlers.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/stream-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-state.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/stream-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-state.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/stream-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,wBAAgB,iBAAiB,IAAI,WAAW,CAW/C;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAC7C,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,OAAO,GAChB,IAAI,CAeN;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAC7C,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,EACvC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,WAAW,CAAC,EAAE,kBAAkB,EAAE,GACjC,IAAI,CA4BN;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAC7C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,IAAI,CA2BN"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
import type { ConversationMessage, ChatState, StreamEvent } from '../../types';
|
|
3
3
|
import type { WidgetApiClient } from '../../api/client';
|
|
4
|
+
import type { StreamBuffer } from './stream-buffer';
|
|
4
5
|
export type StreamState = {
|
|
5
6
|
currentContent: string;
|
|
6
7
|
currentMessageId: string;
|
|
@@ -9,6 +10,7 @@ export type StreamState = {
|
|
|
9
10
|
sources: ConversationMessage["sources"];
|
|
10
11
|
toolCallToActionId: Record<string, string>;
|
|
11
12
|
requestId: string;
|
|
13
|
+
buffer: StreamBuffer;
|
|
12
14
|
};
|
|
13
15
|
export type ActionRequestEvent = Extract<StreamEvent, {
|
|
14
16
|
type: "action_request";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACxC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC;AAElF,MAAM,MAAM,YAAY,GAAG,CACzB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,EACvD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,KAC1C,IAAI,CAAC;AAEV,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACxD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,mBAAmB,EAAE,CAAC;CAC1C"}
|