@@ -4,7 +4,7 @@ import { useState } from 'react';
44
55import { generateId } from '../shared/generate-id' ;
66import { readDataStream } from '../shared/read-data-stream' ;
7- import { Message } from '../shared/types' ;
7+ import { CreateMessage , Message } from '../shared/types' ;
88
99export type AssistantStatus = 'in_progress' | 'awaiting_message' ;
1010
@@ -29,6 +29,19 @@ export type UseAssistantHelpers = {
2929 */
3030 input : string ;
3131
32+ /**
33+ * Append a user message to the chat list. This triggers the API call to fetch
34+ * the assistant's response.
35+ * @param message The message to append
36+ * @param requestOptions Additional options to pass to the API call
37+ */
38+ append : (
39+ message : Message | CreateMessage ,
40+ requestOptions ?: {
41+ data ?: Record < string , string > ;
42+ } ,
43+ ) => Promise < void > ;
44+
3245 /**
3346 * setState-powered method to update the input value.
3447 */
@@ -122,23 +135,18 @@ export function useAssistant({
122135 setInput ( event . target . value ) ;
123136 } ;
124137
125- const submitMessage = async (
126- event ?: React . FormEvent < HTMLFormElement > ,
138+ const append = async (
139+ message : Message | CreateMessage ,
127140 requestOptions ?: {
128141 data ?: Record < string , string > ;
129142 } ,
130143 ) => {
131- event ?. preventDefault ?.( ) ;
132-
133- if ( input === '' ) {
134- return ;
135- }
136-
137- setStatus ( 'in_progress' ) ;
138-
139144 setMessages ( messages => [
140145 ...messages ,
141- { id : '' , role : 'user' , content : input } ,
146+ {
147+ ...message ,
148+ id : message . id ?? generateId ( ) ,
149+ } ,
142150 ] ) ;
143151
144152 setInput ( '' ) ;
@@ -240,7 +248,23 @@ export function useAssistant({
240248 setStatus ( 'awaiting_message' ) ;
241249 } ;
242250
251+ const submitMessage = async (
252+ event ?: React . FormEvent < HTMLFormElement > ,
253+ requestOptions ?: {
254+ data ?: Record < string , string > ;
255+ } ,
256+ ) => {
257+ event ?. preventDefault ?.( ) ;
258+
259+ if ( input === '' ) {
260+ return ;
261+ }
262+
263+ append ( { role : 'user' , content : input } , requestOptions ) ;
264+ } ;
265+
243266 return {
267+ append,
244268 messages,
245269 setMessages,
246270 threadId,
0 commit comments