@pickaxeproject/react 6.18.1 → 6.18.2-beta.0

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 (33) hide show
  1. package/dist/cjs/common/actionApproval.js +1 -0
  2. package/dist/cjs/components/Pickaxe/Chat/Input.js +1 -1
  3. package/dist/cjs/components/Pickaxe/Form/Questions/Submit.js +1 -1
  4. package/dist/cjs/components/Pickaxe/ResponseProvider.js +1 -1
  5. package/dist/cjs/components/Pickaxe/common/PickaxeMessageParts/ActionApprovalPart.js +1 -0
  6. package/dist/cjs/components/Pickaxe/common/PickaxeMessageParts/index.js +1 -1
  7. package/dist/cjs/hooks/pickaxe/useActionApprovals.js +1 -0
  8. package/dist/cjs/index.js +1 -1
  9. package/dist/cjs/src/common/actionApproval.d.ts +16 -0
  10. package/dist/cjs/src/components/Pickaxe/ResponseProvider.d.ts +3 -0
  11. package/dist/cjs/src/components/Pickaxe/common/PickaxeMessageParts/ActionApprovalPart.d.ts +6 -0
  12. package/dist/cjs/src/components/Pickaxe/common/PickaxeMessageParts/index.d.ts +4 -1
  13. package/dist/cjs/src/hooks/pickaxe/useActionApprovals.d.ts +10 -0
  14. package/dist/cjs/src/hooks/pickaxe/useResponseContext.d.ts +10 -0
  15. package/dist/cjs/src/index.d.ts +2 -0
  16. package/dist/cjs/src/types/history.d.ts +6 -2
  17. package/dist/esm/common/actionApproval.js +1 -0
  18. package/dist/esm/components/Pickaxe/Chat/Input.js +1 -1
  19. package/dist/esm/components/Pickaxe/Form/Questions/Submit.js +1 -1
  20. package/dist/esm/components/Pickaxe/ResponseProvider.js +1 -1
  21. package/dist/esm/components/Pickaxe/common/PickaxeMessageParts/ActionApprovalPart.js +1 -0
  22. package/dist/esm/components/Pickaxe/common/PickaxeMessageParts/index.js +1 -1
  23. package/dist/esm/hooks/pickaxe/useActionApprovals.js +1 -0
  24. package/dist/esm/index.js +1 -1
  25. package/dist/esm/src/common/actionApproval.d.ts +16 -0
  26. package/dist/esm/src/components/Pickaxe/ResponseProvider.d.ts +3 -0
  27. package/dist/esm/src/components/Pickaxe/common/PickaxeMessageParts/ActionApprovalPart.d.ts +6 -0
  28. package/dist/esm/src/components/Pickaxe/common/PickaxeMessageParts/index.d.ts +4 -1
  29. package/dist/esm/src/hooks/pickaxe/useActionApprovals.d.ts +10 -0
  30. package/dist/esm/src/hooks/pickaxe/useResponseContext.d.ts +10 -0
  31. package/dist/esm/src/index.d.ts +2 -0
  32. package/dist/esm/src/types/history.d.ts +6 -2
  33. package/package.json +207 -206
@@ -1 +1 @@
1
- import{__rest as e,__awaiter as t}from"../../../_virtual/_tslib.js";import{jsx as n,jsxs as s,Fragment as o}from"react/jsx-runtime";import{forwardRef as i,useState as r,useRef as a,useCallback as l,useEffect as d,useMemo as c,useImperativeHandle as u}from"react";import{usePickaxeContext as m}from"../../../hooks/pickaxe/usePickaxeContext.js";import{useResponseContext as p}from"../../../hooks/pickaxe/useResponseContext.js";import{useStyleInput as g}from"../../../hooks/studio/useStyleInput.js";import{useStyleFontSize as f}from"../../../hooks/studio/useStyleFontSize.js";import{useConversation as v}from"../../../hooks/pickaxe/useConversation.js";import{useDimensionContext as h}from"../../../hooks/pickaxe/useDimensionContext.js";import{useAuthContext as b}from"../Addons/Auth/hooks/useAuthContext.js";import{useDocument as y}from"../Addons/Document/hooks/useDocument.js";import{useScroll as x}from"../Addons/Scroll/hooks/useScroll.js";import{useArtifactContext as j}from"../Addons/Artifact/hooks/useArtifactContext.js";import{useHover as I}from"../../../hooks/core/useHover.js";import{useMediaQuery as w}from"../../../hooks/core/useMediaQuery.js";import{allowedFileMimeTypes as O,allowedImageMimeTypes as k,additionalAllowedFileExtensions as N}from"../../../common/documents.js";import{createParser as S}from"eventsource-parser";import C from"../../Icons/attach-vertical.svg.js";import E from"../../Icons/arrow-right.svg.js";import _ from"../../Icons/microphone.svg.js";import T from"../../Icons/message-clock.svg.js";import U from"../../Icons/stop.svg.js";import P from"../../Icons/trash.svg.js";import A from"../../Icons/pencil.svg.js";import D from"../Addons/Document/List.js";import L from"../../Core/Textarea.js";import R from"../../Core/ErrorAlert.js";import M from"../../Core/Menu/index.js";import $ from"../../Core/Menu/Button.js";import B from"../../Core/Menu/List.js";import X from"../../../common/error.js";import{pickaxeApi2 as K}from"../../../common/api/pickaxe.js";import{getValidationFailure as F}from"../../../common/validation.js";import V from"../../../common/cn.js";import{buildUpgradeUrl as G,openAuthenticatedPricingUrl as H,initializeEmbedUserId as W}from"../../../common/utils.js";import{getPickaxeConfigMetadata as q}from"../../../common/pickaxeConfig.js";import{readAgentPrefill as J}from"../../../common/agentPrefill.js";import{fireDeploymentSessionInitializedWebhook as z,fireDeploymentFirstMessageSubmittedWebhook as Q}from"../../../common/deploymentWebhooks.js";import{useStudio as Y}from"../../../hooks/studio/useStudio.js";import{useSpeechToText as Z}from"../../../hooks/pickaxe/useSpeechToText.js";import{STUDIO_INFINITY_VALUE as ee}from"../common/PickaxeCommon.js";const te=(e,t)=>{const n=e.find((e=>e.id===t));return n?e.filter((e=>e.id!==t)).map((e=>e.predecessorSubmissionId===t?Object.assign(Object.assign({},e),{predecessorSubmissionId:n.predecessorSubmissionId}):e)):e},ne=e=>"string"==typeof e&&e.trim().length>0,se=()=>"undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():`submission-${Date.now()}-${Math.random().toString(36).slice(2)}`,oe=e=>e.map((e=>Object.assign({},e))),ie=e=>e instanceof Error&&("AbortError"===e.name||"BodyStreamBuffer was aborted"===e.message),re=(e,t)=>{if(e&&"object"==typeof e)return e[t]},ae=(e,t)=>{const n=re(e,t);return ne(n)?n:null},le=e=>{const t=Number(e);return Number.isFinite(t)?t:void 0},de=({studioUser:e,deploymentId:t,portalId:n})=>{var s,o;const i=Array.isArray(re(e,"uses"))?re(e,"uses"):[],r=(({deploymentId:e,portalId:t})=>ne(e)?{type:"deployment",id:e}:ne(t)?{type:"portal",id:t}:null)({deploymentId:t,portalId:n});if(!r)return{scope:r,record:null};const a=null!==(o=null!==(s=i.find((e=>e.id===r.id&&e.type===r.type)))&&void 0!==s?s:i.find((e=>e.id===r.id)))&&void 0!==o?o:null;return{scope:r,record:a}},ce=i((({resubmitPrompt:i,onFocus:re,onBlur:ce,onInputHeightChange:ue,initSmitheryAuthData:me},pe)=>{var ge,fe,ve,he,be,ye,xe,je,Ie,we,Oe,ke,Ne,Se,Ce,Ee,_e;const{origin:Te,pickaxeId:Ue,sessionId:Pe,sender:Ae,senderType:De,portalId:Le,deploymentId:Re,deploymentType:Me,pickaxe:$e,styles:Be,colors:Xe,translations:Ke,locale:Fe,forceMobile:Ve,isNewChat:Ge,isRtl:He,isEmbed:We,isShowFeedbackMessage:qe,accessGroup:Je,setIsNewChat:ze,setIsShowIceBreaker:Qe,setValidationStatus:Ye,setValidationUpgradeGroups:Ze,setValidationUpgradeUrl:et,setAccessGroup:tt,onUpgrade:nt,onGenerateComplete:st}=m(),{token:ot,isLoggedOut:it,isSent:rt,isPricingAuth:at}=b(),{messages:lt,isGenerating:dt,setMessages:ct,setStatus:ut,setLimitData:mt,setError:pt}=p(),{documents:gt,isUploading:ft,documentError:vt,onFileUpload:ht,setDocuments:bt,setDocumentError:yt}=y(),{studio:xt}=Y(),[jt]=w("(max-width: 480px)"),{scrollStartSession:It,scrollEndSession:wt,scrollToBottom:Ot}=x({auto:!0,smooth:!(Ve||jt)}),{artifacts:kt,currentPopupType:Nt,setArtifacts:St,setCurrentArtifact:Ct}=j(),{height:Et}=h(),_t=v(),[Tt,Ut]=r((()=>J([Re,Ue]).chatInput)),[Pt,At]=r(!1),[Dt,Lt]=r(!1),[Rt,Mt]=r(!1),[$t,Bt]=r([]),[Xt,Kt]=r(!1),[Ft,Vt]=r(null),[Gt,Ht]=r(null),[Wt,qt]=r(null),[Jt,zt]=r(null),[Qt,Yt]=r(!1),[Zt,en]=r(!1),[tn,nn]=r(0),sn=a(null),on=a(""),rn=a(null),an=a(null),ln=a(null),dn=a([]),cn=a(null),un=a(null),mn=a(null),pn=a(null),gn=a(new Set),fn=a(null),vn=Math.max(.4*Et,100),{speechTranscript:hn,isSpeechListening:bn,isSpeechProcessing:yn,isSpeechSupported:xn,onStartListening:jn,onStopListening:In}=Z(),wn=I(),{isHover:On}=wn,kn=e(wn,["isHover"]),Nn=I(),{isHover:Sn}=Nn,Cn=e(Nn,["isHover"]),En=I(),{isHover:_n}=En,Tn=e(En,["isHover"]),Un=f(),Pn=g(),An="undefined"!=typeof window?window.location.hostname:"",Dn="undefined"!=typeof window?window.location.href:"",Ln="undefined"!=typeof window&&window.self!==window.top,Rn=An.includes("pickaxe.co")&&!Dn.includes("https://studio.pickaxe.co/_embed")&&!Ln,Mn=null!==(fe=null===(ge=null==$e?void 0:$e.documentuploadtype)||void 0===ge?void 0:ge.startsWith("enduserupload"))&&void 0!==fe&&fe,$n=xn&&(null==$e?void 0:$e.enablevoicetotext),Bn=bn&&!Tt.trim(),Xn=ne(Re),Kn="chat-input"===Me&&Ge&&!rt,Fn="chat-input"===Me&&at&&it&&rt,Vn=l((e=>{const t=F(e);return!!t&&(pt(""),mt(null),Ye(t.status),tt(t.accessGroup),Ze(t.upgradeGroups),et(t.upgradeUrl),!0)}),[pt,mt,Ye,Ze,et,tt]),Gn=null!==(ve=null==$e?void 0:$e.placeholdertext)&&void 0!==ve?ve:He?"بماذا تريد أن تتحدث؟":(null==Ke?void 0:Ke["what-do-you-want-to-talk-about"])||"What do you want to talk about?",Hn=Pt||Dt,Wn=l((()=>t(void 0,void 0,void 0,(function*(){Yt(!1);try{const e=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/user`,Object.assign(Object.assign({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Object.assign({studioId:null==$e?void 0:$e.studioid},ot?{studioSessionToken:ot}:Ae?{sender:Ae}:{sender:W()}))},(!process.env.NODE_ENV||"development"===process.env.NODE_ENV)&&Object.assign({},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{headers:{"Content-Type":"application/json","x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN}})),Rn&&{credentials:"include"})),t=yield e.json();(null==t?void 0:t.studioUser)&&(qt(t.studioUser),zt(t.url))}catch(e){console.error("Failed to fetch studio user:",e)}finally{Yt(!0)}}))),[Rn,null==$e?void 0:$e.studioid,Ae,ot]);d((()=>{Wn()}),[Wn]);const qn=Number(null!==(he=null==Je?void 0:Je.limit)&&void 0!==he?he:0),Jn="string"==typeof(null==Je?void 0:Je.limitInterval)?Je.limitInterval:null,zn=!!(null==xt?void 0:xt.data.usage)&&xt.data.usage.isCredits,Qn=c((()=>{var e,t,n,s,o;return null!==(o=null!==(s=null!==(n=null!==(t=null!==(e=null!=Le?Le:ae(Wt,"portalId"))&&void 0!==e?e:ae(Wt,"portalid"))&&void 0!==t?t:ae(Je,"portalId"))&&void 0!==n?n:ae(Je,"portalid"))&&void 0!==s?s:ae($e,"portalId"))&&void 0!==o?o:ae($e,"portalid")}),[Je,Le,$e,Wt]),Yn=c((()=>de({studioUser:Wt,deploymentId:Re,portalId:Qn})),[Re,Qn,Wt]);d((()=>{Xn&&Ge&&Pe&&gn.current.add(Pe)}),[Ge,Pe,Xn]);const Zn=l((()=>{var e,t,n;return{studioId:null==$e?void 0:$e.studioid,userEmail:ae(Wt,"email"),userId:null!==(e=ae(Wt,"userId"))&&void 0!==e?e:ae(Wt,"userid"),sessionId:Pe,deploymentId:Re,deploymentType:Me,portalId:Qn,accessGroupId:null!==(t=null==Je?void 0:Je.accessGroupId)&&void 0!==t?t:null,pickaxeId:Ue,sender:Ae,senderType:De,origin:Te,metadata:null!==(n=q(Re))&&void 0!==n?n:null}}),[null==Je?void 0:Je.accessGroupId,Re,Me,Te,null==$e?void 0:$e.studioid,Ue,Qn,Ae,De,Pe,Wt]),es=l((()=>!!(Xn&&Qt&&Pe)&&(!!gn.current.has(Pe)&&(z(Zn()),gn.current.delete(Pe),!0))),[Zn,Qt,Pe,Xn]);d((()=>{if(!Qt||!Pe)return;es();const e=fn.current;(null==e?void 0:e.sessionId)===Pe&&(Q(Object.assign(Object.assign(Object.assign({},e),Zn()),{message:e.message,documentIds:e.documentIds,uploadedModelImages:e.uploadedModelImages,hasUploadedDocuments:e.hasUploadedDocuments,isHidden:e.isHidden})),fn.current=null)}),[es,Zn,Qt,Pe]);const ts={currentUses:le(null==Wt?void 0:Wt.currentUses),extraUses:le(null==Wt?void 0:Wt.extraUses)},ns=Yn.scope?{currentUses:null!==(ye=le(null===(be=Yn.record)||void 0===be?void 0:be.currentUses))&&void 0!==ye?ye:0,extraUses:null!==(je=le(null===(xe=Yn.record)||void 0===xe?void 0:xe.extraUses))&&void 0!==je?je:0}:{currentUses:0,extraUses:0},ss=ae(Wt,"type"),os="guest"===ss||!ss&&it?ns:ts;d((()=>{let e=!0;return t(void 0,void 0,void 0,(function*(){var t;if(zn&&(null===(t=null==xt?void 0:xt.data)||void 0===t?void 0:t.workspaceId))try{const t=yield K.get(`/cost_per_run?workspaceId=${xt.data.workspaceId}`,{withCredentials:!1});e&&nn(1e4*(Number(t.data.costPerRun)||0))}catch(t){console.error("Failed to fetch average cost per run:",t),e&&nn(0)}else e&&nn(0)})),()=>{e=!1}}),[zn,null===(Ie=null==xt?void 0:xt.data)||void 0===Ie?void 0:Ie.workspaceId]);const is=(({currentUses:e,extraUses:t,limit:n,limitInterval:s})=>{const o=Number(null!=e?e:0),i=Number(null!=t?t:0);return n===ee||i===ee?ee:"one_time"===s?Math.max(0,i-o):Math.max(0,n-o)+i})({currentUses:os.currentUses,extraUses:os.extraUses,limit:qn,limitInterval:Jn}),rs=is===ee?ee:Math.max(0,Math.ceil(is)),as=(({extraUses:e,limit:t,limitInterval:n})=>{const s=Number(null!=e?e:0);return t===ee||s===ee?ee:"one_time"===n?Math.max(0,s):Math.max(0,t)+Math.max(0,s)})({extraUses:os.extraUses,limit:qn,limitInterval:Jn}),ls=as===ee?ee:Math.ceil(.05*as),ds=zn?Math.ceil(5*tn):5,cs=ls===ee?ee:Math.max(ls,ds),us=c((()=>!!Wt&&(!Zt&&(rs!==ee&&rs<=cs))),[Zt,cs,rs,Wt]),ms=Boolean(null==Je?void 0:Je.hideUpgradeOptions),ps=Boolean(!ms&&((null===(we=null==Je?void 0:Je.upgrade)||void 0===we?void 0:we.isBuyMoreUses)||(null===(Oe=null==Je?void 0:Je.upgrade)||void 0===Oe?void 0:Oe.isLinkToCustomURL)||(null===(ke=null==Je?void 0:Je.upgrade)||void 0===ke?void 0:ke.isUpgradeToAnotherGroup)&&(null===(Ne=Je.upgrade.accessGroupIds)||void 0===Ne?void 0:Ne.length))),gs=!ms&&(null===(Se=null==Je?void 0:Je.upgrade)||void 0===Se?void 0:Se.isLinkToCustomURL)&&"string"==typeof Je.upgrade.limitLink&&Je.upgrade.limitLink.trim().length>0?Je.upgrade.limitLink.trim():null,fs=gs&&"string"==typeof(null===(Ce=null==Je?void 0:Je.upgrade)||void 0===Ce?void 0:Ce.limitCTA)&&Je.upgrade.limitCTA.trim().length>0?Je.upgrade.limitCTA:(null==Ke?void 0:Ke["pricing.upgrade"])||(null==Ke?void 0:Ke.upgrade)||"Upgrade",vs=c((()=>{var e,t,n;return!!Ge&&(!!$e&&(!_t.isLoading&&(!((null!==(t=null===(e=_t.data)||void 0===e?void 0:e.messages.length)&&void 0!==t?t:0)>1)&&(!!(null===(n=$e.icebreakers)||void 0===n?void 0:n.length)&&(!qe&&!Kn)))))}),[$e,Ge,qe,Kn,_t.data,_t.isLoading]),hs=c((()=>{if(ft||Rt)return!1;const e=Mn&&gt.length>0&&gt.every((e=>"finished"===e.status));return!(!Tt.trim()&&!e)&&gt.every((e=>"finished"===e.status||e.isInsertedAsRaw))}),[Mn,ft,Rt,Tt,gt]);u(pe,(()=>({onSubmit:Is}))),d((()=>{Qe(vs)}),[vs]),d((()=>{var e;if(i){const t=Array.from(lt),n=null===(e=t[t.length-2].parts.find((e=>"text"===e.type)))||void 0===e?void 0:e.content;Is(n,!0)}}),[i]),d((()=>{if(!mn.current||!ue)return;const e=new ResizeObserver((e=>{for(const t of e)ue(t.contentRect.height)}));return e.observe(mn.current),()=>{e.disconnect()}}),[ue]),d((()=>{if(!bn)return;const e=on.current?`${on.current} `:"";Ut(`${e}${hn}`)}),[hn,bn]),d((()=>{if(!cn.current)return;(()=>{if(!cn.current)return;let e=cn.current.scrollHeight>52;Tt.includes("\n")||gt.length?e=!0:Tt.trim()||(e=!1),At(e)})()}),[Tt,gt]),d((()=>{const e=cn.current,t=un.current;if(!e||!t||Pt||Tt.includes("\n"))return void Lt(!1);const n=window.getComputedStyle(e),s=`${n.fontStyle} ${n.fontVariant} ${n.fontWeight} ${n.fontSize} / ${n.lineHeight} ${n.fontFamily}`,o=document.createElement("span");Object.assign(o.style,{font:s,letterSpacing:n.letterSpacing,position:"absolute",visibility:"hidden",whiteSpace:"nowrap",top:"0",left:"0"}),o.textContent=Tt||Gn,document.body.appendChild(o);const i=o.offsetWidth;o.remove();const r=parseFloat(n.paddingLeft)||0,a=parseFloat(n.paddingRight)||0,l=e.clientWidth-r-a-t.offsetWidth;Lt(i>l)}),[Tt,Pt,Gn]);const bs=e=>t(void 0,void 0,void 0,(function*(){if(!(e=null!=e?e:an.current))return!1;const t=oe(dn.current);try{return(yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/cancel/${e}`,Object.assign({method:"POST",headers:Object.assign(Object.assign({"Content-Type":"application/json"},(!process.env.NODE_ENV||"development"===process.env.NODE_ENV)&&Object.assign({},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{"x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN})),{"x-request-sent-at":(new Date).toISOString()}),body:JSON.stringify({outputMessageParts:t})},Rn&&{credentials:"include"}))).ok}catch(e){return console.warn("Failed to cancel submission",e),!1}})),ys=e=>{ln.current=e,pn.current&&(pn.current.abort(),pn.current=null),rn.current&&(rn.current.cancel().catch((()=>{})),rn.current=null)},xs=e=>t(void 0,void 0,void 0,(function*(){const t=Date.now()+3e4;for(;Date.now()<t;){try{const t=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/status/${e}`,Object.assign({headers:Object.assign({"Cache-Control":"no-cache"},(!process.env.NODE_ENV||"development"===process.env.NODE_ENV)&&Object.assign({},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{"x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN}))},Rn&&{credentials:"include"}));if(t.ok){if((yield t.json()).terminal)return!0}}catch(e){console.warn("Failed to read submission status",e)}yield new Promise((e=>setTimeout(e,250)))}return!1})),js=()=>{const e=an.current;e&&!Rt&&!ft&&Tt.trim()&&(Bt((t=>{var n,s;return[...t,{id:se(),message:Tt,predecessorSubmissionId:null!==(s=null===(n=t[t.length-1])||void 0===n?void 0:n.id)&&void 0!==s?s:e}]})),Ut(""))},Is=(e,n=!1,s=!1,o)=>t(void 0,void 0,void 0,(function*(){var t,i,r,a;let l=null;try{if(dt&&!s||ft)return;const d=gt.filter((e=>"finished"===e.status&&!e.isInsertedAsRaw)),c=d.map((e=>e.documentId)).filter(Boolean),u=d.filter((e=>"image"===e.type)).map((e=>{const t=e.name.split(".").pop()||"";return{documentId:e.documentId,extension:t}})),m=null!=e?e:Tt,p=null!==(i=null===(t=null==$e?void 0:$e.documentuploadtype)||void 0===t?void 0:t.startsWith("enduserupload"))&&void 0!==i&&i&&c.length>0;if(!m&&!p)return;pt(""),yt(""),mt(null),Ut(""),ze(!1),ut("fetching"),It(),Ot();const g=n?lt.slice(0,lt.length-1):lt,f=(e=>e.reduce(((e,t)=>Math.max(e,t.id)),0)+1)(g),v=f+(n?0:1),h={id:v,role:"assistant",parts:[],documentIds:[]},b=[...g,...n?[]:[{id:f,role:"user",parts:[{type:"text",content:m,isVisible:!0}],documentIds:p?c:[]}],h];ct(b),Ot(),p&&bt([]);const y=q(Re),x=null!=o?o:se();l=x,an.current=x,ln.current=null,dn.current=[];const j=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/submit`,Object.assign({method:"POST",body:JSON.stringify(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({origin:Te,pickaxeId:Ue,sessionId:Pe,submissionId:x,senderType:De,value:m},p&&{documentIds:c}),Ae&&{sender:Ae}),ot&&{studioSessionToken:ot}),!ot&&!Ae&&{sender:W()}),Qn&&{portalId:Qn}),Re&&{deploymentId:Re}),y&&{metadata:y}),p&&u.length>0?{uploadedModelImages:u}:{})),headers:Object.assign(Object.assign({},(!process.env.NODE_ENV||"development"===process.env.NODE_ENV)&&Object.assign({},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{"x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN})),{"x-request-sent-at":(new Date).toISOString()})},Rn&&{credentials:"include"})),I=yield j.json();if(!I.success){if(I.limitData){const e=new Error(I.error||I.message||(null==Ke?void 0:Ke["failed-to-start-generation"])||"Failed to start generation");throw e.limitData=I.limitData,e}if(Vn(I))return;throw new Error(I.error||I.message||(null==Ke?void 0:Ke["failed-to-start-generation"])||"Failed to start generation")}const w=null!==(r=I.submissionId)&&void 0!==r?r:x;l=w,an.current=w;const O=()=>ln.current===w;if(O())return;Xn&&Ge&&Pe&&gn.current.add(Pe);const k=Object.assign(Object.assign({},Zn()),{message:m,documentIds:p?c:[],uploadedModelImages:p?u:[],hasUploadedDocuments:p,isHidden:n,metadata:null!=y?y:null});Qt?(es(),Q(k)):fn.current=k,ut("streaming"),pn.current=new AbortController;const N=[];let C=[...null!=kt?kt:[]],E=0,_=!1,T="";for(;!_;)try{const e=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/stream/${w}?index=${E}`,{signal:null===(a=pn.current)||void 0===a?void 0:a.signal,headers:{"Cache-Control":"no-cache",Connection:"keep-alive"}});if(!e.body)throw new Error("No response body");const t=e.body.getReader();rn.current=t;const n=new TextDecoder,s=S({onEvent:e=>{var t,n;if(O())_=!0;else if(e.event&&"ping"!==e.event&&E++,"stop"!==e.event){if("error"===e.event){const t=JSON.parse(e.data);if(t.limitData)return mt(t.limitData),pt(""),void(_=!0);const n=t.error||t.message||(null==Ke?void 0:Ke["something-went-wrong"])||"Something went wrong.";return Vn(t)||pt(n),void(_=!0)}if("delta"===e.event){const s=JSON.parse(e.data);if("data-error"===s.type&&me){const e=s.data.error;if("string"==typeof e){const t=/['"]type['"]\s*:\s*['"]unauthorized_smithery['"]/.test(e),n=/['"]type['"]\s*:\s*['"]unauthorized_composio['"]/.test(e);if(t){const t=e.match(/['"]qualifiedName['"]\s*:\s*['"]([^'"]+)['"]/),n=e.match(/['"]serverId['"]\s*:\s*['"]([^'"]+)['"]/),s=e.match(/['"]name['"]\s*:\s*['"]([^'"]+)['"]/);if(t&&t[1]&&n&&n[1]&&s&&s[1])throw _=!0,me({provider:"smithery",smitheryId:t[1],serverId:n[1],name:s[1]}),new Error("STOP_STREAM")}else if(n){const t=e.match(/['"]toolkitSlug['"]\s*:\s*['"]([^'"]+)['"]/),n=e.match(/['"]serverId['"]\s*:\s*['"]([^'"]+)['"]/),s=e.match(/['"]name['"]\s*:\s*['"]([^'"]+)['"]/);if(t&&t[1]&&n&&n[1]&&s&&s[1])throw _=!0,me({provider:"composio",toolkitSlug:t[1],serverId:n[1],name:s[1]}),new Error("STOP_STREAM")}}else if("object"==typeof e&&null!==e){const t=e;if("unauthorized_smithery"===t.type&&t.qualifiedName&&t.serverId&&t.name)throw _=!0,me({provider:"smithery",smitheryId:t.qualifiedName,serverId:t.serverId,name:t.name}),new Error("STOP_STREAM");if("unauthorized_composio"===t.type&&t.toolkitSlug&&t.serverId&&t.name)throw _=!0,me({provider:"composio",toolkitSlug:t.toolkitSlug,serverId:t.serverId,name:t.name}),new Error("STOP_STREAM")}}else if("text-start"===s.type)T="",N.push({type:"text",content:"",isVisible:null===(t=s.isVisible)||void 0===t||t});else if("text-delta"===s.type)T+=s.delta,N[N.length-1].content=T;else if("text-end"===s.type)T="";else if("reasoning-start"===s.type)T="",N.push({type:"reasoning",content:"",isVisible:null===(n=s.isVisible)||void 0===n||n});else if("reasoning-delta"===s.type)T+=s.delta,N[N.length-1].content=T;else if("reasoning-end"===s.type)T="";else if(s.type.startsWith("data-")){const e=s;N.push({type:e.type,content:JSON.stringify(e.data),isVisible:!0})}dn.current=oe(N);const o=oe(N);ct((e=>{const t=e.findIndex((e=>e.id===v)),n=Object.assign(Object.assign({},h),{parts:o});return-1===t?[...e,n]:e.map(((e,s)=>s===t?n:e))}))}else if("artifact_created"===e.event){const t=JSON.parse(e.data);C=C.filter((e=>!(e.id===t.id&&e.version===t.version))),C.push(Object.assign(Object.assign({},t),{content:"",status:"streaming"})),St([...C]),Nt.startsWith("inline")||Ct({id:t.id,version:t.version})}else if("artifact_updated"===e.event){const t=JSON.parse(e.data);C=C.filter((e=>!(e.id===t.id&&e.version===t.version))),C.push(Object.assign(Object.assign({},t),{content:"",status:"updating"})),St(C),Nt.startsWith("inline")||Ct({id:t.id,version:t.version})}else if("artifact_rewrite"===e.event){const t=JSON.parse(e.data);C=C.filter((e=>!(e.id===t.id&&e.version===t.version))),C.push(Object.assign(Object.assign({},t),{content:"",status:"streaming"})),St(C),Nt.startsWith("inline")||Ct({id:t.id,version:t.version})}else if("artifact_content"===e.event){const t=JSON.parse(e.data),n=t.token.replace(/\u200B/g,"");C=C.map((e=>e.id===t.id&&e.version===t.version?Object.assign(Object.assign({},e),{content:e.content+n,status:"streaming"}):e)),St(C)}else if("artifact_finished"===e.event){const t=JSON.parse(e.data);St(C.map((e=>e.id===t.id?Object.assign(Object.assign({},e),{status:"finished"}):e)))}else if("error"===e.event){const t=JSON.parse(e.data);if(t.limitData)return mt(t.limitData),pt(""),void(_=!0);const n=t.error||t.message||(null==Ke?void 0:Ke["something-went-wrong-try-again"])||"Something went wrong, please try again.";if(Vn(t))return void(_=!0);pt(n)}else"stop"===e.event&&(_=!0)}else _=!0}});for(;;){if(O()){_=!0,t.cancel().catch((()=>{}));break}const{value:e,done:o}=yield t.read();if(O()){_=!0,t.cancel().catch((()=>{}));break}if(o)break;s.feed(n.decode(e))}_||O()||(yield new Promise((e=>setTimeout(e,1e3))))}catch(e){if("STOP_STREAM"===e.message||ie(e)||O())return void(_=!0);console.warn("Stream connection lost, retrying...",e),yield new Promise((e=>setTimeout(e,1e3)))}null==st||st(Pe)}catch(e){if(ie(e))return;if(e.limitData)mt(e.limitData),pt("");else{let t=X(e)||"";t&&!t.includes("Unexpected token 'A',")||(t=(null==Ke?void 0:Ke["high-traffic-try-again-later"])||"Oops! We're experiencing high traffic at the moment. Please try again later."),Vn(t)||pt(t)}}finally{const e=!l||an.current===l;Ot(),e&&(ut("idle"),wt(),rn.current=null),l&&e&&(an.current=null,dn.current=[]),yield Wn()}}));return d((()=>{if(dt||Rt||Xt||0===$t.length)return;const e=$t[0];Kt(!0),Vt(e.id),t(void 0,void 0,void 0,(function*(){try{if(!(yield xs(e.predecessorSubmissionId)))return void pt((null==Ke?void 0:Ke["queued-message-waiting"])||"A queued message is waiting for the previous response to finish.");Bt((t=>t.filter((t=>t.id!==e.id)))),yield Is(e.message,!1,!0,e.id)}finally{Kt(!1),Vt(null)}}))}),[dt,Xt,Rt,$t]),Fn?null:n("div",Object.assign({className:V("flex w-full flex-shrink-0 flex-col items-center",!Kn&&"px-4 pb-8"),dir:He?"rtl":"ltr"},{children:s("div",Object.assign({className:"flex w-full max-w-[800px] flex-col"},{children:[$t.length>0&&n("div",Object.assign({className:"mx-3 -mb-3 overflow-hidden border pb-3",style:{borderColor:Xe.text+"18",backgroundColor:null!==(Ee=Pn.backgroundColor)&&void 0!==Ee?Ee:Xe.text+"08",color:Xe.text,borderTopLeftRadius:Math.max(Be.cornerRadius-4,12),borderTopRightRadius:Math.max(Be.cornerRadius-4,12)}},{children:$t.map(((e,i)=>{var r;return s("div",Object.assign({className:"flex min-h-10 items-center gap-2 px-3 py-2",style:i<$t.length-1?{borderBottom:`1px solid ${Xe.text}12`}:void 0},{children:[n(T,{className:"h-4 w-4 shrink-0 opacity-50","aria-hidden":"true"}),n("span",Object.assign({className:"min-w-0 flex-1 truncate text-sm",title:e.message},{children:e.message})),Gt===e.id||Ft===e.id?s("span",Object.assign({className:"flex shrink-0 items-center gap-1.5 px-2 py-1 text-xs opacity-60","aria-live":"polite"},{children:[n("span",{className:"h-3 w-3 animate-spin rounded-full border border-current border-r-transparent","aria-hidden":"true"}),Gt===e.id?(null==Ke?void 0:Ke.steering)||"Steering...":(null==Ke?void 0:Ke.starting)||"Starting..."]})):s(o,{children:[s("button",Object.assign({type:"button",className:"shrink-0 rounded-md px-2 py-1 text-xs font-medium opacity-70 transition-opacity hover:opacity-100 disabled:cursor-default disabled:opacity-40",disabled:Rt||!dt,onClick:()=>{(e=>{t(void 0,void 0,void 0,(function*(){const t=an.current;if(!t||Rt)return;const n=$t.findIndex((t=>t.id===e.id));if(-1===n)return;Mt(!0),Ht(e.id),pt(""),ys(t);let s=!1;try{if(!(yield bs(t)))throw new Error((null==Ke?void 0:Ke["failed-to-interrupt-current-response"])||"Failed to interrupt the current response.");if(!(yield xs(t)))throw new Error((null==Ke?void 0:Ke["current-response-still-stopping"])||"The current response is still stopping. Please send your message again in a moment.");ut("idle"),Bt((t=>t.filter((t=>t.id!==e.id)))),s=!0,Mt(!1),Ht(null),yield Is(e.message,!1,!0,e.id)}catch(t){ut("idle"),s&&Bt((t=>{if(t.some((t=>t.id===e.id)))return t;const s=[...t];return s.splice(n,0,e),s})),pt(X(t))}finally{Mt(!1),Ht(null)}}))})(e)},"aria-label":`${(null==Ke?void 0:Ke["steer-with"])||"Steer with"}: ${e.message}`},{children:[n("span",Object.assign({"aria-hidden":"true"},{children:"↳ "})),(null==Ke?void 0:Ke.steer)||"Steer"]})),n("button",Object.assign({type:"button",className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md opacity-50 transition-opacity hover:opacity-100 disabled:cursor-default disabled:opacity-30",disabled:Rt,onClick:()=>{return t=e.id,void Bt((e=>te(e,t)));var t},"aria-label":`${(null==Ke?void 0:Ke["remove-queued-message"])||"Remove queued message"}: ${e.message}`},{children:n(P,{className:"h-4 w-4","aria-hidden":"true"})})),s(M,Object.assign({id:`queued-message-menu-${e.id}`,className:"shrink-0"},{children:[n($,Object.assign({className:"flex h-7 w-7 items-center justify-center rounded-md opacity-50 transition-opacity hover:opacity-100",isDisabled:Rt,role:"button",tabIndex:Rt?-1:0,"aria-haspopup":"menu","aria-label":(null==Ke?void 0:Ke["more-options"])||"More options",onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.currentTarget.click())}},{children:s("svg",Object.assign({viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":"true"},{children:[n("circle",{cx:"5",cy:"12",r:"1.6"}),n("circle",{cx:"12",cy:"12",r:"1.6"}),n("circle",{cx:"19",cy:"12",r:"1.6"})]}))})),n(B,Object.assign({role:"menu",align:He?"bottom-start":"bottom-end",positionStrategy:We?"absolute":"fixed",width:"auto",className:"p-1 text-sm shadow-xl",style:{backgroundColor:null!==(r=Pn.backgroundColor)&&void 0!==r?r:Xe.primary,color:Xe.text,borderRadius:"12px"},border:`1px solid ${Xe.text}20`},{children:s("button",Object.assign({type:"button",role:"menuitem",className:"flex min-w-36 items-center gap-2 rounded-lg px-3 py-2 text-left transition-colors hover:bg-black/5 dark:hover:bg-white/10",onClick:()=>(e=>{Bt((t=>te(t,e.id))),Ut(e.message),requestAnimationFrame((()=>{const t=cn.current;t&&(t.focus(),t.setSelectionRange(e.message.length,e.message.length))}))})(e)},{children:[n(A,{className:"h-4 w-4 shrink-0"}),(null==Ke?void 0:Ke["edit-message"])||"Edit message"]}))}))]}))]})]}),e.id)}))})),s("div",Object.assign({ref:mn,className:V("relative z-10 flex flex-col w-full justify-end gap-y-3 py-[3px]","block"===Be.formFieldStyle&&"shadow"),style:Object.assign(Object.assign({},Pn),{maxHeight:`${vn}px`,overflowY:"auto"})},{children:[us&&s("div",Object.assign({className:"sticky top-0 z-10 flex w-full items-center justify-between border-b px-4 py-2.5 shadow-sm backdrop-blur-md",style:{backgroundColor:Pn.backgroundColor?`${Pn.backgroundColor}E6`:void 0,borderColor:Xe.text+"20",color:Xe.text,borderTopRightRadius:Be.cornerRadius+"px",borderTopLeftRadius:Be.cornerRadius+"px"}},{children:[n("div",Object.assign({className:"flex items-center gap-2 text-sm font-medium"},{children:s("span",{children:[rs.toLocaleString()," ",zn?(null==Ke?void 0:Ke.credits)||"Credits":(null==Ke?void 0:Ke.uses)||"Uses"," ",(null==Ke?void 0:Ke.remaining)||"remaining"]})})),s("div",Object.assign({className:"flex items-center gap-3"},{children:[ps&&n("button",Object.assign({className:"rounded-md px-3 py-1.5 text-xs font-semibold transition-opacity hover:opacity-90",style:{backgroundColor:Xe.accent,color:Xe.accentText},onClick:e=>{if(e.preventDefault(),e.stopPropagation(),gs)return void window.open(gs,"_blank","noopener,noreferrer");if(nt)return void nt();const t=G({baseUrl:Jt,accessGroupId:null==Je?void 0:Je.accessGroupId});t&&H({deploymentId:Re,pricingUrl:t,studioId:null==$e?void 0:$e.studioid,studioSessionToken:ot})}},{children:fs})),n("button",Object.assign({className:"flex h-6 w-6 items-center justify-center rounded-full opacity-60 transition-opacity hover:opacity-100",onClick:()=>en(!0)},{children:n("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor",className:"h-4 w-4"},{children:n("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}))}))]}))]})),!dt&&gt.length>0&&n(D,{className:"p-4 pb-0",isDisabled:dt}),s("div",Object.assign({className:"relative flex w-full flex-col"},{children:[Bn&&s("div",Object.assign({className:V("pointer-events-none absolute top-1/2 z-10 flex -translate-y-1/2 select-none items-center gap-x-2",He?"right-4":"left-4")},{children:[n("span",{className:"h-2 w-2 animate-pulse rounded-full bg-c-secondary",style:{backgroundColor:null!==(_e=Xe.accent)&&void 0!==_e?_e:"#ff0000"}}),n("span",Object.assign({className:"text-sm text-c-secondary font-semilight",style:{color:Xe.text+"90"}},{children:(null==Ke?void 0:Ke.listening)||"Listening..."}))]})),n(L,Object.assign({ref:cn,className:V(Un.i1,"py-3.5 max-h-60 px-4 w-full border-transparent bg-transparent",!Tt.trim()&&!Tt.includes("\n")&&"overflow-hidden text-ellipsis whitespace-nowrap placeholder:whitespace-normal placeholder:overflow-visible",He?"text-right":"text-left",Hn&&"mb-12"),value:Tt,placeholder:Bn?"":Gn,onChange:e=>{Ut(e)},onKeyDown:e=>{Ve||jt||"Enter"===e.key&&(e.shiftKey||(e.preventDefault(),ft||Rt||(dt?js():Is())))},onPaste:e=>t(void 0,void 0,void 0,(function*(){const t=Array.from(e.clipboardData.files||[]);if(t.length>0){if(!Mn)return;e.preventDefault(),ze(!1),yield ht(t)}}))},re&&{onFocus:re},ce&&{onBlur:ce},{dir:He?"rtl":"ltr"})),n("div",Object.assign({ref:un,className:V("flex items-center gap-2 absolute z-2 transition-all duration-200 ease-in-out",Hn?"bottom-3 right-2":"right-0 top-1/2 -translate-y-1/2"),style:Object.assign(Object.assign({},!Hn&&Pn.backgroundColor&&{backgroundColor:Pn.backgroundColor}),{borderTopRightRadius:Be.cornerRadius+"px",borderBottomRightRadius:Be.cornerRadius+"px"})},{children:dt?s(o,{children:[n("button",Object.assign({"aria-label":(null==Ke?void 0:Ke["stop-response"])||"Stop response",className:"flex h-8 w-8 items-center justify-center rounded-full outline-none transition-colors duration-200 ease-in-out",onClick:()=>{const e=an.current;e&&(ys(e),bs(e)),ut("idle")},style:{backgroundColor:Xe.accent+"10",color:Xe.accent}},{children:n(U,{className:"h-4 w-4 shrink-0"})})),n("button",Object.assign({"aria-label":(null==Ke?void 0:Ke["queue-message"])||"Queue message",className:"flex h-8 w-8 items-center mr-2 justify-center rounded-full outline-none transition-colors duration-200 ease-in-out disabled:cursor-default",disabled:Rt||ft||!Tt.trim(),onClick:js,style:{backgroundColor:Tt.trim()?Xe.accent:Xe.accent+"10",color:Tt.trim()?Xe.accentText:Xe.accent+"80"}},{children:n(E,{className:V("h-6 w-6 shrink-0",He&&"scale-x-[-1] transform")})}))]}):bn?n("button",Object.assign({className:"flex h-8 w-8 items-center mr-2 justify-center rounded-full outline-none transition-colors duration-200 ease-in-out",onClick:In,style:{backgroundColor:Xe.accent,color:Xe.accentText}},{children:n(U,{className:"h-4 w-4 shrink-0"})})):s(o,{children:[Mn&&s("button",Object.assign({className:"flex h-8 w-8 items-center justify-center rounded-full outline-none transition-colors duration-200 ease-in-out disabled:cursor-default",style:{backgroundColor:Sn?Xe.accent+"10":void 0,color:Sn?Xe.accent:Xe.accent+"80"},disabled:ft||dt,onClick:()=>{var e;return null===(e=sn.current)||void 0===e?void 0:e.click()}},Cn,{children:[n("input",{id:"file-upload",ref:sn,type:"file",accept:[...O,...k,...N].join(", "),multiple:!0,hidden:!0,className:"hidden",onChange:e=>t(void 0,void 0,void 0,(function*(){ze(!1),yield ht(Array.from(e.target.files||[])),e.target.value=""}))}),n(C,{className:"h-6 w-6 shrink-0"})]})),$n&&n("button",Object.assign({className:"disabled:cursor-default flex h-8 w-8 items-center justify-center rounded-full outline-none transition-colors duration-200 ease-in-out",style:{backgroundColor:bn?Xe.accent:_n?Xe.accent+"10":void 0,color:bn?Xe.accentText:_n?Xe.accent:Xe.accent+"80"},disabled:ft||dt||yn,onClick:()=>{bn?In():(on.current=Tt,jn(Fe||"en-US"))}},Tn,{children:n(_,{className:"h-5 w-5 shrink-0"})})),n("button",Object.assign({className:"flex h-8 w-8 items-center mr-2 justify-center rounded-full outline-none transition-colors duration-200 ease-in-out disabled:cursor-default",style:{backgroundColor:On||hs?Xe.accent:Xe.accent+"10",color:On||hs?Xe.accentText:Xe.accent+"80"},disabled:!hs,onClick:()=>Is()},kn,{children:n(E,{className:V("h-6 w-6 shrink-0",He&&"scale-x-[-1] transform")})}))]})}))]}))]})),vt&&n(R,{error:vt,className:"mt-3"})]}))}))}));ce.displayName="Input";export{ce as default};
1
+ import{__rest as e,__awaiter as t}from"../../../_virtual/_tslib.js";import{jsx as n,jsxs as s,Fragment as o}from"react/jsx-runtime";import{updateStreamTextPart as i,upsertActionApprovalPart as r}from"../../../common/actionApproval.js";import{forwardRef as a,useState as l,useRef as d,useCallback as c,useEffect as u,useMemo as m,useImperativeHandle as p}from"react";import{usePickaxeContext as g}from"../../../hooks/pickaxe/usePickaxeContext.js";import{useResponseContext as f}from"../../../hooks/pickaxe/useResponseContext.js";import{useStyleInput as v}from"../../../hooks/studio/useStyleInput.js";import{useStyleFontSize as h}from"../../../hooks/studio/useStyleFontSize.js";import{useConversation as b}from"../../../hooks/pickaxe/useConversation.js";import{useDimensionContext as y}from"../../../hooks/pickaxe/useDimensionContext.js";import{useAuthContext as x}from"../Addons/Auth/hooks/useAuthContext.js";import{useDocument as j}from"../Addons/Document/hooks/useDocument.js";import{useScroll as I}from"../Addons/Scroll/hooks/useScroll.js";import{useArtifactContext as w}from"../Addons/Artifact/hooks/useArtifactContext.js";import{useHover as O}from"../../../hooks/core/useHover.js";import{useMediaQuery as k}from"../../../hooks/core/useMediaQuery.js";import{allowedFileMimeTypes as N,allowedImageMimeTypes as S,additionalAllowedFileExtensions as C}from"../../../common/documents.js";import{createParser as E}from"eventsource-parser";import _ from"../../Icons/attach-vertical.svg.js";import T from"../../Icons/arrow-right.svg.js";import U from"../../Icons/microphone.svg.js";import A from"../../Icons/message-clock.svg.js";import P from"../../Icons/stop.svg.js";import D from"../../Icons/trash.svg.js";import L from"../../Icons/pencil.svg.js";import R from"../Addons/Document/List.js";import M from"../../Core/Textarea.js";import $ from"../../Core/ErrorAlert.js";import B from"../../Core/Menu/index.js";import X from"../../Core/Menu/Button.js";import K from"../../Core/Menu/List.js";import F from"../../../common/error.js";import{pickaxeApi2 as V}from"../../../common/api/pickaxe.js";import{getValidationFailure as G}from"../../../common/validation.js";import H from"../../../common/cn.js";import{buildUpgradeUrl as W,openAuthenticatedPricingUrl as q,initializeEmbedUserId as J}from"../../../common/utils.js";import{getPickaxeConfigMetadata as z}from"../../../common/pickaxeConfig.js";import{readAgentPrefill as Q}from"../../../common/agentPrefill.js";import{fireDeploymentSessionInitializedWebhook as Y,fireDeploymentFirstMessageSubmittedWebhook as Z}from"../../../common/deploymentWebhooks.js";import{useStudio as ee}from"../../../hooks/studio/useStudio.js";import{useSpeechToText as te}from"../../../hooks/pickaxe/useSpeechToText.js";import{STUDIO_INFINITY_VALUE as ne}from"../common/PickaxeCommon.js";const se=(e,t)=>{const n=e.find((e=>e.id===t));return n?e.filter((e=>e.id!==t)).map((e=>e.predecessorSubmissionId===t?Object.assign(Object.assign({},e),{predecessorSubmissionId:n.predecessorSubmissionId}):e)):e},oe=e=>"string"==typeof e&&e.trim().length>0,ie=()=>"undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():`submission-${Date.now()}-${Math.random().toString(36).slice(2)}`,re=e=>e.map((e=>Object.assign({},e))),ae=e=>e instanceof Error&&("AbortError"===e.name||"BodyStreamBuffer was aborted"===e.message),le=(e,t)=>{if(e&&"object"==typeof e)return e[t]},de=(e,t)=>{const n=le(e,t);return oe(n)?n:null},ce=e=>{const t=Number(e);return Number.isFinite(t)?t:void 0},ue=({studioUser:e,deploymentId:t,portalId:n})=>{var s,o;const i=Array.isArray(le(e,"uses"))?le(e,"uses"):[],r=(({deploymentId:e,portalId:t})=>oe(e)?{type:"deployment",id:e}:oe(t)?{type:"portal",id:t}:null)({deploymentId:t,portalId:n});if(!r)return{scope:r,record:null};const a=null!==(o=null!==(s=i.find((e=>e.id===r.id&&e.type===r.type)))&&void 0!==s?s:i.find((e=>e.id===r.id)))&&void 0!==o?o:null;return{scope:r,record:a}},me=a((({resubmitPrompt:a,onFocus:le,onBlur:me,onInputHeightChange:pe,initSmitheryAuthData:ge},fe)=>{var ve,he,be,ye,xe,je,Ie,we,Oe,ke,Ne,Se,Ce,Ee,_e,Te,Ue;const{origin:Ae,pickaxeId:Pe,sessionId:De,sender:Le,senderType:Re,portalId:Me,deploymentId:$e,deploymentType:Be,pickaxe:Xe,styles:Ke,colors:Fe,translations:Ve,locale:Ge,forceMobile:He,isNewChat:We,isRtl:qe,isEmbed:Je,isShowFeedbackMessage:ze,accessGroup:Qe,setIsNewChat:Ye,setIsShowIceBreaker:Ze,setValidationStatus:et,setValidationUpgradeGroups:tt,setValidationUpgradeUrl:nt,setAccessGroup:st,onUpgrade:ot,onGenerateComplete:it}=g(),{token:rt,isLoggedOut:at,isSent:lt,isPricingAuth:dt}=x(),{messages:ct,isGenerating:ut,setMessages:mt,setStatus:pt,setLimitData:gt,setError:ft,setActionApprovalToken:vt}=f(),{documents:ht,isUploading:bt,documentError:yt,onFileUpload:xt,setDocuments:jt,setDocumentError:It}=j(),{studio:wt}=ee(),[Ot]=k("(max-width: 480px)"),{scrollStartSession:kt,scrollEndSession:Nt,scrollToBottom:St}=I({auto:!0,smooth:!(He||Ot)}),{artifacts:Ct,currentPopupType:Et,setArtifacts:_t,setCurrentArtifact:Tt}=w(),{height:Ut}=y(),At=b(),[Pt,Dt]=l((()=>Q([$e,Pe]).chatInput)),[Lt,Rt]=l(!1),[Mt,$t]=l(!1),[Bt,Xt]=l(!1),[Kt,Ft]=l([]),[Vt,Gt]=l(!1),[Ht,Wt]=l(null),[qt,Jt]=l(null),[zt,Qt]=l(null),[Yt,Zt]=l(null),[en,tn]=l(!1),[nn,sn]=l(!1),[on,rn]=l(0),an=d(null),ln=d(""),dn=d(null),cn=d(null),un=d(null),mn=d([]),pn=d(null),gn=d(null),fn=d(null),vn=d(null),hn=d(new Set),bn=d(null),yn=Math.max(.4*Ut,100),{speechTranscript:xn,isSpeechListening:jn,isSpeechProcessing:In,isSpeechSupported:wn,onStartListening:On,onStopListening:kn}=te(),Nn=O(),{isHover:Sn}=Nn,Cn=e(Nn,["isHover"]),En=O(),{isHover:_n}=En,Tn=e(En,["isHover"]),Un=O(),{isHover:An}=Un,Pn=e(Un,["isHover"]),Dn=h(),Ln=v(),Rn="undefined"!=typeof window?window.location.hostname:"",Mn="undefined"!=typeof window?window.location.href:"",$n="undefined"!=typeof window&&window.self!==window.top,Bn=Rn.includes("pickaxe.co")&&!Mn.includes("https://studio.pickaxe.co/_embed")&&!$n,Xn=null!==(he=null===(ve=null==Xe?void 0:Xe.documentuploadtype)||void 0===ve?void 0:ve.startsWith("enduserupload"))&&void 0!==he&&he,Kn=wn&&(null==Xe?void 0:Xe.enablevoicetotext),Fn=jn&&!Pt.trim(),Vn=oe($e),Gn="chat-input"===Be&&We&&!lt,Hn="chat-input"===Be&&dt&&at&&lt,Wn=c((e=>{const t=G(e);return!!t&&(ft(""),gt(null),et(t.status),st(t.accessGroup),tt(t.upgradeGroups),nt(t.upgradeUrl),!0)}),[ft,vt,gt,et,tt,nt,st]),qn=null!==(be=null==Xe?void 0:Xe.placeholdertext)&&void 0!==be?be:qe?"بماذا تريد أن تتحدث؟":(null==Ve?void 0:Ve["what-do-you-want-to-talk-about"])||"What do you want to talk about?",Jn=Lt||Mt,zn=c((()=>t(void 0,void 0,void 0,(function*(){tn(!1);try{const e=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/user`,Object.assign(Object.assign({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Object.assign({studioId:null==Xe?void 0:Xe.studioid},rt?{studioSessionToken:rt}:Le?{sender:Le}:{sender:J()}))},(!process.env.NODE_ENV||"development"===process.env.NODE_ENV)&&Object.assign({},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{headers:{"Content-Type":"application/json","x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN}})),Bn&&{credentials:"include"})),t=yield e.json();(null==t?void 0:t.studioUser)&&(Qt(t.studioUser),Zt(t.url))}catch(e){console.error("Failed to fetch studio user:",e)}finally{tn(!0)}}))),[Bn,null==Xe?void 0:Xe.studioid,Le,rt]);u((()=>{zn()}),[zn]);const Qn=Number(null!==(ye=null==Qe?void 0:Qe.limit)&&void 0!==ye?ye:0),Yn="string"==typeof(null==Qe?void 0:Qe.limitInterval)?Qe.limitInterval:null,Zn=!!(null==wt?void 0:wt.data.usage)&&wt.data.usage.isCredits,es=m((()=>{var e,t,n,s,o;return null!==(o=null!==(s=null!==(n=null!==(t=null!==(e=null!=Me?Me:de(zt,"portalId"))&&void 0!==e?e:de(zt,"portalid"))&&void 0!==t?t:de(Qe,"portalId"))&&void 0!==n?n:de(Qe,"portalid"))&&void 0!==s?s:de(Xe,"portalId"))&&void 0!==o?o:de(Xe,"portalid")}),[Qe,Me,Xe,zt]),ts=m((()=>ue({studioUser:zt,deploymentId:$e,portalId:es})),[$e,es,zt]);u((()=>{Vn&&We&&De&&hn.current.add(De)}),[We,De,Vn]);const ns=c((()=>{var e,t,n;return{studioId:null==Xe?void 0:Xe.studioid,userEmail:de(zt,"email"),userId:null!==(e=de(zt,"userId"))&&void 0!==e?e:de(zt,"userid"),sessionId:De,deploymentId:$e,deploymentType:Be,portalId:es,accessGroupId:null!==(t=null==Qe?void 0:Qe.accessGroupId)&&void 0!==t?t:null,pickaxeId:Pe,sender:Le,senderType:Re,origin:Ae,metadata:null!==(n=z($e))&&void 0!==n?n:null}}),[null==Qe?void 0:Qe.accessGroupId,$e,Be,Ae,null==Xe?void 0:Xe.studioid,Pe,es,Le,Re,De,zt]),ss=c((()=>!!(Vn&&en&&De)&&(!!hn.current.has(De)&&(Y(ns()),hn.current.delete(De),!0))),[ns,en,De,Vn]);u((()=>{if(!en||!De)return;ss();const e=bn.current;(null==e?void 0:e.sessionId)===De&&(Z(Object.assign(Object.assign(Object.assign({},e),ns()),{message:e.message,documentIds:e.documentIds,uploadedModelImages:e.uploadedModelImages,hasUploadedDocuments:e.hasUploadedDocuments,isHidden:e.isHidden})),bn.current=null)}),[ss,ns,en,De]);const os={currentUses:ce(null==zt?void 0:zt.currentUses),extraUses:ce(null==zt?void 0:zt.extraUses)},is=ts.scope?{currentUses:null!==(je=ce(null===(xe=ts.record)||void 0===xe?void 0:xe.currentUses))&&void 0!==je?je:0,extraUses:null!==(we=ce(null===(Ie=ts.record)||void 0===Ie?void 0:Ie.extraUses))&&void 0!==we?we:0}:{currentUses:0,extraUses:0},rs=de(zt,"type"),as="guest"===rs||!rs&&at?is:os;u((()=>{let e=!0;return t(void 0,void 0,void 0,(function*(){var t;if(Zn&&(null===(t=null==wt?void 0:wt.data)||void 0===t?void 0:t.workspaceId))try{const t=yield V.get(`/cost_per_run?workspaceId=${wt.data.workspaceId}`,{withCredentials:!1});e&&rn(1e4*(Number(t.data.costPerRun)||0))}catch(t){console.error("Failed to fetch average cost per run:",t),e&&rn(0)}else e&&rn(0)})),()=>{e=!1}}),[Zn,null===(Oe=null==wt?void 0:wt.data)||void 0===Oe?void 0:Oe.workspaceId]);const ls=(({currentUses:e,extraUses:t,limit:n,limitInterval:s})=>{const o=Number(null!=e?e:0),i=Number(null!=t?t:0);return n===ne||i===ne?ne:"one_time"===s?Math.max(0,i-o):Math.max(0,n-o)+i})({currentUses:as.currentUses,extraUses:as.extraUses,limit:Qn,limitInterval:Yn}),ds=ls===ne?ne:Math.max(0,Math.ceil(ls)),cs=(({extraUses:e,limit:t,limitInterval:n})=>{const s=Number(null!=e?e:0);return t===ne||s===ne?ne:"one_time"===n?Math.max(0,s):Math.max(0,t)+Math.max(0,s)})({extraUses:as.extraUses,limit:Qn,limitInterval:Yn}),us=cs===ne?ne:Math.ceil(.05*cs),ms=Zn?Math.ceil(5*on):5,ps=us===ne?ne:Math.max(us,ms),gs=m((()=>!!zt&&(!nn&&(ds!==ne&&ds<=ps))),[nn,ps,ds,zt]),fs=Boolean(null==Qe?void 0:Qe.hideUpgradeOptions),vs=Boolean(!fs&&((null===(ke=null==Qe?void 0:Qe.upgrade)||void 0===ke?void 0:ke.isBuyMoreUses)||(null===(Ne=null==Qe?void 0:Qe.upgrade)||void 0===Ne?void 0:Ne.isLinkToCustomURL)||(null===(Se=null==Qe?void 0:Qe.upgrade)||void 0===Se?void 0:Se.isUpgradeToAnotherGroup)&&(null===(Ce=Qe.upgrade.accessGroupIds)||void 0===Ce?void 0:Ce.length))),hs=!fs&&(null===(Ee=null==Qe?void 0:Qe.upgrade)||void 0===Ee?void 0:Ee.isLinkToCustomURL)&&"string"==typeof Qe.upgrade.limitLink&&Qe.upgrade.limitLink.trim().length>0?Qe.upgrade.limitLink.trim():null,bs=hs&&"string"==typeof(null===(_e=null==Qe?void 0:Qe.upgrade)||void 0===_e?void 0:_e.limitCTA)&&Qe.upgrade.limitCTA.trim().length>0?Qe.upgrade.limitCTA:(null==Ve?void 0:Ve["pricing.upgrade"])||(null==Ve?void 0:Ve.upgrade)||"Upgrade",ys=m((()=>{var e,t,n;return!!We&&(!!Xe&&(!At.isLoading&&(!((null!==(t=null===(e=At.data)||void 0===e?void 0:e.messages.length)&&void 0!==t?t:0)>1)&&(!!(null===(n=Xe.icebreakers)||void 0===n?void 0:n.length)&&(!ze&&!Gn)))))}),[Xe,We,ze,Gn,At.data,At.isLoading]),xs=m((()=>{if(bt||Bt)return!1;const e=Xn&&ht.length>0&&ht.every((e=>"finished"===e.status));return!(!Pt.trim()&&!e)&&ht.every((e=>"finished"===e.status||e.isInsertedAsRaw))}),[Xn,bt,Bt,Pt,ht]);p(fe,(()=>({onSubmit:ks}))),u((()=>{Ze(ys)}),[ys]),u((()=>{var e;if(a){const t=Array.from(ct),n=null===(e=t[t.length-2].parts.find((e=>"text"===e.type)))||void 0===e?void 0:e.content;ks(n,!0)}}),[a]),u((()=>{if(!fn.current||!pe)return;const e=new ResizeObserver((e=>{for(const t of e)pe(t.contentRect.height)}));return e.observe(fn.current),()=>{e.disconnect()}}),[pe]),u((()=>{if(!jn)return;const e=ln.current?`${ln.current} `:"";Dt(`${e}${xn}`)}),[xn,jn]),u((()=>{if(!pn.current)return;(()=>{if(!pn.current)return;let e=pn.current.scrollHeight>52;Pt.includes("\n")||ht.length?e=!0:Pt.trim()||(e=!1),Rt(e)})()}),[Pt,ht]),u((()=>{const e=pn.current,t=gn.current;if(!e||!t||Lt||Pt.includes("\n"))return void $t(!1);const n=window.getComputedStyle(e),s=`${n.fontStyle} ${n.fontVariant} ${n.fontWeight} ${n.fontSize} / ${n.lineHeight} ${n.fontFamily}`,o=document.createElement("span");Object.assign(o.style,{font:s,letterSpacing:n.letterSpacing,position:"absolute",visibility:"hidden",whiteSpace:"nowrap",top:"0",left:"0"}),o.textContent=Pt||qn,document.body.appendChild(o);const i=o.offsetWidth;o.remove();const r=parseFloat(n.paddingLeft)||0,a=parseFloat(n.paddingRight)||0,l=e.clientWidth-r-a-t.offsetWidth;$t(i>l)}),[Pt,Lt,qn]);const js=e=>t(void 0,void 0,void 0,(function*(){if(!(e=null!=e?e:cn.current))return!1;const t=re(mn.current);try{return(yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/cancel/${e}`,Object.assign({method:"POST",headers:Object.assign(Object.assign({"Content-Type":"application/json"},(!process.env.NODE_ENV||"development"===process.env.NODE_ENV)&&Object.assign({},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{"x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN})),{"x-request-sent-at":(new Date).toISOString()}),body:JSON.stringify({outputMessageParts:t})},Bn&&{credentials:"include"}))).ok}catch(e){return console.warn("Failed to cancel submission",e),!1}})),Is=e=>{un.current=e,vn.current&&(vn.current.abort(),vn.current=null),dn.current&&(dn.current.cancel().catch((()=>{})),dn.current=null)},ws=e=>t(void 0,void 0,void 0,(function*(){const t=Date.now()+3e4;for(;Date.now()<t;){try{const t=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/status/${e}`,Object.assign({headers:Object.assign({"Cache-Control":"no-cache"},(!process.env.NODE_ENV||"development"===process.env.NODE_ENV)&&Object.assign({},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{"x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN}))},Bn&&{credentials:"include"}));if(t.ok){if((yield t.json()).terminal)return!0}}catch(e){console.warn("Failed to read submission status",e)}yield new Promise((e=>setTimeout(e,250)))}return!1})),Os=()=>{const e=cn.current;e&&!Bt&&!bt&&Pt.trim()&&(Ft((t=>{var n,s;return[...t,{id:ie(),message:Pt,predecessorSubmissionId:null!==(s=null===(n=t[t.length-1])||void 0===n?void 0:n.id)&&void 0!==s?s:e}]})),Dt(""))},ks=(e,n=!1,s=!1,o)=>t(void 0,void 0,void 0,(function*(){var t,a,l,d,c;let u=null;try{if(ut&&!s||bt)return;const m=ht.filter((e=>"finished"===e.status&&!e.isInsertedAsRaw)),p=m.map((e=>e.documentId)).filter(Boolean),g=m.filter((e=>"image"===e.type)).map((e=>{const t=e.name.split(".").pop()||"";return{documentId:e.documentId,extension:t}})),f=null!=e?e:Pt,v=null!==(a=null===(t=null==Xe?void 0:Xe.documentuploadtype)||void 0===t?void 0:t.startsWith("enduserupload"))&&void 0!==a&&a&&p.length>0;if(!f&&!v)return;ft(""),It(""),gt(null),Dt(""),Ye(!1),pt("fetching"),kt(),St();const h=n?ct.slice(0,ct.length-1):ct,b=(e=>e.reduce(((e,t)=>Math.max(e,t.id)),0)+1)(h),y=b+(n?0:1),x={id:y,role:"assistant",parts:[],documentIds:[]},j=[...h,...n?[]:[{id:b,role:"user",parts:[{type:"text",content:f,isVisible:!0}],documentIds:v?p:[]}],x];mt(j),St(),v&&jt([]);const I=z($e),w=null!=o?o:ie();u=w,cn.current=w,un.current=null,mn.current=[];const O=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/submit`,Object.assign({method:"POST",body:JSON.stringify(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({supportsActionConfirmation:!0,origin:Ae,pickaxeId:Pe,sessionId:De,submissionId:w,senderType:Re,value:f},v&&{documentIds:p}),Le&&{sender:Le}),rt&&{studioSessionToken:rt}),!rt&&!Le&&{sender:J()}),es&&{portalId:es}),$e&&{deploymentId:$e}),I&&{metadata:I}),v&&g.length>0?{uploadedModelImages:g}:{})),headers:Object.assign(Object.assign({},(!process.env.NODE_ENV||"development"===process.env.NODE_ENV)&&Object.assign({},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{"x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN})),{"x-request-sent-at":(new Date).toISOString()})},Bn&&{credentials:"include"})),k=yield O.json();if(!k.success){if(k.limitData){const e=new Error(k.error||k.message||(null==Ve?void 0:Ve["failed-to-start-generation"])||"Failed to start generation");throw e.limitData=k.limitData,e}if(Wn(k))return;throw new Error(k.error||k.message||(null==Ve?void 0:Ve["failed-to-start-generation"])||"Failed to start generation")}vt(null!==(l=k.actionApprovalToken)&&void 0!==l?l:null);const N=null!==(d=k.submissionId)&&void 0!==d?d:w;u=N,cn.current=N;const S=()=>un.current===N;if(S())return;Vn&&We&&De&&hn.current.add(De);const C=Object.assign(Object.assign({},ns()),{message:f,documentIds:v?p:[],uploadedModelImages:v?g:[],hasUploadedDocuments:v,isHidden:n,metadata:null!=I?I:null});en?(ss(),Z(C)):bn.current=C,pt("streaming"),vn.current=new AbortController;const _=[];let T=[...null!=Ct?Ct:[]],U=0,A=!1,P="";for(;!A;)try{const e=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/stream/${N}?index=${U}`,{signal:null===(c=vn.current)||void 0===c?void 0:c.signal,headers:{"Cache-Control":"no-cache",Connection:"keep-alive"}});if(!e.body)throw new Error("No response body");const t=e.body.getReader();dn.current=t;const n=new TextDecoder,s=E({onEvent:e=>{var t,n;if(S())A=!0;else if(e.event&&"ping"!==e.event&&U++,"stop"!==e.event){if("error"===e.event){const t=JSON.parse(e.data);if(t.limitData)return gt(t.limitData),ft(""),void(A=!0);const n=t.error||t.message||(null==Ve?void 0:Ve["something-went-wrong"])||"Something went wrong.";return Wn(t)||ft(n),void(A=!0)}if("delta"===e.event){const s=JSON.parse(e.data);if("data-error"===s.type&&ge){const e=s.data.error;if("string"==typeof e){const t=/['"]type['"]\s*:\s*['"]unauthorized_smithery['"]/.test(e),n=/['"]type['"]\s*:\s*['"]unauthorized_composio['"]/.test(e);if(t){const t=e.match(/['"]qualifiedName['"]\s*:\s*['"]([^'"]+)['"]/),n=e.match(/['"]serverId['"]\s*:\s*['"]([^'"]+)['"]/),s=e.match(/['"]name['"]\s*:\s*['"]([^'"]+)['"]/);if(t&&t[1]&&n&&n[1]&&s&&s[1])throw A=!0,ge({provider:"smithery",smitheryId:t[1],serverId:n[1],name:s[1]}),new Error("STOP_STREAM")}else if(n){const t=e.match(/['"]toolkitSlug['"]\s*:\s*['"]([^'"]+)['"]/),n=e.match(/['"]serverId['"]\s*:\s*['"]([^'"]+)['"]/),s=e.match(/['"]name['"]\s*:\s*['"]([^'"]+)['"]/);if(t&&t[1]&&n&&n[1]&&s&&s[1])throw A=!0,ge({provider:"composio",toolkitSlug:t[1],serverId:n[1],name:s[1]}),new Error("STOP_STREAM")}}else if("object"==typeof e&&null!==e){const t=e;if("unauthorized_smithery"===t.type&&t.qualifiedName&&t.serverId&&t.name)throw A=!0,ge({provider:"smithery",smitheryId:t.qualifiedName,serverId:t.serverId,name:t.name}),new Error("STOP_STREAM");if("unauthorized_composio"===t.type&&t.toolkitSlug&&t.serverId&&t.name)throw A=!0,ge({provider:"composio",toolkitSlug:t.toolkitSlug,serverId:t.serverId,name:t.name}),new Error("STOP_STREAM")}}else if("text-start"===s.type)P="",_.push({type:"text",content:"",isVisible:null===(t=s.isVisible)||void 0===t||t});else if("text-delta"===s.type)P+=s.delta,i(_,"text",P);else if("text-end"===s.type)P="";else if("reasoning-start"===s.type)P="",_.push({type:"reasoning",content:"",isVisible:null===(n=s.isVisible)||void 0===n||n});else if("reasoning-delta"===s.type)P+=s.delta,i(_,"reasoning",P);else if("reasoning-end"===s.type)P="";else if(s.type.startsWith("data-")){const e=s;"data-action-approval"===e.type?r(_,e.data):_.push({type:e.type,content:JSON.stringify(e.data),isVisible:!0})}mn.current=re(_);const o=re(_);mt((e=>{const t=e.findIndex((e=>e.id===y)),n=Object.assign(Object.assign({},x),{parts:o});return-1===t?[...e,n]:e.map(((e,s)=>s===t?n:e))}))}else if("artifact_created"===e.event){const t=JSON.parse(e.data);T=T.filter((e=>!(e.id===t.id&&e.version===t.version))),T.push(Object.assign(Object.assign({},t),{content:"",status:"streaming"})),_t([...T]),Et.startsWith("inline")||Tt({id:t.id,version:t.version})}else if("artifact_updated"===e.event){const t=JSON.parse(e.data);T=T.filter((e=>!(e.id===t.id&&e.version===t.version))),T.push(Object.assign(Object.assign({},t),{content:"",status:"updating"})),_t(T),Et.startsWith("inline")||Tt({id:t.id,version:t.version})}else if("artifact_rewrite"===e.event){const t=JSON.parse(e.data);T=T.filter((e=>!(e.id===t.id&&e.version===t.version))),T.push(Object.assign(Object.assign({},t),{content:"",status:"streaming"})),_t(T),Et.startsWith("inline")||Tt({id:t.id,version:t.version})}else if("artifact_content"===e.event){const t=JSON.parse(e.data),n=t.token.replace(/\u200B/g,"");T=T.map((e=>e.id===t.id&&e.version===t.version?Object.assign(Object.assign({},e),{content:e.content+n,status:"streaming"}):e)),_t(T)}else if("artifact_finished"===e.event){const t=JSON.parse(e.data);_t(T.map((e=>e.id===t.id?Object.assign(Object.assign({},e),{status:"finished"}):e)))}else if("error"===e.event){const t=JSON.parse(e.data);if(t.limitData)return gt(t.limitData),ft(""),void(A=!0);const n=t.error||t.message||(null==Ve?void 0:Ve["something-went-wrong-try-again"])||"Something went wrong, please try again.";if(Wn(t))return void(A=!0);ft(n)}else"stop"===e.event&&(A=!0)}else A=!0}});for(;;){if(S()){A=!0,t.cancel().catch((()=>{}));break}const{value:e,done:o}=yield t.read();if(S()){A=!0,t.cancel().catch((()=>{}));break}if(o)break;s.feed(n.decode(e))}A||S()||(yield new Promise((e=>setTimeout(e,1e3))))}catch(e){if("STOP_STREAM"===e.message||ae(e)||S())return void(A=!0);console.warn("Stream connection lost, retrying...",e),yield new Promise((e=>setTimeout(e,1e3)))}null==it||it(De)}catch(e){if(ae(e))return;if(e.limitData)gt(e.limitData),ft("");else{let t=F(e)||"";t&&!t.includes("Unexpected token 'A',")||(t=(null==Ve?void 0:Ve["high-traffic-try-again-later"])||"Oops! We're experiencing high traffic at the moment. Please try again later."),Wn(t)||ft(t)}}finally{const e=!u||cn.current===u;St(),e&&(pt("idle"),Nt(),dn.current=null),u&&e&&(cn.current=null,mn.current=[]),yield zn()}}));return u((()=>{if(ut||Bt||Vt||0===Kt.length)return;const e=Kt[0];Gt(!0),Wt(e.id),t(void 0,void 0,void 0,(function*(){try{if(!(yield ws(e.predecessorSubmissionId)))return void ft((null==Ve?void 0:Ve["queued-message-waiting"])||"A queued message is waiting for the previous response to finish.");Ft((t=>t.filter((t=>t.id!==e.id)))),yield ks(e.message,!1,!0,e.id)}finally{Gt(!1),Wt(null)}}))}),[ut,Vt,Bt,Kt]),Hn?null:n("div",Object.assign({className:H("flex w-full flex-shrink-0 flex-col items-center",!Gn&&"px-4 pb-8"),dir:qe?"rtl":"ltr"},{children:s("div",Object.assign({className:"flex w-full max-w-[800px] flex-col"},{children:[Kt.length>0&&n("div",Object.assign({className:"mx-3 -mb-3 overflow-hidden border pb-3",style:{borderColor:Fe.text+"18",backgroundColor:null!==(Te=Ln.backgroundColor)&&void 0!==Te?Te:Fe.text+"08",color:Fe.text,borderTopLeftRadius:Math.max(Ke.cornerRadius-4,12),borderTopRightRadius:Math.max(Ke.cornerRadius-4,12)}},{children:Kt.map(((e,i)=>{var r;return s("div",Object.assign({className:"flex min-h-10 items-center gap-2 px-3 py-2",style:i<Kt.length-1?{borderBottom:`1px solid ${Fe.text}12`}:void 0},{children:[n(A,{className:"h-4 w-4 shrink-0 opacity-50","aria-hidden":"true"}),n("span",Object.assign({className:"min-w-0 flex-1 truncate text-sm",title:e.message},{children:e.message})),qt===e.id||Ht===e.id?s("span",Object.assign({className:"flex shrink-0 items-center gap-1.5 px-2 py-1 text-xs opacity-60","aria-live":"polite"},{children:[n("span",{className:"h-3 w-3 animate-spin rounded-full border border-current border-r-transparent","aria-hidden":"true"}),qt===e.id?(null==Ve?void 0:Ve.steering)||"Steering...":(null==Ve?void 0:Ve.starting)||"Starting..."]})):s(o,{children:[s("button",Object.assign({type:"button",className:"shrink-0 rounded-md px-2 py-1 text-xs font-medium opacity-70 transition-opacity hover:opacity-100 disabled:cursor-default disabled:opacity-40",disabled:Bt||!ut,onClick:()=>{(e=>{t(void 0,void 0,void 0,(function*(){const t=cn.current;if(!t||Bt)return;const n=Kt.findIndex((t=>t.id===e.id));if(-1===n)return;Xt(!0),Jt(e.id),ft(""),Is(t);let s=!1;try{if(!(yield js(t)))throw new Error((null==Ve?void 0:Ve["failed-to-interrupt-current-response"])||"Failed to interrupt the current response.");if(!(yield ws(t)))throw new Error((null==Ve?void 0:Ve["current-response-still-stopping"])||"The current response is still stopping. Please send your message again in a moment.");pt("idle"),Ft((t=>t.filter((t=>t.id!==e.id)))),s=!0,Xt(!1),Jt(null),yield ks(e.message,!1,!0,e.id)}catch(t){pt("idle"),s&&Ft((t=>{if(t.some((t=>t.id===e.id)))return t;const s=[...t];return s.splice(n,0,e),s})),ft(F(t))}finally{Xt(!1),Jt(null)}}))})(e)},"aria-label":`${(null==Ve?void 0:Ve["steer-with"])||"Steer with"}: ${e.message}`},{children:[n("span",Object.assign({"aria-hidden":"true"},{children:"↳ "})),(null==Ve?void 0:Ve.steer)||"Steer"]})),n("button",Object.assign({type:"button",className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md opacity-50 transition-opacity hover:opacity-100 disabled:cursor-default disabled:opacity-30",disabled:Bt,onClick:()=>{return t=e.id,void Ft((e=>se(e,t)));var t},"aria-label":`${(null==Ve?void 0:Ve["remove-queued-message"])||"Remove queued message"}: ${e.message}`},{children:n(D,{className:"h-4 w-4","aria-hidden":"true"})})),s(B,Object.assign({id:`queued-message-menu-${e.id}`,className:"shrink-0"},{children:[n(X,Object.assign({className:"flex h-7 w-7 items-center justify-center rounded-md opacity-50 transition-opacity hover:opacity-100",isDisabled:Bt,role:"button",tabIndex:Bt?-1:0,"aria-haspopup":"menu","aria-label":(null==Ve?void 0:Ve["more-options"])||"More options",onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.currentTarget.click())}},{children:s("svg",Object.assign({viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":"true"},{children:[n("circle",{cx:"5",cy:"12",r:"1.6"}),n("circle",{cx:"12",cy:"12",r:"1.6"}),n("circle",{cx:"19",cy:"12",r:"1.6"})]}))})),n(K,Object.assign({role:"menu",align:qe?"bottom-start":"bottom-end",positionStrategy:Je?"absolute":"fixed",width:"auto",className:"p-1 text-sm shadow-xl",style:{backgroundColor:null!==(r=Ln.backgroundColor)&&void 0!==r?r:Fe.primary,color:Fe.text,borderRadius:"12px"},border:`1px solid ${Fe.text}20`},{children:s("button",Object.assign({type:"button",role:"menuitem",className:"flex min-w-36 items-center gap-2 rounded-lg px-3 py-2 text-left transition-colors hover:bg-black/5 dark:hover:bg-white/10",onClick:()=>(e=>{Ft((t=>se(t,e.id))),Dt(e.message),requestAnimationFrame((()=>{const t=pn.current;t&&(t.focus(),t.setSelectionRange(e.message.length,e.message.length))}))})(e)},{children:[n(L,{className:"h-4 w-4 shrink-0"}),(null==Ve?void 0:Ve["edit-message"])||"Edit message"]}))}))]}))]})]}),e.id)}))})),s("div",Object.assign({ref:fn,className:H("relative z-10 flex flex-col w-full justify-end gap-y-3 py-[3px]","block"===Ke.formFieldStyle&&"shadow"),style:Object.assign(Object.assign({},Ln),{maxHeight:`${yn}px`,overflowY:"auto"})},{children:[gs&&s("div",Object.assign({className:"sticky top-0 z-10 flex w-full items-center justify-between border-b px-4 py-2.5 shadow-sm backdrop-blur-md",style:{backgroundColor:Ln.backgroundColor?`${Ln.backgroundColor}E6`:void 0,borderColor:Fe.text+"20",color:Fe.text,borderTopRightRadius:Ke.cornerRadius+"px",borderTopLeftRadius:Ke.cornerRadius+"px"}},{children:[n("div",Object.assign({className:"flex items-center gap-2 text-sm font-medium"},{children:s("span",{children:[ds.toLocaleString()," ",Zn?(null==Ve?void 0:Ve.credits)||"Credits":(null==Ve?void 0:Ve.uses)||"Uses"," ",(null==Ve?void 0:Ve.remaining)||"remaining"]})})),s("div",Object.assign({className:"flex items-center gap-3"},{children:[vs&&n("button",Object.assign({className:"rounded-md px-3 py-1.5 text-xs font-semibold transition-opacity hover:opacity-90",style:{backgroundColor:Fe.accent,color:Fe.accentText},onClick:e=>{if(e.preventDefault(),e.stopPropagation(),hs)return void window.open(hs,"_blank","noopener,noreferrer");if(ot)return void ot();const t=W({baseUrl:Yt,accessGroupId:null==Qe?void 0:Qe.accessGroupId});t&&q({deploymentId:$e,pricingUrl:t,studioId:null==Xe?void 0:Xe.studioid,studioSessionToken:rt})}},{children:bs})),n("button",Object.assign({className:"flex h-6 w-6 items-center justify-center rounded-full opacity-60 transition-opacity hover:opacity-100",onClick:()=>sn(!0)},{children:n("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor",className:"h-4 w-4"},{children:n("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}))}))]}))]})),!ut&&ht.length>0&&n(R,{className:"p-4 pb-0",isDisabled:ut}),s("div",Object.assign({className:"relative flex w-full flex-col"},{children:[Fn&&s("div",Object.assign({className:H("pointer-events-none absolute top-1/2 z-10 flex -translate-y-1/2 select-none items-center gap-x-2",qe?"right-4":"left-4")},{children:[n("span",{className:"h-2 w-2 animate-pulse rounded-full bg-c-secondary",style:{backgroundColor:null!==(Ue=Fe.accent)&&void 0!==Ue?Ue:"#ff0000"}}),n("span",Object.assign({className:"text-sm text-c-secondary font-semilight",style:{color:Fe.text+"90"}},{children:(null==Ve?void 0:Ve.listening)||"Listening..."}))]})),n(M,Object.assign({ref:pn,className:H(Dn.i1,"py-3.5 max-h-60 px-4 w-full border-transparent bg-transparent",!Pt.trim()&&!Pt.includes("\n")&&"overflow-hidden text-ellipsis whitespace-nowrap placeholder:whitespace-normal placeholder:overflow-visible",qe?"text-right":"text-left",Jn&&"mb-12"),value:Pt,placeholder:Fn?"":qn,onChange:e=>{Dt(e)},onKeyDown:e=>{He||Ot||"Enter"===e.key&&(e.shiftKey||(e.preventDefault(),bt||Bt||(ut?Os():ks())))},onPaste:e=>t(void 0,void 0,void 0,(function*(){const t=Array.from(e.clipboardData.files||[]);if(t.length>0){if(!Xn)return;e.preventDefault(),Ye(!1),yield xt(t)}}))},le&&{onFocus:le},me&&{onBlur:me},{dir:qe?"rtl":"ltr"})),n("div",Object.assign({ref:gn,className:H("flex items-center gap-2 absolute z-2 transition-all duration-200 ease-in-out",Jn?"bottom-3 right-2":"right-0 top-1/2 -translate-y-1/2"),style:Object.assign(Object.assign({},!Jn&&Ln.backgroundColor&&{backgroundColor:Ln.backgroundColor}),{borderTopRightRadius:Ke.cornerRadius+"px",borderBottomRightRadius:Ke.cornerRadius+"px"})},{children:ut?s(o,{children:[n("button",Object.assign({"aria-label":(null==Ve?void 0:Ve["stop-response"])||"Stop response",className:"flex h-8 w-8 items-center justify-center rounded-full outline-none transition-colors duration-200 ease-in-out",onClick:()=>{const e=cn.current;e&&(Is(e),js(e)),pt("idle")},style:{backgroundColor:Fe.accent+"10",color:Fe.accent}},{children:n(P,{className:"h-4 w-4 shrink-0"})})),n("button",Object.assign({"aria-label":(null==Ve?void 0:Ve["queue-message"])||"Queue message",className:"flex h-8 w-8 items-center mr-2 justify-center rounded-full outline-none transition-colors duration-200 ease-in-out disabled:cursor-default",disabled:Bt||bt||!Pt.trim(),onClick:Os,style:{backgroundColor:Pt.trim()?Fe.accent:Fe.accent+"10",color:Pt.trim()?Fe.accentText:Fe.accent+"80"}},{children:n(T,{className:H("h-6 w-6 shrink-0",qe&&"scale-x-[-1] transform")})}))]}):jn?n("button",Object.assign({className:"flex h-8 w-8 items-center mr-2 justify-center rounded-full outline-none transition-colors duration-200 ease-in-out",onClick:kn,style:{backgroundColor:Fe.accent,color:Fe.accentText}},{children:n(P,{className:"h-4 w-4 shrink-0"})})):s(o,{children:[Xn&&s("button",Object.assign({className:"flex h-8 w-8 items-center justify-center rounded-full outline-none transition-colors duration-200 ease-in-out disabled:cursor-default",style:{backgroundColor:_n?Fe.accent+"10":void 0,color:_n?Fe.accent:Fe.accent+"80"},disabled:bt||ut,onClick:()=>{var e;return null===(e=an.current)||void 0===e?void 0:e.click()}},Tn,{children:[n("input",{id:"file-upload",ref:an,type:"file",accept:[...N,...S,...C].join(", "),multiple:!0,hidden:!0,className:"hidden",onChange:e=>t(void 0,void 0,void 0,(function*(){Ye(!1),yield xt(Array.from(e.target.files||[])),e.target.value=""}))}),n(_,{className:"h-6 w-6 shrink-0"})]})),Kn&&n("button",Object.assign({className:"disabled:cursor-default flex h-8 w-8 items-center justify-center rounded-full outline-none transition-colors duration-200 ease-in-out",style:{backgroundColor:jn?Fe.accent:An?Fe.accent+"10":void 0,color:jn?Fe.accentText:An?Fe.accent:Fe.accent+"80"},disabled:bt||ut||In,onClick:()=>{jn?kn():(ln.current=Pt,On(Ge||"en-US"))}},Pn,{children:n(U,{className:"h-5 w-5 shrink-0"})})),n("button",Object.assign({className:"flex h-8 w-8 items-center mr-2 justify-center rounded-full outline-none transition-colors duration-200 ease-in-out disabled:cursor-default",style:{backgroundColor:Sn||xs?Fe.accent:Fe.accent+"10",color:Sn||xs?Fe.accentText:Fe.accent+"80"},disabled:!xs,onClick:()=>ks()},Cn,{children:n(T,{className:H("h-6 w-6 shrink-0",qe&&"scale-x-[-1] transform")})}))]})}))]}))]})),yt&&n($,{error:yt,className:"mt-3"})]}))}))}));me.displayName="Input";export{me as default};
@@ -1 +1 @@
1
- import{__awaiter as e}from"../../../../_virtual/_tslib.js";import{jsxs as t,jsx as s}from"react/jsx-runtime";import{useState as n,useRef as i,useMemo as o}from"react";import{usePickaxeContext as r}from"../../../../hooks/pickaxe/usePickaxeContext.js";import{useAuthContext as a}from"../../Addons/Auth/hooks/useAuthContext.js";import{useResponseContext as l}from"../../../../hooks/pickaxe/useResponseContext.js";import{useDocument as d}from"../../Addons/Document/hooks/useDocument.js";import{useScroll as c}from"../../Addons/Scroll/hooks/useScroll.js";import{useArtifactContext as u}from"../../Addons/Artifact/hooks/useArtifactContext.js";import{extractUrlsFromText as p,initializeEmbedUserId as m}from"../../../../common/utils.js";import{encode as f}from"@nem035/gpt-3-encoder";import{createParser as g}from"eventsource-parser";import v from"../../common/PickaxeBranding.js";import h from"../../common/PickaxeButton.js";import b from"../../../../common/error.js";import{getValidationFailure as y}from"../../../../common/validation.js";const j=({questions:j,resetQuestions:O})=>{var x;const{origin:w,pickaxeId:I,sender:S,senderType:k,portalId:C,deploymentId:E,pickaxe:N,misc:A,translations:P,isRtl:_,setSessionId:T,setIsNewChat:D,setValidationStatus:U,setValidationUpgradeGroups:L,setValidationUpgradeUrl:q,setAccessGroup:B,onGenerateComplete:J}=r(),{token:K}=a(),{isGenerating:R,setResponse:V,setMessages:W,setStatus:X,setLimitData:G,setError:$,setIsSwitchedToChat:F}=l(),{documents:M,websiteLink:Q,isUploading:Y,onWebsiteUpload:z,setDocuments:H,setDocumentError:Z}=d(),{scrollStartSession:ee,scrollEndSession:te,scrollToTarget:se}=c({auto:!(null==N?void 0:N.enablechatresponses)}),{artifacts:ne,currentPopupType:ie,setArtifacts:oe,setCurrentArtifact:re}=u(),[ae,le]=n(!1),de=i(null),ce=e=>{const t=y(e);return!!t&&($(""),G(null),U(t.status),B(t.accessGroup),L(t.upgradeGroups),q(t.upgradeUrl),!0)},ue=o((()=>j.some((e=>("Short Answer"===e.type||"Long Answer"===e.type||"long"===e.type||"short"===e.type||"Checkbox"===e.type||"Knowledge Upload"===e.type||e.id.includes("documentupload"))&&e.input.length>0))),[j]);return t("div",Object.assign({className:"mt-4 flex flex-wrap justify-between gap-4 items-center",dir:_?"rtl":"ltr"},{children:[t("div",Object.assign({className:"flex items-center flex-grow flex-wrap gap-2"},{children:[s(h,Object.assign({className:"px-5 min-h-[42px]",isDisabled:Y||R||ae,onClick:()=>e(void 0,void 0,void 0,(function*(){var e,t,s;try{if(R||Y||ae)return;$(""),Z(""),G(null),V(null);const n=["Multiple Choice","Checkbox"];for(const e of j){if(f(e.input).length>e.maxLength&&!n.includes(e.type))throw new Error((null==P?void 0:P["response-too-long"])||"One or more of your responses is too long!");if(e.isRequired&&!e.input.trim()&&"userinput:documentupload"!==e.id)throw new Error((null==P?void 0:P["required-fields-missing"])||"You must fill out all required fields.")}const i=M.filter((e=>"finished"===e.status)),o=M.map((e=>e.name)),r=null!==(t=null===(e=null==N?void 0:N.documentuploadtype)||void 0===e?void 0:e.startsWith("enduserupload"))&&void 0!==t&&t,a=j.some((e=>"userinput:documentupload"===e.id&&e.isRequired)),l=p(Q).filter((e=>!o.includes(e)));if(l.length){const e=l[l.length-1];le(!0);const t=yield z(e);t&&(i.push(t),yield new Promise((e=>setTimeout(e,5e3)))),le(!1)}else if(a&&r&&!i.length)return void Z((null==P?void 0:P["document-upload-required"])||"Please paste a valid website/video link or drag a file to add to the knowledge base.");const d=i.map((e=>e.documentId||"")).filter(Boolean),c=r&&d.length>0,u={};j.forEach((e=>{u[e.id]="Knowledge Upload"===e.type||e.id.includes("documentupload")?i.map((e=>e.name)).join(",")||"":e.input})),X("fetching"),ee(),se();const v=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/submit`,{method:"POST",headers:Object.assign(Object.assign({"Content-Type":"application/json"},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{"x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN}),{"x-request-sent-at":(new Date).toISOString()}),body:JSON.stringify(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({origin:w,pickaxeId:I,senderType:k,valueObj:u},c&&{documentIds:d}),S&&{sender:S}),K&&{studioSessionToken:K}),!K&&!S&&{sender:m()}),C&&{portalId:C}),E&&{deploymentId:E}))}),h=yield v.json();if(!h.success){const e=new Error(h.error||h.message||(null==P?void 0:P["failed-to-start-generation"])||"Failed to start generation");if(h.limitData)throw e.limitData=h.limitData,e;if(ce(h))return;throw e}if(!h.submissionId||!h.sessionId)throw new Error((null==P?void 0:P["failed-to-start-generation"])||"Failed to start generation");const b=h.submissionId,y=h.sessionId,O={sessionId:y,documentIds:c?d:[],question:{inputs:j.map((e=>({id:e.id,question:e.main,answer:e.input}))),responseParts:[]},messageCount:0,sentAt:new Date};V(O),(null==N?void 0:N.enablechatresponses)&&(T(y),D(!1),F(!0),W([{id:0,role:"assistant",parts:[],documentIds:[]}])),c&&H([]),X("streaming"),de.current=new AbortController;const x=[];let A=[...null!=ne?ne:[]],_=0,U=!1,L="";for(;!U;)try{const e=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/stream/${b}?index=${_}`,{signal:null===(s=de.current)||void 0===s?void 0:s.signal,headers:{"Cache-Control":"no-cache",Connection:"keep-alive"}});if(!e.body)throw new Error("No response body");const t=e.body.getReader(),n=new TextDecoder,i=g({onEvent:e=>{var t,s;if(e.event&&"ping"!==e.event&&_++,"stop"!==e.event){if("error"===e.event){const t=JSON.parse(e.data);if(t.limitData)return G(t.limitData),$(""),void(U=!0);const s=t.error||t.message||(null==P?void 0:P["something-went-wrong"])||"Something went wrong.";return ce(t)||$(s),void(U=!0)}if("delta"===e.event){const n=JSON.parse(e.data);if("text-start"===n.type)L="",x.push({type:"text",content:"",isVisible:null===(t=n.isVisible)||void 0===t||t});else if("text-delta"===n.type)L+=n.delta,x[x.length-1].content=L;else if("text-end"===n.type)L="";else if("reasoning-start"===n.type)L="",x.push({type:"reasoning",content:"",isVisible:null===(s=n.isVisible)||void 0===s||s});else if("reasoning-delta"===n.type)L+=n.delta,x[x.length-1].content=L;else if("reasoning-end"===n.type)L="";else if(n.type.startsWith("data-")){const e=n;x.push({type:e.type,content:JSON.stringify(e.data),isVisible:!0})}const i=Object.assign(Object.assign({},O),{question:Object.assign(Object.assign({},O.question),{responseParts:[...x]})});V(i),(null==N?void 0:N.enablechatresponses)&&W([{id:0,role:"assistant",parts:[...x],documentIds:[]}])}else if("artifact_created"===e.event){const t=JSON.parse(e.data);A=A.filter((e=>!(e.id===t.id&&e.version===t.version))),A.push(Object.assign(Object.assign({},t),{content:"",status:"streaming"})),oe([...A]),ie.startsWith("inline")||re({id:t.id,version:t.version})}else if("artifact_updated"===e.event){const t=JSON.parse(e.data);A=A.filter((e=>!(e.id===t.id&&e.version===t.version))),A.push(Object.assign(Object.assign({},t),{content:"",status:"updating"})),oe([...A]),ie.startsWith("inline")||re({id:t.id,version:t.version})}else if("artifact_rewrite"===e.event){const t=JSON.parse(e.data);A=A.filter((e=>!(e.id===t.id&&e.version===t.version))),A.push(Object.assign(Object.assign({},t),{content:"",status:"streaming"})),oe([...A]),ie.startsWith("inline")||re({id:t.id,version:t.version})}else if("artifact_content"===e.event){const t=JSON.parse(e.data),s=t.token.replace(/\u200B/g,"");A=A.map((e=>e.id===t.id&&e.version===t.version?Object.assign(Object.assign({},e),{content:e.content+s,status:"streaming"}):e)),oe([...A])}else if("artifact_finished"===e.event){const t=JSON.parse(e.data);oe(A.map((e=>e.id===t.id?Object.assign(Object.assign({},e),{status:"finished"}):e)))}}else U=!0}});for(;;){const{value:e,done:s}=yield t.read();if(s)break;i.feed(n.decode(e))}U||(yield new Promise((e=>setTimeout(e,1e3))))}catch(e){if(e instanceof Error&&"AbortError"===e.name)return void(U=!0);console.warn("Stream connection lost, retrying...",e),yield new Promise((e=>setTimeout(e,1e3)))}null==J||J(y)}catch(e){if((e=>e instanceof Error&&Boolean(e.limitData))(e))return G(e.limitData),$(""),void se();let t=b(e)||"";t&&!t.includes("Unexpected token 'A',")||(t=(null==P?void 0:P["high-traffic-try-again-later"])||"Oops! We're experiencing high traffic at the moment. Please try again later."),ce(t)||$(t),se()}finally{X("idle"),le(!1),te()}}))},{children:ae?(null==P?void 0:P.processing)||"Processing...":Y?(null==P?void 0:P.uploading)||"Uploading...":R?(null==P?void 0:P.loading)||"Loading...":null!==(x=null==N?void 0:N.submittext)&&void 0!==x?x:"Submit"})),ue&&s(h,Object.assign({variant:"transparent-text",className:"min-h-[42px] px-5",isDisabled:Y||R||ae,onClick:O},{children:(null==P?void 0:P["form.clear-form"])||(null==P?void 0:P["clear-form"])||"Clear form"}))]})),!A.isWhiteLabel&&s(v,{containerClassName:"justify-end"})]}))};export{j as default};
1
+ import{__awaiter as e}from"../../../../_virtual/_tslib.js";import{jsxs as t,jsx as s}from"react/jsx-runtime";import{updateStreamTextPart as n,upsertActionApprovalPart as i}from"../../../../common/actionApproval.js";import{useState as o,useRef as r,useMemo as a}from"react";import{usePickaxeContext as l}from"../../../../hooks/pickaxe/usePickaxeContext.js";import{useAuthContext as d}from"../../Addons/Auth/hooks/useAuthContext.js";import{useResponseContext as c}from"../../../../hooks/pickaxe/useResponseContext.js";import{useDocument as u}from"../../Addons/Document/hooks/useDocument.js";import{useScroll as p}from"../../Addons/Scroll/hooks/useScroll.js";import{useArtifactContext as m}from"../../Addons/Artifact/hooks/useArtifactContext.js";import{extractUrlsFromText as f,initializeEmbedUserId as g}from"../../../../common/utils.js";import{encode as v}from"@nem035/gpt-3-encoder";import{createParser as h}from"eventsource-parser";import b from"../../common/PickaxeBranding.js";import y from"../../common/PickaxeButton.js";import j from"../../../../common/error.js";import{getValidationFailure as O}from"../../../../common/validation.js";const x=({questions:x,resetQuestions:w})=>{var I;const{origin:S,pickaxeId:k,sender:C,senderType:A,portalId:E,deploymentId:N,pickaxe:P,misc:_,translations:T,isRtl:D,setSessionId:U,setIsNewChat:L,setValidationStatus:q,setValidationUpgradeGroups:B,setValidationUpgradeUrl:J,setAccessGroup:K,onGenerateComplete:R}=l(),{token:V}=d(),{isGenerating:W,setResponse:X,setMessages:G,setStatus:$,setLimitData:F,setError:M,setActionApprovalToken:Q,setIsSwitchedToChat:Y}=c(),{documents:z,websiteLink:H,isUploading:Z,onWebsiteUpload:ee,setDocuments:te,setDocumentError:se}=u(),{scrollStartSession:ne,scrollEndSession:ie,scrollToTarget:oe}=p({auto:!(null==P?void 0:P.enablechatresponses)}),{artifacts:re,currentPopupType:ae,setArtifacts:le,setCurrentArtifact:de}=m(),[ce,ue]=o(!1),pe=r(null),me=e=>{const t=O(e);return!!t&&(M(""),F(null),q(t.status),K(t.accessGroup),B(t.upgradeGroups),J(t.upgradeUrl),!0)},fe=a((()=>x.some((e=>("Short Answer"===e.type||"Long Answer"===e.type||"long"===e.type||"short"===e.type||"Checkbox"===e.type||"Knowledge Upload"===e.type||e.id.includes("documentupload"))&&e.input.length>0))),[x]);return t("div",Object.assign({className:"mt-4 flex flex-wrap justify-between gap-4 items-center",dir:D?"rtl":"ltr"},{children:[t("div",Object.assign({className:"flex items-center flex-grow flex-wrap gap-2"},{children:[s(y,Object.assign({className:"px-5 min-h-[42px]",isDisabled:Z||W||ce,onClick:()=>e(void 0,void 0,void 0,(function*(){var e,t,s,o;try{if(W||Z||ce)return;M(""),se(""),F(null),X(null);const r=["Multiple Choice","Checkbox"];for(const e of x){if(v(e.input).length>e.maxLength&&!r.includes(e.type))throw new Error((null==T?void 0:T["response-too-long"])||"One or more of your responses is too long!");if(e.isRequired&&!e.input.trim()&&"userinput:documentupload"!==e.id)throw new Error((null==T?void 0:T["required-fields-missing"])||"You must fill out all required fields.")}const a=z.filter((e=>"finished"===e.status)),l=z.map((e=>e.name)),d=null!==(t=null===(e=null==P?void 0:P.documentuploadtype)||void 0===e?void 0:e.startsWith("enduserupload"))&&void 0!==t&&t,c=x.some((e=>"userinput:documentupload"===e.id&&e.isRequired)),u=f(H).filter((e=>!l.includes(e)));if(u.length){const e=u[u.length-1];ue(!0);const t=yield ee(e);t&&(a.push(t),yield new Promise((e=>setTimeout(e,5e3)))),ue(!1)}else if(c&&d&&!a.length)return void se((null==T?void 0:T["document-upload-required"])||"Please paste a valid website/video link or drag a file to add to the knowledge base.");const p=a.map((e=>e.documentId||"")).filter(Boolean),m=d&&p.length>0,b={};x.forEach((e=>{b[e.id]="Knowledge Upload"===e.type||e.id.includes("documentupload")?a.map((e=>e.name)).join(",")||"":e.input})),$("fetching"),ne(),oe();const y=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/submit`,{method:"POST",headers:Object.assign(Object.assign({"Content-Type":"application/json"},process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN&&{"x-pickaxe-session-token":process.env.NEXT_PUBLIC_PICKAXE_SESSION_TOKEN}),{"x-request-sent-at":(new Date).toISOString()}),body:JSON.stringify(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({supportsActionConfirmation:!0,origin:S,pickaxeId:k,senderType:A,valueObj:b},m&&{documentIds:p}),C&&{sender:C}),V&&{studioSessionToken:V}),!V&&!C&&{sender:g()}),E&&{portalId:E}),N&&{deploymentId:N}))}),j=yield y.json();if(!j.success){const e=new Error(j.error||j.message||(null==T?void 0:T["failed-to-start-generation"])||"Failed to start generation");if(j.limitData)throw e.limitData=j.limitData,e;if(me(j))return;throw e}if(!j.submissionId||!j.sessionId)throw new Error((null==T?void 0:T["failed-to-start-generation"])||"Failed to start generation");Q(null!==(s=j.actionApprovalToken)&&void 0!==s?s:null);const O=j.submissionId,w=j.sessionId,I={sessionId:w,documentIds:m?p:[],question:{inputs:x.map((e=>({id:e.id,question:e.main,answer:e.input}))),responseParts:[]},messageCount:0,sentAt:new Date};X(I),(null==P?void 0:P.enablechatresponses)&&(U(w),L(!1),Y(!0),G([{id:0,role:"assistant",parts:[],documentIds:[]}])),m&&te([]),$("streaming"),pe.current=new AbortController;const _=[];let D=[...null!=re?re:[]],q=0,B=!1,J="";for(;!B;)try{const e=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/stream/${O}?index=${q}`,{signal:null===(o=pe.current)||void 0===o?void 0:o.signal,headers:{"Cache-Control":"no-cache",Connection:"keep-alive"}});if(!e.body)throw new Error("No response body");const t=e.body.getReader(),s=new TextDecoder,r=h({onEvent:e=>{var t,s;if(e.event&&"ping"!==e.event&&q++,"stop"!==e.event){if("error"===e.event){const t=JSON.parse(e.data);if(t.limitData)return F(t.limitData),M(""),void(B=!0);const s=t.error||t.message||(null==T?void 0:T["something-went-wrong"])||"Something went wrong.";return me(t)||M(s),void(B=!0)}if("delta"===e.event){const o=JSON.parse(e.data);if("text-start"===o.type)J="",_.push({type:"text",content:"",isVisible:null===(t=o.isVisible)||void 0===t||t});else if("text-delta"===o.type)J+=o.delta,n(_,"text",J);else if("text-end"===o.type)J="";else if("reasoning-start"===o.type)J="",_.push({type:"reasoning",content:"",isVisible:null===(s=o.isVisible)||void 0===s||s});else if("reasoning-delta"===o.type)J+=o.delta,n(_,"reasoning",J);else if("reasoning-end"===o.type)J="";else if(o.type.startsWith("data-")){const e=o;"data-action-approval"===e.type?i(_,e.data):_.push({type:e.type,content:JSON.stringify(e.data),isVisible:!0})}const r=Object.assign(Object.assign({},I),{question:Object.assign(Object.assign({},I.question),{responseParts:[..._]})});X(r),(null==P?void 0:P.enablechatresponses)&&G([{id:0,role:"assistant",parts:[..._],documentIds:[]}])}else if("artifact_created"===e.event){const t=JSON.parse(e.data);D=D.filter((e=>!(e.id===t.id&&e.version===t.version))),D.push(Object.assign(Object.assign({},t),{content:"",status:"streaming"})),le([...D]),ae.startsWith("inline")||de({id:t.id,version:t.version})}else if("artifact_updated"===e.event){const t=JSON.parse(e.data);D=D.filter((e=>!(e.id===t.id&&e.version===t.version))),D.push(Object.assign(Object.assign({},t),{content:"",status:"updating"})),le([...D]),ae.startsWith("inline")||de({id:t.id,version:t.version})}else if("artifact_rewrite"===e.event){const t=JSON.parse(e.data);D=D.filter((e=>!(e.id===t.id&&e.version===t.version))),D.push(Object.assign(Object.assign({},t),{content:"",status:"streaming"})),le([...D]),ae.startsWith("inline")||de({id:t.id,version:t.version})}else if("artifact_content"===e.event){const t=JSON.parse(e.data),s=t.token.replace(/\u200B/g,"");D=D.map((e=>e.id===t.id&&e.version===t.version?Object.assign(Object.assign({},e),{content:e.content+s,status:"streaming"}):e)),le([...D])}else if("artifact_finished"===e.event){const t=JSON.parse(e.data);le(D.map((e=>e.id===t.id?Object.assign(Object.assign({},e),{status:"finished"}):e)))}}else B=!0}});for(;;){const{value:e,done:n}=yield t.read();if(n)break;r.feed(s.decode(e))}B||(yield new Promise((e=>setTimeout(e,1e3))))}catch(e){if(e instanceof Error&&"AbortError"===e.name)return void(B=!0);console.warn("Stream connection lost, retrying...",e),yield new Promise((e=>setTimeout(e,1e3)))}null==R||R(w)}catch(e){if((e=>e instanceof Error&&Boolean(e.limitData))(e))return F(e.limitData),M(""),void oe();let t=j(e)||"";t&&!t.includes("Unexpected token 'A',")||(t=(null==T?void 0:T["high-traffic-try-again-later"])||"Oops! We're experiencing high traffic at the moment. Please try again later."),me(t)||M(t),oe()}finally{$("idle"),ue(!1),ie()}}))},{children:ce?(null==T?void 0:T.processing)||"Processing...":Z?(null==T?void 0:T.uploading)||"Uploading...":W?(null==T?void 0:T.loading)||"Loading...":null!==(I=null==P?void 0:P.submittext)&&void 0!==I?I:"Submit"})),fe&&s(y,Object.assign({variant:"transparent-text",className:"min-h-[42px] px-5",isDisabled:Z||W||ce,onClick:w},{children:(null==T?void 0:T["form.clear-form"])||(null==T?void 0:T["clear-form"])||"Clear form"}))]})),!_.isWhiteLabel&&s(b,{containerClassName:"justify-end"})]}))};export{x as default};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as t,useState as s}from"react";const i=t({}),r=({limits:t,children:r})=>{const[a,n]=s("idle"),[o,m]=s([]),[c,l]=s(null),[u,d]=s(null),[h,g]=s(!1),[p,f]=s(!1),[G,L]=s("");return e(i.Provider,Object.assign({value:{messages:o,response:c,status:a,limits:t,limitData:u,error:G,isGenerating:"fetching"===a||"streaming"===a,isGuestLimitReached:h,isSwitchedToChat:p,setMessages:m,setResponse:l,setStatus:n,setLimitData:d,setError:L,setIsGuestLimitReached:g,setIsSwitchedToChat:f}},{children:r}))};export{i as ResponseContext,r as default};
1
+ import{jsx as e}from"react/jsx-runtime";import{useActionApprovals as t}from"../../hooks/pickaxe/useActionApprovals.js";import{createContext as s,useState as i}from"react";const r=s({}),a=({limits:s,children:a})=>{const[o,n]=i("idle"),c=t("streaming"===o),[m,l]=i([]),[p,u]=i(null),[h,d]=i(null),[g,f]=i(!1),[v,A]=i(!1),[k,T]=i("");return e(r.Provider,Object.assign({value:{messages:m,response:p,status:o,limits:s,limitData:h,error:k,isGenerating:"fetching"===o||"streaming"===o,isGuestLimitReached:g,isSwitchedToChat:v,setMessages:l,setResponse:u,setStatus:n,setLimitData:d,setError:T,setActionApprovalToken:c.setToken,actionApproval:c,setIsGuestLimitReached:f,setIsSwitchedToChat:A}},{children:a}))};export{r as ResponseContext,a as default};
@@ -0,0 +1 @@
1
+ import{jsxs as e,jsx as n}from"react/jsx-runtime";import{parseActionApproval as i}from"../../../../common/actionApproval.js";function t({content:t,isStreaming:s=!1,approval:a}){var r;const o=i(t);if(!o)return null;const l=null!==(r=null==a?void 0:a.decisions[o.id])&&void 0!==r?r:o.status,d="pending"===l&&s&&(null==a?void 0:a.enabled)&&1e3*o.expiresAt>Date.now(),c=Boolean(null==a?void 0:a.busyId),p="pending"===l?d?"Confirmation needed":"Confirmation unavailable":{approved:"Approved",declined:"Declined",expired:"Expired",cancelled:"Not run"}[l];let m=o.arguments;try{m&&(m=JSON.stringify(JSON.parse(m),null,2))}catch(e){}return e("section",Object.assign({"aria-label":`Action: ${o.name}`,className:"my-2 w-full min-w-0 rounded-xl border p-4 text-sm",style:{borderColor:"color-mix(in srgb, currentColor 20%, transparent)"}},{children:[e("div",Object.assign({className:"flex flex-wrap items-center justify-between gap-2"},{children:[n("span",Object.assign({className:"break-words font-semibold"},{children:o.name})),n("span",Object.assign({role:"status",className:"rounded-full border px-2 py-0.5 text-xs"},{children:p}))]})),d&&n("p",Object.assign({className:"mt-2 opacity-70"},{children:"Review this action before it runs. Your decision applies only to this call."})),m&&e("details",Object.assign({className:"mt-3",open:"pending"===l},{children:[n("summary",Object.assign({className:"cursor-pointer text-xs font-medium"},{children:"Action inputs"})),n("pre",Object.assign({className:"mt-2 max-h-64 overflow-auto whitespace-pre-wrap break-words rounded-lg bg-black/5 p-3 text-xs"},{children:m}))]})),d&&e("div",Object.assign({className:"mt-4 flex flex-wrap justify-end gap-2"},{children:[n("button",Object.assign({type:"button",className:"rounded-lg border px-3 py-2 font-semibold transition-opacity hover:opacity-70 disabled:opacity-50",disabled:c,onClick:()=>{null==a||a.decide(o.id,"declined")}},{children:"Decline"})),n("button",Object.assign({type:"button",className:"rounded-lg border px-3 py-2 font-semibold transition-opacity hover:opacity-70 disabled:opacity-50",disabled:c,onClick:()=>{null==a||a.decide(o.id,"approved")}},{children:"Approve action"}))]})),(null==a?void 0:a.errors[o.id])&&n("p",Object.assign({role:"alert",className:"mt-2 text-xs"},{children:a.errors[o.id]}))]}))}export{t as ActionApprovalPart};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{useRef as t,Suspense as n,lazy as i}from"react";import{PickaxeMarkdownRenderer as s}from"../PickaxeMarkdown/Renderer.js";import o,{isGeneratedFileUrl as r,normalizeMarkdownUrl as a,getFilePreviewInfo as l,shouldSuppressRichPreviewForUrl as c,shouldRenderFilePreview as p}from"../PickaxeMarkdown/Components/A/FilePreview.js";import{safeJSONParse as u}from"../../../../common/utils.js";import d from"../../../../common/cn.js";const m=i((()=>import("./TextPart/index.js"))),f=i((()=>import("./ReasoningPart/index.js"))),v=i((()=>import("./ActionToolCaptionPart/index.js"))),g=i((()=>import("./ReasoningCaptionPart/index.js"))),w=/(!?)\[([^\]\n]+)\]\((https?:\/\/[^\s)]+|www\.[^\s)]+)\)/g,h=e=>{const t=new Set;for(const n of e){if("data-tool-assets"!==n.type)continue;const e=u(n.content);if(null==e?void 0:e.assets)for(const n of e.assets)n.value&&!r(n.value)&&t.add(a(n.value))}return t},y=({className:i,parts:r,isStreaming:y=!1})=>{const j=t(new Set);j.current=new Set;const x=h(r),k=r.reduce(((e,t,n)=>t.isVisible?n:e),-1);return e("div",Object.assign({className:d("flex flex-col gap-2",i)},{children:e(n,Object.assign({fallback:e("div",{})},{children:r.map(((t,n)=>{if(!t.isVisible)return null;if("text"===t.type){const i=((e,t,n)=>{var i,s;const o=[];let r=0;for(const u of e.matchAll(w)){const d=null!==(i=u.index)&&void 0!==i?i:0,m=u[0],f="!"===u[1],v=null===(s=u[2])||void 0===s?void 0:s.trim(),g=u[3],w=l(g);if(!w)continue;if(c(w.url,n))continue;d>r&&o.push({type:"markdown",value:e.slice(r,d)});const h=v&&a(v)!==w.url?v:void 0;p(w,t)?o.push({type:"preview",key:`${w.url}-${d}`,fileInfo:w,displayName:h}):o.push({type:"markdown",value:f?m:`[${v||w.fileName}](${w.url})`}),r=d+m.length}return r<e.length&&o.push({type:"markdown",value:e.slice(r)}),o.length?o:[{type:"markdown",value:e}]})(t.content,j,x);return e(m,{children:i.map(((t,n)=>"preview"===t.type?e(o,{fileInfo:t.fileInfo,displayName:t.displayName},t.key):t.value?e(s,{value:t.value,filePreviewSeenRef:j,suppressedRichPreviewUrls:x},n):null))},n)}if("reasoning"===t.type)return e(f,Object.assign({isReasoning:n===r.length-1},{children:e(s,{value:t.content,suppressedRichPreviewUrls:x})}),n);if("data-action-tool-caption"===t.type){const i=u(t.content),s=n===k;return e(v,Object.assign({},i&&i,{isLoading:y&&s,isVisible:s}),n)}if("data-reasoning-caption"===t.type){const i=u(t.content),s=n===k;return e(g,Object.assign({},i&&i,{isLoading:y&&s,isVisible:s}),n)}return null}))}))}))};export{y as default,h as getSuppressedRichPreviewUrls};
1
+ import{jsx as e}from"react/jsx-runtime";import{ActionApprovalPart as t}from"./ActionApprovalPart.js";import{useResponseContext as n}from"../../../../hooks/pickaxe/useResponseContext.js";import{useRef as i,Suspense as o,lazy as s}from"react";import{PickaxeMarkdownRenderer as r}from"../PickaxeMarkdown/Renderer.js";import a,{isGeneratedFileUrl as l,normalizeMarkdownUrl as c,getFilePreviewInfo as p,shouldSuppressRichPreviewForUrl as u,shouldRenderFilePreview as m}from"../PickaxeMarkdown/Components/A/FilePreview.js";import{safeJSONParse as d}from"../../../../common/utils.js";import f from"../../../../common/cn.js";const v=s((()=>import("./TextPart/index.js"))),g=s((()=>import("./ReasoningPart/index.js"))),w=s((()=>import("./ActionToolCaptionPart/index.js"))),h=s((()=>import("./ReasoningCaptionPart/index.js"))),y=/(!?)\[([^\]\n]+)\]\((https?:\/\/[^\s)]+|www\.[^\s)]+)\)/g,j=e=>{const t=new Set;for(const n of e){if("data-tool-assets"!==n.type)continue;const e=d(n.content);if(null==e?void 0:e.assets)for(const n of e.assets)n.value&&!l(n.value)&&t.add(c(n.value))}return t},x=({className:s,parts:l,isStreaming:x=!1,actionApproval:k})=>{const{actionApproval:P}=n(),b=null!=k?k:P,R=i(new Set);R.current=new Set;const A=j(l),N=l.reduce(((e,t,n)=>t.isVisible?n:e),-1);return e("div",Object.assign({className:f("flex flex-col gap-2",s)},{children:e(o,Object.assign({fallback:e("div",{})},{children:l.map(((n,i)=>{if(!n.isVisible)return null;if("data-action-approval"===n.type)return e(t,{content:n.content,isStreaming:x,approval:b},i);if("text"===n.type){const t=((e,t,n)=>{var i,o;const s=[];let r=0;for(const a of e.matchAll(y)){const l=null!==(i=a.index)&&void 0!==i?i:0,d=a[0],f="!"===a[1],v=null===(o=a[2])||void 0===o?void 0:o.trim(),g=a[3],w=p(g);if(!w)continue;if(u(w.url,n))continue;l>r&&s.push({type:"markdown",value:e.slice(r,l)});const h=v&&c(v)!==w.url?v:void 0;m(w,t)?s.push({type:"preview",key:`${w.url}-${l}`,fileInfo:w,displayName:h}):s.push({type:"markdown",value:f?d:`[${v||w.fileName}](${w.url})`}),r=l+d.length}return r<e.length&&s.push({type:"markdown",value:e.slice(r)}),s.length?s:[{type:"markdown",value:e}]})(n.content,R,A);return e(v,{children:t.map(((t,n)=>"preview"===t.type?e(a,{fileInfo:t.fileInfo,displayName:t.displayName},t.key):t.value?e(r,{value:t.value,filePreviewSeenRef:R,suppressedRichPreviewUrls:A},n):null))},i)}if("reasoning"===n.type)return e(g,Object.assign({isReasoning:i===l.length-1},{children:e(r,{value:n.content,suppressedRichPreviewUrls:A})}),i);if("data-action-tool-caption"===n.type){const t=d(n.content),o=i===N;return e(w,Object.assign({},t&&t,{isLoading:x&&o,isVisible:o}),i)}if("data-reasoning-caption"===n.type){const t=d(n.content),o=i===N;return e(h,Object.assign({},t&&t,{isLoading:x&&o,isVisible:o}),i)}return null}))}))}))};export{x as default,j as getSuppressedRichPreviewUrls};
@@ -0,0 +1 @@
1
+ import{__awaiter as e}from"../../_virtual/_tslib.js";import{useState as r,useRef as n,useEffect as t,useCallback as o}from"react";function s(s){const[i,a]=r(null),[c,l]=r(null),[u,d]=r({}),[b,g]=r({}),y=n(null);t((()=>(l(null),d({}),g({}),()=>{var e;null===(e=y.current)||void 0===e||e.abort(),y.current=null})),[i,s]);const f=o(((r,n)=>e(this,void 0,void 0,(function*(){if(!s||!i||y.current)return;const e=new AbortController;y.current=e;const t=setTimeout((()=>e.abort()),15e3);l(r),d((e=>Object.assign(Object.assign({},e),{[r]:""})));try{const t=yield fetch(`${process.env.NEXT_PUBLIC_PICKAXE_API2_URL}/response/action-approvals/${r}`,{method:"POST",headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"},body:JSON.stringify({decision:n}),signal:e.signal});if(!t.ok)throw new Error(409===t.status?"This confirmation has expired or already been resolved.":"Could not save your decision. Please try again.");y.current===e&&g((e=>Object.assign(Object.assign({},e),{[r]:n})))}catch(n){y.current===e&&d((e=>Object.assign(Object.assign({},e),{[r]:n instanceof Error&&"AbortError"!==n.name?n.message:"Could not save your decision. Please try again."})))}finally{clearTimeout(t),y.current===e&&(y.current=null,l(null))}}))),[s,i]);return{setToken:a,enabled:s&&Boolean(i),busyId:c,errors:u,decisions:b,decide:f}}export{s as useActionApprovals};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- export{Pickaxe}from"./components/Pickaxe/index.js";export{PickaxeContext,PickaxeProvider}from"./components/Pickaxe/Provider.js";export{ResponseContext}from"./components/Pickaxe/ResponseProvider.js";export{ScrollContext,ScrollProvider}from"./components/Pickaxe/Addons/Scroll/Provider.js";export{PickaxeMarkdown,PickaxeMarkdownContext}from"./components/Pickaxe/common/PickaxeMarkdown/index.js";export{PickaxeMarkdownRenderer}from"./components/Pickaxe/common/PickaxeMarkdown/Renderer.js";export{default as PickaxeMessageParts}from"./components/Pickaxe/common/PickaxeMessageParts/index.js";export{useConversation}from"./hooks/pickaxe/useConversation.js";export{useHistory}from"./hooks/pickaxe/useHistory.js";export{useInstantPickaxe,usePickaxe}from"./hooks/pickaxe/usePickaxe.js";export{usePickaxeContext}from"./hooks/pickaxe/usePickaxeContext.js";export{useResponseContext}from"./hooks/pickaxe/useResponseContext.js";export{useDimensionContext}from"./hooks/pickaxe/useDimensionContext.js";export{useSubmitDocument}from"./hooks/pickaxe/useSubmitDocument.js";export{Inline}from"./components/EmbedPreview/Inline.js";export{FAB,FABButton}from"./components/EmbedPreview/FAB.js";export{Popup,PopupCTAButton}from"./components/EmbedPreview/Popup.js";export{ChatInput,ChatInputWrapper}from"./components/EmbedPreview/ChatInput.js";export{PickaxeArtifact}from"./components/Pickaxe/Addons/Artifact/index.js";export{default as PickaxeArtifactRenderer}from"./components/Pickaxe/Addons/Artifact/Renderer/index.js";export{ArtifactContext,ArtifactProvider}from"./components/Pickaxe/Addons/Artifact/Provider.js";export{useArtifactContext}from"./components/Pickaxe/Addons/Artifact/hooks/useArtifactContext.js";export{useArtifact}from"./components/Pickaxe/Addons/Artifact/hooks/useArtifact.js";
1
+ export{Pickaxe}from"./components/Pickaxe/index.js";export{PickaxeContext,PickaxeProvider}from"./components/Pickaxe/Provider.js";export{ResponseContext}from"./components/Pickaxe/ResponseProvider.js";export{ScrollContext,ScrollProvider}from"./components/Pickaxe/Addons/Scroll/Provider.js";export{PickaxeMarkdown,PickaxeMarkdownContext}from"./components/Pickaxe/common/PickaxeMarkdown/index.js";export{PickaxeMarkdownRenderer}from"./components/Pickaxe/common/PickaxeMarkdown/Renderer.js";export{default as PickaxeMessageParts}from"./components/Pickaxe/common/PickaxeMessageParts/index.js";export{useConversation}from"./hooks/pickaxe/useConversation.js";export{useHistory}from"./hooks/pickaxe/useHistory.js";export{useInstantPickaxe,usePickaxe}from"./hooks/pickaxe/usePickaxe.js";export{usePickaxeContext}from"./hooks/pickaxe/usePickaxeContext.js";export{useResponseContext}from"./hooks/pickaxe/useResponseContext.js";export{useDimensionContext}from"./hooks/pickaxe/useDimensionContext.js";export{useSubmitDocument}from"./hooks/pickaxe/useSubmitDocument.js";export{Inline}from"./components/EmbedPreview/Inline.js";export{FAB,FABButton}from"./components/EmbedPreview/FAB.js";export{Popup,PopupCTAButton}from"./components/EmbedPreview/Popup.js";export{ChatInput,ChatInputWrapper}from"./components/EmbedPreview/ChatInput.js";export{PickaxeArtifact}from"./components/Pickaxe/Addons/Artifact/index.js";export{default as PickaxeArtifactRenderer}from"./components/Pickaxe/Addons/Artifact/Renderer/index.js";export{ArtifactContext,ArtifactProvider}from"./components/Pickaxe/Addons/Artifact/Provider.js";export{useArtifactContext}from"./components/Pickaxe/Addons/Artifact/hooks/useArtifactContext.js";export{useArtifact}from"./components/Pickaxe/Addons/Artifact/hooks/useArtifact.js";export{ActionApprovalPart}from"./components/Pickaxe/common/PickaxeMessageParts/ActionApprovalPart.js";
@@ -0,0 +1,16 @@
1
+ import type { PickaxeHistoryMessagePart } from "../types/history";
2
+ export type ActionApprovalStatus = "pending" | "approved" | "declined" | "expired" | "cancelled";
3
+ export type ActionApprovalData = {
4
+ id: string;
5
+ name: string;
6
+ kind: "action" | "mcp";
7
+ pickaxeId: string;
8
+ status: ActionApprovalStatus;
9
+ expiresAt: number;
10
+ arguments?: string;
11
+ };
12
+ export declare function parseActionApproval(content: string): ActionApprovalData | null;
13
+ /** Replace an existing approval in place so decisions never duplicate cards. */
14
+ export declare function upsertActionApprovalPart(parts: PickaxeHistoryMessagePart[], data: ActionApprovalData): void;
15
+ /** Approval updates can arrive while a text/reasoning part is still streaming. */
16
+ export declare function updateStreamTextPart(parts: PickaxeHistoryMessagePart[], type: "text" | "reasoning", content: string): void;
@@ -1,3 +1,4 @@
1
+ import { useActionApprovals } from "../../hooks/pickaxe/useActionApprovals";
1
2
  import type { SetState } from "../../types/common";
2
3
  import type { MemoryStoredChatMessage, MemoryStoredFormResponse } from "../../types/response";
3
4
  import { type ReactNode } from "react";
@@ -27,6 +28,8 @@ type ResponseContextType = {
27
28
  setStatus: SetState<ResponseStatus>;
28
29
  setLimitData: SetState<PickaxeLimitData | null>;
29
30
  setError: SetState<string>;
31
+ actionApproval: ReturnType<typeof useActionApprovals>;
32
+ setActionApprovalToken: (token: string | null) => void;
30
33
  setIsGuestLimitReached: SetState<boolean>;
31
34
  setIsSwitchedToChat: SetState<boolean>;
32
35
  };
@@ -0,0 +1,6 @@
1
+ import type { useActionApprovals } from "../../../../hooks/pickaxe/useActionApprovals";
2
+ export declare function ActionApprovalPart({ content, isStreaming, approval, }: {
3
+ content: string;
4
+ isStreaming?: boolean;
5
+ approval?: ReturnType<typeof useActionApprovals>;
6
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -1,10 +1,13 @@
1
+ import type { useActionApprovals } from "../../../../hooks/pickaxe/useActionApprovals";
1
2
  import type { PickaxeHistoryMessagePart } from "../../../../types/history";
2
3
  import { type SuppressedRichPreviewUrls } from "../PickaxeMarkdown/Components/A/FilePreview";
3
4
  interface PickaxeMessagePartsProps {
4
5
  className?: string;
5
6
  parts: PickaxeHistoryMessagePart[];
6
7
  isStreaming?: boolean;
8
+ /** Supply the host response controller when rendering outside ResponseProvider. */
9
+ actionApproval?: ReturnType<typeof useActionApprovals>;
7
10
  }
8
11
  export declare const getSuppressedRichPreviewUrls: (parts: PickaxeHistoryMessagePart[]) => SuppressedRichPreviewUrls;
9
- declare const PickaxeMessageParts: ({ className, parts, isStreaming, }: PickaxeMessagePartsProps) => import("react/jsx-runtime").JSX.Element;
12
+ declare const PickaxeMessageParts: ({ className, parts, isStreaming, actionApproval: suppliedActionApproval, }: PickaxeMessagePartsProps) => import("react/jsx-runtime").JSX.Element;
10
13
  export default PickaxeMessageParts;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ /** The decision capability stays in memory, never in saved response parts. */
3
+ export declare function useActionApprovals(active: boolean): {
4
+ setToken: import("react").Dispatch<import("react").SetStateAction<string | null>>;
5
+ enabled: boolean;
6
+ busyId: string | null;
7
+ errors: Record<string, string>;
8
+ decisions: Record<string, "approved" | "declined">;
9
+ decide: (id: string, decision: "approved" | "declined") => Promise<void>;
10
+ };
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export declare const useResponseContext: () => {
2
3
  messages: import("../../types/response").MemoryStoredChatMessage[];
3
4
  response: import("../../types/response").MemoryStoredFormResponse | null;
@@ -13,6 +14,15 @@ export declare const useResponseContext: () => {
13
14
  setStatus: import("../../types/common").SetState<import("../../components/Pickaxe/ResponseProvider").ResponseStatus>;
14
15
  setLimitData: import("../../types/common").SetState<import("../../components/Pickaxe/ResponseProvider").PickaxeLimitData | null>;
15
16
  setError: import("../../types/common").SetState<string>;
17
+ actionApproval: {
18
+ setToken: import("react").Dispatch<import("react").SetStateAction<string | null>>;
19
+ enabled: boolean;
20
+ busyId: string | null;
21
+ errors: Record<string, string>;
22
+ decisions: Record<string, "approved" | "declined">;
23
+ decide: (id: string, decision: "approved" | "declined") => Promise<void>;
24
+ };
25
+ setActionApprovalToken: (token: string | null) => void;
16
26
  setIsGuestLimitReached: import("../../types/common").SetState<boolean>;
17
27
  setIsSwitchedToChat: import("../../types/common").SetState<boolean>;
18
28
  };
@@ -22,3 +22,5 @@ export { default as PickaxeArtifactRenderer } from "./components/Pickaxe/Addons/
22
22
  export * from "./components/Pickaxe/Addons/Artifact/Provider";
23
23
  export * from "./components/Pickaxe/Addons/Artifact/hooks/useArtifactContext";
24
24
  export * from "./components/Pickaxe/Addons/Artifact/hooks/useArtifact";
25
+ export { ActionApprovalPart } from "./components/Pickaxe/common/PickaxeMessageParts/ActionApprovalPart";
26
+ export type { ActionApprovalData, ActionApprovalStatus, } from "./common/actionApproval";
@@ -1,3 +1,4 @@
1
+ import type { ActionApprovalData } from "../common/actionApproval";
1
2
  export type PickaxeHistoryOriginType = "TEST" | "BUILDER" | "PICKAXE" | "STUDIO" | "EMBED" | "EMAIL" | "WHATSAPP" | "MAKE" | "SLACK" | "API";
2
3
  export type PickaxeHistoryPickaxeType = "CHAT" | "FORM";
3
4
  export type PickaxeHistorySenderType = "PICKAXE_USER" | "STUDIO_USER" | "DEPLOYMENT_USER";
@@ -36,7 +37,7 @@ export type PickaxeHistoryMessage = {
36
37
  createdAt: string;
37
38
  area?: PickaxeHistoryMessageArea;
38
39
  };
39
- export type PickaxeHistoryMessagePartsType = "text" | "reasoning" | "data-action-tool-caption" | "data-reasoning-caption" | "data-tool-assets";
40
+ export type PickaxeHistoryMessagePartsType = "data-action-approval" | "text" | "reasoning" | "data-action-tool-caption" | "data-reasoning-caption" | "data-tool-assets";
40
41
  export type PickaxeHistoryMessagePart = {
41
42
  type: PickaxeHistoryMessagePartsType;
42
43
  content: string;
@@ -66,6 +67,9 @@ export type PickaxeHistoryStreamDataReasoningCaption = {
66
67
  caption: string;
67
68
  };
68
69
  };
69
- export type PickaxeHistoryStreamData = PickaxeHistoryStreamDataActionToolCaption | PickaxeHistoryStreamDataReasoningCaption;
70
+ export type PickaxeHistoryStreamData = {
71
+ type: "data-action-approval";
72
+ data: ActionApprovalData;
73
+ } | PickaxeHistoryStreamDataActionToolCaption | PickaxeHistoryStreamDataReasoningCaption;
70
74
  export type PickaxeHistoryStream = PickaxeHistoryStreamPartStartEnd | PickaxeHistoryStreamPartDelta | PickaxeHistoryStreamData;
71
75
  export {};