UNPKG

@forbespro/lead-agent

Version:
2 lines (1 loc) 4.74 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ye=require("./index15.js"),l=require("./index16.js"),s=require("react"),_=require("./index17.js"),ve=require("./index18.js");function te(n,c){return c!=null?ve.default(n,c):n}function Ce(n){const[c,k]=s.useState(n);return s.useEffect(()=>{l.isDeepEqualData(n,c)||k(n)},[n,c]),c}function Me({api:n="/api/chat",id:c,initialMessages:k,initialInput:se="",sendExtraMessageFields:z,onToolCall:G,experimental_prepareRequestBody:E,maxSteps:H=1,streamProtocol:J="data",onResponse:L,onFinish:N,onError:I,credentials:T,headers:F,body:$,generateId:g=ye.generateId,fetch:Q,keepLastMessageOnError:W=!0,experimental_throttle:j}={}){const[ae]=s.useState(g),b=c!=null?c:ae,A=typeof n=="string"?[n,b]:b,X=Ce(k!=null?k:[]),re=s.useMemo(()=>l.fillMessageParts(X),[X]),{data:M,mutate:y}=_.default([A,"messages"],null,{fallbackData:re}),u=s.useRef(M||[]);s.useEffect(()=>{u.current=M||[]},[M]);const{data:q,mutate:w}=_.default([A,"streamData"],null),p=s.useRef(q);s.useEffect(()=>{p.current=q},[q]);const{data:v="ready",mutate:C}=_.default([A,"status"],null),{data:ne=void 0,mutate:K}=_.default([A,"error"],null),d=s.useRef(null),m=s.useRef({credentials:T,headers:F,body:$});s.useEffect(()=>{m.current={credentials:T,headers:F,body:$}},[T,F,$]);const o=s.useCallback(async e=>{var r,a;C("submitted"),K(void 0);const t=l.fillMessageParts(e.messages),f=t.length,S=l.extractMaxToolInvocationStep((r=t[t.length-1])==null?void 0:r.toolInvocations);try{const i=new AbortController;d.current=i;const x=te(y,j),me=te(w,j),he=u.current;x(t,!1);const be=z?t:t.map(({role:U,content:R,experimental_attachments:P,data:Z,annotations:B,toolInvocations:V,parts:ee})=>({role:U,content:R,...P!==void 0&&{experimental_attachments:P},...Z!==void 0&&{data:Z},...B!==void 0&&{annotations:B},...V!==void 0&&{toolInvocations:V},...ee!==void 0&&{parts:ee}})),Y=p.current;await l.callChatApi({api:n,body:(a=E==null?void 0:E({id:b,messages:t,requestData:e.data,requestBody:e.body}))!=null?a:{id:b,messages:be,data:e.data,...m.current.body,...e.body},streamProtocol:J,credentials:m.current.credentials,headers:{...m.current.headers,...e.headers},abortController:()=>d.current,restoreMessagesOnFailure(){W||x(he,!1)},onResponse:L,onUpdate({message:U,data:R,replaceLastMessage:P}){C("streaming"),x([...P?t.slice(0,t.length-1):t,U],!1),R!=null&&R.length&&me([...Y!=null?Y:[],...R],!1)},onToolCall:G,onFinish:N,generateId:g,fetch:Q,lastMessage:t[t.length-1]}),d.current=null,C("ready")}catch(i){if(i.name==="AbortError")return d.current=null,C("ready"),null;I&&i instanceof Error&&I(i),K(i),C("error")}const h=u.current;l.shouldResubmitMessages({originalMaxToolInvocationStep:S,originalMessageCount:f,maxSteps:H,messages:h})&&await o({messages:h})},[y,C,n,m,L,N,I,K,w,p,J,z,E,G,H,u,d,g,Q,W,j,b]),le=s.useCallback(async(e,{data:r,headers:a,body:t,experimental_attachments:f}={})=>{var S,h;const i=await l.prepareAttachmentsForRequest(f),x=u.current.concat({...e,id:(S=e.id)!=null?S:g(),createdAt:(h=e.createdAt)!=null?h:new Date,experimental_attachments:i.length>0?i:void 0,parts:l.getMessageParts(e)});return o({messages:x,headers:a,body:t,data:r})},[o,g]),ue=s.useCallback(async({data:e,headers:r,body:a}={})=>{const t=u.current;if(t.length===0)return null;const f=t[t.length-1];return o({messages:f.role==="assistant"?t.slice(0,-1):t,headers:r,body:a,data:e})},[o]),ce=s.useCallback(()=>{d.current&&(d.current.abort(),d.current=null)},[]),oe=s.useCallback(e=>{typeof e=="function"&&(e=e(u.current));const r=l.fillMessageParts(e);y(r,!1),u.current=r},[y]),ie=s.useCallback(e=>{typeof e=="function"&&(e=e(p.current)),w(e,!1),p.current=e},[w]),[D,O]=s.useState(se),de=s.useCallback(async(e,r={},a)=>{var t;if((t=e==null?void 0:e.preventDefault)==null||t.call(e),!D&&!r.allowEmptySubmit)return;a&&(m.current={...m.current,...a});const f=await l.prepareAttachmentsForRequest(r.experimental_attachments),h={messages:u.current.concat({id:g(),createdAt:new Date,role:"user",content:D,experimental_attachments:f.length>0?f:void 0,parts:[{type:"text",text:D}]}),headers:r.headers,body:r.body,data:r.data};o(h),O("")},[D,g,o]),fe=e=>{O(e.target.value)},ge=s.useCallback(({toolCallId:e,result:r})=>{const a=u.current;if(l.updateToolCallResult({messages:a,toolCallId:e,toolResult:r}),y([...a.slice(0,a.length-1),{...a[a.length-1]}],!1),v==="submitted"||v==="streaming")return;const t=a[a.length-1];l.isAssistantMessageWithCompletedToolCalls(t)&&o({messages:a})},[y,v,o]);return{messages:M!=null?M:[],id:b,setMessages:oe,data:q,setData:ie,error:ne,append:le,reload:ue,stop:ce,input:D,setInput:O,handleInputChange:fe,handleSubmit:de,isLoading:v==="submitted"||v==="streaming",status:v,addToolResult:ge}}exports.useChat=Me;