@runtypelabs/persona 4.32.2 → 4.33.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.
- package/dist/activity-ui.d.cts +3 -3
- package/dist/activity-ui.d.ts +3 -3
- package/dist/animations/glyph-cycle.d.cts +1 -1
- package/dist/animations/glyph-cycle.d.ts +1 -1
- package/dist/animations/wipe.d.cts +1 -1
- package/dist/animations/wipe.d.ts +1 -1
- package/dist/approval-ui.d.cts +2 -2
- package/dist/approval-ui.d.ts +2 -2
- package/dist/artifacts-ui.d.cts +3 -3
- package/dist/artifacts-ui.d.ts +3 -3
- package/dist/background-runtime.d.cts +1 -1
- package/dist/background-runtime.d.ts +1 -1
- package/dist/{chunk-BbXc58OA.js → chunk-6CUrH_jm.js} +1 -1
- package/dist/{chunk-B_H0l3u2.js → chunk-BRM3bHcJ.js} +1 -1
- package/dist/chunk-CEPM3FOp.js +1 -0
- package/dist/{chunk-D0tcIZJM.js → chunk-CXQJG7pb.js} +1 -1
- package/dist/{chunk-UWMfWW2a.js → chunk-D1G8tgYc.js} +1 -1
- package/dist/{chunk-BpjtKnGI.js → chunk-D6U0E82p.js} +1 -1
- package/dist/{chunk-2FnmZ9AA.js → chunk-DOZmcve8.js} +1 -1
- package/dist/chunk-DVgzoVCB.js +1 -0
- package/dist/{chunk-B9Zu-wrk.js → chunk-DW7Vg_l2.js} +1 -1
- package/dist/{chunk-B3l7TOOv.js → chunk-DbGLjU2P.js} +1 -1
- package/dist/{chunk-DTGvDx8o.js → chunk-Dj2a9f9w.js} +1 -1
- package/dist/{chunk-DgZZqy14.js → chunk-d54BJdKd.js} +1 -1
- package/dist/chunk-dLJWKfOb.js +1 -0
- package/dist/{chunk-DNdeIFJ6.js → chunk-gu34lr-P.js} +1 -1
- package/dist/chunk-i4qGOJAL.js +1 -0
- package/dist/{chunk-DVZ8ri1z.js → chunk-ql5N2I_t.js} +1 -1
- package/dist/client-dispatch.js +1 -1
- package/dist/client-history.js +1 -1
- package/dist/codegen.cjs +1 -1
- package/dist/codegen.js +1 -1
- package/dist/composer-actions-runtime.d.cts +2 -2
- package/dist/composer-actions-runtime.d.ts +2 -2
- package/dist/{composer-input-dwg_o9Z-.d.cts → composer-input-DnqGCXZz.d.cts} +1 -1
- package/dist/{composer-input-dwg_o9Z-.d.ts → composer-input-DnqGCXZz.d.ts} +1 -1
- package/dist/{composer-store-Dw7Zbqxr.d.cts → composer-store-6Iwy6WLI.d.cts} +1 -1
- package/dist/{composer-store-Dw7Zbqxr.d.ts → composer-store-6Iwy6WLI.d.ts} +1 -1
- package/dist/{context-mention-manager-D2p0-JH-.d.cts → context-mention-manager-B-rHF98n.d.cts} +2 -2
- package/dist/{context-mention-manager-D2p0-JH-.d.ts → context-mention-manager-B-rHF98n.d.ts} +2 -2
- package/dist/context-mentions-inline.d.cts +2 -2
- package/dist/context-mentions-inline.d.ts +2 -2
- package/dist/context-mentions.d.cts +3 -3
- package/dist/context-mentions.d.ts +3 -3
- package/dist/{defaults-CjX0kKzb.d.ts → defaults-BuOjqUAG.d.cts} +2 -1
- package/dist/{defaults-CjX0kKzb.d.cts → defaults-BuOjqUAG.d.ts} +2 -1
- package/dist/dictation-runtime.d.cts +2 -2
- package/dist/dictation-runtime.d.ts +2 -2
- package/dist/event-stream-view.d.cts +1 -1
- package/dist/event-stream-view.d.ts +1 -1
- package/dist/{fallback-speech-engine-DmF7MczI.d.cts → fallback-speech-engine-SqEfkGda.d.cts} +1 -1
- package/dist/{fallback-speech-engine-DmF7MczI.d.ts → fallback-speech-engine-SqEfkGda.d.ts} +1 -1
- package/dist/{feature-preferences-CVFDt9Xf.d.cts → feature-preferences-DqAmje-2.d.cts} +1 -1
- package/dist/{feature-preferences-CVFDt9Xf.d.ts → feature-preferences-DqAmje-2.d.ts} +1 -1
- package/dist/forms-ui.d.cts +2 -2
- package/dist/forms-ui.d.ts +2 -2
- package/dist/{history-confirm-dialog-DJEXsTyE.d.cts → history-confirm-dialog-B3L7QNcO.d.cts} +1 -1
- package/dist/{history-confirm-dialog-DJEXsTyE.d.ts → history-confirm-dialog-B3L7QNcO.d.ts} +1 -1
- package/dist/history-shell.cjs +1 -1
- package/dist/history-shell.d.cts +6 -6
- package/dist/history-shell.d.ts +6 -6
- package/dist/history-shell.js +1 -1
- package/dist/history-view.d.cts +1 -1
- package/dist/history-view.d.ts +1 -1
- package/dist/index.cjs +38 -38
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -9
- package/dist/index.d.ts +9 -9
- package/dist/index.global.js +1 -1
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +52 -52
- package/dist/index.js.map +1 -1
- package/dist/install.global.js +1 -1
- package/dist/launcher.global.js +2 -2
- package/dist/launcher.global.js.map +1 -1
- package/dist/{loading-label-runtime-loader-CPxnoaoi.d.cts → loading-label-runtime-loader-JecjOfJS.d.cts} +1 -1
- package/dist/{loading-label-runtime-loader-CPxnoaoi.d.ts → loading-label-runtime-loader-JecjOfJS.d.ts} +1 -1
- package/dist/loading-label-runtime.d.cts +1 -1
- package/dist/loading-label-runtime.d.ts +1 -1
- package/dist/{message-bubble-CkZGlCLC.d.ts → message-bubble-CBYtpDsT.d.cts} +2 -2
- package/dist/{message-bubble-CkZGlCLC.d.cts → message-bubble-CBYtpDsT.d.ts} +2 -2
- package/dist/preferences-runtime.d.cts +1 -1
- package/dist/preferences-runtime.d.ts +1 -1
- package/dist/{preview-DdUvoLb4.d.cts → preview-_UJwwt2L.d.cts} +2 -2
- package/dist/{preview-DdUvoLb4.d.ts → preview-_UJwwt2L.d.ts} +2 -2
- package/dist/{registry-Dz4iHNST.d.cts → registry-B5ZV3K-h.d.cts} +1 -1
- package/dist/{registry-Dz4iHNST.d.ts → registry-B5ZV3K-h.d.ts} +1 -1
- package/dist/{session-Baxp9iRK.d.cts → session-Bys8_XuB.d.cts} +10 -9
- package/dist/{session-Baxp9iRK.d.ts → session-Bys8_XuB.d.ts} +10 -9
- package/dist/session-reconnect.d.cts +2 -2
- package/dist/session-reconnect.d.ts +2 -2
- package/dist/smart-dom-reader.d.cts +1 -1
- package/dist/smart-dom-reader.d.ts +1 -1
- package/dist/theme-editor-preview.cjs +31 -31
- package/dist/theme-editor-preview.d.cts +1 -1
- package/dist/theme-editor-preview.d.ts +1 -1
- package/dist/theme-editor-preview.js +19 -19
- package/dist/theme-editor.cjs +1 -1
- package/dist/theme-editor.d.cts +2 -2
- package/dist/theme-editor.d.ts +2 -2
- package/dist/theme-editor.js +1 -1
- package/dist/theme-reference.cjs +1 -1
- package/dist/theme-reference.d.cts +4 -2
- package/dist/theme-reference.d.ts +4 -2
- package/dist/theme-reference.js +1 -1
- package/dist/{tool-loading-animation-un3kA5Ur.d.cts → tool-loading-animation-d5qAQcwv.d.cts} +1 -1
- package/dist/{tool-loading-animation-un3kA5Ur.d.ts → tool-loading-animation-d5qAQcwv.d.ts} +1 -1
- package/dist/{turn-activity-ui-BGNhtMcH.d.cts → turn-activity-ui-q6fHVnx-.d.cts} +2 -2
- package/dist/{turn-activity-ui-BGNhtMcH.d.ts → turn-activity-ui-q6fHVnx-.d.ts} +2 -2
- package/dist/turn-activity-ui.d.cts +1 -1
- package/dist/turn-activity-ui.d.ts +1 -1
- package/dist/{types-BOZHQIk0.d.cts → types-B_mj21jg.d.cts} +91 -7
- package/dist/{types-BOZHQIk0.d.ts → types-B_mj21jg.d.ts} +91 -7
- package/dist/voice-client-tools.d.cts +1 -1
- package/dist/voice-client-tools.d.ts +1 -1
- package/dist/voice-runtime.cjs +1 -1
- package/dist/voice-runtime.d.cts +2 -2
- package/dist/voice-runtime.d.ts +2 -2
- package/dist/voice-runtime.js +1 -1
- package/dist/voice-worklet-player.d.cts +2 -2
- package/dist/voice-worklet-player.d.ts +2 -2
- package/dist/{webmcp-runtime-entry-DuAG1_yF.d.cts → webmcp-runtime-entry-ClEO3qdI.d.cts} +1 -1
- package/dist/{webmcp-runtime-entry-DuAG1_yF.d.ts → webmcp-runtime-entry-ClEO3qdI.d.ts} +1 -1
- package/dist/webmcp-runtime.d.cts +1 -1
- package/dist/webmcp-runtime.d.ts +1 -1
- package/dist/widget.css +1 -1
- package/package.json +1 -1
- package/src/client-dispatch.ts +69 -16
- package/src/client.operator-role.test.ts +217 -0
- package/src/components/message-bubble.test.ts +169 -0
- package/src/components/message-bubble.ts +97 -28
- package/src/defaults-parity.test.ts +14 -0
- package/src/index-core.ts +7 -0
- package/src/session.resubmit-from.test.ts +27 -0
- package/src/session.test.ts +10 -0
- package/src/session.ts +8 -5
- package/src/styles/widget.css +23 -1
- package/src/theme-reference.ts +3 -1
- package/src/types/theme.ts +21 -0
- package/src/types.ts +71 -6
- package/src/ui.ask-user-question-plugin.test.ts +154 -0
- package/src/ui.operator-role.test.ts +336 -0
- package/src/ui.ts +37 -12
- package/src/utils/__snapshots__/tokens-parity.test.ts.snap +236 -0
- package/src/utils/brand.test.ts +14 -0
- package/src/utils/brand.ts +8 -4
- package/src/utils/history-messages.test.ts +30 -0
- package/src/utils/history-messages.ts +26 -8
- package/src/utils/message-fingerprint.ts +4 -0
- package/src/utils/resubmit-turn.test.ts +13 -0
- package/src/utils/resubmit-turn.ts +12 -1
- package/src/utils/tokens.ts +31 -0
- package/src/welcome.test.ts +16 -0
- package/src/welcome.ts +10 -2
- package/dist/chunk-BNE40cEG.js +0 -1
- package/dist/chunk-Bz9jAgba.js +0 -1
- package/dist/chunk-CdpVP6LZ.js +0 -1
- package/dist/chunk-CjkechxR.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk-Bb41bKyp.js";import{i as e}from"./chunk-BAdIgC5d.js";import{i as t,l as n,t as r,u as i}from"./chunk-B_H0l3u2.js";async function a(e,t,n,r){let i={"Content-Type":`application/json`,...e.headers};e.getHeaders&&Object.assign(i,await e.getHeaders());let a={executionId:t.executionId,approvalId:t.approvalId,decision:n,streamResponse:!0},o=(t,n)=>fetch(`${e.clientApiBase()}${t}`,{method:`POST`,headers:i,body:JSON.stringify({...n,...a})}),s=`/v1/agents/${t.agentId}/approve`;if(!e.isClientTokenMode())return o(s);let{sessionId:c}=await e.initSession(),l=await o(`/v1/client/approve`,{sessionId:c,...r?.assistantMessageId?{assistantMessageId:r.assistantMessageId}:{}});if(l.status===404){let e=await l.clone().json().catch(()=>null);if(!e||e.error===`Not Found`)return o(s)}return l}async function o(e,t,n,r){let a=e.isClientTokenMode(),o=a?e.getClientApiUrl(`resume`):`${e.config.apiUrl?.replace(/\/+$/,``)||`https://api.runtype.com`}/resume`,s,c=null;if(a){let t=await e.initSession();s=t.sessionId,t.durableRecovery?.enabled===!0&&(c=await e.readVisitorToken())}let l={"Content-Type":`application/json`,...c?{"X-Visitor-Token":c}:{},...e.headers};e.getHeaders&&Object.assign(l,await e.getHeaders());let u={executionId:t,toolOutputs:n,streamResponse:r?.streamResponse??!0,...r?.after?{after:r.after}:{}};if(s&&(u.sessionId=s,r?.assistantMessageId&&(u.assistantMessageId=r.assistantMessageId)),a&&s){let t=[...i(e.config),...await(await e.getWebMcpBridge())?.snapshotForDispatch()??[]],{response:n,commit:a}=await e.sendWithClientToolsDiff(s,t,t=>{let n={...u,...t};return e.debug&&console.debug(`[AgentWidgetClient] client token resume`,n),fetch(o,{method:`POST`,headers:l,body:JSON.stringify(n),signal:r?.signal})},{emptyMeansReplace:!0});return n.ok&&a(),n}return fetch(o,{method:`POST`,headers:l,body:JSON.stringify(u),signal:r?.signal})}const s=e=>e===`commentary`||e===`partial_answer`||e===`final_answer`?e:void 0;function c(e){let t=e.toLowerCase(),n=t===`text/plain`?`txt`:t===`text/markdown`?`md`:void 0;if(n)return`attachment.${n}`;let r=t.indexOf(`/`);if(r>0){let e=t.slice(r+1).split(`;`)[0]?.trim()??``;if(e&&e!==`octet-stream`&&/^[a-z0-9.+-]+$/i.test(e))return`attachment.${e}`}return`attachment`}const l=e=>/^[{[<]/.test(e);function u(e,t){if(!e)return t;let r=e.trim(),i=t.trim();if(!r)return t;if(!i)return e;let a=l(r);if(!l(i))return e;if(!a||i.startsWith(r))return t;let o=n(e);return n(t)!==null&&o===null?t:e}async function d(e,t,n,r,i,a,o){if(!e.parseSSEEvent)return!1;try{let s=await e.parseSSEEvent(t);if(s===null)return!1;let c=e=>{let t={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`assistant`,sequence:a(),...e!==void 0&&{partId:e}};return r.current=t,i(t),t},l=e=>r.current?r.current:c(e);if(s.text!==void 0){s.partId!==void 0&&o.current!==null&&s.partId!==o.current&&(r.current&&(r.current.streaming=!1,i(r.current)),c(s.partId)),s.partId!==void 0&&(o.current=s.partId);let e=l(s.partId);s.partId!==void 0&&!e.partId&&(e.partId=s.partId),e.content+=s.text,i(e)}return s.done&&(r.current&&(r.current.streaming=!1,i(r.current)),o.current=null,n({type:`status`,status:`idle`})),s.error&&(o.current=null,n({type:`error`,error:Error(s.error)})),!0}catch(e){return typeof console<`u`&&console.error(`[AgentWidget] parseSSEEvent error:`,e),!1}}async function ee(i,a,o,l,ee,f,p,m){let h=i.streamGeneration(),g=a.getReader();i.streamReaders.add(g);let te=!!i.config().backgroundConversations,ne=()=>{te&&g.cancel().catch(()=>{})};f?.addEventListener(`abort`,ne,{once:!0});let re=new TextDecoder,_=``,ie=Date.now(),ae=0,v=()=>ie+ae++,oe=e=>({...e,chunks:e.chunks?[...e.chunks]:void 0}),y=e=>({...e,reasoning:e.reasoning?{...e.reasoning,chunks:[...e.reasoning.chunks]}:void 0,toolCall:e.toolCall?oe(e.toolCall):void 0,tools:e.tools?.map(oe)}),se=e=>{if(e.role!==`assistant`||e.variant)return!0;let t=Array.isArray(e.contentParts)&&e.contentParts.length>0,n=typeof e.rawContent==`string`&&e.rawContent.trim()!==``;return typeof e.content==`string`&&e.content.trim()!==``||t||n||!!e.stopReason},b=e=>{!f?.aborted&&h===i.streamGeneration()&&se(e)&&o({type:`message`,message:y(e)})},x=null,S=null,C={current:null},ce={current:null},w=null,T=``,E=new Map(m?.textPhases),D=/* @__PURE__ */ new Map,O=/* @__PURE__ */ new Map,k=/* @__PURE__ */ new Map,A=/* @__PURE__ */ new Map,j=/* @__PURE__ */ new Map,M=l,N=!1,P=p?.find(e=>e.id===l);P&&(x=y(P),x.streaming=m?.openAssistant??!0,N=!0,w=P.agentMetadata?.textBlockId??null,T=P.rawContent??P.content,S=x,m&&!m.openAssistant&&(x=null)),m&&(w=m.textBlockId,T=m.rawText,m.nestedParents.forEach(([e,t])=>D.set(e,t)),m.nestedRaw.forEach(([e,t])=>k.set(e,t)));for(let e of p??[]){e.variant===`tool`&&e.toolCall?.id&&j.set(e.toolCall.id,y(e)),e.variant===`reasoning`&&e.reasoning?.id&&A.set(e.reasoning.id,y(e));let t=e.agentMetadata?.textBlockId;t&&(O.set(t,e.id===x?.id?x:y(e)),e.agentMetadata?.phase&&E.set(t,e.agentMetadata.phase));let n=e.agentMetadata?.parentToolId;t&&n&&(D.set(t,n),k.set(t,e.rawContent??e.content))}let le=()=>{if(x)return x;let e,t=``,n=w;return!N&&M?(e=M,N=!0,t=ee??``):e=M&&n?`${M}_${n}`:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,x={id:e,role:`assistant`,content:t,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:v()},b(x),x},F=(e,t)=>{let n=A.get(e);if(n)return n;let r={id:`reason-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`reasoning`,agentMetadata:{executionId:t},sequence:v(),reasoning:{id:e,status:`streaming`,chunks:[]}};return A.set(e,r),b(r),r},I=/* @__PURE__ */ new Set,L=/* @__PURE__ */ new Map,R=/* @__PURE__ */ new Set;for(let e of p??[])if(e.id.startsWith(`artifact-ref-`)){let t=e.id.slice(13);R.add(t),L.set(t,y(e))}m?.artifactTools.forEach(e=>I.add(e));let z=/* @__PURE__ */ new Map;m?.artifactContent.forEach(([e,t])=>z.set(e,{...t}));let ue=e=>{if(!e)return!1;let t=e.replace(/_+/g,`_`).replace(/^_|_$/g,``);return t===`emit_artifact_markdown`||t===`emit_artifact_component`},B=(e,t,n)=>{let r=j.get(e),i={...r?.agentMetadata,executionId:t??r?.agentMetadata?.executionId,iteration:n??r?.agentMetadata?.iteration??(Y||void 0)};if(r)return r.agentMetadata=i,r;let a={id:`tool-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`tool`,agentMetadata:i,sequence:v(),toolCall:{id:e,status:`pending`}};return j.set(e,a),b(a),a},de=e=>{if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`){let t=Number(e);if(Number.isFinite(t))return t;let n=Date.parse(e);if(!Number.isNaN(n))return n}return Date.now()},V=e=>{if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e)}catch{return String(e)}},H=/* @__PURE__ */ new Map,U=/* @__PURE__ */ new Map,fe=(e,t)=>{let r=V(t),i=u(U.get(e.id),r);e.rawContent=i;let a=H.get(e.id),o=t=>{let n=e.content??``;t.trim()!==``&&(!n.trim()||t.startsWith(n)||t.trimStart().startsWith(n.trim()))&&(e.content=t)},s=()=>{let t=a?.close?.();t instanceof Promise&&t.catch(()=>{}),H.delete(e.id),U.delete(e.id),e.streaming=!1,b(e)};if(!a){o(r),s();return}let c=n(i);if(c!==null&&c.trim()!==``){o(c),s();return}let l=e=>{let t=typeof e==`string`?e:e?.text??null;if(t!==null&&t.trim()!==``)return t;let n=a.getExtractedText();return n!==null&&n.trim()!==``?n:r},d;try{d=a.processChunk(i)}catch{o(r),s();return}d instanceof Promise?d.then(e=>{o(l(e)),s()}).catch(()=>{o(r),s()}):(o(l(d)),s())},W=null,pe=p?.find(e=>e.id===m?.sealedFlowMessageId);pe&&(W=y(pe));let me=(e,t,n)=>{e.rawContent=t,H.has(e.id)||H.set(e.id,i.createStreamParser());let r=H.get(e.id),a=/^[{[]/.test(t.trim());a&&U.set(e.id,t);let o=()=>{e.content+=n,U.delete(e.id),H.delete(e.id),e.rawContent=void 0,b(e)};if(r.__isPlainTextParser===!0){o();return}let s=n=>{let r=typeof n==`string`?n:n?.text??null;r!==null&&r.trim()!==``?(e.content=r,b(e)):!a&&!t.trim().startsWith(`<`)&&o()},c=r.processChunk(t);c instanceof Promise?c.then(s).catch(o):s(c)},G=(e,t)=>{let r=t??e.content;if(r==null||r===``){e.streaming=!1,b(e);return}let i=U.get(e.id)??V(r);e.rawContent=i;let a=H.get(e.id),o=null,s=!1;if(a&&(o=a.getExtractedText(),o===null&&(o=n(i)),o===null)){let t=a.processChunk(i);t instanceof Promise?(s=!0,t.then(t=>{let n=typeof t==`string`?t:t?.text??null;n!==null&&(e.content=n,e.streaming=!1,H.delete(e.id),U.delete(e.id),b(e))}).catch(()=>{})):o=typeof t==`string`?t:t?.text??null}if(!s){o!==null&&o.trim()!==``?e.content=o:U.has(e.id)||(e.content=V(r));let t=H.get(e.id);if(t){let n=t.close?.();n instanceof Promise&&n.catch(()=>{}),H.delete(e.id)}U.delete(e.id),e.streaming=!1,b(e)}},he=(e,t,n,r)=>{let i=O.get(e);if(i)return i;let a={id:`nested-${t}-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:v(),...n?{variant:n}:{},...n===`reasoning`?{reasoning:{id:e,status:`streaming`,chunks:[]}}:{},agentMetadata:{parentToolId:t,textBlockId:e,executionId:r,phase:E.get(e)}};return O.set(e,a),b(a),a},K=[],q,J=/* @__PURE__ */ new Map;m?.media.forEach(([e,t])=>J.set(e,{...t,parts:[...t.parts]}));let Y=m?.iteration??0,X=m?.executionKind??`agent`,Z=m?.executionKindResolved??!1,Q=m?.turnId??null,$=null,ge=i.config().iterationDisplay??`separate`;q=()=>{for(let n=0;n<K.length;n++){let a=K[n];if(!Z&&X!==`flow`&&typeof a.stepType==`string`&&(X=`flow`),a.type===`reasoning_start`){let e=typeof a.id==`string`?a.id:null,t=typeof a.parentToolCallId==`string`&&a.parentToolCallId?a.parentToolCallId:null;if(e&&t){D.set(e,t),he(e,t,`reasoning`,a.executionId);continue}let n=a.id,r=F(n,a.executionId);r.reasoning=r.reasoning??{id:n,status:`streaming`,chunks:[]},r.reasoning.startedAt=r.reasoning.startedAt??Date.now(),r.reasoning.completedAt=void 0,r.reasoning.durationMs=void 0,(a.scope===`loop`||a.scope===`turn`)&&(r.reasoning.scope=a.scope),r.streaming=!0,r.reasoning.status=`streaming`,b(r)}else if(a.type===`reasoning_delta`){let e=typeof a.id==`string`?a.id:null;if(e&&D.has(e)&&O.has(e)){let t=O.get(e),n=a.delta;n&&t.reasoning&&(t.reasoning.chunks.push(String(n)),b(t));continue}let t=a.id,n=F(t,a.executionId);n.reasoning=n.reasoning??{id:t,status:`streaming`,chunks:[]},n.reasoning.startedAt=n.reasoning.startedAt??Date.now(),a.delta&&n.reasoning.chunks.push(a.delta),n.reasoning.status=`streaming`,n.streaming=!0,b(n)}else if(a.type===`reasoning_complete`){let e=typeof a.id==`string`?a.id:null;if(e&&D.has(e)&&O.has(e)){let t=O.get(e);if(t.reasoning){let e=typeof a.text==`string`?a.text:``;e&&t.reasoning.chunks.length===0&&t.reasoning.chunks.push(e),t.reasoning.status=`complete`,t.streaming=!1,b(t)}D.delete(e),O.delete(e);continue}let t=a.id,n=typeof a.text==`string`?a.text:``;!A.get(t)&&(n||a.scope===`loop`)&&F(t,a.executionId);let r=A.get(t);if(r?.reasoning){(a.scope===`loop`||a.scope===`turn`)&&(r.reasoning.scope=a.scope),n&&r.reasoning.chunks.length===0&&r.reasoning.chunks.push(n),r.reasoning.status=`complete`,r.reasoning.completedAt=Date.now();let e=r.reasoning.startedAt??Date.now();r.reasoning.durationMs=Math.max(0,(r.reasoning.completedAt??Date.now())-e),r.streaming=!1,b(r)}}else if(a.type===`tool_start`){x&&=(x.streaming=!1,b(x),null),typeof a.iteration==`number`&&(Y=a.iteration);let e=a.toolCallId,t=a.toolName;if(ue(t)){I.add(e);continue}let n=B(e,a.executionId,a.iteration),r=n.toolCall??{id:e,status:`pending`};r.name=t??r.name,r.status=`running`,r.success=void 0,r.error=void 0,r.duration=void 0,a.parameters!==void 0&&(r.args=a.parameters),r.startedAt=r.startedAt??de(a.startedAt),r.completedAt=void 0,r.durationMs=void 0,n.toolCall=r,n.streaming=!0,b(n)}else if(a.type===`tool_output_delta`){let e=a.toolCallId;if(I.has(e))continue;let t=B(e,a.executionId),n=t.toolCall??{id:e,status:`running`};n.startedAt=n.startedAt??Date.now();let r=a.delta;r&&(n.chunks=n.chunks??[],n.chunks.push(String(r))),n.status=`running`,t.toolCall=n,t.streaming=!0,b(t)}else if(a.type===`tool_complete`){let e=a.toolCallId;if(I.has(e)){I.delete(e);continue}let t=B(e,a.executionId,a.iteration),n=t.toolCall??{id:e,status:`running`};n.status=`complete`,a.result!==void 0&&(n.result=a.result),n.name=a.toolName??n.name,n.success=a.success,n.error=a.error,n.completedAt=Date.now();let r=a.executionTime;if(typeof r==`number`)n.durationMs=r,n.duration=r;else{let e=n.startedAt??Date.now();n.durationMs=Math.max(0,(n.completedAt??Date.now())-e)}t.toolCall=n,t.streaming=!1,b(t)}else if(a.type===`await`&&a.toolName){let t=typeof a.toolCallId==`string`&&a.toolCallId.length>0?a.toolCallId:void 0,n=t??a.toolId??`local-${v()}`,r=B(n,a.executionId),i=a.toolName,o=a.origin===`webmcp`&&!e(i)?`webmcp:${i}`:i,s=e(o),c=r.toolCall??{id:n,status:`pending`};c.name=o,c.args=a.parameters,c.status=s?`running`:`complete`,c.chunks=c.chunks??[],c.startedAt=c.startedAt??de(a.awaitedAt),s?(c.completedAt=void 0,c.duration=void 0,c.durationMs=void 0):c.completedAt=c.completedAt??c.startedAt,r.toolCall=c,r.streaming=!1,r.agentMetadata={...r.agentMetadata,executionId:a.executionId??r.agentMetadata?.executionId,awaitingLocalTool:!0,...t?{webMcpToolCallId:t}:{}},b(r)}else if(a.type===`text_start`){let e=typeof a.id==`string`?a.id:null;if(e){let t=s(a.phase);t?E.set(e,t):E.delete(e)}let t=typeof a.parentToolCallId==`string`&&a.parentToolCallId?a.parentToolCallId:null;if(e&&t){D.set(e,t);continue}let n=x;n&&(X===`flow`?(G(n),W=n):(n.streaming=!1,b(n)),x=null),w=e??w,T=``}else if(a.type===`text_delta`){let e=typeof a.id==`string`?a.id:null,t=e?D.get(e):void 0;if(e&&t){let n=typeof a.delta==`string`?a.delta:``,r=(k.get(e)??``)+n;if(k.set(e,r),r.trim()===``)continue;let i=he(e,t,void 0,a.executionId);me(i,r,n);continue}w=e??w;let n=typeof a.delta==`string`?a.delta:``;if(T+=n,X===`flow`&&T.trim()===``)continue;let r=le();r.agentMetadata={textBlockId:w??void 0,phase:E.get(w??``),executionId:a.executionId,iteration:Y,...X===`flow`?{}:{turnId:Q??void 0,agentName:$?.agentName}},w&&O.set(w,r),me(r,T,n),S=r}else if(a.type===`text_complete`){let e=typeof a.id==`string`?a.id:null;e&&E.delete(e);let t=e?O.get(e):x,n=s(a.phase);if(t&&n&&(t.agentMetadata={...t.agentMetadata,providerPhase:n}),e&&D.has(e)){let t=O.get(e);t&&G(t),D.delete(e),k.delete(e),O.delete(e);continue}if(e&&t!==x){t&&(t.streaming=!1,b(t));continue}let r=x;r&&(X===`flow`?(G(r),W=r):((r.content??``)===``&&typeof a.text==`string`&&(r.content=a.text),r.streaming=!1,b(r)),x=null),w=null,T=``}else if(a.type===`step_complete`){if(a.stepType===`tool`)continue;if(a.success===!1){let e=a.error||`Step failed`;o({type:`error`,error:Error(e)});let t=x;t&&t.streaming&&(t.streaming=!1,b(t)),o({type:`status`,status:`idle`});continue}{let e=W;W=null;let t=a.stopReason,n=(a.result&&typeof a.result==`object`?a.result:null)?.response;if(e)t&&(e.stopReason=t),n==null?e.streaming!==!1&&(H.delete(e.id),U.delete(e.id),e.streaming=!1,b(e)):fe(e,n);else{let e=n!=null&&n!==``;if(e||t&&t!==`end_turn`&&t!==`unknown`){let r=le();t&&(r.stopReason=t),e?G(r,n):(r.streaming=!1,b(r))}}continue}}else if(a.type===`execution_start`)X=a.kind===`flow`?`flow`:`agent`,Z=!0,i.config().backgroundConversations&&o({type:`status`,status:`connected`,executionId:a.executionId}),X===`agent`&&($={executionId:a.executionId,agentId:a.agentId??`virtual`,agentName:a.agentName??``});else if(a.type===`turn_start`){let e=typeof a.iteration==`number`?a.iteration:Y;if(e!==Y){if(ge===`separate`&&e>1){let e=x;e&&(e.streaming=!1,b(e),x=null)}Y=e}Q=typeof a.id==`string`?a.id:null,S=null}else if(a.type===`tool_input_delta`){let e=a.toolCallId;if(e){let t=j.get(e);t?.toolCall&&(t.toolCall.chunks=t.toolCall.chunks??[],t.toolCall.chunks.push(a.delta??``),b(t))}}else if(a.type===`tool_input_complete`){if(I.has(a.toolCallId))continue;let e=B(a.toolCallId,a.executionId),t=e.toolCall;t.args=a.parameters,t.name=a.toolName??t.name,b(e)}else if(a.type===`turn_complete`){let e=a.stopReason,t=x??S;if(e&&t!==null){let n=a.id;(!n||t.agentMetadata?.turnId===n)&&(t.stopReason=e,b(t))}Q===a.id&&(Q=null)}else if(a.type===`media_start`){let e=String(a.id);J.set(e,{mediaType:typeof a.mediaType==`string`?a.mediaType:void 0,toolCallId:a.toolCallId,parts:[]})}else if(a.type===`media_delta`){let e=J.get(String(a.id));e&&typeof a.delta==`string`&&e.parts.push(a.delta)}else if(a.type===`media_complete`){let e=String(a.id),t=J.get(e);J.delete(e);let n=(typeof a.mediaType==`string`?a.mediaType:void 0)??t?.mediaType??`application/octet-stream`,r=typeof a.data==`string`?a.data:void 0,i=typeof a.url==`string`?a.url:t&&t.parts.length>0?t.parts.join(``):void 0,o=null;if(r)o={type:`media`,data:r,mediaType:n};else if(i){let e=n.toLowerCase();o={type:e===`image`||e.startsWith(`image/`)?`image-url`:`file-url`,url:i,mediaType:n}}let s=a.toolCallId??t?.toolCallId,l=o?[o]:[],u=[];for(let e of l){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.type==`string`?t.type:void 0,r=typeof t.mediaType==`string`?t.mediaType.toLowerCase():``,i=null,a=``;if(n===`media`){let e=typeof t.data==`string`?t.data:void 0;if(!e)continue;a=r.length>0?r:`application/octet-stream`,i=`data:${a};base64,${e}`}else if(n===`image-url`){let e=typeof t.url==`string`?t.url:void 0;if(!e)continue;a=r,i=e}else if(n===`file-url`){let e=typeof t.url==`string`?t.url:void 0;if(!e)continue;a=r,i=e}else continue;if(i){if(n===`image-url`||a.startsWith(`image/`))u.push({type:`image`,image:i,...a.includes(`/`)?{mimeType:a}:{}});else if(a.startsWith(`audio/`))u.push({type:`audio`,audio:i,mimeType:a});else if(a.startsWith(`video/`))u.push({type:`video`,video:i,mimeType:a});else{let e=a||`application/octet-stream`;u.push({type:`file`,data:i,mimeType:e,filename:c(e)})}}}if(u.length>0){let e=v(),t=s,n={id:`agent-media-${typeof t==`string`&&t.length>0?`${t}-${e}`:String(e)}`,role:`assistant`,content:``,contentParts:u,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:e,agentMetadata:{executionId:a.executionId,iteration:Y}};b(n);let r=x;r&&(r.streaming=!1,b(r)),x=null,C.current=null}}else if(a.type===`execution_complete`){let e=x;e&&(a.kind===`flow`&&e.streaming!==!1?G(e):(e.streaming=!1,b(e)),x=null),w=null,T=``,W=null,o({type:`status`,status:a.success===!1?`error`:`idle`,terminal:!0})}else if(a.type===`execution_error`){let e=typeof a.error==`string`?a.error:a.error?.message??`Execution error`;o({type:`error`,error:Error(e)})}else if(a.type!==`ping`){if(a.type===`approval_start`){let e=a.approvalId??`approval-${v()}`,t={id:`approval-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,variant:`approval`,sequence:v(),approval:{id:e,status:`pending`,agentId:$?.agentId??`virtual`,executionId:a.executionId??$?.executionId??``,toolName:a.toolName??``,toolType:a.toolType,description:a.description??`Execute ${a.toolName??`tool`}`,...typeof a.reason==`string`&&a.reason?{reason:a.reason}:{},parameters:a.parameters,...typeof a.toolCallId==`string`&&a.toolCallId?{toolCallId:a.toolCallId}:{}}};b(t)}else if(a.type===`approval_complete`){let e=a.approvalId;if(e){let t={id:`approval-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,variant:`approval`,sequence:v(),approval:{id:e,status:a.decision??`approved`,agentId:$?.agentId??`virtual`,executionId:a.executionId??$?.executionId??``,toolName:``,description:``,resolvedAt:Date.now()}};b(t)}}else if(a.type===`artifact_start`||a.type===`artifact_delta`||a.type===`artifact_update`||a.type===`artifact_complete`){if(a.type===`artifact_start`){let e=a.artifactType,n=String(a.id),s=typeof a.title==`string`?a.title:void 0,c=a.file,l;if(c&&typeof c==`object`&&!Array.isArray(c)&&typeof c.path==`string`&&typeof c.mimeType==`string`&&(l={path:c.path,mimeType:c.mimeType,...typeof c.language==`string`?{language:c.language}:{}}),o({type:`artifact_start`,id:n,artifactType:e,title:s,component:typeof a.component==`string`?a.component:void 0,...l?{file:l}:{}}),z.set(n,{markdown:``,title:s,file:l}),!R.has(n)){R.add(n);let o=t(i.config().features?.artifacts,{artifactType:e,...l?{file:l}:{}}),c=typeof a.component==`string`?a.component:void 0,u={id:`artifact-ref-${n}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:v(),rawContent:r(o,{artifactId:n,title:s,artifactType:e,status:`streaming`,...l?{file:l}:{},...c?{component:c}:{}})};L.set(n,u),b(u)}}else if(a.type===`artifact_delta`){let e=String(a.id),t=typeof a.delta==`string`?a.delta:String(a.delta??``);o({type:`artifact_delta`,id:e,artDelta:t});let n=z.get(e);n&&(n.markdown+=t)}else if(a.type===`artifact_update`){let e=a.props&&typeof a.props==`object`&&!Array.isArray(a.props)?a.props:{};o({type:`artifact_update`,id:String(a.id),props:e,component:typeof a.component==`string`?a.component:void 0});let t=z.get(String(a.id));t&&(t.props={...t.props??{},...e})}else if(a.type===`artifact_complete`){let e=String(a.id);o({type:`artifact_complete`,id:e});let t=L.get(e);if(t){t.streaming=!1;try{let n=JSON.parse(t.rawContent??`{}`);if(n.props){n.props.status=`complete`;let t=z.get(e);t?.markdown&&(n.props.markdown=t.markdown),t?.file&&(n.props.file=t.file),n.component===`PersonaArtifactInline`&&t?.props&&Object.keys(t.props).length>0&&(n.props.componentProps=t.props)}t.rawContent=JSON.stringify(n)}catch{}z.delete(e),b(t),L.delete(e)}}}else if(a.type===`error`&&a.recoverable===!1&&a.error!=null&&a.error!==``){let e=typeof a.error==`string`?a.error:a.error?.message==null?`Execution error`:String(a.error.message);o({type:`error`,error:Error(e)});let t=x;t&&t.streaming&&(t.streaming=!1,b(t)),o({type:`status`,status:`idle`})}}}K.length=0};try{for(;;){if(h!==i.streamGeneration())return;f?.throwIfAborted();let{done:e,value:t}=await g.read();if(h!==i.streamGeneration())return;if(f?.throwIfAborted(),e)break;_+=re.decode(t,{stream:!0});let n=_.split(`
|
|
1
|
+
import"./chunk-Bb41bKyp.js";import{i as e}from"./chunk-BAdIgC5d.js";import{i as t,l as n,t as r,u as i}from"./chunk-BRM3bHcJ.js";async function a(e,t,n,r){let i={"Content-Type":`application/json`,...e.headers};e.getHeaders&&Object.assign(i,await e.getHeaders());let a={executionId:t.executionId,approvalId:t.approvalId,decision:n,streamResponse:!0},o=(t,n)=>fetch(`${e.clientApiBase()}${t}`,{method:`POST`,headers:i,body:JSON.stringify({...n,...a})}),s=`/v1/agents/${t.agentId}/approve`;if(!e.isClientTokenMode())return o(s);let{sessionId:c}=await e.initSession(),l=await o(`/v1/client/approve`,{sessionId:c,...r?.assistantMessageId?{assistantMessageId:r.assistantMessageId}:{}});if(l.status===404){let e=await l.clone().json().catch(()=>null);if(!e||e.error===`Not Found`)return o(s)}return l}async function o(e,t,n,r){let a=e.isClientTokenMode(),o=a?e.getClientApiUrl(`resume`):`${e.config.apiUrl?.replace(/\/+$/,``)||`https://api.runtype.com`}/resume`,s,c=null;if(a){let t=await e.initSession();s=t.sessionId,t.durableRecovery?.enabled===!0&&(c=await e.readVisitorToken())}let l={"Content-Type":`application/json`,...c?{"X-Visitor-Token":c}:{},...e.headers};e.getHeaders&&Object.assign(l,await e.getHeaders());let u={executionId:t,toolOutputs:n,streamResponse:r?.streamResponse??!0,...r?.after?{after:r.after}:{}};if(s&&(u.sessionId=s,r?.assistantMessageId&&(u.assistantMessageId=r.assistantMessageId)),a&&s){let t=[...i(e.config),...await(await e.getWebMcpBridge())?.snapshotForDispatch()??[]],{response:n,commit:a}=await e.sendWithClientToolsDiff(s,t,t=>{let n={...u,...t};return e.debug&&console.debug(`[AgentWidgetClient] client token resume`,n),fetch(o,{method:`POST`,headers:l,body:JSON.stringify(n),signal:r?.signal})},{emptyMeansReplace:!0});return n.ok&&a(),n}return fetch(o,{method:`POST`,headers:l,body:JSON.stringify(u),signal:r?.signal})}const s=e=>e===`commentary`||e===`partial_answer`||e===`final_answer`?e:void 0;function c(e){let t=e.toLowerCase(),n=t===`text/plain`?`txt`:t===`text/markdown`?`md`:void 0;if(n)return`attachment.${n}`;let r=t.indexOf(`/`);if(r>0){let e=t.slice(r+1).split(`;`)[0]?.trim()??``;if(e&&e!==`octet-stream`&&/^[a-z0-9.+-]+$/i.test(e))return`attachment.${e}`}return`attachment`}const l=e=>/^[{[<]/.test(e);function u(e,t){if(!e)return t;let r=e.trim(),i=t.trim();if(!r)return t;if(!i)return e;let a=l(r);if(!l(i))return e;if(!a||i.startsWith(r))return t;let o=n(e);return n(t)!==null&&o===null?t:e}async function d(e,t,n,r,i,a,o){if(!e.parseSSEEvent)return!1;try{let s=await e.parseSSEEvent(t);if(s===null)return!1;let c=e=>{let t={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`assistant`,sequence:a(),...e!==void 0&&{partId:e}};return r.current=t,i(t),t},l=e=>r.current?r.current:c(e);if(s.text!==void 0){s.partId!==void 0&&o.current!==null&&s.partId!==o.current&&(r.current&&(r.current.streaming=!1,i(r.current)),c(s.partId)),s.partId!==void 0&&(o.current=s.partId);let e=l(s.partId);s.partId!==void 0&&!e.partId&&(e.partId=s.partId),e.content+=s.text,i(e)}return s.done&&(r.current&&(r.current.streaming=!1,i(r.current)),o.current=null,n({type:`status`,status:`idle`})),s.error&&(o.current=null,n({type:`error`,error:Error(s.error)})),!0}catch(e){return typeof console<`u`&&console.error(`[AgentWidget] parseSSEEvent error:`,e),!1}}async function ee(i,a,o,l,ee,f,p,m){let h=i.streamGeneration(),g=a.getReader();i.streamReaders.add(g);let te=!!i.config().backgroundConversations,ne=()=>{te&&g.cancel().catch(()=>{})};f?.addEventListener(`abort`,ne,{once:!0});let re=new TextDecoder,_=``,ie=Date.now(),ae=0,v=()=>ie+ae++,oe=e=>({...e,chunks:e.chunks?[...e.chunks]:void 0}),y=e=>({...e,reasoning:e.reasoning?{...e.reasoning,chunks:[...e.reasoning.chunks]}:void 0,toolCall:e.toolCall?oe(e.toolCall):void 0,tools:e.tools?.map(oe)}),se=e=>{if(e.role!==`assistant`||e.variant)return!0;let t=Array.isArray(e.contentParts)&&e.contentParts.length>0,n=typeof e.rawContent==`string`&&e.rawContent.trim()!==``;return typeof e.content==`string`&&e.content.trim()!==``||t||n||!!e.stopReason},b=e=>{!f?.aborted&&h===i.streamGeneration()&&se(e)&&o({type:`message`,message:y(e)})},x=null,S=null,C={current:null},ce={current:null},w=null,T=``,E=new Map(m?.textPhases),D=/* @__PURE__ */ new Map,O=/* @__PURE__ */ new Map,k=/* @__PURE__ */ new Map,A=/* @__PURE__ */ new Map,j=/* @__PURE__ */ new Map,M=l,N=!1,P=p?.find(e=>e.id===l);P&&(x=y(P),x.streaming=m?.openAssistant??!0,N=!0,w=P.agentMetadata?.textBlockId??null,T=P.rawContent??P.content,S=x,m&&!m.openAssistant&&(x=null)),m&&(w=m.textBlockId,T=m.rawText,m.nestedParents.forEach(([e,t])=>D.set(e,t)),m.nestedRaw.forEach(([e,t])=>k.set(e,t)));for(let e of p??[]){e.variant===`tool`&&e.toolCall?.id&&j.set(e.toolCall.id,y(e)),e.variant===`reasoning`&&e.reasoning?.id&&A.set(e.reasoning.id,y(e));let t=e.agentMetadata?.textBlockId;t&&(O.set(t,e.id===x?.id?x:y(e)),e.agentMetadata?.phase&&E.set(t,e.agentMetadata.phase));let n=e.agentMetadata?.parentToolId;t&&n&&(D.set(t,n),k.set(t,e.rawContent??e.content))}let le=()=>{if(x)return x;let e,t=``,n=w;return!N&&M?(e=M,N=!0,t=ee??``):e=M&&n?`${M}_${n}`:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,x={id:e,role:`assistant`,content:t,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:v()},b(x),x},F=(e,t)=>{let n=A.get(e);if(n)return n;let r={id:`reason-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`reasoning`,agentMetadata:{executionId:t},sequence:v(),reasoning:{id:e,status:`streaming`,chunks:[]}};return A.set(e,r),b(r),r},I=/* @__PURE__ */ new Set,L=/* @__PURE__ */ new Map,R=/* @__PURE__ */ new Set;for(let e of p??[])if(e.id.startsWith(`artifact-ref-`)){let t=e.id.slice(13);R.add(t),L.set(t,y(e))}m?.artifactTools.forEach(e=>I.add(e));let z=/* @__PURE__ */ new Map;m?.artifactContent.forEach(([e,t])=>z.set(e,{...t}));let ue=e=>{if(!e)return!1;let t=e.replace(/_+/g,`_`).replace(/^_|_$/g,``);return t===`emit_artifact_markdown`||t===`emit_artifact_component`},B=(e,t,n)=>{let r=j.get(e),i={...r?.agentMetadata,executionId:t??r?.agentMetadata?.executionId,iteration:n??r?.agentMetadata?.iteration??(Y||void 0)};if(r)return r.agentMetadata=i,r;let a={id:`tool-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`tool`,agentMetadata:i,sequence:v(),toolCall:{id:e,status:`pending`}};return j.set(e,a),b(a),a},de=e=>{if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`){let t=Number(e);if(Number.isFinite(t))return t;let n=Date.parse(e);if(!Number.isNaN(n))return n}return Date.now()},V=e=>{if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e)}catch{return String(e)}},H=/* @__PURE__ */ new Map,U=/* @__PURE__ */ new Map,fe=(e,t)=>{let r=V(t),i=u(U.get(e.id),r);e.rawContent=i;let a=H.get(e.id),o=t=>{let n=e.content??``;t.trim()!==``&&(!n.trim()||t.startsWith(n)||t.trimStart().startsWith(n.trim()))&&(e.content=t)},s=()=>{let t=a?.close?.();t instanceof Promise&&t.catch(()=>{}),H.delete(e.id),U.delete(e.id),e.streaming=!1,b(e)};if(!a){o(r),s();return}let c=n(i);if(c!==null&&c.trim()!==``){o(c),s();return}let l=e=>{let t=typeof e==`string`?e:e?.text??null;if(t!==null&&t.trim()!==``)return t;let n=a.getExtractedText();return n!==null&&n.trim()!==``?n:r},d;try{d=a.processChunk(i)}catch{o(r),s();return}d instanceof Promise?d.then(e=>{o(l(e)),s()}).catch(()=>{o(r),s()}):(o(l(d)),s())},W=null,pe=p?.find(e=>e.id===m?.sealedFlowMessageId);pe&&(W=y(pe));let me=(e,t,n)=>{e.rawContent=t,H.has(e.id)||H.set(e.id,i.createStreamParser());let r=H.get(e.id),a=/^[{[]/.test(t.trim());a&&U.set(e.id,t);let o=()=>{e.content+=n,U.delete(e.id),H.delete(e.id),e.rawContent=void 0,b(e)};if(r.__isPlainTextParser===!0){o();return}let s=n=>{let r=typeof n==`string`?n:n?.text??null;r!==null&&r.trim()!==``?(e.content=r,b(e)):!a&&!t.trim().startsWith(`<`)&&o()},c=r.processChunk(t);c instanceof Promise?c.then(s).catch(o):s(c)},G=(e,t)=>{let r=t??e.content;if(r==null||r===``){e.streaming=!1,b(e);return}let i=U.get(e.id)??V(r);e.rawContent=i;let a=H.get(e.id),o=null,s=!1;if(a&&(o=a.getExtractedText(),o===null&&(o=n(i)),o===null)){let t=a.processChunk(i);t instanceof Promise?(s=!0,t.then(t=>{let n=typeof t==`string`?t:t?.text??null;n!==null&&(e.content=n,e.streaming=!1,H.delete(e.id),U.delete(e.id),b(e))}).catch(()=>{})):o=typeof t==`string`?t:t?.text??null}if(!s){o!==null&&o.trim()!==``?e.content=o:U.has(e.id)||(e.content=V(r));let t=H.get(e.id);if(t){let n=t.close?.();n instanceof Promise&&n.catch(()=>{}),H.delete(e.id)}U.delete(e.id),e.streaming=!1,b(e)}},he=(e,t,n,r)=>{let i=O.get(e);if(i)return i;let a={id:`nested-${t}-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:v(),...n?{variant:n}:{},...n===`reasoning`?{reasoning:{id:e,status:`streaming`,chunks:[]}}:{},agentMetadata:{parentToolId:t,textBlockId:e,executionId:r,phase:E.get(e)}};return O.set(e,a),b(a),a},K=[],q,J=/* @__PURE__ */ new Map;m?.media.forEach(([e,t])=>J.set(e,{...t,parts:[...t.parts]}));let Y=m?.iteration??0,X=m?.executionKind??`agent`,Z=m?.executionKindResolved??!1,Q=m?.turnId??null,$=null,ge=i.config().iterationDisplay??`separate`;q=()=>{for(let n=0;n<K.length;n++){let a=K[n];if(!Z&&X!==`flow`&&typeof a.stepType==`string`&&(X=`flow`),a.type===`reasoning_start`){let e=typeof a.id==`string`?a.id:null,t=typeof a.parentToolCallId==`string`&&a.parentToolCallId?a.parentToolCallId:null;if(e&&t){D.set(e,t),he(e,t,`reasoning`,a.executionId);continue}let n=a.id,r=F(n,a.executionId);r.reasoning=r.reasoning??{id:n,status:`streaming`,chunks:[]},r.reasoning.startedAt=r.reasoning.startedAt??Date.now(),r.reasoning.completedAt=void 0,r.reasoning.durationMs=void 0,(a.scope===`loop`||a.scope===`turn`)&&(r.reasoning.scope=a.scope),r.streaming=!0,r.reasoning.status=`streaming`,b(r)}else if(a.type===`reasoning_delta`){let e=typeof a.id==`string`?a.id:null;if(e&&D.has(e)&&O.has(e)){let t=O.get(e),n=a.delta;n&&t.reasoning&&(t.reasoning.chunks.push(String(n)),b(t));continue}let t=a.id,n=F(t,a.executionId);n.reasoning=n.reasoning??{id:t,status:`streaming`,chunks:[]},n.reasoning.startedAt=n.reasoning.startedAt??Date.now(),a.delta&&n.reasoning.chunks.push(a.delta),n.reasoning.status=`streaming`,n.streaming=!0,b(n)}else if(a.type===`reasoning_complete`){let e=typeof a.id==`string`?a.id:null;if(e&&D.has(e)&&O.has(e)){let t=O.get(e);if(t.reasoning){let e=typeof a.text==`string`?a.text:``;e&&t.reasoning.chunks.length===0&&t.reasoning.chunks.push(e),t.reasoning.status=`complete`,t.streaming=!1,b(t)}D.delete(e),O.delete(e);continue}let t=a.id,n=typeof a.text==`string`?a.text:``;!A.get(t)&&(n||a.scope===`loop`)&&F(t,a.executionId);let r=A.get(t);if(r?.reasoning){(a.scope===`loop`||a.scope===`turn`)&&(r.reasoning.scope=a.scope),n&&r.reasoning.chunks.length===0&&r.reasoning.chunks.push(n),r.reasoning.status=`complete`,r.reasoning.completedAt=Date.now();let e=r.reasoning.startedAt??Date.now();r.reasoning.durationMs=Math.max(0,(r.reasoning.completedAt??Date.now())-e),r.streaming=!1,b(r)}}else if(a.type===`tool_start`){x&&=(x.streaming=!1,b(x),null),typeof a.iteration==`number`&&(Y=a.iteration);let e=a.toolCallId,t=a.toolName;if(ue(t)){I.add(e);continue}let n=B(e,a.executionId,a.iteration),r=n.toolCall??{id:e,status:`pending`};r.name=t??r.name,r.status=`running`,r.success=void 0,r.error=void 0,r.duration=void 0,a.parameters!==void 0&&(r.args=a.parameters),r.startedAt=r.startedAt??de(a.startedAt),r.completedAt=void 0,r.durationMs=void 0,n.toolCall=r,n.streaming=!0,b(n)}else if(a.type===`tool_output_delta`){let e=a.toolCallId;if(I.has(e))continue;let t=B(e,a.executionId),n=t.toolCall??{id:e,status:`running`};n.startedAt=n.startedAt??Date.now();let r=a.delta;r&&(n.chunks=n.chunks??[],n.chunks.push(String(r))),n.status=`running`,t.toolCall=n,t.streaming=!0,b(t)}else if(a.type===`tool_complete`){let e=a.toolCallId;if(I.has(e)){I.delete(e);continue}let t=B(e,a.executionId,a.iteration),n=t.toolCall??{id:e,status:`running`};n.status=`complete`,a.result!==void 0&&(n.result=a.result),n.name=a.toolName??n.name,n.success=a.success,n.error=a.error,n.completedAt=Date.now();let r=a.executionTime;if(typeof r==`number`)n.durationMs=r,n.duration=r;else{let e=n.startedAt??Date.now();n.durationMs=Math.max(0,(n.completedAt??Date.now())-e)}t.toolCall=n,t.streaming=!1,b(t)}else if(a.type===`await`&&a.toolName){let t=typeof a.toolCallId==`string`&&a.toolCallId.length>0?a.toolCallId:void 0,n=t??a.toolId??`local-${v()}`,r=B(n,a.executionId),i=a.toolName,o=a.origin===`webmcp`&&!e(i)?`webmcp:${i}`:i,s=e(o),c=r.toolCall??{id:n,status:`pending`};c.name=o,c.args=a.parameters,c.status=s?`running`:`complete`,c.chunks=c.chunks??[],c.startedAt=c.startedAt??de(a.awaitedAt),s?(c.completedAt=void 0,c.duration=void 0,c.durationMs=void 0):c.completedAt=c.completedAt??c.startedAt,r.toolCall=c,r.streaming=!1,r.agentMetadata={...r.agentMetadata,executionId:a.executionId??r.agentMetadata?.executionId,awaitingLocalTool:!0,...t?{webMcpToolCallId:t}:{}},b(r)}else if(a.type===`text_start`){let e=typeof a.id==`string`?a.id:null;if(e){let t=s(a.phase);t?E.set(e,t):E.delete(e)}let t=typeof a.parentToolCallId==`string`&&a.parentToolCallId?a.parentToolCallId:null;if(e&&t){D.set(e,t);continue}let n=x;n&&(X===`flow`?(G(n),W=n):(n.streaming=!1,b(n)),x=null),w=e??w,T=``}else if(a.type===`text_delta`){let e=typeof a.id==`string`?a.id:null,t=e?D.get(e):void 0;if(e&&t){let n=typeof a.delta==`string`?a.delta:``,r=(k.get(e)??``)+n;if(k.set(e,r),r.trim()===``)continue;let i=he(e,t,void 0,a.executionId);me(i,r,n);continue}w=e??w;let n=typeof a.delta==`string`?a.delta:``;if(T+=n,X===`flow`&&T.trim()===``)continue;let r=le();r.agentMetadata={textBlockId:w??void 0,phase:E.get(w??``),executionId:a.executionId,iteration:Y,...X===`flow`?{}:{turnId:Q??void 0,agentName:$?.agentName}},w&&O.set(w,r),me(r,T,n),S=r}else if(a.type===`text_complete`){let e=typeof a.id==`string`?a.id:null;e&&E.delete(e);let t=e?O.get(e):x,n=s(a.phase);if(t&&n&&(t.agentMetadata={...t.agentMetadata,providerPhase:n}),e&&D.has(e)){let t=O.get(e);t&&G(t),D.delete(e),k.delete(e),O.delete(e);continue}if(e&&t!==x){t&&(t.streaming=!1,b(t));continue}let r=x;r&&(X===`flow`?(G(r),W=r):((r.content??``)===``&&typeof a.text==`string`&&(r.content=a.text),r.streaming=!1,b(r)),x=null),w=null,T=``}else if(a.type===`step_complete`){if(a.stepType===`tool`)continue;if(a.success===!1){let e=a.error||`Step failed`;o({type:`error`,error:Error(e)});let t=x;t&&t.streaming&&(t.streaming=!1,b(t)),o({type:`status`,status:`idle`});continue}{let e=W;W=null;let t=a.stopReason,n=(a.result&&typeof a.result==`object`?a.result:null)?.response;if(e)t&&(e.stopReason=t),n==null?e.streaming!==!1&&(H.delete(e.id),U.delete(e.id),e.streaming=!1,b(e)):fe(e,n);else{let e=n!=null&&n!==``;if(e||t&&t!==`end_turn`&&t!==`unknown`){let r=le();t&&(r.stopReason=t),e?G(r,n):(r.streaming=!1,b(r))}}continue}}else if(a.type===`execution_start`)X=a.kind===`flow`?`flow`:`agent`,Z=!0,i.config().backgroundConversations&&o({type:`status`,status:`connected`,executionId:a.executionId}),X===`agent`&&($={executionId:a.executionId,agentId:a.agentId??`virtual`,agentName:a.agentName??``});else if(a.type===`turn_start`){let e=typeof a.iteration==`number`?a.iteration:Y;if(e!==Y){if(ge===`separate`&&e>1){let e=x;e&&(e.streaming=!1,b(e),x=null)}Y=e}Q=typeof a.id==`string`?a.id:null,S=null}else if(a.type===`tool_input_delta`){let e=a.toolCallId;if(e){let t=j.get(e);t?.toolCall&&(t.toolCall.chunks=t.toolCall.chunks??[],t.toolCall.chunks.push(a.delta??``),b(t))}}else if(a.type===`tool_input_complete`){if(I.has(a.toolCallId))continue;let e=B(a.toolCallId,a.executionId),t=e.toolCall;t.args=a.parameters,t.name=a.toolName??t.name,b(e)}else if(a.type===`turn_complete`){let e=a.stopReason,t=x??S;if(e&&t!==null){let n=a.id;(!n||t.agentMetadata?.turnId===n)&&(t.stopReason=e,b(t))}Q===a.id&&(Q=null)}else if(a.type===`media_start`){let e=String(a.id);J.set(e,{mediaType:typeof a.mediaType==`string`?a.mediaType:void 0,toolCallId:a.toolCallId,parts:[]})}else if(a.type===`media_delta`){let e=J.get(String(a.id));e&&typeof a.delta==`string`&&e.parts.push(a.delta)}else if(a.type===`media_complete`){let e=String(a.id),t=J.get(e);J.delete(e);let n=(typeof a.mediaType==`string`?a.mediaType:void 0)??t?.mediaType??`application/octet-stream`,r=typeof a.data==`string`?a.data:void 0,i=typeof a.url==`string`?a.url:t&&t.parts.length>0?t.parts.join(``):void 0,o=null;if(r)o={type:`media`,data:r,mediaType:n};else if(i){let e=n.toLowerCase();o={type:e===`image`||e.startsWith(`image/`)?`image-url`:`file-url`,url:i,mediaType:n}}let s=a.toolCallId??t?.toolCallId,l=o?[o]:[],u=[];for(let e of l){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.type==`string`?t.type:void 0,r=typeof t.mediaType==`string`?t.mediaType.toLowerCase():``,i=null,a=``;if(n===`media`){let e=typeof t.data==`string`?t.data:void 0;if(!e)continue;a=r.length>0?r:`application/octet-stream`,i=`data:${a};base64,${e}`}else if(n===`image-url`){let e=typeof t.url==`string`?t.url:void 0;if(!e)continue;a=r,i=e}else if(n===`file-url`){let e=typeof t.url==`string`?t.url:void 0;if(!e)continue;a=r,i=e}else continue;if(i){if(n===`image-url`||a.startsWith(`image/`))u.push({type:`image`,image:i,...a.includes(`/`)?{mimeType:a}:{}});else if(a.startsWith(`audio/`))u.push({type:`audio`,audio:i,mimeType:a});else if(a.startsWith(`video/`))u.push({type:`video`,video:i,mimeType:a});else{let e=a||`application/octet-stream`;u.push({type:`file`,data:i,mimeType:e,filename:c(e)})}}}if(u.length>0){let e=v(),t=s,n={id:`agent-media-${typeof t==`string`&&t.length>0?`${t}-${e}`:String(e)}`,role:`assistant`,content:``,contentParts:u,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:e,agentMetadata:{executionId:a.executionId,iteration:Y}};b(n);let r=x;r&&(r.streaming=!1,b(r)),x=null,C.current=null}}else if(a.type===`execution_complete`){let e=x;e&&(a.kind===`flow`&&e.streaming!==!1?G(e):(e.streaming=!1,b(e)),x=null),w=null,T=``,W=null,o({type:`status`,status:a.success===!1?`error`:`idle`,terminal:!0})}else if(a.type===`execution_error`){let e=typeof a.error==`string`?a.error:a.error?.message??`Execution error`;o({type:`error`,error:Error(e)})}else if(a.type!==`ping`){if(a.type===`approval_start`){let e=a.approvalId??`approval-${v()}`,t={id:`approval-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,variant:`approval`,sequence:v(),approval:{id:e,status:`pending`,agentId:$?.agentId??`virtual`,executionId:a.executionId??$?.executionId??``,toolName:a.toolName??``,toolType:a.toolType,description:a.description??`Execute ${a.toolName??`tool`}`,...typeof a.reason==`string`&&a.reason?{reason:a.reason}:{},parameters:a.parameters,...typeof a.toolCallId==`string`&&a.toolCallId?{toolCallId:a.toolCallId}:{}}};b(t)}else if(a.type===`approval_complete`){let e=a.approvalId;if(e){let t={id:`approval-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,variant:`approval`,sequence:v(),approval:{id:e,status:a.decision??`approved`,agentId:$?.agentId??`virtual`,executionId:a.executionId??$?.executionId??``,toolName:``,description:``,resolvedAt:Date.now()}};b(t)}}else if(a.type===`artifact_start`||a.type===`artifact_delta`||a.type===`artifact_update`||a.type===`artifact_complete`){if(a.type===`artifact_start`){let e=a.artifactType,n=String(a.id),s=typeof a.title==`string`?a.title:void 0,c=a.file,l;if(c&&typeof c==`object`&&!Array.isArray(c)&&typeof c.path==`string`&&typeof c.mimeType==`string`&&(l={path:c.path,mimeType:c.mimeType,...typeof c.language==`string`?{language:c.language}:{}}),o({type:`artifact_start`,id:n,artifactType:e,title:s,component:typeof a.component==`string`?a.component:void 0,...l?{file:l}:{}}),z.set(n,{markdown:``,title:s,file:l}),!R.has(n)){R.add(n);let o=t(i.config().features?.artifacts,{artifactType:e,...l?{file:l}:{}}),c=typeof a.component==`string`?a.component:void 0,u={id:`artifact-ref-${n}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:v(),rawContent:r(o,{artifactId:n,title:s,artifactType:e,status:`streaming`,...l?{file:l}:{},...c?{component:c}:{}})};L.set(n,u),b(u)}}else if(a.type===`artifact_delta`){let e=String(a.id),t=typeof a.delta==`string`?a.delta:String(a.delta??``);o({type:`artifact_delta`,id:e,artDelta:t});let n=z.get(e);n&&(n.markdown+=t)}else if(a.type===`artifact_update`){let e=a.props&&typeof a.props==`object`&&!Array.isArray(a.props)?a.props:{};o({type:`artifact_update`,id:String(a.id),props:e,component:typeof a.component==`string`?a.component:void 0});let t=z.get(String(a.id));t&&(t.props={...t.props??{},...e})}else if(a.type===`artifact_complete`){let e=String(a.id);o({type:`artifact_complete`,id:e});let t=L.get(e);if(t){t.streaming=!1;try{let n=JSON.parse(t.rawContent??`{}`);if(n.props){n.props.status=`complete`;let t=z.get(e);t?.markdown&&(n.props.markdown=t.markdown),t?.file&&(n.props.file=t.file),n.component===`PersonaArtifactInline`&&t?.props&&Object.keys(t.props).length>0&&(n.props.componentProps=t.props)}t.rawContent=JSON.stringify(n)}catch{}z.delete(e),b(t),L.delete(e)}}}else if(a.type===`error`&&a.recoverable===!1&&a.error!=null&&a.error!==``){let e=typeof a.error==`string`?a.error:a.error?.message==null?`Execution error`:String(a.error.message);o({type:`error`,error:Error(e)});let t=x;t&&t.streaming&&(t.streaming=!1,b(t)),o({type:`status`,status:`idle`})}}}K.length=0};try{for(;;){if(h!==i.streamGeneration())return;f?.throwIfAborted();let{done:e,value:t}=await g.read();if(h!==i.streamGeneration())return;if(f?.throwIfAborted(),e)break;_+=re.decode(t,{stream:!0});let n=_.split(`
|
|
2
2
|
|
|
3
3
|
`);_=n.pop()??``;for(let e of n){if(h!==i.streamGeneration())return;f?.throwIfAborted();let t=e.split(`
|
|
4
4
|
`),n=`message`,r=``,a=null;for(let e of t)e.startsWith(`event:`)?n=e.replace(`event:`,``).trim():e.startsWith(`data:`)?r+=e.replace(`data:`,``).trim():e.startsWith(`id:`)&&(a=e.slice(3).trim());let s=()=>{a!==null&&a!==``&&o({type:`cursor`,id:a,...i.config().backgroundConversations?{checkpoint:{textBlockId:w,openAssistant:x!==null,sealedFlowMessageId:W?.id??null,rawText:T,executionKind:X,executionKindResolved:Z,turnId:Q,iteration:Y,textPhases:[...E],nestedParents:[...D],nestedRaw:[...k],media:[...J].map(([e,t])=>[e,{...t,parts:[...t.parts]}]),artifactContent:[...z].map(([e,t])=>[e,{...t,props:t.props?{...t.props}:void 0}]),artifactTools:[...I]}}:{}})};if(!r){s();continue}let c;try{c=JSON.parse(r)}catch(e){o({type:`error`,error:e instanceof Error?e:/* @__PURE__ */ Error(`Failed to parse chat stream payload`)});continue}let l=typeof c==`object`&&c&&!Array.isArray(c)?c:null,u=n===`message`?typeof l?.type==`string`?l.type:`message`:n;if(i.onSSEEvent?.(u,c),i.parseSSEEvent){C.current=x;let e=await d(i,c,o,C,b,v,ce);if(h!==i.streamGeneration())return;if(f?.throwIfAborted(),C.current&&C.current!==x&&(x=C.current),e){s();continue}}l&&(K.push({...l,type:u}),q()),s()}}q()}finally{i.streamReaders.delete(g),f?.removeEventListener(`abort`,ne),g.releaseLock()}}export{u as preferFinalStructuredContent,a as resolveApproval,o as resumeFlow,ee as streamResponse};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,i as t,l as n,r,s as i}from"./chunk-BlTD-Wgn.js";const a=[`user`,`assistant`,`system`,`operator`];function o(e){if(typeof e!=`string`||e===``)return null;let t=Date.parse(e);return Number.isNaN(t)?null:t}function s(e){return typeof e==`string`?e:void 0}function c(n){if(typeof n!=`object`||!n)return null;let i=n;switch(i.type){case`text`:return typeof i.text==`string`?e(i.text):null;case`image`:return typeof i.image==`string`?t(i.image,{mimeType:s(i.mimeType),alt:s(i.alt)}):null;case`file`:return typeof i.data==`string`&&typeof i.mimeType==`string`&&typeof i.filename==`string`?r(i.data,i.mimeType,i.filename):null;case`audio`:return typeof i.audio==`string`?{type:`audio`,audio:i.audio,...s(i.mimeType)!==void 0&&{mimeType:i.mimeType}}:null;case`video`:return typeof i.video==`string`?{type:`video`,video:i.video,...s(i.mimeType)!==void 0&&{mimeType:i.mimeType}}:null;default:return null}}function l(e,t){let n=o(t),r=e.map(e=>o(e.timestamp)),i=Array(e.length),a=0;for(;a<r.length;){let e=r[a];if(e!==null){i[a]=e,a+=1;continue}let t=a;for(;t+1<r.length&&r[t+1]===null;)t+=1;let o=t-a+1,s=a>0?i[a-1]:null,c=t+1<r.length?r[t+1]:null,l=c!==null&&n!==null?Math.min(c,n):c??n;for(let e=0;e<o;e+=1)i[a+e]=l===null?s===null?0+e:s+e+1:l-(o-e);a=t+1}return i.map(e=>new Date(e).toISOString())}function u(e,t){let r=l(e,t?.beforeCreatedAt),o=[];return e.forEach((e,t)=>{if(typeof e?.id!=`string`||e.id===``||!a.includes(e.role))return;let s=e.role,l=r[t],u=e.author,d=u&&typeof u==`object`?{...typeof u.id==`string`&&{id:u.id},...typeof u.displayName==`string`&&{displayName:u.displayName},...[`human`,`ai`,`system`].includes(u.kind??``)&&{kind:u.kind}}:void 0;if(e.displayAvailable===!1){let t={historyDisplayUnavailable:!0};o.push({id:e.id,role:s,...d&&{author:d},content:``,createdAt:l,agentMetadata:t})}else if(typeof e.displayContent==`string`)o.push({id:e.id,role:s,...d&&{author:d},content:e.displayContent,createdAt:l});else if(typeof e.content==`string`)o.push({id:e.id,role:s,...d&&{author:d},content:e.content,createdAt:l});else if(Array.isArray(e.content)){let t=e.content.map(c).filter(e=>e!==null),r=i(t);o.push({id:e.id,role:s,...d&&{author:d},content:r||(n(t)?`[Image]`:``),createdAt:l,...t.length>0&&{contentParts:t}})}else o.push({id:e.id,role:s,...d&&{author:d},content:``,createdAt:l})}),o}function d(e,t=e.contentParts??e.llmContent??e.rawContent??e.content){let n=e.content;if(typeof n!=`string`)return;let r=e.contentParts??e.llmContent??e.rawContent??n;if(n===``&&(t===r||JSON.stringify(t)===JSON.stringify(r)))return;let i=t;if(typeof i!=`string`||i!==n)return n}function f(e,t){let n=/* @__PURE__ */ new Map;for(let t of e)n.set(t.id,t);for(let e of t)n.set(e.id,e);return[...n.values()].sort((e,t)=>{let n=new Date(e.createdAt).getTime(),r=new Date(t.createdAt).getTime();if(!Number.isNaN(n)&&!Number.isNaN(r)&&n!==r)return n-r;let i=e.sequence??0,a=t.sequence??0;return i===a?e.id.localeCompare(t.id):i-a})}export{u as n,f as r,d as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,r as t}from"./chunk-CdpVP6LZ.js";import{r as n,t as r}from"./chunk-D5BxWOFB.js";import{t as i}from"./chunk-BAdIgC5d.js";import{t as a}from"./chunk-DDZBCAer.js";import{t as o}from"./chunk-Bb3MaswO.js";import{n as s}from"./chunk-Bj8Hnh10.js";import{Ban as c}from"lucide";const l=(e,t)=>`var(--persona-components-approval-${e.split(`.`).join(`-`)}, ${t})`,u=(e,t)=>`var(--persona-consumer-approval-${e.split(`.`).join(`-`)}, ${t})`;function d(n,r){let i=e=>{let r=t(n,`approval.${e}`);return typeof r==`string`?r:void 0},a=(e,t,n)=>i(e)||l(t,u(`requested.text`,n)),o=(t,r)=>i(t)??(e(n,`approval.${r}`)?`var(--persona-components-approval-${r.split(`.`).join(`-`)})`:void 0),s=r===`public`,c=`var(--persona-muted, #6b7280)`,d=s?`var(--persona-primary, #171717)`:`var(--persona-text, #0b0b0b)`,f=s?`var(--persona-feedback-error, var(--persona-palette-colors-error-600))`:`var(--persona-text, #1f2937)`,p=i(`shadow`);return{backgroundColor:o(`backgroundColor`,`requested.background`),borderColor:o(`borderColor`,`requested.border`),shadow:p===void 0?o(`shadow`,`requested.shadow`):p.trim()===``?`none`:p,titleColor:a(`titleColor`,`requested.titleColor`,d),descriptionColor:a(`descriptionColor`,`requested.descriptionColor`,c),reasonColor:i(`reasonColor`)||i(`descriptionColor`)||l(`requested.reasonColor`,u(`requested.text`,c)),parameterBackgroundColor:i(`parameterBackgroundColor`)||l(`requested.parameters.background`,s?`var(--persona-container, #f8fafc)`:`var(--persona-container, rgba(11, 11, 11, 0.04))`),parameterTextColor:a(`parameterTextColor`,`requested.parameters.foreground`,s?`var(--persona-primary, #171717)`:`var(--persona-text, #1f2937)`),approveButtonColor:o(`approveButtonColor`,`approve.background`),approveButtonTextColor:i(`approveButtonTextColor`)||u(`approve.foreground`,`var(--persona-button-primary-fg)`),denyButtonColor:i(`denyButtonColor`)??(s?u(`deny.background`,`transparent`):void 0),denyButtonTextColor:i(`denyButtonTextColor`)||u(`deny.foreground`,f),denyBorderColor:i(`denyButtonTextColor`)||u(`deny.foreground`,`var(--persona-palette-colors-error-200)`),pendingIconColor:i(`titleColor`)||l(`requested.titleColor`,u(`requested.text`,`currentColor`))}}let f;const p=(...e)=>f?.render(...e)??null,m=(...e)=>f?.node(...e)??null;let h;const g=()=>{if(!h)throw Error(`Approval UI requires core popover dependencies.`);return h};let _=()=>void 0;const v=e=>{_=e.webMcpToolTitle,e.icons&&(f=e.icons),e.popover&&(h=e.popover)},y=e=>_(e),b=e=>{let t=(e.startsWith(`webmcp:`)?e.slice(i.length):e).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).split(/[_\-\s.]+/).filter(Boolean);if(t.length===0)return e;let n=t.join(` `).toLowerCase();return n.charAt(0).toUpperCase()+n.slice(1)},x=e=>e?.approval===!1?void 0:e?.approval,S=(e,t,n)=>{let r=x(n)?.detailsDisplay??`collapsed`;return t.get(e)??r===`expanded`},C=(e,t,n)=>{let r=x(n);e.setAttribute(`aria-expanded`,t?`true`:`false`);let i=e.querySelector(`[data-approval-details-label]`);i&&(i.textContent=t?r?.hideDetailsLabel??`Hide details`:r?.showDetailsLabel??`Show details`);let a=e.querySelector(`[data-approval-details-chevron]`);if(a){a.innerHTML=``;let e=p(t?`chevron-up`:`chevron-down`,14,`currentColor`,2);e&&a.appendChild(e)}},w=(e,t,n,r=/* @__PURE__ */ new Map)=>{let i=t.querySelector(`button[data-bubble-type="approval"]`),a=t.querySelector(`[data-approval-details]`);if(!i||!a)return;let o=S(e,r,n);C(i,o,n),a.style.display=o?``:`none`},T=(e,t,n,r)=>{let i=d(n,`public`);if(D(t,n),!r)return;let a=t.querySelector(`[data-approval-status]`);if(a){a.textContent=r.status===`approved`?`Approved`:r.status===`denied`?`Denied`:r.status===`timeout`&&r.interrupted?`Interrupted`:r.status===`timeout`?`Timeout`:`Pending`;let e=r.status===`approved`?`success`:r.status===`denied`?`error`:r.status===`timeout`?`warning`:void 0;e&&(a.className=`persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium`,a.style.backgroundColor=`var(--persona-palette-colors-${e}-100)`,a.style.color=`var(--persona-palette-colors-${e}-700)`),a.setAttribute(`data-approval-status`,r.status)}let o=t.querySelector(`[data-approval-icon]`);if(o){o.innerHTML=``;let e=r.status===`denied`?`shield-x`:r.status===`timeout`?`shield-alert`:`shield-check`,t=r.status===`approved`?`var(--persona-feedback-success, var(--persona-palette-colors-success-600))`:r.status===`denied`?`var(--persona-feedback-error, var(--persona-palette-colors-error-600))`:r.status===`timeout`?`var(--persona-feedback-warning, var(--persona-palette-colors-warning-600))`:i.pendingIconColor,n=p(e,20,t,2);n&&o.appendChild(n)}let s=t.querySelector(`[data-approval-buttons]`);s&&(s.style.display=r.status===`pending`?``:`none`)},E=(e,t,i=/* @__PURE__ */ new Map)=>{let s=e.approval,c=x(t),l=s?.status===`pending`,u=r(`div`,`persona-approval-bubble persona-w-full persona-rounded-2xl persona-border persona-shadow-sm persona-overflow-hidden`);if(u.id=`bubble-${e.id}`,u.setAttribute(`data-message-id`,e.id),!s)return D(u,t),u;let d=r(`div`,`persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3`),f=n(`div`,{className:`persona-flex-shrink-0 persona-mt-0.5`,attrs:{"data-approval-icon":`true`}}),m=r(`div`,`persona-flex-1 persona-min-w-0`),h=r(`div`,`persona-flex persona-items-center persona-gap-2`),g=n(`span`,{className:`persona-text-sm persona-font-medium persona-text-persona-primary`,attrs:{"data-approval-title":`true`},text:c?.title??`Approval Required`});if(h.appendChild(g),!l){let e=r(`span`,`persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium`);e.setAttribute(`data-approval-status`,s.status),h.appendChild(e)}if(m.appendChild(h),s.status===`timeout`&&s.interrupted){let e=r(`p`,`persona-text-sm`);e.textContent=a,m.appendChild(e)}let _=s.toolType===`webmcp`||s.toolName.startsWith(`webmcp:`)?y(s.toolName):void 0,v=c?.formatDescription?.({toolName:s.toolName,toolType:s.toolType,description:s.description,parameters:s.parameters,..._?{displayTitle:_}:{},...s.reason?{reason:s.reason}:{}}),w=!s.toolName,E=v||(w?s.description:`The assistant wants to use “${_??b(s.toolName)}”.`),O=n(`p`,{className:`persona-text-sm persona-mt-0.5 persona-text-persona-muted`,attrs:{"data-approval-summary":`true`},text:E});if(m.appendChild(O),s.reason){let e=r(`p`,`persona-text-sm persona-mt-1 persona-text-persona-muted`);e.setAttribute(`data-approval-reason`,`true`);let t=r(`span`,`persona-font-medium`);t.textContent=`${c?.reasonLabel??`Agent's stated reason:`} `,e.appendChild(t),e.appendChild(document.createTextNode(s.reason)),m.appendChild(e)}let k=c?.detailsDisplay??`collapsed`,A=!!s.description&&!w,j=A||!!s.parameters;if(k!==`hidden`&&j){let n=S(e.id,i,t),a=r(`button`,`persona-inline-flex persona-items-center persona-gap-1 persona-mt-1 persona-p-0 persona-border-none persona-bg-transparent persona-text-xs persona-font-medium persona-cursor-pointer persona-text-persona-muted`);a.type=`button`,a.setAttribute(`data-expand-header`,`true`),a.setAttribute(`data-bubble-type`,`approval`);let c=r(`span`);c.setAttribute(`data-approval-details-label`,`true`);let l=r(`span`,`persona-inline-flex persona-items-center`);l.setAttribute(`data-approval-details-chevron`,`true`),a.append(c,l),C(a,n,t),m.appendChild(a);let u=r(`div`);if(u.setAttribute(`data-approval-details`,`true`),u.style.display=n?``:`none`,A){let e=r(`p`,`persona-text-sm persona-mt-1 persona-text-persona-muted`);e.setAttribute(`data-approval-description`,`true`),e.textContent=s.description,u.appendChild(e)}if(s.parameters){let e=r(`pre`,`persona-mt-2 persona-text-xs persona-p-2 persona-rounded persona-overflow-x-auto persona-max-h-32 persona-bg-persona-container persona-text-persona-primary`);e.setAttribute(`data-approval-parameters`,`true`),e.style.fontSize=`0.75rem`,e.style.lineHeight=`1rem`,e.textContent=o(s.parameters),u.appendChild(e)}m.appendChild(u)}if(l){let e=r(`div`,`persona-flex persona-gap-2 persona-mt-2`);e.setAttribute(`data-approval-buttons`,`true`);for(let t of[`approve`,`deny`]){let r=n(`button`,{className:`persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-cursor-pointer`+(t===`approve`?` persona-border-none`:``),attrs:{type:`button`,"data-approval-action":t}}),i=p(t===`approve`?`shield-check`:`shield-x`,14,`currentColor`,2);i&&(i.style.marginRight=`4px`,r.appendChild(i)),r.appendChild(document.createTextNode(t===`approve`?c?.approveLabel??`Approve`:c?.denyLabel??`Deny`)),e.appendChild(r)}m.appendChild(e)}return d.append(f,m),u.appendChild(d),T(e.id,u,t,s),u},D=(e,t)=>{let n=d(t,`public`);e.style.backgroundColor=n.backgroundColor??`var(--persona-approval-bg)`,e.style.borderColor=n.borderColor??`var(--persona-approval-border)`,e.style.boxShadow=n.shadow===void 0?`var(--persona-approval-shadow)`:n.shadow.trim()||`none`;let r=(t,n)=>{e.querySelectorAll(t).forEach(e=>{e.style.color=n??``})};e.querySelector(`[data-approval-status]`)||e.querySelector(`[data-approval-icon] svg`)?.setAttribute(`stroke`,n.pendingIconColor),r(`[data-approval-title]`,n.titleColor),r(`[data-approval-summary], [data-approval-description], button[data-bubble-type='approval']`,n.descriptionColor),r(`[data-approval-reason]`,n.reasonColor),r(`[data-approval-parameters]`,n.parameterTextColor),e.querySelectorAll(`[data-approval-parameters]`).forEach(e=>{e.style.backgroundColor=n.parameterBackgroundColor??``});for(let t of[`approve`,`deny`]){let r=e.querySelector(`[data-approval-action="${t}"]`);if(!r)continue;let i=t===`approve`?n.approveButtonTextColor:n.denyButtonTextColor;r.style.backgroundColor=(t===`approve`?n.approveButtonColor??`var(--persona-approval-approve-bg)`:n.denyButtonColor)??``,r.style.color=i??``,r.querySelector(`svg`)?.setAttribute(`stroke`,i??`currentColor`),t===`deny`&&(r.style.border=`1px solid ${n.denyBorderColor}`)}};let O=0;const k=()=>({disclosurePrefix:`approval-${++O}`,keyHandlers:/* @__PURE__ */ new Map,popovers:/* @__PURE__ */ new Map,pendingOrder:[],latestPendingApprovalId:null}),A=(e,t)=>{let n=e.keyHandlers.get(t);n&&(document.removeEventListener(`keydown`,n),e.keyHandlers.delete(t));let r=e.popovers.get(t);r&&(r.destroy(),e.popovers.delete(t))},j=(e,t)=>{A(e,t);let n=e.pendingOrder.indexOf(t);n!==-1&&e.pendingOrder.splice(n,1),e.latestPendingApprovalId===t&&(e.latestPendingApprovalId=e.pendingOrder.length?e.pendingOrder[e.pendingOrder.length-1]:null)},M=(e,t,n)=>{let r=n?.detailsDisplay??`collapsed`;return t.get(e)??r===`expanded`},N=e=>{let t=r(`span`,`persona-approval-kbd`);return t.textContent=e,t},P=(e,t)=>{let n=r(`span`,`persona-approval-title`);t?.titleColor&&(n.style.color=t.titleColor);let i=e.toolType===`webmcp`||e.toolName.startsWith(`webmcp:`)?y(e.toolName):void 0,a=t?.formatDescription?.({toolName:e.toolName,toolType:e.toolType,description:e.description??``,parameters:e.parameters,...i?{displayTitle:i}:{},...e.reason?{reason:e.reason}:{}});if(a)return n.textContent=a,n;let o=i??b(e.toolName),s=e.toolType&&e.toolType!==`webmcp`?e.toolType:null;n.append(`The assistant wants to use `);let c=document.createElement(`strong`);if(c.textContent=o,n.appendChild(c),s){n.append(` from `);let e=document.createElement(`strong`);e.textContent=s,n.appendChild(e)}return n},F=e=>{let t=r(`div`,`persona-approval-resolved`),i=m(c,15,`currentColor`,2);i&&t.appendChild(i);let o=r(`span`,`persona-approval-resolved-name`);o.textContent=e.toolName?b(e.toolName):`Tool`;let s=e.status===`timeout`&&e.interrupted?` approval expired. ${a}`:e.status===`timeout`?` timed out`:` denied`;return t.appendChild(n(`span`,{className:`persona-approval-resolved-text`},o,s)),t},I=(e,t,n,i,a,s,c,l,u=!1,d)=>{let f=d!==void 0,m=r(`div`,f?`persona-approval-row persona-activity-row`:`persona-approval-card persona-shadow-sm`);m.id=`bubble-${n.id}`,m.setAttribute(`data-message-id`,n.id),m.setAttribute(`data-bubble-type`,`approval`),a?.backgroundColor&&(m.style.background=a.backgroundColor),a?.borderColor&&(m.style.borderColor=a.borderColor),a?.shadow!==void 0&&(m.style.boxShadow=a.shadow.trim()===``?`none`:a.shadow);let h=a?.detailsDisplay??`collapsed`,_=!!i.description&&h!==`hidden`,v=i.parameters!=null&&h!==`hidden`&&!u,x=!!i.reason&&h!==`hidden`,S=_||v||f&&x,C=S&&M(n.id,t,a),w=a?.showDetailsLabel??`Show details`,T=a?.hideDetailsLabel??`Hide details`,E=r(f&&!S?`div`:`button`,`persona-approval-head`);E instanceof HTMLButtonElement&&(E.type=`button`),S?(E.setAttribute(`data-action`,`toggle-params`),E.setAttribute(`aria-expanded`,C?`true`:`false`),E.setAttribute(`aria-label`,C?T:w)):E.setAttribute(`data-static`,`true`);let D=r(`span`,`persona-approval-logo`),O=p(`shield-check`,16,`currentColor`,2);O&&D.appendChild(O),f||E.appendChild(D);let k=f?r(`span`,`persona-approval-title`):P(i,a),A=``;if(f){let e=(i.toolType===`webmcp`||i.toolName.startsWith(`webmcp:`)?y(i.toolName):void 0)??b(i.toolName),t=r(`span`,`persona-approval-status`);t.setAttribute(`role`,`status`),t.textContent=d,k.append(e,` · `,t),a?.titleColor&&(k.style.color=a.titleColor),A=`${e} · ${d}`}if(S){let e=r(`span`,`persona-approval-toggle`);e.setAttribute(`aria-hidden`,`true`);let t=p(`chevron-down`,14,`currentColor`,2);t&&e.appendChild(t),k.append(` `),k.appendChild(e)}E.appendChild(k),m.appendChild(E);let F=r(`div`,`persona-approval-body`),I;if(S){let e=r(`div`,`persona-approval-details`);e.setAttribute(`data-role`,`params`),e.hidden=!C;let t=t=>{let n=r(`div`,`persona-tool-detail`),i=r(`div`,`persona-tool-detail-label`);return i.textContent=t,n.appendChild(i),e.appendChild(n),n},n=f&&v?t(`Request`):e;if(f&&(_||x)&&(I=t(`Context`)),_){let t=r(`p`,`persona-approval-desc`);a?.descriptionColor&&(t.style.color=a.descriptionColor),t.textContent=i.description,(I??e).appendChild(t)}if(v){let e=r(`pre`,f?`persona-approval-params persona-tool-detail-value persona-tool-detail-code`:`persona-approval-params`);a?.parameterBackgroundColor&&(e.style.background=a.parameterBackgroundColor),a?.parameterTextColor&&(e.style.color=a.parameterTextColor),e.textContent=o(i.parameters),n.appendChild(e)}F.appendChild(e)}if(u){let e=r(`div`,`persona-approval-call`);e.setAttribute(`data-role`,`raw-call`);let t=r(`code`,`persona-approval-tool-name`);if(t.textContent=i.toolName,e.appendChild(t),i.parameters!=null){let t=r(`pre`,`persona-approval-params`);a?.parameterBackgroundColor&&(t.style.background=a.parameterBackgroundColor),a?.parameterTextColor&&(t.style.color=a.parameterTextColor),t.textContent=o(i.parameters),e.appendChild(t)}F.appendChild(e)}if(i.reason){let e=r(`p`,`persona-approval-reason`);a?.reasonColor?e.style.color=a.reasonColor:a?.descriptionColor&&(e.style.color=a.descriptionColor);let t=r(`span`,`persona-approval-reason-label`);t.textContent=`${a?.reasonLabel??`Agent's stated reason:`} `,e.append(t,document.createTextNode(i.reason)),f?I?.appendChild(e):F.appendChild(e)}let L=e=>{E.setAttribute(`aria-expanded`,String(e));let t=e?T:w;E.setAttribute(`aria-label`,f?`${A}. ${t}`:t)},R=()=>{let e=m.querySelector(`[data-role="params"]`);if(!e)return;let r=e.hidden!==!1;e.hidden=!r,f&&(F.hidden=!r),L(r),t.set(n.id,r)};if(f){if(S){let t=F.querySelector(`[data-role="params"]`);t.id=`${e.disclosurePrefix}-details-${n.id}`,E.setAttribute(`aria-controls`,t.id),L(C),F.hidden=!C,m.appendChild(F),E.addEventListener(`click`,R)}return m}let z=r(`div`,`persona-approval-actions`),B=a?.primaryAction===`allow-once`,V=a?.keyboardShortcuts!==!1&&a?.keyboardShortcuts!==`focused`,H=null,U=e=>{a?.approveButtonColor&&(e.style.background=a.approveButtonColor),a?.approveButtonTextColor&&(e.style.color=a.approveButtonTextColor)},W=r(`button`,`persona-approval-deny`);if(W.type=`button`,W.setAttribute(`data-action`,`deny`),a?.denyButtonColor&&(W.style.background=a.denyButtonColor),a?.denyButtonTextColor&&(W.style.color=a.denyButtonTextColor),W.append(a?.denyLabel??`Deny`),l){let t=r(`div`,`persona-approval-split`),i=r(`button`,`persona-approval-primary`);i.type=`button`,i.setAttribute(`data-action`,B?`allow`:`always`),U(i),i.append(a?.approveLabel??(B?`Allow once`:`Always allow`)),V&&i.append(N(`⏎`));let o=r(`button`,`persona-approval-caret`);o.type=`button`,o.setAttribute(`data-action`,`toggle-menu`),o.setAttribute(`aria-label`,`More options`),U(o);let c=p(`chevron-down`,15,`currentColor`,2);c&&o.appendChild(c),t.append(i,o),z.append(t,W),V&&W.append(N(`Esc`));let l=r(`div`,`persona-approval-menu`),u=r(`button`,`persona-approval-menu-item`);u.type=`button`,u.append(B?a?.alwaysAllowLabel??`Always allow`:`Allow once`),!B&&V&&u.append(N(`⌘⏎`)),l.appendChild(u),H=g().createPopover({anchor:t,content:l,placement:`bottom-start`,matchAnchorWidth:!0}),e.popovers.set(n.id,H),u.addEventListener(`click`,()=>{j(e,n.id),B?s({remember:!0}):s()})}else{let e=r(`button`,`persona-approval-primary persona-approval-primary--solo`);e.type=`button`,e.setAttribute(`data-action`,`allow`),U(e),e.append(a?.approveLabel??(B?`Allow once`:`Allow`)),z.append(e,W)}return F.appendChild(z),m.appendChild(F),m.addEventListener(`click`,t=>{let r=t.target instanceof Element?t.target.closest(`[data-action]`):null;if(!r)return;let i=r.getAttribute(`data-action`);i===`toggle-params`?R():i===`toggle-menu`?H?.toggle():i===`always`?(j(e,n.id),s({remember:!0})):i===`allow`?(j(e,n.id),s()):i===`deny`&&(j(e,n.id),c())}),m},L=(e=/* @__PURE__ */ new Map)=>{let t=k();return{plugin:{id:`persona-built-in-approval`,renderApproval:({message:n,approve:i,deny:a,config:o,execution:c,signal:l})=>{let u=n?.approval;if(!u)return null;let f={...s(o),...d(o,`plugin`)},p=!1,m=i,h=a;if(i=e=>{p||l?.aborted||u.status!==`pending`||(p=!0,e===void 0?m():m(e))},a=e=>{p||l?.aborted||u.status!==`pending`||(p=!0,e===void 0?h():h(e))},u.status!==`pending`){j(t,n.id);let o=u.status===`denied`?`Denied`:u.status===`timeout`?`Timed out`:c?.status===`running`?`Allowed · running`:c?.status===`completed`?`Completed`:c?.status===`failed`?`Failed`:`Allowed`;if(f?.resolvedDisplay===`row`)return I(t,e,n,u,f,i,a,!1,!1,o);if(f?.resolvedDisplay===`status-line`){let s=I(t,e,n,u,f,i,a,!1),c=r(`div`,`persona-approval-status`);return c.setAttribute(`role`,`status`),c.textContent=o,s.querySelector(`.persona-approval-actions`)?.replaceWith(c),s}if(u.status===`approved`){let e=document.createElement(`div`);return e.style.display=`none`,e}return F(u)}A(t,n.id);let _=!!o?.clientToken,v=f?.enableAlwaysAllow===!0,y=I(t,e,n,u,f,i,a,v,_),b=f?.keyboardShortcuts??`legacy`;if(b===`focused`||b===`legacy`&&v){t.pendingOrder.includes(n.id)||t.pendingOrder.push(n.id),t.latestPendingApprovalId=t.pendingOrder[t.pendingOrder.length-1];let e=e=>{if(!(e.defaultPrevented||e.isComposing||g().isEditableEventTarget(e))){if(b===`focused`){if(!e.composedPath().includes(y)||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;let t=e.composedPath()[0];if(e.key===`Enter`&&t instanceof Element&&t.closest(`[data-action]`)?.getAttribute(`data-action`)!==`allow`)return}(b!==`legacy`||n.id===t.latestPendingApprovalId)&&(e.key===`Escape`||e.key===`Enter`)&&(e.preventDefault(),e.stopImmediatePropagation(),j(t,n.id),e.key===`Escape`?a():b===`focused`||f?.primaryAction===`allow-once`||e.metaKey||e.ctrlKey?i():i({remember:!0}))}};t.keyHandlers.set(n.id,e),document.addEventListener(`keydown`,e)}return l?.addEventListener(`abort`,()=>j(t,n.id),{once:!0}),y}},teardown:()=>{for(let e of[...t.keyHandlers.keys(),...t.popovers.keys()])j(t,e);t.latestPendingApprovalId=null}}};function R(e,t,r){let i=n(`div`,{className:`persona-error-detail persona-message-bubble`});i.innerHTML=t({text:e.content,message:e,streaming:!1});let a=n(`summary`,{className:`persona-error-summary`},i,n(`span`,{className:`persona-error-more`,text:`Show more`}),n(`span`,{className:`persona-error-less`,text:`Show less`}));return n(`div`,{className:`persona-error-block`,attrs:{role:`alert`,"data-message-id":e.id,"data-actions-for":e.id}},n(`strong`,{className:`persona-error-title`,text:`Something went wrong`}),n(`details`,{className:`persona-error-details`},a),r?n(`button`,{className:`persona-message-action-btn persona-error-retry`,text:`Retry`,attrs:{type:`button`,"data-action":`regenerate`,"aria-label":`Retry response`}}):null)}export{E as createApprovalBubble,L as createBuiltInApprovalPlugin,R as createErrorBlock,b as humanizeToolName,v as initApprovalUi,w as updateApprovalDetailsUI};
|
|
1
|
+
import{a as e,r as t}from"./chunk-CEPM3FOp.js";import{r as n,t as r}from"./chunk-D5BxWOFB.js";import{t as i}from"./chunk-BAdIgC5d.js";import{t as a}from"./chunk-DDZBCAer.js";import{t as o}from"./chunk-Bb3MaswO.js";import{n as s}from"./chunk-Bj8Hnh10.js";import{Ban as c}from"lucide";const l=(e,t)=>`var(--persona-components-approval-${e.split(`.`).join(`-`)}, ${t})`,u=(e,t)=>`var(--persona-consumer-approval-${e.split(`.`).join(`-`)}, ${t})`;function d(n,r){let i=e=>{let r=t(n,`approval.${e}`);return typeof r==`string`?r:void 0},a=(e,t,n)=>i(e)||l(t,u(`requested.text`,n)),o=(t,r)=>i(t)??(e(n,`approval.${r}`)?`var(--persona-components-approval-${r.split(`.`).join(`-`)})`:void 0),s=r===`public`,c=`var(--persona-muted, #6b7280)`,d=s?`var(--persona-primary, #171717)`:`var(--persona-text, #0b0b0b)`,f=s?`var(--persona-feedback-error, var(--persona-palette-colors-error-600))`:`var(--persona-text, #1f2937)`,p=i(`shadow`);return{backgroundColor:o(`backgroundColor`,`requested.background`),borderColor:o(`borderColor`,`requested.border`),shadow:p===void 0?o(`shadow`,`requested.shadow`):p.trim()===``?`none`:p,titleColor:a(`titleColor`,`requested.titleColor`,d),descriptionColor:a(`descriptionColor`,`requested.descriptionColor`,c),reasonColor:i(`reasonColor`)||i(`descriptionColor`)||l(`requested.reasonColor`,u(`requested.text`,c)),parameterBackgroundColor:i(`parameterBackgroundColor`)||l(`requested.parameters.background`,s?`var(--persona-container, #f8fafc)`:`var(--persona-container, rgba(11, 11, 11, 0.04))`),parameterTextColor:a(`parameterTextColor`,`requested.parameters.foreground`,s?`var(--persona-primary, #171717)`:`var(--persona-text, #1f2937)`),approveButtonColor:o(`approveButtonColor`,`approve.background`),approveButtonTextColor:i(`approveButtonTextColor`)||u(`approve.foreground`,`var(--persona-button-primary-fg)`),denyButtonColor:i(`denyButtonColor`)??(s?u(`deny.background`,`transparent`):void 0),denyButtonTextColor:i(`denyButtonTextColor`)||u(`deny.foreground`,f),denyBorderColor:i(`denyButtonTextColor`)||u(`deny.foreground`,`var(--persona-palette-colors-error-200)`),pendingIconColor:i(`titleColor`)||l(`requested.titleColor`,u(`requested.text`,`currentColor`))}}let f;const p=(...e)=>f?.render(...e)??null,m=(...e)=>f?.node(...e)??null;let h;const g=()=>{if(!h)throw Error(`Approval UI requires core popover dependencies.`);return h};let _=()=>void 0;const v=e=>{_=e.webMcpToolTitle,e.icons&&(f=e.icons),e.popover&&(h=e.popover)},y=e=>_(e),b=e=>{let t=(e.startsWith(`webmcp:`)?e.slice(i.length):e).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).split(/[_\-\s.]+/).filter(Boolean);if(t.length===0)return e;let n=t.join(` `).toLowerCase();return n.charAt(0).toUpperCase()+n.slice(1)},x=e=>e?.approval===!1?void 0:e?.approval,S=(e,t,n)=>{let r=x(n)?.detailsDisplay??`collapsed`;return t.get(e)??r===`expanded`},C=(e,t,n)=>{let r=x(n);e.setAttribute(`aria-expanded`,t?`true`:`false`);let i=e.querySelector(`[data-approval-details-label]`);i&&(i.textContent=t?r?.hideDetailsLabel??`Hide details`:r?.showDetailsLabel??`Show details`);let a=e.querySelector(`[data-approval-details-chevron]`);if(a){a.innerHTML=``;let e=p(t?`chevron-up`:`chevron-down`,14,`currentColor`,2);e&&a.appendChild(e)}},w=(e,t,n,r=/* @__PURE__ */ new Map)=>{let i=t.querySelector(`button[data-bubble-type="approval"]`),a=t.querySelector(`[data-approval-details]`);if(!i||!a)return;let o=S(e,r,n);C(i,o,n),a.style.display=o?``:`none`},T=(e,t,n,r)=>{let i=d(n,`public`);if(D(t,n),!r)return;let a=t.querySelector(`[data-approval-status]`);if(a){a.textContent=r.status===`approved`?`Approved`:r.status===`denied`?`Denied`:r.status===`timeout`&&r.interrupted?`Interrupted`:r.status===`timeout`?`Timeout`:`Pending`;let e=r.status===`approved`?`success`:r.status===`denied`?`error`:r.status===`timeout`?`warning`:void 0;e&&(a.className=`persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium`,a.style.backgroundColor=`var(--persona-palette-colors-${e}-100)`,a.style.color=`var(--persona-palette-colors-${e}-700)`),a.setAttribute(`data-approval-status`,r.status)}let o=t.querySelector(`[data-approval-icon]`);if(o){o.innerHTML=``;let e=r.status===`denied`?`shield-x`:r.status===`timeout`?`shield-alert`:`shield-check`,t=r.status===`approved`?`var(--persona-feedback-success, var(--persona-palette-colors-success-600))`:r.status===`denied`?`var(--persona-feedback-error, var(--persona-palette-colors-error-600))`:r.status===`timeout`?`var(--persona-feedback-warning, var(--persona-palette-colors-warning-600))`:i.pendingIconColor,n=p(e,20,t,2);n&&o.appendChild(n)}let s=t.querySelector(`[data-approval-buttons]`);s&&(s.style.display=r.status===`pending`?``:`none`)},E=(e,t,i=/* @__PURE__ */ new Map)=>{let s=e.approval,c=x(t),l=s?.status===`pending`,u=r(`div`,`persona-approval-bubble persona-w-full persona-rounded-2xl persona-border persona-shadow-sm persona-overflow-hidden`);if(u.id=`bubble-${e.id}`,u.setAttribute(`data-message-id`,e.id),!s)return D(u,t),u;let d=r(`div`,`persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3`),f=n(`div`,{className:`persona-flex-shrink-0 persona-mt-0.5`,attrs:{"data-approval-icon":`true`}}),m=r(`div`,`persona-flex-1 persona-min-w-0`),h=r(`div`,`persona-flex persona-items-center persona-gap-2`),g=n(`span`,{className:`persona-text-sm persona-font-medium persona-text-persona-primary`,attrs:{"data-approval-title":`true`},text:c?.title??`Approval Required`});if(h.appendChild(g),!l){let e=r(`span`,`persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium`);e.setAttribute(`data-approval-status`,s.status),h.appendChild(e)}if(m.appendChild(h),s.status===`timeout`&&s.interrupted){let e=r(`p`,`persona-text-sm`);e.textContent=a,m.appendChild(e)}let _=s.toolType===`webmcp`||s.toolName.startsWith(`webmcp:`)?y(s.toolName):void 0,v=c?.formatDescription?.({toolName:s.toolName,toolType:s.toolType,description:s.description,parameters:s.parameters,..._?{displayTitle:_}:{},...s.reason?{reason:s.reason}:{}}),w=!s.toolName,E=v||(w?s.description:`The assistant wants to use “${_??b(s.toolName)}”.`),O=n(`p`,{className:`persona-text-sm persona-mt-0.5 persona-text-persona-muted`,attrs:{"data-approval-summary":`true`},text:E});if(m.appendChild(O),s.reason){let e=r(`p`,`persona-text-sm persona-mt-1 persona-text-persona-muted`);e.setAttribute(`data-approval-reason`,`true`);let t=r(`span`,`persona-font-medium`);t.textContent=`${c?.reasonLabel??`Agent's stated reason:`} `,e.appendChild(t),e.appendChild(document.createTextNode(s.reason)),m.appendChild(e)}let k=c?.detailsDisplay??`collapsed`,A=!!s.description&&!w,j=A||!!s.parameters;if(k!==`hidden`&&j){let n=S(e.id,i,t),a=r(`button`,`persona-inline-flex persona-items-center persona-gap-1 persona-mt-1 persona-p-0 persona-border-none persona-bg-transparent persona-text-xs persona-font-medium persona-cursor-pointer persona-text-persona-muted`);a.type=`button`,a.setAttribute(`data-expand-header`,`true`),a.setAttribute(`data-bubble-type`,`approval`);let c=r(`span`);c.setAttribute(`data-approval-details-label`,`true`);let l=r(`span`,`persona-inline-flex persona-items-center`);l.setAttribute(`data-approval-details-chevron`,`true`),a.append(c,l),C(a,n,t),m.appendChild(a);let u=r(`div`);if(u.setAttribute(`data-approval-details`,`true`),u.style.display=n?``:`none`,A){let e=r(`p`,`persona-text-sm persona-mt-1 persona-text-persona-muted`);e.setAttribute(`data-approval-description`,`true`),e.textContent=s.description,u.appendChild(e)}if(s.parameters){let e=r(`pre`,`persona-mt-2 persona-text-xs persona-p-2 persona-rounded persona-overflow-x-auto persona-max-h-32 persona-bg-persona-container persona-text-persona-primary`);e.setAttribute(`data-approval-parameters`,`true`),e.style.fontSize=`0.75rem`,e.style.lineHeight=`1rem`,e.textContent=o(s.parameters),u.appendChild(e)}m.appendChild(u)}if(l){let e=r(`div`,`persona-flex persona-gap-2 persona-mt-2`);e.setAttribute(`data-approval-buttons`,`true`);for(let t of[`approve`,`deny`]){let r=n(`button`,{className:`persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-cursor-pointer`+(t===`approve`?` persona-border-none`:``),attrs:{type:`button`,"data-approval-action":t}}),i=p(t===`approve`?`shield-check`:`shield-x`,14,`currentColor`,2);i&&(i.style.marginRight=`4px`,r.appendChild(i)),r.appendChild(document.createTextNode(t===`approve`?c?.approveLabel??`Approve`:c?.denyLabel??`Deny`)),e.appendChild(r)}m.appendChild(e)}return d.append(f,m),u.appendChild(d),T(e.id,u,t,s),u},D=(e,t)=>{let n=d(t,`public`);e.style.backgroundColor=n.backgroundColor??`var(--persona-approval-bg)`,e.style.borderColor=n.borderColor??`var(--persona-approval-border)`,e.style.boxShadow=n.shadow===void 0?`var(--persona-approval-shadow)`:n.shadow.trim()||`none`;let r=(t,n)=>{e.querySelectorAll(t).forEach(e=>{e.style.color=n??``})};e.querySelector(`[data-approval-status]`)||e.querySelector(`[data-approval-icon] svg`)?.setAttribute(`stroke`,n.pendingIconColor),r(`[data-approval-title]`,n.titleColor),r(`[data-approval-summary], [data-approval-description], button[data-bubble-type='approval']`,n.descriptionColor),r(`[data-approval-reason]`,n.reasonColor),r(`[data-approval-parameters]`,n.parameterTextColor),e.querySelectorAll(`[data-approval-parameters]`).forEach(e=>{e.style.backgroundColor=n.parameterBackgroundColor??``});for(let t of[`approve`,`deny`]){let r=e.querySelector(`[data-approval-action="${t}"]`);if(!r)continue;let i=t===`approve`?n.approveButtonTextColor:n.denyButtonTextColor;r.style.backgroundColor=(t===`approve`?n.approveButtonColor??`var(--persona-approval-approve-bg)`:n.denyButtonColor)??``,r.style.color=i??``,r.querySelector(`svg`)?.setAttribute(`stroke`,i??`currentColor`),t===`deny`&&(r.style.border=`1px solid ${n.denyBorderColor}`)}};let O=0;const k=()=>({disclosurePrefix:`approval-${++O}`,keyHandlers:/* @__PURE__ */ new Map,popovers:/* @__PURE__ */ new Map,pendingOrder:[],latestPendingApprovalId:null}),A=(e,t)=>{let n=e.keyHandlers.get(t);n&&(document.removeEventListener(`keydown`,n),e.keyHandlers.delete(t));let r=e.popovers.get(t);r&&(r.destroy(),e.popovers.delete(t))},j=(e,t)=>{A(e,t);let n=e.pendingOrder.indexOf(t);n!==-1&&e.pendingOrder.splice(n,1),e.latestPendingApprovalId===t&&(e.latestPendingApprovalId=e.pendingOrder.length?e.pendingOrder[e.pendingOrder.length-1]:null)},M=(e,t,n)=>{let r=n?.detailsDisplay??`collapsed`;return t.get(e)??r===`expanded`},N=e=>{let t=r(`span`,`persona-approval-kbd`);return t.textContent=e,t},P=(e,t)=>{let n=r(`span`,`persona-approval-title`);t?.titleColor&&(n.style.color=t.titleColor);let i=e.toolType===`webmcp`||e.toolName.startsWith(`webmcp:`)?y(e.toolName):void 0,a=t?.formatDescription?.({toolName:e.toolName,toolType:e.toolType,description:e.description??``,parameters:e.parameters,...i?{displayTitle:i}:{},...e.reason?{reason:e.reason}:{}});if(a)return n.textContent=a,n;let o=i??b(e.toolName),s=e.toolType&&e.toolType!==`webmcp`?e.toolType:null;n.append(`The assistant wants to use `);let c=document.createElement(`strong`);if(c.textContent=o,n.appendChild(c),s){n.append(` from `);let e=document.createElement(`strong`);e.textContent=s,n.appendChild(e)}return n},F=e=>{let t=r(`div`,`persona-approval-resolved`),i=m(c,15,`currentColor`,2);i&&t.appendChild(i);let o=r(`span`,`persona-approval-resolved-name`);o.textContent=e.toolName?b(e.toolName):`Tool`;let s=e.status===`timeout`&&e.interrupted?` approval expired. ${a}`:e.status===`timeout`?` timed out`:` denied`;return t.appendChild(n(`span`,{className:`persona-approval-resolved-text`},o,s)),t},I=(e,t,n,i,a,s,c,l,u=!1,d)=>{let f=d!==void 0,m=r(`div`,f?`persona-approval-row persona-activity-row`:`persona-approval-card persona-shadow-sm`);m.id=`bubble-${n.id}`,m.setAttribute(`data-message-id`,n.id),m.setAttribute(`data-bubble-type`,`approval`),a?.backgroundColor&&(m.style.background=a.backgroundColor),a?.borderColor&&(m.style.borderColor=a.borderColor),a?.shadow!==void 0&&(m.style.boxShadow=a.shadow.trim()===``?`none`:a.shadow);let h=a?.detailsDisplay??`collapsed`,_=!!i.description&&h!==`hidden`,v=i.parameters!=null&&h!==`hidden`&&!u,x=!!i.reason&&h!==`hidden`,S=_||v||f&&x,C=S&&M(n.id,t,a),w=a?.showDetailsLabel??`Show details`,T=a?.hideDetailsLabel??`Hide details`,E=r(f&&!S?`div`:`button`,`persona-approval-head`);E instanceof HTMLButtonElement&&(E.type=`button`),S?(E.setAttribute(`data-action`,`toggle-params`),E.setAttribute(`aria-expanded`,C?`true`:`false`),E.setAttribute(`aria-label`,C?T:w)):E.setAttribute(`data-static`,`true`);let D=r(`span`,`persona-approval-logo`),O=p(`shield-check`,16,`currentColor`,2);O&&D.appendChild(O),f||E.appendChild(D);let k=f?r(`span`,`persona-approval-title`):P(i,a),A=``;if(f){let e=(i.toolType===`webmcp`||i.toolName.startsWith(`webmcp:`)?y(i.toolName):void 0)??b(i.toolName),t=r(`span`,`persona-approval-status`);t.setAttribute(`role`,`status`),t.textContent=d,k.append(e,` · `,t),a?.titleColor&&(k.style.color=a.titleColor),A=`${e} · ${d}`}if(S){let e=r(`span`,`persona-approval-toggle`);e.setAttribute(`aria-hidden`,`true`);let t=p(`chevron-down`,14,`currentColor`,2);t&&e.appendChild(t),k.append(` `),k.appendChild(e)}E.appendChild(k),m.appendChild(E);let F=r(`div`,`persona-approval-body`),I;if(S){let e=r(`div`,`persona-approval-details`);e.setAttribute(`data-role`,`params`),e.hidden=!C;let t=t=>{let n=r(`div`,`persona-tool-detail`),i=r(`div`,`persona-tool-detail-label`);return i.textContent=t,n.appendChild(i),e.appendChild(n),n},n=f&&v?t(`Request`):e;if(f&&(_||x)&&(I=t(`Context`)),_){let t=r(`p`,`persona-approval-desc`);a?.descriptionColor&&(t.style.color=a.descriptionColor),t.textContent=i.description,(I??e).appendChild(t)}if(v){let e=r(`pre`,f?`persona-approval-params persona-tool-detail-value persona-tool-detail-code`:`persona-approval-params`);a?.parameterBackgroundColor&&(e.style.background=a.parameterBackgroundColor),a?.parameterTextColor&&(e.style.color=a.parameterTextColor),e.textContent=o(i.parameters),n.appendChild(e)}F.appendChild(e)}if(u){let e=r(`div`,`persona-approval-call`);e.setAttribute(`data-role`,`raw-call`);let t=r(`code`,`persona-approval-tool-name`);if(t.textContent=i.toolName,e.appendChild(t),i.parameters!=null){let t=r(`pre`,`persona-approval-params`);a?.parameterBackgroundColor&&(t.style.background=a.parameterBackgroundColor),a?.parameterTextColor&&(t.style.color=a.parameterTextColor),t.textContent=o(i.parameters),e.appendChild(t)}F.appendChild(e)}if(i.reason){let e=r(`p`,`persona-approval-reason`);a?.reasonColor?e.style.color=a.reasonColor:a?.descriptionColor&&(e.style.color=a.descriptionColor);let t=r(`span`,`persona-approval-reason-label`);t.textContent=`${a?.reasonLabel??`Agent's stated reason:`} `,e.append(t,document.createTextNode(i.reason)),f?I?.appendChild(e):F.appendChild(e)}let L=e=>{E.setAttribute(`aria-expanded`,String(e));let t=e?T:w;E.setAttribute(`aria-label`,f?`${A}. ${t}`:t)},R=()=>{let e=m.querySelector(`[data-role="params"]`);if(!e)return;let r=e.hidden!==!1;e.hidden=!r,f&&(F.hidden=!r),L(r),t.set(n.id,r)};if(f){if(S){let t=F.querySelector(`[data-role="params"]`);t.id=`${e.disclosurePrefix}-details-${n.id}`,E.setAttribute(`aria-controls`,t.id),L(C),F.hidden=!C,m.appendChild(F),E.addEventListener(`click`,R)}return m}let z=r(`div`,`persona-approval-actions`),B=a?.primaryAction===`allow-once`,V=a?.keyboardShortcuts!==!1&&a?.keyboardShortcuts!==`focused`,H=null,U=e=>{a?.approveButtonColor&&(e.style.background=a.approveButtonColor),a?.approveButtonTextColor&&(e.style.color=a.approveButtonTextColor)},W=r(`button`,`persona-approval-deny`);if(W.type=`button`,W.setAttribute(`data-action`,`deny`),a?.denyButtonColor&&(W.style.background=a.denyButtonColor),a?.denyButtonTextColor&&(W.style.color=a.denyButtonTextColor),W.append(a?.denyLabel??`Deny`),l){let t=r(`div`,`persona-approval-split`),i=r(`button`,`persona-approval-primary`);i.type=`button`,i.setAttribute(`data-action`,B?`allow`:`always`),U(i),i.append(a?.approveLabel??(B?`Allow once`:`Always allow`)),V&&i.append(N(`⏎`));let o=r(`button`,`persona-approval-caret`);o.type=`button`,o.setAttribute(`data-action`,`toggle-menu`),o.setAttribute(`aria-label`,`More options`),U(o);let c=p(`chevron-down`,15,`currentColor`,2);c&&o.appendChild(c),t.append(i,o),z.append(t,W),V&&W.append(N(`Esc`));let l=r(`div`,`persona-approval-menu`),u=r(`button`,`persona-approval-menu-item`);u.type=`button`,u.append(B?a?.alwaysAllowLabel??`Always allow`:`Allow once`),!B&&V&&u.append(N(`⌘⏎`)),l.appendChild(u),H=g().createPopover({anchor:t,content:l,placement:`bottom-start`,matchAnchorWidth:!0}),e.popovers.set(n.id,H),u.addEventListener(`click`,()=>{j(e,n.id),B?s({remember:!0}):s()})}else{let e=r(`button`,`persona-approval-primary persona-approval-primary--solo`);e.type=`button`,e.setAttribute(`data-action`,`allow`),U(e),e.append(a?.approveLabel??(B?`Allow once`:`Allow`)),z.append(e,W)}return F.appendChild(z),m.appendChild(F),m.addEventListener(`click`,t=>{let r=t.target instanceof Element?t.target.closest(`[data-action]`):null;if(!r)return;let i=r.getAttribute(`data-action`);i===`toggle-params`?R():i===`toggle-menu`?H?.toggle():i===`always`?(j(e,n.id),s({remember:!0})):i===`allow`?(j(e,n.id),s()):i===`deny`&&(j(e,n.id),c())}),m},L=(e=/* @__PURE__ */ new Map)=>{let t=k();return{plugin:{id:`persona-built-in-approval`,renderApproval:({message:n,approve:i,deny:a,config:o,execution:c,signal:l})=>{let u=n?.approval;if(!u)return null;let f={...s(o),...d(o,`plugin`)},p=!1,m=i,h=a;if(i=e=>{p||l?.aborted||u.status!==`pending`||(p=!0,e===void 0?m():m(e))},a=e=>{p||l?.aborted||u.status!==`pending`||(p=!0,e===void 0?h():h(e))},u.status!==`pending`){j(t,n.id);let o=u.status===`denied`?`Denied`:u.status===`timeout`?`Timed out`:c?.status===`running`?`Allowed · running`:c?.status===`completed`?`Completed`:c?.status===`failed`?`Failed`:`Allowed`;if(f?.resolvedDisplay===`row`)return I(t,e,n,u,f,i,a,!1,!1,o);if(f?.resolvedDisplay===`status-line`){let s=I(t,e,n,u,f,i,a,!1),c=r(`div`,`persona-approval-status`);return c.setAttribute(`role`,`status`),c.textContent=o,s.querySelector(`.persona-approval-actions`)?.replaceWith(c),s}if(u.status===`approved`){let e=document.createElement(`div`);return e.style.display=`none`,e}return F(u)}A(t,n.id);let _=!!o?.clientToken,v=f?.enableAlwaysAllow===!0,y=I(t,e,n,u,f,i,a,v,_),b=f?.keyboardShortcuts??`legacy`;if(b===`focused`||b===`legacy`&&v){t.pendingOrder.includes(n.id)||t.pendingOrder.push(n.id),t.latestPendingApprovalId=t.pendingOrder[t.pendingOrder.length-1];let e=e=>{if(!(e.defaultPrevented||e.isComposing||g().isEditableEventTarget(e))){if(b===`focused`){if(!e.composedPath().includes(y)||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;let t=e.composedPath()[0];if(e.key===`Enter`&&t instanceof Element&&t.closest(`[data-action]`)?.getAttribute(`data-action`)!==`allow`)return}(b!==`legacy`||n.id===t.latestPendingApprovalId)&&(e.key===`Escape`||e.key===`Enter`)&&(e.preventDefault(),e.stopImmediatePropagation(),j(t,n.id),e.key===`Escape`?a():b===`focused`||f?.primaryAction===`allow-once`||e.metaKey||e.ctrlKey?i():i({remember:!0}))}};t.keyHandlers.set(n.id,e),document.addEventListener(`keydown`,e)}return l?.addEventListener(`abort`,()=>j(t,n.id),{once:!0}),y}},teardown:()=>{for(let e of[...t.keyHandlers.keys(),...t.popovers.keys()])j(t,e);t.latestPendingApprovalId=null}}};function R(e,t,r){let i=n(`div`,{className:`persona-error-detail persona-message-bubble`});i.innerHTML=t({text:e.content,message:e,streaming:!1});let a=n(`summary`,{className:`persona-error-summary`},i,n(`span`,{className:`persona-error-more`,text:`Show more`}),n(`span`,{className:`persona-error-less`,text:`Show less`}));return n(`div`,{className:`persona-error-block`,attrs:{role:`alert`,"data-message-id":e.id,"data-actions-for":e.id}},n(`strong`,{className:`persona-error-title`,text:`Something went wrong`}),n(`details`,{className:`persona-error-details`},a),r?n(`button`,{className:`persona-message-action-btn persona-error-retry`,text:`Retry`,attrs:{type:`button`,"data-action":`regenerate`,"aria-label":`Retry response`}}):null)}export{E as createApprovalBubble,L as createBuiltInApprovalPlugin,R as createErrorBlock,b as humanizeToolName,v as initApprovalUi,w as updateApprovalDetailsUI};
|
package/dist/client-dispatch.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}};function t(e){if(e.length===0)return`0:empty`;let t=e.map(e=>[e.name,e.description??``,e.parametersSchema?JSON.stringify(e.parametersSchema):``,e.origin??``,e.annotations?JSON.stringify(e.annotations):``].join(``)).sort();return`${e.length}:${r(t.join(``))}`}function n(e,t){let n=3735928559^t,r=1103547991^t;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677)}return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}function r(e){return`${n(e,0).toString(36)}.${n(e,2654435761).toString(36)}`}var i=e((()=>{})),a,o,s,c,l=e((()=>{a=e=>e.replace(/[^a-zA-Z0-9_]/g,`_`).toLowerCase().replace(/_+/g,`_`).replace(/^_|_$/g,``),o=e=>typeof e==`object`&&!!e&&!Array.isArray(e),s=e=>{if(e.variant!==`tool`)return null;let t=e.agentMetadata?.clientToolAnswer;if(!t||!t.toolCallId||t.result===void 0)return null;let n=a(t.toolName);return n?{call:{toolCallId:t.toolCallId,toolName:n,args:o(t.args)?t.args:{}},result:{toolCallId:t.toolCallId,toolName:n,result:t.result}}:null},c=(e,t)=>{let n=[],r=[],i=[],a=``,o,c=()=>{r.length!==0&&(n.push({role:`assistant`,content:``,createdAt:a,toolCalls:r},{role:`tool`,content:``,createdAt:a,toolResults:i}),r=[],i=[])};for(let l of e){let e=s(l);if(e){let t=l.agentMetadata?.clientToolAnswer?.batch;r.length>0&&(t===void 0||t!==o)&&c(),r.length===0&&(a=l.createdAt,o=t),r.some(t=>t.toolCallId===e.call.toolCallId)||(r.push(e.call),i.push(e.result));continue}let u=t(l);u&&(c(),n.push(u))}return c(),n}})),u,d,f=e((()=>{u=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`,`image/bmp`],d=[`application/pdf`,`text/plain`,`text/markdown`,`text/csv`,`application/msword`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`,`application/vnd.ms-excel`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/json`],[...u,...d]}));function p(e){let t=e.content;if(typeof t!=`string`||t===``)return;let n=e.contentParts??e.llmContent??e.rawContent??t;if(typeof n!=`string`||n!==t)return t}var m=e((()=>{f()})),h,g=e((()=>{h=e=>e.localOnly===!0||e.role===`assistant`&&typeof e.id==`string`&&e.id.startsWith(`reconnect-failed-`)})),_=`4.32.2`,v,y=e((()=>{v=_})),b,x,S,C,w;e((()=>{i(),l(),m(),g(),y(),b=e=>e.voiceCaption||h(e)?!1:!!(e.contentParts&&e.contentParts.length>0||e.llmContent&&e.llmContent.trim().length>0||e.rawContent&&e.rawContent.trim().length>0||e.content&&e.content.trim().length>0),x=e=>e.slice().sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()),S=e=>{let t=e.agentMetadata?.providerPhase??e.agentMetadata?.phase;return e.role===`assistant`&&(t===`commentary`||t===`partial_answer`||t===`final_answer`)?{phase:t}:{}},C=e=>({role:e.role,content:e.contentParts??e.llmContent??e.rawContent??e.content,createdAt:e.createdAt,...S(e)}),w=class{constructor(e){this.host=e}async initializeSession(){await this.host.historyInternals.historyBootstrapReady;let e=this.host.config.getStoredConversationId?.()||null,t=this.host.historyInternals.shouldResumeDurableConversation?.()===!0;if(!this.host.isHistoryCapable()&&!t)return this.#e(e,!1);let n=await this.host.readVisitorToken();if(e&&n)try{let n=await this.createClientSession({conversationId:e,durableResume:t});return t&&n.durableRecovery?.enabled!==!0&&this.host.historyInternals.setStoredResumableHandle?.(null),this.host.finishInit(n,e,!1)}catch(n){if(!(n instanceof this.host.HistoryClientError&&n.code===`not_found`)&&!(n instanceof this.host.HistoryClientError&&n.code===`visitor_required`)&&!(n instanceof this.host.HistoryClientError&&n.code===`history_disabled`))throw n;return t&&this.host.historyInternals.setStoredResumableHandle?.(null),this.#e(e,!0)}return this.#e(e,!1)}async#e(e,t){let n=this.host.historyInternals.visitorStore;return n&&!await this.host.readVisitorToken()?n.withFirstInitLock(()=>this.#t(e,t)):this.#t(e,t)}async#t(e,t){let n=this.host.config.getStoredSessionId?.()||null,r=await this.createClientSession({storedSessionId:n}),i=await this.#n(r);return this.host.finishInit(i,e,t)}async#n(e){if(!e.visitor?.token||this.host.claimInFlight||!this.host.isHistoryCapable()&&e.durableRecovery?.enabled!==!0)return e;this.host.claimInFlight=!0;try{return await this.createClientSession({storedSessionId:e.sessionId})}catch{return e}finally{this.host.claimInFlight=!1}}async sendWithClientToolsDiff(e,n,r,i){let a=!!(n&&n.length>0),o=a?t(n):void 0,s=this.host.clientToolsFingerprintSessionId===e,c=a&&s&&this.host.lastSentClientToolsFingerprint===o,l=!a&&i?.emptyMeansReplace===!0&&this.host.sentNonEmptyClientToolsSessionId===e,u=!1,d;for(let e=0;d=await r({...a&&(u||!c)&&n?{clientTools:n}:{},...l?{clientTools:[]}:{},...o?{clientToolsFingerprint:o}:{}}),d.status===409&&e===0&&a&&(await d.clone().json().catch(()=>null))?.error===`client_tools_resend_required`;e++)u=!0,this.host.lastSentClientToolsFingerprint=null;return{response:d,commit:()=>{this.host.lastSentClientToolsFingerprint=o??null,this.host.clientToolsFingerprintSessionId=e,a?this.host.sentNonEmptyClientToolsSessionId=e:l&&(this.host.sentNonEmptyClientToolsSessionId=null)}}}async createClientSession(e){let t=this.host.isHistoryCapable()&&!e.omitVisitorFields,n=!e.omitVisitorFields,r=null;(t||n)&&(await this.host.historyInternals.historyBootstrapReady,r=await this.host.readVisitorToken());let i=this.host.routing(),a=i.agentId??i.flowId,o=t||e.durableResume?e.conversationId:void 0,s={token:this.host.config.clientToken,...a&&{flowId:a},...t&&{visitorHistory:!0},...n&&{durableRecovery:!0},...(t||n)&&r?{visitorToken:r}:{},...t&&e.identityProof?{identityProof:e.identityProof}:{},...o?{conversationId:o}:e.storedSessionId?{sessionId:e.storedSessionId}:{}};e.signal?.throwIfAborted();let c=await fetch(this.host.getClientApiUrl(`init`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v},body:JSON.stringify(s),signal:e.signal});if(!c.ok){let n=await c.json().catch(()=>({error:`Session initialization failed`}));if(t&&c.status===403&&n.error===`visitor_history_disabled`){if(this.host.markHistoryUnavailable(),o)throw new this.host.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`);return this.createClientSession({...e,omitVisitorFields:!0})}throw c.status===403&&n.error===`durable_recovery_disabled`?new this.host.HistoryClientError(`history_disabled`,`Durable recovery is disabled for this surface`):(t||e.durableResume)&&c.status===401&&n.error===`visitor_required`?new this.host.HistoryClientError(`visitor_required`,`Visitor credential no longer resolves`):o&&c.status===404?new this.host.HistoryClientError(`not_found`,`Conversation not found`):c.status===401?Error(`Invalid client token: ${n.hint||n.error}`):c.status===403?Error(`Origin not allowed: ${n.hint||n.error}`):Error(n.error||`Failed to initialize session`)}let l=await c.json();return l.visitor?.token&&await this.host.historyInternals.visitorStore?.set(l.visitor.token),{sessionId:l.sessionId,expiresAt:new Date(l.expiresAt),flow:l.flow,...l.conversationId?{conversationId:l.conversationId}:{},...l.targetId?{targetId:l.targetId}:{},...l.conversationRevision?{conversationRevision:l.conversationRevision}:{},...l.durableRecovery?{durableRecovery:l.durableRecovery}:{},...l.visitor?{visitor:l.visitor}:{},config:{welcomeMessage:l.config.welcomeMessage,placeholder:l.config.placeholder,theme:l.config.theme}}}async sendFeedback(e){if([`upvote`,`downvote`,`copy`].includes(e.type)&&!e.messageId)throw Error(`messageId is required for ${e.type} feedback type`);if(e.type===`csat`&&(e.rating===void 0||e.rating<1||e.rating>5))throw Error(`CSAT rating must be between 1 and 5`);if(e.type===`nps`&&(e.rating===void 0||e.rating<0||e.rating>10))throw Error(`NPS rating must be between 0 and 10`);this.host.debug&&console.debug(`[AgentWidgetClient] sending feedback`,e);let t={...e,...this.host.config.clientToken&&{token:this.host.config.clientToken}},n=await fetch(`${this.host.clientApiBase()}/v1/client/feedback`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:`Feedback submission failed`}));throw n.status===401?(this.host.clientSession=null,this.host.resetSessionWarmLatch(),this.host.config.onSessionExpired?.(),Error(`Session expired. Please refresh to continue.`)):Error(e.error||`Failed to submit feedback`)}}async dispatchClientToken(e,t,n){let{HistoryClientError:r}=this.host,i=()=>this.host.isCurrentTurn(n),a=e=>{i()&&t(e)};try{let t=()=>{if(e.signal?.throwIfAborted(),!i())throw new DOMException(`Turn superseded`,`AbortError`)},o=this.host.clientSession??await this.host.initSession();t();let s=async()=>{t();let n=o,r=n.durableRecovery?.enabled===!0;if(r&&(!n.conversationId||!await this.host.readVisitorToken()))throw Error(`Renewing this conversation requires its visitor credential.`);t();let i=await this.host.createClientSession({...r||this.host.isHistoryCapable()?{conversationId:n.conversationId,durableResume:r}:{storedSessionId:n.sessionId},signal:e.signal});if(t(),n.conversationId&&i.conversationId!==n.conversationId||r&&i.durableRecovery?.enabled!==!0)throw Error(`Session renewal did not preserve this conversation.`);o=this.host.finishInit(i,n.conversationId??null,!1),this.host.clientSession=o,this.host.resetSessionWarmLatch(),this.host.resetClientToolsFingerprint(),this.host.config.onSessionInit?.(o)};Date.now()>=o.expiresAt.getTime()-6e4&&await s();let c=await this.#c(e.messages),l=c.metadata?Object.fromEntries(Object.entries(c.metadata).filter(([e])=>e!==`sessionId`&&e!==`session_id`)):void 0,u=this.host.isHistoryCapable(),d={sessionId:o.sessionId,messages:e.messages.filter(b).map(e=>{let t=u?p(e):void 0;return{id:e.id,role:e.role,content:e.contentParts??e.llmContent??e.rawContent??e.content,...t!==void 0&&{displayContent:t}}}),...e.assistantMessageId&&{assistantMessageId:e.assistantMessageId},...l&&Object.keys(l).length>0&&{metadata:l},...c.inputs&&Object.keys(c.inputs).length>0&&{inputs:c.inputs},...c.context&&{context:c.context},turnId:n,...e.interrupt&&{submitMode:`interrupt`},...e.voiceSpoken&&{voice:{spoken:!0,...e.voicePriorToolResults?.length&&{priorToolResults:e.voicePriorToolResults}}}},f=async()=>{t();let n=o.durableRecovery?.enabled===!0?await this.host.readVisitorToken():null;return t(),this.host.sendWithClientToolsDiff(o.sessionId,c.clientTools,async r=>{t();let i=await this.host.resolveChatIdentityProof(e.signal);t();let a={...d,sessionId:o.sessionId,...r,...i&&{identityProof:i}};return this.host.debug&&console.debug(`[AgentWidgetClient] client token dispatch`,{...a,...i&&{identityProof:{provider:i.provider,token:`[REDACTED]`}}}),fetch(this.host.getClientApiUrl(`chat`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v,...n?{"X-Visitor-Token":n}:{}},body:JSON.stringify(a),signal:e.signal})})},m=await f();if(t(),m.response.status===401){let e=await m.response.clone().json().catch(()=>null);t(),e?.error===`Session not found or expired`&&(await s(),m=await f(),t())}let{response:h,commit:g}=m;if(!h.ok){let e=await h.json().catch(()=>({error:`Chat request failed`}));if(h.status===401&&e.error===`invalid_identity_proof`){let e=new r(`invalid_identity_proof`,`The identity proof was rejected`);throw a({type:`error`,error:e}),e}if(h.status===401){this.host.clearClientSession(),this.host.config.onSessionExpired?.();let e=/* @__PURE__ */ Error(`Session expired. Please refresh to continue.`);throw a({type:`error`,error:e}),e}if(h.status===429){let t=Error(e.hint||`Message limit reached for this session.`);throw a({type:`error`,error:t}),t}if(h.status===410&&e.error===`conversation_deleted`){let e=new r(`conversation_deleted`,`This conversation was deleted`);throw a({type:`error`,error:e}),e}let t=Error(e.error||`Failed to send message`);throw a({type:`error`,error:t}),t}if(!h.body){let e=/* @__PURE__ */ Error(`No response body received`);throw a({type:`error`,error:e}),e}g(),a({type:`status`,status:`connected`});try{await this.host.streamResponse(h.body,a,e.assistantMessageId,void 0,e.signal)}finally{a({type:`status`,status:`idle`})}}catch(e){let t=e instanceof Error?e:Error(String(e));throw!(t instanceof r)&&!t.message.includes(`Session expired`)&&!t.message.includes(`Message limit`)&&a({type:`error`,error:t}),t}}async dispatchProxy(e,t){let n=await this.#c(e.messages,e.composerOptions);this.host.debug&&console.debug(`[AgentWidgetClient] dispatch payload`,n);let r={...this.host.headers};if(this.host.getHeaders)try{let e=await this.host.getHeaders();r={...r,...e}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] getHeaders error:`,e)}let i;if(this.host.customFetch)try{i=await this.host.customFetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal},n)}catch(e){let n=e instanceof Error?e:Error(String(e));throw t({type:`error`,error:n}),n}else i=await fetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal});if(!i.ok||!i.body){let e=/* @__PURE__ */ Error(`Chat backend request failed: ${i.status} ${i.statusText}`);throw t({type:`error`,error:e}),e}t({type:`status`,status:`connected`});try{await this.host.streamResponse(i.body,t,void 0,void 0,e.signal)}finally{t({type:`status`,status:`idle`})}}async dispatchAgent(e,t){let n=await this.#s(e.messages,e.composerOptions);this.host.debug&&console.debug(`[AgentWidgetClient] agent dispatch payload`,n);let r={...this.host.headers};if(this.host.getHeaders)try{let e=await this.host.getHeaders();r={...r,...e}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] getHeaders error:`,e)}let i;if(this.host.customFetch)try{i=await this.host.customFetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal},n)}catch(e){let n=e instanceof Error?e:Error(String(e));throw t({type:`error`,error:n}),n}else i=await fetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal});if(!i.ok||!i.body){let e=/* @__PURE__ */ Error(`Agent execution request failed: ${i.status} ${i.statusText}`);throw t({type:`error`,error:e}),e}t({type:`status`,status:`connected`});try{await this.host.streamResponse(i.body,t,e.assistantMessageId,void 0,e.signal)}finally{t({type:`status`,status:`idle`})}}#r(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role===`user`)return n.mentionContext&&Object.keys(n.mentionContext).length>0?{mentions:n.mentionContext}:null}return null}async#i(e){let t={};this.host.contextProviders.length&&await Promise.all(this.host.contextProviders.map(async n=>{try{let r=await n({messages:e,config:this.host.config});r&&typeof r==`object`&&Object.assign(t,r)}catch(e){typeof console<`u`&&console.warn(`[AgentWidget] Context provider failed:`,e)}}));let n=this.#r(e);return n&&Object.assign(t,n),Object.keys(t).length?t:null}#a(e){if(!e)return;let t={};return e.selectedModelId&&(t.selectedModelId=e.selectedModelId),e.activeModeIds?.length&&(t.activeModeIds=[...e.activeModeIds]),Object.keys(t).length>0?t:void 0}#o(e,t){let n=t?.selectedModelId;return!n||!(`model`in e)?e:this.host.config.composer?.models?.some(e=>e.id===n)?{...e,model:n}:e}async#s(e,t){let n=this.host.routing().agentId;if(!this.host.config.agent&&!n)throw Error(`Agent configuration required for agent mode`);let r=c(x(e),e=>b(e)&&(e.role===`user`||e.role===`assistant`||e.role===`system`)&&(!e.variant||e.variant===`assistant`)?C(e):null),i=this.#a(t),a={agent:this.#o(this.host.config.agent??{agentId:n},i),messages:r,options:{streamResponse:!0,recordMode:`virtual`,...this.host.config.agentOptions}};i&&(a.composerOptions=i);let o=[...this.host.builtInClientTools(this.host.config),...await(await this.host.getWebMcpBridge())?.snapshotForDispatch()??[]];o.length>0&&(a.clientTools=o);let s=await this.#i(e);return s&&(a.context=s),a}async#c(e,t){let n=c(x(e),e=>b(e)?C(e):null),r=this.host.routing(),i={messages:n,...r.agentId?{agent:{agentId:r.agentId}}:r.flowId?{flowId:r.flowId}:{}};if(r.targetPayload)for(let[e,t]of Object.entries(r.targetPayload))e!==`messages`&&(i[e]=t);let a=[...this.host.builtInClientTools(this.host.config),...await(await this.host.getWebMcpBridge())?.snapshotForDispatch()??[]];a.length>0&&(i.clientTools=a);let o=await this.#i(e);o&&(i.context=o);let s=this.#a(t);if(s&&(i.composerOptions=s),this.host.requestMiddleware)try{let e=await this.host.requestMiddleware({payload:{...i},config:this.host.config});if(e&&typeof e==`object`){let t=e;return i.clientTools!==void 0&&!(`clientTools`in t)&&(t.clientTools=i.clientTools),t}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] Request middleware error:`,e)}return i}}}))();export{w as ClientDispatch};
|
|
1
|
+
var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}};function t(e){if(e.length===0)return`0:empty`;let t=e.map(e=>[e.name,e.description??``,e.parametersSchema?JSON.stringify(e.parametersSchema):``,e.origin??``,e.annotations?JSON.stringify(e.annotations):``].join(``)).sort();return`${e.length}:${r(t.join(``))}`}function n(e,t){let n=3735928559^t,r=1103547991^t;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677)}return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}function r(e){return`${n(e,0).toString(36)}.${n(e,2654435761).toString(36)}`}var i=e((()=>{})),a,o,s,c,l=e((()=>{a=e=>e.replace(/[^a-zA-Z0-9_]/g,`_`).toLowerCase().replace(/_+/g,`_`).replace(/^_|_$/g,``),o=e=>typeof e==`object`&&!!e&&!Array.isArray(e),s=e=>{if(e.variant!==`tool`)return null;let t=e.agentMetadata?.clientToolAnswer;if(!t||!t.toolCallId||t.result===void 0)return null;let n=a(t.toolName);return n?{call:{toolCallId:t.toolCallId,toolName:n,args:o(t.args)?t.args:{}},result:{toolCallId:t.toolCallId,toolName:n,result:t.result}}:null},c=(e,t)=>{let n=[],r=[],i=[],a=``,o,c=()=>{r.length!==0&&(n.push({role:`assistant`,content:``,createdAt:a,toolCalls:r},{role:`tool`,content:``,createdAt:a,toolResults:i}),r=[],i=[])};for(let l of e){let e=s(l);if(e){let t=l.agentMetadata?.clientToolAnswer?.batch;r.length>0&&(t===void 0||t!==o)&&c(),r.length===0&&(a=l.createdAt,o=t),r.some(t=>t.toolCallId===e.call.toolCallId)||(r.push(e.call),i.push(e.result));continue}let u=t(l);u&&(c(),n.push(u))}return c(),n}})),u,d,f=e((()=>{u=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`,`image/bmp`],d=[`application/pdf`,`text/plain`,`text/markdown`,`text/csv`,`application/msword`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`,`application/vnd.ms-excel`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/json`],[...u,...d]}));function p(e,t=e.contentParts??e.llmContent??e.rawContent??e.content){let n=e.content;if(typeof n!=`string`)return;let r=e.contentParts??e.llmContent??e.rawContent??n;if(n===``&&(t===r||JSON.stringify(t)===JSON.stringify(r)))return;let i=t;if(typeof i!=`string`||i!==n)return n}var m=e((()=>{f()})),h,g=e((()=>{h=e=>e.localOnly===!0||e.role===`assistant`&&typeof e.id==`string`&&e.id.startsWith(`reconnect-failed-`)})),_=`4.33.0`,v,y=e((()=>{v=_})),b,x,S,C,w,T;e((()=>{i(),l(),m(),g(),y(),b=e=>e.voiceCaption||h(e)?!1:!!(e.contentParts&&e.contentParts.length>0||e.llmContent&&e.llmContent.trim().length>0||e.rawContent&&e.rawContent.trim().length>0||e.content&&e.content.trim().length>0),x=e=>typeof e==`string`?!0:Array.isArray(e)?e.every(e=>{if(!e||typeof e!=`object`)return!1;switch(e.type){case`text`:return typeof e.text==`string`;case`image`:return typeof e.image==`string`;case`audio`:return typeof e.audio==`string`;case`video`:return typeof e.video==`string`;case`file`:return typeof e.data==`string`&&typeof e.mimeType==`string`&&typeof e.filename==`string`;default:return!1}}):!1,S=e=>e.slice().sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()),C=e=>{let t=e.agentMetadata?.providerPhase??e.agentMetadata?.phase;return e.role===`assistant`&&(t===`commentary`||t===`partial_answer`||t===`final_answer`)?{phase:t}:{}},w=e=>({role:e.role,content:e.contentParts??e.llmContent??e.rawContent??e.content,createdAt:e.createdAt,...C(e)}),T=class{constructor(e){this.host=e}async initializeSession(){await this.host.historyInternals.historyBootstrapReady;let e=this.host.config.getStoredConversationId?.()||null,t=this.host.historyInternals.shouldResumeDurableConversation?.()===!0;if(!this.host.isHistoryCapable()&&!t)return this.#e(e,!1);let n=await this.host.readVisitorToken();if(e&&n)try{let n=await this.createClientSession({conversationId:e,durableResume:t});return t&&n.durableRecovery?.enabled!==!0&&this.host.historyInternals.setStoredResumableHandle?.(null),this.host.finishInit(n,e,!1)}catch(n){if(!(n instanceof this.host.HistoryClientError&&n.code===`not_found`)&&!(n instanceof this.host.HistoryClientError&&n.code===`visitor_required`)&&!(n instanceof this.host.HistoryClientError&&n.code===`history_disabled`))throw n;return t&&this.host.historyInternals.setStoredResumableHandle?.(null),this.#e(e,!0)}return this.#e(e,!1)}async#e(e,t){let n=this.host.historyInternals.visitorStore;return n&&!await this.host.readVisitorToken()?n.withFirstInitLock(()=>this.#t(e,t)):this.#t(e,t)}async#t(e,t){let n=this.host.config.getStoredSessionId?.()||null,r=await this.createClientSession({storedSessionId:n}),i=await this.#n(r);return this.host.finishInit(i,e,t)}async#n(e){if(!e.visitor?.token||this.host.claimInFlight||!this.host.isHistoryCapable()&&e.durableRecovery?.enabled!==!0)return e;this.host.claimInFlight=!0;try{return await this.createClientSession({storedSessionId:e.sessionId})}catch{return e}finally{this.host.claimInFlight=!1}}async sendWithClientToolsDiff(e,n,r,i){let a=!!(n&&n.length>0),o=a?t(n):void 0,s=this.host.clientToolsFingerprintSessionId===e,c=a&&s&&this.host.lastSentClientToolsFingerprint===o,l=!a&&i?.emptyMeansReplace===!0&&this.host.sentNonEmptyClientToolsSessionId===e,u=!1,d;for(let e=0;d=await r({...a&&(u||!c)&&n?{clientTools:n}:{},...l?{clientTools:[]}:{},...o?{clientToolsFingerprint:o}:{}}),d.status===409&&e===0&&a&&(await d.clone().json().catch(()=>null))?.error===`client_tools_resend_required`;e++)u=!0,this.host.lastSentClientToolsFingerprint=null;return{response:d,commit:()=>{this.host.lastSentClientToolsFingerprint=o??null,this.host.clientToolsFingerprintSessionId=e,a?this.host.sentNonEmptyClientToolsSessionId=e:l&&(this.host.sentNonEmptyClientToolsSessionId=null)}}}async createClientSession(e){let t=this.host.isHistoryCapable()&&!e.omitVisitorFields,n=!e.omitVisitorFields,r=null;(t||n)&&(await this.host.historyInternals.historyBootstrapReady,r=await this.host.readVisitorToken());let i=this.host.routing(),a=i.agentId??i.flowId,o=t||e.durableResume?e.conversationId:void 0,s={token:this.host.config.clientToken,...a&&{flowId:a},...t&&{visitorHistory:!0},...n&&{durableRecovery:!0},...(t||n)&&r?{visitorToken:r}:{},...t&&e.identityProof?{identityProof:e.identityProof}:{},...o?{conversationId:o}:e.storedSessionId?{sessionId:e.storedSessionId}:{}};e.signal?.throwIfAborted();let c=await fetch(this.host.getClientApiUrl(`init`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v},body:JSON.stringify(s),signal:e.signal});if(!c.ok){let n=await c.json().catch(()=>({error:`Session initialization failed`}));if(t&&c.status===403&&n.error===`visitor_history_disabled`){if(this.host.markHistoryUnavailable(),o)throw new this.host.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`);return this.createClientSession({...e,omitVisitorFields:!0})}throw c.status===403&&n.error===`durable_recovery_disabled`?new this.host.HistoryClientError(`history_disabled`,`Durable recovery is disabled for this surface`):(t||e.durableResume)&&c.status===401&&n.error===`visitor_required`?new this.host.HistoryClientError(`visitor_required`,`Visitor credential no longer resolves`):o&&c.status===404?new this.host.HistoryClientError(`not_found`,`Conversation not found`):c.status===401?Error(`Invalid client token: ${n.hint||n.error}`):c.status===403?Error(`Origin not allowed: ${n.hint||n.error}`):Error(n.error||`Failed to initialize session`)}let l=await c.json();return l.visitor?.token&&await this.host.historyInternals.visitorStore?.set(l.visitor.token),{sessionId:l.sessionId,expiresAt:new Date(l.expiresAt),flow:l.flow,...l.conversationId?{conversationId:l.conversationId}:{},...l.targetId?{targetId:l.targetId}:{},...l.conversationRevision?{conversationRevision:l.conversationRevision}:{},...l.durableRecovery?{durableRecovery:l.durableRecovery}:{},...l.visitor?{visitor:l.visitor}:{},config:{welcomeMessage:l.config.welcomeMessage,placeholder:l.config.placeholder,theme:l.config.theme}}}async sendFeedback(e){if([`upvote`,`downvote`,`copy`].includes(e.type)&&!e.messageId)throw Error(`messageId is required for ${e.type} feedback type`);if(e.type===`csat`&&(e.rating===void 0||e.rating<1||e.rating>5))throw Error(`CSAT rating must be between 1 and 5`);if(e.type===`nps`&&(e.rating===void 0||e.rating<0||e.rating>10))throw Error(`NPS rating must be between 0 and 10`);this.host.debug&&console.debug(`[AgentWidgetClient] sending feedback`,e);let t={...e,...this.host.config.clientToken&&{token:this.host.config.clientToken}},n=await fetch(`${this.host.clientApiBase()}/v1/client/feedback`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:`Feedback submission failed`}));throw n.status===401?(this.host.clientSession=null,this.host.resetSessionWarmLatch(),this.host.config.onSessionExpired?.(),Error(`Session expired. Please refresh to continue.`)):Error(e.error||`Failed to submit feedback`)}}async dispatchClientToken(e,t,n){let{HistoryClientError:r}=this.host,i=()=>this.host.isCurrentTurn(n),a=e=>{i()&&t(e)};try{let t=()=>{if(e.signal?.throwIfAborted(),!i())throw new DOMException(`Turn superseded`,`AbortError`)},o=this.host.clientSession??await this.host.initSession();t();let s=async()=>{t();let n=o,r=n.durableRecovery?.enabled===!0;if(r&&(!n.conversationId||!await this.host.readVisitorToken()))throw Error(`Renewing this conversation requires its visitor credential.`);t();let i=await this.host.createClientSession({...r||this.host.isHistoryCapable()?{conversationId:n.conversationId,durableResume:r}:{storedSessionId:n.sessionId},signal:e.signal});if(t(),n.conversationId&&i.conversationId!==n.conversationId||r&&i.durableRecovery?.enabled!==!0)throw Error(`Session renewal did not preserve this conversation.`);o=this.host.finishInit(i,n.conversationId??null,!1),this.host.clientSession=o,this.host.resetSessionWarmLatch(),this.host.resetClientToolsFingerprint(),this.host.config.onSessionInit?.(o)};Date.now()>=o.expiresAt.getTime()-6e4&&await s();let c=new Map(S(e.messages).map(e=>[e,this.#s(e)])),l=await this.#l(e.messages,void 0,c),u=l.metadata?Object.fromEntries(Object.entries(l.metadata).filter(([e])=>e!==`sessionId`&&e!==`session_id`)):void 0,d=this.host.isHistoryCapable(),f={sessionId:o.sessionId,messages:S(e.messages).flatMap(e=>{let t=c.get(e);if(!t)return[];let n=d?p(e,t.content):void 0;return[{id:e.id,role:t.role,content:t.content,...n!==void 0&&{displayContent:n}}]}),...e.assistantMessageId&&{assistantMessageId:e.assistantMessageId},...u&&Object.keys(u).length>0&&{metadata:u},...l.inputs&&Object.keys(l.inputs).length>0&&{inputs:l.inputs},...l.context&&{context:l.context},turnId:n,...e.interrupt&&{submitMode:`interrupt`},...e.voiceSpoken&&{voice:{spoken:!0,...e.voicePriorToolResults?.length&&{priorToolResults:e.voicePriorToolResults}}}},m=async()=>{t();let n=o.durableRecovery?.enabled===!0?await this.host.readVisitorToken():null;return t(),this.host.sendWithClientToolsDiff(o.sessionId,l.clientTools,async r=>{t();let i=await this.host.resolveChatIdentityProof(e.signal);t();let a={...f,sessionId:o.sessionId,...r,...i&&{identityProof:i}};return this.host.debug&&console.debug(`[AgentWidgetClient] client token dispatch`,{...a,...i&&{identityProof:{provider:i.provider,token:`[REDACTED]`}}}),fetch(this.host.getClientApiUrl(`chat`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v,...n?{"X-Visitor-Token":n}:{}},body:JSON.stringify(a),signal:e.signal})})},h=await m();if(t(),h.response.status===401){let e=await h.response.clone().json().catch(()=>null);t(),e?.error===`Session not found or expired`&&(await s(),h=await m(),t())}let{response:g,commit:_}=h;if(!g.ok){let e=await g.json().catch(()=>({error:`Chat request failed`}));if(g.status===401&&e.error===`invalid_identity_proof`){let e=new r(`invalid_identity_proof`,`The identity proof was rejected`);throw a({type:`error`,error:e}),e}if(g.status===401){this.host.clearClientSession(),this.host.config.onSessionExpired?.();let e=/* @__PURE__ */ Error(`Session expired. Please refresh to continue.`);throw a({type:`error`,error:e}),e}if(g.status===429){let t=Error(e.hint||`Message limit reached for this session.`);throw a({type:`error`,error:t}),t}if(g.status===410&&e.error===`conversation_deleted`){let e=new r(`conversation_deleted`,`This conversation was deleted`);throw a({type:`error`,error:e}),e}let t=Error(e.error||`Failed to send message`);throw a({type:`error`,error:t}),t}if(!g.body){let e=/* @__PURE__ */ Error(`No response body received`);throw a({type:`error`,error:e}),e}_(),a({type:`status`,status:`connected`});try{await this.host.streamResponse(g.body,a,e.assistantMessageId,void 0,e.signal)}finally{a({type:`status`,status:`idle`})}}catch(e){let t=e instanceof Error?e:Error(String(e));throw!(t instanceof r)&&!t.message.includes(`Session expired`)&&!t.message.includes(`Message limit`)&&a({type:`error`,error:t}),t}}async dispatchProxy(e,t){let n=await this.#l(e.messages,e.composerOptions);this.host.debug&&console.debug(`[AgentWidgetClient] dispatch payload`,n);let r={...this.host.headers};if(this.host.getHeaders)try{let e=await this.host.getHeaders();r={...r,...e}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] getHeaders error:`,e)}let i;if(this.host.customFetch)try{i=await this.host.customFetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal},n)}catch(e){let n=e instanceof Error?e:Error(String(e));throw t({type:`error`,error:n}),n}else i=await fetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal});if(!i.ok||!i.body){let e=/* @__PURE__ */ Error(`Chat backend request failed: ${i.status} ${i.statusText}`);throw t({type:`error`,error:e}),e}t({type:`status`,status:`connected`});try{await this.host.streamResponse(i.body,t,void 0,void 0,e.signal)}finally{t({type:`status`,status:`idle`})}}async dispatchAgent(e,t){let n=await this.#c(e.messages,e.composerOptions);this.host.debug&&console.debug(`[AgentWidgetClient] agent dispatch payload`,n);let r={...this.host.headers};if(this.host.getHeaders)try{let e=await this.host.getHeaders();r={...r,...e}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] getHeaders error:`,e)}let i;if(this.host.customFetch)try{i=await this.host.customFetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal},n)}catch(e){let n=e instanceof Error?e:Error(String(e));throw t({type:`error`,error:n}),n}else i=await fetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal});if(!i.ok||!i.body){let e=/* @__PURE__ */ Error(`Agent execution request failed: ${i.status} ${i.statusText}`);throw t({type:`error`,error:e}),e}t({type:`status`,status:`connected`});try{await this.host.streamResponse(i.body,t,e.assistantMessageId,void 0,e.signal)}finally{t({type:`status`,status:`idle`})}}#r(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role===`user`)return n.mentionContext&&Object.keys(n.mentionContext).length>0?{mentions:n.mentionContext}:null}return null}async#i(e){let t={};this.host.contextProviders.length&&await Promise.all(this.host.contextProviders.map(async n=>{try{let r=await n({messages:e,config:this.host.config});r&&typeof r==`object`&&Object.assign(t,r)}catch(e){typeof console<`u`&&console.warn(`[AgentWidget] Context provider failed:`,e)}}));let n=this.#r(e);return n&&Object.assign(t,n),Object.keys(t).length?t:null}#a(e){if(!e)return;let t={};return e.selectedModelId&&(t.selectedModelId=e.selectedModelId),e.activeModeIds?.length&&(t.activeModeIds=[...e.activeModeIds]),Object.keys(t).length>0?t:void 0}#o(e,t){let n=t?.selectedModelId;return!n||!(`model`in e)?e:this.host.config.composer?.models?.some(e=>e.id===n)?{...e,model:n}:e}#s(e){if(!b(e))return null;let t=e.contentParts??e.llmContent??e.rawContent??e.content,n=e.role===`operator`?null:w(e),r=this.host.config.modelMessageTransform;if(!r)return n;let i=r({message:e,content:t,modelMessage:n});if(i===null)return null;if(!i||typeof i!=`object`||![`user`,`assistant`,`system`].includes(i.role)||!x(i.content)||typeof i.createdAt!=`string`)throw TypeError(`modelMessageTransform must return a supported model message or null`);return{role:i.role,content:i.content,createdAt:i.createdAt,...i.role===`assistant`&&i.phase&&{phase:i.phase}}}async#c(e,t){let n=this.host.routing().agentId;if(!this.host.config.agent&&!n)throw Error(`Agent configuration required for agent mode`);let r=c(S(e),e=>!e.variant||e.variant===`assistant`?this.#s(e):null),i=this.#a(t),a={agent:this.#o(this.host.config.agent??{agentId:n},i),messages:r,options:{streamResponse:!0,recordMode:`virtual`,...this.host.config.agentOptions}};i&&(a.composerOptions=i);let o=[...this.host.builtInClientTools(this.host.config),...await(await this.host.getWebMcpBridge())?.snapshotForDispatch()??[]];o.length>0&&(a.clientTools=o);let s=await this.#i(e);return s&&(a.context=s),a}async#l(e,t,n){let r=c(S(e),e=>n?n.get(e)??null:this.#s(e)),i=this.host.routing(),a={messages:r,...i.agentId?{agent:{agentId:i.agentId}}:i.flowId?{flowId:i.flowId}:{}};if(i.targetPayload)for(let[e,t]of Object.entries(i.targetPayload))e!==`messages`&&(a[e]=t);let o=[...this.host.builtInClientTools(this.host.config),...await(await this.host.getWebMcpBridge())?.snapshotForDispatch()??[]];o.length>0&&(a.clientTools=o);let s=await this.#i(e);s&&(a.context=s);let l=this.#a(t);if(l&&(a.composerOptions=l),this.host.requestMiddleware)try{let e=await this.host.requestMiddleware({payload:{...a},config:this.host.config});if(e&&typeof e==`object`){let t=e;return a.clientTools!==void 0&&!(`clientTools`in t)&&(t.clientTools=a.clientTools),t}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] Request middleware error:`,e)}return a}}}))();export{T as ClientDispatch};
|
package/dist/client-history.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=`4.
|
|
1
|
+
var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=`4.33.0`,n,r=e((()=>{n=t}));function i(e,t,n){let r=new URLSearchParams;for(let[e,t]of Object.entries(n))t!==void 0&&t!==``&&r.set(e,String(t));let i=r.toString();return`${e.clientApiBase()}/v1/client/${t}${i?`?${i}`:``}`}function a(e,t){return t||e.config.features?.history?.scope||(e.config.getIdentityProof?`verified-user`:`browser`)}async function o(e,t,n){let r=e.config.getIdentityProof;if(!r)return n&&e.setHistoryIdentityStatus(e.browserOnlyStatus()),null;n&&e.setHistoryIdentityStatus({state:`verifying`});let i;try{i=await r()??null}catch{throw n&&e.setHistoryIdentityStatus({state:`identity_provider_failed`}),new e.HistoryClientError(`identity_provider_failed`,`The identity proof provider failed`)}if(i)return i;if(t.visitor?.endUserId!=null)throw n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`authentication_required`,`This browser is bound to a signed-in user and needs a fresh identity proof`);return n&&e.setHistoryIdentityStatus({state:`browser_only`,reason:`proof_unavailable_before_binding`}),null}async function s(e,t,n,r){if(t.visitor?.endUserId!=null)return t;let i=await e.reinitWithProof(n);if(i.visitor?.identityStatus!==`admitted`||i.visitor?.endUserId==null)throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);return i}async function c(e,t){let n=await t.json().catch(()=>({}));return typeof n.error==`string`?n.error:typeof n.message==`string`?n.message:``}async function l(e,t,n,r){let i=t.toLowerCase();if(i.includes(`invalid_identity_proof`))throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w);if(i.includes(`visitor token required`))throw new e.HistoryClientError(`visitor_token_missing`,T);if(i.includes(`visitor_identity_mismatch`)){if(!n)throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`visitor_identity_mismatch`,E);return e.reinitWithProof(n)}if(i.includes(`expired`)||i.includes(`not found`))return e.clearClientSession(),e.initSession();throw new e.HistoryClientError(`unauthorized`,t||`History request was not authorized`)}async function u(e,t,n){let r=await c(e,t);if(t.status===404)return new e.HistoryClientError(`not_found`,`Conversation not found`);if(t.status===429){let n=Number.parseInt(t.headers.get(`Retry-After`)??``,10);return new e.HistoryClientError(`rate_limited`,`Too many history requests`,{...Number.isFinite(n)?{retryAfterSeconds:n}:{}})}if(t.status===503&&r.includes(`identity_proof_not_admitted`))return n&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);if(t.status===401){let t=r.toLowerCase();return t.includes(`invalid_identity_proof`)?(n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w)):t.includes(`visitor token required`)?new e.HistoryClientError(`visitor_token_missing`,T):t.includes(`visitor_identity_mismatch`)?new e.HistoryClientError(`visitor_identity_mismatch`,E):new e.HistoryClientError(`unauthorized`,r||`History request was not authorized`)}return new e.HistoryClientError(`request_failed`,r||`History request failed (${t.status})`)}function d(e,t,n,r){let i=t?.toLowerCase()??null;if(n){if(i===`admitted`){r&&e.setHistoryIdentityStatus({state:`verified`});return}throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),i===`ignored`?new e.HistoryClientError(`identity_contract_violation`,`Server reported an ignored identity proof on a success response`):new e.HistoryClientError(`proof_not_admitted`,`The response did not acknowledge the identity proof this request sent`)}if(i===`admitted`)throw new e.HistoryClientError(`identity_contract_violation`,`Server admitted an identity proof that was never sent`);r&&e.setHistoryIdentityStatus(e.browserOnlyStatus())}async function f(e,t,r){p(e);let f=r.trackIdentity!==!1,m=await e.initSession(),h=null;a(e,r.scope)===`verified-user`&&(h=await o(e,m,f),h&&(m=await s(e,m,h,f)));let g=e.historyInternals.visitorStore,_=!1;for(;;){let a=g?.revision()??0,o=await e.readVisitorToken();if(!o&&!r.visitorTokenOptional)throw new e.HistoryClientError(`visitor_token_missing`,`No visitor credential is stored for this browser`);let s=await fetch(i(e,t,{...r.query,sessionId:m.sessionId}),{method:r.method,headers:{"X-Persona-Version":n,...o?{"X-Visitor-Token":o}:{},...h?{"X-Identity-Proof":h}:{},...r.body===void 0?{}:{"Content-Type":`application/json`}},...r.body===void 0?{}:{body:JSON.stringify(r.body)},...r.keepalive?{keepalive:!0}:{}});if(s.status===401&&!_){_=!0,m=await l(e,await c(e,s),h,f);continue}if(!s.ok)throw await u(e,s,f);let p=s.headers.get(`X-History-Identity-Status`),v=await s.json().catch(()=>void 0);if(g&&g.revision()!==a)throw new e.HistoryClientError(`credential_changed`,`The visitor credential changed while the request was in flight`);return d(e,p,h!==null,f),v}}function p(e){if(!e.isClientTokenMode())throw Error(`Conversation history is only available in client token mode`);if(!e.isHistoryCapable())throw new e.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`)}async function m(e,t){let n=await f(e,`conversations`,{method:`GET`,query:{...t?.cursor?{cursor:t.cursor}:{},...t?.limit===void 0?{}:{limit:t.limit},...t?.targetId?{targetId:t.targetId}:{}},...t?.scope?{scope:t.scope}:{}});return{data:(Array.isArray(n?.data)?n.data:[]).map(S),nextCursor:typeof n?.nextCursor==`string`?n.nextCursor:null}}async function h(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`GET`,query:{...n?.messageCursor?{messageCursor:n.messageCursor}:{}},...n?.scope?{scope:n.scope}:{}});return{summary:S(r),messages:Array.isArray(r?.messages)?r.messages:[],nextMessageCursor:typeof r?.nextMessageCursor==`string`?r.nextMessageCursor:null,conversationRevision:typeof r?.conversationRevision==`string`?r.conversationRevision:null}}async function g(e,t,n){p(e);let r=0;for(let t of n){let n=t.displayContent.length;if(n>b)throw new e.HistoryClientError(`payload_too_large`,`displayContent exceeds the ${b} character limit`);r+=n}if(r>x)throw new e.HistoryClientError(`payload_too_large`,`Display projection batch exceeds the ${x} character limit`);await e.initSession();let i=e.historyInternals.visitorStore,a=i?.revision()??0,o=await f(e,`conversations/${encodeURIComponent(t)}/display-projections`,{method:`PATCH`,body:{messages:n},scope:`browser`,keepalive:r<=x,trackIdentity:!1}),s=typeof o?.conversationRevision==`string`?o.conversationRevision:null;return s&&e.clientSession?.conversationId===t&&(i?.revision()??0)===a&&e.historyInternals.setStoredConversationRevision?.(s),{conversationRevision:s}}async function _(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`DELETE`,...n?.scope?{scope:n.scope}:{}});return{deleted:typeof r?.deleted==`number`?r.deleted:0}}async function v(e,t){let n=await f(e,`conversations`,{method:`DELETE`,query:{...t?.targetId===void 0?{}:{targetId:t.targetId}},...t?.scope?{scope:t.scope}:{}});return{deleted:typeof n?.deleted==`number`?n.deleted:0}}async function y(e){p(e),e.setHistoryIdentityStatus({state:`resetting`});try{await f(e,`visitor/reset`,{method:`POST`,scope:`browser`,visitorTokenOptional:!0})}finally{await e.historyInternals.visitorStore?.clear(),e.setHistoryIdentityStatus(e.derivedBrowserOnly())}return{reset:!0}}var b,x,S,C,w,T,E;e((()=>{r(),b=32768,x=49152,S=e=>{let t=e??{},n=typeof t.targetId==`string`?t.targetId:null;return{id:typeof t.id==`string`?t.id:``,title:typeof t.title==`string`?t.title:``,targetId:n,preview:typeof t.preview==`string`?t.preview:null,messageCount:typeof t.messageCount==`number`?t.messageCount:0,createdAt:typeof t.createdAt==`string`?t.createdAt:``,updatedAt:typeof t.updatedAt==`string`?t.updatedAt:``}},C=`The identity proof was not admitted; account history is unavailable`,w=`The identity proof was rejected`,T=`The request carried no visitor credential`,E=`The stored visitor belongs to a different signed-in user`}))();export{v as deleteAllConversations,_ as deleteConversation,g as finalizeDisplayProjections,h as getConversation,u as historyErrorFor,m as listConversations,c as readErrorCode,l as recoverFromUnauthorized,y as resetVisitor};
|
package/dist/codegen.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.33.0/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
|
|
2
2
|
const jsonSource = (message as any).rawContent || text || message.content;
|
|
3
3
|
if (!jsonSource || typeof jsonSource !== 'string') return null;
|
|
4
4
|
let cleanJson = jsonSource
|
package/dist/codegen.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.
|
|
1
|
+
function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.33.0/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
|
|
2
2
|
const jsonSource = (message as any).rawContent || text || message.content;
|
|
3
3
|
if (!jsonSource || typeof jsonSource !== 'string') return null;
|
|
4
4
|
let cleanJson = jsonSource
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ar as ComposerModel, Er as ComposerMode, Or as ComposerModeGroup, Ro as AgentWidgetPlugin, Rr as ComposerState, dr as ComposerActionOverflowConfig, fr as ComposerActionPlacement, ja as renderLucideIcon, k as AgentWidgetConfig, lr as ComposerActionContext, pr as ComposerActionPresentation, sr as ComposerAction, ur as ComposerActionContributionContext, yr as ComposerCustomAction } from "./types-B_mj21jg.cjs";
|
|
2
2
|
import { i as createPopover, s as isEditableEventTarget } from "./plugin-kit-C1mRjLgW.cjs";
|
|
3
3
|
import { i as hideTooltipFor, r as attachTooltip } from "./tooltip-BkW-8MnD.cjs";
|
|
4
|
-
import { t as createComposerStore } from "./composer-store-
|
|
4
|
+
import { t as createComposerStore } from "./composer-store-6Iwy6WLI.cjs";
|
|
5
5
|
//#region src/components/composer-bindings.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* Atomic composer surface bindings.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ar as ComposerModel, Er as ComposerMode, Or as ComposerModeGroup, Ro as AgentWidgetPlugin, Rr as ComposerState, dr as ComposerActionOverflowConfig, fr as ComposerActionPlacement, ja as renderLucideIcon, k as AgentWidgetConfig, lr as ComposerActionContext, pr as ComposerActionPresentation, sr as ComposerAction, ur as ComposerActionContributionContext, yr as ComposerCustomAction } from "./types-B_mj21jg.js";
|
|
2
2
|
import { i as createPopover, s as isEditableEventTarget } from "./plugin-kit-C1mRjLgW.js";
|
|
3
3
|
import { i as hideTooltipFor, r as attachTooltip } from "./tooltip-BkW-8MnD.js";
|
|
4
|
-
import { t as createComposerStore } from "./composer-store-
|
|
4
|
+
import { t as createComposerStore } from "./composer-store-6Iwy6WLI.js";
|
|
5
5
|
//#region src/components/composer-bindings.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* Atomic composer surface bindings.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, P as AgentWidgetContextMentionComposerCapability } from "./types-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, P as AgentWidgetContextMentionComposerCapability } from "./types-B_mj21jg.cjs";
|
|
2
2
|
//#region src/utils/mention-trigger.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* Pure `@`-trigger detection for the composer mention menu.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, P as AgentWidgetContextMentionComposerCapability } from "./types-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, P as AgentWidgetContextMentionComposerCapability } from "./types-B_mj21jg.js";
|
|
2
2
|
//#region src/utils/mention-trigger.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* Pure `@`-trigger detection for the composer mention menu.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, Ir as
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, Ir as ComposerQuote, Rr as ComposerState, Vr as ComposerSubmissionSnapshot, gr as ComposerAttachmentState } from "./types-B_mj21jg.cjs";
|
|
2
2
|
//#region src/utils/composer-store.d.ts
|
|
3
3
|
type ComposerStateListener = (state: Readonly<ComposerState>) => void;
|
|
4
4
|
interface ComposerStore {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, Ir as
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, Ir as ComposerQuote, Rr as ComposerState, Vr as ComposerSubmissionSnapshot, gr as ComposerAttachmentState } from "./types-B_mj21jg.js";
|
|
2
2
|
//#region src/utils/composer-store.d.ts
|
|
3
3
|
type ComposerStateListener = (state: Readonly<ComposerState>) => void;
|
|
4
4
|
interface ComposerStore {
|
package/dist/{context-mention-manager-D2p0-JH-.d.cts → context-mention-manager-B-rHF98n.d.cts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, I as AgentWidgetContextMentionItem,
|
|
2
|
-
import "./composer-input-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, I as AgentWidgetContextMentionItem, U as AgentWidgetContextMentionSource, Ur as ContentPart, z as AgentWidgetContextMentionPayload } from "./types-B_mj21jg.cjs";
|
|
2
|
+
import "./composer-input-DnqGCXZz.cjs";
|
|
3
3
|
//#region src/components/context-mention-chip.d.ts
|
|
4
4
|
type MentionChipStatus = "resolving" | "ready" | "error";
|
|
5
5
|
interface MentionChipParts {
|
package/dist/{context-mention-manager-D2p0-JH-.d.ts → context-mention-manager-B-rHF98n.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, I as AgentWidgetContextMentionItem,
|
|
2
|
-
import "./composer-input-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, I as AgentWidgetContextMentionItem, U as AgentWidgetContextMentionSource, Ur as ContentPart, z as AgentWidgetContextMentionPayload } from "./types-B_mj21jg.js";
|
|
2
|
+
import "./composer-input-DnqGCXZz.js";
|
|
3
3
|
//#region src/components/context-mention-chip.d.ts
|
|
4
4
|
type MentionChipStatus = "resolving" | "ready" | "error";
|
|
5
5
|
interface MentionChipParts {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef } from "./types-
|
|
2
|
-
import { t as ComposerInputCapability } from "./composer-input-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef } from "./types-B_mj21jg.cjs";
|
|
2
|
+
import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.cjs";
|
|
3
3
|
//#region src/context-mentions-inline-entry.d.ts
|
|
4
4
|
interface InlineComposerMountContext {
|
|
5
5
|
/** The live composer textarea to migrate from (value + caret + look). */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef } from "./types-
|
|
2
|
-
import { t as ComposerInputCapability } from "./composer-input-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef } from "./types-B_mj21jg.js";
|
|
2
|
+
import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.js";
|
|
3
3
|
//#region src/context-mentions-inline-entry.d.ts
|
|
4
4
|
interface InlineComposerMountContext {
|
|
5
5
|
/** The live composer textarea to migrate from (value + caret + look). */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, Ct as AgentWidgetMessage, F as AgentWidgetContextMentionConfig, k as AgentWidgetConfig } from "./types-
|
|
2
|
-
import { t as ComposerInputCapability } from "./composer-input-
|
|
3
|
-
import { n as MentionSubmitBundle, t as ContextMentionDraft } from "./context-mention-manager-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, Ct as AgentWidgetMessage, F as AgentWidgetContextMentionConfig, k as AgentWidgetConfig } from "./types-B_mj21jg.cjs";
|
|
2
|
+
import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.cjs";
|
|
3
|
+
import { n as MentionSubmitBundle, t as ContextMentionDraft } from "./context-mention-manager-B-rHF98n.cjs";
|
|
4
4
|
//#region src/utils/context-mention-controller.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Outcome of dispatching an inline slash command at submit (Slack-style). The UI
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, Ct as AgentWidgetMessage, F as AgentWidgetContextMentionConfig, k as AgentWidgetConfig } from "./types-
|
|
2
|
-
import { t as ComposerInputCapability } from "./composer-input-
|
|
3
|
-
import { n as MentionSubmitBundle, t as ContextMentionDraft } from "./context-mention-manager-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, Ct as AgentWidgetMessage, F as AgentWidgetContextMentionConfig, k as AgentWidgetConfig } from "./types-B_mj21jg.js";
|
|
2
|
+
import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.js";
|
|
3
|
+
import { n as MentionSubmitBundle, t as ContextMentionDraft } from "./context-mention-manager-B-rHF98n.js";
|
|
4
4
|
//#region src/utils/context-mention-controller.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Outcome of dispatching an inline slash command at submit (Slack-style). The UI
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Oo as ThemeValidationResult, So as
|
|
1
|
+
import { Oo as SemanticTokens, Po as ThemeValidationResult, So as PersonaTheme, To as ResolvedToken, _o as DeepPartial, go as CreateThemeOptions, k as AgentWidgetConfig, mo as ComponentTokens } from "./types-B_mj21jg.cjs";
|
|
2
2
|
//#region src/utils/tokens.d.ts
|
|
3
3
|
declare const DEFAULT_PALETTE: {
|
|
4
4
|
spacing: Record<0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64, string>;
|
|
@@ -389,6 +389,7 @@ declare const THEME_ZONES: {
|
|
|
389
389
|
readonly messages: 'Message list area';
|
|
390
390
|
readonly 'user-message': 'User message bubble';
|
|
391
391
|
readonly 'assistant-message': 'Assistant message bubble';
|
|
392
|
+
readonly 'operator-message': 'Operator message bubble';
|
|
392
393
|
readonly composer: 'Footer / composer area';
|
|
393
394
|
readonly container: 'Main widget container';
|
|
394
395
|
readonly 'artifact-pane': 'Artifact sidebar';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Oo as ThemeValidationResult, So as
|
|
1
|
+
import { Oo as SemanticTokens, Po as ThemeValidationResult, So as PersonaTheme, To as ResolvedToken, _o as DeepPartial, go as CreateThemeOptions, k as AgentWidgetConfig, mo as ComponentTokens } from "./types-B_mj21jg.js";
|
|
2
2
|
//#region src/utils/tokens.d.ts
|
|
3
3
|
declare const DEFAULT_PALETTE: {
|
|
4
4
|
spacing: Record<0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64, string>;
|
|
@@ -389,6 +389,7 @@ declare const THEME_ZONES: {
|
|
|
389
389
|
readonly messages: 'Message list area';
|
|
390
390
|
readonly 'user-message': 'User message bubble';
|
|
391
391
|
readonly 'assistant-message': 'Assistant message bubble';
|
|
392
|
+
readonly 'operator-message': 'Operator message bubble';
|
|
392
393
|
readonly composer: 'Footer / composer area';
|
|
393
394
|
readonly container: 'Main widget container';
|
|
394
395
|
readonly 'artifact-pane': 'Artifact sidebar';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as ComposerInputCapability } from "./composer-input-
|
|
1
|
+
import { Gr as DictationPhase, Jr as DictationRenderHandle, Kr as DictationProviderConfig, Ro as AgentWidgetPlugin, Yr as DictationState, ja as renderLucideIcon, k as AgentWidgetConfig, qr as DictationRenderContext } from "./types-B_mj21jg.cjs";
|
|
2
|
+
import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.cjs";
|
|
3
3
|
import { r as attachTooltip } from "./tooltip-BkW-8MnD.cjs";
|
|
4
4
|
//#region src/voice/dictation.d.ts
|
|
5
5
|
type DictationCallbacks = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as ComposerInputCapability } from "./composer-input-
|
|
1
|
+
import { Gr as DictationPhase, Jr as DictationRenderHandle, Kr as DictationProviderConfig, Ro as AgentWidgetPlugin, Yr as DictationState, ja as renderLucideIcon, k as AgentWidgetConfig, qr as DictationRenderContext } from "./types-B_mj21jg.js";
|
|
2
|
+
import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.js";
|
|
3
3
|
import { r as attachTooltip } from "./tooltip-BkW-8MnD.js";
|
|
4
4
|
//#region src/voice/dictation.d.ts
|
|
5
5
|
type DictationCallbacks = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ro as AgentWidgetPlugin, Wi as SSEEventRecord, k as AgentWidgetConfig } from "./types-B_mj21jg.cjs";
|
|
2
2
|
//#region src/utils/scroll-animation.d.ts
|
|
3
3
|
/** Explicit jump only: automatic following keeps its separate policy and animation. */
|
|
4
4
|
declare function createScrollToLatest(element: HTMLElement, keyboardScope: HTMLElement, onFrame: () => void, onComplete: () => void, onCancel: () => void): {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ro as AgentWidgetPlugin, Wi as SSEEventRecord, k as AgentWidgetConfig } from "./types-B_mj21jg.js";
|
|
2
2
|
//#region src/utils/scroll-animation.d.ts
|
|
3
3
|
/** Explicit jump only: automatic following keeps its separate policy and animation. */
|
|
4
4
|
declare function createScrollToLatest(element: HTMLElement, keyboardScope: HTMLElement, onFrame: () => void, onComplete: () => void, onCancel: () => void): {
|
package/dist/{fallback-speech-engine-DmF7MczI.d.cts → fallback-speech-engine-SqEfkGda.d.cts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ji as SpeechCallbacks, Xi as SpeechRequest, Yi as SpeechEngine } from "./types-B_mj21jg.cjs";
|
|
2
2
|
//#region src/voice/fallback-speech-engine.d.ts
|
|
3
3
|
interface FallbackSpeechEngineOptions {
|
|
4
4
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ji as SpeechCallbacks, Xi as SpeechRequest, Yi as SpeechEngine } from "./types-B_mj21jg.js";
|
|
2
2
|
//#region src/voice/fallback-speech-engine.d.ts
|
|
3
3
|
interface FallbackSpeechEngineOptions {
|
|
4
4
|
/**
|