@runtypelabs/persona 4.30.0 → 4.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -1
- package/dist/activity-ui.d.cts +3 -3
- package/dist/activity-ui.d.ts +3 -3
- package/dist/animations/glyph-cycle.d.cts +1 -1
- package/dist/animations/glyph-cycle.d.ts +1 -1
- package/dist/animations/wipe.d.cts +1 -1
- package/dist/animations/wipe.d.ts +1 -1
- package/dist/approval-ui.d.cts +2 -2
- package/dist/approval-ui.d.ts +2 -2
- package/dist/artifacts-ui.d.cts +3 -3
- package/dist/artifacts-ui.d.ts +3 -3
- package/dist/background-runtime.d.cts +1 -1
- package/dist/background-runtime.d.ts +1 -1
- package/dist/{chunk-gayfbmEU.js → chunk-BBtVdcKU.js} +1 -1
- package/dist/chunk-C2IbR39s.js +1 -0
- package/dist/chunk-CjhA_5Jk.js +1 -0
- package/dist/{chunk-n96BB0YH.js → chunk-Co4LmTFv.js} +1 -1
- package/dist/chunk-DABqu7C3.js +2 -0
- package/dist/chunk-DbD5qyBw.js +3 -0
- package/dist/{chunk-UyZbbbz3.js → chunk-MdlQetfC.js} +2 -2
- package/dist/{chunk-CqEWCkJt.js → chunk-WA9UucGf.js} +1 -1
- package/dist/client-dispatch.js +1 -1
- package/dist/client-history.js +1 -1
- package/dist/codegen.cjs +1 -1
- package/dist/codegen.js +1 -1
- package/dist/composer-actions-runtime.d.cts +2 -2
- package/dist/composer-actions-runtime.d.ts +2 -2
- package/dist/{composer-input-C76gfIoK.d.cts → composer-input-C2_WizXV.d.cts} +1 -1
- package/dist/{composer-input-C76gfIoK.d.ts → composer-input-C2_WizXV.d.ts} +1 -1
- package/dist/{composer-store-C7tvaz90.d.cts → composer-store-BV6kTlKv.d.cts} +1 -1
- package/dist/{composer-store-C7tvaz90.d.ts → composer-store-BV6kTlKv.d.ts} +1 -1
- package/dist/{context-mention-manager-IfT4JHma.d.cts → context-mention-manager-BfZzcydV.d.cts} +2 -2
- package/dist/{context-mention-manager-IfT4JHma.d.ts → context-mention-manager-BfZzcydV.d.ts} +2 -2
- package/dist/context-mentions-inline.d.cts +2 -2
- package/dist/context-mentions-inline.d.ts +2 -2
- package/dist/context-mentions.d.cts +3 -3
- package/dist/context-mentions.d.ts +3 -3
- package/dist/{defaults-Cc_p0PGM.d.cts → defaults-DiTeXyr3.d.cts} +1 -1
- package/dist/{defaults-Cc_p0PGM.d.ts → defaults-DiTeXyr3.d.ts} +1 -1
- package/dist/dictation-runtime.d.cts +2 -2
- package/dist/dictation-runtime.d.ts +2 -2
- package/dist/event-stream-view.d.cts +1 -1
- package/dist/event-stream-view.d.ts +1 -1
- package/dist/{fallback-speech-engine-CSxWpG0A.d.cts → fallback-speech-engine-DZ6Of7VU.d.cts} +1 -1
- package/dist/{fallback-speech-engine-CSxWpG0A.d.ts → fallback-speech-engine-DZ6Of7VU.d.ts} +1 -1
- package/dist/{feature-preferences-eeSOmDxg.d.cts → feature-preferences-BT549D_E.d.cts} +1 -1
- package/dist/{feature-preferences-eeSOmDxg.d.ts → feature-preferences-BT549D_E.d.ts} +1 -1
- package/dist/forms-ui.d.cts +2 -2
- package/dist/forms-ui.d.ts +2 -2
- package/dist/{history-confirm-dialog-DXkuAgh-.d.cts → history-confirm-dialog-Cm4oK4am.d.cts} +1 -1
- package/dist/{history-confirm-dialog-DXkuAgh-.d.ts → history-confirm-dialog-Cm4oK4am.d.ts} +1 -1
- package/dist/history-shell.d.cts +6 -6
- package/dist/history-shell.d.ts +6 -6
- package/dist/history-view.d.cts +1 -1
- package/dist/history-view.d.ts +1 -1
- package/dist/index.cjs +48 -47
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -9
- package/dist/index.d.ts +9 -9
- package/dist/index.global.js +1 -1
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +42 -41
- package/dist/index.js.map +1 -1
- package/dist/{loading-label-runtime-loader-C53YyPJ-.d.cts → loading-label-runtime-loader-DmiPDkBu.d.cts} +1 -1
- package/dist/{loading-label-runtime-loader-C53YyPJ-.d.ts → loading-label-runtime-loader-DmiPDkBu.d.ts} +1 -1
- package/dist/loading-label-runtime.d.cts +1 -1
- package/dist/loading-label-runtime.d.ts +1 -1
- package/dist/markdown-parsers.js +18 -15
- package/dist/{message-bubble-Cg_sTXUN.d.cts → message-bubble-D0rosKuK.d.cts} +1 -1
- package/dist/{message-bubble-Cg_sTXUN.d.ts → message-bubble-D0rosKuK.d.ts} +1 -1
- package/dist/preferences-runtime.d.cts +1 -1
- package/dist/preferences-runtime.d.ts +1 -1
- package/dist/{preview-BeMKALry.d.cts → preview-DRU27q-X.d.cts} +2 -2
- package/dist/{preview-BeMKALry.d.ts → preview-DRU27q-X.d.ts} +2 -2
- package/dist/{registry-BBe-Lesw.d.ts → registry-DRk3VMFc.d.cts} +3 -1
- package/dist/{registry-BBe-Lesw.d.cts → registry-DRk3VMFc.d.ts} +3 -1
- package/dist/{session-C0fSteA4.d.cts → session-Dj4bOm5y.d.cts} +18 -9
- package/dist/{session-C0fSteA4.d.ts → session-Dj4bOm5y.d.ts} +18 -9
- package/dist/session-reconnect.d.cts +2 -2
- package/dist/session-reconnect.d.ts +2 -2
- package/dist/smart-dom-reader.d.cts +1 -1
- package/dist/smart-dom-reader.d.ts +1 -1
- package/dist/theme-editor-preview.cjs +46 -45
- package/dist/theme-editor-preview.d.cts +1 -1
- package/dist/theme-editor-preview.d.ts +1 -1
- package/dist/theme-editor-preview.js +17 -19
- package/dist/theme-editor.d.cts +2 -2
- package/dist/theme-editor.d.ts +2 -2
- package/dist/theme-reference.d.cts +2 -2
- package/dist/theme-reference.d.ts +2 -2
- package/dist/{tool-loading-animation-BvdaZfwh.d.cts → tool-loading-animation-D1MS5Ace.d.cts} +1 -1
- package/dist/{tool-loading-animation-BvdaZfwh.d.ts → tool-loading-animation-D1MS5Ace.d.ts} +1 -1
- package/dist/{turn-activity-ui-BYBlInZQ.d.cts → turn-activity-ui-CorwdlI0.d.cts} +2 -2
- package/dist/{turn-activity-ui-BYBlInZQ.d.ts → turn-activity-ui-CorwdlI0.d.ts} +2 -2
- package/dist/turn-activity-ui.d.cts +1 -1
- package/dist/turn-activity-ui.d.ts +1 -1
- package/dist/{types-CiXi4ICM.d.cts → types-CSXHl5cN.d.cts} +5 -0
- package/dist/{types-CiXi4ICM.d.ts → types-CSXHl5cN.d.ts} +5 -0
- package/dist/voice-client-tools.d.cts +1 -1
- package/dist/voice-client-tools.d.ts +1 -1
- package/dist/voice-runtime.cjs +1 -1
- package/dist/voice-runtime.d.cts +2 -2
- package/dist/voice-runtime.d.ts +2 -2
- package/dist/voice-runtime.js +1 -1
- package/dist/voice-worklet-player.d.cts +2 -2
- package/dist/voice-worklet-player.d.ts +2 -2
- package/dist/{webmcp-runtime-entry-BTbOg3Au.d.cts → webmcp-runtime-entry-DpDN6k-6.d.cts} +1 -1
- package/dist/{webmcp-runtime-entry-BTbOg3Au.d.ts → webmcp-runtime-entry-DpDN6k-6.d.ts} +1 -1
- package/dist/webmcp-runtime.d.cts +1 -1
- package/dist/webmcp-runtime.d.ts +1 -1
- package/package.json +2 -2
- package/src/index-core.ts +1 -0
- package/src/markdown-parsers-eager.ts +2 -1
- package/src/markdown-parsers-entry.ts +1 -0
- package/src/markdown-parsers-loader.ts +2 -0
- package/src/postprocessors.ts +14 -0
- package/src/session.ts +3 -0
- package/src/types.ts +5 -0
- package/src/ui.background-conversations.test.ts +6 -0
- package/src/ui.page-cache.test.ts +268 -0
- package/src/ui.postprocess.test.ts +80 -1
- package/src/ui.ts +95 -27
- package/src/utils/actions.ts +3 -0
- package/src/utils/streaming-markdown.test.ts +103 -0
- package/src/utils/streaming-markdown.ts +186 -0
- package/dist/chunk-18tPmsiJ.js +0 -1
- package/dist/chunk-Dp2vWE9V.js +0 -1
- package/dist/chunk-VloQ2dnh.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{n as e}from"./chunk-BnfM7-qg.js";import{t}from"./chunk-CnxIZOzx.js";import{_ as n,a as r,d as i,f as a,h as o,l as s,n as c,t as l,u,v as d}from"./chunk-Dp2vWE9V.js";import{i as f,n as p,t as m}from"./chunk-D5BxWOFB.js";import{n as h}from"./chunk-CNhThrLX.js";import{r as g,t as _}from"./chunk-Cve3IfG4.js";import{Check as v,ChevronDown as y,FileText as ee,Maximize as b,Minimize as x}from"lucide";var S=`[data-persona-root] .persona-artifact-split-root{gap:var(--persona-artifact-split-gap,.5rem)}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-icon-btn{padding:var(--persona-artifact-toolbar-icon-padding,.25rem);border-radius:var(--persona-artifact-toolbar-icon-radius,var(--persona-radius-md,.375rem));border:var(--persona-artifact-toolbar-icon-border,1px solid var(--persona-border,#e5e7eb));background:var(--persona-artifact-toolbar-icon-bg,var(--persona-surface,#fff));color:var(--persona-artifact-doc-toolbar-icon-color,var(--persona-text,#111827));cursor:pointer;justify-content:center;align-items:center;line-height:1;display:inline-flex}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn:hover,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-icon-btn:hover{color:var(--persona-artifact-toolbar-icon-hover-color,inherit);background:var(--persona-artifact-toolbar-icon-hover-bg,var(--persona-icon-btn-hover-bg,var(--persona-container,#f3f4f6)))}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn[aria-pressed=true],[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-icon-btn[aria-pressed=true]{background:var(--persona-artifact-doc-toggle-active-bg,var(--persona-icon-btn-active-bg,var(--persona-container,#f3f4f6)));border-color:var(--persona-artifact-doc-toggle-active-border,var(--persona-icon-btn-active-border,var(--persona-border,#e5e7eb)));color:var(--persona-artifact-doc-toggle-active-color,var(--persona-artifact-doc-toolbar-icon-color,var(--persona-text,#111827)))}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-copy-btn,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-copy-btn{padding:var(--persona-artifact-toolbar-copy-padding,.25rem .5rem);border-radius:var(--persona-artifact-toolbar-copy-radius,var(--persona-radius-md,.375rem));border:var(--persona-artifact-toolbar-copy-border,1px solid var(--persona-border,#e5e7eb));background:var(--persona-artifact-toolbar-copy-bg,var(--persona-surface,#fff));color:var(--persona-artifact-toolbar-copy-color,var(--persona-artifact-doc-toolbar-icon-color,var(--persona-text,#111827)));cursor:pointer;align-items:center;gap:.35rem;font-size:.75rem;line-height:1.25;display:inline-flex}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-copy-btn:hover,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-copy-btn:hover{background:var(--persona-artifact-toolbar-icon-hover-bg,var(--persona-icon-btn-hover-bg,var(--persona-container,#f3f4f6)))}[data-persona-root] .persona-artifact-toolbar-document .persona-split-btn,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-split-btn{--persona-split-radius:var(--persona-artifact-toolbar-copy-radius,var(--persona-radius-md,.375rem));border:var(--persona-artifact-toolbar-copy-border,1px solid var(--persona-border,#e5e7eb));background:var(--persona-artifact-toolbar-copy-bg,var(--persona-surface,#fff))}[data-persona-root] .persona-artifact-tab{background:var(--persona-artifact-tab-bg,transparent);border-radius:var(--persona-artifact-tab-radius,.5rem);color:var(--persona-artifact-tab-color,inherit);white-space:nowrap;max-width:var(--persona-artifact-tab-max-width,12rem);text-overflow:ellipsis;overflow:hidden}[data-persona-root] .persona-artifact-tab.persona-bg-persona-container{background:var(--persona-artifact-tab-active-bg,var(--persona-container,#f3f4f6));border-color:var(--persona-artifact-tab-active-border,var(--persona-border,#e5e7eb))}[data-persona-root] .persona-artifact-toolbar{background:var(--persona-artifact-toolbar-bg,var(--persona-surface,#fff))}[data-persona-root] .persona-artifact-tab:hover{background:var(--persona-artifact-tab-hover-bg,var(--persona-container,#f3f4f6))}[data-persona-root] .persona-artifact-tab:focus-visible{outline:2px solid var(--persona-accent,#171717);outline-offset:2px}[data-persona-root] .persona-artifact-list{background:var(--persona-artifact-tab-list-bg,transparent);border-bottom-color:var(--persona-artifact-tab-list-border-color,var(--persona-border,#e5e7eb));padding:var(--persona-artifact-tab-list-padding,.5rem);scrollbar-width:thin;scroll-behavior:smooth}[data-persona-root] .persona-artifact-list::-webkit-scrollbar{height:6px}[data-persona-root] .persona-artifact-list::-webkit-scrollbar-thumb{background:var(--persona-artifact-tab-list-scrollbar,var(--persona-scrollbar-thumb,var(--persona-border,#e5e7eb)));border-radius:9999px}[data-persona-root] .persona-artifact-toolbar-document{border-bottom:var(--persona-artifact-toolbar-border,1px solid var(--persona-border,#e5e7eb))}[data-persona-root] .persona-artifact-card{background:var(--persona-artifact-card-bg,var(--persona-surface,#fff));border:var(--persona-artifact-card-border,1px solid var(--persona-border,#e5e7eb));border-radius:var(--persona-artifact-card-radius,var(--persona-message-assistant-radius,var(--persona-radius-lg,.5rem)));cursor:pointer;transition:background-color .15s,border-color .15s}[data-persona-root] .persona-artifact-card:hover{background:var(--persona-artifact-card-hover-bg,#f3f4f6);border-color:var(--persona-artifact-card-hover-border,var(--persona-border,#e5e7eb))}[data-persona-root] .persona-artifact-card:focus-visible{outline:2px solid var(--persona-accent,#171717);outline-offset:2px}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group{gap:var(--persona-artifact-toolbar-toggle-group-gap,2px);padding:var(--persona-artifact-toolbar-toggle-group-padding,2px);border:var(--persona-artifact-toolbar-toggle-group-border,1px solid var(--persona-border,#e5e7eb));border-radius:var(--persona-artifact-toolbar-toggle-group-radius,var(--persona-artifact-toolbar-icon-radius,var(--persona-icon-btn-radius,var(--persona-radius-md,.375rem))));background:var(--persona-artifact-toolbar-toggle-group-bg,var(--persona-surface,#fff))}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn{padding:calc(var(--persona-artifact-toolbar-icon-padding,var(--persona-icon-btn-padding,.25rem)) - var(--persona-artifact-toolbar-toggle-group-padding,2px));border-radius:var(--persona-artifact-toolbar-toggle-radius,calc(var(--persona-artifact-toolbar-icon-radius,var(--persona-icon-btn-radius,var(--persona-radius-md,.375rem))) - 2px));background:0 0;border:none}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn:hover{background:var(--persona-artifact-toolbar-icon-hover-bg,var(--persona-icon-btn-hover-bg,var(--persona-container,#f3f4f6)))}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn[aria-pressed=true]{background:var(--persona-artifact-doc-toggle-active-bg,var(--persona-icon-btn-active-bg,var(--persona-container,#f3f4f6)));box-shadow:inset 0 0 0 1px var(--persona-artifact-doc-toggle-active-border,transparent);color:var(--persona-artifact-doc-toggle-active-color,var(--persona-artifact-doc-toolbar-icon-color,var(--persona-text,#111827)))}@supports selector(:has(*)){[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group{position:relative}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group:before{content:"";top:var(--persona-artifact-toolbar-toggle-group-padding,2px);bottom:var(--persona-artifact-toolbar-toggle-group-padding,2px);left:var(--persona-artifact-toolbar-toggle-group-padding,2px);width:calc(50% - var(--persona-artifact-toolbar-toggle-group-padding,2px) - (var(--persona-artifact-toolbar-toggle-group-gap,2px) / 2));border-radius:var(--persona-artifact-toolbar-toggle-radius,calc(var(--persona-artifact-toolbar-icon-radius,var(--persona-icon-btn-radius,var(--persona-radius-md,.375rem))) - 2px));background:var(--persona-artifact-doc-toggle-active-bg,var(--persona-icon-btn-active-bg,var(--persona-container,#f3f4f6)));box-shadow:inset 0 0 0 1px var(--persona-artifact-doc-toggle-active-border,transparent);pointer-events:none;transition:transform .18s;position:absolute}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group:has(>.persona-icon-btn:last-child[aria-pressed=true]):before{transform:translateX(calc(100% + var(--persona-artifact-toolbar-toggle-group-gap,2px)))}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn{position:relative}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn[aria-pressed=true]{box-shadow:none;background:0 0}@media (prefers-reduced-motion:reduce){[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group:before{transition:none}}}[data-persona-root].persona-artifact-narrow-host .persona-artifact-split-handle{display:none!important}@media (max-width:640px){[data-persona-root] .persona-artifact-split-handle{display:none!important}}@media (min-width:641px){[data-persona-root] .persona-artifact-pane{width:var(--persona-artifact-pane-width,40%);max-width:var(--persona-artifact-pane-max-width,28rem);min-width:var(--persona-artifact-pane-min-width,0);box-shadow:var(--persona-artifact-pane-shadow,none);flex-shrink:0}[data-persona-root].persona-artifact-expanded .persona-artifact-split-root>:first-child{display:none}[data-persona-root].persona-artifact-expanded .persona-artifact-pane{width:100%;max-width:none}[data-persona-root].persona-artifact-expanded .persona-artifact-split-handle{display:none!important}}@media (max-width:640px){[data-persona-root] .persona-artifact-expand-btn{display:none!important}}[data-persona-root].persona-artifact-narrow-host .persona-artifact-expand-btn{display:none!important}[data-persona-root] .persona-artifact-frame{background:var(--persona-artifact-frame-bg,#fff);width:100%;height:100%;position:relative}[data-persona-root] .persona-artifact-iframe{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--persona-artifact-frame-bg,#fff);border:0;width:100%;height:100%;display:block}[data-persona-root] .persona-artifact-frame-loading{background:var(--persona-artifact-frame-bg,#fff);opacity:1;transition:opacity var(--persona-artifact-frame-loading-fade,.2s) ease;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}[data-persona-root] .persona-artifact-frame-loading--out{opacity:0}[data-persona-root] .persona-artifact-frame-loading-indicator{flex-direction:column;align-items:center;gap:.625rem;display:flex}[data-persona-root] .persona-artifact-frame-loading-text{color:var(--persona-artifact-frame-loading-color,var(--persona-text-muted,#6b7280));opacity:0;font-size:.8125rem;font-weight:500;transition:opacity .24s}[data-persona-root] .persona-artifact-frame-loading-text--visible{opacity:1}@media (prefers-reduced-motion:reduce){[data-persona-root] .persona-artifact-frame-loading-text{transition:none}}[data-persona-root] .persona-artifact-content{width:100%;min-width:0;max-width:100%}[data-persona-root] .persona-artifact-content>.persona-artifact-preview-body>*{min-width:0;max-width:100%}[data-persona-root] .persona-artifact-preview-body{display:contents}[data-persona-root] .persona-artifact-content-flush{padding:0}[data-persona-root] .persona-artifact-content-flush .persona-code-pre{border-radius:0;min-height:100%;padding:.5rem .75rem .5rem 0}[data-persona-root] .persona-artifact-inline{border:var(--persona-artifact-inline-border,1px solid var(--persona-border,#e5e7eb));border-radius:var(--persona-artifact-inline-radius,var(--persona-message-assistant-radius,var(--persona-radius-lg,.5rem)));background:var(--persona-artifact-inline-bg,var(--persona-surface,#fff));overflow:hidden}[data-persona-root] .persona-artifact-inline.persona-artifact-inline--card{background:0 0;border:none;border-radius:0;overflow:visible}[data-persona-root] .persona-artifact-inline-chrome{background:var(--persona-artifact-inline-chrome-bg,var(--persona-surface,#fff));border-bottom:1px solid var(--persona-artifact-inline-chrome-border,var(--persona-border,#e5e7eb));align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}[data-persona-root] .persona-artifact-inline-chrome-lead{min-width:0;color:var(--persona-artifact-inline-title-color,var(--persona-text,#111827));flex:auto;align-items:center;gap:.5rem;font-size:.8125rem;font-weight:500;display:flex}[data-persona-root] .persona-artifact-inline-chrome-lead .persona-artifact-inline-type,[data-persona-root] .persona-artifact-inline-chrome-lead .persona-artifact-inline-status{color:var(--persona-artifact-inline-muted-color,var(--persona-text-muted,#6b7280));font-weight:400}[data-persona-root] .persona-artifact-inline-chrome-lead .persona-artifact-inline-status{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}[data-persona-root] .persona-artifact-status-detail{color:var(--persona-artifact-inline-muted-color,var(--persona-text-muted,#6b7280));font-variant-numeric:tabular-nums;margin-left:.375rem}[data-persona-root] .persona-artifact-inline-chrome-actions{flex:none;align-items:center;gap:.25rem;display:flex}[data-persona-root] .persona-artifact-inline-body{padding:.75rem}[data-persona-root] .persona-artifact-inline .persona-artifact-frame{height:var(--persona-artifact-inline-body-height,var(--persona-artifact-inline-frame-height,320px))}[data-persona-root] .persona-artifact-inline-body.persona-artifact-content-flush{padding:0}[data-persona-root] .persona-artifact-inline-body--sized{height:var(--persona-artifact-inline-body-height,auto)}[data-persona-root] .persona-artifact-inline-body--sized .persona-artifact-source-window--fixed,[data-persona-root] .persona-artifact-inline-body--sized .persona-artifact-frame{height:100%}[data-persona-root] .persona-artifact-inline-body--sized .persona-artifact-status-view{min-height:100%}[data-persona-root] .persona-artifact-source-window{min-width:0}[data-persona-root] .persona-artifact-source-window--fixed{overflow-y:auto}[data-persona-root] .persona-artifact-source-window--clip{overflow:hidden}[data-persona-root] .persona-artifact-fade-top:not(.persona-artifact-fade-bottom){-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px));-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px));mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px))}[data-persona-root] .persona-artifact-fade-bottom:not(.persona-artifact-fade-top){-webkit-mask-image:linear-gradient(to top, transparent 0, #000 var(--persona-artifact-fade-size,40px));-webkit-mask-image:linear-gradient(to top, transparent 0, #000 var(--persona-artifact-fade-size,40px));mask-image:linear-gradient(to top, transparent 0, #000 var(--persona-artifact-fade-size,40px))}[data-persona-root] .persona-artifact-fade-top.persona-artifact-fade-bottom{-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px), #000 calc(100% - var(--persona-artifact-fade-size,40px)), transparent 100%);-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px), #000 calc(100% - var(--persona-artifact-fade-size,40px)), transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px), #000 calc(100% - var(--persona-artifact-fade-size,40px)), transparent 100%)}[data-persona-root] .persona-artifact-tab-fade-start:not(.persona-artifact-tab-fade-end){-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px));-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px));mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px))}[data-persona-root] .persona-artifact-tab-fade-end:not(.persona-artifact-tab-fade-start){-webkit-mask-image:linear-gradient(to left, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px));-webkit-mask-image:linear-gradient(to left, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px));mask-image:linear-gradient(to left, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px))}[data-persona-root] .persona-artifact-tab-fade-start.persona-artifact-tab-fade-end{-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px), #000 calc(100% - var(--persona-artifact-tab-fade-size,24px)), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px), #000 calc(100% - var(--persona-artifact-tab-fade-size,24px)), transparent 100%);mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px), #000 calc(100% - var(--persona-artifact-tab-fade-size,24px)), transparent 100%)}[data-persona-root] .persona-artifact-status-view{min-height:var(--persona-artifact-inline-body-height,160px);justify-content:center;align-items:center;display:flex}[data-persona-root] .persona-artifact-inline-body--cap{max-height:var(--persona-artifact-inline-body-height,none);overflow-y:auto}[data-persona-root] .persona-artifact-pane{border-radius:var(--persona-artifact-pane-radius,0);background-color:var(--persona-artifact-pane-bg,var(--persona-components-artifact-pane-background,var(--persona-surface,#fff)));overflow:hidden}[data-persona-root].persona-artifact-appearance-seamless .persona-artifact-split-root{position:relative;gap:0!important}[data-persona-root].persona-artifact-appearance-seamless .persona-artifact-pane{background-color:var(--persona-artifact-pane-bg,var(--persona-components-artifact-pane-background,var(--persona-container,#f8fafc)));box-shadow:none!important;border-left-width:0!important;border-left-color:#0000!important}[data-persona-root].persona-artifact-border-full .persona-artifact-pane{border:var(--persona-artifact-pane-border)!important}[data-persona-root].persona-artifact-border-left .persona-artifact-pane{border-top:none!important;border-bottom:none!important;border-right:none!important;border-left:var(--persona-artifact-pane-border-left)!important}[data-persona-root].persona-artifact-appearance-seamless.persona-artifact-border-left .persona-artifact-pane{border-left:var(--persona-artifact-pane-border-left)!important}[data-persona-root].persona-artifact-appearance-seamless.persona-artifact-border-full .persona-artifact-pane{border:var(--persona-artifact-pane-border)!important}[data-persona-root].persona-artifact-appearance-detached .persona-artifact-split-root{background:var(--persona-panel-canvas-bg)}@media (min-width:641px){[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-appearance-detached .persona-artifact-pane{border-radius:var(--persona-artifact-pane-radius,var(--persona-panel-radius,var(--persona-radius-xl,.75rem)));border:var(--persona-panel-border,1px solid var(--persona-border,#e5e7eb));box-shadow:var(--persona-artifact-pane-shadow,var(--persona-panel-shadow,var(--persona-palette-shadows-xl,0 25px 50px -12px #00000040)))}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-chat-flush .persona-artifact-pane{margin-top:var(--persona-panel-inset);margin-right:var(--persona-panel-inset);margin-bottom:var(--persona-panel-inset)}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-welded-split .persona-artifact-split-root{position:relative}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-welded-split .persona-widget-container{overflow:hidden;border-top-right-radius:0!important;border-bottom-right-radius:0!important}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-welded-split .persona-artifact-pane{overflow:hidden;border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:var(--persona-artifact-welded-outer-radius,var(--persona-panel-radius,var(--persona-radius-xl,.75rem)))!important;border-bottom-right-radius:var(--persona-artifact-welded-outer-radius,var(--persona-panel-radius,var(--persona-radius-xl,.75rem)))!important}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-welded-split.persona-artifact-appearance-panel .persona-artifact-pane{border-left:1px solid var(--persona-border,#e5e7eb)}}[data-persona-root].persona-artifact-narrow-host .persona-artifact-backdrop{z-index:55!important;position:absolute!important;inset:0!important}@media (min-width:641px){[data-persona-root].persona-artifact-narrow-host .persona-artifact-pane{z-index:60;transition:transform .2s;position:absolute;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001f;width:min(100%, var(--persona-artifact-drawer-width,min(calc(100% - 1rem), 22rem)))!important;max-width:var(--persona-artifact-drawer-width,22rem)!important}[data-persona-root].persona-artifact-narrow-host .persona-artifact-pane.persona-artifact-drawer-open{transform:translate(0)}}@media (max-width:640px){[data-persona-root] .persona-artifact-pane{width:min(100vw, var(--persona-artifact-drawer-width,min(100vw - 1.5rem, 22rem)));z-index:60;transition:transform .2s;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001f}[data-persona-root] .persona-artifact-pane.persona-artifact-drawer-open{transform:translate(0)}}`;const C=e=>h(e,`artifacts`,S);function w(e){let t=String(e).split(/[\\/]/);return t[t.length-1]??``}function T(e){let t=w(e),n=t.lastIndexOf(`.`);return n<=0?``:t.slice(n+1).toLowerCase()}function E(e){if(typeof e!=`string`)return``;let t=e.indexOf(`
|
|
1
|
+
import{n as e}from"./chunk-BnfM7-qg.js";import{t}from"./chunk-CnxIZOzx.js";import{a as n,d as r,g as i,l as a,n as o,p as s,t as c,u as l,v as u,y as d}from"./chunk-C2IbR39s.js";import{i as f,n as p,t as m}from"./chunk-D5BxWOFB.js";import{n as h}from"./chunk-CNhThrLX.js";import{r as g,t as _}from"./chunk-Cve3IfG4.js";import{Check as v,ChevronDown as y,FileText as ee,Maximize as b,Minimize as x}from"lucide";var S=`[data-persona-root] .persona-artifact-split-root{gap:var(--persona-artifact-split-gap,.5rem)}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-icon-btn{padding:var(--persona-artifact-toolbar-icon-padding,.25rem);border-radius:var(--persona-artifact-toolbar-icon-radius,var(--persona-radius-md,.375rem));border:var(--persona-artifact-toolbar-icon-border,1px solid var(--persona-border,#e5e7eb));background:var(--persona-artifact-toolbar-icon-bg,var(--persona-surface,#fff));color:var(--persona-artifact-doc-toolbar-icon-color,var(--persona-text,#111827));cursor:pointer;justify-content:center;align-items:center;line-height:1;display:inline-flex}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn:hover,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-icon-btn:hover{color:var(--persona-artifact-toolbar-icon-hover-color,inherit);background:var(--persona-artifact-toolbar-icon-hover-bg,var(--persona-icon-btn-hover-bg,var(--persona-container,#f3f4f6)))}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn[aria-pressed=true],[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-icon-btn[aria-pressed=true]{background:var(--persona-artifact-doc-toggle-active-bg,var(--persona-icon-btn-active-bg,var(--persona-container,#f3f4f6)));border-color:var(--persona-artifact-doc-toggle-active-border,var(--persona-icon-btn-active-border,var(--persona-border,#e5e7eb)));color:var(--persona-artifact-doc-toggle-active-color,var(--persona-artifact-doc-toolbar-icon-color,var(--persona-text,#111827)))}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-copy-btn,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-copy-btn{padding:var(--persona-artifact-toolbar-copy-padding,.25rem .5rem);border-radius:var(--persona-artifact-toolbar-copy-radius,var(--persona-radius-md,.375rem));border:var(--persona-artifact-toolbar-copy-border,1px solid var(--persona-border,#e5e7eb));background:var(--persona-artifact-toolbar-copy-bg,var(--persona-surface,#fff));color:var(--persona-artifact-toolbar-copy-color,var(--persona-artifact-doc-toolbar-icon-color,var(--persona-text,#111827)));cursor:pointer;align-items:center;gap:.35rem;font-size:.75rem;line-height:1.25;display:inline-flex}[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-copy-btn:hover,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-artifact-doc-copy-btn:hover{background:var(--persona-artifact-toolbar-icon-hover-bg,var(--persona-icon-btn-hover-bg,var(--persona-container,#f3f4f6)))}[data-persona-root] .persona-artifact-toolbar-document .persona-split-btn,[data-persona-root] .persona-artifact-inline-chrome-actions .persona-split-btn{--persona-split-radius:var(--persona-artifact-toolbar-copy-radius,var(--persona-radius-md,.375rem));border:var(--persona-artifact-toolbar-copy-border,1px solid var(--persona-border,#e5e7eb));background:var(--persona-artifact-toolbar-copy-bg,var(--persona-surface,#fff))}[data-persona-root] .persona-artifact-tab{background:var(--persona-artifact-tab-bg,transparent);border-radius:var(--persona-artifact-tab-radius,.5rem);color:var(--persona-artifact-tab-color,inherit);white-space:nowrap;max-width:var(--persona-artifact-tab-max-width,12rem);text-overflow:ellipsis;overflow:hidden}[data-persona-root] .persona-artifact-tab.persona-bg-persona-container{background:var(--persona-artifact-tab-active-bg,var(--persona-container,#f3f4f6));border-color:var(--persona-artifact-tab-active-border,var(--persona-border,#e5e7eb))}[data-persona-root] .persona-artifact-toolbar{background:var(--persona-artifact-toolbar-bg,var(--persona-surface,#fff))}[data-persona-root] .persona-artifact-tab:hover{background:var(--persona-artifact-tab-hover-bg,var(--persona-container,#f3f4f6))}[data-persona-root] .persona-artifact-tab:focus-visible{outline:2px solid var(--persona-accent,#171717);outline-offset:2px}[data-persona-root] .persona-artifact-list{background:var(--persona-artifact-tab-list-bg,transparent);border-bottom-color:var(--persona-artifact-tab-list-border-color,var(--persona-border,#e5e7eb));padding:var(--persona-artifact-tab-list-padding,.5rem);scrollbar-width:thin;scroll-behavior:smooth}[data-persona-root] .persona-artifact-list::-webkit-scrollbar{height:6px}[data-persona-root] .persona-artifact-list::-webkit-scrollbar-thumb{background:var(--persona-artifact-tab-list-scrollbar,var(--persona-scrollbar-thumb,var(--persona-border,#e5e7eb)));border-radius:9999px}[data-persona-root] .persona-artifact-toolbar-document{border-bottom:var(--persona-artifact-toolbar-border,1px solid var(--persona-border,#e5e7eb))}[data-persona-root] .persona-artifact-card{background:var(--persona-artifact-card-bg,var(--persona-surface,#fff));border:var(--persona-artifact-card-border,1px solid var(--persona-border,#e5e7eb));border-radius:var(--persona-artifact-card-radius,var(--persona-message-assistant-radius,var(--persona-radius-lg,.5rem)));cursor:pointer;transition:background-color .15s,border-color .15s}[data-persona-root] .persona-artifact-card:hover{background:var(--persona-artifact-card-hover-bg,#f3f4f6);border-color:var(--persona-artifact-card-hover-border,var(--persona-border,#e5e7eb))}[data-persona-root] .persona-artifact-card:focus-visible{outline:2px solid var(--persona-accent,#171717);outline-offset:2px}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group{gap:var(--persona-artifact-toolbar-toggle-group-gap,2px);padding:var(--persona-artifact-toolbar-toggle-group-padding,2px);border:var(--persona-artifact-toolbar-toggle-group-border,1px solid var(--persona-border,#e5e7eb));border-radius:var(--persona-artifact-toolbar-toggle-group-radius,var(--persona-artifact-toolbar-icon-radius,var(--persona-icon-btn-radius,var(--persona-radius-md,.375rem))));background:var(--persona-artifact-toolbar-toggle-group-bg,var(--persona-surface,#fff))}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn{padding:calc(var(--persona-artifact-toolbar-icon-padding,var(--persona-icon-btn-padding,.25rem)) - var(--persona-artifact-toolbar-toggle-group-padding,2px));border-radius:var(--persona-artifact-toolbar-toggle-radius,calc(var(--persona-artifact-toolbar-icon-radius,var(--persona-icon-btn-radius,var(--persona-radius-md,.375rem))) - 2px));background:0 0;border:none}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn:hover{background:var(--persona-artifact-toolbar-icon-hover-bg,var(--persona-icon-btn-hover-bg,var(--persona-container,#f3f4f6)))}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn[aria-pressed=true]{background:var(--persona-artifact-doc-toggle-active-bg,var(--persona-icon-btn-active-bg,var(--persona-container,#f3f4f6)));box-shadow:inset 0 0 0 1px var(--persona-artifact-doc-toggle-active-border,transparent);color:var(--persona-artifact-doc-toggle-active-color,var(--persona-artifact-doc-toolbar-icon-color,var(--persona-text,#111827)))}@supports selector(:has(*)){[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group{position:relative}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group:before{content:"";top:var(--persona-artifact-toolbar-toggle-group-padding,2px);bottom:var(--persona-artifact-toolbar-toggle-group-padding,2px);left:var(--persona-artifact-toolbar-toggle-group-padding,2px);width:calc(50% - var(--persona-artifact-toolbar-toggle-group-padding,2px) - (var(--persona-artifact-toolbar-toggle-group-gap,2px) / 2));border-radius:var(--persona-artifact-toolbar-toggle-radius,calc(var(--persona-artifact-toolbar-icon-radius,var(--persona-icon-btn-radius,var(--persona-radius-md,.375rem))) - 2px));background:var(--persona-artifact-doc-toggle-active-bg,var(--persona-icon-btn-active-bg,var(--persona-container,#f3f4f6)));box-shadow:inset 0 0 0 1px var(--persona-artifact-doc-toggle-active-border,transparent);pointer-events:none;transition:transform .18s;position:absolute}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group:has(>.persona-icon-btn:last-child[aria-pressed=true]):before{transform:translateX(calc(100% + var(--persona-artifact-toolbar-toggle-group-gap,2px)))}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn{position:relative}[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group>.persona-icon-btn[aria-pressed=true]{box-shadow:none;background:0 0}@media (prefers-reduced-motion:reduce){[data-persona-root] .persona-toggle-group.persona-artifact-toggle-group:before{transition:none}}}[data-persona-root].persona-artifact-narrow-host .persona-artifact-split-handle{display:none!important}@media (max-width:640px){[data-persona-root] .persona-artifact-split-handle{display:none!important}}@media (min-width:641px){[data-persona-root] .persona-artifact-pane{width:var(--persona-artifact-pane-width,40%);max-width:var(--persona-artifact-pane-max-width,28rem);min-width:var(--persona-artifact-pane-min-width,0);box-shadow:var(--persona-artifact-pane-shadow,none);flex-shrink:0}[data-persona-root].persona-artifact-expanded .persona-artifact-split-root>:first-child{display:none}[data-persona-root].persona-artifact-expanded .persona-artifact-pane{width:100%;max-width:none}[data-persona-root].persona-artifact-expanded .persona-artifact-split-handle{display:none!important}}@media (max-width:640px){[data-persona-root] .persona-artifact-expand-btn{display:none!important}}[data-persona-root].persona-artifact-narrow-host .persona-artifact-expand-btn{display:none!important}[data-persona-root] .persona-artifact-frame{background:var(--persona-artifact-frame-bg,#fff);width:100%;height:100%;position:relative}[data-persona-root] .persona-artifact-iframe{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--persona-artifact-frame-bg,#fff);border:0;width:100%;height:100%;display:block}[data-persona-root] .persona-artifact-frame-loading{background:var(--persona-artifact-frame-bg,#fff);opacity:1;transition:opacity var(--persona-artifact-frame-loading-fade,.2s) ease;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}[data-persona-root] .persona-artifact-frame-loading--out{opacity:0}[data-persona-root] .persona-artifact-frame-loading-indicator{flex-direction:column;align-items:center;gap:.625rem;display:flex}[data-persona-root] .persona-artifact-frame-loading-text{color:var(--persona-artifact-frame-loading-color,var(--persona-text-muted,#6b7280));opacity:0;font-size:.8125rem;font-weight:500;transition:opacity .24s}[data-persona-root] .persona-artifact-frame-loading-text--visible{opacity:1}@media (prefers-reduced-motion:reduce){[data-persona-root] .persona-artifact-frame-loading-text{transition:none}}[data-persona-root] .persona-artifact-content{width:100%;min-width:0;max-width:100%}[data-persona-root] .persona-artifact-content>.persona-artifact-preview-body>*{min-width:0;max-width:100%}[data-persona-root] .persona-artifact-preview-body{display:contents}[data-persona-root] .persona-artifact-content-flush{padding:0}[data-persona-root] .persona-artifact-content-flush .persona-code-pre{border-radius:0;min-height:100%;padding:.5rem .75rem .5rem 0}[data-persona-root] .persona-artifact-inline{border:var(--persona-artifact-inline-border,1px solid var(--persona-border,#e5e7eb));border-radius:var(--persona-artifact-inline-radius,var(--persona-message-assistant-radius,var(--persona-radius-lg,.5rem)));background:var(--persona-artifact-inline-bg,var(--persona-surface,#fff));overflow:hidden}[data-persona-root] .persona-artifact-inline.persona-artifact-inline--card{background:0 0;border:none;border-radius:0;overflow:visible}[data-persona-root] .persona-artifact-inline-chrome{background:var(--persona-artifact-inline-chrome-bg,var(--persona-surface,#fff));border-bottom:1px solid var(--persona-artifact-inline-chrome-border,var(--persona-border,#e5e7eb));align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}[data-persona-root] .persona-artifact-inline-chrome-lead{min-width:0;color:var(--persona-artifact-inline-title-color,var(--persona-text,#111827));flex:auto;align-items:center;gap:.5rem;font-size:.8125rem;font-weight:500;display:flex}[data-persona-root] .persona-artifact-inline-chrome-lead .persona-artifact-inline-type,[data-persona-root] .persona-artifact-inline-chrome-lead .persona-artifact-inline-status{color:var(--persona-artifact-inline-muted-color,var(--persona-text-muted,#6b7280));font-weight:400}[data-persona-root] .persona-artifact-inline-chrome-lead .persona-artifact-inline-status{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}[data-persona-root] .persona-artifact-status-detail{color:var(--persona-artifact-inline-muted-color,var(--persona-text-muted,#6b7280));font-variant-numeric:tabular-nums;margin-left:.375rem}[data-persona-root] .persona-artifact-inline-chrome-actions{flex:none;align-items:center;gap:.25rem;display:flex}[data-persona-root] .persona-artifact-inline-body{padding:.75rem}[data-persona-root] .persona-artifact-inline .persona-artifact-frame{height:var(--persona-artifact-inline-body-height,var(--persona-artifact-inline-frame-height,320px))}[data-persona-root] .persona-artifact-inline-body.persona-artifact-content-flush{padding:0}[data-persona-root] .persona-artifact-inline-body--sized{height:var(--persona-artifact-inline-body-height,auto)}[data-persona-root] .persona-artifact-inline-body--sized .persona-artifact-source-window--fixed,[data-persona-root] .persona-artifact-inline-body--sized .persona-artifact-frame{height:100%}[data-persona-root] .persona-artifact-inline-body--sized .persona-artifact-status-view{min-height:100%}[data-persona-root] .persona-artifact-source-window{min-width:0}[data-persona-root] .persona-artifact-source-window--fixed{overflow-y:auto}[data-persona-root] .persona-artifact-source-window--clip{overflow:hidden}[data-persona-root] .persona-artifact-fade-top:not(.persona-artifact-fade-bottom){-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px));-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px));mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px))}[data-persona-root] .persona-artifact-fade-bottom:not(.persona-artifact-fade-top){-webkit-mask-image:linear-gradient(to top, transparent 0, #000 var(--persona-artifact-fade-size,40px));-webkit-mask-image:linear-gradient(to top, transparent 0, #000 var(--persona-artifact-fade-size,40px));mask-image:linear-gradient(to top, transparent 0, #000 var(--persona-artifact-fade-size,40px))}[data-persona-root] .persona-artifact-fade-top.persona-artifact-fade-bottom{-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px), #000 calc(100% - var(--persona-artifact-fade-size,40px)), transparent 100%);-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px), #000 calc(100% - var(--persona-artifact-fade-size,40px)), transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, #000 var(--persona-artifact-fade-size,40px), #000 calc(100% - var(--persona-artifact-fade-size,40px)), transparent 100%)}[data-persona-root] .persona-artifact-tab-fade-start:not(.persona-artifact-tab-fade-end){-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px));-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px));mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px))}[data-persona-root] .persona-artifact-tab-fade-end:not(.persona-artifact-tab-fade-start){-webkit-mask-image:linear-gradient(to left, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px));-webkit-mask-image:linear-gradient(to left, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px));mask-image:linear-gradient(to left, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px))}[data-persona-root] .persona-artifact-tab-fade-start.persona-artifact-tab-fade-end{-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px), #000 calc(100% - var(--persona-artifact-tab-fade-size,24px)), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px), #000 calc(100% - var(--persona-artifact-tab-fade-size,24px)), transparent 100%);mask-image:linear-gradient(to right, transparent 0, #000 var(--persona-artifact-tab-fade-size,24px), #000 calc(100% - var(--persona-artifact-tab-fade-size,24px)), transparent 100%)}[data-persona-root] .persona-artifact-status-view{min-height:var(--persona-artifact-inline-body-height,160px);justify-content:center;align-items:center;display:flex}[data-persona-root] .persona-artifact-inline-body--cap{max-height:var(--persona-artifact-inline-body-height,none);overflow-y:auto}[data-persona-root] .persona-artifact-pane{border-radius:var(--persona-artifact-pane-radius,0);background-color:var(--persona-artifact-pane-bg,var(--persona-components-artifact-pane-background,var(--persona-surface,#fff)));overflow:hidden}[data-persona-root].persona-artifact-appearance-seamless .persona-artifact-split-root{position:relative;gap:0!important}[data-persona-root].persona-artifact-appearance-seamless .persona-artifact-pane{background-color:var(--persona-artifact-pane-bg,var(--persona-components-artifact-pane-background,var(--persona-container,#f8fafc)));box-shadow:none!important;border-left-width:0!important;border-left-color:#0000!important}[data-persona-root].persona-artifact-border-full .persona-artifact-pane{border:var(--persona-artifact-pane-border)!important}[data-persona-root].persona-artifact-border-left .persona-artifact-pane{border-top:none!important;border-bottom:none!important;border-right:none!important;border-left:var(--persona-artifact-pane-border-left)!important}[data-persona-root].persona-artifact-appearance-seamless.persona-artifact-border-left .persona-artifact-pane{border-left:var(--persona-artifact-pane-border-left)!important}[data-persona-root].persona-artifact-appearance-seamless.persona-artifact-border-full .persona-artifact-pane{border:var(--persona-artifact-pane-border)!important}[data-persona-root].persona-artifact-appearance-detached .persona-artifact-split-root{background:var(--persona-panel-canvas-bg)}@media (min-width:641px){[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-appearance-detached .persona-artifact-pane{border-radius:var(--persona-artifact-pane-radius,var(--persona-panel-radius,var(--persona-radius-xl,.75rem)));border:var(--persona-panel-border,1px solid var(--persona-border,#e5e7eb));box-shadow:var(--persona-artifact-pane-shadow,var(--persona-panel-shadow,var(--persona-palette-shadows-xl,0 25px 50px -12px #00000040)))}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-chat-flush .persona-artifact-pane{margin-top:var(--persona-panel-inset);margin-right:var(--persona-panel-inset);margin-bottom:var(--persona-panel-inset)}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-welded-split .persona-artifact-split-root{position:relative}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-welded-split .persona-widget-container{overflow:hidden;border-top-right-radius:0!important;border-bottom-right-radius:0!important}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-welded-split .persona-artifact-pane{overflow:hidden;border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:var(--persona-artifact-welded-outer-radius,var(--persona-panel-radius,var(--persona-radius-xl,.75rem)))!important;border-bottom-right-radius:var(--persona-artifact-welded-outer-radius,var(--persona-panel-radius,var(--persona-radius-xl,.75rem)))!important}[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-welded-split.persona-artifact-appearance-panel .persona-artifact-pane{border-left:1px solid var(--persona-border,#e5e7eb)}}[data-persona-root].persona-artifact-narrow-host .persona-artifact-backdrop{z-index:55!important;position:absolute!important;inset:0!important}@media (min-width:641px){[data-persona-root].persona-artifact-narrow-host .persona-artifact-pane{z-index:60;transition:transform .2s;position:absolute;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001f;width:min(100%, var(--persona-artifact-drawer-width,min(calc(100% - 1rem), 22rem)))!important;max-width:var(--persona-artifact-drawer-width,22rem)!important}[data-persona-root].persona-artifact-narrow-host .persona-artifact-pane.persona-artifact-drawer-open{transform:translate(0)}}@media (max-width:640px){[data-persona-root] .persona-artifact-pane{width:min(100vw, var(--persona-artifact-drawer-width,min(100vw - 1.5rem, 22rem)));z-index:60;transition:transform .2s;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001f}[data-persona-root] .persona-artifact-pane.persona-artifact-drawer-open{transform:translate(0)}}`;const C=e=>h(e,`artifacts`,S);function w(e){let t=String(e).split(/[\\/]/);return t[t.length-1]??``}function T(e){let t=w(e),n=t.lastIndexOf(`.`);return n<=0?``:t.slice(n+1).toLowerCase()}function E(e){if(typeof e!=`string`)return``;let t=e.indexOf(`
|
|
2
2
|
`);if(t===-1||!e.slice(0,t).startsWith("```"))return e;let n=e.slice(t+1),r=n.lastIndexOf(`
|
|
3
3
|
`);return(r===-1?n:n.slice(0,r)).split("```").join("```")}function te(e){let t=T(e.path);if(t)return t===`html`||t===`htm`?`html`:t===`svg`?`svg`:t===`md`||t===`mdx`?`markdown`:`other`;let n=(e.mimeType||``).toLowerCase();return n.includes(`html`)?`html`:n.includes(`svg`)?`svg`:n.includes(`markdown`)?`markdown`:`other`}function D(e){switch(te(e)){case`html`:return`HTML`;case`svg`:return`SVG`;case`markdown`:return`Markdown`;default:{let t=T(e.path);return t?t.toUpperCase():`File`}}}function O(e){let t=e.markdown??``;return e.file?{filename:w(e.file.path)||`artifact`,mime:e.file.mimeType||`application/octet-stream`,content:E(t)}:{filename:`${e.title||`artifact`}.md`,mime:`text/markdown`,content:t}}function k(e){let t=new Blob([e.content],{type:e.mime}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e.filename,r.click(),URL.revokeObjectURL(n)}let A=null;const j=e=>{A=e.componentRegistry,g(e.loadingLabels),e.buttons&&(N=e.buttons)},M=()=>A;let N;const P=()=>{if(!N)throw Error(`Artifact UI must be initialized with core button factories before rendering.`);return N},F=(...e)=>P().createIconButton(...e),I=(...e)=>P().createLabelButton(...e),L=(...e)=>P().createSplitButton(...e),ne=(...e)=>P().createToggleGroup(...e),R=`persona-artifact-custom-action-btn`;function re(e,t){let n=t?.documentChrome??!1,r;if(typeof e.icon==`function`){r=e.showLabel?m(`button`,`persona-label-btn persona-label-btn--sm `+R+(n?` persona-artifact-doc-copy-btn`:``)):m(`button`,`persona-icon-btn `+R+(n?` persona-artifact-doc-icon-btn`:``)),r.type=`button`,r.setAttribute(`aria-label`,e.label),r.title=e.label;try{let t=e.icon();t&&r.appendChild(t)}catch{}if(e.showLabel){let t=m(`span`);t.textContent=e.label,r.appendChild(t)}}else r=e.showLabel||!e.icon?I({icon:e.icon,label:e.label,className:R+(n?` persona-artifact-doc-copy-btn`:``)}):F({icon:e.icon,label:e.label,className:R+(n?` persona-artifact-doc-icon-btn`:``)});return t?.onClick&&r.addEventListener(`click`,t.onClick),r}function z(e){if(!e)return null;let t={artifactId:e.id,title:e.title??``,artifactType:e.artifactType};return e.artifactType===`markdown`?(t.markdown=e.markdown??``,e.file&&(t.file=e.file)):t.jsonPayload=JSON.stringify({component:e.component,props:e.props},null,2),t}const B=`http://www.w3.org/2000/svg`;function V(e){let t=document.createElementNS(B,`svg`);t.setAttribute(`class`,f(`persona-spinner`,e)),t.setAttribute(`viewBox`,`0 0 24 24`),t.setAttribute(`aria-hidden`,`true`),t.setAttribute(`focusable`,`false`);let n=document.createElementNS(B,`circle`);n.setAttribute(`class`,`persona-spinner-track`),n.setAttribute(`cx`,`12`),n.setAttribute(`cy`,`12`),n.setAttribute(`r`,`9`);let r=document.createElementNS(B,`circle`);return r.setAttribute(`class`,`persona-spinner-arc`),r.setAttribute(`cx`,`12`),r.setAttribute(`cy`,`12`),r.setAttribute(`r`,`9`),t.appendChild(n),t.appendChild(r),t}function H(e,t,n){e.textContent=t,_(e,{animation:n?.loadingAnimation??`shimmer`,duration:`${n?.loadingAnimationDuration??2e3}ms`,color:n?.loadingAnimationColor,secondaryColor:n?.loadingAnimationSecondaryColor})}const U=`persona-artifact-status-label`,ie=`persona-artifact-status-detail`,ae=`data-artifact-status-label`,oe=/* @__PURE__ */ new Map,se=()=>typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now();function ce(e){e&&oe.delete(e)}function le(e){let t=e.artifactType===`markdown`?e.file:void 0;return t?D(t):e.artifactType===`component`?`Component`:`Document`}function W(e,t,n){let r=le(e),i=`Generating ${r.toLowerCase()}...`,a=t?.statusLabel;if(typeof a==`string`)return{label:a};if(typeof a!=`function`)return{label:i};let o=e.id,s=oe.get(o);e.status!==`complete`&&s===void 0&&(s=se(),oe.set(o,s));let c=s===void 0?0:Math.max(0,se()-s),l=e.artifactType===`component`,u=!l&&typeof e.markdown==`string`?e.markdown:``,d=l?0:u.length,f=l||u===``?0:u.split(`
|
|
4
4
|
`).length,p=e.artifactType===`markdown`?e.file:void 0,m={artifactId:o,artifactType:e.artifactType,title:e.title,typeLabel:r,file:p,chars:d,lines:f,elapsedMs:c,content:()=>l?``:u,surface:n};try{let e=a(m);return typeof e==`string`?{label:e}:e&&typeof e==`object`&&typeof e.label==`string`?{label:e.label,detail:typeof e.detail==`string`?e.detail:void 0}:{label:i}}catch{return{label:i}}}function ue(e){e.className=U,e.removeAttribute(`data-preserve-animation`),e.style.removeProperty(`--persona-tool-anim-duration`),e.style.removeProperty(`--persona-tool-anim-color`),e.style.removeProperty(`--persona-tool-anim-secondary-color`),e.replaceChildren()}function G(e,t,n){let r=e.querySelector(`:scope > .${U}`);r||(r=m(`span`,U),e.appendChild(r)),r.getAttribute(ae)!==t.label&&(ue(r),H(r,t.label,n),r.setAttribute(ae,t.label));let i=e.querySelector(`:scope > .${ie}`),a=t.detail;a?(i||(i=m(`span`,ie),e.appendChild(i)),i.textContent!==a&&(i.textContent=a)):i&&i.remove()}const K={keyword:`persona-code-token-keyword`,string:`persona-code-token-string`,comment:`persona-code-token-comment`,number:`persona-code-token-number`,tag:`persona-code-token-tag`,attr:`persona-code-token-attr`,property:`persona-code-token-property`},q={html:`html`,htm:`html`,xhtml:`html`,xml:`html`,svg:`html`,css:`css`,js:`js`,jsx:`js`,mjs:`js`,cjs:`js`,ts:`js`,tsx:`js`,mts:`js`,cts:`js`,javascript:`js`,typescript:`js`,ecmascript:`js`,json:`json`,jsonc:`json`,json5:`json`};function J(e,t){let n=(e||``).trim().toLowerCase();if(n&&q[n])return q[n];if(t){let e=t.lastIndexOf(`.`);if(e>=0){let n=t.slice(e+1).toLowerCase();if(q[n])return q[n]}}return null}function de(e,t){let n=[],r=0,i=0,a=t=>{t>i&&n.push({type:`plain`,value:e.slice(i,t)})};for(;r<e.length;){let o=!1;for(let s of t){s.re.lastIndex=r;let t=s.re.exec(e);if(t&&t.index===r&&t[0].length>0){a(r);let e=s.map?s.map(t[0]):s.type;n.push({type:e,value:t[0]}),r+=t[0].length,i=r,o=!0;break}}o||(r+=1)}return a(e.length),n}const fe=/* @__PURE__ */ new Set(/* @__PURE__ */ `abstract.any.as.async.await.boolean.break.case.catch.class.const.continue.debugger.declare.default.delete.do.else.enum.export.extends.false.finally.for.from.function.get.if.implements.import.in.instanceof.interface.keyof.let.namespace.never.new.null.number.object.of.private.protected.public.readonly.return.satisfies.set.static.string.super.switch.symbol.this.throw.true.try.type.typeof.undefined.unknown.var.void.while.yield`.split(`.`)),pe=[{type:`comment`,re:/\/\/[^\n]*/y},{type:`comment`,re:/\/\*[\s\S]*?\*\//y},{type:`string`,re:/`(?:\\[\s\S]|[^\\`])*`/y},{type:`string`,re:/"(?:\\.|[^"\\\n])*"/y},{type:`string`,re:/'(?:\\.|[^'\\\n])*'/y},{type:`number`,re:/0[xX][0-9a-fA-F]+|(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y},{type:`plain`,re:/[A-Za-z_$][\w$]*/y,map:e=>fe.has(e)?`keyword`:`plain`}];function me(e){return de(e,pe)}const Y=[{type:`string`,re:/"(?:\\.|[^"\\])*"/y},{type:`number`,re:/-?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y},{type:`plain`,re:/[A-Za-z_]\w*/y,map:e=>e===`true`||e===`false`||e===`null`?`keyword`:`plain`}];function he(e){let t=de(e,Y);for(let e=0;e<t.length;e+=1){if(t[e].type!==`string`)continue;let n=e+1;for(;n<t.length&&t[n].value.trim()===``;)n+=1;let r=t[n];r&&r.value.replace(/^\s*/,``).startsWith(`:`)&&(t[e].type=`property`)}return t}const ge=[{type:`comment`,re:/\/\*[\s\S]*?\*\//y},{type:`string`,re:/"(?:\\.|[^"\\\n])*"/y},{type:`string`,re:/'(?:\\.|[^'\\\n])*'/y},{type:`keyword`,re:/@[A-Za-z-]+/y},{type:`number`,re:/#[0-9a-fA-F]{3,8}\b/y},{type:`number`,re:/-?(?:\d+\.?\d*|\.\d+)(?:[a-z%]+)?/y},{type:`plain`,re:/[A-Za-z_-][\w-]*/y}];function _e(e){let t=de(e,ge),n=``;for(let e=0;e<t.length;e+=1){let r=t[e];if(r.type===`plain`&&/^[A-Za-z_-][\w-]*$/.test(r.value)){let i=e+1;for(;i<t.length&&t[i].value.trim()===``;)i+=1;let a=t[i];a&&a.value.replace(/^\s*/,``).startsWith(`:`)&&(n===``||n===`{`||n===`}`||n===`;`||n===`,`)&&(r.type=`property`)}let i=r.value.replace(/\s+$/,``);i&&(n=i[i.length-1])}return t}const X=[{type:`tag`,re:/<\/?\s*[A-Za-z][\w:-]*/y},{type:`string`,re:/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/y},{type:`attr`,re:/[A-Za-z_:@][\w:.-]*(?=\s*=)/y},{type:`attr`,re:/[A-Za-z_:@][\w:.-]*/y},{type:`tag`,re:/\/?>/y}];function Z(e){let t=[],n=(e,n)=>{n&&t.push({type:e,value:n})},r=e.length,i=0;for(;i<r;){if(e.startsWith(`<!--`,i)){let t=e.indexOf(`-->`,i+4),a=t===-1?r:t+3;n(`comment`,e.slice(i,a)),i=a;continue}if(e[i]===`<`&&e[i+1]===`!`){let t=e.indexOf(`>`,i),a=t===-1?r:t+1;n(`tag`,e.slice(i,a)),i=a;continue}if(e[i]===`<`&&/[A-Za-z/]/.test(e[i+1]||``)){let n=e.indexOf(`>`,i),a=n===-1?r:n+1,o=e.slice(i,a);for(let e of de(o,X))t.push(e);i=a;let s=/^<\s*(script|style)\b/i.exec(o);if(s&&!/\/>\s*$/.test(o)){let n=s[1].toLowerCase(),a=RegExp(`</\\s*`+n+`\\s*>`,`i`).exec(e.slice(i)),o=a?i+a.index:r,c=e.slice(i,o),l=n===`script`?me(c):_e(c);for(let e of l)t.push(e);i=o}continue}let a=e.indexOf(`<`,i);if(a===i)n(`plain`,e[i]),i+=1;else{let t=a===-1?r:a;n(`plain`,e.slice(i,t)),i=t}}return t}function ve(e,t){switch(t){case`html`:return Z(e);case`css`:return _e(e);case`js`:return me(e);case`json`:return he(e)}}function ye(e){let t=p(),n=m(`span`,`persona-code-line`),r=(e,t)=>{if(!t)return;let r=K[e];if(r){let e=m(`span`,r);e.textContent=t,n.appendChild(e)}else n.appendChild(document.createTextNode(t))};for(let i of e){let e=i.value.split(`
|
|
5
5
|
`);for(let a=0;a<e.length;a+=1)a>0&&(t.appendChild(n),t.appendChild(document.createTextNode(`
|
|
6
6
|
`)),n=m(`span`,`persona-code-line`)),r(i.type,e[a])}return n.childNodes.length>0?t.appendChild(n):t.lastChild||t.appendChild(n),t}function be(e,t,n){let r=e.length<=15e4?J(t,n):null;return ye(r?ve(e,r):[{type:`plain`,value:e}])}function xe(e){if(!e)return``;if(e.artifactType===`markdown`){let t=e.markdown??``;return e.file?E(t):t}return JSON.stringify({component:e.component,props:e.props},null,2)}let Se=!1;function Ce(e){return`persona-artifact-vt-`+((e||`artifact`).replace(/[^A-Za-z0-9_-]/g,`-`).replace(/^-+/,``)||`artifact`)}function we(e,t,n,r){let i=typeof document<`u`?document.startViewTransition:void 0,a=!1;try{a=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}catch{a=!1}if(t!==`auto`||!e||typeof i!=`function`||Se||a){r();return}Se=!0;let o=Ce(n);e.style.setProperty(`view-transition-name`,o);let s=()=>{Se=!1,e.style.removeProperty(`view-transition-name`)};try{i.call(document,()=>{r()}).finished.then(s,s)}catch{s(),r()}}function Q(e){let t=m(`div`,`persona-rounded-lg persona-border persona-border-persona-border persona-p-3 persona-text-persona-primary`),n=m(`div`,`persona-font-semibold persona-text-sm persona-mb-2`);n.textContent=e.component?`Component: ${e.component}`:`Component`;let r=m(`pre`,`persona-font-mono persona-text-xs persona-whitespace-pre-wrap persona-overflow-x-auto`);return r.textContent=JSON.stringify(e.props??{},null,2),t.appendChild(n),t.appendChild(r),t}function Te(e){if(e===!1)return{enabled:!1,delayMs:0,minVisibleMs:0,timeoutMs:0,injectReadySignal:!1,label:`Starting preview...`,labelDelayMs:2e3};let t=e&&typeof e==`object`?e:void 0;return{enabled:!0,delayMs:t?.delayMs??200,minVisibleMs:t?.minVisibleMs??300,timeoutMs:t?.timeoutMs??8e3,injectReadySignal:t?.injectReadySignal!==!1,label:t?.label===!1?!1:t?.label??`Starting preview...`,labelDelayMs:t?.labelDelayMs??2e3,renderIndicator:t?.renderIndicator}}function Ee(){try{if(typeof crypto<`u`&&crypto.getRandomValues){let e=/* @__PURE__ */ new Uint32Array(2);return crypto.getRandomValues(e),e[0].toString(36)+e[1].toString(36)}}catch{}return Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2)}function De(e){return`
|
|
7
|
-
<script>(function(){var d=false;var t=`+JSON.stringify(e)+`;function r(){if(d)return;d=true;try{parent.postMessage({persona:'artifact-preview-ready',token:t},'*');}catch(e){}}function s(){if(typeof requestAnimationFrame==='function'){requestAnimationFrame(function(){requestAnimationFrame(r);});}setTimeout(r,150);}if(document.readyState==='complete'){s();}else{window.addEventListener('load',s);}})();<\/script>`}function Oe(e,t,n){let r=m(`div`,`persona-artifact-frame-loading`);if(n.renderIndicator)try{let i=n.renderIndicator({artifactId:e,config:t});if(i)return r.appendChild(i),{el:r,revealLabel:()=>{}}}catch{}let i=m(`div`,`persona-artifact-frame-loading-indicator`);i.appendChild(V());let a=null;return n.label!==!1&&(a=m(`div`,`persona-artifact-frame-loading-text`),a.textContent=n.label,i.appendChild(a)),r.appendChild(i),{el:r,revealLabel:()=>{a&&a.classList.add(`persona-artifact-frame-loading-text--visible`)}}}function ke(e,t,n,r,i,a){let o=null,s=0,c=!1,l=/* @__PURE__ */ new Set,u=()=>{l.forEach(e=>clearTimeout(e)),l.clear()},d=(e,t)=>{let n=setTimeout(()=>{l.delete(n),typeof document<`u`&&e()},t);l.add(n)},f=()=>{o&&o.parentElement&&o.remove(),o=null},p=()=>{if(o||c)return;let t=Oe(i,a,r);o=t.el,e.appendChild(o),s=Date.now(),r.label!==!1&&d(t.revealLabel,r.labelDelayMs)},m=()=>{o&&(o.classList.add(`persona-artifact-frame-loading--out`),d(f,220))},h=()=>{n===null?t.removeEventListener(`load`,v):typeof window<`u`&&window.removeEventListener(`message`,_)},g=()=>{if(c||(c=!0,h(),u(),!o))return;let e=Math.max(0,r.minVisibleMs-(Date.now()-s));e>0?d(m,e):m()};function _(e){if(n===null)return;let r=e.data;r&&r.persona===`artifact-preview-ready`&&r.token===n&&e.source===t.contentWindow&&g()}function v(){let e=e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)};e(()=>e(()=>g()))}return d(p,r.delayMs),d(g,r.timeoutMs),n===null?t.addEventListener(`load`,v):typeof window<`u`&&window.addEventListener(`message`,_),()=>{c=!0,u(),h(),f()}}function Ae(e,t){let{config:r}=t,c=t.registry??M()??a,l=t.bodyLayout,d=r.markdown?u(r.markdown):null,f=s(r.sanitize),p=e,h=!1,g=e=>{let t=o()!==null;d&&!t&&!h&&(h=!0,n(()=>z(p)));let r=d?d(e):i(e);return d&&t&&f?f(r):r},_=m(`div`,`persona-artifact-preview-body`),v=null,y=null,ee=null,b=()=>{ee&&=(ee(),null),v=null,y=null},x=null,S=null,C=null,w=!1,T=()=>{x=null,S=null,C=null,w=!1},D=null,O=null,k=()=>{D=null,O=null},A=0,j=e=>typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0),N=e=>e.scrollHeight-e.clientHeight-e.scrollTop<=40,P=e=>{if(!l)return;let t=e.scrollHeight-e.clientHeight>1,n=e.scrollHeight-e.clientHeight-e.scrollTop;e.classList.toggle(`persona-artifact-fade-top`,l.fadeTop&&t&&e.scrollTop>1),e.classList.toggle(`persona-artifact-fade-bottom`,l.fadeBottom&&t&&n>1)},F=e=>{A||=j(()=>{A=0,e.scrollTop=e.scrollHeight,P(e)})},I=(e,t,n,r)=>{let i=!!l,a=n.id+`|`+(i?`w`:`p`);if(!x||C!==a||x.parentElement!==_){b(),k(),_.replaceChildren();let e=m(`pre`,`persona-font-mono persona-text-xs persona-whitespace-pre-wrap persona-break-words persona-text-persona-primary persona-code-pre`),t=m(`code`,`persona-code`);if(e.appendChild(t),i){let t=m(`div`,`persona-artifact-source-window`);if(t.appendChild(e),_.appendChild(t),l?.overflow!==`clip`&&typeof t.addEventListener==`function`){let e=()=>t.scrollHeight-t.clientHeight>1;t.addEventListener(`scroll`,()=>{N(t)&&(w=!1),P(t)},{passive:!0}),t.addEventListener(`wheel`,t=>{e()&&t.deltaY<0&&(w=!0)},{passive:!0}),t.addEventListener(`touchmove`,()=>{e()&&(w=!0)},{passive:!0})}x=t}else _.appendChild(e),x=e;S=t,C=a}let o=i?x:null;o&&(o.classList.toggle(`persona-artifact-source-window--fixed`,r),o.classList.toggle(`persona-artifact-source-window--clip`,r&&l?.overflow===`clip`));let s=!o||N(o);if(S.replaceChildren(be(e,t?.language,t?.path)),o){let e=n.status!==`complete`;r&&e&&l?.followOutput&&!w&&s?F(o):e||(w=!1),P(o)}},L=e=>{b(),T(),k(),_.replaceChildren();let t=m(`div`,`persona-text-sm persona-leading-relaxed persona-markdown-bubble`);t.innerHTML=g(e),_.appendChild(t)},ne=e=>{let t=e.id,n=r.features?.artifacts,i=W(e,n,`status-body`);if(D&&O===t&&D.parentElement===_){let e=D.querySelector(`.persona-artifact-status-view-text`);e&&G(e,i,n);return}b(),T(),_.replaceChildren();let a=m(`div`,`persona-artifact-status-view`),o=m(`div`,`persona-artifact-status-view-text`);G(o,i,n),a.appendChild(o),_.appendChild(a),D=a,O=t},R,re=()=>{let e=R;R=void 0,e?.controller.abort();try{e?.handle.destroy?.()}catch(e){console.error(`[AgentWidget] Artifact component cleanup failed:`,e)}},z=e=>{re(),p=e;let n=t.resolveViewMode?.(e)??l?.viewMode??`rendered`,i=e.artifactType===`markdown`?e.file:void 0,a=e.status!==`complete`;a||ce(e.id);let o=a?l?.streamingHeight:l?.completeHeight,s=!!l&&typeof o==`number`;if(l?.streamingView===`status`&&a){ne(e);return}if(i){let t=E(e.markdown??``),o=te(i),c=r.features?.artifacts?.filePreview?.enabled!==!1;if(!a&&n===`rendered`&&c&&(o===`html`||o===`svg`)){let n=e.id+`\0`+t;if(v&&y===n&&v.parentElement===_)return;T(),k(),b(),_.replaceChildren();let i=r.features?.artifacts?.filePreview,a=i?.iframeSandbox??`allow-scripts`;!i?.dangerouslyAllowSameOrigin&&a.includes(`allow-same-origin`)&&(console.warn(`[AgentWidget] Stripped allow-same-origin from filePreview.iframeSandbox: it lets artifact content run with the page origin. Set filePreview.dangerouslyAllowSameOrigin to keep it.`),a=a.split(/\s+/).filter(e=>e&&e!==`allow-same-origin`).join(` `));let o=Te(i?.loading),s=m(`div`,`persona-artifact-frame`),c=m(`iframe`,`persona-artifact-iframe`);c.setAttribute(`sandbox`,a),c.setAttribute(`data-artifact-id`,e.id);let l=null;o.enabled&&o.injectReadySignal?(l=Ee(),c.srcdoc=t+De(l)):c.srcdoc=t,s.appendChild(c),_.appendChild(s),o.enabled&&(ee=ke(s,c,l,o,e.id,r)),v=s,y=n;return}if(b(),!a&&o===`markdown`&&n===`rendered`){L(t);return}I(t,{language:i.language,path:i.path},e,s);return}if(e.artifactType===`markdown`){if(n===`source`){b(),I(e.markdown??``,void 0,e,s);return}L(e.markdown??``);return}b(),T(),k(),_.replaceChildren();let u=e.component?r.components&&Object.prototype.hasOwnProperty.call(r.components,e.component)?r.components[e.component]:c.get(e.component):void 0;if(u){let t={id:e.id,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString()},n=new AbortController,i={message:t,config:r,updateProps:()=>{},signal:n.signal};try{let t=u(e.props??{},i);if(t){let e=`element`in t?t:{element:t};R={controller:n,handle:e},_.appendChild(e.element);return}}catch{}n.abort()}_.appendChild(Q(e))};return z(e),{el:_,update(e){z(e)},destroy(){re(),b()}}}function je(e,t){let n=t.orientation??`horizontal`,r=n===`vertical`?`ArrowUp`:`ArrowLeft`,i=n===`vertical`?`ArrowDown`:`ArrowRight`;e.setAttribute(`role`,`tablist`);let a=[],o=!1,s=e=>{typeof e.scrollIntoView==`function`&&e.scrollIntoView({block:`nearest`,inline:`nearest`})},c=e=>{let t=e;return a.findIndex(e=>e===t||e.contains(t))},l=e=>{let n=c(e.target);if(n<0)return;let o=n;if(e.key===i)o=Math.min(n+1,a.length-1);else if(e.key===r)o=Math.max(n-1,0);else if(e.key===`Home`)o=0;else if(e.key===`End`)o=a.length-1;else return;e.preventDefault(),o!==n&&t.onSelect(o)},u=e=>{let t=c(e.target);t>=0&&s(a[t])};return e.addEventListener(`keydown`,l),e.addEventListener(`focusin`,u),{beforeRender(){o=typeof document<`u`&&e.contains(document.activeElement)},render(e,t){if(a=e,e.forEach((e,n)=>{e.setAttribute(`role`,`tab`);let r=n===t;e.setAttribute(`aria-selected`,r?`true`:`false`),e.tabIndex=r||t<0&&n===0?0:-1}),o){let n=(t>=0?e[t]:void 0)??e[0];n&&typeof n.focus==`function`&&(s(n),n.focus())}},destroy(){e.removeEventListener(`keydown`,l),e.removeEventListener(`focusin`,u)}}}function Me(e,n){let i=e.features?.artifacts?.layout,a=(i?.toolbarPreset??`default`)===`document`,o=i?.toolbarTitle??`Artifacts`,s=i?.closeButtonLabel??`Close`,c=e=>({start:e===!1?!1:typeof e==`object`&&e?e.start!==!1:!0,end:e===!1?!1:typeof e==`object`&&e?e.end!==!1:!0}),{start:l,end:u}=c(i?.tabFade),d=typeof document<`u`?m(`div`,`persona-artifact-backdrop persona-fixed persona-inset-0 persona-z-[55] persona-bg-black/30 persona-hidden md:persona-hidden`):null,f=()=>{d?.classList.add(`persona-hidden`),p.classList.remove(`persona-artifact-drawer-open`),R?.closeMenu()};d&&d.addEventListener(`click`,()=>{f(),n.onDismiss?.()});let p=m(`aside`,`persona-artifact-pane persona-flex persona-flex-col persona-min-h-0 persona-min-w-0 persona-bg-persona-surface persona-text-persona-primary persona-border-l persona-border-persona-border`);C(p),p.setAttribute(`data-persona-theme-zone`,`artifact-pane`),a&&p.classList.add(`persona-artifact-pane-document`);let h=m(`div`,`persona-artifact-toolbar persona-flex persona-items-center persona-justify-between persona-gap-2 persona-px-2 persona-py-2 persona-border-b persona-border-persona-border persona-shrink-0`);h.setAttribute(`data-persona-theme-zone`,`artifact-toolbar`),a&&h.classList.add(`persona-artifact-toolbar-document`);let g=m(`span`,`persona-text-xs persona-font-medium persona-truncate`);g.textContent=o;let _=F({icon:`x`,label:s});_.addEventListener(`click`,()=>{f(),n.onDismiss?.()});let ee=`rendered`,S=ne({items:[{id:`rendered`,icon:`eye`,label:`Rendered view`,className:a?`persona-artifact-doc-icon-btn persona-artifact-view-btn`:void 0},{id:`source`,icon:`code-xml`,label:`Source`,className:a?`persona-artifact-doc-icon-btn persona-artifact-code-btn`:void 0}],selectedId:`rendered`,className:`persona-artifact-toggle-group persona-shrink-0`,onSelect:e=>{ee=e===`source`?`source`:`rendered`,Me()}}),T=m(`div`,`persona-flex persona-items-center persona-gap-1 persona-shrink-0`),E=i?.documentToolbarShowCopyLabel===!0,A=i?.documentToolbarShowCopyChevron===!0,j=i?.documentToolbarCopyMenuItems,M=!!(A&&j&&j.length>0),N=null,P,R=null;if(a&&(E||A)&&!M){if(P=E?I({icon:`copy`,label:`Copy`,iconSize:14,className:`persona-artifact-doc-copy-btn`}):F({icon:`copy`,label:`Copy`,className:`persona-artifact-doc-copy-btn`}),A){let e=t(y,14,`currentColor`,2);e&&P.appendChild(e)}}else a&&M?(R=L({label:`Copy`,icon:`copy`,iconSize:14,iconOnly:!E,primaryClassName:`persona-artifact-doc-copy-btn`,chevronLabel:`More copy options`,chevronClassName:`persona-artifact-doc-copy-menu-chevron persona-artifact-doc-icon-btn`,menuItems:(j??[]).map(e=>({id:e.id,label:e.label})),position:`bottom-right`,portal:()=>p.closest(`[data-persona-root]`)??document.body,onSelect:e=>void ue(e)}),N=R.element,P=R.primaryButton):a?P=F({icon:`copy`,label:`Copy`,className:`persona-artifact-doc-icon-btn`}):(P=F({icon:`copy`,label:`Copy`}),i?.showCopyButton!==!0&&P.classList.add(`persona-hidden`));let B=F(a?{icon:`refresh-cw`,label:`Refresh`,className:`persona-artifact-doc-icon-btn`}:{icon:`refresh-cw`,label:`Refresh`});i?.onDocumentToolbarRefresh||B.classList.add(`persona-hidden`);let V=F(a?{icon:`x`,label:s,className:`persona-artifact-doc-icon-btn`}:{icon:`x`,label:s}),H=F({icon:`maximize`,label:`Expand artifacts panel`,className:`persona-artifact-expand-btn`+(a?` persona-artifact-doc-icon-btn`:``),onClick:()=>n.onToggleExpand?.()});i?.showExpandToggle!==!0&&H.classList.add(`persona-hidden`);let U=m(`div`,`persona-flex persona-items-center persona-gap-1 persona-shrink-0 persona-artifact-toolbar-custom-actions`),ie=e.features?.artifacts?.toolbarActions??[],ae=()=>{let e=X.find(e=>e.id===Z)??X[X.length-1],t=e?.id??null,n=e?.artifactType===`markdown`?e.markdown??``:``,r=e?JSON.stringify({component:e.component,props:e.props},null,2):``,{filename:i,mime:a,content:o}=O({title:e?.title,markdown:e?.markdown??``,file:e?.file});return{markdown:n,jsonPayload:r,id:t,file:e?.file,suggestedFilename:i,mime:a,content:o}},oe=()=>{let{suggestedFilename:e,mime:t,content:n}=ae();n&&k({filename:e,mime:t,content:n})},se=e=>{let{id:t,...n}=ae();return{actionId:e,artifactId:t,...n}},ce=async()=>{let e=X.find(e=>e.id===Z)??X[X.length-1];try{return await navigator.clipboard.writeText(xe(e)),!0}catch{return!1}},le=null,W=()=>{le?.();let e=P.querySelector(`svg`),n=Number(e?.getAttribute(`width`))||16,r=t(v,n,`currentColor`,2);if(!e||!r)return;e.replaceWith(r);let i=P.querySelector(`span`);i&&(i.textContent=`Copied`);let a=setTimeout(()=>le?.(),2e3);le=()=>{clearTimeout(a),r.replaceWith(e),i&&(i.textContent=`Copy`),le=null}};P.addEventListener(`click`,async()=>{let e=i?.onDocumentToolbarCopyMenuSelect;if(e&&M)try{if(await e(se(`primary`))===!1){await ce()&&W();return}W()}catch{}else await ce()&&W()});async function ue(e){let t=i?.onDocumentToolbarCopyMenuSelect;try{if(t&&await t(se(e))!==!1)return;if(e===`download`){oe();return}let{markdown:n,jsonPayload:r}=ae();e===`markdown`||e===`md`?await navigator.clipboard.writeText(n):e===`json`||e===`source`?await navigator.clipboard.writeText(r):await navigator.clipboard.writeText(n||r),W()}catch{}}B.addEventListener(`click`,async()=>{try{await i?.onDocumentToolbarRefresh?.()}catch{}Me()}),V.addEventListener(`click`,()=>{f(),n.onDismiss?.()});let G=m(`span`,`persona-min-w-0 persona-flex-1 persona-text-xs persona-font-medium persona-text-persona-primary persona-truncate persona-text-center md:persona-text-left`);if(a)h.replaceChildren(),N?T.append(N,B,V):T.append(P,B,V),T.insertBefore(U,V),T.insertBefore(H,V),h.append(S.element,G,T);else{let e=m(`div`,`persona-flex persona-items-center persona-gap-1 persona-shrink-0`);e.append(P,U,H,_),h.appendChild(g),h.appendChild(e)}let K=m(`div`,`persona-artifact-list persona-shrink-0 persona-flex persona-gap-1 persona-overflow-x-auto persona-p-2 persona-border-b persona-border-persona-border`),q=e.features?.artifacts?.renderTabBar,J=m(`div`,`persona-artifact-tab-custom persona-shrink-0 persona-border-b persona-border-persona-border persona-hidden`),de=je(K,{onSelect:e=>n.onSelect(X[e].id)}),fe=e=>{let t=e.scrollWidth-e.clientWidth,n=t>1,r=Math.abs(e.scrollLeft);e.classList.toggle(`persona-artifact-tab-fade-start`,l&&n&&r>1),e.classList.toggle(`persona-artifact-tab-fade-end`,u&&n&&r<t-1)},pe=0,me=()=>{if(pe)return;let e=()=>{pe=0,fe(K)};pe=typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)};K.addEventListener(`scroll`,()=>me(),{passive:!0}),typeof ResizeObserver<`u`&&new ResizeObserver(()=>fe(K)).observe(K);let Y=m(`div`,`persona-artifact-content persona-flex-1 persona-min-h-0 persona-overflow-y-auto persona-p-3`),he=()=>{Y.scrollLeft=0},ge=()=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(he):setTimeout(he,0)},_e=e=>{let t=e.features?.artifacts?.layout,n=r(e,t?.panePadding,`pane.padding`)??``;for(let e of[h,K,J])e.style.paddingLeft=n,e.style.paddingRight=n;Y.style.padding=n;let i=r(e,t?.tabFadeSize,`tab.fadeSize`);i?K.style.setProperty(`--persona-artifact-tab-fade-size`,i):K.style.removeProperty(`--persona-artifact-tab-fade-size`)};_e(e),p.appendChild(h),p.appendChild(K),p.appendChild(J),p.appendChild(Y);let X=[],Z=null,ve=!1,ye=!1,be=!0,Se=!1,Ce=null,we=``,Q=null,Te=!1,Ee=e=>e.artifactType===`markdown`&&e.file||a?ee:`rendered`,De=e=>{a||(e&&!Te?(h.insertBefore(S.element,g),Te=!0):!e&&Te&&(S.element.remove(),Te=!1))},Oe=()=>Z&&X.find(e=>e.id===Z)||X[X.length-1],ke=()=>{let e=z(Oe());if(!e){U.replaceChildren();return}let t=ie.filter(t=>t.visible===void 0||t.visible(e)).map(e=>re(e,{documentChrome:a,onClick:()=>{let t=z(Oe());if(t)try{Promise.resolve(e.onClick(t)).catch(()=>{})}catch{}}}));U.replaceChildren(...t)},Me=()=>{ke();let t=a&&X.length<=1,r=!!q;if(K.classList.toggle(`persona-hidden`,t||r),J.classList.toggle(`persona-hidden`,t||!r),r&&q){let e=X.map(e=>e.id).join(`|`)+` `+(Z??``);if(e!==we){we=e;let t=q({records:X,selectedId:Z,onSelect:n.onSelect});J.firstElementChild!==t&&J.replaceChildren(t)}}else{de.beforeRender(),K.replaceChildren();let e=[],t=-1;for(let[r,i]of X.entries()){let a=m(`button`,`persona-artifact-tab persona-shrink-0 persona-rounded-lg persona-px-2 persona-py-1 persona-text-xs persona-border persona-border-transparent persona-text-persona-primary`);a.type=`button`;let o=i.artifactType===`markdown`?i.file:void 0,s=o?w(o.path):i.title||i.id.slice(0,8),c=o?.path||i.title||s;a.textContent=s,a.title=c,a.setAttribute(`aria-label`,c),i.id===Z&&(a.classList.add(`persona-bg-persona-container`,`persona-border-persona-border`),t=r),a.addEventListener(`click`,()=>n.onSelect(i.id)),K.appendChild(a),e.push(a)}if(de.render(e,t),t>=0&&Z!==Ce){Ce=Z;let n=e[t];typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`nearest`,inline:`nearest`})}fe(K)}let i=Z&&X.find(e=>e.id===Z)||X[X.length-1];if(!i){Y.replaceChildren(),Q?.destroy(),Q=null,De(!1);return}let s=i.artifactType===`markdown`?i.file:void 0;if(De(!!s&&te(s)!==`other`),a){let e=s?D(s):i.artifactType===`markdown`?`MD`:i.component??`Component`,t=(i.title||`Document`).trim(),n=s?w(s.path):t.replace(/\s*·\s*MD\s*$/i,``).trim()||`Document`;G.textContent=`${n} · ${e}`}else g.textContent=s?w(s.path):o;Q?(Q.el.parentElement!==Y&&Y.replaceChildren(Q.el),Q.update(i)):(Q=Ae(i,{config:e,resolveViewMode:Ee}),Y.replaceChildren(Q.el)),Y.classList.toggle(`persona-artifact-content-flush`,!!Y.querySelector(`.persona-code-pre`))},Ne=()=>{let e=X.length>0;if(p.classList.toggle(`persona-hidden`,!e),d){let t=((typeof p.closest==`function`?p.closest(`[data-persona-root]`):null)?.classList.contains(`persona-artifact-narrow-host`)??!1)||typeof window<`u`&&window.matchMedia(`(max-width: 640px)`).matches;e&&t&&ve?(d.classList.remove(`persona-hidden`),p.classList.add(`persona-artifact-drawer-open`)):(d.classList.add(`persona-hidden`),p.classList.remove(`persona-artifact-drawer-open`))}},Pe=()=>{Se=!1,Me(),Ne()};return{setStyleConfig:_e,element:p,backdrop:d,update(e){let t=e.selectedId??e.artifacts[e.artifacts.length-1]?.id??null,n=t!==Z;X=e.artifacts,Z=t,X.length>0&&(ve=!0),Se=!0,be&&Pe(),n&&he()},setMobileOpen(e){ve=e,!e&&d?(d.classList.add(`persona-hidden`),p.classList.remove(`persona-artifact-drawer-open`)):Ne()},setExpanded(e){e!==ye&&(ye=e,ge());let n=t(e?x:b,16,`currentColor`,2);n&&H.replaceChildren(n);let r=e?`Collapse artifacts panel`:`Expand artifacts panel`;H.setAttribute(`aria-label`,r),H.title=r},setExpandToggleVisible(e){H.classList.toggle(`persona-hidden`,!e)},setCopyButtonVisible(e){a||P.classList.toggle(`persona-hidden`,!e)},setRefreshButtonVisible(e){B.classList.toggle(`persona-hidden`,!e)},setCustomActions(e){ie=e,ke()},setTabFade(e){let t=c(e);(t.start!==l||t.end!==u)&&(l=t.start,u=t.end,fe(K))},setRenderTabBar(e){e!==q&&(q=e,we=``,Me())},setVisible(e){e!==be&&(be=e,e&&Se&&Pe())},destroy(){Q?.destroy(),Q=null}}}function Ne(e,t){let n=e.file&&typeof e.file==`object`&&!Array.isArray(e.file)?e.file:void 0,r=typeof e.title==`string`&&e.title?e.title:`Untitled artifact`,i=n?w(n.path):r,a=typeof e.artifactId==`string`?e.artifactId:``,o=e.status===`streaming`?`streaming`:`complete`,s=typeof e.artifactType==`string`?e.artifactType:`markdown`,c=e.presentation&&typeof e.presentation==`object`&&!Array.isArray(e.presentation)?e.presentation:void 0,l=n?D(n):s===`component`?`Component`:`Document`,u=document.createElement(`div`);C(u),u.className=`persona-artifact-card persona-flex persona-w-full persona-max-w-full persona-items-center persona-gap-3 persona-px-4 persona-py-3`,u.tabIndex=0,u.setAttribute(`role`,`button`),u.setAttribute(`aria-label`,`Open ${i} in artifact panel`),a&&u.setAttribute(`data-open-artifact`,a);let d=document.createElement(`div`);d.className=`persona-flex persona-h-10 persona-w-10 persona-flex-shrink-0 persona-items-center persona-justify-center persona-rounded-lg`,d.style.border=`1px solid var(--persona-border, #e5e7eb)`,d.style.color=`var(--persona-muted, #9ca3af)`,d.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>`;let f=document.createElement(`div`);f.className=`persona-min-w-0 persona-flex-1 persona-flex persona-flex-col persona-gap-0.5`;let p=document.createElement(`div`);p.className=`persona-truncate persona-text-sm persona-font-medium`,p.style.color=`var(--persona-text, #1f2937)`,p.textContent=i;let m=document.createElement(`div`);if(m.className=`persona-text-xs persona-flex persona-items-center persona-gap-1.5`,m.style.color=`var(--persona-muted, #9ca3af)`,o===`streaming`){let i=t?.config?.features?.artifacts;G(m,W({id:a,artifactType:s===`component`?`component`:`markdown`,title:r,status:`streaming`,...typeof e.markdown==`string`?{markdown:e.markdown}:{},...n?{file:n}:{},...c?{presentation:c}:{}},i,`card`),i)}else a&&ce(a),m.textContent=l;if(f.append(p,m),u.append(d,f),o===`complete`){let r=t?.config?.features?.artifacts?.cardActions;if(r&&r.length>0){let t={artifactId:a||null,title:i,artifactType:s,markdown:typeof e.markdown==`string`?e.markdown:void 0,file:n};for(let e of r)try{if(e.visible===void 0||e.visible(t)){let t=re(e);t.setAttribute(`data-artifact-custom-action`,e.id),t.className=`${t.className} persona-flex-shrink-0`,u.append(t)}}catch{}}let o=I({label:`Download`,className:`persona-flex-shrink-0`});o.title=`Download ${i}`,o.setAttribute(`data-download-artifact`,a),u.append(o)}return u}const Pe=(e,t)=>{if(t?.config?.future?.v5Defaults===!0&&t.config.features?.artifacts?.enabled!==!0){let e=document.createElement(`div`);return e.hidden=!0,e}let n=t?.config?.features?.artifacts?.renderCard;if(n){let r=typeof e.title==`string`&&e.title?e.title:`Untitled artifact`,i=typeof e.artifactId==`string`?e.artifactId:``,a=e.status===`streaming`?`streaming`:`complete`,o=n({artifact:{artifactId:i,title:r,artifactType:typeof e.artifactType==`string`?e.artifactType:`markdown`,status:a},config:t.config,defaultRenderer:()=>Ne(e,t)});if(o)return o}return Ne(e,t)},$=/* @__PURE__ */ new WeakMap;function Fe(e,t,n){if(t.length===0)return;let r=new Map(t.map(e=>[e.id,e]));e.querySelectorAll(`[data-artifact-inline]`).forEach(e=>{let t=$.get(e);if(!t)return;let i=r.get(e.getAttribute(`data-artifact-inline`)??``);i&&t(i,n)})}function Ie(e){return $.has(e)}function Le(e){let t=typeof e.artifactId==`string`?e.artifactId:``,n=typeof e.title==`string`&&e.title?e.title:void 0,r=e.status===`streaming`?`streaming`:`complete`,i=e.presentation&&typeof e.presentation==`object`&&!Array.isArray(e.presentation)?e.presentation:void 0;if(e.artifactType===`component`){let a=e.componentProps,o=a&&typeof a==`object`&&!Array.isArray(a)?a:{};return{id:t,artifactType:`component`,title:n,status:r,component:typeof e.component==`string`?e.component:``,props:o,...i?{presentation:i}:{}}}let a=e.file&&typeof e.file==`object`&&!Array.isArray(e.file)?e.file:void 0;return{id:t,artifactType:`markdown`,title:n,status:r,markdown:typeof e.markdown==`string`?e.markdown:``,...a?{file:a}:{},...i?{presentation:i}:{}}}function Re(e){let t=e.artifactType===`markdown`?e.file:void 0;return{title:t?w(t.path):e.title&&e.title.trim()?e.title:`Untitled artifact`,typeLabel:t?D(t):e.artifactType===`component`?`Component`:`Document`}}function ze(e){let t={artifactId:e.id,title:e.title??``,status:e.status,artifactType:e.artifactType};return e.artifactType===`markdown`&&(typeof e.markdown==`string`&&(t.markdown=e.markdown),e.file&&(t.file=e.file)),t}function Be(e,t,n){let{swap:r,onSettled:i}=n,a=!1;try{a=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}catch{a=!1}if(!t||!e.isConnected||a||typeof e.animate!=`function`){r(),i();return}e.style.height=`${t}px`,e.style.overflow=`hidden`;let o=[];for(let t of Array.from(e.children))t instanceof HTMLElement&&o.push(t.animate([{opacity:1},{opacity:0}],{duration:180,easing:`ease-out`,fill:`forwards`}));window.setTimeout(()=>{for(let e of o)e.cancel();r();let n=()=>{e.style.removeProperty(`height`),e.style.removeProperty(`overflow`)};if(!e.isConnected){n(),i();return}e.style.height=`auto`;let a=e.getBoundingClientRect().height;if(e.style.height=`${t}px`,!a||Math.abs(a-t)<1){n(),i();return}let s=Math.abs(t-a),c=Math.round(Math.min(500,Math.max(300,240+s*.8))),l=Math.round(c*.35),u=e.firstElementChild instanceof HTMLElement?e.firstElementChild:null,d=u?u.animate([{opacity:0},{opacity:1}],{duration:240,delay:l,easing:`ease-out`,fill:`backwards`}):null,f=e.animate([{height:`${t}px`},{height:`${a}px`}],{duration:c,easing:`cubic-bezier(0.2, 0, 0, 1)`});e.style.height=`${a}px`;let p=!1,m=()=>{p||(p=!0,n(),i())};Promise.allSettled([f.finished,d?.finished].filter(Boolean)).then(m),window.setTimeout(m,Math.max(c,l+240)+120)},180)}function Ve(e){let t=e?.inlineChrome;if(t===!1)return{chromeEnabled:!1,showCopy:!1,showExpand:!1,showViewToggle:!1};let n=typeof t==`object`?t:void 0;return{chromeEnabled:!0,showCopy:n?.showCopy!==!1,showExpand:n?.showExpand!==!1,showViewToggle:n?.showViewToggle!==!1}}const He=`--persona-artifact-inline-body-height`;function Ue(e){let t=e?.inlineBody,n=t?.streamingView===`status`?`status`:`source`,r=t?.viewMode===`source`?`source`:`rendered`,i=320,a=320,o=t?.height;typeof o==`number`||o===`auto`?(i=o,a=o):o&&typeof o==`object`&&(i=o.streaming??320,a=o.complete??320);let s=t?.overflow===`clip`?`clip`:`scroll`,c=s!==`clip`&&t?.followOutput!==!1,l,u,d=t?.fadeMask;d===!0?(l=!0,u=!0):d===!1?(l=!1,u=!1):d&&typeof d==`object`?(l=d.top===!0,u=d.bottom===!0):s===`clip`?(l=!1,u=!0):(l=!0,u=!0);let f=t?.transition===`none`?`none`:`auto`,p=t?.completeDisplay===`card`?`card`:`inline`;return{streamingView:n,viewMode:r,streamingHeight:i,completeHeight:a,followOutput:c,overflow:s,fadeTop:l,fadeBottom:u,transition:f,completeDisplay:p}}function We(e,n){let r=Le(e),i=n.config?.features?.artifacts,{chromeEnabled:a,showCopy:o,showExpand:s,showViewToggle:c}=Ve(i),l=i?.inlineActions??[],u=Ue(i),d=u.completeDisplay===`card`,f=null,p=r,h=m(`div`,`persona-artifact-inline persona-w-full persona-max-w-full`);C(h),h.setAttribute(`data-persona-theme-zone`,`artifact-inline`),r.id&&h.setAttribute(`data-artifact-inline`,r.id);let g=e=>Pe(ze(e),n),_=null,v=e=>{_?.destroy(),_=null,h.classList.add(`persona-artifact-inline--card`),h.style.removeProperty(He),h.replaceChildren(g(e)),$.set(h,e=>{h.replaceChildren(g(e))})};if(d&&r.status===`complete`)return v(r),h;let y=Ae(r,{config:n.config,bodyLayout:u,resolveViewMode:()=>f??u.viewMode});_=y;let b=m(`div`,`persona-artifact-inline-body`);b.appendChild(y.el);let x=e=>{let t=e.status!==`complete`,n=t?u.streamingHeight:u.completeHeight,r=typeof n==`number`;r?h.style.setProperty(He,`${n}px`):h.style.removeProperty(He);let i=!!y.el.querySelector(`.persona-code-pre`),a=!!y.el.querySelector(`iframe, .persona-artifact-source-window--fixed, .persona-artifact-status-view`);b.classList.toggle(`persona-artifact-content-flush`,i),b.classList.toggle(`persona-artifact-inline-body--sized`,r&&a),b.classList.toggle(`persona-artifact-inline-body--cap`,!t&&!a&&typeof u.completeHeight==`number`)},S=r.status,w=(e,t)=>{S!==`complete`&&e.status===`complete`?(typeof u.completeHeight==`number`?h.style.setProperty(He,`${u.completeHeight}px`):h.style.removeProperty(He),we(b,t?.suppressTransition?`none`:u.transition,e.id,()=>{y.update(e),x(e)})):y.update(e),x(e),S=e.status};x(r);let T=u.overflow===`clip`&&s&&!!r.id;if(T&&(b.setAttribute(`data-expand-artifact-inline`,r.id),b.setAttribute(`role`,`button`),b.setAttribute(`tabindex`,`0`),b.classList.add(`persona-cursor-pointer`),b.setAttribute(`aria-label`,`Open ${Re(r).title} in panel`)),!a)return h.appendChild(b),$.set(h,w),h;let E=m(`div`,`persona-artifact-inline-chrome`);E.setAttribute(`data-persona-theme-zone`,`artifact-inline-chrome`);let D=m(`div`,`persona-artifact-inline-chrome-lead`),O=m(`span`,`persona-flex persona-items-center persona-flex-shrink-0`),k=t(ee,16,`currentColor`,2);k&&O.appendChild(k);let A=m(`span`,`persona-artifact-inline-title persona-truncate persona-min-w-0`),j=m(`span`,`persona-artifact-inline-type`);D.append(O,A,j);let M=m(`div`,`persona-artifact-inline-chrome-actions`),N=m(`span`,`persona-flex persona-items-center persona-gap-1`),P=()=>f??u.viewMode,I=c?ne({items:[{id:`rendered`,icon:`eye`,label:`Rendered view`,className:`persona-artifact-doc-icon-btn persona-artifact-view-btn`},{id:`source`,icon:`code-xml`,label:`Source`,className:`persona-artifact-doc-icon-btn persona-artifact-code-btn`}],selectedId:P(),className:`persona-artifact-toggle-group persona-flex-shrink-0`,onSelect:e=>{let t=e===`source`?`source`:`rendered`;t!==P()&&(f=t,y.update(p),x(p))}}):null,L=o?F({icon:`copy`,label:`Copy`,className:`persona-artifact-doc-icon-btn persona-flex-shrink-0`}):null;L&&r.id&&L.setAttribute(`data-copy-artifact`,r.id);let R=s?F({icon:`maximize`,label:`Open in panel`,className:`persona-artifact-doc-icon-btn persona-flex-shrink-0`}):null;R&&r.id&&R.setAttribute(`data-expand-artifact-inline`,r.id),M.appendChild(N),I&&M.appendChild(I.element),L&&M.appendChild(L),R&&M.appendChild(R),E.append(D,M),h.append(E,b);let B=e=>{let{title:t,typeLabel:n}=Re(e);A.textContent=t,A.title=t,T&&b.setAttribute(`aria-label`,`Open ${t} in panel`);let r=e.status!==`complete`;if(r){j.classList.contains(`persona-artifact-inline-status`)||(j.className=`persona-artifact-inline-status`,j.removeAttribute(`data-preserve-animation`),j.replaceChildren());let t=W(e,i,`inline-chrome`);G(j,t,i)}else ce(e.id),j.className=`persona-artifact-inline-type`,j.removeAttribute(`data-preserve-animation`),j.replaceChildren(),j.textContent=n;if(L&&L.classList.toggle(`persona-hidden`,r),I){let t=e.artifactType===`markdown`?e.file:void 0,n=!1;if(!r&&t&&u.viewMode!==`source`){let e=te(t);e===`markdown`?n=!0:(e===`html`||e===`svg`)&&(n=i?.filePreview?.enabled!==!1)}I.element.classList.toggle(`persona-hidden`,!n),I.setSelected(P())}if(N.replaceChildren(),!r&&l.length>0){let t=z(e);if(t)for(let e of l)try{if(e.visible===void 0||e.visible(t)){let t=re(e,{documentChrome:!0});t.setAttribute(`data-artifact-custom-action`,e.id),t.classList.add(`persona-flex-shrink-0`),N.appendChild(t)}}catch{}}};return B(r),$.set(h,(e,t)=>{if(d&&S!==`complete`&&e.status===`complete`){let t=h.isConnected?h.getBoundingClientRect().height:0;S=`complete`;let n=e,r=!1,i=e=>{n=e,r=!0};$.set(h,i),Be(h,t,{swap:()=>{v(n),r=!1,$.set(h,i)},onSettled:()=>{r?v(n):$.set(h,e=>{h.replaceChildren(g(e))})}})}else(e.status!==`complete`||e.id!==p.id)&&(f=null),p=e,w(e,t),B(e)}),h}const Ge=(e,t)=>{if(t?.config?.future?.v5Defaults===!0&&t.config.features?.artifacts?.enabled!==!0){let e=document.createElement(`div`);return e.hidden=!0,e}let n=t?.config?.features?.artifacts?.renderInline;if(n){let r=typeof e.title==`string`&&e.title?e.title:`Untitled artifact`,i=typeof e.artifactId==`string`?e.artifactId:``,a=e.status===`streaming`?`streaming`:`complete`,o=n({artifact:{artifactId:i,title:r,artifactType:typeof e.artifactType==`string`?e.artifactType:`markdown`,status:a},config:t.config,defaultRenderer:()=>We(e,t)});if(o)return o}return We(e,t)};function Ke(e){let{mount:t,splitRoot:n,pane:r}=e,i=null,a=null,o=null;function s(){o?.(),o=null}let u=()=>{if(!n||!i)return;let e=t.classList.contains(`persona-artifact-welded-split`),r=t.ownerDocument.defaultView??window,a=r.innerWidth<=640;if(!e||t.classList.contains(`persona-artifact-narrow-host`)||a){i.style.removeProperty(`position`),i.style.removeProperty(`left`),i.style.removeProperty(`top`),i.style.removeProperty(`bottom`),i.style.removeProperty(`width`),i.style.removeProperty(`z-index`);return}let o=n.firstElementChild;if(!o||o===i)return;i.style.position=`absolute`,i.style.top=`0`,i.style.bottom=`0`,i.style.width=`10px`,i.style.zIndex=`5`;let s=l(n,r),c=o.offsetWidth+s/2-5;i.style.left=`${Math.max(0,c)}px`};return{update:()=>{let d=e.getConfig();if(n&&r){if(d.features?.artifacts?.layout?.resizable!==!0)a?.(),a=null,s(),i&&=(i.remove(),null),r.element.style.removeProperty(`width`),r.element.style.removeProperty(`maxWidth`);else{if(!i){let d=m(`div`,`persona-artifact-split-handle persona-shrink-0 persona-h-full`);d.setAttribute(`role`,`separator`),d.setAttribute(`aria-orientation`,`vertical`),d.setAttribute(`aria-label`,`Resize artifacts panel`),d.tabIndex=0;let f=t.ownerDocument,p=f.defaultView??window,h=i=>{if(!r||i.button!==0||t.classList.contains(`persona-artifact-narrow-host`)||t.classList.contains(`persona-artifact-expanded`)||p.innerWidth<=640)return;i.preventDefault(),s();let a=i.clientX,m=r.element.getBoundingClientRect().width,h=e.getConfig().features?.artifacts?.layout,g=i=>{let o=n.getBoundingClientRect().width,s=t.classList.contains(`persona-artifact-welded-split`),f=l(n,p),g=s?0:d.getBoundingClientRect().width||6,_=m-(i.clientX-a),v=c(_,o,f,g,h?.resizableMinWidth,h?.resizableMaxWidth,e.chatMinWidth());r.element.style.width=`${v}px`,r.element.style.maxWidth=`none`,u()},_=()=>{f.removeEventListener(`pointermove`,g),f.removeEventListener(`pointerup`,_),f.removeEventListener(`pointercancel`,_),o=null;try{d.releasePointerCapture(i.pointerId)}catch{}};o=_,f.addEventListener(`pointermove`,g),f.addEventListener(`pointerup`,_),f.addEventListener(`pointercancel`,_);try{d.setPointerCapture(i.pointerId)}catch{}};d.addEventListener(`pointerdown`,h),i=d,n.insertBefore(d,r.element),a=()=>{d.removeEventListener(`pointerdown`,h)}}if(i){let t=e.isVisible();i.classList.toggle(`persona-hidden`,!t),u()}}}},destroy(){a?.(),a=null,s(),i&&=(i.remove(),null)}}}export{Pe as PersonaArtifactCard,Ge as PersonaArtifactInline,d as __provideMarkdownParsers,e as __setIconsExtraLoader,xe as artifactCopyText,Me as createArtifactPane,Ke as createArtifactResizer,O as downloadInfoFor,C as ensureArtifactStyles,Ie as hasLiveInlineArtifactBlock,j as initArtifactsUi,k as triggerArtifactDownload,Fe as updateInlineArtifactBlocks};
|
|
7
|
+
<script>(function(){var d=false;var t=`+JSON.stringify(e)+`;function r(){if(d)return;d=true;try{parent.postMessage({persona:'artifact-preview-ready',token:t},'*');}catch(e){}}function s(){if(typeof requestAnimationFrame==='function'){requestAnimationFrame(function(){requestAnimationFrame(r);});}setTimeout(r,150);}if(document.readyState==='complete'){s();}else{window.addEventListener('load',s);}})();<\/script>`}function Oe(e,t,n){let r=m(`div`,`persona-artifact-frame-loading`);if(n.renderIndicator)try{let i=n.renderIndicator({artifactId:e,config:t});if(i)return r.appendChild(i),{el:r,revealLabel:()=>{}}}catch{}let i=m(`div`,`persona-artifact-frame-loading-indicator`);i.appendChild(V());let a=null;return n.label!==!1&&(a=m(`div`,`persona-artifact-frame-loading-text`),a.textContent=n.label,i.appendChild(a)),r.appendChild(i),{el:r,revealLabel:()=>{a&&a.classList.add(`persona-artifact-frame-loading-text--visible`)}}}function ke(e,t,n,r,i,a){let o=null,s=0,c=!1,l=/* @__PURE__ */ new Set,u=()=>{l.forEach(e=>clearTimeout(e)),l.clear()},d=(e,t)=>{let n=setTimeout(()=>{l.delete(n),typeof document<`u`&&e()},t);l.add(n)},f=()=>{o&&o.parentElement&&o.remove(),o=null},p=()=>{if(o||c)return;let t=Oe(i,a,r);o=t.el,e.appendChild(o),s=Date.now(),r.label!==!1&&d(t.revealLabel,r.labelDelayMs)},m=()=>{o&&(o.classList.add(`persona-artifact-frame-loading--out`),d(f,220))},h=()=>{n===null?t.removeEventListener(`load`,v):typeof window<`u`&&window.removeEventListener(`message`,_)},g=()=>{if(c||(c=!0,h(),u(),!o))return;let e=Math.max(0,r.minVisibleMs-(Date.now()-s));e>0?d(m,e):m()};function _(e){if(n===null)return;let r=e.data;r&&r.persona===`artifact-preview-ready`&&r.token===n&&e.source===t.contentWindow&&g()}function v(){let e=e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)};e(()=>e(()=>g()))}return d(p,r.delayMs),d(g,r.timeoutMs),n===null?t.addEventListener(`load`,v):typeof window<`u`&&window.addEventListener(`message`,_),()=>{c=!0,u(),h(),f()}}function Ae(e,t){let{config:n}=t,o=t.registry??M()??s,c=t.bodyLayout,d=n.markdown?l(n.markdown):null,f=a(n.sanitize),p=e,h=!1,g=e=>{let t=i()!==null;d&&!t&&!h&&(h=!0,u(()=>z(p)));let n=d?d(e):r(e);return d&&t&&f?f(n):n},_=m(`div`,`persona-artifact-preview-body`),v=null,y=null,ee=null,b=()=>{ee&&=(ee(),null),v=null,y=null},x=null,S=null,C=null,w=!1,T=()=>{x=null,S=null,C=null,w=!1},D=null,O=null,k=()=>{D=null,O=null},A=0,j=e=>typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0),N=e=>e.scrollHeight-e.clientHeight-e.scrollTop<=40,P=e=>{if(!c)return;let t=e.scrollHeight-e.clientHeight>1,n=e.scrollHeight-e.clientHeight-e.scrollTop;e.classList.toggle(`persona-artifact-fade-top`,c.fadeTop&&t&&e.scrollTop>1),e.classList.toggle(`persona-artifact-fade-bottom`,c.fadeBottom&&t&&n>1)},F=e=>{A||=j(()=>{A=0,e.scrollTop=e.scrollHeight,P(e)})},I=(e,t,n,r)=>{let i=!!c,a=n.id+`|`+(i?`w`:`p`);if(!x||C!==a||x.parentElement!==_){b(),k(),_.replaceChildren();let e=m(`pre`,`persona-font-mono persona-text-xs persona-whitespace-pre-wrap persona-break-words persona-text-persona-primary persona-code-pre`),t=m(`code`,`persona-code`);if(e.appendChild(t),i){let t=m(`div`,`persona-artifact-source-window`);if(t.appendChild(e),_.appendChild(t),c?.overflow!==`clip`&&typeof t.addEventListener==`function`){let e=()=>t.scrollHeight-t.clientHeight>1;t.addEventListener(`scroll`,()=>{N(t)&&(w=!1),P(t)},{passive:!0}),t.addEventListener(`wheel`,t=>{e()&&t.deltaY<0&&(w=!0)},{passive:!0}),t.addEventListener(`touchmove`,()=>{e()&&(w=!0)},{passive:!0})}x=t}else _.appendChild(e),x=e;S=t,C=a}let o=i?x:null;o&&(o.classList.toggle(`persona-artifact-source-window--fixed`,r),o.classList.toggle(`persona-artifact-source-window--clip`,r&&c?.overflow===`clip`));let s=!o||N(o);if(S.replaceChildren(be(e,t?.language,t?.path)),o){let e=n.status!==`complete`;r&&e&&c?.followOutput&&!w&&s?F(o):e||(w=!1),P(o)}},L=e=>{b(),T(),k(),_.replaceChildren();let t=m(`div`,`persona-text-sm persona-leading-relaxed persona-markdown-bubble`);t.innerHTML=g(e),_.appendChild(t)},ne=e=>{let t=e.id,r=n.features?.artifacts,i=W(e,r,`status-body`);if(D&&O===t&&D.parentElement===_){let e=D.querySelector(`.persona-artifact-status-view-text`);e&&G(e,i,r);return}b(),T(),_.replaceChildren();let a=m(`div`,`persona-artifact-status-view`),o=m(`div`,`persona-artifact-status-view-text`);G(o,i,r),a.appendChild(o),_.appendChild(a),D=a,O=t},R,re=()=>{let e=R;R=void 0,e?.controller.abort();try{e?.handle.destroy?.()}catch(e){console.error(`[AgentWidget] Artifact component cleanup failed:`,e)}},z=e=>{re(),p=e;let r=t.resolveViewMode?.(e)??c?.viewMode??`rendered`,i=e.artifactType===`markdown`?e.file:void 0,a=e.status!==`complete`;a||ce(e.id);let s=a?c?.streamingHeight:c?.completeHeight,l=!!c&&typeof s==`number`;if(c?.streamingView===`status`&&a){ne(e);return}if(i){let t=E(e.markdown??``),o=te(i),s=n.features?.artifacts?.filePreview?.enabled!==!1;if(!a&&r===`rendered`&&s&&(o===`html`||o===`svg`)){let r=e.id+`\0`+t;if(v&&y===r&&v.parentElement===_)return;T(),k(),b(),_.replaceChildren();let i=n.features?.artifacts?.filePreview,a=i?.iframeSandbox??`allow-scripts`;!i?.dangerouslyAllowSameOrigin&&a.includes(`allow-same-origin`)&&(console.warn(`[AgentWidget] Stripped allow-same-origin from filePreview.iframeSandbox: it lets artifact content run with the page origin. Set filePreview.dangerouslyAllowSameOrigin to keep it.`),a=a.split(/\s+/).filter(e=>e&&e!==`allow-same-origin`).join(` `));let o=Te(i?.loading),s=m(`div`,`persona-artifact-frame`),c=m(`iframe`,`persona-artifact-iframe`);c.setAttribute(`sandbox`,a),c.setAttribute(`data-artifact-id`,e.id);let l=null;o.enabled&&o.injectReadySignal?(l=Ee(),c.srcdoc=t+De(l)):c.srcdoc=t,s.appendChild(c),_.appendChild(s),o.enabled&&(ee=ke(s,c,l,o,e.id,n)),v=s,y=r;return}if(b(),!a&&o===`markdown`&&r===`rendered`){L(t);return}I(t,{language:i.language,path:i.path},e,l);return}if(e.artifactType===`markdown`){if(r===`source`){b(),I(e.markdown??``,void 0,e,l);return}L(e.markdown??``);return}b(),T(),k(),_.replaceChildren();let u=e.component?n.components&&Object.prototype.hasOwnProperty.call(n.components,e.component)?n.components[e.component]:o.get(e.component):void 0;if(u){let t={id:e.id,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString()},r=new AbortController,i={message:t,config:n,updateProps:()=>{},signal:r.signal};try{let t=u(e.props??{},i);if(t){let e=`element`in t?t:{element:t};R={controller:r,handle:e},_.appendChild(e.element);return}}catch{}r.abort()}_.appendChild(Q(e))};return z(e),{el:_,update(e){z(e)},destroy(){re(),b()}}}function je(e,t){let n=t.orientation??`horizontal`,r=n===`vertical`?`ArrowUp`:`ArrowLeft`,i=n===`vertical`?`ArrowDown`:`ArrowRight`;e.setAttribute(`role`,`tablist`);let a=[],o=!1,s=e=>{typeof e.scrollIntoView==`function`&&e.scrollIntoView({block:`nearest`,inline:`nearest`})},c=e=>{let t=e;return a.findIndex(e=>e===t||e.contains(t))},l=e=>{let n=c(e.target);if(n<0)return;let o=n;if(e.key===i)o=Math.min(n+1,a.length-1);else if(e.key===r)o=Math.max(n-1,0);else if(e.key===`Home`)o=0;else if(e.key===`End`)o=a.length-1;else return;e.preventDefault(),o!==n&&t.onSelect(o)},u=e=>{let t=c(e.target);t>=0&&s(a[t])};return e.addEventListener(`keydown`,l),e.addEventListener(`focusin`,u),{beforeRender(){o=typeof document<`u`&&e.contains(document.activeElement)},render(e,t){if(a=e,e.forEach((e,n)=>{e.setAttribute(`role`,`tab`);let r=n===t;e.setAttribute(`aria-selected`,r?`true`:`false`),e.tabIndex=r||t<0&&n===0?0:-1}),o){let n=(t>=0?e[t]:void 0)??e[0];n&&typeof n.focus==`function`&&(s(n),n.focus())}},destroy(){e.removeEventListener(`keydown`,l),e.removeEventListener(`focusin`,u)}}}function Me(e,r){let i=e.features?.artifacts?.layout,a=(i?.toolbarPreset??`default`)===`document`,o=i?.toolbarTitle??`Artifacts`,s=i?.closeButtonLabel??`Close`,c=e=>({start:e===!1?!1:typeof e==`object`&&e?e.start!==!1:!0,end:e===!1?!1:typeof e==`object`&&e?e.end!==!1:!0}),{start:l,end:u}=c(i?.tabFade),d=typeof document<`u`?m(`div`,`persona-artifact-backdrop persona-fixed persona-inset-0 persona-z-[55] persona-bg-black/30 persona-hidden md:persona-hidden`):null,f=()=>{d?.classList.add(`persona-hidden`),p.classList.remove(`persona-artifact-drawer-open`),R?.closeMenu()};d&&d.addEventListener(`click`,()=>{f(),r.onDismiss?.()});let p=m(`aside`,`persona-artifact-pane persona-flex persona-flex-col persona-min-h-0 persona-min-w-0 persona-bg-persona-surface persona-text-persona-primary persona-border-l persona-border-persona-border`);C(p),p.setAttribute(`data-persona-theme-zone`,`artifact-pane`),a&&p.classList.add(`persona-artifact-pane-document`);let h=m(`div`,`persona-artifact-toolbar persona-flex persona-items-center persona-justify-between persona-gap-2 persona-px-2 persona-py-2 persona-border-b persona-border-persona-border persona-shrink-0`);h.setAttribute(`data-persona-theme-zone`,`artifact-toolbar`),a&&h.classList.add(`persona-artifact-toolbar-document`);let g=m(`span`,`persona-text-xs persona-font-medium persona-truncate`);g.textContent=o;let _=F({icon:`x`,label:s});_.addEventListener(`click`,()=>{f(),r.onDismiss?.()});let ee=`rendered`,S=ne({items:[{id:`rendered`,icon:`eye`,label:`Rendered view`,className:a?`persona-artifact-doc-icon-btn persona-artifact-view-btn`:void 0},{id:`source`,icon:`code-xml`,label:`Source`,className:a?`persona-artifact-doc-icon-btn persona-artifact-code-btn`:void 0}],selectedId:`rendered`,className:`persona-artifact-toggle-group persona-shrink-0`,onSelect:e=>{ee=e===`source`?`source`:`rendered`,Me()}}),T=m(`div`,`persona-flex persona-items-center persona-gap-1 persona-shrink-0`),E=i?.documentToolbarShowCopyLabel===!0,A=i?.documentToolbarShowCopyChevron===!0,j=i?.documentToolbarCopyMenuItems,M=!!(A&&j&&j.length>0),N=null,P,R=null;if(a&&(E||A)&&!M){if(P=E?I({icon:`copy`,label:`Copy`,iconSize:14,className:`persona-artifact-doc-copy-btn`}):F({icon:`copy`,label:`Copy`,className:`persona-artifact-doc-copy-btn`}),A){let e=t(y,14,`currentColor`,2);e&&P.appendChild(e)}}else a&&M?(R=L({label:`Copy`,icon:`copy`,iconSize:14,iconOnly:!E,primaryClassName:`persona-artifact-doc-copy-btn`,chevronLabel:`More copy options`,chevronClassName:`persona-artifact-doc-copy-menu-chevron persona-artifact-doc-icon-btn`,menuItems:(j??[]).map(e=>({id:e.id,label:e.label})),position:`bottom-right`,portal:()=>p.closest(`[data-persona-root]`)??document.body,onSelect:e=>void ue(e)}),N=R.element,P=R.primaryButton):a?P=F({icon:`copy`,label:`Copy`,className:`persona-artifact-doc-icon-btn`}):(P=F({icon:`copy`,label:`Copy`}),i?.showCopyButton!==!0&&P.classList.add(`persona-hidden`));let B=F(a?{icon:`refresh-cw`,label:`Refresh`,className:`persona-artifact-doc-icon-btn`}:{icon:`refresh-cw`,label:`Refresh`});i?.onDocumentToolbarRefresh||B.classList.add(`persona-hidden`);let V=F(a?{icon:`x`,label:s,className:`persona-artifact-doc-icon-btn`}:{icon:`x`,label:s}),H=F({icon:`maximize`,label:`Expand artifacts panel`,className:`persona-artifact-expand-btn`+(a?` persona-artifact-doc-icon-btn`:``),onClick:()=>r.onToggleExpand?.()});i?.showExpandToggle!==!0&&H.classList.add(`persona-hidden`);let U=m(`div`,`persona-flex persona-items-center persona-gap-1 persona-shrink-0 persona-artifact-toolbar-custom-actions`),ie=e.features?.artifacts?.toolbarActions??[],ae=()=>{let e=X.find(e=>e.id===Z)??X[X.length-1],t=e?.id??null,n=e?.artifactType===`markdown`?e.markdown??``:``,r=e?JSON.stringify({component:e.component,props:e.props},null,2):``,{filename:i,mime:a,content:o}=O({title:e?.title,markdown:e?.markdown??``,file:e?.file});return{markdown:n,jsonPayload:r,id:t,file:e?.file,suggestedFilename:i,mime:a,content:o}},oe=()=>{let{suggestedFilename:e,mime:t,content:n}=ae();n&&k({filename:e,mime:t,content:n})},se=e=>{let{id:t,...n}=ae();return{actionId:e,artifactId:t,...n}},ce=async()=>{let e=X.find(e=>e.id===Z)??X[X.length-1];try{return await navigator.clipboard.writeText(xe(e)),!0}catch{return!1}},le=null,W=()=>{le?.();let e=P.querySelector(`svg`),n=Number(e?.getAttribute(`width`))||16,r=t(v,n,`currentColor`,2);if(!e||!r)return;e.replaceWith(r);let i=P.querySelector(`span`);i&&(i.textContent=`Copied`);let a=setTimeout(()=>le?.(),2e3);le=()=>{clearTimeout(a),r.replaceWith(e),i&&(i.textContent=`Copy`),le=null}};P.addEventListener(`click`,async()=>{let e=i?.onDocumentToolbarCopyMenuSelect;if(e&&M)try{if(await e(se(`primary`))===!1){await ce()&&W();return}W()}catch{}else await ce()&&W()});async function ue(e){let t=i?.onDocumentToolbarCopyMenuSelect;try{if(t&&await t(se(e))!==!1)return;if(e===`download`){oe();return}let{markdown:n,jsonPayload:r}=ae();e===`markdown`||e===`md`?await navigator.clipboard.writeText(n):e===`json`||e===`source`?await navigator.clipboard.writeText(r):await navigator.clipboard.writeText(n||r),W()}catch{}}B.addEventListener(`click`,async()=>{try{await i?.onDocumentToolbarRefresh?.()}catch{}Me()}),V.addEventListener(`click`,()=>{f(),r.onDismiss?.()});let G=m(`span`,`persona-min-w-0 persona-flex-1 persona-text-xs persona-font-medium persona-text-persona-primary persona-truncate persona-text-center md:persona-text-left`);if(a)h.replaceChildren(),N?T.append(N,B,V):T.append(P,B,V),T.insertBefore(U,V),T.insertBefore(H,V),h.append(S.element,G,T);else{let e=m(`div`,`persona-flex persona-items-center persona-gap-1 persona-shrink-0`);e.append(P,U,H,_),h.appendChild(g),h.appendChild(e)}let K=m(`div`,`persona-artifact-list persona-shrink-0 persona-flex persona-gap-1 persona-overflow-x-auto persona-p-2 persona-border-b persona-border-persona-border`),q=e.features?.artifacts?.renderTabBar,J=m(`div`,`persona-artifact-tab-custom persona-shrink-0 persona-border-b persona-border-persona-border persona-hidden`),de=je(K,{onSelect:e=>r.onSelect(X[e].id)}),fe=e=>{let t=e.scrollWidth-e.clientWidth,n=t>1,r=Math.abs(e.scrollLeft);e.classList.toggle(`persona-artifact-tab-fade-start`,l&&n&&r>1),e.classList.toggle(`persona-artifact-tab-fade-end`,u&&n&&r<t-1)},pe=0,me=()=>{if(pe)return;let e=()=>{pe=0,fe(K)};pe=typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)};K.addEventListener(`scroll`,()=>me(),{passive:!0}),typeof ResizeObserver<`u`&&new ResizeObserver(()=>fe(K)).observe(K);let Y=m(`div`,`persona-artifact-content persona-flex-1 persona-min-h-0 persona-overflow-y-auto persona-p-3`),he=()=>{Y.scrollLeft=0},ge=()=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(he):setTimeout(he,0)},_e=e=>{let t=e.features?.artifacts?.layout,r=n(e,t?.panePadding,`pane.padding`)??``;for(let e of[h,K,J])e.style.paddingLeft=r,e.style.paddingRight=r;Y.style.padding=r;let i=n(e,t?.tabFadeSize,`tab.fadeSize`);i?K.style.setProperty(`--persona-artifact-tab-fade-size`,i):K.style.removeProperty(`--persona-artifact-tab-fade-size`)};_e(e),p.appendChild(h),p.appendChild(K),p.appendChild(J),p.appendChild(Y);let X=[],Z=null,ve=!1,ye=!1,be=!0,Se=!1,Ce=null,we=``,Q=null,Te=!1,Ee=e=>e.artifactType===`markdown`&&e.file||a?ee:`rendered`,De=e=>{a||(e&&!Te?(h.insertBefore(S.element,g),Te=!0):!e&&Te&&(S.element.remove(),Te=!1))},Oe=()=>Z&&X.find(e=>e.id===Z)||X[X.length-1],ke=()=>{let e=z(Oe());if(!e){U.replaceChildren();return}let t=ie.filter(t=>t.visible===void 0||t.visible(e)).map(e=>re(e,{documentChrome:a,onClick:()=>{let t=z(Oe());if(t)try{Promise.resolve(e.onClick(t)).catch(()=>{})}catch{}}}));U.replaceChildren(...t)},Me=()=>{ke();let t=a&&X.length<=1,n=!!q;if(K.classList.toggle(`persona-hidden`,t||n),J.classList.toggle(`persona-hidden`,t||!n),n&&q){let e=X.map(e=>e.id).join(`|`)+` `+(Z??``);if(e!==we){we=e;let t=q({records:X,selectedId:Z,onSelect:r.onSelect});J.firstElementChild!==t&&J.replaceChildren(t)}}else{de.beforeRender(),K.replaceChildren();let e=[],t=-1;for(let[n,i]of X.entries()){let a=m(`button`,`persona-artifact-tab persona-shrink-0 persona-rounded-lg persona-px-2 persona-py-1 persona-text-xs persona-border persona-border-transparent persona-text-persona-primary`);a.type=`button`;let o=i.artifactType===`markdown`?i.file:void 0,s=o?w(o.path):i.title||i.id.slice(0,8),c=o?.path||i.title||s;a.textContent=s,a.title=c,a.setAttribute(`aria-label`,c),i.id===Z&&(a.classList.add(`persona-bg-persona-container`,`persona-border-persona-border`),t=n),a.addEventListener(`click`,()=>r.onSelect(i.id)),K.appendChild(a),e.push(a)}if(de.render(e,t),t>=0&&Z!==Ce){Ce=Z;let n=e[t];typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`nearest`,inline:`nearest`})}fe(K)}let i=Z&&X.find(e=>e.id===Z)||X[X.length-1];if(!i){Y.replaceChildren(),Q?.destroy(),Q=null,De(!1);return}let s=i.artifactType===`markdown`?i.file:void 0;if(De(!!s&&te(s)!==`other`),a){let e=s?D(s):i.artifactType===`markdown`?`MD`:i.component??`Component`,t=(i.title||`Document`).trim(),n=s?w(s.path):t.replace(/\s*·\s*MD\s*$/i,``).trim()||`Document`;G.textContent=`${n} · ${e}`}else g.textContent=s?w(s.path):o;Q?(Q.el.parentElement!==Y&&Y.replaceChildren(Q.el),Q.update(i)):(Q=Ae(i,{config:e,resolveViewMode:Ee}),Y.replaceChildren(Q.el)),Y.classList.toggle(`persona-artifact-content-flush`,!!Y.querySelector(`.persona-code-pre`))},Ne=()=>{let e=X.length>0;if(p.classList.toggle(`persona-hidden`,!e),d){let t=((typeof p.closest==`function`?p.closest(`[data-persona-root]`):null)?.classList.contains(`persona-artifact-narrow-host`)??!1)||typeof window<`u`&&window.matchMedia(`(max-width: 640px)`).matches;e&&t&&ve?(d.classList.remove(`persona-hidden`),p.classList.add(`persona-artifact-drawer-open`)):(d.classList.add(`persona-hidden`),p.classList.remove(`persona-artifact-drawer-open`))}},Pe=()=>{Se=!1,Me(),Ne()};return{setStyleConfig:_e,element:p,backdrop:d,update(e){let t=e.selectedId??e.artifacts[e.artifacts.length-1]?.id??null,n=t!==Z;X=e.artifacts,Z=t,X.length>0&&(ve=!0),Se=!0,be&&Pe(),n&&he()},setMobileOpen(e){ve=e,!e&&d?(d.classList.add(`persona-hidden`),p.classList.remove(`persona-artifact-drawer-open`)):Ne()},setExpanded(e){e!==ye&&(ye=e,ge());let n=t(e?x:b,16,`currentColor`,2);n&&H.replaceChildren(n);let r=e?`Collapse artifacts panel`:`Expand artifacts panel`;H.setAttribute(`aria-label`,r),H.title=r},setExpandToggleVisible(e){H.classList.toggle(`persona-hidden`,!e)},setCopyButtonVisible(e){a||P.classList.toggle(`persona-hidden`,!e)},setRefreshButtonVisible(e){B.classList.toggle(`persona-hidden`,!e)},setCustomActions(e){ie=e,ke()},setTabFade(e){let t=c(e);(t.start!==l||t.end!==u)&&(l=t.start,u=t.end,fe(K))},setRenderTabBar(e){e!==q&&(q=e,we=``,Me())},setVisible(e){e!==be&&(be=e,e&&Se&&Pe())},destroy(){Q?.destroy(),Q=null}}}function Ne(e,t){let n=e.file&&typeof e.file==`object`&&!Array.isArray(e.file)?e.file:void 0,r=typeof e.title==`string`&&e.title?e.title:`Untitled artifact`,i=n?w(n.path):r,a=typeof e.artifactId==`string`?e.artifactId:``,o=e.status===`streaming`?`streaming`:`complete`,s=typeof e.artifactType==`string`?e.artifactType:`markdown`,c=e.presentation&&typeof e.presentation==`object`&&!Array.isArray(e.presentation)?e.presentation:void 0,l=n?D(n):s===`component`?`Component`:`Document`,u=document.createElement(`div`);C(u),u.className=`persona-artifact-card persona-flex persona-w-full persona-max-w-full persona-items-center persona-gap-3 persona-px-4 persona-py-3`,u.tabIndex=0,u.setAttribute(`role`,`button`),u.setAttribute(`aria-label`,`Open ${i} in artifact panel`),a&&u.setAttribute(`data-open-artifact`,a);let d=document.createElement(`div`);d.className=`persona-flex persona-h-10 persona-w-10 persona-flex-shrink-0 persona-items-center persona-justify-center persona-rounded-lg`,d.style.border=`1px solid var(--persona-border, #e5e7eb)`,d.style.color=`var(--persona-muted, #9ca3af)`,d.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>`;let f=document.createElement(`div`);f.className=`persona-min-w-0 persona-flex-1 persona-flex persona-flex-col persona-gap-0.5`;let p=document.createElement(`div`);p.className=`persona-truncate persona-text-sm persona-font-medium`,p.style.color=`var(--persona-text, #1f2937)`,p.textContent=i;let m=document.createElement(`div`);if(m.className=`persona-text-xs persona-flex persona-items-center persona-gap-1.5`,m.style.color=`var(--persona-muted, #9ca3af)`,o===`streaming`){let i=t?.config?.features?.artifacts;G(m,W({id:a,artifactType:s===`component`?`component`:`markdown`,title:r,status:`streaming`,...typeof e.markdown==`string`?{markdown:e.markdown}:{},...n?{file:n}:{},...c?{presentation:c}:{}},i,`card`),i)}else a&&ce(a),m.textContent=l;if(f.append(p,m),u.append(d,f),o===`complete`){let r=t?.config?.features?.artifacts?.cardActions;if(r&&r.length>0){let t={artifactId:a||null,title:i,artifactType:s,markdown:typeof e.markdown==`string`?e.markdown:void 0,file:n};for(let e of r)try{if(e.visible===void 0||e.visible(t)){let t=re(e);t.setAttribute(`data-artifact-custom-action`,e.id),t.className=`${t.className} persona-flex-shrink-0`,u.append(t)}}catch{}}let o=I({label:`Download`,className:`persona-flex-shrink-0`});o.title=`Download ${i}`,o.setAttribute(`data-download-artifact`,a),u.append(o)}return u}const Pe=(e,t)=>{if(t?.config?.future?.v5Defaults===!0&&t.config.features?.artifacts?.enabled!==!0){let e=document.createElement(`div`);return e.hidden=!0,e}let n=t?.config?.features?.artifacts?.renderCard;if(n){let r=typeof e.title==`string`&&e.title?e.title:`Untitled artifact`,i=typeof e.artifactId==`string`?e.artifactId:``,a=e.status===`streaming`?`streaming`:`complete`,o=n({artifact:{artifactId:i,title:r,artifactType:typeof e.artifactType==`string`?e.artifactType:`markdown`,status:a},config:t.config,defaultRenderer:()=>Ne(e,t)});if(o)return o}return Ne(e,t)},$=/* @__PURE__ */ new WeakMap;function Fe(e,t,n){if(t.length===0)return;let r=new Map(t.map(e=>[e.id,e]));e.querySelectorAll(`[data-artifact-inline]`).forEach(e=>{let t=$.get(e);if(!t)return;let i=r.get(e.getAttribute(`data-artifact-inline`)??``);i&&t(i,n)})}function Ie(e){return $.has(e)}function Le(e){let t=typeof e.artifactId==`string`?e.artifactId:``,n=typeof e.title==`string`&&e.title?e.title:void 0,r=e.status===`streaming`?`streaming`:`complete`,i=e.presentation&&typeof e.presentation==`object`&&!Array.isArray(e.presentation)?e.presentation:void 0;if(e.artifactType===`component`){let a=e.componentProps,o=a&&typeof a==`object`&&!Array.isArray(a)?a:{};return{id:t,artifactType:`component`,title:n,status:r,component:typeof e.component==`string`?e.component:``,props:o,...i?{presentation:i}:{}}}let a=e.file&&typeof e.file==`object`&&!Array.isArray(e.file)?e.file:void 0;return{id:t,artifactType:`markdown`,title:n,status:r,markdown:typeof e.markdown==`string`?e.markdown:``,...a?{file:a}:{},...i?{presentation:i}:{}}}function Re(e){let t=e.artifactType===`markdown`?e.file:void 0;return{title:t?w(t.path):e.title&&e.title.trim()?e.title:`Untitled artifact`,typeLabel:t?D(t):e.artifactType===`component`?`Component`:`Document`}}function ze(e){let t={artifactId:e.id,title:e.title??``,status:e.status,artifactType:e.artifactType};return e.artifactType===`markdown`&&(typeof e.markdown==`string`&&(t.markdown=e.markdown),e.file&&(t.file=e.file)),t}function Be(e,t,n){let{swap:r,onSettled:i}=n,a=!1;try{a=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}catch{a=!1}if(!t||!e.isConnected||a||typeof e.animate!=`function`){r(),i();return}e.style.height=`${t}px`,e.style.overflow=`hidden`;let o=[];for(let t of Array.from(e.children))t instanceof HTMLElement&&o.push(t.animate([{opacity:1},{opacity:0}],{duration:180,easing:`ease-out`,fill:`forwards`}));window.setTimeout(()=>{for(let e of o)e.cancel();r();let n=()=>{e.style.removeProperty(`height`),e.style.removeProperty(`overflow`)};if(!e.isConnected){n(),i();return}e.style.height=`auto`;let a=e.getBoundingClientRect().height;if(e.style.height=`${t}px`,!a||Math.abs(a-t)<1){n(),i();return}let s=Math.abs(t-a),c=Math.round(Math.min(500,Math.max(300,240+s*.8))),l=Math.round(c*.35),u=e.firstElementChild instanceof HTMLElement?e.firstElementChild:null,d=u?u.animate([{opacity:0},{opacity:1}],{duration:240,delay:l,easing:`ease-out`,fill:`backwards`}):null,f=e.animate([{height:`${t}px`},{height:`${a}px`}],{duration:c,easing:`cubic-bezier(0.2, 0, 0, 1)`});e.style.height=`${a}px`;let p=!1,m=()=>{p||(p=!0,n(),i())};Promise.allSettled([f.finished,d?.finished].filter(Boolean)).then(m),window.setTimeout(m,Math.max(c,l+240)+120)},180)}function Ve(e){let t=e?.inlineChrome;if(t===!1)return{chromeEnabled:!1,showCopy:!1,showExpand:!1,showViewToggle:!1};let n=typeof t==`object`?t:void 0;return{chromeEnabled:!0,showCopy:n?.showCopy!==!1,showExpand:n?.showExpand!==!1,showViewToggle:n?.showViewToggle!==!1}}const He=`--persona-artifact-inline-body-height`;function Ue(e){let t=e?.inlineBody,n=t?.streamingView===`status`?`status`:`source`,r=t?.viewMode===`source`?`source`:`rendered`,i=320,a=320,o=t?.height;typeof o==`number`||o===`auto`?(i=o,a=o):o&&typeof o==`object`&&(i=o.streaming??320,a=o.complete??320);let s=t?.overflow===`clip`?`clip`:`scroll`,c=s!==`clip`&&t?.followOutput!==!1,l,u,d=t?.fadeMask;d===!0?(l=!0,u=!0):d===!1?(l=!1,u=!1):d&&typeof d==`object`?(l=d.top===!0,u=d.bottom===!0):s===`clip`?(l=!1,u=!0):(l=!0,u=!0);let f=t?.transition===`none`?`none`:`auto`,p=t?.completeDisplay===`card`?`card`:`inline`;return{streamingView:n,viewMode:r,streamingHeight:i,completeHeight:a,followOutput:c,overflow:s,fadeTop:l,fadeBottom:u,transition:f,completeDisplay:p}}function We(e,n){let r=Le(e),i=n.config?.features?.artifacts,{chromeEnabled:a,showCopy:o,showExpand:s,showViewToggle:c}=Ve(i),l=i?.inlineActions??[],u=Ue(i),d=u.completeDisplay===`card`,f=null,p=r,h=m(`div`,`persona-artifact-inline persona-w-full persona-max-w-full`);C(h),h.setAttribute(`data-persona-theme-zone`,`artifact-inline`),r.id&&h.setAttribute(`data-artifact-inline`,r.id);let g=e=>Pe(ze(e),n),_=null,v=e=>{_?.destroy(),_=null,h.classList.add(`persona-artifact-inline--card`),h.style.removeProperty(He),h.replaceChildren(g(e)),$.set(h,e=>{h.replaceChildren(g(e))})};if(d&&r.status===`complete`)return v(r),h;let y=Ae(r,{config:n.config,bodyLayout:u,resolveViewMode:()=>f??u.viewMode});_=y;let b=m(`div`,`persona-artifact-inline-body`);b.appendChild(y.el);let x=e=>{let t=e.status!==`complete`,n=t?u.streamingHeight:u.completeHeight,r=typeof n==`number`;r?h.style.setProperty(He,`${n}px`):h.style.removeProperty(He);let i=!!y.el.querySelector(`.persona-code-pre`),a=!!y.el.querySelector(`iframe, .persona-artifact-source-window--fixed, .persona-artifact-status-view`);b.classList.toggle(`persona-artifact-content-flush`,i),b.classList.toggle(`persona-artifact-inline-body--sized`,r&&a),b.classList.toggle(`persona-artifact-inline-body--cap`,!t&&!a&&typeof u.completeHeight==`number`)},S=r.status,w=(e,t)=>{S!==`complete`&&e.status===`complete`?(typeof u.completeHeight==`number`?h.style.setProperty(He,`${u.completeHeight}px`):h.style.removeProperty(He),we(b,t?.suppressTransition?`none`:u.transition,e.id,()=>{y.update(e),x(e)})):y.update(e),x(e),S=e.status};x(r);let T=u.overflow===`clip`&&s&&!!r.id;if(T&&(b.setAttribute(`data-expand-artifact-inline`,r.id),b.setAttribute(`role`,`button`),b.setAttribute(`tabindex`,`0`),b.classList.add(`persona-cursor-pointer`),b.setAttribute(`aria-label`,`Open ${Re(r).title} in panel`)),!a)return h.appendChild(b),$.set(h,w),h;let E=m(`div`,`persona-artifact-inline-chrome`);E.setAttribute(`data-persona-theme-zone`,`artifact-inline-chrome`);let D=m(`div`,`persona-artifact-inline-chrome-lead`),O=m(`span`,`persona-flex persona-items-center persona-flex-shrink-0`),k=t(ee,16,`currentColor`,2);k&&O.appendChild(k);let A=m(`span`,`persona-artifact-inline-title persona-truncate persona-min-w-0`),j=m(`span`,`persona-artifact-inline-type`);D.append(O,A,j);let M=m(`div`,`persona-artifact-inline-chrome-actions`),N=m(`span`,`persona-flex persona-items-center persona-gap-1`),P=()=>f??u.viewMode,I=c?ne({items:[{id:`rendered`,icon:`eye`,label:`Rendered view`,className:`persona-artifact-doc-icon-btn persona-artifact-view-btn`},{id:`source`,icon:`code-xml`,label:`Source`,className:`persona-artifact-doc-icon-btn persona-artifact-code-btn`}],selectedId:P(),className:`persona-artifact-toggle-group persona-flex-shrink-0`,onSelect:e=>{let t=e===`source`?`source`:`rendered`;t!==P()&&(f=t,y.update(p),x(p))}}):null,L=o?F({icon:`copy`,label:`Copy`,className:`persona-artifact-doc-icon-btn persona-flex-shrink-0`}):null;L&&r.id&&L.setAttribute(`data-copy-artifact`,r.id);let R=s?F({icon:`maximize`,label:`Open in panel`,className:`persona-artifact-doc-icon-btn persona-flex-shrink-0`}):null;R&&r.id&&R.setAttribute(`data-expand-artifact-inline`,r.id),M.appendChild(N),I&&M.appendChild(I.element),L&&M.appendChild(L),R&&M.appendChild(R),E.append(D,M),h.append(E,b);let B=e=>{let{title:t,typeLabel:n}=Re(e);A.textContent=t,A.title=t,T&&b.setAttribute(`aria-label`,`Open ${t} in panel`);let r=e.status!==`complete`;if(r){j.classList.contains(`persona-artifact-inline-status`)||(j.className=`persona-artifact-inline-status`,j.removeAttribute(`data-preserve-animation`),j.replaceChildren());let t=W(e,i,`inline-chrome`);G(j,t,i)}else ce(e.id),j.className=`persona-artifact-inline-type`,j.removeAttribute(`data-preserve-animation`),j.replaceChildren(),j.textContent=n;if(L&&L.classList.toggle(`persona-hidden`,r),I){let t=e.artifactType===`markdown`?e.file:void 0,n=!1;if(!r&&t&&u.viewMode!==`source`){let e=te(t);e===`markdown`?n=!0:(e===`html`||e===`svg`)&&(n=i?.filePreview?.enabled!==!1)}I.element.classList.toggle(`persona-hidden`,!n),I.setSelected(P())}if(N.replaceChildren(),!r&&l.length>0){let t=z(e);if(t)for(let e of l)try{if(e.visible===void 0||e.visible(t)){let t=re(e,{documentChrome:!0});t.setAttribute(`data-artifact-custom-action`,e.id),t.classList.add(`persona-flex-shrink-0`),N.appendChild(t)}}catch{}}};return B(r),$.set(h,(e,t)=>{if(d&&S!==`complete`&&e.status===`complete`){let t=h.isConnected?h.getBoundingClientRect().height:0;S=`complete`;let n=e,r=!1,i=e=>{n=e,r=!0};$.set(h,i),Be(h,t,{swap:()=>{v(n),r=!1,$.set(h,i)},onSettled:()=>{r?v(n):$.set(h,e=>{h.replaceChildren(g(e))})}})}else(e.status!==`complete`||e.id!==p.id)&&(f=null),p=e,w(e,t),B(e)}),h}const Ge=(e,t)=>{if(t?.config?.future?.v5Defaults===!0&&t.config.features?.artifacts?.enabled!==!0){let e=document.createElement(`div`);return e.hidden=!0,e}let n=t?.config?.features?.artifacts?.renderInline;if(n){let r=typeof e.title==`string`&&e.title?e.title:`Untitled artifact`,i=typeof e.artifactId==`string`?e.artifactId:``,a=e.status===`streaming`?`streaming`:`complete`,o=n({artifact:{artifactId:i,title:r,artifactType:typeof e.artifactType==`string`?e.artifactType:`markdown`,status:a},config:t.config,defaultRenderer:()=>We(e,t)});if(o)return o}return We(e,t)};function Ke(e){let{mount:t,splitRoot:n,pane:r}=e,i=null,a=null,s=null;function l(){s?.(),s=null}let u=()=>{if(!n||!i)return;let e=t.classList.contains(`persona-artifact-welded-split`),r=t.ownerDocument.defaultView??window,a=r.innerWidth<=640;if(!e||t.classList.contains(`persona-artifact-narrow-host`)||a){i.style.removeProperty(`position`),i.style.removeProperty(`left`),i.style.removeProperty(`top`),i.style.removeProperty(`bottom`),i.style.removeProperty(`width`),i.style.removeProperty(`z-index`);return}let o=n.firstElementChild;if(!o||o===i)return;i.style.position=`absolute`,i.style.top=`0`,i.style.bottom=`0`,i.style.width=`10px`,i.style.zIndex=`5`;let s=c(n,r),l=o.offsetWidth+s/2-5;i.style.left=`${Math.max(0,l)}px`};return{update:()=>{let d=e.getConfig();if(n&&r){if(d.features?.artifacts?.layout?.resizable!==!0)a?.(),a=null,l(),i&&=(i.remove(),null),r.element.style.removeProperty(`width`),r.element.style.removeProperty(`maxWidth`);else{if(!i){let d=m(`div`,`persona-artifact-split-handle persona-shrink-0 persona-h-full`);d.setAttribute(`role`,`separator`),d.setAttribute(`aria-orientation`,`vertical`),d.setAttribute(`aria-label`,`Resize artifacts panel`),d.tabIndex=0;let f=t.ownerDocument,p=f.defaultView??window,h=i=>{if(!r||i.button!==0||t.classList.contains(`persona-artifact-narrow-host`)||t.classList.contains(`persona-artifact-expanded`)||p.innerWidth<=640)return;i.preventDefault(),l();let a=i.clientX,m=r.element.getBoundingClientRect().width,h=e.getConfig().features?.artifacts?.layout,g=i=>{let s=n.getBoundingClientRect().width,l=t.classList.contains(`persona-artifact-welded-split`),f=c(n,p),g=l?0:d.getBoundingClientRect().width||6,_=m-(i.clientX-a),v=o(_,s,f,g,h?.resizableMinWidth,h?.resizableMaxWidth,e.chatMinWidth());r.element.style.width=`${v}px`,r.element.style.maxWidth=`none`,u()},_=()=>{f.removeEventListener(`pointermove`,g),f.removeEventListener(`pointerup`,_),f.removeEventListener(`pointercancel`,_),s=null;try{d.releasePointerCapture(i.pointerId)}catch{}};s=_,f.addEventListener(`pointermove`,g),f.addEventListener(`pointerup`,_),f.addEventListener(`pointercancel`,_);try{d.setPointerCapture(i.pointerId)}catch{}};d.addEventListener(`pointerdown`,h),i=d,n.insertBefore(d,r.element),a=()=>{d.removeEventListener(`pointerdown`,h)}}if(i){let t=e.isVisible();i.classList.toggle(`persona-hidden`,!t),u()}}}},destroy(){a?.(),a=null,l(),i&&=(i.remove(),null)}}}export{Pe as PersonaArtifactCard,Ge as PersonaArtifactInline,d as __provideMarkdownParsers,e as __setIconsExtraLoader,xe as artifactCopyText,Me as createArtifactPane,Ke as createArtifactResizer,O as downloadInfoFor,C as ensureArtifactStyles,Ie as hasLiveInlineArtifactBlock,j as initArtifactsUi,k as triggerArtifactDownload,Fe as updateInlineArtifactBlocks};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-CjhA_5Jk.js";import{t}from"./chunk-DqbzUVEI.js";const n=16e3,r=/* @__PURE__ */ new Map([[`idle_timeout`,`Voice call ended after a quiet period.`],[`max_duration`,`This voice call reached its time limit.`],[`provider_ended`,`The voice session ended.`],[`quota`,`Voice is unavailable right now.`],[`auth_expired`,`Voice session expired. Tap the mic to reconnect.`]]),i=[`provider_error`,`server_restart`],a=`Voice connection lost.`;function o(e,t){let n=t.slice(0,4e3).trim(),r=8e3-(n?n.length+2:0)-20,i=[];for(let t of e.slice(-12).reverse()){let e=t.content.replace(/\s+/g,` `).trim();if(!e)continue;e.length>2e3&&(e=`${e.slice(0,1999)}…`);let n=`${t.role===`user`?`User`:`Assistant`}: ${e}`;if(n.length+1>r)break;r-=n.length+1,i.unshift(n)}let a=i.length>0?[`Conversation so far:\n${i.join(`
|
|
2
2
|
`)}`]:[];return n&&a.push(n),a.join(`
|
|
3
3
|
|
|
4
4
|
`)}function s(e){return e.byteLength>=44&&new DataView(e).getUint32(0,!1)===1380533830?new Uint8Array(e,44):new Uint8Array(e)}function c(e){let t=e.replace(/\/+$/,``);return/^wss?:\/\//i.test(t)?t:/^https?:\/\//i.test(t)?t.replace(/^http/i,`ws`):`${typeof window<`u`&&window.location?.protocol===`https:`?`wss:`:`ws:`}//${t}`}function l(e){return c(e).replace(/^ws/i,`http`)}function u(e){return typeof e!=`number`||!Number.isFinite(e)?3e4:Math.min(6e5,Math.max(3e4,Math.round(e)))}var d=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m;#h;#g;#_;#v;#y;#b;#x;#S;#C;#w;#T;#E;#D;#O;#k;#A;#j;#M;#N;#P;#F;#I;#L;#R;#z;#B;#V;#H;#U;#W;#G;#K;#q;#J;#Y;constructor(e){this.config=e,this.type=`runtype`,this.#e=null,this.#t=null,this.#n=[],this.#r=null,this.#i=null,this.#a=null,this.#o=[],this.#s=0,this.#c=null,this.#l=!1,this.#u=!1,this.#d=0,this.#f=!1,this.#p=-1/0,this.#m=null,this.#h=!1,this.#g=!1,this.#_=0,this.#v=0,this.#b=!1,this.bridge=null,this.#x=!1,this.#S=/* @__PURE__ */ new Set,this.#C=/* @__PURE__ */ new Map,this.#w=/* @__PURE__ */ new Set,this.#E=null,this.#D=null,this.#k=!1,this.#A=!1,this.#j=!1,this.#M=null,this.#N=null,this.#P=Promise.resolve(),this.#F=/* @__PURE__ */ new Set,this.#I=/* @__PURE__ */ new Set,this.#L=null,this.#R=!1,this.#z=/* @__PURE__ */ new Set,this.#B=/* @__PURE__ */ new Set,this.#V=null,this.#H=/* @__PURE__ */ new Set,this.#U=null,this.#W=/* @__PURE__ */ new Map,this.#G=[],this.#K=[],this.#q=[],this.#J=[],this.#Y=[]}async connect(){}setSessionBridge(e){this.bridge=e}prewarm(){if(this.#l||this.#m)return;let e=this.config?.agentId,t=this.config?.clientToken,n=this.config?.host;if(!e||!t||!n)return;let r=Date.now();if(!(r-this.#p<3e4)){this.#p=r;try{this.config?.prewarmMode===`attach`?this.#Z(n,e,t):this.#X(n,e,t)}catch{}}}#X(e,t,n){if(typeof fetch!=`function`)return;let r=`${l(e)}/v1/client/agents/${encodeURIComponent(t)}/voice/prewarm`;fetch(r,{method:`POST`,headers:{Authorization:`Bearer ${n}`},keepalive:!0}).catch(()=>{})}#Z(e,t,n){let r=new URLSearchParams,i=this.config?.attachIdleMs,a=u(i);i!==void 0&&r.set(`attachIdleMs`,String(a));let o=new WebSocket(this.#te(e,t,r),[`runtype.bearer`,`runtype.attach`,n]);o.binaryType=`arraybuffer`;let s=()=>{},c={ws:o,state:`connecting`,ready:new Promise(e=>{s=e}),settle:s,openedAt:0,idleTimer:void 0};this.#m=c,o.onopen=()=>{this.#m===c&&(c.state=o.protocol===`runtype.attach`?`attached`:`live`,c.openedAt=Date.now(),this.#Q(c,a),c.state===`attached`&&o.send(`{"type":"ping"}`),c.settle())},o.onmessage=e=>{if(this.#m!==c||typeof e.data!=`string`)return;let t;try{t=JSON.parse(e.data)}catch{return}t.type===`attached`&&typeof t.idleMs==`number`&&this.#Q(c,t.idleMs-(Date.now()-c.openedAt))},o.onerror=()=>{},o.onclose=()=>{this.#m===c&&this.#$()}}#Q(e,t){clearTimeout(e.idleTimer),e.idleTimer=setTimeout(()=>{this.#m===e&&this.#$()},Math.max(0,t))}#$(){let e=this.#m;if(!e)return;this.#m=null,clearTimeout(e.idleTimer);let{ws:t}=e;if(t.onopen=null,t.onmessage=null,t.onerror=null,t.onclose=null,e.settle(),t.readyState===WebSocket.CONNECTING||t.readyState===WebSocket.OPEN)try{t.close(1e3,`prewarm released`)}catch{}}async#ee(){let e=this.#m;if(!e)return null;if(e.state===`connecting`){let t;await Promise.race([e.ready,new Promise(e=>{t=setTimeout(e,5e3)})]),clearTimeout(t)}return this.#m===e?e.state===`connecting`||e.ws.readyState!==WebSocket.OPEN?(this.#$(),null):(this.#m=null,clearTimeout(e.idleTimer),{ws:e.ws,live:e.state===`live`}):null}#te(t,n,r){let i=`partial_transcript,context`;this.bridge&&this.config?.clientDelegation!==!1&&(i+=`,client_delegation,delegation_update,delegation_read_back,delegation_stream`,this.bridge.clientTools?.()&&(i+=`,client_tools,prior_tool_results`)),r&&(i=`attach,${i}`);let a=new URLSearchParams({voiceProtocol:`runtype-browser-v1`,clientVersion:`persona/${e}`,voiceCapabilities:`full-duplex-v1`,clientCapabilities:i});return r?.forEach((e,t)=>a.set(t,e)),`${c(t)}/ws/agents/${encodeURIComponent(n)}/voice?${a}`}async startListening(){if(this.#l)return;let e=this.#A;e||(this.#k=!1,this.#D=null),this.#A=!1;let r=this.config?.agentId,i=this.config?.clientToken,o=this.config?.host;if(!r)throw Error(`Runtype voice requires an agentId`);if(!i)throw Error(`Runtype voice requires a clientToken`);if(!o)throw Error(`Runtype voice requires a host (or widget apiUrl)`);let s=++this.#d;this.#f=!1,this.#l=!0;try{let c=await navigator.mediaDevices.getUserMedia({audio:{sampleRate:n,channelCount:1,echoCancellation:!0}});if(s!==this.#d){c.getTracks().forEach(e=>e.stop());return}this.#r=c;let l=new(window.AudioContext||window.webkitAudioContext)({sampleRate:n});if(this.#t=l,l.state===`suspended`){if(await Promise.race([l.resume().catch(()=>{}),new Promise(t=>setTimeout(t,e?500:1e3))]),s!==this.#d)return;if(l.state!==`running`)throw Error(e?this.#D=`${a} Tap the mic to reconnect.`:`Audio blocked until a tap`)}let u=this.config?.createPlaybackEngine?await this.config.createPlaybackEngine():new t(24e3);if(s!==this.#d){u.destroy(),c.getTracks().forEach(e=>e.stop()),l.close().catch(()=>{});return}this.#c=u,this.#he(),this.#ie(l,c,s);let d=await this.#ee();if(s!==this.#d){d?.ws.close(1e3,`client ended call`);return}if(d){let{ws:e}=d;this.#e=e,this.#ne(e,s),d.live||e.send(`{"type":"start"}`),this.#ae(e),this.#be(`listening`);return}let f=new WebSocket(this.#te(o,r),[`runtype.bearer`,i]);f.binaryType=`arraybuffer`,this.#e=f,f.onopen=()=>{s===this.#d&&(this.#ae(f),this.#be(`listening`))},this.#ne(f,s)}catch(e){throw this.#ye(),this.#xe(e),this.#be(`error`),e}}#ne(e,t){e.onmessage=e=>this.#oe(e,t),e.onerror=()=>{t!==this.#d||this.#E||(this.#xe(/* @__PURE__ */ Error(`Voice connection failed`)),this.#be(`error`),this.#ye())},e.onclose=e=>{if(this.#f){this.#f=!1;return}if(t!==this.#d)return;let n=this.#E??(e.code===4408?{reason:`idle_timeout`}:null);if(n)this.#re(n.reason,n.message);else{if(e.code!==1e3){let t=e.code?` (code ${e.code})`:``;this.#xe(/* @__PURE__ */ Error(`Voice connection closed${t}`)),this.#be(`error`)}else this.#be(`idle`);this.#ye()}}}#re(e,t){let n=i.includes(e)&&!this.#k;if(this.#ye(),n)this.#k=!0,this.#l=!0,this.#D=e===`provider_error`?`${a} Reconnecting…`:`Reconnecting…`,this.#O=setTimeout(()=>{this.#l=!1,this.#A=!0,this.startListening().catch(()=>{})},1e3+Math.random()*1e3),this.#be(`idle`);else{if(i.includes(e))return this.#D=a,this.#xe(/* @__PURE__ */ Error(a)),this.#be(`error`);if(e===`error`)return this.#be(`error`);this.#D=e===`quota`&&t||r.get(e)||null,this.#be(`idle`)}}takeNotice(){let e=this.#D;return this.#D=null,e}getDisclosure(){let e=this.config?.disclosureText;return this.#l&&this.#h&&e!==!1?e||`You're talking to an AI assistant. Voice is processed by OpenAI.`:null}async stopListening(){this.#ye(),this.#be(`idle`)}async disconnect(){this.#ye(),this.#be(`disconnected`),this.#G=[],this.#K=[],this.#q=[],this.#J=[],this.#Y=[]}stopPlayback(){this.#ve();let e=this.#e;e&&e.readyState===WebSocket.OPEN&&(this.#h&&(this.#_=Date.now()+2e3,e.send(`{"type":"cancel"}`)),this.#be(`listening`))}getInterruptionMode(){return`barge-in`}isBargeInActive(){return this.#l}onLevel(e){this.#n.push(e)}async deactivateBargeIn(){this.#ye(),this.#be(`idle`)}#ie(e,t,n){let r=e.createMediaStreamSource(t);this.#i=r;let i=e.createScriptProcessor(4096,1,1);this.#a=i,i.onaudioprocess=e=>{if(n!==this.#d)return;let t=this.#e,r=t?.readyState===WebSocket.OPEN;if(t&&!r&&t.readyState!==WebSocket.CONNECTING)return;let i=e.inputBuffer.getChannelData(0),a=new Int16Array(i.length),o=0;for(let e=0;e<i.length;e++){let t=Math.max(-1,Math.min(1,i[e]));o+=t*t,a[e]=t<0?t*32768:t*32767}if(t&&r)this.#ae(t),t.send(a.buffer);else for(this.#o.push(a.buffer),this.#s+=a.byteLength;this.#s>256e3;)this.#s-=this.#o.shift().byteLength;if(this.#n.length>0){let e=Math.sqrt(o/i.length),t=Math.max(0,Math.min(1,e*4));for(let e of this.#n)e(t)}},r.connect(i),i.connect(e.destination)}#ae(e){for(let t of this.#o)e.send(t);this.#o=[],this.#s=0}#oe(e,t){if(t!==this.#d)return;if(e.data instanceof ArrayBuffer){this.#pe(e.data,t);return}let n;try{n=JSON.parse(e.data)}catch{return}switch(n.type){case`session_config`:n.speechMode&&(this.#h=n.speechMode===`speech_to_speech`,this.#c?.setContinuousMode?.(this.#h)),Array.isArray(n.capabilities)&&(this.#S=new Set(n.capabilities)),typeof n.callId==`string`&&(this.#T=n.callId),this.#x=this.#h&&this.#S.has(`client_delegation`)&&!!this.bridge,this.#h&&!this.#u&&this.#be(`listening`),this.#S.has(`context`)&&!this.#j&&(this.#j=!0,this.#M=this.#se()),this.#x&&this.#S.has(`client_tools`)&&!this.#V&&(this.#V=this.bridge.clientTools?.()?.open({send:e=>{let n=this.#e;return t!==this.#d||n?.readyState!==WebSocket.OPEN?!1:(n.send(JSON.stringify(e)),!0)},cancelled:e=>this.#w.has(e)}).catch(()=>null)??null);break;case`client_tool_call`:{let e=String(n.delegationId);this.#V&&!this.#W.has(e)&&(this.#W.set(e,this.#U),this.#F.add(e)),this.#V?.then(e=>e?.call(n));break}case`transcript_update`:{let e=n.role===`assistant`?`assistant`:`user`,r=n.utteranceId??n.turnId;if(!r||e===`assistant`&&this.#me())break;let i=String(r);if(e===`user`)n.final===!0&&(this.#ce(t),this.#U={id:i,text:String(n.text??``)}),this.#R=!1;else{if(this.#S.has(`delegation_read_back`)){let e=n.delegationId;(typeof e==`string`&&this.#F.has(e)&&!this.#z.has(i)||this.#R&&!this.#z.has(i))&&(this.#B.add(i),this.#R=!1)}else this.#R&&!this.#z.has(i)&&(this.#B.add(i),this.#R=!1);if(this.#z.add(i),this.#B.has(i))break}this.#Se(e,n.text??``,n.final===!0,{turnId:i,...typeof n.startMs==`number`&&{startMs:n.startMs},...typeof n.endMs==`number`&&{endMs:n.endMs},...this.#x&&{caption:!0}});break}case`delegation_started`:case`delegation_completed`:{let e=String(n.delegationId??n.turnId);if(n.type===`delegation_started`){this.#ce(t),this.#H.add(e),this.#F.delete(e),this.#W.delete(e)&&this.#V?.then(t=>t?.abort(e));let r=n.input;this.#x&&r&&this.#fe(e,{delegationId:e,userText:String(r.text??``),userUtteranceIds:Array.isArray(r.userUtteranceIds)?r.userUtteranceIds.filter(e=>typeof e==`string`):[],messages:Array.isArray(r.messages)?r.messages:[],priorToolResults:r.priorToolResults},t)}else if(n.route===`direct`&&this.#V&&!this.#H.has(e)){let t=this.#W.get(e)??this.#U;this.#W.delete(e),this.#H.add(e),this.#F.add(e),this.bridge?.recordDirectTurn?.({delegationId:e,userText:t?.text??``,userUtteranceIds:t?[t.id]:[],assistantText:typeof n.text==`string`?n.text:``})}n.type===`delegation_completed`&&n.speak!==!1&&this.#F.has(e)&&!this.#I.delete(e)&&!this.#S.has(`delegation_read_back`)&&this.#ue(e),this.#g=n.type===`delegation_started`,!this.#u&&!this.#me()&&this.#be(this.#g?`processing`:`listening`);break}case`delegation_progress`:{let e=String(n.delegationId);this.#F.has(e)&&!this.#I.has(e)&&!this.#w.has(e)&&(this.#I.add(e),this.#ue(e));break}case`delegation_cancelled`:this.#de(String(n.delegationId),n.reason!==`session_ending`&&n.reason!==`provider_cancelled`);break;case`warning`:console.warn(`[Persona voice] ${n.code}: ${n.message??``}`,this.#T??``),n.delegationId&&(n.code===`UNKNOWN_DELEGATION`||n.code===`LATE_RESULT_LIMIT`)&&this.#de(String(n.delegationId));break;case`audio_clear`:this.#ve(),this.#_=0,this.#be(`listening`);break;case`transcript_interim`:this.#be(`listening`),this.#Se(`user`,n.text??``,!1);break;case`transcript_final`:{let e=n.role===`assistant`?`assistant`:`user`;this.#be(e===`user`?`processing`:`speaking`),this.#Se(e,n.text??``,!0);break}case`audio_end`:this.#c?this.#c.markStreamEnd():(this.#u=!1,this.#be(`listening`));break;case`metrics`:this.#Ce({llmMs:n.llm_ms,ttsMs:n.tts_ms,firstAudioMs:n.first_audio_ms,totalMs:n.total_ms});break;case`error`:this.#xe(Error(n.error||`Voice error`)),this.#be(`error`);break;case`session_end`:this.#E={reason:String(n.reason),...typeof n.message==`string`&&{message:n.message}}}}async#se(){let e=this.bridge?.getHistory()??[],t=``;try{let e=this.config?.callContext;t=String((typeof e==`function`?await e():e)??``)}catch{}return o(e,t)}#ce(e){let t=this.#M;if(!t)return;this.#M=null;let n=!1,r=t.then(t=>{let r=this.#e;!n&&t&&e===this.#d&&r?.readyState===WebSocket.OPEN&&r.send(JSON.stringify({type:`context`,text:t}))});this.#N={done:r,drop:()=>n=!0}}async#le(){let e=this.#N;if(!e)return;let t,n=await Promise.race([e.done.then(()=>!1),new Promise(e=>{t=setTimeout(()=>e(!0),2e3)})]);clearTimeout(t),n&&e.drop()}#ue(e){this.#R=!0,this.#L=e}#de(e,t=!1){this.#w.add(e),this.#L===e&&(this.#R=!1),this.#I.delete(e),this.#H.has(e)||this.#F.delete(e),this.#V?.then(t=>t?.abort(e)),this.bridge?.dropDelegation?.(e,t),this.#C.get(e)?.abort()}#fe(e,t,n){let r=this.bridge,i=({type:t,...r})=>{let i=this.#e;return n!==this.#d||i?.readyState!==WebSocket.OPEN||this.#w.has(e)?!1:(i.send(JSON.stringify({type:t,delegationId:e,...r})),!0)},a=(e,t,n,r=0)=>i({type:e,status:t,text:n,...r>0&&{streamedChars:r}});this.#P=this.#P.then(async()=>{if(n!==this.#d||this.#w.has(e))return;let o=null,s=this.#S.has(`delegation_stream`)&&this.#S.has(`delegation_read_back`),c=t=>{o=(o??this.#le()).then(()=>{i({type:`delegation_delta`,text:t})&&this.#F.add(e)})},l=await r.runDelegatedTurn(s?{...t,stream:c}:t).catch(()=>({status:`failed`,text:``}));await this.#le(),await o;let u=s?l.streamedChars??0:0,d=!!l.followUp,f=d&&this.#S.has(`delegation_update`);if(!a(f?`delegation_update`:`delegation_result`,d&&!f?`completed`:l.status,l.text,u)||(l.status!==`failed`&&l.inChat!==!1&&this.#F.add(e),!l.followUp))return;let p=new AbortController;this.#C.set(e,p),l.followUp({signal:p.signal,approvalTimeoutMs:this.config?.approvalTimeoutMs&&Math.min(this.config.approvalTimeoutMs,54e4),readBack:f,onUpdate:e=>a(`delegation_update`,`pending_approval`,e)}).then(t=>{this.#C.delete(e),f&&t&&!p.signal.aborted&&a(`delegation_result`,t.status,t.text)})})}#pe(e,t){if(t!==this.#d||!this.#c||this.#me())return;let n=s(e);n.length!==0&&(this.#u||(this.#u=!0,this.#be(`speaking`)),this.#he(),this.#c.enqueue(n),this.#h&&this.#ge(n.length))}#me(){return Date.now()<this.#_}#he(){if(this.#b||!this.#c)return;this.#b=!0;let e=this.#d;this.#c.onFinished(()=>{e===this.#d&&(this.#b=!1,this.#_e())})}#ge(e){let t=Date.now();this.#v=Math.max(t,this.#v)+e/48,clearTimeout(this.#y),this.#y=setTimeout(()=>this.#_e(),this.#v-t+300)}#_e(){this.#u=!1,this.#v=0,this.#e&&this.#e.readyState===WebSocket.OPEN&&this.#be(this.#g?`processing`:`listening`)}#ve(){this.#c?.flush(),this.#b=!1,this.#he(),this.#u=!1,this.#v=0,clearTimeout(this.#y)}#ye(){this.#d+=1,this.#l=!1,this.#u=!1,this.#$(),this.#h=!1,this.#g=!1,this.#x=!1,this.#S=/* @__PURE__ */ new Set;for(let e of this.#C.values())e.abort();if(this.#C.clear(),this.#w.clear(),this.#T=void 0,this.#E=null,clearTimeout(this.#O),this.#j=!1,this.#M=null,this.#N=null,this.#P=Promise.resolve(),this.#F.clear(),this.#I.clear(),this.#L=null,this.#R=!1,this.#z.clear(),this.#B.clear(),this.#V?.then(e=>e?.close()),this.#V=null,this.#H.clear(),this.#W.clear(),this.#U=null,this.#b=!1,this.#_=0,this.#v=0,clearTimeout(this.#y),this.#o=[],this.#s=0,this.#a&&=(this.#a.onaudioprocess=null,this.#a.disconnect(),null),this.#i&&=(this.#i.disconnect(),null),this.#r&&=(this.#r.getTracks().forEach(e=>e.stop()),null),this.#t&&=(this.#t.close().catch(()=>{}),null),this.#c&&=(this.#c.destroy(),null),this.#e){this.#f=!0;try{this.#e.close(1e3,`client ended call`)}catch{}this.#e=null}}onResult(e){this.#G.push(e)}onError(e){this.#K.push(e)}onStatusChange(e){this.#q.push(e)}onTranscript(e){this.#J.push(e)}onMetrics(e){this.#Y.push(e)}#be(e){this.#q.forEach(t=>t(e))}#xe(e){this.#K.forEach(t=>t(e))}#Se(e,t,n,r){this.#J.forEach(i=>i(e,t,n,r))}#Ce(e){this.#Y.forEach(t=>t(e))}},f=class{#e;#t;#n;#r;#i;#a;constructor(e={}){this.config=e,this.type=`browser`,this.#e=null,this.#t=[],this.#n=[],this.#r=[],this.#i=!1,this.#a=typeof window<`u`?window:void 0}async connect(){this.#r.forEach(e=>e(`connected`))}async startListening(){try{if(this.#i)throw Error(`Already listening`);if(!this.#a)throw Error(`Window object not available`);let e=this.#a.SpeechRecognition||this.#a.webkitSpeechRecognition;if(!e)throw Error(`Browser speech recognition not supported`);this.#e=new e,this.#e.lang=this.config?.language||`en-US`,this.#e.continuous=this.config?.continuous||!1,this.#e.interimResults=!0,this.#e.onresult=e=>{let t=Array.from(e.results).map(e=>e[0]).map(e=>e.transcript).join(``),n=e.results[e.results.length-1].isFinal;this.#t.forEach(e=>e({text:t,confidence:n?.8:.5,provider:`browser`})),n&&!this.config?.continuous&&this.stopListening()},this.#e.onerror=e=>{this.#n.forEach(t=>t(Error(e.error))),this.#r.forEach(e=>e(`error`))},this.#e.onstart=()=>{this.#i=!0,this.#r.forEach(e=>e(`listening`))},this.#e.onend=()=>{this.#i=!1,this.#r.forEach(e=>e(`idle`))},this.#e.start()}catch(e){throw this.#n.forEach(t=>t(e)),this.#r.forEach(e=>e(`error`)),e}}async stopListening(){this.#e&&=(this.#e.stop(),null),this.#i=!1,this.#r.forEach(e=>e(`idle`))}onResult(e){this.#t.push(e)}onError(e){this.#n.push(e)}onStatusChange(e){this.#r.push(e)}async disconnect(){await this.stopListening(),this.#r.forEach(e=>e(`disconnected`))}static isSupported(){return`SpeechRecognition`in window||`webkitSpeechRecognition`in window}};function p(e){switch(e.type){case`runtype`:if(!e.runtype)throw Error(`Runtype voice provider requires configuration`);return new d(e.runtype);case`browser`:if(!f.isSupported())throw Error(`Browser speech recognition not supported`);return new f(e.browser||{});case`custom`:{let t=e.custom;if(!t)throw Error("Custom voice provider requires a `custom` provider instance or factory");let n=typeof t==`function`?t():t;if(!n||typeof n.startListening!=`function`)throw Error("Custom voice provider `custom` must be a VoiceProvider (or a factory returning one)");return n}default:throw Error(`Unknown voice provider type: ${e.type}`)}}function m(e){if(e?.type===`custom`&&e.custom)return p({type:`custom`,custom:e.custom});if(e?.type===`runtype`&&e.runtype)return p({type:`runtype`,runtype:e.runtype});if(f.isSupported())return p({type:`browser`,browser:e?.browser||{language:`en-US`}});throw Error(`No supported voice providers available`)}function h(e){try{return m(e),!0}catch{return!1}}const g=e=>e.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,``);var _=class{constructor(e){this.host=e,this.turns=/* @__PURE__ */ new Map,this.latestId=null,this.cancelled=/* @__PURE__ */ new Set}apply(e,t,n,r,i,a){let o=this.host;t=t.trim();let s=this.turns.get(r);if(s||(s={},this.turns.set(r,s),this.latestId=r),e===`user`){s.userFinal=n;let e=s.userId?o.find(s.userId):void 0;if(e){let r=s.userStartMs===void 0&&i!==void 0;r&&(s.userStartMs=i),o.upsert({...e,content:t,voiceProcessing:!n,...r&&this.placeBefore(this.startedAfter(i))})}else{s.userStartMs=i;let e=s.assistantId?o.find(s.assistantId):void 0;s.userId=o.inject({role:`user`,content:t,streaming:!1,voiceProcessing:!n,voiceCaption:a,...this.placeBefore(this.startedAfter(i)??e)}).id}}else if(!this.cancelled.has(r)){s.assistantFinal=n;let e=s.assistantId?o.find(s.assistantId):void 0;if(e){let r=s.assistantStartMs===void 0&&i!==void 0;r&&(s.assistantStartMs=i),o.upsert({...e,content:t,streaming:!n,voiceProcessing:!n,...r&&this.placeBefore(this.startedAfter(i))})}else t&&(s.assistantStartMs=i,s.assistantId=o.inject({role:`assistant`,content:t,streaming:!n,voiceProcessing:!n,voiceCaption:a,...this.placeBefore(this.startedAfter(i))}).id);n&&s.assistantId&&o.markSpoken(s.assistantId)}this.sync()}claimUserTurn(e,t=[]){let n=t[t.length-1];for(let e of t)e!==n&&(this.turns.has(e)||this.turns.set(e,{}),this.turns.get(e).claimed=!0);let r;if(n){if(r=this.turns.get(n),r||(r={},this.turns.set(n,r)),r.claimed)return null;(!r.userId||!this.host.find(r.userId))&&(r.userFinal=!0,r.userId=this.host.inject({role:`user`,content:e.trim()}).id)}else{let t=g(e),n=[...this.turns.values()].reverse().flatMap(e=>{let t=e.userId&&!e.claimed?this.host.find(e.userId):void 0;return t?[{turn:e,text:g(t.content)}]:[]}).filter(({text:e})=>e&&t);r=(n.find(({text:e})=>e===t)??n.find(({text:e})=>e.startsWith(t)||t.startsWith(e)))?.turn}return r?(r.claimed=!0,r.userId):null}cancel(){let e=this.inFlight();if(e.length===0){let t=this.awaiting();if(!t)return;e=[t]}for(let t of e)this.cancelled.add(t);this.closeReplies(e),this.sync()}fail(e){let t=this.awaiting(),n=this.inFlight();if(!t&&n.length===0)return;for(let e of n)this.turns.get(e).assistantFinal=!0;this.closeReplies(n);let r=this.host.inject({role:`assistant`,content:e,streaming:!1,voiceProcessing:!1}),i=t?this.turns.get(t):void 0;i&&(i.assistantId=r.id,i.assistantFinal=!0),this.sync()}settle(){if(this.turns.size===0)return;let e=this.pending(),t=/* @__PURE__ */ new Set;for(let e of this.turns.values())e.userId&&t.add(e.userId),e.assistantId&&(t.add(e.assistantId),this.host.markSpoken(e.assistantId));this.turns.clear(),this.latestId=null,this.host.settle(t),e&&this.host.setStreaming(!1)}startedAfter(e){if(e===void 0)return;let t;for(let n of this.turns.values())for(let[r,i]of[[n.userId,n.userStartMs],[n.assistantId,n.assistantStartMs]])r&&i!==void 0&&i>e&&(!t||i<t.start)&&(t={start:i,id:r});return t&&this.host.find(t.id)}placeBefore(e){if(!e)return;let t=e.sequence??0,n=t-1;for(let r of this.turns.values())for(let i of[r.userId,r.assistantId]){let r=i?this.host.find(i):void 0,a=r?.sequence;r?.createdAt===e.createdAt&&a!==void 0&&a>n&&a<t&&(n=a)}return{createdAt:e.createdAt,sequence:(n+t)/2}}closeReplies(e){let t=/* @__PURE__ */ new Set;for(let n of e){let e=this.turns.get(n)?.assistantId;e&&(t.add(e),this.host.markSpoken(e))}t.size>0&&this.host.settle(t)}inFlight(){let e=[];for(let[t,n]of this.turns)n.assistantId&&!n.assistantFinal&&!this.cancelled.has(t)&&e.push(t);return e}awaiting(){let e=this.latestId;if(!e)return null;let t=this.turns.get(e);return t?.userFinal&&!t.assistantId&&!t.claimed&&!this.cancelled.has(e)?e:null}pending(){return this.awaiting()!==null||this.inFlight().length>0}sync(){this.host.setStreaming(this.pending())}};const v=/* @__PURE__ */ new Set(/* @__PURE__ */ `mr,mrs,ms,dr,prof,sr,jr,st,mt,vs,etc,approx,inc,ltd,co,corp,no,nos,fig,ft,dept,est,min,max,e.g,i.e,a.m,p.m,u.s,u.k`.split(`,`)),y=/([.!?]+|[,;:])(["'”’)\]*_]*)(\s+)|\n\s*/g;function b(e){let t=/(\S+)$/.exec(e)?.[1];if(!t)return!1;let n=t.replace(/^[("'“‘[*_]+/,``).toLowerCase();if(v.has(n)||/^[a-z](?:\.[a-z])*$/.test(n))return!0;if(/^\d+$/.test(t)){let n=e.length-t.length;return n===0||/\n\s*$/.test(e.slice(0,n))}return!1}function*x(e,t){let n=new RegExp(y.source,`g`);for(let r=n.exec(e);r;r=n.exec(e)){let n=r[1];if(!e.slice(0,r.index+(n?.length??0)).trim()||n!==void 0&&(/^[,;:]$/.test(n)&&!t||n===`.`&&b(e.slice(0,r.index))))continue;let i=r.index+r[0].length;i<e.length&&(yield i)}}function S(e,t){let n=e.slice(0,t),r=0;for(let e of n.matchAll(/\s+/g))n.slice(0,e.index).trim()&&(r=e.index+e[0].length);return r}function C(e){let t=0;for(let n of x(e.slice(0,220),!0))t=n;if(t)return t;let n=S(e,220);if(n)return n;let r=e.charCodeAt(219);return r>=55296&&r<=56319?219:220}var w=class{#e=``;#t=!0;push(e){return this.#e+=e,this.#n()}flush(){let e=this.#n(),t=this.#e;if(this.#e=``,t.trim()){for(let n=0;n<t.length;){let r=t.slice(n),i=r.length>220?C(r):r.length;e.push(r.slice(0,i)),n+=i}this.#t=!1}return e}idle(){let e=this.#e;if(!e.trim()||!/(?:[.!?…]["'”’)\]*_]*|\n)\s*$/.test(e))return[];this.#e=``,this.#t=!1;let t=[];for(let n=0;n<e.length;){let r=e.slice(n),i=r.length>220?C(r):r.length;t.push(r.slice(0,i)),n+=i}return t}#n(){let e=[];for(let t=this.#r();t>0;t=this.#r())e.push(this.#e.slice(0,t)),this.#e=this.#e.slice(t),this.#t=!1;return e}#r(){let e=this.#e;if(!e.trim())return 0;let t=x(e,this.#t).next().value??0;if(t&&t<=220)return t;let n=/[.!?]["'”’)\]*_]*$/.test(e);if(this.#t&&!n){let t=e.match(/\S+\s+/g)?.length??0;if(e.trim().length>=30||t>=6){let t=S(e,220);if(t)return t}}return e.length>220?C(e):0}};const T=(e,t)=>{let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n+=1;return n},E=`no|nope|never ?mind|decline(?: it| that)?|cancel(?: it| that| this)?(?: (?:the|my|that|this) (?:[a-z]+ )?(?:order|request))?|don'?t (?:do|place) (?:it|that|the (?:[a-z]+ )?order)`,D=RegExp(`^(?:${E})(?: (?:${E}))?(?: thanks| thank you)?$`),O=e=>D.test(e.toLowerCase().replace(/[^a-z' ]+/g,` `).replace(/\s+/g,` `).trim()),k=()=>new Promise(e=>setTimeout(e,50)),A=(e,t)=>e.length>t?`${e.slice(0,t-1).trimEnd()}…`:e,j=e=>e.replace(/^webmcp:/,``).replace(/([a-z\d])([A-Z])/g,`$1 $2`).replace(/[_\-.]+/g,` `).trim().toLowerCase();function M(e,t=0){if(e==null||e===``)return``;if(typeof e!=`object`)return String(e);if(t>2)return``;if(Array.isArray(e))return e.map(e=>M(e,t+1)).filter(Boolean).join(`, `);let n=e,r=n.quantity??n.qty??n.count,i=n.name??n.item??n.product??n.title;return r!=null&&i!=null&&typeof i!=`object`?`${r} ${i}`:Object.entries(n).filter(([e])=>!e.startsWith(`_`)).map(([e,n])=>{let r=M(n,t+1);return r&&(t?`${j(e)} ${r}`:`${j(e)}: ${r}`)}).filter(Boolean).join(t?`, `:`; `)}function N(e){let t=e.length>1?`These actions need the user's approval in the chat before they happen:`:`This action needs the user's approval in the chat before it happens:`,n=1e3-t.length-119-2;return`${t}\n${e.map(t=>{let r=[j(t.toolName)];t.description&&r.push(`(${A(t.description.trim(),160)})`);let i=M(t.parameters);return i&&r.push(`with ${i}`),t.reason&&r.push(`because: ${A(t.reason.trim(),160)}`),A(`- ${r.join(` `)}`,Math.floor(n/e.length)-1)}).join(`
|
package/dist/client-dispatch.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}};function t(e){if(e.length===0)return`0:empty`;let t=e.map(e=>[e.name,e.description??``,e.parametersSchema?JSON.stringify(e.parametersSchema):``,e.origin??``,e.annotations?JSON.stringify(e.annotations):``].join(``)).sort();return`${e.length}:${r(t.join(``))}`}function n(e,t){let n=3735928559^t,r=1103547991^t;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677)}return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}function r(e){return`${n(e,0).toString(36)}.${n(e,2654435761).toString(36)}`}var i=e((()=>{})),a,o,s,c,l=e((()=>{a=e=>e.replace(/[^a-zA-Z0-9_]/g,`_`).toLowerCase().replace(/_+/g,`_`).replace(/^_|_$/g,``),o=e=>typeof e==`object`&&!!e&&!Array.isArray(e),s=e=>{if(e.variant!==`tool`)return null;let t=e.agentMetadata?.clientToolAnswer;if(!t||!t.toolCallId||t.result===void 0)return null;let n=a(t.toolName);return n?{call:{toolCallId:t.toolCallId,toolName:n,args:o(t.args)?t.args:{}},result:{toolCallId:t.toolCallId,toolName:n,result:t.result}}:null},c=(e,t)=>{let n=[],r=[],i=[],a=``,o,c=()=>{r.length!==0&&(n.push({role:`assistant`,content:``,createdAt:a,toolCalls:r},{role:`tool`,content:``,createdAt:a,toolResults:i}),r=[],i=[])};for(let l of e){let e=s(l);if(e){let t=l.agentMetadata?.clientToolAnswer?.batch;r.length>0&&(t===void 0||t!==o)&&c(),r.length===0&&(a=l.createdAt,o=t),r.some(t=>t.toolCallId===e.call.toolCallId)||(r.push(e.call),i.push(e.result));continue}let u=t(l);u&&(c(),n.push(u))}return c(),n}})),u,d,f=e((()=>{u=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`,`image/bmp`],d=[`application/pdf`,`text/plain`,`text/markdown`,`text/csv`,`application/msword`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`,`application/vnd.ms-excel`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/json`],[...u,...d]}));function p(e){let t=e.content;if(typeof t!=`string`||t===``)return;let n=e.contentParts??e.llmContent??e.rawContent??t;if(typeof n!=`string`||n!==t)return t}var m=e((()=>{f()})),h,g=e((()=>{h=e=>e.localOnly===!0||e.role===`assistant`&&typeof e.id==`string`&&e.id.startsWith(`reconnect-failed-`)})),_=`4.30.0`,v,y=e((()=>{v=_})),b,x,S,C,w;e((()=>{i(),l(),m(),g(),y(),b=e=>e.voiceCaption||h(e)?!1:!!(e.contentParts&&e.contentParts.length>0||e.llmContent&&e.llmContent.trim().length>0||e.rawContent&&e.rawContent.trim().length>0||e.content&&e.content.trim().length>0),x=e=>e.slice().sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()),S=e=>{let t=e.agentMetadata?.providerPhase??e.agentMetadata?.phase;return e.role===`assistant`&&(t===`commentary`||t===`partial_answer`||t===`final_answer`)?{phase:t}:{}},C=e=>({role:e.role,content:e.contentParts??e.llmContent??e.rawContent??e.content,createdAt:e.createdAt,...S(e)}),w=class{constructor(e){this.host=e}async initializeSession(){await this.host.historyInternals.historyBootstrapReady;let e=this.host.config.getStoredConversationId?.()||null,t=this.host.historyInternals.shouldResumeDurableConversation?.()===!0;if(!this.host.isHistoryCapable()&&!t)return this.#e(e,!1);let n=await this.host.readVisitorToken();if(e&&n)try{let n=await this.createClientSession({conversationId:e,durableResume:t});return t&&n.durableRecovery?.enabled!==!0&&this.host.historyInternals.setStoredResumableHandle?.(null),this.host.finishInit(n,e,!1)}catch(n){if(!(n instanceof this.host.HistoryClientError&&n.code===`not_found`)&&!(n instanceof this.host.HistoryClientError&&n.code===`visitor_required`)&&!(n instanceof this.host.HistoryClientError&&n.code===`history_disabled`))throw n;return t&&this.host.historyInternals.setStoredResumableHandle?.(null),this.#e(e,!0)}return this.#e(e,!1)}async#e(e,t){let n=this.host.historyInternals.visitorStore;return n&&!await this.host.readVisitorToken()?n.withFirstInitLock(()=>this.#t(e,t)):this.#t(e,t)}async#t(e,t){let n=this.host.config.getStoredSessionId?.()||null,r=await this.createClientSession({storedSessionId:n}),i=await this.#n(r);return this.host.finishInit(i,e,t)}async#n(e){if(!e.visitor?.token||this.host.claimInFlight||!this.host.isHistoryCapable()&&e.durableRecovery?.enabled!==!0)return e;this.host.claimInFlight=!0;try{return await this.createClientSession({storedSessionId:e.sessionId})}catch{return e}finally{this.host.claimInFlight=!1}}async sendWithClientToolsDiff(e,n,r,i){let a=!!(n&&n.length>0),o=a?t(n):void 0,s=this.host.clientToolsFingerprintSessionId===e,c=a&&s&&this.host.lastSentClientToolsFingerprint===o,l=!a&&i?.emptyMeansReplace===!0&&this.host.sentNonEmptyClientToolsSessionId===e,u=!1,d;for(let e=0;d=await r({...a&&(u||!c)&&n?{clientTools:n}:{},...l?{clientTools:[]}:{},...o?{clientToolsFingerprint:o}:{}}),d.status===409&&e===0&&a&&(await d.clone().json().catch(()=>null))?.error===`client_tools_resend_required`;e++)u=!0,this.host.lastSentClientToolsFingerprint=null;return{response:d,commit:()=>{this.host.lastSentClientToolsFingerprint=o??null,this.host.clientToolsFingerprintSessionId=e,a?this.host.sentNonEmptyClientToolsSessionId=e:l&&(this.host.sentNonEmptyClientToolsSessionId=null)}}}async createClientSession(e){let t=this.host.isHistoryCapable()&&!e.omitVisitorFields,n=!e.omitVisitorFields,r=null;(t||n)&&(await this.host.historyInternals.historyBootstrapReady,r=await this.host.readVisitorToken());let i=this.host.routing(),a=i.agentId??i.flowId,o=t||e.durableResume?e.conversationId:void 0,s={token:this.host.config.clientToken,...a&&{flowId:a},...t&&{visitorHistory:!0},...n&&{durableRecovery:!0},...(t||n)&&r?{visitorToken:r}:{},...t&&e.identityProof?{identityProof:e.identityProof}:{},...o?{conversationId:o}:e.storedSessionId?{sessionId:e.storedSessionId}:{}};e.signal?.throwIfAborted();let c=await fetch(this.host.getClientApiUrl(`init`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v},body:JSON.stringify(s),signal:e.signal});if(!c.ok){let n=await c.json().catch(()=>({error:`Session initialization failed`}));if(t&&c.status===403&&n.error===`visitor_history_disabled`){if(this.host.markHistoryUnavailable(),o)throw new this.host.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`);return this.createClientSession({...e,omitVisitorFields:!0})}throw c.status===403&&n.error===`durable_recovery_disabled`?new this.host.HistoryClientError(`history_disabled`,`Durable recovery is disabled for this surface`):(t||e.durableResume)&&c.status===401&&n.error===`visitor_required`?new this.host.HistoryClientError(`visitor_required`,`Visitor credential no longer resolves`):o&&c.status===404?new this.host.HistoryClientError(`not_found`,`Conversation not found`):c.status===401?Error(`Invalid client token: ${n.hint||n.error}`):c.status===403?Error(`Origin not allowed: ${n.hint||n.error}`):Error(n.error||`Failed to initialize session`)}let l=await c.json();return l.visitor?.token&&await this.host.historyInternals.visitorStore?.set(l.visitor.token),{sessionId:l.sessionId,expiresAt:new Date(l.expiresAt),flow:l.flow,...l.conversationId?{conversationId:l.conversationId}:{},...l.targetId?{targetId:l.targetId}:{},...l.conversationRevision?{conversationRevision:l.conversationRevision}:{},...l.durableRecovery?{durableRecovery:l.durableRecovery}:{},...l.visitor?{visitor:l.visitor}:{},config:{welcomeMessage:l.config.welcomeMessage,placeholder:l.config.placeholder,theme:l.config.theme}}}async sendFeedback(e){if([`upvote`,`downvote`,`copy`].includes(e.type)&&!e.messageId)throw Error(`messageId is required for ${e.type} feedback type`);if(e.type===`csat`&&(e.rating===void 0||e.rating<1||e.rating>5))throw Error(`CSAT rating must be between 1 and 5`);if(e.type===`nps`&&(e.rating===void 0||e.rating<0||e.rating>10))throw Error(`NPS rating must be between 0 and 10`);this.host.debug&&console.debug(`[AgentWidgetClient] sending feedback`,e);let t={...e,...this.host.config.clientToken&&{token:this.host.config.clientToken}},n=await fetch(`${this.host.clientApiBase()}/v1/client/feedback`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:`Feedback submission failed`}));throw n.status===401?(this.host.clientSession=null,this.host.resetSessionWarmLatch(),this.host.config.onSessionExpired?.(),Error(`Session expired. Please refresh to continue.`)):Error(e.error||`Failed to submit feedback`)}}async dispatchClientToken(e,t,n){let{HistoryClientError:r}=this.host,i=()=>this.host.isCurrentTurn(n),a=e=>{i()&&t(e)};try{let t=()=>{if(e.signal?.throwIfAborted(),!i())throw new DOMException(`Turn superseded`,`AbortError`)},o=this.host.clientSession??await this.host.initSession();t();let s=async()=>{t();let n=o,r=n.durableRecovery?.enabled===!0;if(r&&(!n.conversationId||!await this.host.readVisitorToken()))throw Error(`Renewing this conversation requires its visitor credential.`);t();let i=await this.host.createClientSession({...r||this.host.isHistoryCapable()?{conversationId:n.conversationId,durableResume:r}:{storedSessionId:n.sessionId},signal:e.signal});if(t(),n.conversationId&&i.conversationId!==n.conversationId||r&&i.durableRecovery?.enabled!==!0)throw Error(`Session renewal did not preserve this conversation.`);o=this.host.finishInit(i,n.conversationId??null,!1),this.host.clientSession=o,this.host.resetSessionWarmLatch(),this.host.resetClientToolsFingerprint(),this.host.config.onSessionInit?.(o)};Date.now()>=o.expiresAt.getTime()-6e4&&await s();let c=await this.#c(e.messages),l=c.metadata?Object.fromEntries(Object.entries(c.metadata).filter(([e])=>e!==`sessionId`&&e!==`session_id`)):void 0,u=this.host.isHistoryCapable(),d={sessionId:o.sessionId,messages:e.messages.filter(b).map(e=>{let t=u?p(e):void 0;return{id:e.id,role:e.role,content:e.contentParts??e.llmContent??e.rawContent??e.content,...t!==void 0&&{displayContent:t}}}),...e.assistantMessageId&&{assistantMessageId:e.assistantMessageId},...l&&Object.keys(l).length>0&&{metadata:l},...c.inputs&&Object.keys(c.inputs).length>0&&{inputs:c.inputs},...c.context&&{context:c.context},turnId:n,...e.interrupt&&{submitMode:`interrupt`},...e.voiceSpoken&&{voice:{spoken:!0,...e.voicePriorToolResults?.length&&{priorToolResults:e.voicePriorToolResults}}}},f=async()=>{t();let n=o.durableRecovery?.enabled===!0?await this.host.readVisitorToken():null;return t(),this.host.sendWithClientToolsDiff(o.sessionId,c.clientTools,async r=>{t();let i=await this.host.resolveChatIdentityProof(e.signal);t();let a={...d,sessionId:o.sessionId,...r,...i&&{identityProof:i}};return this.host.debug&&console.debug(`[AgentWidgetClient] client token dispatch`,{...a,...i&&{identityProof:{provider:i.provider,token:`[REDACTED]`}}}),fetch(this.host.getClientApiUrl(`chat`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v,...n?{"X-Visitor-Token":n}:{}},body:JSON.stringify(a),signal:e.signal})})},m=await f();if(t(),m.response.status===401){let e=await m.response.clone().json().catch(()=>null);t(),e?.error===`Session not found or expired`&&(await s(),m=await f(),t())}let{response:h,commit:g}=m;if(!h.ok){let e=await h.json().catch(()=>({error:`Chat request failed`}));if(h.status===401&&e.error===`invalid_identity_proof`){let e=new r(`invalid_identity_proof`,`The identity proof was rejected`);throw a({type:`error`,error:e}),e}if(h.status===401){this.host.clearClientSession(),this.host.config.onSessionExpired?.();let e=/* @__PURE__ */ Error(`Session expired. Please refresh to continue.`);throw a({type:`error`,error:e}),e}if(h.status===429){let t=Error(e.hint||`Message limit reached for this session.`);throw a({type:`error`,error:t}),t}if(h.status===410&&e.error===`conversation_deleted`){let e=new r(`conversation_deleted`,`This conversation was deleted`);throw a({type:`error`,error:e}),e}let t=Error(e.error||`Failed to send message`);throw a({type:`error`,error:t}),t}if(!h.body){let e=/* @__PURE__ */ Error(`No response body received`);throw a({type:`error`,error:e}),e}g(),a({type:`status`,status:`connected`});try{await this.host.streamResponse(h.body,a,e.assistantMessageId,void 0,e.signal)}finally{a({type:`status`,status:`idle`})}}catch(e){let t=e instanceof Error?e:Error(String(e));throw!(t instanceof r)&&!t.message.includes(`Session expired`)&&!t.message.includes(`Message limit`)&&a({type:`error`,error:t}),t}}async dispatchProxy(e,t){let n=await this.#c(e.messages,e.composerOptions);this.host.debug&&console.debug(`[AgentWidgetClient] dispatch payload`,n);let r={...this.host.headers};if(this.host.getHeaders)try{let e=await this.host.getHeaders();r={...r,...e}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] getHeaders error:`,e)}let i;if(this.host.customFetch)try{i=await this.host.customFetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal},n)}catch(e){let n=e instanceof Error?e:Error(String(e));throw t({type:`error`,error:n}),n}else i=await fetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal});if(!i.ok||!i.body){let e=/* @__PURE__ */ Error(`Chat backend request failed: ${i.status} ${i.statusText}`);throw t({type:`error`,error:e}),e}t({type:`status`,status:`connected`});try{await this.host.streamResponse(i.body,t,void 0,void 0,e.signal)}finally{t({type:`status`,status:`idle`})}}async dispatchAgent(e,t){let n=await this.#s(e.messages,e.composerOptions);this.host.debug&&console.debug(`[AgentWidgetClient] agent dispatch payload`,n);let r={...this.host.headers};if(this.host.getHeaders)try{let e=await this.host.getHeaders();r={...r,...e}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] getHeaders error:`,e)}let i;if(this.host.customFetch)try{i=await this.host.customFetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal},n)}catch(e){let n=e instanceof Error?e:Error(String(e));throw t({type:`error`,error:n}),n}else i=await fetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal});if(!i.ok||!i.body){let e=/* @__PURE__ */ Error(`Agent execution request failed: ${i.status} ${i.statusText}`);throw t({type:`error`,error:e}),e}t({type:`status`,status:`connected`});try{await this.host.streamResponse(i.body,t,e.assistantMessageId,void 0,e.signal)}finally{t({type:`status`,status:`idle`})}}#r(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role===`user`)return n.mentionContext&&Object.keys(n.mentionContext).length>0?{mentions:n.mentionContext}:null}return null}async#i(e){let t={};this.host.contextProviders.length&&await Promise.all(this.host.contextProviders.map(async n=>{try{let r=await n({messages:e,config:this.host.config});r&&typeof r==`object`&&Object.assign(t,r)}catch(e){typeof console<`u`&&console.warn(`[AgentWidget] Context provider failed:`,e)}}));let n=this.#r(e);return n&&Object.assign(t,n),Object.keys(t).length?t:null}#a(e){if(!e)return;let t={};return e.selectedModelId&&(t.selectedModelId=e.selectedModelId),e.activeModeIds?.length&&(t.activeModeIds=[...e.activeModeIds]),Object.keys(t).length>0?t:void 0}#o(e,t){let n=t?.selectedModelId;return!n||!(`model`in e)?e:this.host.config.composer?.models?.some(e=>e.id===n)?{...e,model:n}:e}async#s(e,t){let n=this.host.routing().agentId;if(!this.host.config.agent&&!n)throw Error(`Agent configuration required for agent mode`);let r=c(x(e),e=>b(e)&&(e.role===`user`||e.role===`assistant`||e.role===`system`)&&(!e.variant||e.variant===`assistant`)?C(e):null),i=this.#a(t),a={agent:this.#o(this.host.config.agent??{agentId:n},i),messages:r,options:{streamResponse:!0,recordMode:`virtual`,...this.host.config.agentOptions}};i&&(a.composerOptions=i);let o=[...this.host.builtInClientTools(this.host.config),...await(await this.host.getWebMcpBridge())?.snapshotForDispatch()??[]];o.length>0&&(a.clientTools=o);let s=await this.#i(e);return s&&(a.context=s),a}async#c(e,t){let n=c(x(e),e=>b(e)?C(e):null),r=this.host.routing(),i={messages:n,...r.agentId?{agent:{agentId:r.agentId}}:r.flowId?{flowId:r.flowId}:{}};if(r.targetPayload)for(let[e,t]of Object.entries(r.targetPayload))e!==`messages`&&(i[e]=t);let a=[...this.host.builtInClientTools(this.host.config),...await(await this.host.getWebMcpBridge())?.snapshotForDispatch()??[]];a.length>0&&(i.clientTools=a);let o=await this.#i(e);o&&(i.context=o);let s=this.#a(t);if(s&&(i.composerOptions=s),this.host.requestMiddleware)try{let e=await this.host.requestMiddleware({payload:{...i},config:this.host.config});if(e&&typeof e==`object`){let t=e;return i.clientTools!==void 0&&!(`clientTools`in t)&&(t.clientTools=i.clientTools),t}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] Request middleware error:`,e)}return i}}}))();export{w as ClientDispatch};
|
|
1
|
+
var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}};function t(e){if(e.length===0)return`0:empty`;let t=e.map(e=>[e.name,e.description??``,e.parametersSchema?JSON.stringify(e.parametersSchema):``,e.origin??``,e.annotations?JSON.stringify(e.annotations):``].join(``)).sort();return`${e.length}:${r(t.join(``))}`}function n(e,t){let n=3735928559^t,r=1103547991^t;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677)}return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}function r(e){return`${n(e,0).toString(36)}.${n(e,2654435761).toString(36)}`}var i=e((()=>{})),a,o,s,c,l=e((()=>{a=e=>e.replace(/[^a-zA-Z0-9_]/g,`_`).toLowerCase().replace(/_+/g,`_`).replace(/^_|_$/g,``),o=e=>typeof e==`object`&&!!e&&!Array.isArray(e),s=e=>{if(e.variant!==`tool`)return null;let t=e.agentMetadata?.clientToolAnswer;if(!t||!t.toolCallId||t.result===void 0)return null;let n=a(t.toolName);return n?{call:{toolCallId:t.toolCallId,toolName:n,args:o(t.args)?t.args:{}},result:{toolCallId:t.toolCallId,toolName:n,result:t.result}}:null},c=(e,t)=>{let n=[],r=[],i=[],a=``,o,c=()=>{r.length!==0&&(n.push({role:`assistant`,content:``,createdAt:a,toolCalls:r},{role:`tool`,content:``,createdAt:a,toolResults:i}),r=[],i=[])};for(let l of e){let e=s(l);if(e){let t=l.agentMetadata?.clientToolAnswer?.batch;r.length>0&&(t===void 0||t!==o)&&c(),r.length===0&&(a=l.createdAt,o=t),r.some(t=>t.toolCallId===e.call.toolCallId)||(r.push(e.call),i.push(e.result));continue}let u=t(l);u&&(c(),n.push(u))}return c(),n}})),u,d,f=e((()=>{u=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`,`image/bmp`],d=[`application/pdf`,`text/plain`,`text/markdown`,`text/csv`,`application/msword`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`,`application/vnd.ms-excel`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/json`],[...u,...d]}));function p(e){let t=e.content;if(typeof t!=`string`||t===``)return;let n=e.contentParts??e.llmContent??e.rawContent??t;if(typeof n!=`string`||n!==t)return t}var m=e((()=>{f()})),h,g=e((()=>{h=e=>e.localOnly===!0||e.role===`assistant`&&typeof e.id==`string`&&e.id.startsWith(`reconnect-failed-`)})),_=`4.31.0`,v,y=e((()=>{v=_})),b,x,S,C,w;e((()=>{i(),l(),m(),g(),y(),b=e=>e.voiceCaption||h(e)?!1:!!(e.contentParts&&e.contentParts.length>0||e.llmContent&&e.llmContent.trim().length>0||e.rawContent&&e.rawContent.trim().length>0||e.content&&e.content.trim().length>0),x=e=>e.slice().sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()),S=e=>{let t=e.agentMetadata?.providerPhase??e.agentMetadata?.phase;return e.role===`assistant`&&(t===`commentary`||t===`partial_answer`||t===`final_answer`)?{phase:t}:{}},C=e=>({role:e.role,content:e.contentParts??e.llmContent??e.rawContent??e.content,createdAt:e.createdAt,...S(e)}),w=class{constructor(e){this.host=e}async initializeSession(){await this.host.historyInternals.historyBootstrapReady;let e=this.host.config.getStoredConversationId?.()||null,t=this.host.historyInternals.shouldResumeDurableConversation?.()===!0;if(!this.host.isHistoryCapable()&&!t)return this.#e(e,!1);let n=await this.host.readVisitorToken();if(e&&n)try{let n=await this.createClientSession({conversationId:e,durableResume:t});return t&&n.durableRecovery?.enabled!==!0&&this.host.historyInternals.setStoredResumableHandle?.(null),this.host.finishInit(n,e,!1)}catch(n){if(!(n instanceof this.host.HistoryClientError&&n.code===`not_found`)&&!(n instanceof this.host.HistoryClientError&&n.code===`visitor_required`)&&!(n instanceof this.host.HistoryClientError&&n.code===`history_disabled`))throw n;return t&&this.host.historyInternals.setStoredResumableHandle?.(null),this.#e(e,!0)}return this.#e(e,!1)}async#e(e,t){let n=this.host.historyInternals.visitorStore;return n&&!await this.host.readVisitorToken()?n.withFirstInitLock(()=>this.#t(e,t)):this.#t(e,t)}async#t(e,t){let n=this.host.config.getStoredSessionId?.()||null,r=await this.createClientSession({storedSessionId:n}),i=await this.#n(r);return this.host.finishInit(i,e,t)}async#n(e){if(!e.visitor?.token||this.host.claimInFlight||!this.host.isHistoryCapable()&&e.durableRecovery?.enabled!==!0)return e;this.host.claimInFlight=!0;try{return await this.createClientSession({storedSessionId:e.sessionId})}catch{return e}finally{this.host.claimInFlight=!1}}async sendWithClientToolsDiff(e,n,r,i){let a=!!(n&&n.length>0),o=a?t(n):void 0,s=this.host.clientToolsFingerprintSessionId===e,c=a&&s&&this.host.lastSentClientToolsFingerprint===o,l=!a&&i?.emptyMeansReplace===!0&&this.host.sentNonEmptyClientToolsSessionId===e,u=!1,d;for(let e=0;d=await r({...a&&(u||!c)&&n?{clientTools:n}:{},...l?{clientTools:[]}:{},...o?{clientToolsFingerprint:o}:{}}),d.status===409&&e===0&&a&&(await d.clone().json().catch(()=>null))?.error===`client_tools_resend_required`;e++)u=!0,this.host.lastSentClientToolsFingerprint=null;return{response:d,commit:()=>{this.host.lastSentClientToolsFingerprint=o??null,this.host.clientToolsFingerprintSessionId=e,a?this.host.sentNonEmptyClientToolsSessionId=e:l&&(this.host.sentNonEmptyClientToolsSessionId=null)}}}async createClientSession(e){let t=this.host.isHistoryCapable()&&!e.omitVisitorFields,n=!e.omitVisitorFields,r=null;(t||n)&&(await this.host.historyInternals.historyBootstrapReady,r=await this.host.readVisitorToken());let i=this.host.routing(),a=i.agentId??i.flowId,o=t||e.durableResume?e.conversationId:void 0,s={token:this.host.config.clientToken,...a&&{flowId:a},...t&&{visitorHistory:!0},...n&&{durableRecovery:!0},...(t||n)&&r?{visitorToken:r}:{},...t&&e.identityProof?{identityProof:e.identityProof}:{},...o?{conversationId:o}:e.storedSessionId?{sessionId:e.storedSessionId}:{}};e.signal?.throwIfAborted();let c=await fetch(this.host.getClientApiUrl(`init`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v},body:JSON.stringify(s),signal:e.signal});if(!c.ok){let n=await c.json().catch(()=>({error:`Session initialization failed`}));if(t&&c.status===403&&n.error===`visitor_history_disabled`){if(this.host.markHistoryUnavailable(),o)throw new this.host.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`);return this.createClientSession({...e,omitVisitorFields:!0})}throw c.status===403&&n.error===`durable_recovery_disabled`?new this.host.HistoryClientError(`history_disabled`,`Durable recovery is disabled for this surface`):(t||e.durableResume)&&c.status===401&&n.error===`visitor_required`?new this.host.HistoryClientError(`visitor_required`,`Visitor credential no longer resolves`):o&&c.status===404?new this.host.HistoryClientError(`not_found`,`Conversation not found`):c.status===401?Error(`Invalid client token: ${n.hint||n.error}`):c.status===403?Error(`Origin not allowed: ${n.hint||n.error}`):Error(n.error||`Failed to initialize session`)}let l=await c.json();return l.visitor?.token&&await this.host.historyInternals.visitorStore?.set(l.visitor.token),{sessionId:l.sessionId,expiresAt:new Date(l.expiresAt),flow:l.flow,...l.conversationId?{conversationId:l.conversationId}:{},...l.targetId?{targetId:l.targetId}:{},...l.conversationRevision?{conversationRevision:l.conversationRevision}:{},...l.durableRecovery?{durableRecovery:l.durableRecovery}:{},...l.visitor?{visitor:l.visitor}:{},config:{welcomeMessage:l.config.welcomeMessage,placeholder:l.config.placeholder,theme:l.config.theme}}}async sendFeedback(e){if([`upvote`,`downvote`,`copy`].includes(e.type)&&!e.messageId)throw Error(`messageId is required for ${e.type} feedback type`);if(e.type===`csat`&&(e.rating===void 0||e.rating<1||e.rating>5))throw Error(`CSAT rating must be between 1 and 5`);if(e.type===`nps`&&(e.rating===void 0||e.rating<0||e.rating>10))throw Error(`NPS rating must be between 0 and 10`);this.host.debug&&console.debug(`[AgentWidgetClient] sending feedback`,e);let t={...e,...this.host.config.clientToken&&{token:this.host.config.clientToken}},n=await fetch(`${this.host.clientApiBase()}/v1/client/feedback`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:`Feedback submission failed`}));throw n.status===401?(this.host.clientSession=null,this.host.resetSessionWarmLatch(),this.host.config.onSessionExpired?.(),Error(`Session expired. Please refresh to continue.`)):Error(e.error||`Failed to submit feedback`)}}async dispatchClientToken(e,t,n){let{HistoryClientError:r}=this.host,i=()=>this.host.isCurrentTurn(n),a=e=>{i()&&t(e)};try{let t=()=>{if(e.signal?.throwIfAborted(),!i())throw new DOMException(`Turn superseded`,`AbortError`)},o=this.host.clientSession??await this.host.initSession();t();let s=async()=>{t();let n=o,r=n.durableRecovery?.enabled===!0;if(r&&(!n.conversationId||!await this.host.readVisitorToken()))throw Error(`Renewing this conversation requires its visitor credential.`);t();let i=await this.host.createClientSession({...r||this.host.isHistoryCapable()?{conversationId:n.conversationId,durableResume:r}:{storedSessionId:n.sessionId},signal:e.signal});if(t(),n.conversationId&&i.conversationId!==n.conversationId||r&&i.durableRecovery?.enabled!==!0)throw Error(`Session renewal did not preserve this conversation.`);o=this.host.finishInit(i,n.conversationId??null,!1),this.host.clientSession=o,this.host.resetSessionWarmLatch(),this.host.resetClientToolsFingerprint(),this.host.config.onSessionInit?.(o)};Date.now()>=o.expiresAt.getTime()-6e4&&await s();let c=await this.#c(e.messages),l=c.metadata?Object.fromEntries(Object.entries(c.metadata).filter(([e])=>e!==`sessionId`&&e!==`session_id`)):void 0,u=this.host.isHistoryCapable(),d={sessionId:o.sessionId,messages:e.messages.filter(b).map(e=>{let t=u?p(e):void 0;return{id:e.id,role:e.role,content:e.contentParts??e.llmContent??e.rawContent??e.content,...t!==void 0&&{displayContent:t}}}),...e.assistantMessageId&&{assistantMessageId:e.assistantMessageId},...l&&Object.keys(l).length>0&&{metadata:l},...c.inputs&&Object.keys(c.inputs).length>0&&{inputs:c.inputs},...c.context&&{context:c.context},turnId:n,...e.interrupt&&{submitMode:`interrupt`},...e.voiceSpoken&&{voice:{spoken:!0,...e.voicePriorToolResults?.length&&{priorToolResults:e.voicePriorToolResults}}}},f=async()=>{t();let n=o.durableRecovery?.enabled===!0?await this.host.readVisitorToken():null;return t(),this.host.sendWithClientToolsDiff(o.sessionId,c.clientTools,async r=>{t();let i=await this.host.resolveChatIdentityProof(e.signal);t();let a={...d,sessionId:o.sessionId,...r,...i&&{identityProof:i}};return this.host.debug&&console.debug(`[AgentWidgetClient] client token dispatch`,{...a,...i&&{identityProof:{provider:i.provider,token:`[REDACTED]`}}}),fetch(this.host.getClientApiUrl(`chat`),{method:`POST`,headers:{"Content-Type":`application/json`,"X-Persona-Version":v,...n?{"X-Visitor-Token":n}:{}},body:JSON.stringify(a),signal:e.signal})})},m=await f();if(t(),m.response.status===401){let e=await m.response.clone().json().catch(()=>null);t(),e?.error===`Session not found or expired`&&(await s(),m=await f(),t())}let{response:h,commit:g}=m;if(!h.ok){let e=await h.json().catch(()=>({error:`Chat request failed`}));if(h.status===401&&e.error===`invalid_identity_proof`){let e=new r(`invalid_identity_proof`,`The identity proof was rejected`);throw a({type:`error`,error:e}),e}if(h.status===401){this.host.clearClientSession(),this.host.config.onSessionExpired?.();let e=/* @__PURE__ */ Error(`Session expired. Please refresh to continue.`);throw a({type:`error`,error:e}),e}if(h.status===429){let t=Error(e.hint||`Message limit reached for this session.`);throw a({type:`error`,error:t}),t}if(h.status===410&&e.error===`conversation_deleted`){let e=new r(`conversation_deleted`,`This conversation was deleted`);throw a({type:`error`,error:e}),e}let t=Error(e.error||`Failed to send message`);throw a({type:`error`,error:t}),t}if(!h.body){let e=/* @__PURE__ */ Error(`No response body received`);throw a({type:`error`,error:e}),e}g(),a({type:`status`,status:`connected`});try{await this.host.streamResponse(h.body,a,e.assistantMessageId,void 0,e.signal)}finally{a({type:`status`,status:`idle`})}}catch(e){let t=e instanceof Error?e:Error(String(e));throw!(t instanceof r)&&!t.message.includes(`Session expired`)&&!t.message.includes(`Message limit`)&&a({type:`error`,error:t}),t}}async dispatchProxy(e,t){let n=await this.#c(e.messages,e.composerOptions);this.host.debug&&console.debug(`[AgentWidgetClient] dispatch payload`,n);let r={...this.host.headers};if(this.host.getHeaders)try{let e=await this.host.getHeaders();r={...r,...e}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] getHeaders error:`,e)}let i;if(this.host.customFetch)try{i=await this.host.customFetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal},n)}catch(e){let n=e instanceof Error?e:Error(String(e));throw t({type:`error`,error:n}),n}else i=await fetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal});if(!i.ok||!i.body){let e=/* @__PURE__ */ Error(`Chat backend request failed: ${i.status} ${i.statusText}`);throw t({type:`error`,error:e}),e}t({type:`status`,status:`connected`});try{await this.host.streamResponse(i.body,t,void 0,void 0,e.signal)}finally{t({type:`status`,status:`idle`})}}async dispatchAgent(e,t){let n=await this.#s(e.messages,e.composerOptions);this.host.debug&&console.debug(`[AgentWidgetClient] agent dispatch payload`,n);let r={...this.host.headers};if(this.host.getHeaders)try{let e=await this.host.getHeaders();r={...r,...e}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] getHeaders error:`,e)}let i;if(this.host.customFetch)try{i=await this.host.customFetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal},n)}catch(e){let n=e instanceof Error?e:Error(String(e));throw t({type:`error`,error:n}),n}else i=await fetch(this.host.apiUrl,{method:`POST`,headers:r,body:JSON.stringify(n),signal:e.signal});if(!i.ok||!i.body){let e=/* @__PURE__ */ Error(`Agent execution request failed: ${i.status} ${i.statusText}`);throw t({type:`error`,error:e}),e}t({type:`status`,status:`connected`});try{await this.host.streamResponse(i.body,t,e.assistantMessageId,void 0,e.signal)}finally{t({type:`status`,status:`idle`})}}#r(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role===`user`)return n.mentionContext&&Object.keys(n.mentionContext).length>0?{mentions:n.mentionContext}:null}return null}async#i(e){let t={};this.host.contextProviders.length&&await Promise.all(this.host.contextProviders.map(async n=>{try{let r=await n({messages:e,config:this.host.config});r&&typeof r==`object`&&Object.assign(t,r)}catch(e){typeof console<`u`&&console.warn(`[AgentWidget] Context provider failed:`,e)}}));let n=this.#r(e);return n&&Object.assign(t,n),Object.keys(t).length?t:null}#a(e){if(!e)return;let t={};return e.selectedModelId&&(t.selectedModelId=e.selectedModelId),e.activeModeIds?.length&&(t.activeModeIds=[...e.activeModeIds]),Object.keys(t).length>0?t:void 0}#o(e,t){let n=t?.selectedModelId;return!n||!(`model`in e)?e:this.host.config.composer?.models?.some(e=>e.id===n)?{...e,model:n}:e}async#s(e,t){let n=this.host.routing().agentId;if(!this.host.config.agent&&!n)throw Error(`Agent configuration required for agent mode`);let r=c(x(e),e=>b(e)&&(e.role===`user`||e.role===`assistant`||e.role===`system`)&&(!e.variant||e.variant===`assistant`)?C(e):null),i=this.#a(t),a={agent:this.#o(this.host.config.agent??{agentId:n},i),messages:r,options:{streamResponse:!0,recordMode:`virtual`,...this.host.config.agentOptions}};i&&(a.composerOptions=i);let o=[...this.host.builtInClientTools(this.host.config),...await(await this.host.getWebMcpBridge())?.snapshotForDispatch()??[]];o.length>0&&(a.clientTools=o);let s=await this.#i(e);return s&&(a.context=s),a}async#c(e,t){let n=c(x(e),e=>b(e)?C(e):null),r=this.host.routing(),i={messages:n,...r.agentId?{agent:{agentId:r.agentId}}:r.flowId?{flowId:r.flowId}:{}};if(r.targetPayload)for(let[e,t]of Object.entries(r.targetPayload))e!==`messages`&&(i[e]=t);let a=[...this.host.builtInClientTools(this.host.config),...await(await this.host.getWebMcpBridge())?.snapshotForDispatch()??[]];a.length>0&&(i.clientTools=a);let o=await this.#i(e);o&&(i.context=o);let s=this.#a(t);if(s&&(i.composerOptions=s),this.host.requestMiddleware)try{let e=await this.host.requestMiddleware({payload:{...i},config:this.host.config});if(e&&typeof e==`object`){let t=e;return i.clientTools!==void 0&&!(`clientTools`in t)&&(t.clientTools=i.clientTools),t}}catch(e){typeof console<`u`&&console.error(`[AgentWidget] Request middleware error:`,e)}return i}}}))();export{w as ClientDispatch};
|
package/dist/client-history.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=`4.
|
|
1
|
+
var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=`4.31.0`,n,r=e((()=>{n=t}));function i(e,t,n){let r=new URLSearchParams;for(let[e,t]of Object.entries(n))t!==void 0&&t!==``&&r.set(e,String(t));let i=r.toString();return`${e.clientApiBase()}/v1/client/${t}${i?`?${i}`:``}`}function a(e,t){return t||e.config.features?.history?.scope||(e.config.getIdentityProof?`verified-user`:`browser`)}async function o(e,t,n){let r=e.config.getIdentityProof;if(!r)return n&&e.setHistoryIdentityStatus(e.browserOnlyStatus()),null;n&&e.setHistoryIdentityStatus({state:`verifying`});let i;try{i=await r()??null}catch{throw n&&e.setHistoryIdentityStatus({state:`identity_provider_failed`}),new e.HistoryClientError(`identity_provider_failed`,`The identity proof provider failed`)}if(i)return i;if(t.visitor?.endUserId!=null)throw n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`authentication_required`,`This browser is bound to a signed-in user and needs a fresh identity proof`);return n&&e.setHistoryIdentityStatus({state:`browser_only`,reason:`proof_unavailable_before_binding`}),null}async function s(e,t,n,r){if(t.visitor?.endUserId!=null)return t;let i=await e.reinitWithProof(n);if(i.visitor?.identityStatus!==`admitted`||i.visitor?.endUserId==null)throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);return i}async function c(e,t){let n=await t.json().catch(()=>({}));return typeof n.error==`string`?n.error:typeof n.message==`string`?n.message:``}async function l(e,t,n,r){let i=t.toLowerCase();if(i.includes(`invalid_identity_proof`))throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w);if(i.includes(`visitor token required`))throw new e.HistoryClientError(`visitor_token_missing`,T);if(i.includes(`visitor_identity_mismatch`)){if(!n)throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`visitor_identity_mismatch`,E);return e.reinitWithProof(n)}if(i.includes(`expired`)||i.includes(`not found`))return e.clearClientSession(),e.initSession();throw new e.HistoryClientError(`unauthorized`,t||`History request was not authorized`)}async function u(e,t,n){let r=await c(e,t);if(t.status===404)return new e.HistoryClientError(`not_found`,`Conversation not found`);if(t.status===429){let n=Number.parseInt(t.headers.get(`Retry-After`)??``,10);return new e.HistoryClientError(`rate_limited`,`Too many history requests`,{...Number.isFinite(n)?{retryAfterSeconds:n}:{}})}if(t.status===503&&r.includes(`identity_proof_not_admitted`))return n&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);if(t.status===401){let t=r.toLowerCase();return t.includes(`invalid_identity_proof`)?(n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w)):t.includes(`visitor token required`)?new e.HistoryClientError(`visitor_token_missing`,T):t.includes(`visitor_identity_mismatch`)?new e.HistoryClientError(`visitor_identity_mismatch`,E):new e.HistoryClientError(`unauthorized`,r||`History request was not authorized`)}return new e.HistoryClientError(`request_failed`,r||`History request failed (${t.status})`)}function d(e,t,n,r){let i=t?.toLowerCase()??null;if(n){if(i===`admitted`){r&&e.setHistoryIdentityStatus({state:`verified`});return}throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),i===`ignored`?new e.HistoryClientError(`identity_contract_violation`,`Server reported an ignored identity proof on a success response`):new e.HistoryClientError(`proof_not_admitted`,`The response did not acknowledge the identity proof this request sent`)}if(i===`admitted`)throw new e.HistoryClientError(`identity_contract_violation`,`Server admitted an identity proof that was never sent`);r&&e.setHistoryIdentityStatus(e.browserOnlyStatus())}async function f(e,t,r){p(e);let f=r.trackIdentity!==!1,m=await e.initSession(),h=null;a(e,r.scope)===`verified-user`&&(h=await o(e,m,f),h&&(m=await s(e,m,h,f)));let g=e.historyInternals.visitorStore,_=!1;for(;;){let a=g?.revision()??0,o=await e.readVisitorToken();if(!o&&!r.visitorTokenOptional)throw new e.HistoryClientError(`visitor_token_missing`,`No visitor credential is stored for this browser`);let s=await fetch(i(e,t,{...r.query,sessionId:m.sessionId}),{method:r.method,headers:{"X-Persona-Version":n,...o?{"X-Visitor-Token":o}:{},...h?{"X-Identity-Proof":h}:{},...r.body===void 0?{}:{"Content-Type":`application/json`}},...r.body===void 0?{}:{body:JSON.stringify(r.body)},...r.keepalive?{keepalive:!0}:{}});if(s.status===401&&!_){_=!0,m=await l(e,await c(e,s),h,f);continue}if(!s.ok)throw await u(e,s,f);let p=s.headers.get(`X-History-Identity-Status`),v=await s.json().catch(()=>void 0);if(g&&g.revision()!==a)throw new e.HistoryClientError(`credential_changed`,`The visitor credential changed while the request was in flight`);return d(e,p,h!==null,f),v}}function p(e){if(!e.isClientTokenMode())throw Error(`Conversation history is only available in client token mode`);if(!e.isHistoryCapable())throw new e.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`)}async function m(e,t){let n=await f(e,`conversations`,{method:`GET`,query:{...t?.cursor?{cursor:t.cursor}:{},...t?.limit===void 0?{}:{limit:t.limit},...t?.targetId?{targetId:t.targetId}:{}},...t?.scope?{scope:t.scope}:{}});return{data:(Array.isArray(n?.data)?n.data:[]).map(S),nextCursor:typeof n?.nextCursor==`string`?n.nextCursor:null}}async function h(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`GET`,query:{...n?.messageCursor?{messageCursor:n.messageCursor}:{}},...n?.scope?{scope:n.scope}:{}});return{summary:S(r),messages:Array.isArray(r?.messages)?r.messages:[],nextMessageCursor:typeof r?.nextMessageCursor==`string`?r.nextMessageCursor:null,conversationRevision:typeof r?.conversationRevision==`string`?r.conversationRevision:null}}async function g(e,t,n){p(e);let r=0;for(let t of n){let n=t.displayContent.length;if(n>b)throw new e.HistoryClientError(`payload_too_large`,`displayContent exceeds the ${b} character limit`);r+=n}if(r>x)throw new e.HistoryClientError(`payload_too_large`,`Display projection batch exceeds the ${x} character limit`);await e.initSession();let i=e.historyInternals.visitorStore,a=i?.revision()??0,o=await f(e,`conversations/${encodeURIComponent(t)}/display-projections`,{method:`PATCH`,body:{messages:n},scope:`browser`,keepalive:r<=x,trackIdentity:!1}),s=typeof o?.conversationRevision==`string`?o.conversationRevision:null;return s&&e.clientSession?.conversationId===t&&(i?.revision()??0)===a&&e.historyInternals.setStoredConversationRevision?.(s),{conversationRevision:s}}async function _(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`DELETE`,...n?.scope?{scope:n.scope}:{}});return{deleted:typeof r?.deleted==`number`?r.deleted:0}}async function v(e,t){let n=await f(e,`conversations`,{method:`DELETE`,query:{...t?.targetId===void 0?{}:{targetId:t.targetId}},...t?.scope?{scope:t.scope}:{}});return{deleted:typeof n?.deleted==`number`?n.deleted:0}}async function y(e){p(e),e.setHistoryIdentityStatus({state:`resetting`});try{await f(e,`visitor/reset`,{method:`POST`,scope:`browser`,visitorTokenOptional:!0})}finally{await e.historyInternals.visitorStore?.clear(),e.setHistoryIdentityStatus(e.derivedBrowserOnly())}return{reset:!0}}var b,x,S,C,w,T,E;e((()=>{r(),b=32768,x=49152,S=e=>{let t=e??{},n=typeof t.targetId==`string`?t.targetId:null;return{id:typeof t.id==`string`?t.id:``,title:typeof t.title==`string`?t.title:``,targetId:n,preview:typeof t.preview==`string`?t.preview:null,messageCount:typeof t.messageCount==`number`?t.messageCount:0,createdAt:typeof t.createdAt==`string`?t.createdAt:``,updatedAt:typeof t.updatedAt==`string`?t.updatedAt:``}},C=`The identity proof was not admitted; account history is unavailable`,w=`The identity proof was rejected`,T=`The request carried no visitor credential`,E=`The stored visitor belongs to a different signed-in user`}))();export{v as deleteAllConversations,_ as deleteConversation,g as finalizeDisplayProjections,h as getConversation,u as historyErrorFor,m as listConversations,c as readErrorCode,l as recoverFromUnauthorized,y as resetVisitor};
|
package/dist/codegen.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.31.0/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
|
|
2
2
|
const jsonSource = (message as any).rawContent || text || message.content;
|
|
3
3
|
if (!jsonSource || typeof jsonSource !== 'string') return null;
|
|
4
4
|
let cleanJson = jsonSource
|
package/dist/codegen.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.
|
|
1
|
+
function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.31.0/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
|
|
2
2
|
const jsonSource = (message as any).rawContent || text || message.content;
|
|
3
3
|
if (!jsonSource || typeof jsonSource !== 'string') return null;
|
|
4
4
|
let cleanJson = jsonSource
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Mr as ComposerState, Sr as ComposerModeGroup, Ta as renderLucideIcon, ar as ComposerActionOverflowConfig, br as ComposerMode, ir as ComposerActionContributionContext, jo as AgentWidgetPlugin, k as AgentWidgetConfig, or as ComposerActionPlacement, pr as ComposerCustomAction, rr as ComposerActionContext, sr as ComposerActionPresentation, tr as ComposerAction, wr as ComposerModel } from "./types-
|
|
1
|
+
import { Mr as ComposerState, Sr as ComposerModeGroup, Ta as renderLucideIcon, ar as ComposerActionOverflowConfig, br as ComposerMode, ir as ComposerActionContributionContext, jo as AgentWidgetPlugin, k as AgentWidgetConfig, or as ComposerActionPlacement, pr as ComposerCustomAction, rr as ComposerActionContext, sr as ComposerActionPresentation, tr as ComposerAction, wr as ComposerModel } from "./types-CSXHl5cN.cjs";
|
|
2
2
|
import { i as createPopover, s as isEditableEventTarget } from "./plugin-kit-C1mRjLgW.cjs";
|
|
3
3
|
import { i as hideTooltipFor, r as attachTooltip } from "./tooltip-BkW-8MnD.cjs";
|
|
4
|
-
import { t as createComposerStore } from "./composer-store-
|
|
4
|
+
import { t as createComposerStore } from "./composer-store-BV6kTlKv.cjs";
|
|
5
5
|
//#region src/components/composer-bindings.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* Atomic composer surface bindings.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Mr as ComposerState, Sr as ComposerModeGroup, Ta as renderLucideIcon, ar as ComposerActionOverflowConfig, br as ComposerMode, ir as ComposerActionContributionContext, jo as AgentWidgetPlugin, k as AgentWidgetConfig, or as ComposerActionPlacement, pr as ComposerCustomAction, rr as ComposerActionContext, sr as ComposerActionPresentation, tr as ComposerAction, wr as ComposerModel } from "./types-
|
|
1
|
+
import { Mr as ComposerState, Sr as ComposerModeGroup, Ta as renderLucideIcon, ar as ComposerActionOverflowConfig, br as ComposerMode, ir as ComposerActionContributionContext, jo as AgentWidgetPlugin, k as AgentWidgetConfig, or as ComposerActionPlacement, pr as ComposerCustomAction, rr as ComposerActionContext, sr as ComposerActionPresentation, tr as ComposerAction, wr as ComposerModel } from "./types-CSXHl5cN.js";
|
|
2
2
|
import { i as createPopover, s as isEditableEventTarget } from "./plugin-kit-C1mRjLgW.js";
|
|
3
3
|
import { i as hideTooltipFor, r as attachTooltip } from "./tooltip-BkW-8MnD.js";
|
|
4
|
-
import { t as createComposerStore } from "./composer-store-
|
|
4
|
+
import { t as createComposerStore } from "./composer-store-BV6kTlKv.js";
|
|
5
5
|
//#region src/components/composer-bindings.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* Atomic composer surface bindings.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, P as AgentWidgetContextMentionComposerCapability } from "./types-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, P as AgentWidgetContextMentionComposerCapability } from "./types-CSXHl5cN.cjs";
|
|
2
2
|
//#region src/utils/mention-trigger.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* Pure `@`-trigger detection for the composer mention menu.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, P as AgentWidgetContextMentionComposerCapability } from "./types-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, P as AgentWidgetContextMentionComposerCapability } from "./types-CSXHl5cN.js";
|
|
2
2
|
//#region src/utils/mention-trigger.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* Pure `@`-trigger detection for the composer mention menu.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ar as ComposerQuote, B as AgentWidgetContextMentionRef, Fr as ComposerSubmissionSnapshot, Mr as ComposerState, ur as ComposerAttachmentState } from "./types-
|
|
1
|
+
import { Ar as ComposerQuote, B as AgentWidgetContextMentionRef, Fr as ComposerSubmissionSnapshot, Mr as ComposerState, ur as ComposerAttachmentState } from "./types-CSXHl5cN.cjs";
|
|
2
2
|
//#region src/utils/composer-store.d.ts
|
|
3
3
|
type ComposerStateListener = (state: Readonly<ComposerState>) => void;
|
|
4
4
|
interface ComposerStore {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ar as ComposerQuote, B as AgentWidgetContextMentionRef, Fr as ComposerSubmissionSnapshot, Mr as ComposerState, ur as ComposerAttachmentState } from "./types-
|
|
1
|
+
import { Ar as ComposerQuote, B as AgentWidgetContextMentionRef, Fr as ComposerSubmissionSnapshot, Mr as ComposerState, ur as ComposerAttachmentState } from "./types-CSXHl5cN.js";
|
|
2
2
|
//#region src/utils/composer-store.d.ts
|
|
3
3
|
type ComposerStateListener = (state: Readonly<ComposerState>) => void;
|
|
4
4
|
interface ComposerStore {
|
package/dist/{context-mention-manager-IfT4JHma.d.cts → context-mention-manager-BfZzcydV.d.cts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as AgentWidgetContextMentionRef, I as AgentWidgetContextMentionItem, Lr as ContentPart, U as AgentWidgetContextMentionSource, z as AgentWidgetContextMentionPayload } from "./types-
|
|
2
|
-
import "./composer-input-
|
|
1
|
+
import { B as AgentWidgetContextMentionRef, I as AgentWidgetContextMentionItem, Lr as ContentPart, U as AgentWidgetContextMentionSource, z as AgentWidgetContextMentionPayload } from "./types-CSXHl5cN.cjs";
|
|
2
|
+
import "./composer-input-C2_WizXV.cjs";
|
|
3
3
|
//#region src/components/context-mention-chip.d.ts
|
|
4
4
|
type MentionChipStatus = "resolving" | "ready" | "error";
|
|
5
5
|
interface MentionChipParts {
|