@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.
Files changed (184) hide show
  1. package/dist/cards/ActionSegmentCard.d.ts +18 -0
  2. package/dist/cards/ActionSegmentCard.d.ts.map +1 -0
  3. package/dist/cards/ActionSegmentCard.js +26 -0
  4. package/dist/cards/ActionSegmentCard.js.map +1 -0
  5. package/dist/cards/AnalysisDocumentCard.d.ts +33 -0
  6. package/dist/cards/AnalysisDocumentCard.d.ts.map +1 -0
  7. package/dist/cards/AnalysisDocumentCard.js +11 -0
  8. package/dist/cards/AnalysisDocumentCard.js.map +1 -0
  9. package/dist/cards/AskUserQuestionsCard.d.ts +43 -0
  10. package/dist/cards/AskUserQuestionsCard.d.ts.map +1 -0
  11. package/dist/cards/AskUserQuestionsCard.js +171 -0
  12. package/dist/cards/AskUserQuestionsCard.js.map +1 -0
  13. package/dist/cards/CoverageReportCard.d.ts +41 -0
  14. package/dist/cards/CoverageReportCard.d.ts.map +1 -0
  15. package/dist/cards/CoverageReportCard.js +55 -0
  16. package/dist/cards/CoverageReportCard.js.map +1 -0
  17. package/dist/cards/OrchestrationPlanCard.d.ts +60 -0
  18. package/dist/cards/OrchestrationPlanCard.d.ts.map +1 -0
  19. package/dist/cards/OrchestrationPlanCard.js +103 -0
  20. package/dist/cards/OrchestrationPlanCard.js.map +1 -0
  21. package/dist/cards/PlanSelectorCard.d.ts +40 -0
  22. package/dist/cards/PlanSelectorCard.d.ts.map +1 -0
  23. package/dist/cards/PlanSelectorCard.js +106 -0
  24. package/dist/cards/PlanSelectorCard.js.map +1 -0
  25. package/dist/cards/PlanStepsCard.d.ts +18 -0
  26. package/dist/cards/PlanStepsCard.d.ts.map +1 -0
  27. package/dist/cards/PlanStepsCard.js +25 -0
  28. package/dist/cards/PlanStepsCard.js.map +1 -0
  29. package/dist/cards/QuizCard.d.ts +44 -0
  30. package/dist/cards/QuizCard.d.ts.map +1 -0
  31. package/dist/cards/QuizCard.js +113 -0
  32. package/dist/cards/QuizCard.js.map +1 -0
  33. package/dist/cards/ResearchPlanCard.d.ts +23 -0
  34. package/dist/cards/ResearchPlanCard.d.ts.map +1 -0
  35. package/dist/cards/ResearchPlanCard.js +50 -0
  36. package/dist/cards/ResearchPlanCard.js.map +1 -0
  37. package/dist/cards/SearchSourcesCard.d.ts +29 -0
  38. package/dist/cards/SearchSourcesCard.d.ts.map +1 -0
  39. package/dist/cards/SearchSourcesCard.js +83 -0
  40. package/dist/cards/SearchSourcesCard.js.map +1 -0
  41. package/dist/cards/SuggestedRepliesCard.d.ts +18 -0
  42. package/dist/cards/SuggestedRepliesCard.d.ts.map +1 -0
  43. package/dist/cards/SuggestedRepliesCard.js +14 -0
  44. package/dist/cards/SuggestedRepliesCard.js.map +1 -0
  45. package/dist/cards/SummaryMessageCard.d.ts +40 -0
  46. package/dist/cards/SummaryMessageCard.d.ts.map +1 -0
  47. package/dist/cards/SummaryMessageCard.js +56 -0
  48. package/dist/cards/SummaryMessageCard.js.map +1 -0
  49. package/dist/cards/ThinkingProcessCard.d.ts +46 -0
  50. package/dist/cards/ThinkingProcessCard.d.ts.map +1 -0
  51. package/dist/cards/ThinkingProcessCard.js +79 -0
  52. package/dist/cards/ThinkingProcessCard.js.map +1 -0
  53. package/dist/cards/ToolExecutionCard.d.ts +21 -0
  54. package/dist/cards/ToolExecutionCard.d.ts.map +1 -0
  55. package/dist/cards/ToolExecutionCard.js +65 -0
  56. package/dist/cards/ToolExecutionCard.js.map +1 -0
  57. package/dist/cards/icons.d.ts +38 -0
  58. package/dist/cards/icons.d.ts.map +1 -0
  59. package/dist/cards/icons.js +87 -0
  60. package/dist/cards/icons.js.map +1 -0
  61. package/dist/cards/index.d.ts +38 -0
  62. package/dist/cards/index.d.ts.map +1 -0
  63. package/dist/cards/index.js +24 -0
  64. package/dist/cards/index.js.map +1 -0
  65. package/dist/cards/types.d.ts +24 -0
  66. package/dist/cards/types.d.ts.map +1 -0
  67. package/dist/cards/types.js +7 -0
  68. package/dist/cards/types.js.map +1 -0
  69. package/dist/components/AgentSelector.d.ts +23 -0
  70. package/dist/components/AgentSelector.d.ts.map +1 -0
  71. package/dist/components/AgentSelector.js +63 -0
  72. package/dist/components/AgentSelector.js.map +1 -0
  73. package/dist/components/AgentSelector.stories.d.ts +12 -0
  74. package/dist/components/AgentSelector.stories.d.ts.map +1 -0
  75. package/dist/components/AgentSelector.stories.js +95 -0
  76. package/dist/components/AgentSelector.stories.js.map +1 -0
  77. package/dist/components/ChatPanel.d.ts +138 -21
  78. package/dist/components/ChatPanel.d.ts.map +1 -1
  79. package/dist/components/ChatPanel.js +181 -26
  80. package/dist/components/ChatPanel.js.map +1 -1
  81. package/dist/components/index.d.ts +3 -1
  82. package/dist/components/index.d.ts.map +1 -1
  83. package/dist/components/index.js +1 -0
  84. package/dist/components/index.js.map +1 -1
  85. package/dist/hooks/useChatStream.d.ts +15 -0
  86. package/dist/hooks/useChatStream.d.ts.map +1 -1
  87. package/dist/hooks/useChatStream.js +13 -1
  88. package/dist/hooks/useChatStream.js.map +1 -1
  89. package/dist/index.d.ts +2 -0
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +5 -0
  92. package/dist/index.js.map +1 -1
  93. package/dist/state/ChatSessionProvider.d.ts +59 -0
  94. package/dist/state/ChatSessionProvider.d.ts.map +1 -0
  95. package/dist/state/ChatSessionProvider.js +71 -0
  96. package/dist/state/ChatSessionProvider.js.map +1 -0
  97. package/dist/state/MockChatStreamTransport.d.ts +54 -0
  98. package/dist/state/MockChatStreamTransport.d.ts.map +1 -0
  99. package/dist/state/MockChatStreamTransport.js +86 -0
  100. package/dist/state/MockChatStreamTransport.js.map +1 -0
  101. package/dist/state/MockChatStreamTransport.stories.d.ts +13 -0
  102. package/dist/state/MockChatStreamTransport.stories.d.ts.map +1 -0
  103. package/dist/state/MockChatStreamTransport.stories.js +60 -0
  104. package/dist/state/MockChatStreamTransport.stories.js.map +1 -0
  105. package/dist/state/bridgeLegacySSE.d.ts +42 -0
  106. package/dist/state/bridgeLegacySSE.d.ts.map +1 -0
  107. package/dist/state/bridgeLegacySSE.js +102 -0
  108. package/dist/state/bridgeLegacySSE.js.map +1 -0
  109. package/dist/state/index.d.ts +32 -0
  110. package/dist/state/index.d.ts.map +1 -0
  111. package/dist/state/index.js +24 -0
  112. package/dist/state/index.js.map +1 -0
  113. package/dist/state/parseSSE.d.ts +50 -0
  114. package/dist/state/parseSSE.d.ts.map +1 -0
  115. package/dist/state/parseSSE.js +112 -0
  116. package/dist/state/parseSSE.js.map +1 -0
  117. package/dist/state/useChatComposer.d.ts +51 -0
  118. package/dist/state/useChatComposer.d.ts.map +1 -0
  119. package/dist/state/useChatComposer.js +82 -0
  120. package/dist/state/useChatComposer.js.map +1 -0
  121. package/dist/state/useChatList.d.ts +73 -0
  122. package/dist/state/useChatList.d.ts.map +1 -0
  123. package/dist/state/useChatList.js +161 -0
  124. package/dist/state/useChatList.js.map +1 -0
  125. package/dist/state/useChatSession.d.ts +29 -0
  126. package/dist/state/useChatSession.d.ts.map +1 -0
  127. package/dist/state/useChatSession.js +37 -0
  128. package/dist/state/useChatSession.js.map +1 -0
  129. package/dist/state/useScrollLock.d.ts +35 -0
  130. package/dist/state/useScrollLock.d.ts.map +1 -0
  131. package/dist/state/useScrollLock.js +74 -0
  132. package/dist/state/useScrollLock.js.map +1 -0
  133. package/dist/state/useToolCallStream.d.ts +38 -0
  134. package/dist/state/useToolCallStream.d.ts.map +1 -0
  135. package/dist/state/useToolCallStream.js +74 -0
  136. package/dist/state/useToolCallStream.js.map +1 -0
  137. package/package.json +11 -3
  138. package/src/cards/ActionSegmentCard.tsx +60 -0
  139. package/src/cards/AnalysisDocumentCard.tsx +81 -0
  140. package/src/cards/AskUserQuestionsCard.tsx +354 -0
  141. package/src/cards/CoverageReportCard.tsx +215 -0
  142. package/src/cards/OrchestrationPlanCard.tsx +328 -0
  143. package/src/cards/PlanSelectorCard.tsx +312 -0
  144. package/src/cards/PlanStepsCard.tsx +52 -0
  145. package/src/cards/QuizCard.tsx +309 -0
  146. package/src/cards/ResearchPlanCard.tsx +169 -0
  147. package/src/cards/SearchSourcesCard.tsx +244 -0
  148. package/src/cards/SuggestedRepliesCard.tsx +48 -0
  149. package/src/cards/SummaryMessageCard.tsx +145 -0
  150. package/src/cards/ThinkingProcessCard.tsx +155 -0
  151. package/src/cards/ToolExecutionCard.tsx +152 -0
  152. package/src/cards/cards.test.tsx +492 -0
  153. package/src/cards/icons.tsx +249 -0
  154. package/src/cards/index.ts +53 -0
  155. package/src/cards/types.ts +27 -0
  156. package/src/components/AgentSelector.stories.tsx +113 -0
  157. package/src/components/AgentSelector.test.tsx +70 -0
  158. package/src/components/AgentSelector.tsx +147 -0
  159. package/src/components/ChatPanel.test.tsx +130 -0
  160. package/src/components/ChatPanel.tsx +612 -138
  161. package/src/components/index.ts +13 -1
  162. package/src/hooks/useChatStream.test.ts +78 -0
  163. package/src/hooks/useChatStream.ts +32 -1
  164. package/src/index.ts +43 -0
  165. package/src/state/ChatSessionProvider.test.tsx +85 -0
  166. package/src/state/ChatSessionProvider.tsx +98 -0
  167. package/src/state/MockChatStreamTransport.stories.tsx +95 -0
  168. package/src/state/MockChatStreamTransport.test.ts +163 -0
  169. package/src/state/MockChatStreamTransport.ts +123 -0
  170. package/src/state/bridgeLegacySSE.test.ts +134 -0
  171. package/src/state/bridgeLegacySSE.ts +134 -0
  172. package/src/state/index.ts +82 -0
  173. package/src/state/parseSSE.test.ts +123 -0
  174. package/src/state/parseSSE.ts +123 -0
  175. package/src/state/useChatComposer.test.ts +145 -0
  176. package/src/state/useChatComposer.ts +117 -0
  177. package/src/state/useChatList.test.ts +135 -0
  178. package/src/state/useChatList.ts +220 -0
  179. package/src/state/useChatSession.test.ts +61 -0
  180. package/src/state/useChatSession.ts +64 -0
  181. package/src/state/useScrollLock.test.ts +99 -0
  182. package/src/state/useScrollLock.ts +105 -0
  183. package/src/state/useToolCallStream.test.ts +86 -0
  184. package/src/state/useToolCallStream.ts +110 -0
@@ -1,42 +1,159 @@
1
1
  /**
2
- * `ChatPanel` — the foundational orchestration shell.
2
+ * `ChatPanel` — the orchestration shell, now exposed as a Radix-style
3
+ * compound: `ChatPanel.Root / .Header / .Messages / .Input / .Empty /
4
+ * .StreamingStatus`.
3
5
  *
4
- * Composes `MessageList` + a minimal input row + a stop button. The component
5
- * is intentionally minimal so consumers can layer on the production-grade
6
- * extras (model selector, tool toggles, mention picker, slash commands, file
7
- * upload, automation alerts, share-image button, multi-tab agent switcher,
8
- * orchestration sidebar) without having to fork the chat itself.
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
- * Production callers in `deeppath/apps/web` will build their fancier
11
- * `<ChatHeader />` and `<ChatInput />` separately and feed `ChatPanel` only
12
- * the `messages` + `onSubmit` props — the rest is rendered around it.
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
- export interface ChatPanelProps {
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
- * Called when the user submits the input. Receives the trimmed string.
20
- * The parent is responsible for calling `useChatStream().sendUserMessage`.
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
- /** Empty-state slot for the message list. */
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
- export declare function ChatPanel(props: ChatPanelProps): import("react/jsx-runtime").JSX.Element;
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;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAKnF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,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,sEAAsE;IACtE,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1E,6CAA6C;IAC7C,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CA0I9C"}
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,46 +1,201 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
- * `ChatPanel` — the foundational orchestration shell.
3
+ * `ChatPanel` — the orchestration shell, now exposed as a Radix-style
4
+ * compound: `ChatPanel.Root / .Header / .Messages / .Input / .Empty /
5
+ * .StreamingStatus`.
4
6
  *
5
- * Composes `MessageList` + a minimal input row + a stop button. The component
6
- * is intentionally minimal so consumers can layer on the production-grade
7
- * extras (model selector, tool toggles, mention picker, slash commands, file
8
- * upload, automation alerts, share-image button, multi-tab agent switcher,
9
- * orchestration sidebar) without having to fork the chat itself.
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
- * Production callers in `deeppath/apps/web` will build their fancier
12
- * `<ChatHeader />` and `<ChatInput />` separately and feed `ChatPanel` only
13
- * the `messages` + `onSubmit` props — the rest is rendered around it.
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
- export function ChatPanel(props) {
23
- const { messages, isStreaming = false, onSubmit, onCancel, className, inputPlaceholder = 'Send a message…', header, renderToolCall = defaultRenderToolCall, emptyState, disabled = false, } = props;
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 (e) => {
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
- const renderMessage = useCallback((rendererProps) => {
34
- const { message, isLastAssistant, isStreaming: streaming } = rendererProps;
35
- const isAssistant = message.role === 'assistant';
36
- 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
37
- ? 'border-agent-border bg-agent-muted text-agent-foreground'
38
- : 'border-transparent bg-agent-accent text-agent-accent-foreground'), children: [_jsx("div", { className: "whitespace-pre-wrap", children: message.content || (isLastAssistant && streaming ? '…' : '') }), isLastAssistant && streaming ? (_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,
39
- // The hook attaches a single `toolResult` to the message;
40
- // production callers that want per-call results should
41
- // override `renderToolCall` and look them up themselves.
42
- message.toolResult)) })) : null] }) }, message.id ?? rendererProps.index));
43
- }, [renderToolCall]);
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,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,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"}
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"}
@@ -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;AAG3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAOnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,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;CACnC;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,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,CAsIrB"}
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":"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"}
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;AAyF5E,SAAS,OAAO,CAAC,KAAY,EAAE,MAAc;IAC3C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC7B,MAAM,OAAO,GAAgB;gBAC3B,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACtB,GAAG,MAAM,CAAC,KAAK;aACD,CAAC;YACjB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,OAAO,GAAgB;gBAC3B,GAAG,MAAM;gBACT,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK;aAChC,CAAC;YACjB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,OAAO,GAAgB,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,KAAK,EAAiB,CAAC;YAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,wEAAwE;YACxE,qEAAqE;YACrE,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,OAAO,GAAgB;gBAC3B,GAAG,MAAM;gBACT,UAAU,EAAE,MAAM,CAAC,MAAM;aACX,CAAC;YACjB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,oBAAoB;YACvB,OAAO,KAAK,CAAC;QACf;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAuB;IACrD,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;QACL,EAAE,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE;QAClE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO;QACL,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE;QAC3D,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe;IACvC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,2EAA2E;IAC3E,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IACjE,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC5D,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAe;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAkB,CAAC;IACzC,IACE,OAAO;QACP,OAAO,OAAO,KAAK,QAAQ;QAC3B,IAAI,IAAI,OAAO;QACf,MAAM,IAAI,OAAO;QACjB,WAAW,IAAI,OAAO,EACtB,CAAC;QACD,OAAO,OAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAe;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAkB,CAAC;IACzC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;QACnE,OAAO,OAAqB,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAA6B;IAE7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE;QAC5C,QAAQ,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;KACxC,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,UAAU,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,IAAa,EAAE,EAAE;QACjD,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,aAAa,EAAE,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAe,EAAE,EAAE;QAClB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,KAAK;oBAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvD,OAAO;YACT,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,IAAI;oBAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,OAAO;YACT,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC;gBACrD,IAAI,MAAM,EAAE,CAAC;oBACX,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,MAAM;gBACT,QAAQ,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBACzC,OAAO;YACT,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC;gBAC5C,QAAQ,CAAC;oBACP,IAAI,EAAE,sBAAsB;oBAC5B,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,EAAE,EAAE;iBAC5C,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,QAAQ,CAAC;oBACP,IAAI,EAAE,sBAAsB;oBAC5B,KAAK,EAAE;wBACL,OAAO,EACL,KAAK,CAAC,OAAO;4BACb,kDAAkD;qBACrD;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC;YACb,KAAK,eAAe,CAAC;YACrB,KAAK,aAAa,CAAC;YACnB,KAAK,WAAW,CAAC;YACjB;gBACE,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,KAA0B,EAAE,EAAE;QACnC,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrE,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACjE,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAClE,SAAS,CAAC,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC;gBACP,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE;oBACL,OAAO,EACL,iBAAiB;wBACjB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACrD;aACF,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAC/C,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,SAAS,CAAC,OAAO,EAAE,CAAC;YACpB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,OAAe,EAAoB,EAAE;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,EAAE,EAAE,CAAC;YACP,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,EACD,CAAC,OAAO,CAAC,SAAS,CAAC,CACpB,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,QAAuB,EAAE,EAAE;QAC1D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,OAAoB,EAAE,EAAE;QACzD,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,cAAc,CAAC,OAAO;QACnC,eAAe;QACf,gBAAgB;QAChB,MAAM;QACN,WAAW;QACX,aAAa;KACd,CAAC,EACF,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CACxF,CAAC;AACJ,CAAC"}
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
@@ -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"}