@runtypelabs/persona 4.33.0 → 4.35.1
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 -15
- package/dist/activity-ui.d.ts +3 -15
- package/dist/animations/glyph-cycle.d.cts +1 -3
- package/dist/animations/glyph-cycle.d.ts +1 -3
- package/dist/animations/wipe.d.cts +1 -3
- package/dist/animations/wipe.d.ts +1 -3
- package/dist/approval-ui.cjs +2 -2
- package/dist/approval-ui.d.cts +3 -15
- package/dist/approval-ui.d.ts +3 -15
- package/dist/approval-ui.js +1 -1
- package/dist/artifacts-ui.cjs +1 -1
- package/dist/artifacts-ui.d.cts +3 -21
- package/dist/artifacts-ui.d.ts +3 -21
- package/dist/background-runtime.d.cts +2 -3
- package/dist/background-runtime.d.ts +2 -3
- package/dist/{chunk-DW7Vg_l2.js → chunk-B1P8w9_X.js} +1 -1
- package/dist/{chunk-D6U0E82p.js → chunk-B30Jdgg6.js} +1 -1
- package/dist/{chunk-gu34lr-P.js → chunk-Brdx4NCz.js} +1 -1
- package/dist/{chunk-6CUrH_jm.js → chunk-Bzo9GaAi.js} +1 -1
- package/dist/{chunk-Ds_twaZn.js → chunk-C4v-HNhS.js} +1 -1
- package/dist/{chunk-Bkma5hIU.js → chunk-CE4seJxF.js} +1 -1
- package/dist/chunk-CNBMBx-Y.js +2 -0
- package/dist/{chunk-ql5N2I_t.js → chunk-CWzHNuVK.js} +1 -1
- package/dist/{chunk-DbGLjU2P.js → chunk-CYpt7PsO.js} +1 -1
- package/dist/chunk-Cd8mp8Sv.js +1 -0
- package/dist/chunk-CsfE8WRG.js +1 -0
- package/dist/{chunk-DOZmcve8.js → chunk-Csr59G5V.js} +1 -1
- package/dist/{chunk-Co3VVwGe.js → chunk-D2pHRNEq.js} +0 -0
- package/dist/chunk-D3kZO8u-.js +1 -0
- package/dist/chunk-DAthf5H3.js +1 -0
- package/dist/{chunk-CXQJG7pb.js → chunk-DZ_aillY.js} +2 -2
- package/dist/{chunk-6C23QQdP.js → chunk-DgJV9zbK.js} +1 -1
- package/dist/chunk-Dv6KtIT1.js +1 -0
- package/dist/chunk-Dws8IrdR.js +1 -0
- package/dist/chunk-ThxxD8oK.js +1 -0
- package/dist/{chunk-C-EHtpbB.js → chunk-h5aOI_Pa.js} +1 -1
- package/dist/chunk-kizhspe5.js +1 -0
- package/dist/client-dispatch.js +1 -1
- package/dist/client-history.js +1 -1
- package/dist/client-stream.js +1 -1
- package/dist/{code-generators-DqauYyfX.d.cts → code-generators-DPAqTcAz.d.cts} +0 -2
- package/dist/{code-generators-DqauYyfX.d.ts → code-generators-DPAqTcAz.d.ts} +0 -2
- package/dist/codegen.cjs +1 -1
- package/dist/codegen.d.cts +1 -1
- package/dist/codegen.d.ts +1 -1
- package/dist/codegen.js +1 -1
- package/dist/composer-actions-runtime.cjs +1 -1
- package/dist/composer-actions-runtime.d.cts +4 -20
- package/dist/composer-actions-runtime.d.ts +4 -20
- package/dist/composer-actions-runtime.js +1 -1
- package/dist/{composer-input-DnqGCXZz.d.ts → composer-input-BSDNPOqV.d.cts} +1 -7
- package/dist/{composer-input-DnqGCXZz.d.cts → composer-input-BSDNPOqV.d.ts} +1 -7
- package/dist/{composer-store-6Iwy6WLI.d.ts → composer-store-DC-gAjtN.d.cts} +1 -3
- package/dist/{composer-store-6Iwy6WLI.d.cts → composer-store-DC-gAjtN.d.ts} +1 -3
- package/dist/config-diagnostics.d.cts +0 -2
- package/dist/config-diagnostics.d.ts +0 -2
- package/dist/{context-mention-manager-B-rHF98n.d.ts → context-mention-manager-CCpeoGL2.d.cts} +2 -6
- package/dist/{context-mention-manager-B-rHF98n.d.cts → context-mention-manager-CCpeoGL2.d.ts} +2 -6
- package/dist/context-mentions-inline.cjs +1 -1
- package/dist/context-mentions-inline.d.cts +2 -4
- package/dist/context-mentions-inline.d.ts +2 -4
- package/dist/context-mentions-inline.js +1 -1
- package/dist/context-mentions.cjs +2 -2
- package/dist/context-mentions.d.cts +3 -9
- package/dist/context-mentions.d.ts +3 -9
- package/dist/context-mentions.js +1 -1
- package/dist/{defaults-BuOjqUAG.d.ts → defaults-tj5RcN8r.d.cts} +1 -5
- package/dist/{defaults-BuOjqUAG.d.cts → defaults-tj5RcN8r.d.ts} +1 -5
- package/dist/dictation-runtime.cjs +1 -1
- package/dist/dictation-runtime.d.cts +4 -13
- package/dist/dictation-runtime.d.ts +4 -13
- package/dist/dictation-runtime.js +1 -1
- package/dist/{dom-context-DHTabIn7.d.cts → dom-context-Bw-_9Evh.d.cts} +0 -2
- package/dist/{dom-context-DHTabIn7.d.ts → dom-context-Bw-_9Evh.d.ts} +0 -2
- package/dist/event-stream-view.cjs +1 -1
- package/dist/event-stream-view.d.cts +3 -16
- package/dist/event-stream-view.d.ts +3 -16
- package/dist/{fallback-speech-engine-SqEfkGda.d.ts → fallback-speech-engine-gkhbjLiZ.d.cts} +1 -3
- package/dist/{fallback-speech-engine-SqEfkGda.d.cts → fallback-speech-engine-gkhbjLiZ.d.ts} +1 -3
- package/dist/{feature-preferences-DqAmje-2.d.ts → feature-preferences-CerDWGZ7.d.cts} +1 -5
- package/dist/{feature-preferences-DqAmje-2.d.cts → feature-preferences-CerDWGZ7.d.ts} +1 -5
- package/dist/forms-ui.d.cts +2 -4
- package/dist/forms-ui.d.ts +2 -4
- package/dist/{history-confirm-dialog-B3L7QNcO.d.cts → history-confirm-dialog-CrkSB3Ra.d.cts} +2 -14
- package/dist/{history-confirm-dialog-B3L7QNcO.d.ts → history-confirm-dialog-CrkSB3Ra.d.ts} +2 -14
- package/dist/history-shell.cjs +1 -1
- package/dist/history-shell.d.cts +8 -27
- package/dist/history-shell.d.ts +8 -27
- 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/icons-extra.cjs +1 -1
- package/dist/icons-extra.d.cts +0 -2
- package/dist/icons-extra.d.ts +0 -2
- package/dist/index.cjs +44 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.global.js +1 -1
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +50 -50
- package/dist/index.js.map +1 -1
- package/dist/install.global.js +1 -1
- package/dist/install.global.js.map +1 -1
- package/dist/launcher.global.js +2 -2
- package/dist/launcher.global.js.map +1 -1
- package/dist/{loading-label-runtime-loader-JecjOfJS.d.ts → loading-label-runtime-loader-fWIRrhUF.d.cts} +1 -3
- package/dist/{loading-label-runtime-loader-JecjOfJS.d.cts → loading-label-runtime-loader-fWIRrhUF.d.ts} +1 -3
- package/dist/loading-label-runtime.cjs +1 -1
- package/dist/loading-label-runtime.d.cts +1 -1
- package/dist/loading-label-runtime.d.ts +1 -1
- package/dist/loading-label-runtime.js +1 -1
- package/dist/markdown-parsers.js +1 -1
- package/dist/{message-bubble-CBYtpDsT.d.ts → message-bubble-Czc0lOHr.d.cts} +20 -3
- package/dist/{message-bubble-CBYtpDsT.d.cts → message-bubble-Czc0lOHr.d.ts} +20 -3
- package/dist/{plugin-kit-C1mRjLgW.d.cts → plugin-kit-C30jE-cw.d.cts} +3 -3
- package/dist/{plugin-kit-C1mRjLgW.d.ts → plugin-kit-C30jE-cw.d.ts} +3 -3
- package/dist/plugin-kit.cjs +1 -1
- package/dist/plugin-kit.d.cts +1 -1
- package/dist/plugin-kit.d.ts +1 -1
- package/dist/plugin-kit.js +1 -1
- package/dist/preferences-runtime.cjs +1 -1
- package/dist/preferences-runtime.d.cts +1 -1
- package/dist/preferences-runtime.d.ts +1 -1
- package/dist/preferences-runtime.js +1 -1
- package/dist/{preview-_UJwwt2L.d.cts → preview-D-osV3FU.d.cts} +2 -6
- package/dist/{preview-_UJwwt2L.d.ts → preview-D-osV3FU.d.ts} +2 -6
- package/dist/{registry-B5ZV3K-h.d.ts → registry-B6w91tx0.d.cts} +1 -8
- package/dist/{registry-B5ZV3K-h.d.cts → registry-B6w91tx0.d.ts} +1 -8
- package/dist/{session-Bys8_XuB.d.cts → session-BUQrs3Of.d.cts} +10 -93
- package/dist/{session-Bys8_XuB.d.ts → session-BUQrs3Of.d.ts} +10 -93
- package/dist/session-reconnect.d.cts +2 -4
- package/dist/session-reconnect.d.ts +2 -4
- package/dist/smart-dom-reader.d.cts +2 -8
- package/dist/smart-dom-reader.d.ts +2 -8
- package/dist/testing.d.cts +0 -2
- package/dist/testing.d.ts +0 -2
- package/dist/theme-editor-preview.cjs +50 -50
- package/dist/theme-editor-preview.d.cts +1 -1
- package/dist/theme-editor-preview.d.ts +1 -1
- package/dist/theme-editor-preview.js +25 -25
- package/dist/theme-editor.cjs +25 -5
- package/dist/theme-editor.d.cts +2 -22
- package/dist/theme-editor.d.ts +2 -22
- package/dist/theme-editor.js +1 -1
- package/dist/theme-reference.cjs +1 -1
- package/dist/theme-reference.d.cts +2 -4
- package/dist/theme-reference.d.ts +2 -4
- package/dist/theme-reference.js +1 -1
- package/dist/{tool-loading-animation-d5qAQcwv.d.ts → tool-loading-animation-B7XUf8TN.d.cts} +1 -7
- package/dist/{tool-loading-animation-d5qAQcwv.d.cts → tool-loading-animation-B7XUf8TN.d.ts} +1 -7
- package/dist/{tooltip-BkW-8MnD.d.cts → tooltip-DbXkAuJL.d.cts} +0 -2
- package/dist/{tooltip-BkW-8MnD.d.ts → tooltip-DbXkAuJL.d.ts} +0 -2
- package/dist/{turn-activity-ui-q6fHVnx-.d.cts → turn-activity-ui-CohuNMHT.d.cts} +2 -12
- package/dist/{turn-activity-ui-q6fHVnx-.d.ts → turn-activity-ui-CohuNMHT.d.ts} +2 -12
- package/dist/turn-activity-ui.d.cts +1 -1
- package/dist/turn-activity-ui.d.ts +1 -1
- package/dist/{types-B_mj21jg.d.cts → types-9i0xcAMT.d.cts} +128 -29
- package/dist/{types-B_mj21jg.d.ts → types-9i0xcAMT.d.ts} +128 -29
- package/dist/ui-extras.js +3 -3
- package/dist/voice-client-tools.d.cts +1 -3
- package/dist/voice-client-tools.d.ts +1 -3
- package/dist/voice-runtime.cjs +1 -1
- package/dist/voice-runtime.d.cts +2 -12
- package/dist/voice-runtime.d.ts +2 -12
- package/dist/voice-runtime.js +2 -2
- package/dist/voice-worklet-player.d.cts +2 -6
- package/dist/voice-worklet-player.d.ts +2 -6
- package/dist/{webmcp-runtime-entry-ClEO3qdI.d.ts → webmcp-runtime-entry-XNaXa-9h.d.cts} +9 -5
- package/dist/{webmcp-runtime-entry-ClEO3qdI.d.cts → webmcp-runtime-entry-XNaXa-9h.d.ts} +9 -5
- package/dist/webmcp-runtime.cjs +1 -1
- package/dist/webmcp-runtime.d.cts +1 -1
- package/dist/webmcp-runtime.d.ts +1 -1
- package/dist/webmcp-runtime.js +1 -1
- package/dist/widget.css +1 -1
- package/package.json +5 -5
- package/src/client-dispatch.ts +13 -0
- package/src/client.ts +37 -2
- package/src/client.webmcp-require-confirm.test.ts +212 -0
- package/src/components/composer-model-picker.ts +0 -14
- package/src/components/composer-overflow-menu.ts +0 -15
- package/src/components/composer-tokens.ts +0 -20
- package/src/components/event-stream-view.test.ts +5 -0
- package/src/components/message-bubble.ts +26 -6
- package/src/components/scroll-to-bottom.test.ts +135 -0
- package/src/components/scroll-to-bottom.ts +50 -13
- package/src/components/user-message-collapse.ts +117 -0
- package/src/defaults.ts +6 -0
- package/src/generated/runtype-openapi-contract.ts +13 -0
- package/src/plugin-kit.test.ts +101 -0
- package/src/plugin-kit.ts +29 -1
- package/src/session.ts +6 -2
- package/src/session.webmcp.test.ts +32 -0
- package/src/styles/widget.css +56 -0
- package/src/theme-reference.ts +2 -2
- package/src/types/theme.ts +29 -0
- package/src/types.ts +84 -5
- package/src/ui.composer-models.test.ts +5 -7
- package/src/ui.composer-overflow.test.ts +14 -21
- package/src/ui.scroll-additive.test.ts +219 -117
- package/src/ui.scroll.test.ts +176 -13
- package/src/ui.ts +230 -107
- package/src/ui.turn-activity.test.ts +7 -7
- package/src/ui.user-message-collapse.test.ts +540 -0
- package/src/utils/auto-follow.test.ts +0 -38
- package/src/utils/auto-follow.ts +0 -35
- package/src/utils/context-mention-controller.test.ts +56 -0
- package/src/utils/theme.test.ts +23 -0
- package/src/utils/tokens.ts +16 -0
- package/src/webmcp-bridge.test.ts +102 -0
- package/src/webmcp-runtime-entry.ts +29 -1
- package/dist/chunk-BAkaTZpd.js +0 -1
- package/dist/chunk-BEDTp-dm.js +0 -1
- package/dist/chunk-C7-m0EmI.js +0 -1
- package/dist/chunk-CNhThrLX.js +0 -1
- package/dist/chunk-CVMIncEY.js +0 -1
- package/dist/chunk-CzLEhoB_.js +0 -2
- package/dist/chunk-DVgzoVCB.js +0 -1
- package/dist/chunk-d54BJdKd.js +0 -1
- package/dist/chunk-dLJWKfOb.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./chunk-py2YB6PV.js";function t(e){return e.kind===`text`?e.value.length:1}function n(e){let t=[],n=e=>{let n=t[t.length-1];n&&n.kind===`text`?n.value+=e:t.push({kind:`text`,value:e})};(e.length===0||e[0].kind!==`text`)&&t.push({kind:`text`,value:``});for(let r of e){if(r.kind===`text`){n(r.value);continue}let e=t[t.length-1];
|
|
1
|
+
import{n as e}from"./chunk-py2YB6PV.js";function t(e){return e.kind===`text`?e.value.length:1}function n(e){let t=[],n=e=>{let n=t[t.length-1];n&&n.kind===`text`?n.value+=e:t.push({kind:`text`,value:e})};(e.length===0||e[0].kind!==`text`)&&t.push({kind:`text`,value:``});for(let r of e){if(r.kind===`text`){n(r.value);continue}let e=t[t.length-1];e&&e.kind===`text`||t.push({kind:`text`,value:``}),t.push({kind:`mention`,id:r.id,ref:r.ref}),t.push({kind:`text`,value:``})}let r=t[t.length-1];return r&&r.kind===`text`||t.push({kind:`text`,value:``}),t}function r(){return{blocks:[{kind:`text`,value:``}]}}function i(e){return{blocks:[{kind:`text`,value:e}]}}function a(e){return e.blocks.map(e=>e.kind===`text`?e.value:`@${e.ref.label}`).join(``)}function o(e){return e.blocks.map(e=>e.kind===`text`?e.value:``).join(``)}function s(e){return e.blocks.reduce((e,n)=>e+t(n),0)}function c(e){let t=[];for(let n of e.blocks)n.kind===`mention`&&t.push({id:n.id,ref:n.ref});return t}function l(e,n){let r=[],i=[],a=0;for(let o of e){let e=t(o),s=a+e;if(s<=n)r.push(o);else if(a>=n)i.push(o);else if(o.kind===`text`){let t=n-a;t>0&&r.push({kind:`text`,value:o.value.slice(0,t)}),t<e&&i.push({kind:`text`,value:o.value.slice(t)})}else i.push(o);a=s}return{left:r,right:i}}function u(e,t,r,i){let a=l(e.blocks,t.start).left,o=l(e.blocks,t.end).right,s=o[0],c=s?.kind===`text`?s.value.charAt(0):``,u=c!==` `&&c!==` `&&c!==`
|
|
2
2
|
`,d=n([...a,{kind:`mention`,id:i,ref:r},...u?[{kind:`text`,value:` `}]:[],...o]),f=t.start+1+(c===`
|
|
3
3
|
`?0:1);return{doc:{blocks:d},caret:f}}function d(e,r){let i=0,a=0,o=!1;for(let n of e.blocks)n.kind===`mention`&&n.id===r&&(i=a,o=!0),a+=t(n);return o?{doc:{blocks:n(e.blocks.filter(e=>e.kind!==`mention`||e.id!==r))},caret:i}:{doc:e,caret:a}}function f(e,t,r,i){let a=s(e),o=Math.max(0,Math.min(t,r,a)),c=Math.min(a,Math.max(t,r,0)),u=l(e.blocks,o).left,d=l(e.blocks,c).right;return{doc:{blocks:n([...u,{kind:`text`,value:i},...d])},caret:o+i.length}}function p(e){let t=[];for(let n of e.blocks)n.kind===`text`?n.value.length>0&&t.push({kind:`text`,text:n.value}):t.push({kind:`mention`,ref:n.ref});return{content:a(e),contextMentions:c(e).map(e=>e.ref),contentSegments:t}}const m=`data-mention-id`,h=`data-mention-prev-label`,g=`data-mention-prev-title`;function _(e){return e.nodeType===1&&e.hasAttribute(m)}function v(e){return e.nodeType===1&&e.tagName===`BR`}function y(e){return e.nodeType===3?e.data.length:_(e)||v(e)?1:e.textContent?.length??0}function b(e,t,n){let r=0;for(let i of Array.from(e.childNodes)){if(i===t)return i.nodeType===3?r+n:r+(n>0?y(i):0);if(i.contains(t))return _(i)?r+1:r+x(i,t,n);r+=y(i)}if(t===e){let t=0,r=Array.from(e.childNodes);for(let e=0;e<Math.min(n,r.length);e++)t+=y(r[e]);return t}return r}function x(e,t,n){let r=0,i=e=>{if(e===t)return r+=e.nodeType===3?n:0,!0;if(e.nodeType===3)return r+=e.data.length,!1;for(let t of Array.from(e.childNodes))if(i(t))return!0;return!1};return i(e),r}function S(e,t){let n=0,r=Array.from(e.childNodes);for(let i=0;i<r.length;i++){let a=r[i],o=y(a);if(t<=n+o)return a.nodeType===3?{node:a,offset:t-n}:{node:e,offset:t<=n?i:i+1};n+=o}return{node:e,offset:r.length}}function C(e,t){let n=[];for(let r of Array.from(e.childNodes))if(_(r)){let e=r.getAttribute(m),i=t.get(e);i&&n.push({kind:`mention`,id:e,ref:i})}else if(v(r))n.push({kind:`text`,value:`
|
|
4
4
|
`});else if(r.nodeType===3)n.push({kind:`text`,value:r.data});else{let e=r.textContent??``;e&&n.push({kind:`text`,value:e})}return n.length===0&&n.push({kind:`text`,value:``}),{blocks:n}}function w(t){let n=t.renderToken,c=/* @__PURE__ */ new Map,l=t.element??document.createElement(`div`);l.setAttribute(`contenteditable`,`true`),l.setAttribute(`data-persona-composer-input`,``),l.setAttribute(`role`,`textbox`),l.setAttribute(`aria-multiline`,`true`),l.setAttribute(`dir`,`auto`),l.classList.add(`persona-composer-contenteditable`),t.placeholder!=null&&l.setAttribute(`data-placeholder`,t.placeholder);let p=!1,v=0,y=()=>C(l,c),x=e=>{l.replaceChildren();for(let t of e.blocks)if(t.kind===`text`)t.value.length>0&&l.appendChild(document.createTextNode(t.value));else{c.set(t.id,t.ref);let e=n(t.ref);e.setAttribute(`contenteditable`,`false`),e.setAttribute(m,t.id),l.appendChild(e)}},w=()=>{let e=l.getRootNode().activeElement;return e===l||e!=null&&l.contains(e)},T=(e,t)=>{if(v=e,!t?.focus&&!w())return;let n=typeof window<`u`?window.getSelection():null;if(!n)return;let r=S(l,e);try{let e=document.createRange();e.setStart(r.node,r.offset),e.collapse(!0),n.removeAllRanges(),n.addRange(e)}catch{}},E=()=>{l.dispatchEvent(new Event(`input`,{bubbles:!0}))},D=()=>{let e={start:v,end:v},t=typeof window<`u`?window.getSelection():null;if(!t||t.rangeCount===0)return e;let n=t.getRangeAt(0);if(!l.contains(n.startContainer))return e;let r=b(l,n.startContainer,n.startOffset),i=n.collapsed?r:b(l,n.endContainer,n.endOffset);return{start:Math.min(r,i),end:Math.max(r,i)}},O=()=>{let e=/* @__PURE__ */ new Set;for(let t of Array.from(l.childNodes))_(t)&&e.add(t.getAttribute(m));for(let n of Array.from(c.keys()))e.has(n)||(c.delete(n),t.onMentionRemoved?.(n))},k=()=>{p||c.size!==0&&O()},A=()=>{p=!0},j=()=>{p=!1,O()},M=e=>{e.preventDefault();let t=e.clipboardData?.getData(`text/plain`)??``;if(typeof document.execCommand==`function`)document.execCommand(`insertText`,!1,t);else{let{start:e,end:n}=D(),r=f(y(),e,n,t);x(r.doc),T(r.caret,{focus:!0}),O()}E()},N=e=>{if(p)return;let t=e.inputType;if(t===`insertParagraph`){e.preventDefault();let{start:t,end:n}=D(),r=f(y(),t,n,`
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=(e,t)=>({ok:!1,reason:e,message:t}),t=e=>e.startsWith(`webmcp:`)?e.slice(7):e,n={warn(e,...t){typeof console<`u`&&typeof console.warn==`function`&&console.warn(`[Persona/WebMCP] ${e}`,...t)}};var r=class{#e;#t;#n=!1;#r=null;#i=!1;#a;constructor(e,t){this.config=e,this.#a=t,this.#e=e.onConfirm??null,this.#t=3e4}setConfirmHandler(e){this.#e=e}isOperational(){return this.config.enabled!==!0||!this.#n?!1:this.#l()!==null}async snapshotForDispatch(){if(await this.#s(),this.config.enabled!==!0)return[];let e=this.#l();if(!e)return[];let t;try{t=(await e.getTools()).filter(h)}catch(e){return n.warn(`getTools() threw: shipping an empty WebMCP snapshot.`,e),[]}this.#a.recordToolDisplayTitles(t);let r=typeof location<`u`?location.origin:``;return t.filter(e=>this.#f(e.name)).map(e=>{let t=o(e.annotations);return{name:e.name,description:e.description,parametersSchema:s(e.inputSchema),origin:`webmcp`,...r?{pageOrigin:r}:{},...t?{annotations:t}:{},...t?.untrustedContentHint===!0?{untrustedContentHint:!0}:{}}})}async executeToolCall(e,t,n,r){let i=await this.#o(e,t,n,!1,r);return i.ok?c(i.raw):u(i.message)}async executeVoiceToolCall(e,t,n={}){let r=await this.#o(e,t,n.signal,n.autoConfirmReadOnly===!0);return r.ok?f(r.raw):{status:r.reason===`aborted`?`failed`:r.reason,error:{message:r.message}}}watchToolChanges(e){let t=!1,n=null;return this.#s().then(()=>{if(t||this.config.enabled!==!0)return;let r=this.#l();r&&typeof r.addEventListener==`function`&&(n=r,n.addEventListener(`toolchange`,e))}),()=>{t=!0,n?.removeEventListener(`toolchange`,e),n=null}}async#o(n,r,i,a,s){if(await this.#s(),this.config.enabled!==!0)return e(`failed`,`WebMCP is not enabled on this widget.`);let c=this.#l();if(!c){let t=typeof document<`u`&&!!document.modelContext;return e(`failed`,t?`WebMCP is not operational: document.modelContext is present but does not expose the strict getTools()/executeTool() surface (likely a different or older WebMCP polyfill).`:`WebMCP bridge is not operational on this page (document.modelContext not available).`)}let u=t(n),d;try{d=(await c.getTools()).filter(h)}catch(t){let n=t instanceof Error?t.message:String(t);return e(`failed`,`Failed to read WebMCP registry: ${n}`)}this.#a.recordToolDisplayTitles(d);let f=d.find(e=>e.name===u);if(!f)return e(`stale`,`WebMCP tool not registered on this page: ${u}`);if(!this.#f(u))return e(`stale`,`WebMCP tool not allowed by client allowlist: ${u}`);if(i?.aborted)return e(`aborted`,`Aborted by cancel()`);let p=this.#a.getToolDisplayTitle(u),m=o(f.annotations),g={toolName:u,...s?{toolCallId:s}:{},args:r,description:f.description,...m?{annotations:m}:{},...p?{title:p}:{},...i?{signal:i}:{},reason:`gate`},_=this.#d(u);if(_&&(g.confirmRequired=!0),(_||!a||m?.readOnlyHint!==!0)&&!await this.#u(g))return e(`denied`,`User declined the tool call.`);if(i?.aborted)return e(`aborted`,`Aborted by cancel()`);let v=new AbortController,y=!1,b=setTimeout(()=>{y=!0,v.abort()},this.#t),x=()=>v.abort();i&&(i.aborted?v.abort():i.addEventListener(`abort`,x,{once:!0}));try{return{ok:!0,raw:await c.executeTool(f,l(r),{signal:v.signal})}}catch(t){if(y)return e(`timeout`,`WebMCP tool '${u}' timed out after ${this.#t}ms`);if(i?.aborted)return e(`aborted`,`Aborted by cancel()`);let n=t instanceof Error?t.message:String(t);return e(`failed`,n)}finally{clearTimeout(b),i&&i.removeEventListener(`abort`,x)}}#s(){return this.config.enabled===!0?(this.#r||=this.#c(),this.#r):Promise.resolve()}async#c(){try{if(this.#l()){this.#n=!0;return}let e=await this.#a.loadPolyfill();`initializeWebMCPPolyfill`in e?e.initializeWebMCPPolyfill():e.installWebMCP(),this.#n=!0}catch(e){n.warn(`Failed to load @mcp-b/webmcp-polyfill: WebMCP consumption disabled.`,e),this.#n=!1}}#l(){if(typeof document>`u`)return null;let e=document.modelContext;if(!e||typeof e!=`object`)return null;let t=e;return typeof t.getTools!=`function`||typeof t.executeTool!=`function`?(this.#i||(this.#i=!0,n.warn(`document.modelContext is present but does not expose getTools()/executeTool(): WebMCP consumption is disabled. Another (incompatible or older) WebMCP polyfill likely installed document.modelContext before Persona. Remove it, or use a polyfill implementing the strict standard surface (e.g. @mcp-b/webmcp-polyfill).`)),null):e}async#u(e){let t=this.#e??p;try{return await t(e)}catch(t){return n.warn(`Confirm handler threw for WebMCP tool '${e.toolName}'; declining.`,t),!1}}#d(e){let t;try{t=this.#a.getRequireConfirmFor?.()}catch{t=null}if(t===null)return!0;let n=t=>Array.isArray(t)&&t.some(t=>typeof t==`string`&&i(e,t));return n(this.config.requireConfirmFor)||n(t)}#f(e){let t=this.config.allowlist;return!t||t.length===0||t.some(t=>i(e,t))}};const i=(e,t)=>{if(t===`*`)return!0;let n=t.replace(/[.+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`^`+n.replace(/\*/g,`.*`)+`$`).test(e)},a={type:`object`,properties:{}},o=e=>{if(!e||typeof e!=`object`)return;let t={};for(let n of[`readOnlyHint`,`destructiveHint`,`consequentialHint`,`untrustedContentHint`,`idempotentHint`,`openWorldHint`,`debugging`]){let r=e[n];typeof r==`boolean`&&(t[n]=r)}return Object.keys(t).length>0?t:void 0},s=e=>{if(e===void 0||e===``)return{...a};if(typeof e==`object`)return e!==null&&!Array.isArray(e)?e:{...a};try{let t=JSON.parse(e);return typeof t==`object`&&t&&!Array.isArray(t)?t:{...a}}catch{return{...a}}},c=e=>{if(e==null)return{content:[{type:`text`,text:``}]};let t;try{t=JSON.parse(e)}catch{return{content:[{type:`text`,text:e}]}}return typeof t==`object`&&t&&Array.isArray(t.content)?t:{content:[{type:`text`,text:typeof t==`string`?t:g(t)}]}},l=e=>{let t;try{t=JSON.stringify(e)??`{}`}catch{t=`{}`}let n=JSON.parse(t);if(typeof n!=`object`||!n)throw TypeError(`WebMCP tool arguments must be an object or array.`);return Object.defineProperty(n,Symbol.toPrimitive,{value:()=>t}),n},u=e=>({isError:!0,content:[{type:`text`,text:e}]}),d=e=>Array.isArray(e)?e.map(e=>e&&typeof e==`object`&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
|
|
2
|
+
`):``,f=e=>{if(e==null)return{status:`completed`};let t;try{t=JSON.parse(e)}catch{return{status:`completed`,result:e}}return typeof t==`object`&&t&&t.isError===!0?{status:`failed`,error:{message:d(t.content)||`The page tool reported an error.`}}:t===void 0?{status:`completed`}:{status:`completed`,result:t}},p=async e=>{if(typeof window>`u`||typeof window.confirm!=`function`)return!1;let t=m(e.args),n=`Allow the AI to call ${e.toolName}`+(t?`\n\nArguments:\n${t}`:``)+(e.description?`\n\n${e.description}`:``);return window.confirm(n)},m=e=>{if(e==null)return``;try{let t=JSON.stringify(e,null,2);return t.length>500?t.slice(0,500)+`…`:t}catch{return String(e)}},h=e=>(e.window===void 0||typeof window<`u`&&e.window===window)&&(e.origin===void 0||typeof location<`u`&&e.origin===location.origin),g=e=>{if(e===void 0)return``;try{return JSON.stringify(e)}catch{return String(e)}};export{r as WebMcpBridge};
|
|
@@ -1 +1 @@
|
|
|
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};
|
|
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,r as t}from"./chunk-CEPM3FOp.js";import{t as n}from"./chunk-D5BxWOFB.js";import{t as r}from"./chunk-DehTFE4q.js";const i=(e,t,r)=>{let i=r;for(let r of t){let t=n(`span`,`persona-tool-char`);t.style.setProperty(`--char-index`,String(i)),t.textContent=r===` `?`\xA0`:r,e.appendChild(t),i++}return i};function a(e,t){let{animation:n,duration:r,color:a,secondaryColor:o}=t;if(n===`none`||(e.setAttribute(`data-preserve-animation`,`true`),e.classList.add(`persona-tool-loading-${n}`),r&&e.style.setProperty(`--persona-tool-anim-duration`,r),a&&e.style.setProperty(`--persona-tool-anim-color`,a),o&&e.style.setProperty(`--persona-tool-anim-secondary-color`,o),n===`pulse`))return;let s=0,c=e=>{for(let t of Array.from(e.childNodes))if(t.nodeType===3){let e=document.createElement(`span`);s=i(e,t.textContent??``,s),t.replaceWith(...Array.from(e.childNodes))}else t instanceof HTMLElement&&!t.hasAttribute(`data-tool-elapsed`)&&c(t)};c(e)}const{resolveToolStyles:o,applyToolPadding:s,toolLoadingDuration:c}=r({getExplicitLegacyStyle:t,hasExplicitThemeStyle:e});function l(e,t,n){let r=t?.loadingLabel,i=n===`reasoning`,s=i?t?.reasoning:o(t),l=n===`waiting`?void 0:i?t?.features?.reasoningDisplay:t?.features?.toolCallDisplay,u=r?.animation??l?.loadingAnimation??(n===`waiting`||t?.future?.v5Defaults?`shimmer`:`none`);if(u===`none`)return;let d={animation:u,duration:r?.duration===void 0?i?`${s?.loadingAnimationDuration??2e3}ms`:c(t):`${r.duration}ms`,color:r?.color??s?.loadingAnimationColor,secondaryColor:r?.secondaryColor??s?.loadingAnimationSecondaryColor};e.dataset.personaLoadingLabel=n,e.dataset.personaLoadingText=e.textContent??``,e.dataset.personaLoadingAnimation=JSON.stringify([n,e.textContent,d,!!r?.animate,e.className,e.getAttribute(`style`)]),r?.animate?e.setAttribute(`data-preserve-animation`,`true`):a(e,d)}function u(e,t){let n=!1,r=/* @__PURE__ */ new Map,i=e.ownerDocument.defaultView?.matchMedia?.(`(prefers-reduced-motion: reduce)`),a=e=>{try{e()}catch(e){console.warn(`[persona] Loading label animation failed`,e)}},o=e=>{let t=r.get(e);r.delete(e),t?.handle&&a(()=>t.handle?.destroy())},s=e=>`${e.closest(`[data-wrapper-id]`)?.dataset.wrapperId??``}:${e.dataset.personaLoadingLabel}`,c=e=>{if(n)return;let a=i?.matches?void 0:t().loadingLabel?.animate;if(!a&&!r.size)return;let c=new Set(Array.from(e.querySelectorAll(`[data-persona-loading-label]`),s)),l=new Set(Array.from(e.querySelectorAll(`[data-persona-reuse]`),e=>e.dataset.wrapperId));for(let[e,t]of r){let n=l.has(e.closest(`[data-wrapper-id]`)?.dataset.wrapperId);(t.start!==a||!n&&!c.has(s(e)))&&o(e)}},l=()=>{if(n)return;let s=t(),c=i?.matches?void 0:s.loadingLabel?.animate;if(!c&&!r.size)return;let l=new Set(e.querySelectorAll(`[data-persona-loading-label]`));for(let[e,t]of r)
|
|
1
|
+
import{a as e,r as t}from"./chunk-CEPM3FOp.js";import{t as n}from"./chunk-D5BxWOFB.js";import{t as r}from"./chunk-DehTFE4q.js";const i=(e,t,r)=>{let i=r;for(let r of t){let t=n(`span`,`persona-tool-char`);t.style.setProperty(`--char-index`,String(i)),t.textContent=r===` `?`\xA0`:r,e.appendChild(t),i++}return i};function a(e,t){let{animation:n,duration:r,color:a,secondaryColor:o}=t;if(n===`none`||(e.setAttribute(`data-preserve-animation`,`true`),e.classList.add(`persona-tool-loading-${n}`),r&&e.style.setProperty(`--persona-tool-anim-duration`,r),a&&e.style.setProperty(`--persona-tool-anim-color`,a),o&&e.style.setProperty(`--persona-tool-anim-secondary-color`,o),n===`pulse`))return;let s=0,c=e=>{for(let t of Array.from(e.childNodes))if(t.nodeType===3){let e=document.createElement(`span`);s=i(e,t.textContent??``,s),t.replaceWith(...Array.from(e.childNodes))}else t instanceof HTMLElement&&!t.hasAttribute(`data-tool-elapsed`)&&c(t)};c(e)}const{resolveToolStyles:o,applyToolPadding:s,toolLoadingDuration:c}=r({getExplicitLegacyStyle:t,hasExplicitThemeStyle:e});function l(e,t,n){let r=t?.loadingLabel,i=n===`reasoning`,s=i?t?.reasoning:o(t),l=n===`waiting`?void 0:i?t?.features?.reasoningDisplay:t?.features?.toolCallDisplay,u=r?.animation??l?.loadingAnimation??(n===`waiting`||t?.future?.v5Defaults?`shimmer`:`none`);if(u===`none`)return;let d={animation:u,duration:r?.duration===void 0?i?`${s?.loadingAnimationDuration??2e3}ms`:c(t):`${r.duration}ms`,color:r?.color??s?.loadingAnimationColor,secondaryColor:r?.secondaryColor??s?.loadingAnimationSecondaryColor};e.dataset.personaLoadingLabel=n,e.dataset.personaLoadingText=e.textContent??``,e.dataset.personaLoadingAnimation=JSON.stringify([n,e.textContent,d,!!r?.animate,e.className,e.getAttribute(`style`)]),r?.animate?e.setAttribute(`data-preserve-animation`,`true`):a(e,d)}function u(e,t){let n=!1,r=/* @__PURE__ */ new Map,i=e.ownerDocument.defaultView?.matchMedia?.(`(prefers-reduced-motion: reduce)`),a=e=>{try{e()}catch(e){console.warn(`[persona] Loading label animation failed`,e)}},o=e=>{let t=r.get(e);r.delete(e),t?.handle&&a(()=>t.handle?.destroy())},s=e=>`${e.closest(`[data-wrapper-id]`)?.dataset.wrapperId??``}:${e.dataset.personaLoadingLabel}`,c=e=>{if(n)return;let a=i?.matches?void 0:t().loadingLabel?.animate;if(!a&&!r.size)return;let c=new Set(Array.from(e.querySelectorAll(`[data-persona-loading-label]`),s)),l=new Set(Array.from(e.querySelectorAll(`[data-persona-reuse]`),e=>e.dataset.wrapperId));for(let[e,t]of r){let n=l.has(e.closest(`[data-wrapper-id]`)?.dataset.wrapperId);(t.start!==a||!n&&!c.has(s(e)))&&o(e)}},l=()=>{if(n)return;let s=t(),c=i?.matches?void 0:s.loadingLabel?.animate;if(!c&&!r.size)return;let l=new Set(e.querySelectorAll(`[data-persona-loading-label]`));for(let[e,t]of r)c&&t.start===c&&l.has(e)&&e.dataset.personaLoadingLabel===t.kind||o(e);if(c)for(let e of l){if(n||t().loadingLabel?.animate!==c)break;let i={element:e,config:s,text:e.dataset.personaLoadingText??``,kind:e.dataset.personaLoadingLabel,reducedMotion:!1},o=r.get(e);if(o)a(()=>o.handle?.update?.(i));else{let t={start:c,kind:i.kind,handle:void 0};r.set(e,t),a(()=>{let n=c(i);r.get(e)===t?t.handle=n:n?.destroy()})}}};return i?.addEventListener?.(`change`,l),{prepare:c,sync:l,destroy(){n=!0,i?.removeEventListener?.(`change`,l);for(let e of r.keys())o(e)}}}export{a as applyLoadingAnimation,l as applyLoadingLabel,u as createLoadingLabelLifecycle};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=e=>e.nodeType===Node.DOCUMENT_NODE,t=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host!==void 0;function n(n){let r=n.getRootNode?.();return r&&t(r)||r&&e(r)?r:n.ownerDocument??document}function r(t,n,r){let i=e(t)?t.head:t,a=n.replace(/["\\]/g,`\\$&`);if(i.querySelector(`style[data-persona-plugin-style="${a}"]`))return;let o=(e(t)?t:t.ownerDocument??document).createElement(`style`);o.setAttribute(`data-persona-plugin-style`,n),o.textContent=r,i.appendChild(o)}function i(i,a,o){if(e(i)||t(i)){r(i,a,o);return}let s=i;if(s.isConnected){r(n(s),a,o);return}let c=s.ownerDocument??document;r(c,a,o),queueMicrotask(()=>{let e=n(s);e!==c&&r(e,a,o)})}function a(e){let t=e.getRootNode?.();return t instanceof ShadowRoot?t:e.closest(`dialog[open]`)??(e.ownerDocument??document).body}function o(e){let{anchor:t,content:n,placement:r=`bottom-start`,offset:i=6,matchAnchorWidth:o=!1,horizontalOffset:s,verticalOffset:c,zIndex:l=2147483e3,onOpen:u,onDismiss:d}=e,f=()=>e.container??a(t),p=!1,m=null,h=[],g=()=>{let e=t.closest(`[data-persona-root]`);if(!e||e.contains(n))return;let{style:r}=e;for(let e of h)r.getPropertyValue(e)||n.style.removeProperty(e);h=Array.from(r).filter(e=>e.startsWith(`--`));for(let e of h)n.style.setProperty(e,r.getPropertyValue(e));for(let t of[`data-persona-color-scheme`,`data-persona-defaults`]){let r=e.getAttribute(t);r?n.setAttribute(t,r):n.removeAttribute(t)}},_=()=>{if(!p)return;let a=f();if(n.parentNode!==a){let e=n.contains(n.ownerDocument.activeElement)?n.ownerDocument.activeElement:null;a.appendChild(n),g(),e?.focus({preventScroll:!0})}let l=e.getAnchorRect?.()??t.getBoundingClientRect();n.style.position=`fixed`,o&&(n.style.minWidth=`${l.width}px`),s&&(n.style.maxWidth=`${l.width}px`);let u=n.getBoundingClientRect(),d=c?.()??null,m=d==null?l.top:l.top+d,h=e.getPlacement?.()??r,_=h===`top-start`||h===`top-end`?m-i-u.height:l.bottom+i,v=h===`bottom-end`||h===`top-end`?l.right-u.width:l.left,y=s?.()??null;if(y!=null){let e=Math.max(l.left,l.right-u.width);v=Math.min(Math.max(l.left+y,l.left),e)}if(e.viewportPadding!==void 0){let n=e.viewportPadding,r=t.ownerDocument.defaultView,a=r?.innerHeight??0,o=r?.innerWidth??0,s=m-i-n,c=a-l.bottom-i-n;_=(h.startsWith(`top`)?s>=u.height||s>=c:!(c>=u.height||c>=s))?m-i-u.height:l.bottom+i,_=Math.max(n,Math.min(_,a-n-u.height)),v=Math.max(n,Math.min(v,o-n-u.width))}n.style.top=`${_}px`,n.style.left=`${v}px`},v=()=>{p&&(p=!1,m&&=(m(),null),n.remove())},y=()=>{if(p)return;p=!0,l!=null&&(n.style.zIndex=String(l)),_();let r=(t.ownerDocument??document).defaultView??window,i=t.ownerDocument??document,a=()=>{t.isConnected?_():(v(),d?.(`anchor-removed`))},o=e=>{let r=typeof e.composedPath==`function`?e.composedPath():[];r.includes(n)||r.includes(t)||(v(),d?.(`outside`))},s=e.viewportPadding!==void 0&&r.ResizeObserver?new r.ResizeObserver(a):null;s?.observe(n),s?.observe(t);let c=r.setTimeout(()=>{i.addEventListener(`pointerdown`,o,!0)},0);r.addEventListener(`scroll`,a,!0),r.addEventListener(`resize`,a);let f=t.closest(`[data-persona-root]`);f?.addEventListener(`persona:internal:host-moved`,a);let h;f&&r.MutationObserver&&(h=new r.MutationObserver(g),h.observe(f,{attributeFilter:[`style`,`data-persona-color-scheme`]})),m=()=>{s?.disconnect(),h?.disconnect(),r.clearTimeout(c),i.removeEventListener(`pointerdown`,o,!0),r.removeEventListener(`scroll`,a,!0),r.removeEventListener(`resize`,a),f?.removeEventListener(`persona:internal:host-moved`,a)},u?.()};return{get isOpen(){return p},open:y,close:v,toggle:()=>p?v():y(),reposition:_,destroy:v}}function s(e){return(typeof e.composedPath==`function`?e.composedPath():[]).some(e=>e instanceof HTMLElement&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable))}export{i as n,s as r,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,r as t,t as n}from"./chunk-D5BxWOFB.js";import{n as r,t as i}from"./chunk-Cd8mp8Sv.js";import{n as a,r as o,t as s}from"./chunk-Dv6KtIT1.js";var c=`.persona-composer-overflow-menu{gap:var(--persona-components-composer-overflowMenu-rowGap,2px);min-width:min(var(--persona-components-composer-overflowMenu-minWidth,180px), calc(100vw - 16px));box-sizing:border-box;max-width:calc(100vw - 16px);max-height:min(var(--persona-components-composer-overflowMenu-maxHeight,320px), calc(100vh - 16px));padding:var(--persona-components-composer-overflowMenu-padding,4px);border-radius:var(--persona-components-composer-overflowMenu-borderRadius,var(--persona-radius-lg,.5rem));border:1px solid var(--persona-components-composer-overflowMenu-borderColor,var(--persona-border,#e5e7eb));background:var(--persona-components-composer-overflowMenu-background,var(--persona-surface,#fff));color:var(--persona-components-composer-overflowMenu-foreground,var(--persona-text,#111827));box-shadow:var(--persona-components-composer-overflowMenu-shadow,var(--persona-shadow-md,0 8px 24px #0000001f));font-family:var(--persona-font-family,inherit);line-height:var(--persona-components-composer-overflowMenu-lineHeight,1.35);flex-direction:column;display:flex;overflow-y:auto}.persona-composer-overflow-menu__item{align-items:center;gap:var(--persona-components-composer-overflowMenu-iconGap,8px);width:100%;padding:var(--persona-components-composer-overflowMenu-rowPadding,6px 8px);border-radius:var(--persona-components-composer-overflowMenu-rowBorderRadius,var(--persona-radius-md,.375rem));color:inherit;font-family:inherit;font-size:var(--persona-components-composer-overflowMenu-fontSize,13px);text-align:start;cursor:pointer;background:0 0;border:none;display:flex}.persona-composer-overflow-menu__item:hover:not(:disabled){background:var(--persona-components-composer-overflowMenu-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__item:focus-visible{background:var(--persona-components-composer-overflowMenu-focusBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__item[aria-pressed=true]{background:var(--persona-button-ghost-hover-bg,#0000000d);font-weight:600}.persona-composer-overflow-menu__item:disabled{opacity:.5;cursor:default}.persona-composer-overflow-menu__item[aria-busy=true]{opacity:.6;cursor:progress}.persona-composer-overflow-menu__icon{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px);flex:none;align-items:center;display:inline-flex}.persona-composer-overflow-menu__content{display:contents}.persona-composer-overflow-menu__text{flex-direction:column;min-width:0;display:flex}.persona-composer-overflow-menu__icon>svg{width:100%;height:100%}.persona-composer-overflow-menu__description{color:var(--persona-components-composer-overflowMenu-descriptionColor,var(--persona-text-muted,#6b7280));font-size:var(--persona-components-composer-overflowMenu-descriptionFontSize,12px);line-height:var(--persona-components-composer-overflowMenu-lineHeight,1.35);white-space:normal;display:block}.persona-composer-overflow-menu[data-persona-menu-description-layout=inline] .persona-composer-overflow-menu__text,.persona-composer-overflow-menu[data-persona-menu-description-layout=inline] .persona-composer-overflow-menu__slot>.persona-composer-overflow-menu__label{align-items:baseline;gap:0 var(--persona-components-composer-overflowMenu-iconGap,8px);flex-flow:wrap;display:flex}.persona-composer-overflow-menu__divider{border-top:1px solid var(--persona-components-composer-overflowMenu-dividerColor,var(--persona-border,#e5e7eb));margin:var(--persona-components-composer-overflowMenu-dividerSpacing,4px 0);flex-shrink:0}.persona-composer-overflow-menu__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.persona-composer-overflow-menu__slot{align-items:center;gap:var(--persona-components-composer-overflowMenu-iconGap,8px);width:100%;padding:var(--persona-components-composer-overflowMenu-rowPadding,6px 8px);border-radius:var(--persona-components-composer-overflowMenu-rowBorderRadius,var(--persona-radius-md,.375rem));font-size:var(--persona-components-composer-overflowMenu-fontSize,13px);text-align:start;cursor:pointer;display:flex}.persona-composer-overflow-menu__slot:hover{background:var(--persona-components-composer-overflowMenu-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__slot[data-persona-menu-focus]{background:var(--persona-components-composer-overflowMenu-focusBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__slot .persona-send-button-wrapper{display:contents}.persona-composer-overflow-menu__slot .persona-composer-control{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px);min-width:var(--persona-components-composer-overflowMenu-iconSize,16px);min-height:var(--persona-components-composer-overflowMenu-iconSize,16px);box-shadow:none;color:inherit;cursor:inherit;background:0 0;border:none;border-radius:0;flex:none;padding:0;line-height:1;overflow:hidden}.persona-composer-overflow-menu__slot .persona-composer-control>svg{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px)}.persona-composer-overflow-menu__slot .persona-composer-control:focus-visible{outline:none}.persona-composer-overflow-menu__slot .persona-control-tooltip{display:none}.persona-composer-segmented{align-items:center;gap:var(--persona-components-composer-segmented-gap,2px);padding:var(--persona-components-composer-segmented-padding,2px);border-radius:var(--persona-components-composer-segmented-trackBorderRadius,9999px);background:var(--persona-components-composer-segmented-trackBackground,var(--persona-container,#f3f4f6));flex:none;display:inline-flex}.persona-composer-segmented-item{cursor:pointer;white-space:nowrap;box-shadow:none;font-family:inherit;font-size:var(--persona-components-composer-segmented-fontSize,var(--persona-composer-font-size,.875rem));line-height:var(--persona-components-composer-segmented-lineHeight,var(--persona-composer-line-height,1.25rem));font-weight:var(--persona-components-composer-segmented-fontWeight,normal);min-height:var(--persona-components-composer-segmented-minHeight,0px);padding:var(--persona-components-composer-segmented-itemPadding,.25rem .625rem);border-radius:var(--persona-components-composer-segmented-trackBorderRadius,9999px);color:var(--persona-components-composer-segmented-inactiveForeground,var(--persona-muted,#6b7280));background:0 0;border:none;align-items:center;gap:.375rem;display:inline-flex}.persona-composer-segmented-item[aria-pressed=true]{background:var(--persona-components-composer-segmented-activeBackground,var(--persona-surface,#fff));color:var(--persona-components-composer-segmented-activeForeground,var(--persona-text,#111827));box-shadow:var(--persona-components-composer-segmented-activeShadow,0 1px 2px 0 #0f172a1f)}.persona-composer-segmented-item svg{flex:none}@media (pointer:coarse){.persona-composer-segmented-item{min-height:36px}}.persona-composer-model-picker-wrapper{align-items:center;display:inline-grid}.persona-composer-model-picker-wrapper>*{grid-area:1/1}[data-persona-root] .persona-composer-model-picker{max-width:10rem;height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));min-height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));width:auto;min-width:var(--persona-components-composer-modelPicker-minWidth,0px);line-height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));padding-block:0;padding-inline:.625rem 1.75rem;padding-inline:var(--persona-components-composer-modelPicker-paddingInline,.625rem 1.75rem);border-radius:var(--persona-components-composer-modelPicker-borderRadius,var(--persona-button-ghost-radius,var(--persona-radius-md,.375rem)));background-color:var(--persona-components-composer-modelPicker-background,var(--persona-button-ghost-bg,transparent));color:var(--persona-components-composer-modelPicker-labelColor,var(--persona-button-ghost-fg,var(--persona-text,#111827)));box-shadow:inset 0 0 0 1px var(--persona-components-composer-modelPicker-borderColor,transparent);font-family:inherit;font-size:var(--persona-components-composer-modelPicker-fontSize,.8125rem);font-weight:var(--persona-components-composer-modelPicker-fontWeight,normal);cursor:pointer;appearance:none;text-overflow:ellipsis;white-space:nowrap;text-align:start;border:none;overflow:hidden}.persona-composer-model-picker-chevron{pointer-events:none;background-color:var(--persona-components-composer-modelPicker-labelColor,var(--persona-button-ghost-fg,var(--persona-text,#111827)));justify-self:end;width:.875rem;height:.875rem;margin-inline-end:.625rem;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}[data-persona-root] .persona-composer-model-picker option{line-height:normal}@media (pointer:coarse){[data-persona-root] .persona-composer-model-picker{min-width:40px;min-height:40px}}[data-persona-root] .persona-composer-model-picker:hover:not(:disabled){background-color:var(--persona-components-composer-modelPicker-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}[data-persona-root] .persona-composer-model-picker:disabled{opacity:.5;cursor:default}[data-persona-root] .persona-composer-model-picker-trigger{align-items:center;gap:.25rem;display:inline-flex}.persona-composer-model-picker-label{text-overflow:ellipsis;white-space:nowrap;color:var(--persona-components-composer-modelPicker-labelColor,inherit);overflow:hidden}.persona-composer-model-picker-suffix{color:var(--persona-components-composer-modelPicker-suffixColor,var(--persona-muted,#6b7280));flex:none}.persona-composer-model-picker-suffix:empty{display:none}.persona-composer-model-menu{border-radius:var(--persona-components-composer-modelPicker-menuBorderRadius,var(--persona-radius-lg,.5rem));border:1px solid var(--persona-border,#e5e7eb);background:var(--persona-components-composer-modelPicker-menuBackground,var(--persona-surface,#fff));min-width:220px;max-height:320px;color:var(--persona-text,#111827);box-shadow:var(--persona-shadow-md,0 8px 24px #0000001f);font-family:var(--persona-font-family,inherit);flex-direction:column;gap:2px;padding:4px;display:flex;overflow-y:auto}.persona-composer-model-option{border-radius:var(--persona-radius-md,.375rem);width:100%;color:inherit;text-align:start;cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:8px;padding:6px 8px;font-family:inherit;font-size:13px;display:flex}.persona-composer-model-option:hover,.persona-composer-model-option:focus{background:var(--persona-components-composer-modelPicker-rowHoverBackground,var(--persona-button-ghost-hover-bg,#0000000d));outline:none}.persona-composer-model-option-icon,.persona-composer-model-option-check{flex:none;align-items:center;margin-top:1px;display:inline-flex}.persona-composer-model-option-check{visibility:hidden}.persona-composer-model-option[aria-selected=true] .persona-composer-model-option-check{visibility:visible}.persona-composer-model-option-body{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.persona-composer-model-option-label{color:var(--persona-components-composer-modelPicker-labelColor,inherit)}.persona-composer-model-option-description{color:var(--persona-components-composer-modelPicker-descriptionColor,var(--persona-muted,#6b7280));font-size:12px;line-height:1.35}.persona-composer-mode-chip{background:var(--persona-mode-chip-bg,var(--persona-container,#f3f4f6));border-color:var(--persona-mode-chip-border,var(--persona-border,#e5e7eb));color:var(--persona-mode-chip-fg,var(--persona-text,#111827))}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-widget-composer__actions,.persona-widget-composer__left-actions,.persona-widget-composer__right-actions,.persona-composer-segmented){flex-wrap:wrap;min-width:0;max-width:100%}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-composer-control,.persona-composer-model-picker,.persona-composer-segmented-item){max-width:100%}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-composer-action-button,.persona-composer-model-picker,.persona-composer-segmented-item){text-overflow:ellipsis;overflow:hidden}[data-persona-composer-crowded] .persona-widget-composer:not(.persona-pill-composer) .persona-composer-model-picker-wrapper{max-width:min(100%,16rem)}`;const l=e=>r(e,`composer-actions`,c),u=`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`,d=`data-persona-menu-focus`,f=/* @__PURE__ */ new Set([`ArrowDown`,`ArrowUp`,`Home`,`End`]);function p(e){return e.getAttribute(`role`)===`menuitem`?e:e.querySelector(u)??e}const m=e=>e.disabled===!0||e.getAttribute(`aria-disabled`)===`true`;function h(e){let{renderLucideIcon:r,attachTooltip:o}=e.deps,c=e.label,h=!1,g=!1,_=!1,v=!1,y=!0,b=n(`div`,`persona-send-button-wrapper`),x=t(`button`,{className:`persona-rounded-button persona-flex persona-items-center persona-justify-center persona-cursor-pointer persona-composer-action-button persona-composer-overflow-trigger ${s} ${a}`,attrs:{type:`button`,"aria-haspopup":`menu`,"aria-expanded":`false`,"data-persona-composer-overflow-trigger":``}});b.appendChild(x);let S=t(`div`,{className:`persona-composer-overflow-menu`,attrs:{role:`menu`,tabindex:`-1`,"data-persona-composer-overflow-menu":``}}),C=()=>{let t=e.getButtonSize?.()??``;x.style.width=t,x.style.height=t,x.style.minWidth=t,x.style.minHeight=t,x.style.lineHeight=`1`,x.replaceChildren();let n=r((B()?e.getConfig?.()?.openTriggerIconName:void 0)??e.getConfig?.()?.triggerIconName??`plus`,24,`currentColor`,1.5);n?x.appendChild(n):x.textContent=`+`},ee=()=>{x.setAttribute(`aria-label`,c),S.setAttribute(`aria-label`,c)};ee();let w=o({anchor:x,trigger:b,text:()=>x.getAttribute(`aria-expanded`)===`true`?``:c}),T=[],E=-1,D=!1,O=()=>{let e=S.getRootNode().activeElement;return e instanceof HTMLElement?e:null},k=()=>{let e=O();for(let t of T){let n=!!e&&p(t)===e;t.toggleAttribute(d,n&&D)}},A=()=>T.filter(e=>e.isConnected||S.contains(e)).map(p).filter(e=>!m(e)),j=(e,t)=>{e.forEach((e,n)=>{e.setAttribute(`tabindex`,n===t?`0`:`-1`)})},M=e=>{let t=A();if(t.length===0)return;let n=(e%t.length+t.length)%t.length;E=n,j(t,n),t[n].focus(),k()},N=()=>b.ownerDocument??document,P=null,F=null,I=null,te=()=>{P&&=(N().removeEventListener(`focusin`,P,!0),null)},L=()=>{F&&=(S.removeEventListener(`focusin`,F),null),I&&=(S.removeEventListener(`pointerdown`,I,!0),null)},R=null,z=()=>(R||=i({anchor:x,getAnchorRect:()=>{if(e.getConfig?.()?.width===`composer`){let t=e.getComposer?.()?.getBoundingClientRect();if(t)return S.style.width=`${t.width}px`,t}return x.getBoundingClientRect()},content:S,placement:`top-start`,getPlacement:()=>e.getConfig?.()?.placement===`below`?`bottom-start`:`top-start`,viewportPadding:8,offset:6,onDismiss:()=>{ne()}}),R),B=()=>R?.isOpen===!0,ne=()=>{v=!0,g=!1,x.setAttribute(`aria-expanded`,`false`),te(),L(),E=-1,D=!1;for(let e of T)e.removeAttribute(d);try{e.onClose?.()}finally{v=!1}C()},V=(e=!1)=>{(B()||g)&&(R?.close(),ne(),e&&!h&&x.focus())},H=()=>{S.setAttribute(`data-persona-menu-description-layout`,e.getConfig?.()?.descriptionLayout??`stacked`);let t=e.getConfig?.()?.width;S.style.width=t===`composer`?`${e.getComposer?.()?.getBoundingClientRect().width??0}px`:t&&t!==`content`?t:``,C(),R?.reposition()};C();let U=(t=0,n=!1)=>{if(h||_||v||B())return;l(x),w.hide(),g=!0,_=!0;let r;try{r=e.beforeOpen?.()}finally{_=!1}if(r===!1||!g||h)g&&V();else{if(D=n,H(),z().open(),g=!1,x.setAttribute(`aria-expanded`,`true`),C(),y){let e=A();j(e,-1),M(t<0?e.length-1:t),e.length||S.focus()}else(Array.from(S.querySelectorAll(u)).find(e=>!m(e)&&!e.closest(`[hidden]`))??S).focus();B()&&!h&&(P=e=>{let t=typeof e.composedPath==`function`?e.composedPath():[];t.includes(S)||t.includes(b)||V()},N().addEventListener(`focusin`,P,!0),F=()=>k(),S.addEventListener(`focusin`,F),I=()=>{D=!1},S.addEventListener(`pointerdown`,I,!0))}},W=e=>{e.preventDefault(),e.stopPropagation(),B()?V(!0):U(0)},G=e=>{e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),D=!0,B()?y?M(0):S.focus():U(0,!0)):e.key===`ArrowUp`&&(e.preventDefault(),D=!0,B()?y?M(-1):S.focus():U(-1,!0))},K=e=>{if(!y)e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),e.stopPropagation(),V(!0));else switch(f.has(e.key)&&(D=!0),e.key){case`ArrowDown`:e.preventDefault(),M(E+1);return;case`ArrowUp`:e.preventDefault(),M(E-1);return;case`Home`:e.preventDefault(),M(0);return;case`End`:e.preventDefault(),M(A().length-1);return;case`Escape`:e.preventDefault(),e.stopPropagation(),V(!0);return;case`Tab`:V(!0);return}};return x.addEventListener(`click`,W),x.addEventListener(`keydown`,G),S.addEventListener(`keydown`,K),{trigger:b,triggerButton:x,panel:S,setItems:e=>{for(let t of T)e.includes(t)||t.removeAttribute(d);if(T=[...e],!B()||!y)return;let t=A();j(t,Math.min(E,t.length-1)),k()},isOpen:B,open:()=>U(0),close:V,setLabel:e=>{e!==c&&(c=e,ee(),w.isOpen&&(w.hide(),w.show()))},applyButtonSize:C,refresh:H,setContentMode:(e,t)=>{let n=t&&!y&&B();y=t,S.setAttribute(`role`,e),x.setAttribute(`aria-haspopup`,e),n&&M(0)},destroy:()=>{h=!0,V(),w.destroy(),te(),L(),x.removeEventListener(`click`,W),x.removeEventListener(`keydown`,G),S.removeEventListener(`keydown`,K),R?.destroy(),R=null,b.remove(),S.remove(),T=[]}}}function g(e,t,n,r){return e<=0?r:e>=t+n*2+120+(r?0:16)}const _=e=>Number.parseFloat(e)||0;function v(e,t){let n=t.getComputedStyle(e);if(n.display===`none`)return 0;let r=Array.from(e.children).filter(e=>{if(!(e instanceof t.HTMLElement))return!1;let n=t.getComputedStyle(e);return n.display!==`none`&&![`absolute`,`fixed`].includes(n.position)});return r.reduce((e,n)=>{let r=t.getComputedStyle(n);return e+(r.display===`contents`?v(n,t):Math.max(n.getBoundingClientRect().width,n.scrollWidth))+_(r.marginLeft)+_(r.marginRight)},0)+Math.max(0,r.length-1)*_(n.columnGap)+_(n.paddingLeft)+_(n.paddingRight)}function y(e){let t=null,n=null,r=null,i=null,a=0,o=!0,s=!1,c=!1,l=()=>{i!==null&&t?.form.ownerDocument.defaultView?.cancelAnimationFrame(i),i=null,n?.disconnect(),r?.disconnect(),n=null,r=null,t?.form.ownerDocument.defaultView?.removeEventListener(`resize`,u)},u=()=>{if(c||i!==null)return;let n=t?.form.ownerDocument.defaultView;n&&(i=n.requestAnimationFrame(()=>{i=null,c||e.onMeasure()}))};return{measure:()=>{if(c)return o;let i=e.getSurface();if(i?.form!==t?.form||i?.input!==t?.input||i?.start!==t?.start||i?.end!==t?.end){l(),t=i,o=!0,s=!1,a=0;let e=t?.form.ownerDocument.defaultView;if(t&&e){if(e.addEventListener(`resize`,u),e.ResizeObserver!==void 0){n=new e.ResizeObserver(u);let r=[t.form,t.start,t.end,t.input];for(let e of r)n.observe(e)}e.MutationObserver!==void 0&&(r=new e.MutationObserver(e=>{e.some(e=>e.target!==t?.input||e.type!==`attributes`)&&u()}),r.observe(t.form,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:[`class`,`style`,`hidden`]}))}}t&&i&&(t.resizeInput=i.resizeInput);let d=t?.form.ownerDocument.defaultView;if(!t||!d)return!0;if(!t.form.clientWidth)return o;let f=d.getComputedStyle(t.form),p=Math.max(1,t.form.clientWidth-_(f.paddingLeft)-_(f.paddingRight)),m=v(t.start,d)+v(t.end,d),h=_(f.columnGap);s=m+h+(s?16:0)>p,o=g(p,m,h,o);let y=t.input.getBoundingClientRect().width;if(t.resizeInput!==!1&&y>0&&y!==a&&t.input.tagName===`TEXTAREA`){a=y,t.input.style.height=`auto`;let e=_(d.getComputedStyle(t.input).maxHeight)||1/0,n=Math.min(t.input.scrollHeight,e);t.input.style.height=`${n}px`}return o},toolbarCrowded:()=>s,refresh:u,destroy:()=>{c=!0,l(),t=null}}}function b(e){if(e.available<=0)return new Set(e.previous);let t=t=>{let n={start:{...e.slots.start},end:{...e.slots.end}};for(let r of e.actions){if(t.has(r.id))continue;let e=n[r.placement];e.width+=r.width,e.count+=1}return(e.hasMenu||t.size)&&(n.start.width+=e.triggerWidth,n.start.count+=1),n.start.width+n.end.width+Math.max(0,n.start.count-1)*e.gaps.start+Math.max(0,n.end.count-1)*e.gaps.end+(n.start.count&&n.end.count?e.clusterGap:0)},n=/* @__PURE__ */ new Set,r=t(n),i=e.available-(e.previous.size?16:0),a=e.actions.filter(e=>e.auto).sort((e,t)=>t.order-e.order||t.sequence-e.sequence);for(let e of a){if(t(n)<=i)break;n.add(e.id)}return!e.hasMenu&&t(n)>=r?/* @__PURE__ */ new Set:n}function x(e){let t=e.ownerDocument.defaultView;if(!t)return 0;let n=t.getComputedStyle(e);if(n.display===`none`||[`absolute`,`fixed`].includes(n.position))return 0;let r=e=>Number.parseFloat(e)||0;return(n.display===`contents`?Array.from(e.children).reduce((e,n)=>e+(n instanceof t.HTMLElement?x(n):0),0):Math.max(e.getBoundingClientRect().width,e.scrollWidth))+r(n.marginLeft)+r(n.marginRight)}const S={mention:100,attachment:200,mic:800,overflow:900,send:1e3,custom:500},C=`data-persona-composer-action`,ee=`data-persona-composer-disable-when-streaming`,w=`core:overflow`,T=e=>e===`core:attachment`?`attachments`:e.startsWith(`core:mention`)?`mentions`:null;function E(e,t){if(e===void 0)return null;if(typeof e==`number`)return Number.isFinite(e)?e:null;let r=Number.parseFloat(e);if(/^\s*-?\d*\.?\d+(px)?\s*$/.test(e)&&Number.isFinite(r))return r;let i=n(`div`);i.style.position=`absolute`,i.style.visibility=`hidden`,i.style.pointerEvents=`none`,i.style.height=`0`,i.style.width=e,t.appendChild(i);let a=i.getBoundingClientRect().width;return i.remove(),Number.isFinite(a)&&a>0?a:Number.isFinite(r)?r:null}function D(e){let t=e.clientWidth;if(!t)return 0;let n=e.ownerDocument?.defaultView;if(!n?.getComputedStyle)return t;let r=n.getComputedStyle(e),i=(Number.parseFloat(r.paddingLeft)||0)+(Number.parseFloat(r.paddingRight)||0);return Math.max(0,t-i)}const O=(e,t)=>{e&&typeof console<`u`&&console.warn(t)},k=(e,t)=>t.includes(`:`)?t:`${e}:${t}`;function A(e){let{debug:t}=e,n=[],r=/* @__PURE__ */ new Map,i=0,a=e=>{let i=r.get(e.id);i?O(t,`[Persona] composer action "${e.id}" is already contributed by ${j(i)}; the ${j(e)} copy is ignored.`):(r.set(e.id,e),n.push(e))};for(let t of e.builtIns)a({id:t.id,placement:t.placement,presentation:`bar`,order:t.order,sequence:i++,source:`core`,builtIn:t});let o=(e,n,r)=>{let o=r?k(r,e.id):e.id,s=e.order??S.custom;e.placement===`end`&&s>=S.send&&(O(t,`[Persona] composer action "${o}" ordered at ${s} would render after send; clamped to ${S.send-1}.`),s=S.send-1),a({id:o,placement:e.placement,presentation:e.presentation??`bar`,order:s,sequence:i++,source:n,pluginId:r,action:e})};for(let t of e.configActions??[])o(t,`config`);for(let t of e.plugins){if(!t.contributeComposerActions)continue;let n;try{n=t.contributeComposerActions(e.contributionContext)}catch(e){typeof console<`u`&&console.error(`[Persona] plugin "${t.id}" contributeComposerActions failed:`,e);continue}for(let e of n??[])o(e,`plugin`,t.id)}return n.sort((e,t)=>e.order===t.order?e.sequence-t.sequence:e.order-t.order)}const j=e=>e.source===`plugin`?`plugin "${e.pluginId}"`:e.source===`config`?`composer.actions`:`a core built-in`,M=(e,t,n)=>e===void 0?n:typeof e==`function`?e(t)===!0:e===!0,N=e=>e.phase===`streaming`||e.text.trim().length>0||e.attachments.length>0;function P(e,t){if(!e||e===`always`)return!0;let n=N(t);return e===`when-text`?n:!n}const F=e=>e.kind===`custom`,I=e=>e instanceof HTMLButtonElement?e:e.querySelector(`button`)??e,te=e=>{let t=I(e);return t.getAttribute(`aria-label`)?.trim()||t.getAttribute(`title`)?.trim()||``};function L(e){let t=``,n=e=>{if(e.nodeType===Node.TEXT_NODE){t+=e.nodeValue??``;return}if(e.nodeType!==Node.ELEMENT_NODE)return;let r=e;typeof r.matches==`function`&&r.matches(`.persona-control-tooltip, [role="tooltip"], .persona-sr-only, [hidden], [aria-hidden="true"]`)||e.childNodes.forEach(n)};return n(e),t.trim()}const R=e=>L(e).length===0,z=e=>!e||typeof e!=`object`?e:Object.freeze(Array.isArray(e)?e.map(z):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,z(t)])));function B(r){let{renderLucideIcon:i,attachTooltip:c,hideTooltipFor:u}=r.deps,d=/* @__PURE__ */ new Map,f=[],m=!1,g=null,_=[],v=[],y=n(`div`,`persona-composer-overflow-menu__content`),O=()=>r.getButtonSize?.(),k=(e,a)=>{let o=e.button;if(!o)return;o.setAttribute(`role`,`menuitem`),o.setAttribute(`tabindex`,`-1`),o.className=`persona-composer-overflow-menu__item`;for(let e of[`width`,`height`,`minWidth`,`minHeight`,`fontSize`,`color`,`backgroundColor`])o.style[e]=``;o.style.lineHeight=``,a.showTooltip!==!1&&a.tooltipText?o.setAttribute(`title`,a.tooltipText):o.removeAttribute(`title`),o.replaceChildren();let s=n(`span`,`persona-composer-overflow-menu__icon`);if(a.iconName){let e=i(a.iconName,16,`currentColor`,1.5);e&&s.appendChild(e)}let c=n(`span`,`persona-composer-overflow-menu__label`),l=r.getOverflow?.()?.menu?.items?.[e.resolved.id];c.textContent=l?.label??a.shortLabel??a.label;let u=n(`span`,`persona-composer-overflow-menu__text`);u.appendChild(c);let d=l?.description??a.description;o.setAttribute(`aria-label`,l?.label??a.label),d?o.setAttribute(`aria-description`,d):o.removeAttribute(`aria-description`),d&&u.appendChild(t(`span`,{className:`persona-composer-overflow-menu__description`,text:d})),o.append(s,u)},j=(t,r)=>{let o=t.button;if(!o)return;if(o.setAttribute(`aria-label`,r.label),r.pressed===void 0?o.removeAttribute(`aria-pressed`):o.setAttribute(`aria-pressed`,r.pressed?`true`:`false`),o.toggleAttribute(ee,r.disableWhenStreaming===!0),t.mode===`menu`){t.tooltip?.destroy(),t.tooltip=void 0,k(t,r);return}o.removeAttribute(`role`),o.removeAttribute(`tabindex`),o.removeAttribute(`aria-description`),o.removeAttribute(`title`);let l=O(),u=!!r.shortLabel||!r.iconName;if(o.className=e(`persona-rounded-button persona-flex persona-items-center persona-justify-center disabled:persona-opacity-50 persona-cursor-pointer persona-composer-action-button`,s,a,u&&`persona-composer-action-button--text persona-gap-1 persona-text-sm`),o.style.width=l&&!u?l:``,o.style.height=l??``,o.style.minWidth=l&&!u?l:``,o.style.minHeight=l??``,o.style.fontSize=u?``:`18px`,o.style.lineHeight=`1`,o.style.color=r.iconColor??``,o.style.backgroundColor=r.backgroundColor??``,o.replaceChildren(),r.iconName){let e=i(r.iconName,24,`currentColor`,1.5);e&&(r.iconName===`voice-bars`&&r.iconAnimation===`voice`&&e.classList.add(`persona-voice-bars--animated`),o.appendChild(e))}if(u){let e=n(`span`,`persona-composer-action-button__label`);e.textContent=r.shortLabel??r.label,o.appendChild(e)}if(r.trailingIconName&&u){let e=i(r.trailingIconName,24,`currentColor`,1.5);e&&o.appendChild(e)}o.firstChild||(o.textContent=r.label),t.tooltip?.destroy(),t.tooltip=c({anchor:o,trigger:t.element,text:()=>r.tooltipText??r.label,enabled:r.showTooltip??(!u||!!r.tooltipText)})},N=(e,t)=>{if(m||d.get(e.resolved.id)!==e||e.busy)return!1;let n=e.resolved.action,i=r.getState();if(!e.visible||n&&(!M(n.visible,i,!0)||!P(n.visibility,i)||M(n.disabled,i,!1)||n.disableWhenStreaming===!0&&i.phase===`streaming`))return!1;let a=I(e.element);if(a.disabled||a.getAttribute(`aria-disabled`)===`true`)return!1;if((e.mode===`menu`||W?.isOpen())&&(g=e.resolved.id,W?.close(!0)),!n||F(n))return a.click(),!0;let o;try{o=n.onSelect(r.actionContext,t)}catch(t){return r.reportError(t,{actionId:e.resolved.id}),!0}return o&&typeof o.then==`function`&&(e.busy=!0,e.button?.setAttribute(`aria-busy`,`true`),o.catch(t=>r.reportError(t,{actionId:e.resolved.id})).finally(()=>{e.busy=!1,e.button?.removeAttribute(`aria-busy`),!m&&d.get(e.resolved.id)===e&&ke()})),!0},L=(e,r)=>{let i=e.action,a=t(`button`,{attrs:{type:`button`}}),o=a;if(r===`bar`){let e=n(`div`,`persona-send-button-wrapper`);e.appendChild(a),o=e}o.setAttribute(C,e.id);let s={resolved:e,element:o,button:a,owned:!0,managed:!0,busy:!1,visible:!0,mode:r},c=e=>{e.preventDefault(),e.stopPropagation(),N(s,e)};return a.addEventListener(`click`,c),s.detach=()=>a.removeEventListener(`click`,c),j(s,i),s},B=e=>{let t=e.action,n;try{n=t.render({...r.actionContext,id:e.id,action:t})}catch(t){return r.reportError(t,{actionId:e.id}),null}return n?.element?(n.element.setAttribute(C,e.id),n.element.toggleAttribute(ee,t.disableWhenStreaming===!0),{resolved:e,element:n.element,owned:!0,managed:!0,destroy:n.destroy,busy:!1,visible:!0,mode:`bar`}):null},ne=(e,t)=>{if(e.builtIn){let t=e.builtIn.element;return t?{resolved:e,element:t,owned:!1,managed:e.builtIn.managed===!0,busy:!1,visible:!0,mode:`bar`}:null}let n=e.action;return n?F(n)?B(e):L(e,t):null},V=e=>{if(e.detach?.(),e.tooltip?.destroy(),e.detachMenuSlot?.(),e.detachMenuSlot=void 0,e.menuLabel?.remove(),e.menuLabel=void 0,e.menuSlot?.remove(),e.menuSlot=void 0,e.owned){try{e.destroy?.()}catch(t){r.reportError(t,{actionId:e.resolved.id})}e.element.remove()}},H=(e,t)=>{let n=null;for(let r=t.length-1;r>=0;r--){let i=t[r];i.managed?(n?(i.element.parentElement!==e||i.element.nextSibling!==n)&&e.insertBefore(i.element,n):e.lastChild!==i.element&&e.appendChild(i.element),n=i.element):i.element.parentElement===e&&(n=i.element)}},U=(e,t)=>{if(e.button){e.button.disabled=t;return}if(!e.owned)return;let n=e.element;n.toggleAttribute(`data-disabled`,t),n.setAttribute(`aria-disabled`,t?`true`:`false`);let r=n instanceof HTMLButtonElement||n instanceof HTMLSelectElement||n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement?n:n.querySelector(`button, select, input, textarea`);r&&(r.disabled=t)},W=null,G=null,K=null,q=0,J=null,Y=null,X=null,re=0,Z=/* @__PURE__ */ new Set,ie=/* @__PURE__ */ new Map,ae=()=>{re+=1,oe()},oe=()=>{if(m||Y!==null||!G)return;let e=G.ownerDocument.defaultView;e&&(Y=e.requestAnimationFrame(()=>{Y=null,ke()}))},se=()=>{Y!==null&&G?.ownerDocument.defaultView?.cancelAnimationFrame(Y),Y=null,J?.disconnect(),J=null,G?.ownerDocument.defaultView?.removeEventListener(`resize`,oe),G?.ownerDocument.fonts?.removeEventListener(`loadingdone`,ae),X=null},ce=()=>{let e=r.getOverflow?.();return e?.enabled===!0?e:void 0},Q=null,le=null,ue=null,de,$=!0,fe=!1,pe=!1,me=e=>r.reportError(e,{actionId:w}),he=e=>{try{e?.destroy?.()}catch(e){me(e)}},ge=()=>{let e=Q,t=le;Q=null,le=null,ue=null,de=void 0,fe=!1,e?.abort(),he(t),W?.panel.replaceChildren(y),W?.setContentMode(`menu`,!0),$=!0},_e=e=>{let t=e.resolved.action,n=ce()?.menu?.items?.[e.resolved.id],i=I(e.element),a=r.getState();return Object.freeze({id:e.resolved.id,kind:t?F(t)?`custom`:`button`:`builtin`,label:n?.label??(t?(F(t)?void 0:t.shortLabel)??t.label:te(e.element)),description:n?.description??t?.description,group:n?.group??t?.group,iconName:t&&!F(t)?t.iconName:void 0,disabled:!!(i.disabled||i.getAttribute(`aria-disabled`)===`true`||t&&(M(t.disabled,a,!1)||t.disableWhenStreaming===!0&&a.phase===`streaming`)),busy:e.busy,pressed:t&&!F(t)?t.pressed:void 0})},ve=e=>{let t=()=>!m&&Q===e&&!e.signal.aborted;return Object.freeze({config:z(ce()?.menu??{}),state:z(r.getState()),items:Object.freeze(v.map(_e)),signal:e.signal,actions:Object.freeze({invoke:e=>{if(!t()||!W?.isOpen())return!1;let n=d.get(e);return!n||n.mode!==`menu`||!v.includes(n)?!1:N(n,new Event(`click`,{bubbles:!0,cancelable:!0}))},openAttachmentPicker:()=>{if(!t()||!W?.isOpen())return;let e=d.get(`core:attachment`);e&&N(e,new Event(`click`,{bubbles:!0,cancelable:!0}))},close:()=>{t()&&W?.close(!0)},requestUpdate:()=>{t()&&!fe&&(fe=!0,Promise.resolve().then(()=>{t()&&(fe=!1,Ae())}))}}),defaultRenderer:()=>({element:y,role:`menu`})})},ye=()=>{let e=new AbortController;Q=e;let t=ve(e);for(let n of _){if(e.signal.aborted||Q!==e||m)return!1;if(!n.renderComposerMenu)continue;let r;try{r=n.renderComposerMenu(t)}catch(e){me(e);continue}if(!r)continue;let i=r instanceof HTMLElement?{element:r}:r;if(e.signal.aborted||Q!==e||m)return he(i),!1;if(!(i.element instanceof HTMLElement))he(i);else return le=i,ue=n,de=n.renderComposerMenu,$=i.element===y,W?.panel.replaceChildren(i.element),W?.setContentMode(i.role??($?`menu`:`dialog`),$),!0}return e.signal.aborted||m?!1:($=!0,W?.panel.replaceChildren(y),W?.setContentMode(`menu`,!0),!0)},be=()=>{if(!Q||Q.signal.aborted||!W?.isOpen())return;if(ue&&!_.some(e=>e.id===ue?.id&&e.renderComposerMenu===de)){W.close();return}if(pe)return;let e=Q,t=le;pe=!0;try{t?.update?.(ve(e))}catch(n){if(me(n),Q===e){if(Q=null,le=null,e.abort(),he(t),m||!W?.isOpen()||Q)return;Q=new AbortController,ue=null,de=void 0,$=!0,W.panel.replaceChildren(y),W.setContentMode(`menu`,!0)}}finally{pe=!1}W?.refresh()},xe=()=>(W?W.setLabel(r.getOverflowLabel?.()??`More actions`):W=h({deps:r.deps,label:r.getOverflowLabel?.()??`More actions`,getButtonSize:O,getConfig:()=>ce()?.menu,getComposer:()=>r.getBindings()?.form,beforeOpen:ye,onClose:ge}),W),Se=(e,t)=>{let n=e.footer;if(!(G===n&&(t?X===e.form:X===null))){if(se(),K?.disconnect(),G=n,q=D(n),t){X=e.form;let t=n.ownerDocument.defaultView;t?.addEventListener(`resize`,oe),n.ownerDocument.fonts?.addEventListener(`loadingdone`,ae),t?.MutationObserver&&(J=new t.MutationObserver(n=>{n.some(n=>{if(W?.trigger.contains(n.target)||n.target===e.input&&n.type===`attributes`)return!1;let r=[...Array.from(n.addedNodes),...Array.from(n.removedNodes)];return!(r.length&&r.every(e=>e instanceof t.HTMLElement&&e.hasAttribute(`data-persona-composer-measure`)))})&&oe()}),J.observe(n,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:[`class`,`style`,`hidden`,`data-persona-composer-layout`,`data-persona-composer-compact`]}))}typeof ResizeObserver<`u`&&(K=new ResizeObserver(e=>{if(t){oe();return}let r=e[e.length-1]?.contentRect?.width??D(n);r!==q&&(q=r,ke())}),K.observe(n),t&&(K.observe(e.form),K.observe(e.actionsStart),K.observe(e.actionsEnd)))}},Ce=(e,t)=>{let n=E(e.collapseAutoActionsBelow,t);if(n===null)return!1;let r=q||D(t);return r>0&&r<n},we=(e,t,n)=>{if(!t)return`bar`;if(e.resolved.builtIn){let n=T(e.resolved.id);return n&&t.includeBuiltIns?.includes(n)?`menu`:`bar`}let r=e.resolved.presentation;return r===`overflow`||r===`auto`&&n?`menu`:`bar`},Te=e=>{let r=e.menuSlot;if(!r)return;let i=ce()?.menu?.items?.[e.resolved.id],a=i?.description??e.resolved.action?.description;if(!i?.label&&!a&&!R(e.element)){e.menuLabel?.remove(),e.menuLabel=void 0;return}let o=i?.label??te(e.element);o?(e.menuLabel||=n(`span`,`persona-composer-overflow-menu__label`),e.menuLabel.replaceChildren(t(`span`,{text:o})),a&&e.menuLabel.appendChild(t(`span`,{className:`persona-composer-overflow-menu__description`,text:a})),e.menuLabel.parentElement!==r&&r.appendChild(e.menuLabel)):(e.menuLabel?.remove(),e.menuLabel=void 0)},Ee=(e,r)=>{if(e.mode===r)return e;let i=e.resolved.action;if(i&&!F(i)){let t=e.element;return r===`menu`?e.element=e.button:(e.element=n(`div`,`persona-send-button-wrapper`),e.element.appendChild(e.button),e.button.removeAttribute(C)),t!==e.element&&t!==e.button&&t.remove(),e.element.setAttribute(C,e.resolved.id),e.mode=r,j(e,i),e}if(r===`menu`){let n=t(`div`,{className:`persona-composer-overflow-menu__slot`,attrs:{role:`none`,[o]:``}});n.appendChild(e.element),u(I(e.element)),e.menuSlot=n;let r=t=>{let n=I(e.element);if(n.disabled)return;let r=t.target===n||n.contains(t.target);g=e.resolved.id,W?.close(!0),r||n.click()};n.addEventListener(`click`,r,!0),e.detachMenuSlot=()=>n.removeEventListener(`click`,r,!0),e.managed=!0,Te(e)}else e.detachMenuSlot?.(),e.detachMenuSlot=void 0,e.menuLabel?.remove(),e.menuLabel=void 0,e.menuSlot?.remove(),e.menuSlot=void 0;return e.mode=r,e},De=(e,n)=>{let r=Array.from(e.querySelectorAll(`.persona-composer-overflow-menu__divider`)),i=0,a=[];for(n.forEach((e,o)=>{let s=_e(e).group;o&&s!==_e(n[o-1]).group&&a.push(r[i++]??t(`div`,{className:`persona-composer-overflow-menu__divider`,attrs:{role:`separator`}})),a.push(e.menuSlot??e.element)}),a.forEach((t,n)=>{let r=e.children[n];r!==t&&(r?e.insertBefore(t,r):e.appendChild(t))});e.children.length>a.length;)e.lastElementChild?.remove()},Oe=(e,t,n)=>{let r=D(e.form);if(!r)return Z;let i=e.form.ownerDocument.defaultView,a=i.getComputedStyle(e.form),o=e=>Number.parseFloat(e)||0,s=o(a.columnGap),c=e.footer.getAttribute(`data-persona-composer-layout`)===`single-row`&&e.footer.hasAttribute(`data-persona-composer-compact`),l=[a.fontFamily,a.fontSize,a.getPropertyValue(`--persona-composer-font-size`),a.getPropertyValue(`--persona-composer-control-size`),a.getPropertyValue(`--persona-composer-control-icon-size`),O(),re].join(`|`),u={start:e.actionsStart,end:e.actionsEnd},d={start:{width:0,count:0},end:{width:0,count:0}},f={start:0,end:0};for(let e of[`start`,`end`]){f[e]=o(i.getComputedStyle(u[e]).columnGap);for(let n of Array.from(u[e].children)){if(!(n instanceof i.HTMLElement)||n===W?.trigger||t.some(e=>e.element===n))continue;let r=x(n);r&&(d[e].width+=r,d[e].count+=1)}}let p=[],m=!1;for(let e of t){if(we(e,n,!1)===`menu`){m=!0;continue}let t=e.resolved.action,r=`${l}|${t&&!F(t)?[t.label,t.shortLabel,t.iconName,t.trailingIconName,t.pressed].join(`|`):`custom`}`,a=e.mode===`bar`?x(e.element):0,o=ie.get(e.resolved.id);if(!a&&o?.key===r&&(a=o.width),!a&&t&&!F(t)){let t=L(e.resolved,`bar`);t.element.setAttribute(`data-persona-composer-measure`,``),t.element.style.cssText=`position:absolute;visibility:hidden;width:max-content;pointer-events:none`,u[e.resolved.placement].appendChild(t.element),a=x(t.button),V(t)}if(!a&&t&&F(t)&&(a=o?.width??0),a&&ie.set(e.resolved.id,{key:r,width:a}),!a&&i.getComputedStyle(e.element).display!==`none`)return Z;a&&p.push({id:e.resolved.id,placement:e.resolved.placement,width:a,order:e.resolved.order,sequence:e.resolved.sequence,auto:e.resolved.presentation===`auto`})}let h=o(a.getPropertyValue(`--persona-composer-control-size`))||40,g=W?x(W.trigger):0;return b({available:Math.max(1,r-(c?120+s*2:0)),actions:p,slots:d,gaps:f,clusterGap:c?0:s,triggerWidth:g||o(O()??``)||h,hasMenu:m,previous:Z})},ke=()=>{if(m)return;let e=r.getBindings();if(e&&l(e.form),!e)return;let t=r.getState(),n=t.phase===`streaming`,i=ce(),a=i?.collapseAutoActions===`fit`;i?Se(e,a):(se(),K?.disconnect(),G=null);let o=i&&!a?Ce(i,e.footer):!1,s=e.footer.getRootNode(),c=s.activeElement,u=c===W?.triggerButton,h=c?Array.from(d.values()).find(e=>e.element.contains(c)):void 0,_=h?.mode;if(a){let n=f.map(e=>d.get(e.id)).filter(e=>!!e).filter(e=>!e.resolved.action||M(e.resolved.action.visible,t,!0)&&P(e.resolved.action.visibility,t));for(let t of n){if(!t.managed||t.mode!==`bar`)continue;let n=t.resolved.placement===`start`?e.actionsStart:e.actionsEnd;t.element.parentElement!==n&&n.appendChild(t.element)}Z=Oe(e,n,i)}else Z.clear();let b={start:[],end:[]},x=[];for(let e of f){let r=d.get(e.id);if(!r)continue;let s=e.action,c=!s||M(s.visible,t,!0)&&P(s.visibility,t);if(r.visible!==c&&(r.visible=c,!c&&r.managed&&(r.menuSlot??r.element).remove()),!c)continue;let l=we(r,i,o);if(r=Ee(r,l===`menu`||a&&e.presentation===`auto`&&Z.has(e.id)?`menu`:`bar`),s){let e=M(s.disabled,t,!1)||s.disableWhenStreaming===!0&&n;U(r,e),!F(s)&&s.pressed!==void 0&&r.button?.setAttribute(`aria-pressed`,s.pressed?`true`:`false`)}r.mode===`menu`?(Te(r),x.push(r)):b[e.placement].push(r)}if(v=x,x.length>0){let e=xe();Q||e.panel.replaceChildren(y),De(y,x);for(let e of x){let t=e.resolved.action;t&&!F(t)&&k(e,t)}e.setItems(x.map(e=>e.menuSlot??e.element)),e.refresh(),be();let t=Number.isFinite(i?.order)?i?.order:S.overflow,n=b.start.findIndex(e=>e.resolved.order>t),r={resolved:{id:w,placement:`start`,presentation:`bar`,order:t,sequence:-1,source:`core`},element:e.trigger,owned:!1,managed:!0,busy:!1,visible:!0,mode:`bar`};b.start.splice(n<0?b.start.length:n,0,r)}else W&&(W.close(),W.trigger.remove(),W.setItems([]));if(H(e.actionsStart,b.start),H(e.actionsEnd,b.end),h&&c&&h.visible&&(!c.isConnected||h.mode!==_||s.activeElement!==c))h.mode===`bar`?(W?.close(),p(h.element).focus()):W?.isOpen()&&$?p(h.menuSlot??h.element).focus():W?.triggerButton.focus();else if(u&&!x.length){let t=g?d.get(g):void 0;t?.visible&&t.mode===`bar`?p(t.element).focus():e.input.focus()}g=null},Ae=()=>{if(m)return;let e=r.collect();_=e.plugins;let t=A(e),n=new Set(t.map(e=>e.id));for(let[e,t]of d)n.has(e)||(V(t),d.delete(e),ie.delete(e));for(let e of t){let t=d.get(e.id);if(!t){let t=ne(e,`bar`);t&&d.set(e.id,t);continue}let n=t.resolved.action,r=e.action;if(!!n!=!!r||n&&r&&F(n)!==F(r)||n&&r&&F(n)&&F(r)&&n.render!==r.render){V(t),d.delete(e.id),ie.delete(e.id);let n=ne(e,t.mode);n&&d.set(e.id,n)}else t.resolved=e,e.builtIn?(t.managed=e.builtIn.managed===!0||t.mode===`menu`,e.builtIn.element&&t.mode===`bar`&&(t.element=e.builtIn.element)):r&&!F(r)?j(t,r):r&&t.element.toggleAttribute(ee,r.disableWhenStreaming===!0)}f=t,ke()};return{resolve:Ae,sync:ke,getResolved:()=>f,getOverflowMenu:()=>W,destroy:()=>{if(!m){m=!0,se(),K?.disconnect(),K=null,G=null,W?.close(),ge();for(let e of d.values())V(e);d.clear(),W?.destroy(),W=null,f=[]}}}}const ne=e=>`core:mode:${e}`,V=e=>Math.min(300+e,499),H=e=>`core:mode-group:${e}`;function U(e,t){return e?t?.find(t=>t.id===e)?.presentation===`segmented`:!1}function W(e,t){return e?t?.find(t=>t.id===e)?.chipVisibility===`hidden`:!1}function G(e,t,n=!1){return e?.length?e.filter(e=>!U(e.groupId,t)&&!W(e.groupId,t)&&(!n||e.presentation===`overflow`||t?.find(t=>t.id===e.groupId)?.chipVisibility===`auto`)):[]}const K=(e,t)=>e.groupId?t?.find(t=>t.id===e.groupId)?.selection??null:null;function q(e,t,n,r){let i=n.find(e=>e.id===t);if(!i)return[...e];let a=e.includes(t),o=new Set(e);if(a)o.delete(t);else{if(K(i,r)===`single`){let e=n.filter(e=>e.groupId===i.groupId).map(e=>e.id);o=new Set([...o].filter(t=>!e.includes(t)))}o.add(t)}return n.filter(e=>o.has(e.id)).map(e=>e.id)}function J(e,t){return t?.length?t.filter(t=>e.includes(t.id)).map(e=>e.id):[]}function Y(e,t){return t?.length?t.filter(t=>e.includes(t.id)&&(t.persistence??`sticky`)!==`once`).map(e=>e.id):[]}function X(e,t){if(t?.length&&e.length!==0)return t.find(t=>e.includes(t.id)&&t.placeholder)?.placeholder}function re(e,t,n){let r=[];for(let i of e)r.includes(i)||(r=q(r,i,t,n));return r}export{V as a,X as c,C as d,S as f,l as h,H as i,re as l,y as m,Y as n,U as o,B as p,ne as r,J as s,G as t,q as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,r as t,t as n}from"./chunk-D5BxWOFB.js";import{r}from"./chunk-Bb41bKyp.js";import{n as i,r as a}from"./chunk-i4qGOJAL.js";import{a as o}from"./chunk-Cy1A8vbF.js";import{n as s}from"./chunk-CLMIHW4_.js";const c=(e,t)=>{console.warn(`[persona] ${e} threw`,t)},l=e=>Object.freeze({...e}),u=e=>Object.freeze({id:e.id,title:e.title,targetId:e.targetId,preview:e.preview,messageCount:e.messageCount,createdAt:e.createdAt,updatedAt:e.updatedAt}),d=e=>e?l(e):null;function ee(e){let{plugins:t,config:n}=e,r=!1,i=!1,a=!1,o=!1,s=null,ee=[],f=()=>{for(let e of ee.splice(0))try{e()}catch(e){c(`renderHistoryView cleanup`,e)}},p=(e,n)=>{for(let r of t){let t=r[e];if(t)try{let e=t(n);if(e)return e}catch(t){c(e,t)}}return null},m=()=>({presentation:e.getPresentation(),config:n}),h={header:t=>o?p(`renderHistoryHeader`,Object.freeze({...m(),returnSurface:e.getReturnSurface(),identityStatus:l(t.identityStatus),pendingAction:d(t.pendingAction),copy:l(t.copy),actions:Object.freeze({close:_.close,startNewConversation:_.startNewConversation}),defaultRenderer:t.defaultRenderer})):null,conversation:e=>o?p(`renderHistoryConversation`,Object.freeze({...m(),conversation:u(e.conversation),active:e.active,pending:e.pending,open:e.open,requestDelete:e.requestDelete,defaultRenderer:e.defaultRenderer})):null,state:e=>o?p(`renderHistoryState`,Object.freeze({...m(),state:l(e.state),identityStatus:l(e.identityStatus),copy:l(e.copy),...e.retry?{retry:e.retry}:{},...e.startNewConversation?{startNewConversation:e.startNewConversation}:{},defaultRenderer:e.defaultRenderer})):null},te=t.flatMap(t=>(t.railSections??[]).map(t=>({...t,placement:t.placement??`above-conversations`,items:[],render:n=>t.render(Object.freeze({collapsed:n,presentation:e.getPresentation(),actions:_}))}))),g=e.createView({slots:h,renderDom:!1,onModelChange:()=>b(),railSections:te}),_=Object.freeze({...g.operations,close:e.close}),v=()=>(o=!0,g.setDomRenderEnabled(!0),g.element),ne=t=>Object.freeze({conversations:Object.freeze(t.conversations.map(u)),activeConversationId:t.activeConversationId,state:l(t.state),pendingAction:d(t.pendingAction),identityStatus:l(t.identityStatus),nextCursor:t.nextCursor,presentation:e.getPresentation(),returnSurface:e.getReturnSurface(),config:n,copy:l(g.copy),actions:_,defaultRenderer:v,requestRender:()=>b(),onCleanup:e=>{ee.push(e)}}),y=()=>{o=!1;let e=null;for(let n of t)if(n.renderHistoryView){try{e=n.renderHistoryView(ne(g.getModel()))}catch(t){c(`renderHistoryView`,t),e=null}if(e)break}let n=!e||e.contains(g.element);return o=n,g.setDomRenderEnabled(n),e??g.element};function b(){if(!(!a||r||i)){i=!0;try{f();let t=y();if(t===s)return;let n=s;s=t,e.onElementChanged(t,n)}finally{i=!1}}}return a=!0,b(),{view:g,get element(){return s??g.element},requestRender:b,dispose:()=>{r=!0,f()}}}const f=/* @__PURE__ */ new Map([[`not_found`,`not_found`],[`conversation_deleted`,`not_found`],[`rate_limited`,`rate_limited`],[`authentication_required`,`authentication_required`],[`invalid_identity_proof`,`authentication_required`],[`visitor_identity_mismatch`,`authentication_required`],[`visitor_required`,`authentication_required`],[`identity_provider_failed`,`identity_provider_failed`],[`proof_not_admitted`,`proof_not_admitted`],[`identity_contract_violation`,`proof_not_admitted`],[`unauthorized`,`authentication_failed`],[`visitor_token_missing`,`authentication_failed`],[`conversation_credential_missing`,`authentication_failed`]]),p=/* @__PURE__ */ new Map([[`not_found`,`That conversation is no longer available.`],[`rate_limited`,`Too many history requests.`],[`authentication_failed`,`History access was not authorized.`],[`authentication_required`,`Sign in again to view account history.`],[`identity_provider_failed`,`The identity provider did not respond.`],[`proof_not_admitted`,`Account history is not available for this configuration.`],[`unsupported_scope`,`This history scope is not supported.`],[`unavailable`,`Conversation history is unavailable right now.`]]),m=e=>p.get(e)??`Conversation history is unavailable right now.`;function h(e,{HistoryClientError:t,HistoryProviderError:n}){if(e instanceof n)return e;if(e instanceof t){let t=f.get(e.code)??`unavailable`;return new n(t,m(t),{...e.retryAfterSeconds===void 0?{}:{retryAfterSeconds:e.retryAfterSeconds}})}return new n(`unavailable`,m(`unavailable`))}function te(e){let{HistoryProviderError:t}=e.errors,n=()=>e.getClient?.()??e.client,r=e.getIdentityProofConfigured()?[`browser`,`verified-user`]:[`browser`],o={scopes:r},s=e=>{if(!r.includes(e))throw new t(`unsupported_scope`,m(`unsupported_scope`))},c=async(t,n)=>{s(t);try{return await n()}catch(t){throw h(t,e.errors)}},l=t=>{let n=!1;return{conversationId:t.session.conversationId??``,conversationRevision:t.session.conversationRevision??``,async commit(){n||(n=!0,t.commit(),await e.onActivationCommitted(t.session))},discard(){n||(n=!0,t.discard())}}};return{capabilities:o,getIdentityStatus(){return n().getHistoryIdentityStatus()},subscribeIdentityStatus(e){return n().subscribeHistoryIdentityStatus(e)},subscribeAvailability(e){return n().subscribeHistoryAvailability(e)},async list(e){return c(e.context.scope,async()=>{let t=await n().listConversations({...e.cursor?{cursor:e.cursor}:{},...e.limit===void 0?{}:{limit:e.limit},...e.targetId?{targetId:e.targetId}:{},scope:e.context.scope});return{items:t.data,nextCursor:t.nextCursor}})},async getPage(e,t){return c(t.context.scope,async()=>{let r=await n().getConversation(e,{...t.cursor?{messageCursor:t.cursor}:{},scope:t.context.scope}),o=i(r.messages,{...t.beforeCreatedAt?{beforeCreatedAt:t.beforeCreatedAt}:{}});return{summary:r.summary,messages:a([],o),conversationRevision:r.conversationRevision??``,nextCursor:r.nextMessageCursor}})},async prepareOpen(e,t){return c(t.context.scope,async()=>l(await n().prepareConversationSession(e)))},async prepareStartNew(e){return c(e.context.scope,async()=>l(await n().prepareNewConversationSession()))},async delete(e,t){await c(t.context.scope,()=>n().deleteConversation(e,{scope:t.context.scope}))},async deleteAll(e){return c(e.context.scope,()=>n().deleteAllConversations({...e.targetId===void 0?{}:{targetId:e.targetId},scope:e.context.scope}))},async resetDevice(){try{return await n().resetVisitor(),{remoteRevocationConfirmed:!0}}catch{return{remoteRevocationConfirmed:!1}}}}}const g=i=>{let a=s(i.config.features?.history?.copy),c=null,l=!1,u=null,d=null,f=`conversation`,p=null,m=null,h=null,g=null,_=0,v=null,ne=null,y=null,b=`persona-history-${Math.random().toString(36).slice(2,8)}`,x=()=>i.historyFeatureEnabled()&&!!c&&!l,re=()=>{let e=i.session.getStatus();return i.isStreaming||e===`paused`||e===`resuming`},ie=()=>{let e=i.config.features?.history?.scope;if(e)return e;let t=i.config.getIdentityProof?`verified-user`:`browser`,n=c?.capabilities.scopes;return!n||n.includes(t)?t:n[0]??t},S=()=>d?.scope??ie(),ae=()=>i.session.getClientSession()?.targetId??null,oe=e=>`${e.state}:${`reason`in e?e.reason:``}`,se=e=>{let t=oe(e);t!==g&&(g=t,i.eventBus.emit(`history:identityStatusChanged`,{status:e,timestamp:Date.now()}))},ce=null,le=null,ue=()=>{if(!i.historyFeatureEnabled())return null;let e=i.getHistoryProviderFactory();if(e)return e();let t=i.config.features?.history?.provider;return t?typeof t==`function`?(ce!==t&&(ce=t,le=t()),le):t:i.session.isClientTokenMode()?te({errors:i.historyErrors,client:i.session.getClient(),getIdentityProofConfigured:()=>typeof i.config.getIdentityProof==`function`,onActivationCommitted:e=>i.session.bindActivatedSession(e),getClient:()=>i.session.getClient()}):null},de=()=>{ne?.(),ne=null,y?.(),y=null,l=!1;let e=c;c=ue(),e&&e!==c&&i.discardConversationContinuity();let t={...i.historyInternals};c?t.historyProvider=c:delete t.historyProvider,i.historyInternals=t,i.session.setHistoryInternals(i.historyInternals),c&&(ne=c.subscribeAvailability?.(e=>{l=!e,e||q({restoreFocus:!1}),$()})??null,y=c.subscribeIdentityStatus(e=>se(e)),g=oe(c.getIdentityStatus()))},fe=()=>{let e=i.config.features?.history?.presentation??`panel`;if(e===`panel`||e===`auto`&&i.launcherEnabled&&!i.isDockedMountMode(i.config))return`panel`;let t=i.artifactSplitRoot??i.container;return(t.getBoundingClientRect().width||t.clientWidth)>=720?`rail`:`panel`},C=(e,t)=>{t?(e.setAttribute(`aria-hidden`,`true`),e.setAttribute(`inert`,``)):(e.removeAttribute(`aria-hidden`),e.removeAttribute(`inert`))},pe=`data-persona-history-suppressed`,w=null,T=null,E=null,D=null,me=null,he=``,ge=()=>i.header===me?he:o(i.config)?``:`none`,_e=()=>i.historyPresentation===`panel`&&!!E&&D===E.element&&o(i.config)&&ge()!==`none`,ve=()=>{for(let e of Array.from(i.header.children))e!==w&&e.setAttribute(pe,``)},ye=()=>{for(let e of Array.from(i.container.querySelectorAll(`[${pe}]`)))e.removeAttribute(pe)},be=()=>{let e=E;if(!e)return;if(Array.from(i.header.children).some(e=>e!==w&&!e.hasAttribute(pe))){T&&T!==i.header&&(T.style.removeProperty(`min-height`),T=null);let e=i.header.offsetHeight;e>0&&(i.header.style.minHeight=`${e}px`,T=i.header)}w||=n(`div`,`persona-history-header-host`),e.setHeaderPlacement(`external`);let t=e.getHeaderElement();t.parentNode!==w&&w.replaceChildren(t),w.parentNode!==i.header&&i.header.appendChild(w),ve()},xe=()=>{T&&=(T.style.removeProperty(`min-height`),null),w&&(E?.setHeaderPlacement(`inline`),w.remove(),w=null,ye())},Se=null,Ce=()=>{Se&&(i.body.style.display=`none`,C(i.body,!0),i.footer.hidden=!0,C(i.footer,!0),i.panelSuggestions.style.display=`none`,C(i.panelSuggestions,!0),i.panelSuggestionsFade.style.display=`none`,_e()?(be(),i.header.style.display=ge(),C(i.header,!1)):(xe(),i.header.style.display=`none`,C(i.header,!0)))};i.reapplyHistoryHostChrome=Ce;let we=e=>{let t=i.body.style.display,n=i.footer.hidden,r=i.panelSuggestions.style.display,a=i.panelSuggestionsFade.style.display,s=i.footer,c=i.header,l=i.header.style.display;me=c,he=l,Se=()=>{Se=null,xe(),me=null,i.body.style.display=t,C(i.body,!1),i.panelSuggestions.style.display=r,C(i.panelSuggestions,!1),i.panelSuggestionsFade.style.display=a,s.hidden=n,C(s,!1),i.footer!==s&&(i.footer.hidden=!1,C(i.footer,!1)),c.style.display=l,C(c,!1),i.header!==c&&(i.header.style.display=o(i.config)?``:`none`,C(i.header,!1))},i.container.insertBefore(e,i.footer.parentNode===i.container?i.footer:i.panelSuggestions),Ce()},O=null,k=null,Te=null,A=null,Ee=()=>[i.header,i.panelElements.closeButtonWrapper,i.panelElements.clearChatButtonWrapper,i.body,i.footer,i.scrollToBottomButton],De=()=>i.config.features?.history?.rail?.collapsible!==!1,j=()=>i.config.features?.history?.rail?.side===`right`?`right`:`left`,Oe=e=>Math.min(400,Math.max(200,Math.round(e))),ke=()=>i.config.features?.history?.rail?.resizable===!0,M,Ae=()=>{if(M===void 0&&(M=null,i.config.persistState!==!1))try{let e=Number(window.localStorage.getItem(`${i.currentKeyPrefix()}rail-width`));e&&(M=e)}catch{}return M},N=()=>Oe(Ae()??i.config.features?.history?.rail?.width??260),je=e=>{if(M=e,i.config.persistState!==!1)try{window.localStorage.setItem(`${i.currentKeyPrefix()}rail-width`,String(e))}catch{}},Me=()=>De()&&i.config.features?.history?.rail?.collapsedBehavior===`overlay`,P=!1,Ne=e=>{let t=n(`img`);return t.src=e,t.alt=``,t.setAttribute(`aria-hidden`,`true`),t},Pe=()=>{let e=i.config.features?.history?.rail?.brand;if(!e)return;let t=!1,n;return r=>{if(e.render)try{return e.render({collapsed:r})??null}catch(e){return t||(t=!0,console.warn(`[persona] history rail brand threw`,e)),null}return n===void 0&&(n=e.iconUrl?Ne(e.iconUrl):e.icon?i.renderLucideIcon(e.icon,20):null),n?n.cloneNode(!0):null}},Fe=()=>i.config.features?.history?.rail?.sections?.map(e=>{let t=!1,n=n=>{t||(t=!0,console.warn(`[persona] history rail section threw`,e.id,n))};return{id:e.id,title:e.title,placement:e.placement??`above-conversations`,items:e.items.map(e=>{let t;return{id:e.id,label:e.label,badge:e.badge,iconNode:()=>{if(t!==void 0)return t;try{t=e.renderIcon?e.renderIcon()??null:e.iconUrl?Ne(e.iconUrl):e.icon?i.renderLucideIcon(e.icon,20):null}catch(e){n(e),t=null}return t},onSelect:()=>{try{e.onSelect()}catch(e){n(e)}}}})}})??[],Ie=e=>{let t=Fe();for(let n of e)t.some(e=>e.id===n.id)?console.warn(`[persona] duplicate history rail section id`,n.id):t.push(n);return t.length?t:void 0},F=null,Le=()=>`${i.currentKeyPrefix()}rail-collapsed`,Re=()=>{if(F===null&&(F=i.config.features?.history?.rail?.defaultCollapsed===!0,i.config.persistState!==!1))try{let e=window.localStorage.getItem(Le());e&&(F=e===`1`)}catch{}return F},ze=e=>{if(F=e,i.config.persistState!==!1)try{window.localStorage.setItem(Le(),e?`1`:`0`)}catch{}},I=()=>i.historyPresentation===`rail`&&De()&&!Me()&&Re(),Be=()=>{},Ve=()=>{Me()?Be():(ze(!Re()),u?.view.setCollapsed(I()),i.applyRailChrome(),i.repinAnchoredMessage())},He=()=>{let e=i.config.features?.history?.rail?.collapseShortcut;return!e||!i.parseCombo(e)?null:{combo:e,hint:i.formatCombo(e),aria:i.ariaCombo(e)}},Ue=`var(--persona-history-overlay-margin,8px)`,L=null,R=null,We=0,z=null,B=null,V=!1,Ge=0,Ke=()=>window.matchMedia?.(`(pointer: coarse)`).matches===!0,H=()=>x()&&Me()&&(i.historyPresentation??fe())===`rail`,qe=()=>i.historyVisible&&!P,U=()=>{B!==null&&clearTimeout(B),B=null},Je=()=>{i.loadHistoryView().catch(()=>{})},Ye=()=>{U(),P&&(B=setTimeout(()=>{B=null,!V&&P&&(z?.contains(document.activeElement)||q({restoreFocus:!1}))},300))},Xe=(e,t)=>{let n=z?.getBoundingClientRect();if(!n)return!1;let r=L?.getBoundingClientRect(),i=r?Math.min(r.top,n.top):n.top;return e>=n.left&&e<=n.right&&t>=i&&t<=n.bottom||!!r&&e>=r.left&&e<=r.right&&t>=r.top&&t<=r.bottom},Ze=e=>{P&&(V=Xe(e.clientX,e.clientY),V?U():B===null&&Ye())},Qe=e=>{!i.historyVisible&&H()&&(P=!0,K({invoker:L,keyboard:e?.keyboard===!0}).then(()=>{i.historyVisible?!V&&document.activeElement!==L&&q():P=!1}))},$e=()=>{let e=D?.querySelector(`[data-persona-history-focus="collapse"]`);e&&(e.setAttribute(`aria-label`,P?a.expandLabel:a.collapseLabel),e.setAttribute(`aria-expanded`,P?`false`:`true`))},et=()=>{ze(!1);let e=u;if(!P||!e){K({invoker:L});return}let t=document.activeElement===L;P=!1,ft(),e.element.remove(),mt(e.element),$e(),t&&_t(),i.repinAnchoredMessage(),$()},tt=()=>{ze(!0),q()};Be=()=>{!i.historyVisible||P?et():tt()};let nt=()=>{let e=He(),t=i.createHeaderIconButton({ariaLabel:a.expandLabel,iconName:`panel-left`,wrapperClassName:`persona-relative persona-inline-flex persona-items-center persona-justify-center`,extraClassName:`persona-rail-trigger`,tooltip:!1,attrs:{"data-persona-rail-trigger":``,"aria-controls":b,...e?{"aria-keyshortcuts":e.aria}:{}}}),n=t.button;n.addEventListener(`mouseenter`,()=>{V=!0,U(),!(Ke()||Date.now()<Ge)&&Qe()}),n.addEventListener(`mouseleave`,()=>{V=!1,Ge=0,Ye()}),n.addEventListener(`focus`,()=>{i.historyVisible||Je()}),n.addEventListener(`click`,e=>{x()&&(e.detail!==0&&Ke()&&!i.historyVisible?Qe():et())}),L=n,R=t.wrapper},W=()=>{if(R&&!R.isConnected&&(R=null,L=null),!H()){R?.remove(),R=null,L=null;return}L||nt();let e=R,t=L;if(!e||!t)return;let n=j()===`right`?null:i.header.firstChild;(n??i.header.lastChild)!==e&&i.header.insertBefore(e,n),e.style.display=qe()||We>0?`none`:``,t.setAttribute(`aria-label`,a.expandLabel),t.setAttribute(`aria-expanded`,i.historyVisible?`true`:`false`),z&&i.applyRailChrome()},rt=e=>{if(!P)return;let t=e.target;t instanceof Node&&(z?.contains(t)||R?.contains(t)||t instanceof Element&&t.closest(`.persona-dropdown-menu,[role="alertdialog"]`)||q({restoreFocus:!1}))};document.addEventListener(`pointerdown`,rt,!0),i.destroyCallbacks.push(()=>{document.removeEventListener(`pointerdown`,rt,!0),document.removeEventListener(`pointermove`,Ze),G?.(),U()});let it=null,G=null,at=e=>{je(Oe(e)),i.applyRailChrome(),i.repinAnchoredMessage()},ot=()=>{let e=n(`div`,`persona-rail-resizer`);return e.tabIndex=0,e.setAttribute(`role`,`separator`),e.setAttribute(`aria-orientation`,`vertical`),e.setAttribute(`aria-valuemin`,`200`),e.setAttribute(`aria-valuemax`,`400`),e.addEventListener(`pointerdown`,t=>{let n=k;if(!n||t.button!==0)return;t.preventDefault(),G?.();let r=t.clientX,a=n.getBoundingClientRect().width||N(),o=j()===`right`?-1:1,s=a,c=i.mount.ownerDocument;n.style.transition=`none`;let l=t=>{s=Oe(a+o*(t.clientX-r)),n.style.flex=`0 0 ${s}px`,e.setAttribute(`aria-valuenow`,String(s))},u=()=>{G=null,c.removeEventListener(`pointermove`,l),c.removeEventListener(`pointerup`,u),c.removeEventListener(`pointercancel`,u),n.style.removeProperty(`transition`);try{e.releasePointerCapture(t.pointerId)}catch{}at(s)};G=u,c.addEventListener(`pointermove`,l),c.addEventListener(`pointerup`,u),c.addEventListener(`pointercancel`,u);try{e.setPointerCapture(t.pointerId)}catch{}}),e.addEventListener(`keydown`,e=>{let t=j()===`right`?-16:16,n=N(),r=e.key===`ArrowRight`?n+t:e.key===`ArrowLeft`?n-t:e.key===`Home`?200:e.key===`End`?400:null;r!==null&&(e.preventDefault(),at(r))}),e},st=(e,t)=>{if(!ke()||I()){G?.(),it?.remove();return}let n=it??ot();it=n,n.setAttribute(`aria-label`,a.resizeLabel),n.setAttribute(`aria-valuenow`,String(N())),n.nextElementSibling!==t&&e.insertBefore(n,t)};i.applyRailChrome=()=>{u?.view.setRailSide(j());let e=j()===`right`,t=z;if(t){let n=L?L.getBoundingClientRect().bottom-i.container.getBoundingClientRect().top:0;t.style.top=`calc(${Math.max(0,Math.round(n))}px + ${Ue})`,t.style.width=`${N()}px`,t.style.left=e?``:Ue,t.style.right=e?Ue:``}let n=k,r=O,a=Te;if(!n||!r||!a)return;n.style.flex=`0 0 ${I()?52:N()}px`;let o=`1px solid var(--persona-divider,#e5e7eb)`;n.style.borderRight=e?``:o,n.style.borderLeft=e?o:``;let s=e?a:n;r.firstElementChild!==s&&r.append(s,e?n:a),st(r,e?n:a)};let ct=e=>{if(A&&k){A.replaceWith(e),A=null,i.applyRailChrome();return}let t=n(`div`,`persona-history-rail-shell`);t.style.cssText=`display:flex;flex-direction:row;flex:1 1 auto;min-height:0`;let r=n(`div`,`persona-history-rail-conversation`);r.style.cssText=`display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;position:relative`;let a=n(`div`,`persona-history-rail-host`);a.style.cssText=`display:flex;min-height:0;overflow:hidden`,i.container.insertBefore(t,i.header.parentNode===i.container?i.header:i.body);for(let e of Ee())e?.parentNode===i.container&&r.appendChild(e);t.append(a,r),a.appendChild(e),O=t,k=a,Te=r,i.applyRailChrome()},lt=()=>{if(O)return;let e=n(`div`,`persona-history-rail-placeholder`);e.style.cssText=`flex:1 1 auto;min-height:0`,A=e,ct(e),i.repinAnchoredMessage()},ut=()=>{A&&(ft(),i.repinAnchoredMessage())},dt=e=>{let t=n(`div`,`persona-history-rail-overlay`);t.style.cssText=`position:absolute;bottom:${Ue};display:flex;overflow:hidden;z-index:${r-1};border-radius:var(--persona-history-overlay-radius,16px);background:var(--persona-history-overlay-bg,var(--persona-container,#f7f7f8));box-shadow:var(--persona-history-overlay-shadow,0 12px 40px rgba(0,0,0,0.25))`,i.container.style.position=`relative`,i.container.appendChild(t),t.appendChild(e),document.addEventListener(`pointermove`,Ze),z=t,i.applyRailChrome(),$e()},ft=()=>{Se?.(),z&&=(V&&(Ge=Date.now()+150),document.removeEventListener(`pointermove`,Ze),z.remove(),null);let e=O;if(e){G?.();for(let t of Ee())if(t&&e.contains(t)){let n=t===i.scrollToBottomButton?i.panelSuggestions:e;i.container.insertBefore(t,n)}e.remove(),O=null,k=null,Te=null,A=null}},pt=e=>{D=e,e.id=b,e.style.flex=`1 1 auto`,e.style.minHeight=`0`},mt=e=>{pt(e),(i.historyPresentation!==`rail`||P)&&ut(),i.historyPresentation===`rail`?P?dt(e):ct(e):we(e)},ht=()=>{if(W(),Ht(),!i.historyVisible||!u)return;let e=fe();if(e===i.historyPresentation)return;let t=document.activeElement,n=t instanceof HTMLElement&&(u.element.contains(t)||w?.contains(t)===!0)?t:null;ft(),u.element.remove(),u.view.setHeaderPlacement(`inline`),i.historyPresentation=e,u.view.setPresentation(e),u.view.setCollapsed(I()),u.requestRender(),u.element.isConnected||mt(u.element),n?.isConnected?n.focus():_t(),i.syncScrollToBottomButton(),i.repinAnchoredMessage(),$()},gt=(e,t)=>w?.querySelector(t)??e.querySelector(t),_t=()=>{let e=u?.element??D;if(!e)return;let t=gt(e,`[data-persona-history-focus="close"],[data-persona-history-focus="collapse"]`);if(t){t.focus();return}let n=gt(e,`.persona-history-title`)??e;n.tabIndex=-1,n.focus()},K=async e=>{if(!x()||i.historyVisible)return;let t=c;if(!t)return;if(!P&&H()&&Re()){W();return}vt();let n=++_;f=e?.returnSurface??`conversation`,p=e?.invoker??m;let r=H()&&!P;r&&(We+=1,W(),lt());let s;try{s=await i.loadHistoryView()}catch{i.announceHistory(a.openHistoryLabel),r&&(--We,n===_&&(ut(),W()));return}if(r&&--We,n!==_||i.historyVisible)return;d={scope:ie()},i.historyPresentation=fe(),i.historyVisible=!0;let l=i.historyPresentation===`panel`&&o(i.config)&&i.header.style.display!==`none`?`external`:`inline`,h=i.config.features?.history?.rowAvatar,te=He(),g=te?{hint:te.hint,aria:te.aria}:null,v={provider:t,context:d,targetId:ae(),presentation:i.historyPresentation,collapsible:De(),collapsed:I(),railSide:j(),renderRailHeader:i.config.features?.history?.rail?.renderHeader,railBrand:Pe(),onToggleCollapse:Ve,...g?{collapseShortcut:g}:{},headerPlacement:l,showScopeStatus:i.config.features?.history?.showScopeStatus!==!1,showDelete:i.config.features?.history?.showDelete!==!1,showDeleteAll:i.config.features?.history?.showDeleteAll!==!1,...i.config.features?.history?.listActions?.length?{listActions:i.config.features.history.listActions}:{},rowAvatar:h===!1?!1:typeof h==`string`?h:i.config.launcher?.iconUrl,activeConversationId:i.session.getActiveConversationId(),...i.config.features?.history?.grouping?{grouping:i.config.features.history.grouping}:{},...i.config.features?.history?.copy?{copy:i.config.features.history.copy}:{},...i.config.features?.history?.pageSize===void 0?{}:{pageSize:i.config.features.history.pageSize},onSelect:e=>At(e,{focusComposer:!0}).catch(()=>{}),onActiveConversationChange:e=>i.setActiveConversationSummary(e),attachTooltip:i.attachTooltip,onStartNew:()=>jt({focusComposer:!0}),onClose:()=>q(),onRequestDeleteConversation:e=>Rt(e),onRequestClearHistory:()=>zt(),...t.resetDevice?{onRequestResetIdentity:()=>Bt()}:{}};u=ee({plugins:i.plugins,config:i.config,getPresentation:()=>i.historyPresentation??`panel`,getReturnSurface:()=>f,close:()=>q(),createView:({slots:e,renderDom:t,onModelChange:n,railSections:r})=>(E=s.createHistoryView({...v,railSections:Ie(r),slots:e,renderDom:t,onModelChange:n,onAnnounce:i.announceHistory}),E),onElementChanged:(e,t)=>{if(!t?.isConnected)return mt(e);pt(e),t.replaceWith(e),Ce()}}),u.view.setNewConversationRequired(i.historySessionState.recovery===`new_conversation_required`),e?.focus!==!1&&(i.historyPresentation!==`rail`||e?.keyboard===!0)&&_t(),i.syncScrollToBottomButton(),i.repinAnchoredMessage(),$(),i.eventBus.emit(`history:opened`,{presentation:i.historyPresentation,returnSurface:f,timestamp:Date.now()})},vt=()=>{},q=e=>{if(!i.historyVisible)return;_+=1;let t=f,n=p,r=u,a=e?.restoreFocus!==!1;i.historyVisible=!1;let o=!1,s=null,c=()=>{if(!o){if(o=!0,vt=()=>{},s!==null&&clearTimeout(s),P=!1,U(),ft(),r?.dispose(),r?.view.destroy(),r?.element.remove(),u===r&&(u=null,E=null,D=null,i.historyPresentation=null,d=null,p=null),i.syncScrollToBottomButton(),i.repinAnchoredMessage(),$(),a){let e=n??m;e?.isConnected?e.focus():i.maybeFocusInput()}i.eventBus.emit(`history:closed`,{returnSurface:t,timestamp:Date.now()})}},l=r&&r.element===r.view.element?r.view.playExit():null;l?(vt=c,s=setTimeout(c,250),l.then(c)):c()},yt=e=>{if(e.key===`Escape`&&i.historyVisible&&u){if(i.historyPresentation===`rail`){let t=e.target;if(!(t instanceof Node)||!(u.element.contains(t)||P&&R?.contains(t)===!0))return}e.preventDefault(),e.stopPropagation(),q()}};i.container.addEventListener(`keydown`,yt),i.destroyCallbacks.push(()=>i.container.removeEventListener(`keydown`,yt));let J=0,Y=null,bt=null,xt=()=>{bt&&clearTimeout(bt),bt=null};i.destroyCallbacks.push(xt);let St=()=>{xt();let e=i.conversationOpenPendingEl;e&&(i.conversationOpenTakeover=!0,e.hidden=!1,i.messagesWrapper.style.display=`none`,i.updateWelcome())},X=()=>{J+=1,xt(),Y?.remove(),Y=null,i.conversationOpenPendingEl&&(i.conversationOpenPendingEl.remove(),i.conversationOpenPendingEl=null,i.conversationOpenTakeover=!1,i.messagesWrapper.style.removeProperty(`display`),C(i.footer,!1),i.updateWelcome())},Ct=()=>{try{if(window.matchMedia?.(`(prefers-reduced-motion: reduce)`)?.matches)return;i.messagesWrapper.animate([{opacity:0},{opacity:1}],{duration:150,easing:`ease-out`})}catch{}},wt=n=>{let r=i.config.layout?.messages?.layout??`bubble`,a=t(`div`,{className:`persona-flex`,attrs:{"aria-hidden":`true`}});i.applyMessageRowLayout(a,n);let o=t(`div`,{className:e(i.getBubbleClasses(n,r).join(` `),`persona-conversation-loading-bubble`),attrs:{"data-persona-theme-zone":`${n}-message`},style:{width:n===`user`?`64%`:`100%`,backgroundColor:r===`flat`?`transparent`:`var(--persona-message-${n}-bg, var(--persona-${n===`user`?`accent`:`container`}))`,color:`var(--persona-message-${n}-text, ${n===`user`&&r!==`flat`?`white`:`var(--persona-text)`})`}},...[`94%`,...n===`assistant`?[`86%`]:[],`62%`].map(e=>t(`div`,{className:`persona-conversation-loading-line`,style:{width:e}})));return i.applyBubbleGeometry(o,n,r,{...i.resolveThemeDefaults(i.config.future).components.message[n],...i.config.theme?.components?.message?.[n],...i.config.darkTheme?.components?.message?.[n]}),a.appendChild(o),a},Tt=()=>t(`div`,{className:`persona-conversation-loading-body`,style:{gap:i.messagesWrapper.style.gap}},wt(`user`),wt(`assistant`),wt(`user`),wt(`assistant`)),Et=()=>i.config.loadingIndicator?.conversationOpenVariant===`skeleton`?Tt():t(`div`,{className:`persona-conversation-loading-spinner`,attrs:{"aria-hidden":`true`}},t(`span`,{className:`persona-conversation-loading-ring`})),Dt=e=>{i.conversationOpenPendingEl?.remove(),i.conversationOpenPendingEl=e,e.hidden=!i.conversationOpenTakeover,i.body.insertBefore(e,i.messagesWrapper),xt(),i.conversationOpenTakeover||(bt=setTimeout(St,250)),C(i.footer,!0)},Ot=()=>{let n={config:i.config,streaming:!1,location:`conversation-open`,defaultRenderer:Et},r=null,o=i.plugins.find(e=>e.renderLoadingIndicator);o?.renderLoadingIndicator&&(r=o.renderLoadingIndicator(n)),r===null&&i.config.loadingIndicator?.render&&(r=i.config.loadingIndicator.render(n));let s=r??Et();Dt(t(`div`,{className:e(`persona-conversation-loading`,s.classList.contains(`persona-conversation-loading-spinner`)&&`persona-conversation-loading--centered`),attrs:{role:`status`,"aria-label":a.openConversationLoadingLabel},style:{maxWidth:i.messagesWrapper.style.maxWidth||`none`}},s))},kt=e=>{let n=()=>{At(e,{focusComposer:!0}).catch(()=>{})},r=x()?()=>{X(),K()}:void 0,o=(e,n)=>{let r=t(`button`,{className:`persona-conversation-loading-error-action`,attrs:{type:`button`},text:e});return r.addEventListener(`click`,n),r},s=()=>t(`div`,{className:`persona-conversation-loading-error-body`},t(`p`,{className:`persona-conversation-loading-error-title`,text:a.openConversationErrorTitle}),t(`div`,{className:`persona-conversation-loading-error-actions`},o(a.openConversationRetryLabel,n),r?o(a.openConversationBackLabel,r):null)),c=Object.freeze({conversationId:e,config:i.config,copy:Object.freeze({title:a.openConversationErrorTitle,retryLabel:a.openConversationRetryLabel,backLabel:a.openConversationBackLabel}),retry:n,...r?{back:r}:{},defaultRenderer:s}),l=null;for(let e of i.plugins)if(e.renderHistoryOpenError){try{l=e.renderHistoryOpenError(c)}catch(e){console.warn(`[persona] renderHistoryOpenError threw`,e),l=null}if(l)break}if(Y?.remove(),Y=t(`div`,{className:`persona-conversation-loading-error`,attrs:{role:`alert`}},l??s()),!i.session.getActiveConversationId()&&i.session.getMessages().length===0&&!i.composerStore.getState().text&&!i.attachmentManager?.hasAttachments()){let e=Y;Y=null,Dt(e),St()}else i.body.insertBefore(Y,i.messagesWrapper);i.announceHistory(a.openConversationErrorTitle)};i.eventBus.on(`history:closed`,()=>{i.conversationOpenPendingEl&&C(i.footer,!0)});let At=async(e,{focusComposer:t=!1,busy:n=`reject`}={})=>{let r=S();if(n===`background`&&(i.session.assertBackgroundSwitchable(),i.composerStore.getState().phase===`preparing`))throw new i.SessionHistoryError(`conversation_busy`,`Finish preparing this turn before switching conversations`);if(n===`reject`&&(i.session.isStreaming()||[`paused`,`resuming`].includes(i.session.getStatus())||i.composerStore.getState().phase===`preparing`))throw new i.SessionHistoryError(`conversation_busy`,`Finish or stop the current turn before switching conversations`);n===`stop`&&(++i.composerConversationGeneration,i.submissionAbort?.abort(),i.submissionAbort=null,i.composerStore.setPreparing(!1),i.session.cancel());let a=i.conversationStateKey();(!i.conversationOpenPendingEl||i.pendingConversationReading?.key!==a)&&(i.pendingConversationReading={key:a,reading:i.captureConversationReading()});let o=null,s=!!u;u?.view.setActiveConversationId(e),X();let c=J;Ot(),i.historyVisible&&(i.historyPresentation===`panel`||P)&&q({restoreFocus:!1}),i.suppressScrollSend=!0;try{await i.session.openConversation(e,{scope:r,busy:n,onBeforeCommit:()=>{i.saveConversationContinuity(),o=i.composerConversationGeneration,i.conversationPersistenceOwner=o},onCommitted:()=>{i.restoreConversationContinuity(),i.conversationPersistenceOwner===o&&(i.conversationPersistenceOwner=null),i.usesSessionVoiceForConfig(i.config)&&i.session.setupVoice(),i.persistState()}})}catch(t){if(i.conversationPersistenceOwner===o&&(i.conversationPersistenceOwner=null),o===i.composerConversationGeneration&&i.usesSessionVoiceForConfig(i.config)&&i.session.setupVoice(),c===J){let t=i.pendingConversationReading?.reading;X(),t&&i.restoreConversationReading(t),i.pendingConversationReading=null,u?.view.setActiveConversationId(i.session.getActiveConversationId()),kt(e),i.suppressScrollSend=!1}throw t}finally{(c===J||!i.conversationOpenPendingEl)&&(i.suppressScrollSend=!1)}c===J&&(X(),i.pendingConversationReading=null,i.messageCache.clear(),Ct(),Q(),s||i.setActiveConversationSummary(null),i.eventBus.emit(`history:conversationOpened`,{conversationId:e,title:i.activeConversationTitle,scope:r,timestamp:Date.now()}),t&&i.maybeFocusInput())},jt=async({focusComposer:e=!1}={})=>{X();let t=null;try{await i.session.startNewConversation({scope:S(),onBeforeCommit:()=>{i.saveConversationContinuity(),t=i.composerConversationGeneration,i.conversationPersistenceOwner=t},onCommitted:()=>{i.restoreConversationContinuity(!0),i.conversationPersistenceOwner===t&&(i.conversationPersistenceOwner=null),i.usesSessionVoiceForConfig(i.config)&&i.session.setupVoice(),i.persistState(),i.pendingConversationReading=null}})}catch(e){throw i.conversationPersistenceOwner===t&&(i.conversationPersistenceOwner=null),t===i.composerConversationGeneration&&i.usesSessionVoiceForConfig(i.config)&&i.session.setupVoice(),e}i.setActiveConversationSummary(null),i.messageCache.clear(),i.resetAnchorState(),i.resumeAutoScroll(),i.jumpToBottomInstant(),Q();let n=i.session.getActiveConversationId();u?.view.setActiveConversationId(n),i.eventBus.emit(`history:conversationStarted`,{conversationId:n,timestamp:Date.now()}),i.historyVisible&&(i.historyPresentation===`panel`||P)&&q({restoreFocus:!1}),e&&i.maybeFocusInput()},Mt=async(e,t)=>{let n=await i.session.updateConversation(e,{...t,...t.title===void 0?{}:{title:t.title.trim()}});return u?.view.applyConversationSummary(n),!u&&e===i.session.getActiveConversationId()&&i.setActiveConversationSummary(n),n},Nt=async e=>{let t=S(),n=i.session.getActiveConversationId()===e;await i.session.deleteConversation(e,{scope:t}),i.discardConversationContinuity(e),n&&(i.attachmentManager?.destroy({release:!0}),i.attachmentManager=null,i.restoreConversationContinuity(!0)),u?.view.removeConversationSummary(e),n&&(i.setActiveConversationSummary(null),i.messageCache.clear(),i.resetAnchorState(),i.resumeAutoScroll(),Q()),i.eventBus.emit(`history:conversationDeleted`,{conversationId:e,scope:t,wasActive:n,timestamp:Date.now()})},Pt=async e=>{let t=e?.scope??S(),n=e?.allTargets?null:e?.targetId??ae(),r=await i.session.clearConversationHistory({...n?{targetId:n}:{},scope:t});return i.discardConversationContinuity(),i.setActiveConversationSummary(null),i.messageCache.clear(),i.resetAnchorState(),i.resumeAutoScroll(),Q(),i.eventBus.emit(`history:cleared`,{deleted:r.deleted,scope:t,targetId:n,timestamp:Date.now()}),r},Ft=async()=>{if(!c?.resetDevice)throw Error(`[Persona] resetHistoryIdentity() requires a history provider that can reset this device`);let e=!1;try{e=(await i.session.resetHistoryDevice()).remoteRevocationConfirmed}finally{i.discardConversationContinuity(),X(),i.setActiveConversationSummary(null),i.session.clearArtifacts(),i.messageCache.clear(),i.lastAppliedMessages=null,i.config.clearStoredSessionId?.(),i.config.clearStoredConversationId?.(),i.persistentMetadata={},i.actionManager.syncFromMetadata(),i.clearPersistedDraft();let e=i.storageAdapter;e?.clear&&i.runStorageMutation(()=>e.clear(),`[AgentWidget] Failed to clear storage adapter:`),i.resetAnchorState(),i.resumeAutoScroll(),Q(),q({restoreFocus:!1}),i.maybeFocusInput(),i.open||i.launcherSurfaceInstance?.launcher.element.focus()}return i.announceHistory(e?a.identityResetNotice:a.identityResetUnconfirmedNotice),i.eventBus.emit(`history:identityReset`,{remoteRevocationConfirmed:e,timestamp:Date.now()}),{remoteRevocationConfirmed:e}},It=()=>i.artifactSplitRoot?i.panel:i.container,Lt=async e=>{let t=await i.loadHistoryView().catch(()=>null);return typeof t?.showHistoryConfirm==`function`?t.showHistoryConfirm(e):window.confirm(`${e.title}\n\n${e.description}`)},Rt=async e=>await Lt({host:It(),title:a.deleteConversationConfirmTitle,description:a.deleteConversationConfirm,confirmLabel:a.deleteConversationConfirmLabel,cancelLabel:a.confirmCancelLabel})?(await Nt(e),`deleted`):`cancelled`,zt=async()=>{let e=S()===`verified-user`;return await Lt({host:It(),title:a.clearHistoryConfirmTitle,description:e?a.clearHistoryVerifiedConfirm:a.clearHistoryConfirm,confirmLabel:a.clearHistoryConfirmLabel,cancelLabel:a.confirmCancelLabel})?(await Pt(),`cleared`):`cancelled`},Bt=async()=>{if(!await Lt({host:It(),title:a.resetIdentityConfirmTitle,description:a.resetIdentityConfirm,confirmLabel:a.resetIdentityConfirmLabel,cancelLabel:a.confirmCancelLabel}))return{outcome:`cancelled`};let{remoteRevocationConfirmed:e}=await Ft();return{outcome:`reset`,remoteRevocationConfirmed:e}},Z=n(`button`,`persona-history-earlier`);Z.type=`button`,Z.textContent=a.showEarlierMessagesLabel,Z.setAttribute(`data-persona-history-earlier`,``),Object.assign(Z.style,{alignSelf:`center`,minHeight:`44px`,padding:`0 16px`,borderRadius:`999px`,border:`1px solid var(--persona-border, rgba(0,0,0,0.12))`,background:`transparent`,color:`inherit`,font:`inherit`,cursor:`pointer`,flexShrink:`0`});let Q=()=>{x()&&i.historySessionState.nextMessageCursor&&i.session.getActiveConversationId()?(Z.textContent=a.showEarlierMessagesLabel,Z.parentNode!==i.body&&i.body.insertBefore(Z,i.body.firstChild)):Z.remove()};Z.addEventListener(`click`,()=>{let e=i.session.getActiveConversationId(),t=i.historySessionState.nextMessageCursor;if(!e||!t||Z.disabled)return;Z.disabled=!0;let n=i.body.scrollHeight,r=i.body.scrollTop;i.session.loadOlderMessages(e,t,{scope:S()}).then(()=>{i.body.scrollTop=r+(i.body.scrollHeight-n),i.repinAnchoredMessage()}).catch(()=>{}).finally(()=>{Z.disabled=!1,Q()})});let Vt=()=>{let e=i.createHeaderIconButton({ariaLabel:a.openHistoryLabel,iconName:`history`,wrapperClassName:`persona-relative persona-inline-flex persona-items-center persona-justify-center`,extraClassName:`persona-history-toggle`,attrs:{"data-persona-history-toggle":``}});return e.button.addEventListener(`click`,t=>{x()&&!re()&&(i.historyVisible?q():K({invoker:e.button,keyboard:t.detail===0}))}),e},Ht=()=>{if(!x()){h?.remove(),m=null,h=null;return}if(h&&!h.isConnected&&(m=null,h=null),!m&&i.header){let e=Vt();m=e.button,h=e.wrapper;let t=i.panelElements.clearChatButtonWrapper||i.panelElements.closeButtonWrapper;t?.parentNode&&i.header.contains(t)?t.parentNode.insertBefore(h,t):i.header.appendChild(h)}if(!m||!h)return;let e=H()||i.historyVisible&&i.historyPresentation===`rail`;if(h.style.display=e?`none`:``,e){document.activeElement===m&&_t();return}let t=re();m.disabled=t,m.setAttribute(`aria-disabled`,t?`true`:`false`);let n=t?a.openHistoryBusyLabel:a.openHistoryLabel;m.setAttribute(`aria-label`,n),(i.config.features?.history?.presentation??`panel`)===`panel`?(m.removeAttribute(`aria-expanded`),m.removeAttribute(`aria-controls`)):(m.setAttribute(`aria-expanded`,i.historyVisible?`true`:`false`),m.setAttribute(`aria-controls`,b))},Ut=!1,Wt=()=>{let e=i.panelElements.clearChatButton;e&&(x()?(Ut||=(v=e.getAttribute(`aria-label`)??``,!0),e.setAttribute(`aria-label`,a.newConversationLabel),e.removeAttribute(`title`)):Ut&&(Ut=!1,v&&e.setAttribute(`aria-label`,v)))},$=()=>{a=s(i.config.features?.history?.copy),Ht(),W(),Wt(),Q()};return i.historyChromeSync=$,de(),$(),i.destroyCallbacks.push(()=>{ne?.(),y?.(),_+=1,vt(),u?.dispose(),u?.view.destroy(),u=null}),{clearConversationOpenPending:X,cancelConversationOpenTakeover:xt,historyOperationScope:S,discardConversationContinuity:i.discardConversationContinuity,historyAvailable:x,historyScope:ie,installHistoryProvider:de,syncHistoryChromeImpl:$,syncHistoryPresentation:ht,syncEarlierMessagesPill:Q,openHistory:K,closeHistory:q,openHistoryConversation:At,startNewConversation:jt,updateHistoryConversation:Mt,deleteHistoryConversation:Nt,requestDeleteConversation:Rt,clearConversationHistory:Pt,resetHistoryIdentity:Ft,railCollapseShortcut:He,railCollapsible:De,railTriggerApplies:H,railOverlayMode:Me,toggleRailCollapsed:Ve,toggleRailPinned:()=>Be(),get historyProvider(){return c},get historySurface(){return u},get railShell(){return O},get railHost(){return k},get railColumn(){return Te}}};export{g as createHistoryShell};
|
|
1
|
+
import{i as e,r as t,t as n}from"./chunk-D5BxWOFB.js";import{r}from"./chunk-Bb41bKyp.js";import{n as i,r as a}from"./chunk-i4qGOJAL.js";import{a as o}from"./chunk-Cy1A8vbF.js";import{n as s}from"./chunk-CLMIHW4_.js";const c=(e,t)=>{console.warn(`[persona] ${e} threw`,t)},l=e=>Object.freeze({...e}),u=e=>Object.freeze({id:e.id,title:e.title,targetId:e.targetId,preview:e.preview,messageCount:e.messageCount,createdAt:e.createdAt,updatedAt:e.updatedAt}),d=e=>e?l(e):null;function ee(e){let{plugins:t,config:n}=e,r=!1,i=!1,a=!1,o=!1,s=null,ee=[],f=()=>{for(let e of ee.splice(0))try{e()}catch(e){c(`renderHistoryView cleanup`,e)}},p=(e,n)=>{for(let r of t){let t=r[e];if(t)try{let e=t(n);if(e)return e}catch(t){c(e,t)}}return null},m=()=>({presentation:e.getPresentation(),config:n}),h={header:t=>o?p(`renderHistoryHeader`,Object.freeze({...m(),returnSurface:e.getReturnSurface(),identityStatus:l(t.identityStatus),pendingAction:d(t.pendingAction),copy:l(t.copy),actions:Object.freeze({close:_.close,startNewConversation:_.startNewConversation}),defaultRenderer:t.defaultRenderer})):null,conversation:e=>o?p(`renderHistoryConversation`,Object.freeze({...m(),conversation:u(e.conversation),active:e.active,pending:e.pending,open:e.open,requestDelete:e.requestDelete,defaultRenderer:e.defaultRenderer})):null,state:e=>o?p(`renderHistoryState`,Object.freeze({...m(),state:l(e.state),identityStatus:l(e.identityStatus),copy:l(e.copy),...e.retry?{retry:e.retry}:{},...e.startNewConversation?{startNewConversation:e.startNewConversation}:{},defaultRenderer:e.defaultRenderer})):null},te=t.flatMap(t=>(t.railSections??[]).map(t=>({...t,placement:t.placement??`above-conversations`,items:[],render:n=>t.render(Object.freeze({collapsed:n,presentation:e.getPresentation(),actions:_}))}))),g=e.createView({slots:h,renderDom:!1,onModelChange:()=>b(),railSections:te}),_=Object.freeze({...g.operations,close:e.close}),v=()=>(o=!0,g.setDomRenderEnabled(!0),g.element),ne=t=>Object.freeze({conversations:Object.freeze(t.conversations.map(u)),activeConversationId:t.activeConversationId,state:l(t.state),pendingAction:d(t.pendingAction),identityStatus:l(t.identityStatus),nextCursor:t.nextCursor,presentation:e.getPresentation(),returnSurface:e.getReturnSurface(),config:n,copy:l(g.copy),actions:_,defaultRenderer:v,requestRender:()=>b(),onCleanup:e=>{ee.push(e)}}),y=()=>{o=!1;let e=null;for(let n of t)if(n.renderHistoryView){try{e=n.renderHistoryView(ne(g.getModel()))}catch(t){c(`renderHistoryView`,t),e=null}if(e)break}let n=!e||e.contains(g.element);return o=n,g.setDomRenderEnabled(n),e??g.element};function b(){if(!(!a||r||i)){i=!0;try{f();let t=y();if(t===s)return;let n=s;s=t,e.onElementChanged(t,n)}finally{i=!1}}}return a=!0,b(),{view:g,get element(){return s??g.element},requestRender:b,dispose:()=>{r=!0,f()}}}const f=/* @__PURE__ */ new Map([[`not_found`,`not_found`],[`conversation_deleted`,`not_found`],[`rate_limited`,`rate_limited`],[`authentication_required`,`authentication_required`],[`invalid_identity_proof`,`authentication_required`],[`visitor_identity_mismatch`,`authentication_required`],[`visitor_required`,`authentication_required`],[`identity_provider_failed`,`identity_provider_failed`],[`proof_not_admitted`,`proof_not_admitted`],[`identity_contract_violation`,`proof_not_admitted`],[`unauthorized`,`authentication_failed`],[`visitor_token_missing`,`authentication_failed`],[`conversation_credential_missing`,`authentication_failed`]]),p=/* @__PURE__ */ new Map([[`not_found`,`That conversation is no longer available.`],[`rate_limited`,`Too many history requests.`],[`authentication_failed`,`History access was not authorized.`],[`authentication_required`,`Sign in again to view account history.`],[`identity_provider_failed`,`The identity provider did not respond.`],[`proof_not_admitted`,`Account history is not available for this configuration.`],[`unsupported_scope`,`This history scope is not supported.`],[`unavailable`,`Conversation history is unavailable right now.`]]),m=e=>p.get(e)??`Conversation history is unavailable right now.`;function h(e,{HistoryClientError:t,HistoryProviderError:n}){if(e instanceof n)return e;if(e instanceof t){let t=f.get(e.code)??`unavailable`;return new n(t,m(t),{...e.retryAfterSeconds===void 0?{}:{retryAfterSeconds:e.retryAfterSeconds}})}return new n(`unavailable`,m(`unavailable`))}function te(e){let{HistoryProviderError:t}=e.errors,n=()=>e.getClient?.()??e.client,r=e.getIdentityProofConfigured()?[`browser`,`verified-user`]:[`browser`],o={scopes:r},s=e=>{if(!r.includes(e))throw new t(`unsupported_scope`,m(`unsupported_scope`))},c=async(t,n)=>{s(t);try{return await n()}catch(t){throw h(t,e.errors)}},l=t=>{let n=!1;return{conversationId:t.session.conversationId??``,conversationRevision:t.session.conversationRevision??``,async commit(){n||(n=!0,t.commit(),await e.onActivationCommitted(t.session))},discard(){n||(n=!0,t.discard())}}};return{capabilities:o,getIdentityStatus(){return n().getHistoryIdentityStatus()},subscribeIdentityStatus(e){return n().subscribeHistoryIdentityStatus(e)},subscribeAvailability(e){return n().subscribeHistoryAvailability(e)},async list(e){return c(e.context.scope,async()=>{let t=await n().listConversations({...e.cursor?{cursor:e.cursor}:{},...e.limit===void 0?{}:{limit:e.limit},...e.targetId?{targetId:e.targetId}:{},scope:e.context.scope});return{items:t.data,nextCursor:t.nextCursor}})},async getPage(e,t){return c(t.context.scope,async()=>{let r=await n().getConversation(e,{...t.cursor?{messageCursor:t.cursor}:{},scope:t.context.scope}),o=i(r.messages,{...t.beforeCreatedAt?{beforeCreatedAt:t.beforeCreatedAt}:{}});return{summary:r.summary,messages:a([],o),conversationRevision:r.conversationRevision??``,nextCursor:r.nextMessageCursor}})},async prepareOpen(e,t){return c(t.context.scope,async()=>l(await n().prepareConversationSession(e)))},async prepareStartNew(e){return c(e.context.scope,async()=>l(await n().prepareNewConversationSession()))},async delete(e,t){await c(t.context.scope,()=>n().deleteConversation(e,{scope:t.context.scope}))},async deleteAll(e){return c(e.context.scope,()=>n().deleteAllConversations({...e.targetId===void 0?{}:{targetId:e.targetId},scope:e.context.scope}))},async resetDevice(){try{return await n().resetVisitor(),{remoteRevocationConfirmed:!0}}catch{return{remoteRevocationConfirmed:!1}}}}}const g=i=>{let a=s(i.config.features?.history?.copy),c=null,l=!1,u=null,d=null,f=`conversation`,p=null,m=null,h=null,g=null,_=0,v=null,ne=null,y=null,b=`persona-history-${Math.random().toString(36).slice(2,8)}`,x=()=>i.historyFeatureEnabled()&&!!c&&!l,re=()=>{let e=i.session.getStatus();return i.isStreaming||e===`paused`||e===`resuming`},ie=()=>{let e=i.config.features?.history?.scope;if(e)return e;let t=i.config.getIdentityProof?`verified-user`:`browser`,n=c?.capabilities.scopes;return!n||n.includes(t)?t:n[0]??t},S=()=>d?.scope??ie(),ae=()=>i.session.getClientSession()?.targetId??null,oe=e=>`${e.state}:${`reason`in e?e.reason:``}`,se=e=>{let t=oe(e);t!==g&&(g=t,i.eventBus.emit(`history:identityStatusChanged`,{status:e,timestamp:Date.now()}))},ce=null,le=null,ue=()=>{if(!i.historyFeatureEnabled())return null;let e=i.getHistoryProviderFactory();if(e)return e();let t=i.config.features?.history?.provider;return t?typeof t==`function`?(ce!==t&&(ce=t,le=t()),le):t:i.session.isClientTokenMode()?te({errors:i.historyErrors,client:i.session.getClient(),getIdentityProofConfigured:()=>typeof i.config.getIdentityProof==`function`,onActivationCommitted:e=>i.session.bindActivatedSession(e),getClient:()=>i.session.getClient()}):null},de=()=>{ne?.(),ne=null,y?.(),y=null,l=!1;let e=c;c=ue(),e&&e!==c&&i.discardConversationContinuity();let t={...i.historyInternals};c?t.historyProvider=c:delete t.historyProvider,i.historyInternals=t,i.session.setHistoryInternals(i.historyInternals),c&&(ne=c.subscribeAvailability?.(e=>{l=!e,e||q({restoreFocus:!1}),$()})??null,y=c.subscribeIdentityStatus(e=>se(e)),g=oe(c.getIdentityStatus()))},fe=()=>{let e=i.config.features?.history?.presentation??`panel`;if(e===`panel`||e===`auto`&&i.launcherEnabled&&!i.isDockedMountMode(i.config))return`panel`;let t=i.artifactSplitRoot??i.container;return(t.getBoundingClientRect().width||t.clientWidth)>=720?`rail`:`panel`},C=(e,t)=>{t?(e.setAttribute(`aria-hidden`,`true`),e.setAttribute(`inert`,``)):(e.removeAttribute(`aria-hidden`),e.removeAttribute(`inert`))},pe=`data-persona-history-suppressed`,w=null,T=null,E=null,D=null,me=null,he=``,ge=()=>i.header===me?he:o(i.config)?``:`none`,_e=()=>i.historyPresentation===`panel`&&!!E&&D===E.element&&o(i.config)&&ge()!==`none`,ve=()=>{for(let e of Array.from(i.header.children))e!==w&&e.setAttribute(pe,``)},ye=()=>{for(let e of Array.from(i.container.querySelectorAll(`[${pe}]`)))e.removeAttribute(pe)},be=()=>{let e=E;if(!e)return;if(Array.from(i.header.children).some(e=>e!==w&&!e.hasAttribute(pe))){T&&T!==i.header&&(T.style.removeProperty(`min-height`),T=null);let e=i.header.offsetHeight;e>0&&(i.header.style.minHeight=`${e}px`,T=i.header)}w||=n(`div`,`persona-history-header-host`),e.setHeaderPlacement(`external`);let t=e.getHeaderElement();t.parentNode!==w&&w.replaceChildren(t),w.parentNode!==i.header&&i.header.appendChild(w),ve()},xe=()=>{T&&=(T.style.removeProperty(`min-height`),null),w&&(E?.setHeaderPlacement(`inline`),w.remove(),w=null,ye())},Se=null,Ce=()=>{Se&&(i.body.style.display=`none`,C(i.body,!0),i.footer.hidden=!0,C(i.footer,!0),i.panelSuggestions.style.display=`none`,C(i.panelSuggestions,!0),i.panelSuggestionsFade.style.display=`none`,_e()?(be(),i.header.style.display=ge(),C(i.header,!1)):(xe(),i.header.style.display=`none`,C(i.header,!0)))};i.reapplyHistoryHostChrome=Ce;let we=e=>{let t=i.body.style.display,n=i.footer.hidden,r=i.panelSuggestions.style.display,a=i.panelSuggestionsFade.style.display,s=i.footer,c=i.header,l=i.header.style.display;me=c,he=l,Se=()=>{Se=null,xe(),me=null,i.body.style.display=t,C(i.body,!1),i.panelSuggestions.style.display=r,C(i.panelSuggestions,!1),i.panelSuggestionsFade.style.display=a,s.hidden=n,C(s,!1),i.footer!==s&&(i.footer.hidden=!1,C(i.footer,!1)),c.style.display=l,C(c,!1),i.header!==c&&(i.header.style.display=o(i.config)?``:`none`,C(i.header,!1))},i.container.insertBefore(e,i.footer.parentNode===i.container?i.footer:i.panelSuggestions),Ce()},O=null,k=null,Te=null,A=null,Ee=()=>[i.header,i.panelElements.closeButtonWrapper,i.panelElements.clearChatButtonWrapper,i.body,i.footer,i.scrollToBottomButton],De=()=>i.config.features?.history?.rail?.collapsible!==!1,j=()=>i.config.features?.history?.rail?.side===`right`?`right`:`left`,Oe=e=>Math.min(400,Math.max(200,Math.round(e))),ke=()=>i.config.features?.history?.rail?.resizable===!0,M,Ae=()=>{if(M===void 0&&(M=null,i.config.persistState!==!1))try{let e=Number(window.localStorage.getItem(`${i.currentKeyPrefix()}rail-width`));e&&(M=e)}catch{}return M},N=()=>Oe(Ae()??i.config.features?.history?.rail?.width??260),je=e=>{if(M=e,i.config.persistState!==!1)try{window.localStorage.setItem(`${i.currentKeyPrefix()}rail-width`,String(e))}catch{}},Me=()=>De()&&i.config.features?.history?.rail?.collapsedBehavior===`overlay`,P=!1,Ne=e=>{let t=n(`img`);return t.src=e,t.alt=``,t.setAttribute(`aria-hidden`,`true`),t},Pe=()=>{let e=i.config.features?.history?.rail?.brand;if(!e)return;let t=!1,n;return r=>{if(e.render)try{return e.render({collapsed:r})??null}catch(e){return t||(t=!0,console.warn(`[persona] history rail brand threw`,e)),null}return n===void 0&&(n=e.iconUrl?Ne(e.iconUrl):e.icon?i.renderLucideIcon(e.icon,20):null),n?n.cloneNode(!0):null}},Fe=()=>i.config.features?.history?.rail?.sections?.map(e=>{let t=!1,n=n=>{t||(t=!0,console.warn(`[persona] history rail section threw`,e.id,n))};return{id:e.id,title:e.title,placement:e.placement??`above-conversations`,items:e.items.map(e=>{let t;return{id:e.id,label:e.label,badge:e.badge,iconNode:()=>{if(t!==void 0)return t;try{t=e.renderIcon?e.renderIcon()??null:e.iconUrl?Ne(e.iconUrl):e.icon?i.renderLucideIcon(e.icon,20):null}catch(e){n(e),t=null}return t},onSelect:()=>{try{e.onSelect()}catch(e){n(e)}}}})}})??[],Ie=e=>{let t=Fe();for(let n of e)t.some(e=>e.id===n.id)?console.warn(`[persona] duplicate history rail section id`,n.id):t.push(n);return t.length?t:void 0},F=null,Le=()=>`${i.currentKeyPrefix()}rail-collapsed`,Re=()=>{if(F===null&&(F=i.config.features?.history?.rail?.defaultCollapsed===!0,i.config.persistState!==!1))try{let e=window.localStorage.getItem(Le());e&&(F=e===`1`)}catch{}return F},ze=e=>{if(F=e,i.config.persistState!==!1)try{window.localStorage.setItem(Le(),e?`1`:`0`)}catch{}},I=()=>i.historyPresentation===`rail`&&De()&&!Me()&&Re(),Be=()=>{},Ve=()=>{Me()?Be():(ze(!Re()),u?.view.setCollapsed(I()),i.applyRailChrome(),i.repinAnchoredMessage())},He=()=>{let e=i.config.features?.history?.rail?.collapseShortcut;return!e||!i.parseCombo(e)?null:{combo:e,hint:i.formatCombo(e),aria:i.ariaCombo(e)}},Ue=`var(--persona-history-overlay-margin,8px)`,L=null,R=null,We=0,z=null,B=null,V=!1,Ge=0,Ke=()=>window.matchMedia?.(`(pointer: coarse)`).matches===!0,H=()=>x()&&Me()&&(i.historyPresentation??fe())===`rail`,qe=()=>i.historyVisible&&!P,U=()=>{B!==null&&clearTimeout(B),B=null},Je=()=>{i.loadHistoryView().catch(()=>{})},Ye=()=>{U(),P&&(B=setTimeout(()=>{B=null,!V&&P&&(z?.contains(document.activeElement)||q({restoreFocus:!1}))},300))},Xe=(e,t)=>{let n=z?.getBoundingClientRect();if(!n)return!1;let r=L?.getBoundingClientRect(),i=r?Math.min(r.top,n.top):n.top;return e>=n.left&&e<=n.right&&t>=i&&t<=n.bottom||!!r&&e>=r.left&&e<=r.right&&t>=r.top&&t<=r.bottom},Ze=e=>{P&&(V=Xe(e.clientX,e.clientY),V?U():B===null&&Ye())},Qe=e=>{!i.historyVisible&&H()&&(P=!0,K({invoker:L,keyboard:e?.keyboard===!0}).then(()=>{i.historyVisible?!V&&document.activeElement!==L&&q():P=!1}))},$e=()=>{let e=D?.querySelector(`[data-persona-history-focus="collapse"]`);e&&(e.setAttribute(`aria-label`,P?a.expandLabel:a.collapseLabel),e.setAttribute(`aria-expanded`,P?`false`:`true`))},et=()=>{ze(!1);let e=u;if(!P||!e){K({invoker:L});return}let t=document.activeElement===L;P=!1,ft(),e.element.remove(),mt(e.element),$e(),t&&_t(),i.repinAnchoredMessage(),$()},tt=()=>{ze(!0),q()};Be=()=>{!i.historyVisible||P?et():tt()};let nt=()=>{let e=He(),t=i.createHeaderIconButton({ariaLabel:a.expandLabel,iconName:`panel-left`,wrapperClassName:`persona-relative persona-inline-flex persona-items-center persona-justify-center`,extraClassName:`persona-rail-trigger`,tooltip:!1,attrs:{"data-persona-rail-trigger":``,"aria-controls":b,...e?{"aria-keyshortcuts":e.aria}:{}}}),n=t.button;n.addEventListener(`mouseenter`,()=>{V=!0,U(),!(Ke()||Date.now()<Ge)&&Qe()}),n.addEventListener(`mouseleave`,()=>{V=!1,Ge=0,Ye()}),n.addEventListener(`focus`,()=>{i.historyVisible||Je()}),n.addEventListener(`click`,e=>{x()&&(e.detail!==0&&Ke()&&!i.historyVisible?Qe():et())}),L=n,R=t.wrapper},W=()=>{if(R&&!R.isConnected&&(R=null,L=null),!H()){R?.remove(),R=null,L=null;return}L||nt();let e=R,t=L;if(!e||!t)return;let n=j()===`right`?null:i.header.firstChild;(n??i.header.lastChild)!==e&&i.header.insertBefore(e,n),e.style.display=qe()||We>0?`none`:``,t.setAttribute(`aria-label`,a.expandLabel),t.setAttribute(`aria-expanded`,i.historyVisible?`true`:`false`),z&&i.applyRailChrome()},rt=e=>{if(!P)return;let t=e.target;t instanceof Node&&(z?.contains(t)||R?.contains(t)||t instanceof Element&&t.closest(`.persona-dropdown-menu,[role="alertdialog"]`)||q({restoreFocus:!1}))};document.addEventListener(`pointerdown`,rt,!0),i.destroyCallbacks.push(()=>{document.removeEventListener(`pointerdown`,rt,!0),document.removeEventListener(`pointermove`,Ze),G?.(),U()});let it=null,G=null,at=e=>{je(Oe(e)),i.applyRailChrome(),i.repinAnchoredMessage()},ot=()=>{let e=n(`div`,`persona-rail-resizer`);return e.tabIndex=0,e.setAttribute(`role`,`separator`),e.setAttribute(`aria-orientation`,`vertical`),e.setAttribute(`aria-valuemin`,`200`),e.setAttribute(`aria-valuemax`,`400`),e.addEventListener(`pointerdown`,t=>{let n=k;if(!n||t.button!==0)return;t.preventDefault(),G?.();let r=t.clientX,a=n.getBoundingClientRect().width||N(),o=j()===`right`?-1:1,s=a,c=i.mount.ownerDocument;n.style.transition=`none`;let l=t=>{s=Oe(a+o*(t.clientX-r)),n.style.flex=`0 0 ${s}px`,e.setAttribute(`aria-valuenow`,String(s))},u=()=>{G=null,c.removeEventListener(`pointermove`,l),c.removeEventListener(`pointerup`,u),c.removeEventListener(`pointercancel`,u),n.style.removeProperty(`transition`);try{e.releasePointerCapture(t.pointerId)}catch{}at(s)};G=u,c.addEventListener(`pointermove`,l),c.addEventListener(`pointerup`,u),c.addEventListener(`pointercancel`,u);try{e.setPointerCapture(t.pointerId)}catch{}}),e.addEventListener(`keydown`,e=>{let t=j()===`right`?-16:16,n=N(),r=e.key===`ArrowRight`?n+t:e.key===`ArrowLeft`?n-t:e.key===`Home`?200:e.key===`End`?400:null;r!==null&&(e.preventDefault(),at(r))}),e},st=(e,t)=>{if(!ke()||I()){G?.(),it?.remove();return}let n=it??ot();it=n,n.setAttribute(`aria-label`,a.resizeLabel),n.setAttribute(`aria-valuenow`,String(N())),n.nextElementSibling!==t&&e.insertBefore(n,t)};i.applyRailChrome=()=>{u?.view.setRailSide(j());let e=j()===`right`,t=z;if(t){let n=L?L.getBoundingClientRect().bottom-i.container.getBoundingClientRect().top:0;t.style.top=`calc(${Math.max(0,Math.round(n))}px + ${Ue})`,t.style.width=`${N()}px`,t.style.left=e?``:Ue,t.style.right=e?Ue:``}let n=k,r=O,a=Te;if(!n||!r||!a)return;n.style.flex=`0 0 ${I()?52:N()}px`;let o=`1px solid var(--persona-divider,#e5e7eb)`;n.style.borderRight=e?``:o,n.style.borderLeft=e?o:``;let s=e?a:n;r.firstElementChild!==s&&r.append(s,e?n:a),st(r,e?n:a)};let ct=e=>{if(A&&k){A.replaceWith(e),A=null,i.applyRailChrome();return}let t=n(`div`,`persona-history-rail-shell`);t.style.cssText=`display:flex;flex-direction:row;flex:1 1 auto;min-height:0`;let r=n(`div`,`persona-history-rail-conversation`);r.style.cssText=`display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;position:relative`;let a=n(`div`,`persona-history-rail-host`);a.style.cssText=`display:flex;min-height:0;overflow:hidden`,i.container.insertBefore(t,i.header.parentNode===i.container?i.header:i.body);for(let e of Ee())e?.parentNode===i.container&&r.appendChild(e);t.append(a,r),a.appendChild(e),O=t,k=a,Te=r,i.applyRailChrome()},lt=()=>{if(O)return;let e=n(`div`,`persona-history-rail-placeholder`);e.style.cssText=`flex:1 1 auto;min-height:0`,A=e,ct(e),i.repinAnchoredMessage()},ut=()=>{A&&(ft(),i.repinAnchoredMessage())},dt=e=>{let t=n(`div`,`persona-history-rail-overlay`);t.style.cssText=`position:absolute;bottom:${Ue};display:flex;overflow:hidden;z-index:${r-1};border-radius:var(--persona-history-overlay-radius,16px);background:var(--persona-history-overlay-bg,var(--persona-container,#f7f7f8));box-shadow:var(--persona-history-overlay-shadow,0 12px 40px rgba(0,0,0,0.25))`,i.container.style.position=`relative`,i.container.appendChild(t),t.appendChild(e),document.addEventListener(`pointermove`,Ze),z=t,i.applyRailChrome(),$e()},ft=()=>{Se?.(),z&&=(V&&(Ge=Date.now()+150),document.removeEventListener(`pointermove`,Ze),z.remove(),null);let e=O;if(e){G?.();for(let t of Ee())if(t&&e.contains(t)){let n=t===i.scrollToBottomButton?i.panelSuggestions:e;i.container.insertBefore(t,n)}e.remove(),O=null,k=null,Te=null,A=null}},pt=e=>{D=e,e.id=b,e.style.flex=`1 1 auto`,e.style.minHeight=`0`},mt=e=>{pt(e),(i.historyPresentation!==`rail`||P)&&ut(),i.historyPresentation===`rail`?P?dt(e):ct(e):we(e)},ht=()=>{if(W(),Ht(),!i.historyVisible||!u)return;let e=fe();if(e===i.historyPresentation)return;let t=document.activeElement,n=t instanceof HTMLElement&&(u.element.contains(t)||w?.contains(t)===!0)?t:null;ft(),u.element.remove(),u.view.setHeaderPlacement(`inline`),i.historyPresentation=e,u.view.setPresentation(e),u.view.setCollapsed(I()),u.requestRender(),u.element.isConnected||mt(u.element),n?.isConnected?n.focus():_t(),i.syncScrollToBottomButton(),i.repinAnchoredMessage(),$()},gt=(e,t)=>w?.querySelector(t)??e.querySelector(t),_t=()=>{let e=u?.element??D;if(!e)return;let t=gt(e,`[data-persona-history-focus="close"],[data-persona-history-focus="collapse"]`);if(t){t.focus();return}let n=gt(e,`.persona-history-title`)??e;n.tabIndex=-1,n.focus()},K=async e=>{if(!x()||i.historyVisible)return;let t=c;if(!t)return;if(!P&&H()&&Re()){W();return}vt();let n=++_;f=e?.returnSurface??`conversation`,p=e?.invoker??m;let r=H()&&!P;r&&(We+=1,W(),lt());let s;try{s=await i.loadHistoryView()}catch{i.announceHistory(a.openHistoryLabel),r&&(--We,n===_&&(ut(),W()));return}if(r&&--We,n!==_||i.historyVisible)return;d={scope:ie()},i.historyPresentation=fe(),i.historyVisible=!0;let l=i.historyPresentation===`panel`&&o(i.config)&&i.header.style.display!==`none`?`external`:`inline`,h=i.config.features?.history?.rowAvatar,te=He(),g=te?{hint:te.hint,aria:te.aria}:null,v={provider:t,context:d,targetId:ae(),presentation:i.historyPresentation,collapsible:De(),collapsed:I(),railSide:j(),renderRailHeader:i.config.features?.history?.rail?.renderHeader,railBrand:Pe(),onToggleCollapse:Ve,...g?{collapseShortcut:g}:{},headerPlacement:l,showScopeStatus:i.config.features?.history?.showScopeStatus!==!1,showDelete:i.config.features?.history?.showDelete!==!1,showDeleteAll:i.config.features?.history?.showDeleteAll!==!1,...i.config.features?.history?.listActions?.length?{listActions:i.config.features.history.listActions}:{},rowAvatar:h===!1?!1:typeof h==`string`?h:i.config.launcher?.iconUrl,activeConversationId:i.session.getActiveConversationId(),...i.config.features?.history?.grouping?{grouping:i.config.features.history.grouping}:{},...i.config.features?.history?.copy?{copy:i.config.features.history.copy}:{},...i.config.features?.history?.pageSize===void 0?{}:{pageSize:i.config.features.history.pageSize},onSelect:e=>At(e,{focusComposer:!0}).catch(()=>{}),onActiveConversationChange:e=>i.setActiveConversationSummary(e),attachTooltip:i.attachTooltip,onStartNew:()=>jt({focusComposer:!0}),onClose:()=>q(),onRequestDeleteConversation:e=>Rt(e),onRequestClearHistory:()=>zt(),...t.resetDevice?{onRequestResetIdentity:()=>Bt()}:{}};u=ee({plugins:i.plugins,config:i.config,getPresentation:()=>i.historyPresentation??`panel`,getReturnSurface:()=>f,close:()=>q(),createView:({slots:e,renderDom:t,onModelChange:n,railSections:r})=>(E=s.createHistoryView({...v,railSections:Ie(r),slots:e,renderDom:t,onModelChange:n,onAnnounce:i.announceHistory}),E),onElementChanged:(e,t)=>{if(!t?.isConnected)return mt(e);pt(e),t.replaceWith(e),Ce()}}),u.view.setNewConversationRequired(i.historySessionState.recovery===`new_conversation_required`),e?.focus!==!1&&(i.historyPresentation!==`rail`||e?.keyboard===!0)&&_t(),i.syncScrollToBottomButton(),i.repinAnchoredMessage(),$(),i.eventBus.emit(`history:opened`,{presentation:i.historyPresentation,returnSurface:f,timestamp:Date.now()})},vt=()=>{},q=e=>{if(!i.historyVisible)return;_+=1;let t=f,n=p,r=u,a=e?.restoreFocus!==!1;i.historyVisible=!1;let o=!1,s=null,c=()=>{if(!o){if(o=!0,vt=()=>{},s!==null&&clearTimeout(s),P=!1,U(),ft(),r?.dispose(),r?.view.destroy(),r?.element.remove(),u===r&&(u=null,E=null,D=null,i.historyPresentation=null,d=null,p=null),i.syncScrollToBottomButton(),i.repinAnchoredMessage(),$(),a){let e=n??m;e?.isConnected?e.focus():i.maybeFocusInput()}i.eventBus.emit(`history:closed`,{returnSurface:t,timestamp:Date.now()})}},l=r&&r.element===r.view.element?r.view.playExit():null;l?(vt=c,s=setTimeout(c,250),l.then(c)):c()},yt=e=>{if(e.key===`Escape`&&i.historyVisible&&u){if(i.historyPresentation===`rail`){let t=e.target;if(!(t instanceof Node)||!(u.element.contains(t)||P&&R?.contains(t)===!0))return}e.preventDefault(),e.stopPropagation(),q()}};i.container.addEventListener(`keydown`,yt),i.destroyCallbacks.push(()=>i.container.removeEventListener(`keydown`,yt));let J=0,Y=null,bt=null,xt=()=>{bt&&clearTimeout(bt),bt=null};i.destroyCallbacks.push(xt);let St=()=>{xt();let e=i.conversationOpenPendingEl;e&&(i.conversationOpenTakeover=!0,e.hidden=!1,i.messagesWrapper.style.display=`none`,i.updateWelcome())},X=()=>{J+=1,xt(),Y?.remove(),Y=null,i.conversationOpenPendingEl&&(i.conversationOpenPendingEl.remove(),i.conversationOpenPendingEl=null,i.conversationOpenTakeover=!1,i.messagesWrapper.style.removeProperty(`display`),C(i.footer,!1),i.updateWelcome())},Ct=()=>{try{if(window.matchMedia?.(`(prefers-reduced-motion: reduce)`)?.matches)return;i.messagesWrapper.animate([{opacity:0},{opacity:1}],{duration:150,easing:`ease-out`})}catch{}},wt=n=>{let r=i.config.layout?.messages?.layout??`bubble`,a=t(`div`,{className:`persona-flex`,attrs:{"aria-hidden":`true`}});i.applyMessageRowLayout(a,n);let o=t(`div`,{className:e(i.getBubbleClasses(n,r).join(` `),`persona-conversation-loading-bubble`),attrs:{"data-persona-theme-zone":`${n}-message`},style:{width:n===`user`?`64%`:`100%`,backgroundColor:r===`flat`?`transparent`:`var(--persona-message-${n}-bg, var(--persona-${n===`user`?`accent`:`container`}))`,color:`var(--persona-message-${n}-text, ${n===`user`&&r!==`flat`?`white`:`var(--persona-text)`})`}},...[`94%`,...n===`assistant`?[`86%`]:[],`62%`].map(e=>t(`div`,{className:`persona-conversation-loading-line`,style:{width:e}})));return i.applyBubbleGeometry(o,n,r,{...i.resolveThemeDefaults(i.config.future).components.message[n],...i.config.theme?.components?.message?.[n],...i.config.darkTheme?.components?.message?.[n]}),a.appendChild(o),a},Tt=()=>t(`div`,{className:`persona-conversation-loading-body`,style:{gap:i.messagesWrapper.style.gap}},wt(`user`),wt(`assistant`),wt(`user`),wt(`assistant`)),Et=()=>i.config.loadingIndicator?.conversationOpenVariant===`skeleton`?Tt():t(`div`,{className:`persona-conversation-loading-spinner`,attrs:{"aria-hidden":`true`}},t(`span`,{className:`persona-conversation-loading-ring`})),Dt=e=>{i.conversationOpenPendingEl?.remove(),i.conversationOpenPendingEl=e,e.hidden=!i.conversationOpenTakeover,i.body.insertBefore(e,i.messagesWrapper),xt(),i.conversationOpenTakeover||(bt=setTimeout(St,250)),C(i.footer,!0)},Ot=()=>{let n={config:i.config,streaming:!1,location:`conversation-open`,defaultRenderer:Et},r=null,o=i.plugins.find(e=>e.renderLoadingIndicator);o?.renderLoadingIndicator&&(r=o.renderLoadingIndicator(n)),r===null&&i.config.loadingIndicator?.render&&(r=i.config.loadingIndicator.render(n));let s=r??Et();Dt(t(`div`,{className:e(`persona-conversation-loading`,s.classList.contains(`persona-conversation-loading-spinner`)&&`persona-conversation-loading--centered`),attrs:{role:`status`,"aria-label":a.openConversationLoadingLabel},style:{maxWidth:i.messagesWrapper.style.maxWidth||`none`}},s))},kt=e=>{let n=()=>{At(e,{focusComposer:!0}).catch(()=>{})},r=x()?()=>{X(),K()}:void 0,o=(e,n)=>{let r=t(`button`,{className:`persona-conversation-loading-error-action`,attrs:{type:`button`},text:e});return r.addEventListener(`click`,n),r},s=()=>t(`div`,{className:`persona-conversation-loading-error-body`},t(`p`,{className:`persona-conversation-loading-error-title`,text:a.openConversationErrorTitle}),t(`div`,{className:`persona-conversation-loading-error-actions`},o(a.openConversationRetryLabel,n),r?o(a.openConversationBackLabel,r):null)),c=Object.freeze({conversationId:e,config:i.config,copy:Object.freeze({title:a.openConversationErrorTitle,retryLabel:a.openConversationRetryLabel,backLabel:a.openConversationBackLabel}),retry:n,...r?{back:r}:{},defaultRenderer:s}),l=null;for(let e of i.plugins)if(e.renderHistoryOpenError){try{l=e.renderHistoryOpenError(c)}catch(e){console.warn(`[persona] renderHistoryOpenError threw`,e),l=null}if(l)break}if(Y?.remove(),Y=t(`div`,{className:`persona-conversation-loading-error`,attrs:{role:`alert`}},l??s()),!i.session.getActiveConversationId()&&i.session.getMessages().length===0&&!i.composerStore.getState().text&&!i.attachmentManager?.hasAttachments()){let e=Y;Y=null,Dt(e),St()}else i.body.insertBefore(Y,i.messagesWrapper);i.announceHistory(a.openConversationErrorTitle)};i.eventBus.on(`history:closed`,()=>{i.conversationOpenPendingEl&&C(i.footer,!0)});let At=async(e,{focusComposer:t=!1,busy:n=`reject`}={})=>{let r=S();if(n===`background`&&(i.session.assertBackgroundSwitchable(),i.composerStore.getState().phase===`preparing`))throw new i.SessionHistoryError(`conversation_busy`,`Finish preparing this turn before switching conversations`);if(n===`reject`&&(i.session.isStreaming()||[`paused`,`resuming`].includes(i.session.getStatus())||i.composerStore.getState().phase===`preparing`))throw new i.SessionHistoryError(`conversation_busy`,`Finish or stop the current turn before switching conversations`);n===`stop`&&(++i.composerConversationGeneration,i.submissionAbort?.abort(),i.submissionAbort=null,i.composerStore.setPreparing(!1),i.session.cancel());let a=i.conversationStateKey();i.conversationOpenPendingEl&&i.pendingConversationReading?.key===a||(i.pendingConversationReading={key:a,reading:i.captureConversationReading()});let o=null,s=!!u;u?.view.setActiveConversationId(e),X();let c=J;Ot(),i.historyVisible&&(i.historyPresentation===`panel`||P)&&q({restoreFocus:!1}),i.suppressScrollSend=!0;try{await i.session.openConversation(e,{scope:r,busy:n,onBeforeCommit:()=>{i.saveConversationContinuity(),o=i.composerConversationGeneration,i.conversationPersistenceOwner=o},onCommitted:()=>{i.restoreConversationContinuity(),i.conversationPersistenceOwner===o&&(i.conversationPersistenceOwner=null),i.usesSessionVoiceForConfig(i.config)&&i.session.setupVoice(),i.persistState()}})}catch(t){if(i.conversationPersistenceOwner===o&&(i.conversationPersistenceOwner=null),o===i.composerConversationGeneration&&i.usesSessionVoiceForConfig(i.config)&&i.session.setupVoice(),c===J){let t=i.pendingConversationReading?.reading;X(),t&&i.restoreConversationReading(t),i.pendingConversationReading=null,u?.view.setActiveConversationId(i.session.getActiveConversationId()),kt(e),i.suppressScrollSend=!1}throw t}finally{c!==J&&i.conversationOpenPendingEl||(i.suppressScrollSend=!1)}c===J&&(X(),i.pendingConversationReading=null,i.messageCache.clear(),Ct(),Q(),s||i.setActiveConversationSummary(null),i.eventBus.emit(`history:conversationOpened`,{conversationId:e,title:i.activeConversationTitle,scope:r,timestamp:Date.now()}),t&&i.maybeFocusInput())},jt=async({focusComposer:e=!1}={})=>{X();let t=null;try{await i.session.startNewConversation({scope:S(),onBeforeCommit:()=>{i.saveConversationContinuity(),t=i.composerConversationGeneration,i.conversationPersistenceOwner=t},onCommitted:()=>{i.restoreConversationContinuity(!0),i.conversationPersistenceOwner===t&&(i.conversationPersistenceOwner=null),i.usesSessionVoiceForConfig(i.config)&&i.session.setupVoice(),i.persistState(),i.pendingConversationReading=null}})}catch(e){throw i.conversationPersistenceOwner===t&&(i.conversationPersistenceOwner=null),t===i.composerConversationGeneration&&i.usesSessionVoiceForConfig(i.config)&&i.session.setupVoice(),e}i.setActiveConversationSummary(null),i.messageCache.clear(),i.resetAnchorState(),i.resumeAutoScroll(),i.jumpToBottomInstant(),Q();let n=i.session.getActiveConversationId();u?.view.setActiveConversationId(n),i.eventBus.emit(`history:conversationStarted`,{conversationId:n,timestamp:Date.now()}),i.historyVisible&&(i.historyPresentation===`panel`||P)&&q({restoreFocus:!1}),e&&i.maybeFocusInput()},Mt=async(e,t)=>{let n=await i.session.updateConversation(e,{...t,...t.title===void 0?{}:{title:t.title.trim()}});return u?.view.applyConversationSummary(n),!u&&e===i.session.getActiveConversationId()&&i.setActiveConversationSummary(n),n},Nt=async e=>{let t=S(),n=i.session.getActiveConversationId()===e;await i.session.deleteConversation(e,{scope:t}),i.discardConversationContinuity(e),n&&(i.attachmentManager?.destroy({release:!0}),i.attachmentManager=null,i.restoreConversationContinuity(!0)),u?.view.removeConversationSummary(e),n&&(i.setActiveConversationSummary(null),i.messageCache.clear(),i.resetAnchorState(),i.resumeAutoScroll(),Q()),i.eventBus.emit(`history:conversationDeleted`,{conversationId:e,scope:t,wasActive:n,timestamp:Date.now()})},Pt=async e=>{let t=e?.scope??S(),n=e?.allTargets?null:e?.targetId??ae(),r=await i.session.clearConversationHistory({...n?{targetId:n}:{},scope:t});return i.discardConversationContinuity(),i.setActiveConversationSummary(null),i.messageCache.clear(),i.resetAnchorState(),i.resumeAutoScroll(),Q(),i.eventBus.emit(`history:cleared`,{deleted:r.deleted,scope:t,targetId:n,timestamp:Date.now()}),r},Ft=async()=>{if(!c?.resetDevice)throw Error(`[Persona] resetHistoryIdentity() requires a history provider that can reset this device`);let e=!1;try{e=(await i.session.resetHistoryDevice()).remoteRevocationConfirmed}finally{i.discardConversationContinuity(),X(),i.setActiveConversationSummary(null),i.session.clearArtifacts(),i.messageCache.clear(),i.lastAppliedMessages=null,i.config.clearStoredSessionId?.(),i.config.clearStoredConversationId?.(),i.persistentMetadata={},i.actionManager.syncFromMetadata(),i.clearPersistedDraft();let e=i.storageAdapter;e?.clear&&i.runStorageMutation(()=>e.clear(),`[AgentWidget] Failed to clear storage adapter:`),i.resetAnchorState(),i.resumeAutoScroll(),Q(),q({restoreFocus:!1}),i.maybeFocusInput(),i.open||i.launcherSurfaceInstance?.launcher.element.focus()}return i.announceHistory(e?a.identityResetNotice:a.identityResetUnconfirmedNotice),i.eventBus.emit(`history:identityReset`,{remoteRevocationConfirmed:e,timestamp:Date.now()}),{remoteRevocationConfirmed:e}},It=()=>i.artifactSplitRoot?i.panel:i.container,Lt=async e=>{let t=await i.loadHistoryView().catch(()=>null);return typeof t?.showHistoryConfirm==`function`?t.showHistoryConfirm(e):window.confirm(`${e.title}\n\n${e.description}`)},Rt=async e=>await Lt({host:It(),title:a.deleteConversationConfirmTitle,description:a.deleteConversationConfirm,confirmLabel:a.deleteConversationConfirmLabel,cancelLabel:a.confirmCancelLabel})?(await Nt(e),`deleted`):`cancelled`,zt=async()=>{let e=S()===`verified-user`;return await Lt({host:It(),title:a.clearHistoryConfirmTitle,description:e?a.clearHistoryVerifiedConfirm:a.clearHistoryConfirm,confirmLabel:a.clearHistoryConfirmLabel,cancelLabel:a.confirmCancelLabel})?(await Pt(),`cleared`):`cancelled`},Bt=async()=>{if(!await Lt({host:It(),title:a.resetIdentityConfirmTitle,description:a.resetIdentityConfirm,confirmLabel:a.resetIdentityConfirmLabel,cancelLabel:a.confirmCancelLabel}))return{outcome:`cancelled`};let{remoteRevocationConfirmed:e}=await Ft();return{outcome:`reset`,remoteRevocationConfirmed:e}},Z=n(`button`,`persona-history-earlier`);Z.type=`button`,Z.textContent=a.showEarlierMessagesLabel,Z.setAttribute(`data-persona-history-earlier`,``),Object.assign(Z.style,{alignSelf:`center`,minHeight:`44px`,padding:`0 16px`,borderRadius:`999px`,border:`1px solid var(--persona-border, rgba(0,0,0,0.12))`,background:`transparent`,color:`inherit`,font:`inherit`,cursor:`pointer`,flexShrink:`0`});let Q=()=>{x()&&i.historySessionState.nextMessageCursor&&i.session.getActiveConversationId()?(Z.textContent=a.showEarlierMessagesLabel,Z.parentNode!==i.body&&i.body.insertBefore(Z,i.body.firstChild)):Z.remove()};Z.addEventListener(`click`,()=>{let e=i.session.getActiveConversationId(),t=i.historySessionState.nextMessageCursor;if(!e||!t||Z.disabled)return;Z.disabled=!0;let n=i.body.scrollHeight,r=i.body.scrollTop;i.session.loadOlderMessages(e,t,{scope:S()}).then(()=>{i.body.scrollTop=r+(i.body.scrollHeight-n),i.repinAnchoredMessage()}).catch(()=>{}).finally(()=>{Z.disabled=!1,Q()})});let Vt=()=>{let e=i.createHeaderIconButton({ariaLabel:a.openHistoryLabel,iconName:`history`,wrapperClassName:`persona-relative persona-inline-flex persona-items-center persona-justify-center`,extraClassName:`persona-history-toggle`,attrs:{"data-persona-history-toggle":``}});return e.button.addEventListener(`click`,t=>{x()&&!re()&&(i.historyVisible?q():K({invoker:e.button,keyboard:t.detail===0}))}),e},Ht=()=>{if(!x()){h?.remove(),m=null,h=null;return}if(h&&!h.isConnected&&(m=null,h=null),!m&&i.header){let e=Vt();m=e.button,h=e.wrapper;let t=i.panelElements.clearChatButtonWrapper||i.panelElements.closeButtonWrapper;t?.parentNode&&i.header.contains(t)?t.parentNode.insertBefore(h,t):i.header.appendChild(h)}if(!m||!h)return;let e=H()||i.historyVisible&&i.historyPresentation===`rail`;if(h.style.display=e?`none`:``,e){document.activeElement===m&&_t();return}let t=re();m.disabled=t,m.setAttribute(`aria-disabled`,t?`true`:`false`);let n=t?a.openHistoryBusyLabel:a.openHistoryLabel;m.setAttribute(`aria-label`,n),(i.config.features?.history?.presentation??`panel`)===`panel`?(m.removeAttribute(`aria-expanded`),m.removeAttribute(`aria-controls`)):(m.setAttribute(`aria-expanded`,i.historyVisible?`true`:`false`),m.setAttribute(`aria-controls`,b))},Ut=!1,Wt=()=>{let e=i.panelElements.clearChatButton;e&&(x()?(Ut||=(v=e.getAttribute(`aria-label`)??``,!0),e.setAttribute(`aria-label`,a.newConversationLabel),e.removeAttribute(`title`)):Ut&&(Ut=!1,v&&e.setAttribute(`aria-label`,v)))},$=()=>{a=s(i.config.features?.history?.copy),Ht(),W(),Wt(),Q()};return i.historyChromeSync=$,de(),$(),i.destroyCallbacks.push(()=>{ne?.(),y?.(),_+=1,vt(),u?.dispose(),u?.view.destroy(),u=null}),{clearConversationOpenPending:X,cancelConversationOpenTakeover:xt,historyOperationScope:S,discardConversationContinuity:i.discardConversationContinuity,historyAvailable:x,historyScope:ie,installHistoryProvider:de,syncHistoryChromeImpl:$,syncHistoryPresentation:ht,syncEarlierMessagesPill:Q,openHistory:K,closeHistory:q,openHistoryConversation:At,startNewConversation:jt,updateHistoryConversation:Mt,deleteHistoryConversation:Nt,requestDeleteConversation:Rt,clearConversationHistory:Pt,resetHistoryIdentity:Ft,railCollapseShortcut:He,railCollapsible:De,railTriggerApplies:H,railOverlayMode:Me,toggleRailCollapsed:Ve,toggleRailPinned:()=>Be(),get historyProvider(){return c},get historySurface(){return u},get railShell(){return O},get railHost(){return k},get railColumn(){return Te}}};export{g as createHistoryShell};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./chunk-BAdIgC5d.js";import{t}from"./chunk-DAthf5H3.js";import{t as n}from"./chunk-i4qGOJAL.js";import{n as r}from"./chunk-DTDHeUsG.js";const i=e=>e.replace(/[^a-zA-Z0-9_]/g,`_`).toLowerCase().replace(/_+/g,`_`).replace(/^_|_$/g,``),a=e=>typeof e==`object`&&!!e&&!Array.isArray(e),o=e=>{if(e.variant!==`tool`)return null;let t=e.agentMetadata?.clientToolAnswer;if(!t||!t.toolCallId||t.result===void 0)return null;let n=i(t.toolName);return n?{call:{toolCallId:t.toolCallId,toolName:n,args:a(t.args)?t.args:{}},result:{toolCallId:t.toolCallId,toolName:n,result:t.result}}:null},s=(e,t)=>{let n=[],r=[],i=[],a=``,s,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=o(l);if(e){let t=l.agentMetadata?.clientToolAnswer?.batch;r.length>0&&(t===void 0||t!==s)&&c(),r.length===0&&(a=l.createdAt,s=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},c=e=>e.voiceCaption||r(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),l=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,u=e=>e.slice().sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()),d=e=>{let t=e.agentMetadata?.providerPhase??e.agentMetadata?.phase;return e.role===`assistant`&&(t===`commentary`||t===`partial_answer`||t===`final_answer`)?{phase:t}:{}},f=e=>({role:e.role,content:e.contentParts??e.llmContent??e.rawContent??e.content,createdAt:e.createdAt,...d(e)});var p=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(t,n,r,i){let a=!!(n&&n.length>0),o=a?e(n):void 0,s=this.host.clientToolsFingerprintSessionId===t,c=a&&s&&this.host.lastSentClientToolsFingerprint===o,l=!a&&i?.emptyMeansReplace===!0&&this.host.sentNonEmptyClientToolsSessionId===t,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=t,a?this.host.sentNonEmptyClientToolsSessionId=t:l&&(this.host.sentNonEmptyClientToolsSessionId=null)}}}async createClientSession(e){let n=this.host.isHistoryCapable()&&!e.omitVisitorFields,r=!e.omitVisitorFields,i=null;(n||r)&&(await this.host.historyInternals.historyBootstrapReady,i=await this.host.readVisitorToken());let a=this.host.routing(),o=a.agentId??a.flowId,s=n||e.durableResume?e.conversationId:void 0,c={token:this.host.config.clientToken,...o&&{flowId:o},...n&&{visitorHistory:!0},...r&&{durableRecovery:!0},...(n||r)&&i?{visitorToken:i}:{},...n&&e.identityProof?{identityProof:e.identityProof}:{},...s?{conversationId:s}:e.storedSessionId?{sessionId:e.storedSessionId}:{}};e.signal?.throwIfAborted();let l=await fetch(this.host.getClientApiUrl(`init`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":t},body:JSON.stringify(c),signal:e.signal});if(!l.ok){let t=await l.json().catch(()=>({error:`Session initialization failed`}));if(n&&l.status===403&&t.error===`visitor_history_disabled`){if(this.host.markHistoryUnavailable(),s)throw new this.host.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`);return this.createClientSession({...e,omitVisitorFields:!0})}throw l.status===403&&t.error===`durable_recovery_disabled`?new this.host.HistoryClientError(`history_disabled`,`Durable recovery is disabled for this surface`):(n||e.durableResume)&&l.status===401&&t.error===`visitor_required`?new this.host.HistoryClientError(`visitor_required`,`Visitor credential no longer resolves`):s&&l.status===404?new this.host.HistoryClientError(`not_found`,`Conversation not found`):l.status===401?Error(`Invalid client token: ${t.hint||t.error}`):l.status===403?Error(`Origin not allowed: ${t.hint||t.error}`):Error(t.error||`Failed to initialize session`)}let u=await l.json();return u.visitor?.token&&await this.host.historyInternals.visitorStore?.set(u.visitor.token),{sessionId:u.sessionId,expiresAt:new Date(u.expiresAt),flow:u.flow,...u.conversationId?{conversationId:u.conversationId}:{},...u.targetId?{targetId:u.targetId}:{},...u.conversationRevision?{conversationRevision:u.conversationRevision}:{},...u.durableRecovery?{durableRecovery:u.durableRecovery}:{},...u.visitor?{visitor:u.visitor}:{},config:{welcomeMessage:u.config.welcomeMessage,placeholder:u.config.placeholder,theme:u.config.theme,...m(u.config)}}}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 n={...e,...this.host.config.clientToken&&{token:this.host.config.clientToken}},r=await fetch(`${this.host.clientApiBase()}/v1/client/feedback`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":t},body:JSON.stringify(n)});if(!r.ok){let e=await r.json().catch(()=>({error:`Feedback submission failed`}));throw r.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,r,i){let{HistoryClientError:a}=this.host,o=()=>this.host.isCurrentTurn(i),s=e=>{o()&&r(e)};try{let r=()=>{if(e.signal?.throwIfAborted(),!o())throw new DOMException(`Turn superseded`,`AbortError`)},c=this.host.clientSession??await this.host.initSession();r();let l=async()=>{r();let t=c,n=t.durableRecovery?.enabled===!0;if(n&&(!t.conversationId||!await this.host.readVisitorToken()))throw Error(`Renewing this conversation requires its visitor credential.`);r();let i=await this.host.createClientSession({...n||this.host.isHistoryCapable()?{conversationId:t.conversationId,durableResume:n}:{storedSessionId:t.sessionId},signal:e.signal});if(r(),t.conversationId&&i.conversationId!==t.conversationId||n&&i.durableRecovery?.enabled!==!0)throw Error(`Session renewal did not preserve this conversation.`);c=this.host.finishInit(i,t.conversationId??null,!1),this.host.clientSession=c,this.host.resetSessionWarmLatch(),this.host.resetClientToolsFingerprint(),this.host.config.onSessionInit?.(c)};Date.now()>=c.expiresAt.getTime()-6e4&&await l();let d=new Map(u(e.messages).map(e=>[e,this.#s(e)])),f=await this.#l(e.messages,void 0,d),p=f.metadata?Object.fromEntries(Object.entries(f.metadata).filter(([e])=>e!==`sessionId`&&e!==`session_id`)):void 0,m=this.host.isHistoryCapable(),h={sessionId:c.sessionId,messages:u(e.messages).flatMap(e=>{let t=d.get(e);if(!t)return[];let r=m?n(e,t.content):void 0;return[{id:e.id,role:t.role,content:t.content,...r!==void 0&&{displayContent:r}}]}),...e.assistantMessageId&&{assistantMessageId:e.assistantMessageId},...p&&Object.keys(p).length>0&&{metadata:p},...f.inputs&&Object.keys(f.inputs).length>0&&{inputs:f.inputs},...f.context&&{context:f.context},turnId:i,...e.interrupt&&{submitMode:`interrupt`},...e.voiceSpoken&&{voice:{spoken:!0,...e.voicePriorToolResults?.length&&{priorToolResults:e.voicePriorToolResults}}}},g=async()=>{r();let n=c.durableRecovery?.enabled===!0?await this.host.readVisitorToken():null;return r(),this.host.sendWithClientToolsDiff(c.sessionId,f.clientTools,async i=>{r();let a=await this.host.resolveChatIdentityProof(e.signal);r();let o={...h,sessionId:c.sessionId,...i,...a&&{identityProof:a}};return this.host.debug&&console.debug(`[AgentWidgetClient] client token dispatch`,{...o,...a&&{identityProof:{provider:a.provider,token:`[REDACTED]`}}}),fetch(this.host.getClientApiUrl(`chat`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":t,...n?{"X-Visitor-Token":n}:{}},body:JSON.stringify(o),signal:e.signal})})},_=await g();if(r(),_.response.status===401){let e=await _.response.clone().json().catch(()=>null);r(),e?.error===`Session not found or expired`&&(await l(),_=await g(),r())}let{response:v,commit:y}=_;if(!v.ok){let e=await v.json().catch(()=>({error:`Chat request failed`}));if(v.status===401&&e.error===`invalid_identity_proof`){let e=new a(`invalid_identity_proof`,`The identity proof was rejected`);throw s({type:`error`,error:e}),e}if(v.status===401){this.host.clearClientSession(),this.host.config.onSessionExpired?.();let e=/* @__PURE__ */ Error(`Session expired. Please refresh to continue.`);throw s({type:`error`,error:e}),e}if(v.status===429){let t=Error(e.hint||`Message limit reached for this session.`);throw s({type:`error`,error:t}),t}if(v.status===410&&e.error===`conversation_deleted`){let e=new a(`conversation_deleted`,`This conversation was deleted`);throw s({type:`error`,error:e}),e}let t=Error(e.error||`Failed to send message`);throw s({type:`error`,error:t}),t}if(!v.body){let e=/* @__PURE__ */ Error(`No response body received`);throw s({type:`error`,error:e}),e}y(),s({type:`status`,status:`connected`});try{await this.host.streamResponse(v.body,s,e.assistantMessageId,void 0,e.signal)}finally{s({type:`status`,status:`idle`})}}catch(e){let t=e instanceof Error?e:Error(String(e));throw t instanceof a||t.message.includes(`Session expired`)||t.message.includes(`Message limit`)||s({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(!c(e))return null;let t=e.contentParts??e.llmContent??e.rawContent??e.content,n=e.role===`operator`?null:f(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)||!l(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=s(u(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 c=await this.#i(e);return c&&(a.context=c),a}async#l(e,t,n){let r=s(u(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 c=await this.#i(e);c&&(a.context=c);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}};const m=e=>{let t=e.webmcp?.requireConfirmFor;return Array.isArray(t)&&t.length?{webmcp:{requireConfirmFor:t}}:{}};export{p as ClientDispatch};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=`4.35.1`;export{e as t};
|