@steerable/agent-ui 0.2.3 → 0.2.5
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/cards/ActionSegmentCard.d.ts +18 -0
- package/dist/cards/ActionSegmentCard.d.ts.map +1 -0
- package/dist/cards/ActionSegmentCard.js +26 -0
- package/dist/cards/ActionSegmentCard.js.map +1 -0
- package/dist/cards/AnalysisDocumentCard.d.ts +33 -0
- package/dist/cards/AnalysisDocumentCard.d.ts.map +1 -0
- package/dist/cards/AnalysisDocumentCard.js +11 -0
- package/dist/cards/AnalysisDocumentCard.js.map +1 -0
- package/dist/cards/AskUserQuestionsCard.d.ts +43 -0
- package/dist/cards/AskUserQuestionsCard.d.ts.map +1 -0
- package/dist/cards/AskUserQuestionsCard.js +171 -0
- package/dist/cards/AskUserQuestionsCard.js.map +1 -0
- package/dist/cards/CoverageReportCard.d.ts +41 -0
- package/dist/cards/CoverageReportCard.d.ts.map +1 -0
- package/dist/cards/CoverageReportCard.js +55 -0
- package/dist/cards/CoverageReportCard.js.map +1 -0
- package/dist/cards/OrchestrationPlanCard.d.ts +60 -0
- package/dist/cards/OrchestrationPlanCard.d.ts.map +1 -0
- package/dist/cards/OrchestrationPlanCard.js +103 -0
- package/dist/cards/OrchestrationPlanCard.js.map +1 -0
- package/dist/cards/PlanSelectorCard.d.ts +40 -0
- package/dist/cards/PlanSelectorCard.d.ts.map +1 -0
- package/dist/cards/PlanSelectorCard.js +106 -0
- package/dist/cards/PlanSelectorCard.js.map +1 -0
- package/dist/cards/PlanStepsCard.d.ts +18 -0
- package/dist/cards/PlanStepsCard.d.ts.map +1 -0
- package/dist/cards/PlanStepsCard.js +25 -0
- package/dist/cards/PlanStepsCard.js.map +1 -0
- package/dist/cards/QuizCard.d.ts +44 -0
- package/dist/cards/QuizCard.d.ts.map +1 -0
- package/dist/cards/QuizCard.js +113 -0
- package/dist/cards/QuizCard.js.map +1 -0
- package/dist/cards/ResearchPlanCard.d.ts +23 -0
- package/dist/cards/ResearchPlanCard.d.ts.map +1 -0
- package/dist/cards/ResearchPlanCard.js +50 -0
- package/dist/cards/ResearchPlanCard.js.map +1 -0
- package/dist/cards/SearchSourcesCard.d.ts +29 -0
- package/dist/cards/SearchSourcesCard.d.ts.map +1 -0
- package/dist/cards/SearchSourcesCard.js +83 -0
- package/dist/cards/SearchSourcesCard.js.map +1 -0
- package/dist/cards/SuggestedRepliesCard.d.ts +18 -0
- package/dist/cards/SuggestedRepliesCard.d.ts.map +1 -0
- package/dist/cards/SuggestedRepliesCard.js +14 -0
- package/dist/cards/SuggestedRepliesCard.js.map +1 -0
- package/dist/cards/SummaryMessageCard.d.ts +40 -0
- package/dist/cards/SummaryMessageCard.d.ts.map +1 -0
- package/dist/cards/SummaryMessageCard.js +56 -0
- package/dist/cards/SummaryMessageCard.js.map +1 -0
- package/dist/cards/ThinkingProcessCard.d.ts +46 -0
- package/dist/cards/ThinkingProcessCard.d.ts.map +1 -0
- package/dist/cards/ThinkingProcessCard.js +79 -0
- package/dist/cards/ThinkingProcessCard.js.map +1 -0
- package/dist/cards/ToolExecutionCard.d.ts +21 -0
- package/dist/cards/ToolExecutionCard.d.ts.map +1 -0
- package/dist/cards/ToolExecutionCard.js +65 -0
- package/dist/cards/ToolExecutionCard.js.map +1 -0
- package/dist/cards/icons.d.ts +38 -0
- package/dist/cards/icons.d.ts.map +1 -0
- package/dist/cards/icons.js +87 -0
- package/dist/cards/icons.js.map +1 -0
- package/dist/cards/index.d.ts +38 -0
- package/dist/cards/index.d.ts.map +1 -0
- package/dist/cards/index.js +24 -0
- package/dist/cards/index.js.map +1 -0
- package/dist/cards/types.d.ts +24 -0
- package/dist/cards/types.d.ts.map +1 -0
- package/dist/cards/types.js +7 -0
- package/dist/cards/types.js.map +1 -0
- package/dist/components/AgentSelector.d.ts +23 -0
- package/dist/components/AgentSelector.d.ts.map +1 -0
- package/dist/components/AgentSelector.js +63 -0
- package/dist/components/AgentSelector.js.map +1 -0
- package/dist/components/AgentSelector.stories.d.ts +12 -0
- package/dist/components/AgentSelector.stories.d.ts.map +1 -0
- package/dist/components/AgentSelector.stories.js +95 -0
- package/dist/components/AgentSelector.stories.js.map +1 -0
- package/dist/components/ChatPanel.d.ts +138 -21
- package/dist/components/ChatPanel.d.ts.map +1 -1
- package/dist/components/ChatPanel.js +181 -26
- package/dist/components/ChatPanel.js.map +1 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/hooks/useChatStream.d.ts +15 -0
- package/dist/hooks/useChatStream.d.ts.map +1 -1
- package/dist/hooks/useChatStream.js +13 -1
- package/dist/hooks/useChatStream.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/state/ChatSessionProvider.d.ts +59 -0
- package/dist/state/ChatSessionProvider.d.ts.map +1 -0
- package/dist/state/ChatSessionProvider.js +71 -0
- package/dist/state/ChatSessionProvider.js.map +1 -0
- package/dist/state/MockChatStreamTransport.d.ts +54 -0
- package/dist/state/MockChatStreamTransport.d.ts.map +1 -0
- package/dist/state/MockChatStreamTransport.js +86 -0
- package/dist/state/MockChatStreamTransport.js.map +1 -0
- package/dist/state/MockChatStreamTransport.stories.d.ts +13 -0
- package/dist/state/MockChatStreamTransport.stories.d.ts.map +1 -0
- package/dist/state/MockChatStreamTransport.stories.js +60 -0
- package/dist/state/MockChatStreamTransport.stories.js.map +1 -0
- package/dist/state/bridgeLegacySSE.d.ts +42 -0
- package/dist/state/bridgeLegacySSE.d.ts.map +1 -0
- package/dist/state/bridgeLegacySSE.js +102 -0
- package/dist/state/bridgeLegacySSE.js.map +1 -0
- package/dist/state/index.d.ts +32 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +24 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/parseSSE.d.ts +50 -0
- package/dist/state/parseSSE.d.ts.map +1 -0
- package/dist/state/parseSSE.js +112 -0
- package/dist/state/parseSSE.js.map +1 -0
- package/dist/state/useChatComposer.d.ts +51 -0
- package/dist/state/useChatComposer.d.ts.map +1 -0
- package/dist/state/useChatComposer.js +82 -0
- package/dist/state/useChatComposer.js.map +1 -0
- package/dist/state/useChatList.d.ts +73 -0
- package/dist/state/useChatList.d.ts.map +1 -0
- package/dist/state/useChatList.js +161 -0
- package/dist/state/useChatList.js.map +1 -0
- package/dist/state/useChatSession.d.ts +29 -0
- package/dist/state/useChatSession.d.ts.map +1 -0
- package/dist/state/useChatSession.js +37 -0
- package/dist/state/useChatSession.js.map +1 -0
- package/dist/state/useScrollLock.d.ts +35 -0
- package/dist/state/useScrollLock.d.ts.map +1 -0
- package/dist/state/useScrollLock.js +74 -0
- package/dist/state/useScrollLock.js.map +1 -0
- package/dist/state/useToolCallStream.d.ts +38 -0
- package/dist/state/useToolCallStream.d.ts.map +1 -0
- package/dist/state/useToolCallStream.js +74 -0
- package/dist/state/useToolCallStream.js.map +1 -0
- package/package.json +11 -3
- package/src/cards/ActionSegmentCard.tsx +60 -0
- package/src/cards/AnalysisDocumentCard.tsx +81 -0
- package/src/cards/AskUserQuestionsCard.tsx +354 -0
- package/src/cards/CoverageReportCard.tsx +215 -0
- package/src/cards/OrchestrationPlanCard.tsx +328 -0
- package/src/cards/PlanSelectorCard.tsx +312 -0
- package/src/cards/PlanStepsCard.tsx +52 -0
- package/src/cards/QuizCard.tsx +309 -0
- package/src/cards/ResearchPlanCard.tsx +169 -0
- package/src/cards/SearchSourcesCard.tsx +244 -0
- package/src/cards/SuggestedRepliesCard.tsx +48 -0
- package/src/cards/SummaryMessageCard.tsx +145 -0
- package/src/cards/ThinkingProcessCard.tsx +155 -0
- package/src/cards/ToolExecutionCard.tsx +152 -0
- package/src/cards/cards.test.tsx +492 -0
- package/src/cards/icons.tsx +249 -0
- package/src/cards/index.ts +53 -0
- package/src/cards/types.ts +27 -0
- package/src/components/AgentSelector.stories.tsx +113 -0
- package/src/components/AgentSelector.test.tsx +70 -0
- package/src/components/AgentSelector.tsx +147 -0
- package/src/components/ChatPanel.test.tsx +130 -0
- package/src/components/ChatPanel.tsx +612 -138
- package/src/components/index.ts +13 -1
- package/src/hooks/useChatStream.test.ts +78 -0
- package/src/hooks/useChatStream.ts +32 -1
- package/src/index.ts +43 -0
- package/src/state/ChatSessionProvider.test.tsx +85 -0
- package/src/state/ChatSessionProvider.tsx +98 -0
- package/src/state/MockChatStreamTransport.stories.tsx +95 -0
- package/src/state/MockChatStreamTransport.test.ts +163 -0
- package/src/state/MockChatStreamTransport.ts +123 -0
- package/src/state/bridgeLegacySSE.test.ts +134 -0
- package/src/state/bridgeLegacySSE.ts +134 -0
- package/src/state/index.ts +82 -0
- package/src/state/parseSSE.test.ts +123 -0
- package/src/state/parseSSE.ts +123 -0
- package/src/state/useChatComposer.test.ts +145 -0
- package/src/state/useChatComposer.ts +117 -0
- package/src/state/useChatList.test.ts +135 -0
- package/src/state/useChatList.ts +220 -0
- package/src/state/useChatSession.test.ts +61 -0
- package/src/state/useChatSession.ts +64 -0
- package/src/state/useScrollLock.test.ts +99 -0
- package/src/state/useScrollLock.ts +105 -0
- package/src/state/useToolCallStream.test.ts +86 -0
- package/src/state/useToolCallStream.ts +110 -0
|
@@ -1,42 +1,159 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `ChatPanel` — the
|
|
2
|
+
* `ChatPanel` — the orchestration shell, now exposed as a Radix-style
|
|
3
|
+
* compound: `ChatPanel.Root / .Header / .Messages / .Input / .Empty /
|
|
4
|
+
* .StreamingStatus`.
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Compound API
|
|
7
|
+
* ------------
|
|
8
|
+
* <ChatPanel.Root className="…">
|
|
9
|
+
* <ChatPanel.Header>{customHeader}</ChatPanel.Header>
|
|
10
|
+
* <ChatPanel.Messages
|
|
11
|
+
* messages={messages}
|
|
12
|
+
* isStreaming={isStreaming}
|
|
13
|
+
* renderMessage={renderRichBubble}
|
|
14
|
+
* emptyState={<ChatPanel.Empty onSelectPrompt={…} />}
|
|
15
|
+
* />
|
|
16
|
+
* <ChatPanel.Input
|
|
17
|
+
* value={draft}
|
|
18
|
+
* onChange={setDraft}
|
|
19
|
+
* onSubmit={send}
|
|
20
|
+
* onCancel={cancel}
|
|
21
|
+
* isStreaming={isStreaming}
|
|
22
|
+
* />
|
|
23
|
+
* </ChatPanel.Root>
|
|
9
24
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
25
|
+
* Each sub-component owns one slot of the chat. The .Messages and .Input
|
|
26
|
+
* subs accept `as` / `slots` escape hatches so consumers can replace any one
|
|
27
|
+
* leaf without re-implementing the rest.
|
|
28
|
+
*
|
|
29
|
+
* Monolithic alias
|
|
30
|
+
* ----------------
|
|
31
|
+
* <ChatPanel messages={messages} onSubmit={onSubmit} … />
|
|
32
|
+
*
|
|
33
|
+
* The 0.2.x props remain valid — they internally render the compound. New
|
|
34
|
+
* consumers should reach for the compound; the alias exists to make the
|
|
35
|
+
* 0.2 -> 0.3 cutover non-breaking for in-flight integrations.
|
|
13
36
|
*/
|
|
14
37
|
import type { ChatMessage, ToolCall, ToolResult } from '@steerable/agent-protocol';
|
|
15
|
-
|
|
38
|
+
import { type MessageRendererProps } from './MessageList.js';
|
|
39
|
+
export interface ChatPanelRootProps {
|
|
40
|
+
children: React.ReactNode;
|
|
41
|
+
className?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Opt out of the default `bg-agent-canvas text-agent-foreground` styling
|
|
44
|
+
* — handy when the consumer's host container already paints the
|
|
45
|
+
* background (e.g. deeppath's `bg-card` rounded shell) and you don't want
|
|
46
|
+
* two layers fighting over which wins in the cascade.
|
|
47
|
+
*/
|
|
48
|
+
unstyled?: boolean;
|
|
49
|
+
/** Render as a different host element (e.g. 'section', 'main'). */
|
|
50
|
+
as?: keyof React.JSX.IntrinsicElements;
|
|
51
|
+
}
|
|
52
|
+
declare function ChatPanelRoot({ children, className, unstyled, as: As, }: ChatPanelRootProps): import("react/jsx-runtime").JSX.Element;
|
|
53
|
+
export interface ChatPanelHeaderProps {
|
|
54
|
+
children?: React.ReactNode;
|
|
55
|
+
className?: string;
|
|
56
|
+
}
|
|
57
|
+
declare function ChatPanelHeader({ children, className }: ChatPanelHeaderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
58
|
+
export interface ChatPanelMessagesProps {
|
|
16
59
|
messages: ChatMessage[];
|
|
17
60
|
isStreaming?: boolean;
|
|
61
|
+
renderMessage?: (props: MessageRendererProps) => React.ReactNode;
|
|
62
|
+
renderToolCall?: (call: ToolCall, result?: ToolResult) => React.ReactNode;
|
|
63
|
+
emptyState?: React.ReactNode;
|
|
64
|
+
className?: string;
|
|
65
|
+
}
|
|
66
|
+
declare function ChatPanelMessages(props: ChatPanelMessagesProps): import("react/jsx-runtime").JSX.Element;
|
|
67
|
+
export interface ChatPanelInputHandle {
|
|
68
|
+
focus: () => void;
|
|
69
|
+
focusAtEnd: () => void;
|
|
70
|
+
}
|
|
71
|
+
export interface ChatPanelInputProps {
|
|
72
|
+
value: string;
|
|
73
|
+
onChange: (next: string) => void;
|
|
74
|
+
onSubmit: () => void | Promise<void>;
|
|
75
|
+
onCancel?: () => void;
|
|
76
|
+
isStreaming?: boolean;
|
|
77
|
+
disabled?: boolean;
|
|
78
|
+
placeholder?: string;
|
|
18
79
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
80
|
+
* Keyboard mode:
|
|
81
|
+
* - 'cmd-enter' (default for the rich Input): Enter = newline,
|
|
82
|
+
* Cmd/Ctrl+Enter = send. IME-safe.
|
|
83
|
+
* - 'enter': Enter = send, Shift+Enter = newline. Matches the cloud
|
|
84
|
+
* chat product.
|
|
21
85
|
*/
|
|
86
|
+
keyMode?: 'cmd-enter' | 'enter';
|
|
87
|
+
/** Optional content slot rendered to the left of the send button. */
|
|
88
|
+
toolbarLeft?: React.ReactNode;
|
|
89
|
+
/** Optional content slot rendered to the right of the textarea. */
|
|
90
|
+
toolbarRight?: React.ReactNode;
|
|
91
|
+
className?: string;
|
|
92
|
+
}
|
|
93
|
+
export declare const ChatPanelInput: import("react").ForwardRefExoticComponent<ChatPanelInputProps & import("react").RefAttributes<ChatPanelInputHandle>>;
|
|
94
|
+
export interface ChatPanelEmptyProps {
|
|
95
|
+
/** Suggested prompts to chip-render. When omitted, the slot is a centred message. */
|
|
96
|
+
prompts?: string[];
|
|
97
|
+
/** Called when the user picks a chip. */
|
|
98
|
+
onSelectPrompt?: (prompt: string) => void;
|
|
99
|
+
title?: string;
|
|
100
|
+
description?: string;
|
|
101
|
+
className?: string;
|
|
102
|
+
}
|
|
103
|
+
declare function ChatPanelEmpty(props: ChatPanelEmptyProps): import("react/jsx-runtime").JSX.Element;
|
|
104
|
+
export interface ChatPanelStreamingStatusProps {
|
|
105
|
+
/** Current round number (1-based). */
|
|
106
|
+
round?: number;
|
|
107
|
+
/** Number of tool calls executed so far in this turn. */
|
|
108
|
+
actionCount?: number;
|
|
109
|
+
/**
|
|
110
|
+
* Suppress the status when the bubble has already received content tokens —
|
|
111
|
+
* the cursor blink in the bubble is enough.
|
|
112
|
+
*/
|
|
113
|
+
hasContent?: boolean;
|
|
114
|
+
/** Override the auto-derived label. */
|
|
115
|
+
label?: string;
|
|
116
|
+
className?: string;
|
|
117
|
+
}
|
|
118
|
+
declare function ChatPanelStreamingStatus(props: ChatPanelStreamingStatusProps): import("react/jsx-runtime").JSX.Element | null;
|
|
119
|
+
export interface ChatPanelProps {
|
|
120
|
+
messages: ChatMessage[];
|
|
121
|
+
isStreaming?: boolean;
|
|
22
122
|
onSubmit: (input: {
|
|
23
123
|
content: string;
|
|
24
124
|
}) => void | Promise<void>;
|
|
25
125
|
onCancel?: () => void;
|
|
26
126
|
className?: string;
|
|
27
127
|
inputPlaceholder?: string;
|
|
28
|
-
/** Slot rendered above the message list (header, agent picker, …). */
|
|
29
128
|
header?: React.ReactNode;
|
|
30
|
-
/**
|
|
31
|
-
* Tool-call renderer. Default uses the framework's `ToolCallRenderer`;
|
|
32
|
-
* pass `() => null` to suppress, or your own component to inject a
|
|
33
|
-
* domain-specific renderer (CIFLog cards, SQL query previews, …).
|
|
34
|
-
*/
|
|
35
129
|
renderToolCall?: (call: ToolCall, result?: ToolResult) => React.ReactNode;
|
|
36
|
-
|
|
130
|
+
renderMessage?: (props: MessageRendererProps) => React.ReactNode;
|
|
37
131
|
emptyState?: React.ReactNode;
|
|
38
|
-
/** Disable the input (e.g. during initial chat load). */
|
|
39
132
|
disabled?: boolean;
|
|
40
133
|
}
|
|
41
|
-
|
|
134
|
+
declare function ChatPanelMonolith(props: ChatPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
135
|
+
export interface ChatPanelConnectedProps {
|
|
136
|
+
className?: string;
|
|
137
|
+
header?: React.ReactNode;
|
|
138
|
+
emptyPrompts?: string[];
|
|
139
|
+
emptyTitle?: string;
|
|
140
|
+
emptyDescription?: string;
|
|
141
|
+
inputPlaceholder?: string;
|
|
142
|
+
renderMessage?: (props: MessageRendererProps) => React.ReactNode;
|
|
143
|
+
renderToolCall?: (call: ToolCall, result?: ToolResult) => React.ReactNode;
|
|
144
|
+
/** Apply the panel's own background/foreground tokens (default). */
|
|
145
|
+
styled?: boolean;
|
|
146
|
+
}
|
|
147
|
+
declare function ChatPanelConnected(props: ChatPanelConnectedProps): import("react/jsx-runtime").JSX.Element;
|
|
148
|
+
declare const ChatPanelCompound: typeof ChatPanelMonolith & {
|
|
149
|
+
Root: typeof ChatPanelRoot;
|
|
150
|
+
Header: typeof ChatPanelHeader;
|
|
151
|
+
Messages: typeof ChatPanelMessages;
|
|
152
|
+
Input: import("react").ForwardRefExoticComponent<ChatPanelInputProps & import("react").RefAttributes<ChatPanelInputHandle>>;
|
|
153
|
+
Empty: typeof ChatPanelEmpty;
|
|
154
|
+
StreamingStatus: typeof ChatPanelStreamingStatus;
|
|
155
|
+
Connected: typeof ChatPanelConnected;
|
|
156
|
+
};
|
|
157
|
+
export { ChatPanelCompound as ChatPanel };
|
|
158
|
+
export type { MessageRendererProps };
|
|
42
159
|
//# sourceMappingURL=ChatPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAe,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAS1E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;CACxC;AAED,iBAAS,aAAa,CAAC,EACrB,QAAQ,EACR,SAAS,EACT,QAAgB,EAChB,EAAE,EAAE,EAAU,GACf,EAAE,kBAAkB,2CAepB;AAMD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,oBAAoB,kDAYrE;AAMD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,KAAK,CAAC,SAAS,CAAC;IACjE,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1E,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,iBAAS,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAiCvD;AAsED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IAChC,qEAAqE;IACrE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,mEAAmE;IACnE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,sHAkI1B,CAAC;AAMF,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,yCAAyC;IACzC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CA6BjD;AAMD,MAAM,WAAW,6BAA6B;IAC5C,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,iBAAS,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,kDAiCrE;AAWD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,KAAK,CAAC,SAAS,CAAC;IACjE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,cAAc,2CA4C/C;AAgBD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,KAAK,CAAC,SAAS,CAAC;IACjE,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1E,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAgDzD;AAMD,QAAA,MAAM,iBAAiB;;;;;;;;CAQrB,CAAC;AAEH,OAAO,EAAE,iBAAiB,IAAI,SAAS,EAAE,CAAC;AAC1C,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,46 +1,201 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
|
-
* `ChatPanel` — the
|
|
3
|
+
* `ChatPanel` — the orchestration shell, now exposed as a Radix-style
|
|
4
|
+
* compound: `ChatPanel.Root / .Header / .Messages / .Input / .Empty /
|
|
5
|
+
* .StreamingStatus`.
|
|
4
6
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Compound API
|
|
8
|
+
* ------------
|
|
9
|
+
* <ChatPanel.Root className="…">
|
|
10
|
+
* <ChatPanel.Header>{customHeader}</ChatPanel.Header>
|
|
11
|
+
* <ChatPanel.Messages
|
|
12
|
+
* messages={messages}
|
|
13
|
+
* isStreaming={isStreaming}
|
|
14
|
+
* renderMessage={renderRichBubble}
|
|
15
|
+
* emptyState={<ChatPanel.Empty onSelectPrompt={…} />}
|
|
16
|
+
* />
|
|
17
|
+
* <ChatPanel.Input
|
|
18
|
+
* value={draft}
|
|
19
|
+
* onChange={setDraft}
|
|
20
|
+
* onSubmit={send}
|
|
21
|
+
* onCancel={cancel}
|
|
22
|
+
* isStreaming={isStreaming}
|
|
23
|
+
* />
|
|
24
|
+
* </ChatPanel.Root>
|
|
10
25
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
26
|
+
* Each sub-component owns one slot of the chat. The .Messages and .Input
|
|
27
|
+
* subs accept `as` / `slots` escape hatches so consumers can replace any one
|
|
28
|
+
* leaf without re-implementing the rest.
|
|
29
|
+
*
|
|
30
|
+
* Monolithic alias
|
|
31
|
+
* ----------------
|
|
32
|
+
* <ChatPanel messages={messages} onSubmit={onSubmit} … />
|
|
33
|
+
*
|
|
34
|
+
* The 0.2.x props remain valid — they internally render the compound. New
|
|
35
|
+
* consumers should reach for the compound; the alias exists to make the
|
|
36
|
+
* 0.2 -> 0.3 cutover non-breaking for in-flight integrations.
|
|
14
37
|
*/
|
|
15
|
-
import { useCallback, useState } from 'react';
|
|
38
|
+
import { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState, } from 'react';
|
|
16
39
|
import { MessageList } from './MessageList.js';
|
|
17
40
|
import { ToolCallRenderer } from './ToolCallRenderer.js';
|
|
18
41
|
import { cn } from './cn.js';
|
|
42
|
+
import { useChatSessionContext } from '../state/ChatSessionProvider.js';
|
|
43
|
+
function ChatPanelRoot({ children, className, unstyled = false, as: As = 'div', }) {
|
|
44
|
+
// The `as any` keeps the JSX surface flexible without forcing every host
|
|
45
|
+
// element's prop variance through the inference machinery.
|
|
46
|
+
const Component = As;
|
|
47
|
+
return (_jsx(Component, { className: cn('flex h-full w-full flex-col', unstyled ? null : 'bg-agent-canvas text-agent-foreground', className), children: children }));
|
|
48
|
+
}
|
|
49
|
+
function ChatPanelHeader({ children, className }) {
|
|
50
|
+
if (!children)
|
|
51
|
+
return null;
|
|
52
|
+
return (_jsx("div", { className: cn('flex items-center gap-2 border-b border-agent-border bg-agent-canvas px-3 py-2', className), children: children }));
|
|
53
|
+
}
|
|
19
54
|
function defaultRenderToolCall(call, result) {
|
|
20
55
|
return _jsx(ToolCallRenderer, { call: call, result: result }, call.id);
|
|
21
56
|
}
|
|
22
|
-
|
|
23
|
-
const { messages, isStreaming = false,
|
|
57
|
+
function ChatPanelMessages(props) {
|
|
58
|
+
const { messages, isStreaming = false, renderMessage, renderToolCall = defaultRenderToolCall, emptyState, className, } = props;
|
|
59
|
+
const renderBubble = useCallback((rendererProps) => {
|
|
60
|
+
if (renderMessage)
|
|
61
|
+
return renderMessage(rendererProps);
|
|
62
|
+
return (_jsx(DefaultRichBubble, { ...rendererProps, renderToolCall: renderToolCall }));
|
|
63
|
+
}, [renderMessage, renderToolCall]);
|
|
64
|
+
return (_jsx("div", { className: cn('flex-1 overflow-hidden', className), children: _jsx(MessageList, { messages: messages, isStreaming: isStreaming, renderMessage: renderBubble, emptyState: emptyState }) }));
|
|
65
|
+
}
|
|
66
|
+
function DefaultRichBubble({ message, isLastAssistant, isStreaming, index, renderToolCall, }) {
|
|
67
|
+
const isAssistant = message.role === 'assistant';
|
|
68
|
+
return (_jsx("div", { "data-role": message.role, className: cn('flex w-full', isAssistant ? 'justify-start' : 'justify-end'), children: _jsxs("div", { className: cn('flex max-w-[80%] flex-col gap-2', isAssistant ? 'items-start' : 'items-end'), children: [_jsxs("div", { className: cn('rounded-agent-md border px-3 py-2 text-sm leading-relaxed', isAssistant
|
|
69
|
+
? 'border-agent-border bg-agent-muted text-agent-foreground'
|
|
70
|
+
: 'border-transparent bg-agent-accent text-agent-accent-foreground'), children: [_jsx("div", { className: "whitespace-pre-wrap", children: message.content || (isLastAssistant && isStreaming ? '…' : '') }), isLastAssistant && isStreaming ? (_jsx("span", { "aria-hidden": true, className: "ml-0.5 inline-block h-3 w-1.5 align-baseline bg-agent-foreground animate-agent-cursor-blink" })) : null] }), Array.isArray(message.toolCalls) && message.toolCalls.length > 0 ? (_jsx("div", { className: "flex w-full flex-col gap-1.5", children: message.toolCalls.map((call) => renderToolCall(call, message.toolResult)) })) : null] }) }, message.id ?? index));
|
|
71
|
+
}
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// Input
|
|
74
|
+
//
|
|
75
|
+
// Multi-line textarea with auto-grow, IME-safe keyboard handling, and a
|
|
76
|
+
// send/stop affordance. This is the rich default lifted from
|
|
77
|
+
// deeppath-agent/apps/web/src/components/chat/ChatInput.tsx — minus the
|
|
78
|
+
// agent-pill and settings gear, which live in agent-specific slots the apps
|
|
79
|
+
// can drop into the toolbar via `toolbarLeft`/`toolbarRight` props.
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
const MIN_TEXTAREA_PX = 44;
|
|
82
|
+
const MAX_TEXTAREA_PX = 220;
|
|
83
|
+
const IS_MAC = typeof navigator !== 'undefined' &&
|
|
84
|
+
/Mac|iPod|iPhone|iPad/.test(navigator.platform || '');
|
|
85
|
+
const MOD_LABEL = IS_MAC ? '⌘' : 'Ctrl';
|
|
86
|
+
export const ChatPanelInput = forwardRef(function ChatPanelInput({ value, onChange, onSubmit, onCancel, isStreaming = false, disabled = false, placeholder = 'Send a message…', keyMode = 'cmd-enter', toolbarLeft, toolbarRight, className, }, ref) {
|
|
87
|
+
const textareaRef = useRef(null);
|
|
88
|
+
useImperativeHandle(ref, () => ({
|
|
89
|
+
focus: () => textareaRef.current?.focus(),
|
|
90
|
+
focusAtEnd: () => {
|
|
91
|
+
const ta = textareaRef.current;
|
|
92
|
+
if (!ta)
|
|
93
|
+
return;
|
|
94
|
+
ta.focus();
|
|
95
|
+
const len = ta.value.length;
|
|
96
|
+
ta.setSelectionRange(len, len);
|
|
97
|
+
},
|
|
98
|
+
}), []);
|
|
99
|
+
// Auto-grow: reset height first so shrink works when user deletes text.
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
const ta = textareaRef.current;
|
|
102
|
+
if (!ta)
|
|
103
|
+
return;
|
|
104
|
+
ta.style.height = 'auto';
|
|
105
|
+
const next = Math.min(Math.max(ta.scrollHeight, MIN_TEXTAREA_PX), MAX_TEXTAREA_PX);
|
|
106
|
+
ta.style.height = `${next}px`;
|
|
107
|
+
}, [value]);
|
|
108
|
+
const trimmed = value.trim();
|
|
109
|
+
const canSend = trimmed.length > 0 && !disabled && !isStreaming;
|
|
110
|
+
const handleKeyDown = (event) => {
|
|
111
|
+
if (event.nativeEvent.isComposing)
|
|
112
|
+
return;
|
|
113
|
+
if (keyMode === 'cmd-enter') {
|
|
114
|
+
const isSendCombo = event.key === 'Enter' && (event.metaKey || event.ctrlKey);
|
|
115
|
+
if (isSendCombo) {
|
|
116
|
+
event.preventDefault();
|
|
117
|
+
if (canSend)
|
|
118
|
+
void onSubmit();
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
// keyMode === 'enter'
|
|
123
|
+
if (event.key === 'Enter' && !event.shiftKey) {
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
if (isStreaming)
|
|
126
|
+
onCancel?.();
|
|
127
|
+
else if (canSend)
|
|
128
|
+
void onSubmit();
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
const handleSendClick = () => {
|
|
132
|
+
if (isStreaming) {
|
|
133
|
+
onCancel?.();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (canSend)
|
|
137
|
+
void onSubmit();
|
|
138
|
+
};
|
|
139
|
+
return (_jsx("div", { className: cn('chat-input-container px-3 pb-3 pt-1', className), children: _jsxs("div", { className: "chat-input-box flex flex-col rounded-agent-lg border border-agent-border bg-agent-canvas shadow-sm", children: [_jsx("textarea", { ref: textareaRef, value: value, onChange: (event) => onChange(event.target.value), onKeyDown: handleKeyDown, placeholder: placeholder, disabled: disabled, rows: 1, className: "block w-full resize-none border-0 bg-transparent px-3 pt-3 text-sm text-agent-foreground outline-none placeholder:text-agent-muted-foreground disabled:opacity-50", style: { minHeight: MIN_TEXTAREA_PX, maxHeight: MAX_TEXTAREA_PX } }), _jsxs("div", { className: "flex items-center justify-between gap-2 px-2 pb-2 pt-1", children: [_jsx("div", { className: "flex items-center gap-1", children: toolbarLeft }), _jsxs("div", { className: "flex items-center gap-3", children: [toolbarRight, _jsxs("div", { className: "hidden text-[11px] text-agent-muted-foreground/80 sm:block", children: [_jsx("kbd", { className: "rounded border border-agent-border bg-agent-muted px-1 font-sans text-[10px]", children: MOD_LABEL }), _jsx("span", { className: "mx-0.5", children: "+" }), _jsx("kbd", { className: "rounded border border-agent-border bg-agent-muted px-1 font-sans text-[10px]", children: isStreaming ? '.' : 'Enter' })] }), _jsx("button", { type: "button", onClick: handleSendClick, disabled: !isStreaming && !canSend, className: isStreaming
|
|
140
|
+
? 'flex h-8 w-8 items-center justify-center rounded-full bg-agent-destructive text-white transition hover:opacity-90'
|
|
141
|
+
: canSend
|
|
142
|
+
? 'flex h-8 w-8 items-center justify-center rounded-full bg-agent-foreground text-agent-canvas transition hover:opacity-90'
|
|
143
|
+
: 'flex h-8 w-8 cursor-not-allowed items-center justify-center rounded-full bg-agent-muted text-agent-muted-foreground', "aria-label": isStreaming ? 'Stop generating' : 'Send message', title: isStreaming
|
|
144
|
+
? `Stop (${MOD_LABEL}+.)`
|
|
145
|
+
: `Send (${MOD_LABEL}+Enter)`, children: isStreaming ? (_jsx("span", { className: "block h-3.5 w-3.5 bg-white" })) : (_jsx("span", { "aria-hidden": true, className: "leading-none", children: "\u2191" })) })] })] })] }) }));
|
|
146
|
+
});
|
|
147
|
+
function ChatPanelEmpty(props) {
|
|
148
|
+
const { prompts, onSelectPrompt, title, description, className } = props;
|
|
149
|
+
return (_jsxs("div", { className: cn('flex h-full flex-col justify-end gap-3 p-3', className), children: [(title || description) && (_jsxs("div", { className: "text-center text-sm text-agent-muted-foreground", children: [title ? (_jsx("p", { className: "font-medium text-agent-foreground", children: title })) : null, description ? _jsx("p", { className: "mt-1", children: description }) : null] })), Array.isArray(prompts) && prompts.length > 0 ? (_jsx("div", { className: "flex flex-col items-start gap-2", children: prompts.map((p) => (_jsx("button", { type: "button", onClick: () => onSelectPrompt?.(p), title: p, className: "max-w-full cursor-pointer truncate rounded-full border border-agent-border bg-agent-muted px-3 py-1.5 text-xs text-agent-muted-foreground transition-all duration-200 hover:bg-agent-accent hover:text-agent-foreground", children: p }, p))) })) : null] }));
|
|
150
|
+
}
|
|
151
|
+
function selectStatusLabel(round, actionCount) {
|
|
152
|
+
if (round >= 2 && actionCount === 0)
|
|
153
|
+
return `Round ${round} · continuing…`;
|
|
154
|
+
if (actionCount > 0)
|
|
155
|
+
return `Called ${actionCount} tools, analysing…`;
|
|
156
|
+
return 'Thinking…';
|
|
157
|
+
}
|
|
158
|
+
function ChatPanelStreamingStatus(props) {
|
|
159
|
+
const { round = 1, actionCount = 0, hasContent = false, label, className, } = props;
|
|
160
|
+
if (hasContent)
|
|
161
|
+
return null;
|
|
162
|
+
const text = label ?? selectStatusLabel(round, actionCount);
|
|
163
|
+
return (_jsxs("div", { role: "status", "aria-live": "polite", "aria-atomic": "true", className: cn('my-2 inline-flex items-center gap-2 text-xs text-agent-muted-foreground', className), children: [_jsxs("span", { className: "inline-flex items-center gap-1", children: [_jsx("span", { className: "h-1 w-1 animate-pulse rounded-full bg-agent-foreground/40 [animation-delay:0ms]" }), _jsx("span", { className: "h-1 w-1 animate-pulse rounded-full bg-agent-foreground/40 [animation-delay:150ms]" }), _jsx("span", { className: "h-1 w-1 animate-pulse rounded-full bg-agent-foreground/40 [animation-delay:300ms]" })] }), _jsx("span", { children: text }), round > 1 ? (_jsxs("span", { className: "rounded-full border border-agent-border bg-agent-muted/40 px-1.5 py-[1px] font-mono text-[10px] text-agent-muted-foreground", children: ["round ", round] })) : null] }));
|
|
164
|
+
}
|
|
165
|
+
function ChatPanelMonolith(props) {
|
|
166
|
+
const { messages, isStreaming = false, onSubmit, onCancel, className, inputPlaceholder, header, renderToolCall, renderMessage, emptyState, disabled = false, } = props;
|
|
24
167
|
const [draft, setDraft] = useState('');
|
|
25
|
-
const handleSubmit = useCallback(async (
|
|
26
|
-
e?.preventDefault();
|
|
168
|
+
const handleSubmit = useCallback(async () => {
|
|
27
169
|
const trimmed = draft.trim();
|
|
28
170
|
if (!trimmed || disabled)
|
|
29
171
|
return;
|
|
30
172
|
setDraft('');
|
|
31
173
|
await onSubmit({ content: trimmed });
|
|
32
174
|
}, [draft, disabled, onSubmit]);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
},
|
|
44
|
-
return (_jsxs("div", { className: cn('flex h-full w-full flex-col bg-agent-canvas text-agent-foreground', className), children: [header, _jsx("div", { className: "flex-1 overflow-hidden", children: _jsx(MessageList, { messages: messages, isStreaming: isStreaming, renderMessage: renderMessage, emptyState: emptyState }) }), _jsxs("form", { className: "flex items-center gap-2 border-t border-agent-border bg-agent-canvas px-3 py-2", onSubmit: handleSubmit, children: [_jsx("input", { type: "text", value: draft, onChange: (e) => setDraft(e.target.value), placeholder: inputPlaceholder, disabled: disabled, className: cn('flex-1 rounded-agent-md border border-agent-border bg-agent-canvas px-3 py-2 text-sm text-agent-foreground placeholder:text-agent-muted-foreground', 'focus:border-agent-accent focus:outline-none focus:ring-1 focus:ring-agent-accent', disabled && 'opacity-50') }), isStreaming && onCancel ? (_jsx("button", { type: "button", onClick: onCancel, className: "rounded-agent-md border border-agent-border px-3 py-2 text-sm text-agent-foreground hover:bg-agent-muted", children: "Stop" })) : (_jsx("button", { type: "submit", disabled: disabled || !draft.trim(), className: cn('rounded-agent-md bg-agent-accent px-3 py-2 text-sm font-medium text-agent-accent-foreground', (disabled || !draft.trim()) && 'opacity-50'), children: "Send" }))] })] }));
|
|
175
|
+
return (_jsxs(ChatPanelRoot, { className: className, children: [header ? _jsx(ChatPanelHeader, { children: header }) : null, _jsx(ChatPanelMessages, { messages: messages, isStreaming: isStreaming, renderMessage: renderMessage, renderToolCall: renderToolCall, emptyState: emptyState }), _jsx(ChatPanelInput, { value: draft, onChange: setDraft, onSubmit: handleSubmit, onCancel: onCancel, isStreaming: isStreaming, disabled: disabled, placeholder: inputPlaceholder, keyMode: "enter" })] }));
|
|
176
|
+
}
|
|
177
|
+
function ChatPanelConnected(props) {
|
|
178
|
+
const { className, header, emptyPrompts, emptyTitle, emptyDescription, inputPlaceholder, renderMessage, renderToolCall, styled = true, } = props;
|
|
179
|
+
const session = useChatSessionContext();
|
|
180
|
+
const { composer } = session;
|
|
181
|
+
const emptyState = emptyPrompts || emptyTitle || emptyDescription ? (_jsx(ChatPanelEmpty, { prompts: emptyPrompts, title: emptyTitle, description: emptyDescription, onSelectPrompt: (text) => {
|
|
182
|
+
composer.setValue(text);
|
|
183
|
+
void composer.submit();
|
|
184
|
+
} })) : undefined;
|
|
185
|
+
return (_jsxs(ChatPanelRoot, { className: className, unstyled: !styled, children: [header ? _jsx(ChatPanelHeader, { children: header }) : null, _jsx(ChatPanelMessages, { messages: session.messages, isStreaming: session.isStreaming, renderMessage: renderMessage, renderToolCall: renderToolCall, emptyState: emptyState }), _jsx(ChatPanelInput, { value: composer.value, onChange: composer.setValue, onSubmit: composer.submit, onCancel: composer.cancel, isStreaming: session.isStreaming, placeholder: inputPlaceholder })] }));
|
|
45
186
|
}
|
|
187
|
+
// `ChatPanel` is the monolith (backwards-compat); the compound parts hang
|
|
188
|
+
// off it as named attributes. This mirrors Radix's pattern so consumers can
|
|
189
|
+
// keep `<ChatPanel ...>` working OR migrate to `<ChatPanel.Root>…</ChatPanel.Root>`
|
|
190
|
+
// in their own time.
|
|
191
|
+
const ChatPanelCompound = Object.assign(ChatPanelMonolith, {
|
|
192
|
+
Root: ChatPanelRoot,
|
|
193
|
+
Header: ChatPanelHeader,
|
|
194
|
+
Messages: ChatPanelMessages,
|
|
195
|
+
Input: ChatPanelInput,
|
|
196
|
+
Empty: ChatPanelEmpty,
|
|
197
|
+
StreamingStatus: ChatPanelStreamingStatus,
|
|
198
|
+
Connected: ChatPanelConnected,
|
|
199
|
+
});
|
|
200
|
+
export { ChatPanelCompound as ChatPanel };
|
|
46
201
|
//# sourceMappingURL=ChatPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export { MessageList } from './MessageList.js';
|
|
2
2
|
export type { MessageListProps, MessageRendererProps } from './MessageList.js';
|
|
3
3
|
export { ChatPanel } from './ChatPanel.js';
|
|
4
|
-
export type { ChatPanelProps } from './ChatPanel.js';
|
|
4
|
+
export type { ChatPanelProps, ChatPanelRootProps, ChatPanelHeaderProps, ChatPanelMessagesProps, ChatPanelInputProps, ChatPanelInputHandle, ChatPanelEmptyProps, ChatPanelStreamingStatusProps, } from './ChatPanel.js';
|
|
5
|
+
export { AgentSelector } from './AgentSelector.js';
|
|
6
|
+
export type { AgentSelectorProps } from './AgentSelector.js';
|
|
5
7
|
export { OrchestrationPlanCard } from './OrchestrationPlanCard.js';
|
|
6
8
|
export type { OrchestrationPlanCardProps, OrchestrationStep, OrchestrationStepStatus, } from './OrchestrationPlanCard.js';
|
|
7
9
|
export { ToolCallRenderer } from './ToolCallRenderer.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { MessageList } from './MessageList.js';
|
|
2
2
|
export { ChatPanel } from './ChatPanel.js';
|
|
3
|
+
export { AgentSelector } from './AgentSelector.js';
|
|
3
4
|
export { OrchestrationPlanCard } from './OrchestrationPlanCard.js';
|
|
4
5
|
export { ToolCallRenderer } from './ToolCallRenderer.js';
|
|
5
6
|
export { SSEStreamView } from './SSEStreamView.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAY3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAOnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -26,6 +26,14 @@ export interface ChatStreamTransport {
|
|
|
26
26
|
* call on unmount or when the user clicks "stop".
|
|
27
27
|
*/
|
|
28
28
|
stream: (input: ChatStreamSendInput, onEvent: (event: SSEEvent) => void) => Promise<void | (() => void)>;
|
|
29
|
+
/**
|
|
30
|
+
* Optional mid-turn steering: inject a user message into the currently
|
|
31
|
+
* running turn (CoreLoop `steer`). Resolve `true` when the running turn
|
|
32
|
+
* accepted the message; `false` when no steerable turn is active (the
|
|
33
|
+
* caller should keep the draft — a normal send can follow once the turn
|
|
34
|
+
* ends). When omitted, the UI keeps send-during-streaming disabled.
|
|
35
|
+
*/
|
|
36
|
+
steer?: (content: string) => Promise<boolean>;
|
|
29
37
|
}
|
|
30
38
|
export interface UseChatStreamOptions {
|
|
31
39
|
/** Required transport handle; see `ChatStreamTransport`. */
|
|
@@ -49,6 +57,13 @@ export interface UseChatStreamReturn {
|
|
|
49
57
|
messages: ChatMessage[];
|
|
50
58
|
isStreaming: boolean;
|
|
51
59
|
sendUserMessage: (input: ChatStreamSendInput) => Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Steer the running turn with an extra user message. No-op resolving
|
|
62
|
+
* `false` when not streaming or the transport has no `steer`. On success
|
|
63
|
+
* the message is appended to the visible transcript immediately (the loop
|
|
64
|
+
* consumes it at the next round boundary).
|
|
65
|
+
*/
|
|
66
|
+
steerUserMessage: (content: string) => Promise<boolean>;
|
|
52
67
|
cancel: () => void;
|
|
53
68
|
/** Replace the message buffer (e.g. when switching chat). */
|
|
54
69
|
setMessages: (messages: ChatMessage[]) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChatStream.d.ts","sourceRoot":"","sources":["../../src/hooks/useChatStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EAER,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;OAQG;IACH,MAAM,EAAE,CACN,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,KAC/B,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useChatStream.d.ts","sourceRoot":"","sources":["../../src/hooks/useChatStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EAER,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;OAQG;IACH,MAAM,EAAE,CACN,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,KAC/B,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAClC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,SAAS,EAAE,mBAAmB,CAAC;IAC/B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IAChC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,WAAW,GAAG,IAAI,CAAC;IACjE;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D;;;;;OAKG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC/C,mEAAmE;IACnE,aAAa,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;CAC/C;AAsID,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAsJrB"}
|
|
@@ -225,6 +225,17 @@ export function useChatStream(options) {
|
|
|
225
225
|
}
|
|
226
226
|
setStreaming(false);
|
|
227
227
|
}, [setStreaming]);
|
|
228
|
+
const steerUserMessage = useCallback(async (content) => {
|
|
229
|
+
const steer = options.transport.steer;
|
|
230
|
+
if (!isStreamingRef.current || !steer || !content.trim()) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
const ok = await steer(content);
|
|
234
|
+
if (ok) {
|
|
235
|
+
dispatch({ type: 'append', message: newUserMessage(content) });
|
|
236
|
+
}
|
|
237
|
+
return ok;
|
|
238
|
+
}, [options.transport]);
|
|
228
239
|
const setMessages = useCallback((messages) => {
|
|
229
240
|
dispatch({ type: 'reset', messages });
|
|
230
241
|
}, []);
|
|
@@ -243,9 +254,10 @@ export function useChatStream(options) {
|
|
|
243
254
|
messages: state.messages,
|
|
244
255
|
isStreaming: isStreamingRef.current,
|
|
245
256
|
sendUserMessage,
|
|
257
|
+
steerUserMessage,
|
|
246
258
|
cancel,
|
|
247
259
|
setMessages,
|
|
248
260
|
appendMessage,
|
|
249
|
-
}), [state.messages, sendUserMessage, cancel, setMessages, appendMessage]);
|
|
261
|
+
}), [state.messages, sendUserMessage, steerUserMessage, cancel, setMessages, appendMessage]);
|
|
250
262
|
}
|
|
251
263
|
//# sourceMappingURL=useChatStream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChatStream.js","sourceRoot":"","sources":["../../src/hooks/useChatStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useChatStream.js","sourceRoot":"","sources":["../../src/hooks/useChatStream.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,6 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export * from './hooks/index.js';
|
|
11
11
|
export * from './components/index.js';
|
|
12
|
+
export { SSEParser, parseSSEData, bridgeLegacySSE, MockChatStreamTransport, useChatComposer, useChatList, useChatSession, useToolCallStream, useScrollLock, ChatSessionProvider, useChatSessionContext, useOptionalChatSession, useChatSessionSlice, } from './state/index.js';
|
|
13
|
+
export type { SSEFrame, SSEParserOptions, EnvelopeProfile, BridgeLegacySSEOptions, MockScript, MockScriptStep, MockChatStreamTransportOptions, UseChatComposerOptions, UseChatComposerReturn, ChatListTransport, UseChatListOptions, UseChatListReturn, UseChatSessionOptions, UseChatSessionReturn, ToolCallEntry, UseToolCallStreamOptions, UseToolCallStreamReturn, UseScrollLockOptions, UseScrollLockReturn, ChatSessionContextValue, ChatSessionProviderProps, } from './state/index.js';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AAMtC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
|