super-agent-sdk 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/widget.cjs CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),fe=require("react-dom/client"),e=require("react/jsx-runtime");function K(a){const{sdk:s,sessionId:l,onSessionCreated:r,onStreamStart:t,onStreamEnd:i,onError:d,onMessageSend:n}=a,[o,x]=c.useState([]),[f,m]=c.useState("ready"),[v,g]=c.useState(null),p=c.useRef(null),h=c.useRef(!1),b=c.useRef(l);b.current=l;const u=c.useCallback(j=>{if(h.current)return;h.current=!0,n==null||n(j);const L={id:`user_${Date.now()}`,role:"user",parts:[{type:"text",content:j}],timestamp:Date.now()},z=`assistant_${Date.now()}`,pe={id:z,role:"assistant",parts:[],timestamp:Date.now()};x(N=>[...N,L,pe]),m("submitted"),g(null);const _=N=>{let A="",I="",M=[],W=!1;const $=()=>{const y=[...M];if(A){const E=y.findIndex(R=>R.type==="thinking");E>=0?y[E]={type:"thinking",content:A}:y.unshift({type:"thinking",content:A})}if(I){const E=y.findLastIndex(R=>R.type==="text");E>=0?y[E]={type:"text",content:I}:y.push({type:"text",content:I})}x(E=>E.map(R=>R.id===z?{...R,parts:y}:R))};p.current=s.chat({sessionId:N,message:j,stream:!0,onMessage:y=>{switch(W||(W=!0,m("streaming")),y.type){case"thinking":A+=y.content;break;case"ai":I+=y.content;break;case"tool_call":M.push({type:"tool_call",toolName:y.toolName,toolCallId:y.toolCallId,args:y.args??"{}"});break;case"tool_result":M.push({type:"tool_result",toolName:y.toolName??"",toolCallId:y.toolCallId,content:y.content}),I&&(M.push({type:"text",content:I}),I="");break}$()},onDone:y=>{(I||M.length>0||A)&&$(),y.sessionId&&y.sessionId!==b.current&&(r==null||r(y.sessionId)),i==null||i(y.sessionId||N),m("ready"),h.current=!1,p.current=null},onError:y=>{M.push({type:"error",content:y.message}),$(),g(y),m("error"),d==null||d(y),h.current=!1,p.current=null}}),t==null||t(N)};b.current?_(b.current):s.createSession().then(N=>{b.current=N,r==null||r(N),_(N)}).catch(N=>{g(N instanceof Error?N:new Error(String(N))),m("error"),d==null||d(N instanceof Error?N:new Error(String(N))),h.current=!1})},[s,r,t,i,d,n]),k=c.useCallback(()=>{var j;(j=p.current)==null||j.abort(),p.current=null,m("ready"),h.current=!1},[]),C=c.useCallback(()=>{if(h.current)return;const j=o.findLastIndex(z=>z.role==="user");if(j<0)return;const L=o[j].parts.filter(z=>z.type==="text").map(z=>z.content).join("");x(z=>z.slice(0,j)),u(L)},[o,u]);return{messages:o,status:f,error:v,sendMessage:u,stop:k,regenerate:C,setMessages:x}}const D="sa_active_conversation";function F(){try{return localStorage.getItem(D)}catch{return null}}function ue(a){try{a?localStorage.setItem(D,a):localStorage.removeItem(D)}catch{}}function U(a){const{sdk:s,onConversationChange:l}=a,[r,t]=c.useState([]),[i,d]=c.useState(()=>F()),[n,o]=c.useState(!1),x=c.useRef(!0);c.useEffect(()=>()=>{x.current=!1},[]);const f=c.useCallback(u=>{d(u),ue(u),u&&(l==null||l(u))},[l]),m=c.useCallback(async()=>{o(!0);try{const u=await s.listConversations({page:1,size:100});if(!x.current)return;t(u.items);const k=F();k&&!u.items.find(C=>C.sessionId===k)&&f(null)}catch{}finally{x.current&&o(!1)}},[s,f]),v=c.useCallback(async u=>(f(u),await s.getMessages(u)),[s,f]),g=c.useCallback(()=>{f(null)},[f]),p=c.useCallback(async u=>{await s.deleteConversation(u),t(k=>k.filter(C=>C.sessionId!==u)),i===u&&f(null)},[s,i,f]),h=c.useCallback(async(u,k)=>{await s.renameConversation(u,k),t(C=>C.map(j=>j.sessionId===u?{...j,title:k}:j))},[s]),{enabled:b=!0}=a;return c.useEffect(()=>{b&&m()},[b,m]),{conversations:r,activeConversationId:i,loading:n,loadConversations:m,switchConversation:v,newConversation:g,deleteConversation:p,renameConversation:h,setActiveConversationId:f}}const V=c.createContext(null);function T(){const a=c.useContext(V);if(!a)throw new Error("useChatContext must be used within ChatProvider");return a}function O({sdk:a,hooks:s,children:l}){const[r,t]=c.useState(!1),[i,d]=c.useState(!1);c.useEffect(()=>{a.getToken().then(()=>{d(!0)}).catch(()=>{d(!0)})},[a]);const n=U({sdk:a,onConversationChange:s==null?void 0:s.onConversationChange,enabled:i}),o=K({sdk:a,sessionId:n.activeConversationId,onSessionCreated:p=>{n.setActiveConversationId(p),n.loadConversations()},onStreamStart:s==null?void 0:s.onStreamStart,onStreamEnd:p=>{var h;(h=s==null?void 0:s.onStreamEnd)==null||h.call(s,p),n.loadConversations()},onError:s==null?void 0:s.onError,onMessageSend:s==null?void 0:s.onMessageSend}),x=c.useCallback(async p=>{const h=await n.switchConversation(p);o.setMessages(h),t(!1)},[n,o]),f=c.useCallback(()=>{n.newConversation(),o.setMessages([]),t(!1)},[n,o]),m=c.useCallback(async p=>{await n.deleteConversation(p),n.activeConversationId===p&&o.setMessages([])},[n,o]);c.useEffect(()=>{n.activeConversationId&&o.messages.length===0&&a.getMessages(n.activeConversationId).then(p=>{o.setMessages(p)}).catch(()=>{})},[]);const v=c.useCallback(()=>{t(p=>!p)},[]),g={status:o.status,error:o.error,messages:o.messages,conversations:n.conversations,activeConversationId:n.activeConversationId,isThreadListOpen:r,sendMessage:o.sendMessage,stop:o.stop,regenerate:o.regenerate,switchConversation:x,newConversation:f,deleteConversation:m,renameConversation:n.renameConversation,toggleThreadList:v,feedback:(p,h)=>{a.feedback(p,h)}};return e.jsx(V.Provider,{value:g,children:l})}function w({name:a,size:s=16,color:l="currentColor",className:r,style:t}){return e.jsx("svg",{className:r,style:{width:s,height:s,fill:l,verticalAlign:"middle",...t},"aria-hidden":"true",children:e.jsx("use",{href:`#icon-${a}`})})}function Y({isOpen:a,onClick:s}){return e.jsx("button",{className:`sa-trigger ${a?"sa-trigger-open":""}`,onClick:s,children:a?e.jsx(w,{name:"x",size:24,color:"#fff"}):e.jsx(w,{name:"message-square",size:24,color:"#fff"})})}function J({title:a,onClose:s,onToggleThreadList:l,showClose:r=!0}){return e.jsxs("div",{className:"sa-header",children:[e.jsxs("div",{className:"sa-header-left",children:[e.jsx("div",{className:"sa-header-avatar",children:"A"}),e.jsxs("div",{className:"sa-header-info",children:[e.jsx("div",{className:"sa-header-title",children:a}),e.jsx("div",{className:"sa-header-status",children:"● Online"})]})]}),e.jsxs("div",{className:"sa-header-actions",children:[e.jsx("button",{className:"sa-header-btn",onClick:l,title:"会话列表",children:e.jsx(w,{name:"menu",size:16})}),r&&e.jsx("button",{className:"sa-header-btn",onClick:s,title:"关闭",children:e.jsx(w,{name:"x",size:16})})]})]})}function X(){const{conversations:a,activeConversationId:s,switchConversation:l,newConversation:r,deleteConversation:t,renameConversation:i,isThreadListOpen:d,toggleThreadList:n}=T(),[o,x]=c.useState(null),[f,m]=c.useState(""),v=c.useCallback((p,h)=>{x(p),m(h??"")},[]),g=c.useCallback(p=>{f.trim()&&i(p,f.trim()),x(null)},[f,i]);return d?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"sa-thread-list-overlay",onClick:n}),e.jsxs("div",{className:"sa-thread-list",children:[e.jsxs("div",{className:"sa-thread-list-header",children:[e.jsx("span",{children:"会话列表"}),e.jsxs("button",{className:"sa-thread-list-new",onClick:r,children:[e.jsx(w,{name:"plus",size:14})," 新会话"]})]}),e.jsxs("div",{className:"sa-thread-list-items",children:[a.length===0&&e.jsx("div",{className:"sa-thread-list-empty",children:"暂无会话"}),a.map(p=>e.jsxs("div",{className:`sa-thread-item ${p.sessionId===s?"active":""}`,onClick:()=>l(p.sessionId),children:[o===p.sessionId?e.jsx("input",{className:"sa-thread-item-edit",value:f,onChange:h=>m(h.target.value),onBlur:()=>g(p.sessionId),onKeyDown:h=>{h.key==="Enter"&&g(p.sessionId),h.key==="Escape"&&x(null)},onClick:h=>h.stopPropagation(),autoFocus:!0}):e.jsx("span",{className:"sa-thread-item-title",onDoubleClick:h=>{h.stopPropagation(),v(p.sessionId,p.title)},children:p.title||"新会话"}),e.jsx("button",{className:"sa-thread-item-delete",onClick:h=>{h.stopPropagation(),t(p.sessionId)},title:"删除",children:e.jsx(w,{name:"trash2",size:14})})]},p.sessionId))]})]})]}):null}function G(a){const s=c.useRef(null),l=c.useRef(!1),r=c.useRef(0),t=c.useCallback(()=>{const d=s.current;if(!d)return;const{scrollTop:n,scrollHeight:o,clientHeight:x}=d,f=o-n-x<40;n<r.current&&!f&&(l.current=!0),f&&(l.current=!1),r.current=n},[]);c.useEffect(()=>{const d=s.current;if(d)return d.addEventListener("scroll",t,{passive:!0}),()=>d.removeEventListener("scroll",t)},[t]),c.useEffect(()=>{if(l.current)return;const d=s.current;d&&requestAnimationFrame(()=>{d.scrollTop=d.scrollHeight})},a);const i=c.useCallback(()=>{l.current=!1;const d=s.current;d&&(d.scrollTop=d.scrollHeight)},[]);return{containerRef:s,scrollToBottom:i}}function S(a){return a.value++}function P(a,s){const l=[],r=[],t=()=>{r.length>0&&(l.push(r.join("")),r.length=0)};let i=0;for(;i<a.length;){const d=a[i];if(d==="`"){const n=a.indexOf("`",i+1);if(n!==-1){t(),l.push(e.jsx("code",{className:"sa-inline-code",children:a.slice(i+1,n)},S(s))),i=n+1;continue}}else if(d==="*"&&a[i+1]==="*"){const n=a.indexOf("**",i+2);if(n!==-1){t(),l.push(e.jsx("strong",{children:P(a.slice(i+2,n),s)},S(s))),i=n+2;continue}}else if(d==="*"){const n=a.indexOf("*",i+1);if(n!==-1){t(),l.push(e.jsx("em",{children:P(a.slice(i+1,n),s)},S(s))),i=n+1;continue}}else if(d==="["){const n=a.indexOf("]",i+1);if(n!==-1&&a[n+1]==="("){const o=a.indexOf(")",n+2);if(o!==-1){const x=a.slice(i+1,n),f=a.slice(n+2,o);t(),l.push(e.jsx("a",{href:f,target:"_blank",rel:"noreferrer",children:P(x,s)},S(s))),i=o+1;continue}}}r.push(d),i++}return t(),l}function xe(a,s){const l=[],r=a.split(`
2
- `);let t=0;const i=o=>o.trim()==="",d=o=>/^#{1,6}\s+\S/.test(o.trim()),n=o=>/^(?:[-*+]|\d+[.)])\s+\S/.test(o.trim());for(;t<r.length;){const o=r[t],x=o.trim();if(i(o)){t++;continue}if(d(o)){const m=x.match(/^(#{1,6})\s+(.*)$/);if(m){const g=`h${Math.min(m[1].length,6)}`;l.push(c.createElement(g,{key:S(s)},P(m[2],s)))}t++;continue}if(n(o)){const m=/^\d+[.)]/.test(x),v=[];for(;t<r.length&&n(r[t]);){const g=r[t].trim().match(/^(?:[-*+]|\d+[.)])\s+(.*)$/);g&&v.push(e.jsx("li",{children:P(g[1],s)},S(s))),t++}l.push(m?e.jsx("ol",{className:"sa-list",children:v},S(s)):e.jsx("ul",{className:"sa-list",children:v},S(s)));continue}const f=[];for(;t<r.length&&!i(r[t])&&!d(r[t])&&!n(r[t]);)f.push(r[t]),t++;l.push(e.jsx("p",{className:"sa-text-paragraph",children:P(f.join(" "),s)},S(s)))}return l}function he(a){const s={value:0},l=[],r=a.split("```");for(let t=0;t<r.length;t++)if(t%2===0)l.push(...xe(r[t],s));else if(r[t].trim()!==""){let i=r[t].replace(/^\r?\n/,"");i=i.replace(/^[a-zA-Z0-9_+#.-]+\r?\n/,""),i=i.replace(/\r?\n$/,""),l.push(e.jsx("pre",{className:"sa-code-block",children:e.jsx("code",{children:i})},S(s)))}return l}function Z({content:a}){return e.jsx("div",{className:"sa-text-part",children:he(a)})}function Q({content:a}){const[s,l]=c.useState(!1);return e.jsxs("div",{className:"sa-thinking-part",onClick:()=>l(!s),children:[e.jsxs("div",{className:"sa-thinking-header",children:[e.jsx("span",{className:"sa-thinking-icon",children:e.jsx(w,{name:"brain",size:14})}),e.jsx("span",{className:"sa-thinking-label",children:"思考过程"}),e.jsx("span",{className:`sa-thinking-arrow ${s?"expanded":""}`,children:e.jsx(w,{name:"chevron-right",size:12})})]}),s&&e.jsx("div",{className:"sa-thinking-content",children:a})]})}function ee({toolName:a,toolCallId:s,args:l}){const[r,t]=c.useState(!1);let i=l;try{i=JSON.stringify(JSON.parse(l),null,2)}catch{}return e.jsxs("div",{className:"sa-tool-call-part",children:[e.jsxs("div",{className:"sa-tool-call-header",onClick:()=>t(!r),children:[e.jsx("span",{className:"sa-tool-icon",children:e.jsx(w,{name:"zap",size:14})}),e.jsxs("span",{className:"sa-tool-name",children:["调用工具: ",a]}),e.jsx("span",{className:`sa-thinking-arrow ${r?"expanded":""}`,children:e.jsx(w,{name:"chevron-right",size:12})})]}),r&&e.jsx("pre",{className:"sa-tool-args",children:i})]})}function se({toolName:a,toolCallId:s,content:l}){return e.jsxs("div",{className:"sa-tool-result-part",children:[e.jsxs("div",{className:"sa-tool-result-header",children:[e.jsx("span",{className:"sa-tool-icon",children:e.jsx(w,{name:"circle-check",size:14,color:"#10b981"})}),e.jsx("span",{className:"sa-tool-result-label",children:a||"工具返回"})]}),e.jsx("div",{className:"sa-tool-result-content",children:l})]})}function ae({content:a,onRetry:s}){return e.jsxs("div",{className:"sa-error-part",children:[e.jsxs("div",{className:"sa-error-content",children:[e.jsx("span",{className:"sa-error-icon",children:e.jsx(w,{name:"triangle-alert",size:14})}),e.jsx("span",{children:a})]}),s&&e.jsx("button",{className:"sa-error-retry",onClick:s,children:"重试"})]})}function te({message:a,onCopy:s,onRegenerate:l,onFeedback:r}){const{status:t}=T(),[i,d]=c.useState(null),[n,o]=c.useState(!1);if(t!=="ready"&&t!=="error")return null;const x=c.useCallback(()=>{s(),o(!0),setTimeout(()=>o(!1),2e3)},[s]),f=c.useCallback(m=>{const v=i===m?null:m;d(v),v&&(r==null||r(a.id,v))},[i,a.id,r]);return e.jsxs("div",{className:"sa-action-bar",children:[e.jsxs("button",{className:"sa-action-btn",onClick:x,title:"复制",children:[e.jsx(w,{name:n?"circle-check":"copy",size:14})," ",n?"已复制":"复制"]}),e.jsxs("button",{className:"sa-action-btn",onClick:l,title:"重新生成",children:[e.jsx(w,{name:"refresh-cw",size:14})," 重新生成"]}),e.jsx("span",{className:"sa-action-divider"}),e.jsx("button",{className:`sa-action-btn ${i==="like"?"sa-action-btn-active":""}`,onClick:()=>f("like"),title:"有用",children:e.jsx(w,{name:"thumbs-up",size:14})}),e.jsx("button",{className:`sa-action-btn ${i==="dislike"?"sa-action-btn-active":""}`,onClick:()=>f("dislike"),title:"无用",children:e.jsx(w,{name:"thumbs-down",size:14})})]})}function q({src:a,role:s}){const l=s==="assistant"?"A":"U";return a?a.startsWith("http")||a.startsWith("/")||a.startsWith("data:")?e.jsx("div",{className:`sa-avatar sa-avatar-${s}`,children:e.jsx("img",{src:a,alt:s,style:{width:"100%",height:"100%",borderRadius:"inherit",objectFit:"cover"}})}):e.jsx("div",{className:`sa-avatar sa-avatar-${s}`,children:a}):e.jsx("div",{className:`sa-avatar sa-avatar-${s}`,children:l})}function re({message:a,isStreaming:s,isLast:l,slots:r,avatar:t}){const{regenerate:i,feedback:d}=T(),n=c.useCallback(()=>{var u;const b=a.parts.filter(k=>k.type==="text").map(k=>k.content).join(`
3
- `);(u=navigator.clipboard)==null||u.writeText(b).catch(()=>{})},[a]),o=a.role==="user",x=r.Message;if(x)return e.jsx(x,{message:a,isStreaming:s,isLast:l,avatar:t,slots:r,onCopy:n,onRegenerate:i,onFeedback:d});const f=r.TextPart??Z,m=r.ThinkingPart??Q,v=r.ToolCallPart??ee,g=r.ToolResultPart??se,p=r.ErrorPart??ae,h=r.ActionBar??te;return e.jsxs("div",{className:`sa-message ${o?"sa-message-user":"sa-message-assistant"}`,children:[!o&&e.jsx(q,{src:t==null?void 0:t.assistant,role:"assistant"}),e.jsxs("div",{className:"sa-message-body",children:[a.parts.map((b,u)=>{switch(b.type){case"text":return e.jsx(f,{content:b.content},u);case"thinking":return e.jsx(m,{content:b.content},u);case"tool_call":return e.jsx(v,{toolName:b.toolName,toolCallId:b.toolCallId,args:b.args},u);case"tool_result":return e.jsx(g,{toolName:b.toolName,toolCallId:b.toolCallId,content:b.content},u);case"error":return e.jsx(p,{content:b.content,onRetry:i},u);default:return null}}),s&&l&&!o&&e.jsx("span",{className:"sa-streaming-cursor",children:"|"}),!o&&!s&&a.parts.length>0&&e.jsx(h,{message:a,onCopy:n,onRegenerate:i,onFeedback:d})]}),o&&e.jsx(q,{src:t==null?void 0:t.user,role:"user"})]})}function ne({message:a,suggestedPrompts:s,onPromptClick:l}){return e.jsxs("div",{className:"sa-welcome",children:[e.jsx("div",{className:"sa-welcome-icon",children:e.jsx(w,{name:"sparkles",size:40})}),e.jsx("p",{className:"sa-welcome-message",children:a||"你好!有什么可以帮你的?"}),s&&s.length>0&&e.jsx("div",{className:"sa-welcome-prompts",children:s.map((r,t)=>e.jsx("button",{className:"sa-welcome-prompt",onClick:()=>l(r),children:r},t))})]})}function H({slots:a,welcomeMessage:s,suggestedPrompts:l,avatar:r}){const{messages:t,status:i,sendMessage:d}=T(),{containerRef:n}=G([t]),o=i==="streaming",x=a.WelcomeScreen??ne;return t.length===0?e.jsx("div",{className:"sa-thread",ref:n,children:e.jsx(x,{message:s,suggestedPrompts:l,onPromptClick:d})}):e.jsx("div",{className:"sa-thread",ref:n,children:t.map((f,m)=>e.jsx(re,{message:f,isStreaming:o,isLast:m===t.length-1,slots:a,avatar:r},f.id))})}function B(){const{status:a,sendMessage:s,stop:l}=T(),[r,t]=c.useState(""),i=c.useRef(null),d=a==="streaming"||a==="submitted",n=c.useCallback(()=>{const f=r.trim();!f||d||(s(f),t(""),i.current&&(i.current.style.height="auto"))},[r,d,s]),o=c.useCallback(f=>{f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),n())},[n]),x=c.useCallback(f=>{t(f.target.value);const m=f.target;m.style.height="auto",m.style.height=Math.min(m.scrollHeight,120)+"px"},[]);return e.jsxs("div",{className:"sa-composer",children:[e.jsx("textarea",{ref:i,className:"sa-composer-input",value:r,onChange:x,onKeyDown:o,placeholder:"输入消息...",rows:1,disabled:a==="submitted"}),d?e.jsx("button",{className:"sa-composer-stop",onClick:l,title:"停止",children:e.jsx(w,{name:"circle-stop",size:16,color:"#fff"})}):e.jsx("button",{className:"sa-composer-send",onClick:n,disabled:!r.trim(),title:"发送",children:e.jsx(w,{name:"arrow-up",size:16,color:"#fff"})})]})}function me({isOpen:a,onClose:s,title:l,slots:r,welcomeMessage:t,suggestedPrompts:i,avatar:d}){const{status:n,sendMessage:o,stop:x,toggleThreadList:f,conversations:m,activeConversationId:v,switchConversation:g,newConversation:p,deleteConversation:h,renameConversation:b,isThreadListOpen:u}=T();if(!a)return null;const k=r.Header,C=r.Composer,j=r.ThreadList;return e.jsxs("div",{className:"sa-panel",children:[k?e.jsx(k,{title:l,onClose:s,onToggleThreadList:f}):e.jsx(J,{title:l,onClose:s,onToggleThreadList:f}),j&&u?e.jsx(j,{conversations:m,activeSessionId:v,onSwitch:g,onNew:p,onDelete:h,onRename:b}):e.jsx(X,{}),e.jsx(H,{slots:r,welcomeMessage:t,suggestedPrompts:i,avatar:d}),C?e.jsx(C,{status:n,onSend:o,onStop:x}):e.jsx(B,{})]})}function ge({conversations:a,activeSessionId:s,onSwitch:l,onNew:r,onDelete:t,isCollapsed:i,onToggleCollapse:d}){const[n,o]=c.useState(null),[x,f]=c.useState(null),m=c.useCallback((g,p)=>{p.stopPropagation(),x===g?(t(g),f(null)):(f(g),setTimeout(()=>f(null),3e3))},[x,t]),v=(()=>{const g=Date.now(),p=[],h=[],b=[];for(const k of a){const C=g-new Date(k.updateTime).getTime();C<864e5?p.push(k):C<6048e5?h.push(k):b.push(k)}const u=[];return p.length&&u.push({label:"今天",items:p}),h.length&&u.push({label:"最近 7 天",items:h}),b.length&&u.push({label:"更早",items:b}),u})();return i?e.jsxs("div",{className:"sa-fp-sidebar sa-fp-sidebar-collapsed",children:[e.jsx("button",{className:"sa-fp-sidebar-toggle",onClick:d,title:"展开",children:e.jsx(w,{name:"panel-left",size:18})}),e.jsx("button",{className:"sa-fp-sidebar-toggle",onClick:r,title:"新会话",style:{marginTop:4},children:e.jsx(w,{name:"plus",size:18})})]}):e.jsxs("div",{className:"sa-fp-sidebar",children:[e.jsxs("div",{className:"sa-fp-sidebar-header",children:[e.jsxs("button",{className:"sa-fp-sidebar-new",onClick:r,children:[e.jsx(w,{name:"plus",size:15})," ",e.jsx("span",{children:"新会话"})]}),e.jsx("button",{className:"sa-fp-sidebar-toggle",onClick:d,title:"收起侧边栏",children:e.jsx(w,{name:"panel-left-close",size:18})})]}),e.jsxs("div",{className:"sa-fp-sidebar-list",children:[a.length===0&&e.jsx("div",{className:"sa-fp-sidebar-empty",children:"开始你的第一个对话"}),v.map(g=>e.jsxs("div",{children:[e.jsx("div",{className:"sa-fp-sidebar-group",children:g.label}),g.items.map(p=>{const h=p.sessionId===s,b=n===p.sessionId,u=x===p.sessionId;return e.jsxs("div",{className:`sa-fp-sidebar-item ${h?"active":""}`,onClick:()=>l(p.sessionId),onMouseEnter:()=>o(p.sessionId),onMouseLeave:()=>o(null),children:[e.jsx("span",{className:"sa-fp-sidebar-item-title",children:p.title||"新会话"}),b&&e.jsx("button",{className:`sa-fp-sidebar-item-action ${u?"danger":""}`,onClick:k=>m(p.sessionId,k),title:u?"确认删除":"删除",children:e.jsx(w,{name:u?"x":"trash2",size:14})})]},p.sessionId)})]},g.label))]})]})}function ie({title:a,slots:s,welcomeMessage:l,suggestedPrompts:r,sidebarDefaultOpen:t=!0,onClose:i,avatar:d}){const{status:n,sendMessage:o,stop:x,conversations:f,activeConversationId:m,switchConversation:v,newConversation:g,deleteConversation:p,renameConversation:h}=T(),[b,u]=c.useState(t),k=c.useCallback(()=>u(L=>!L),[]),C=s.ThreadList,j=s.Composer;return e.jsxs("div",{className:"sa-fullpage",children:[C?e.jsx("div",{className:`sa-fp-sidebar-wrapper ${b?"":"sa-fp-sidebar-wrapper-collapsed"}`,children:e.jsx(C,{conversations:f,activeSessionId:m,onSwitch:v,onNew:g,onDelete:p,onRename:h})}):e.jsx(ge,{conversations:f,activeSessionId:m,onSwitch:v,onNew:g,onDelete:p,onRename:h,isCollapsed:!b,onToggleCollapse:k}),e.jsxs("div",{className:"sa-fp-main",children:[e.jsxs("div",{className:"sa-fp-header",children:[!b&&!C&&e.jsx("button",{className:"sa-fp-header-btn",onClick:k,title:"展开侧边栏",children:e.jsx(w,{name:"panel-left",size:18})}),e.jsx("div",{className:"sa-fp-header-title",children:a}),e.jsx("div",{className:"sa-fp-header-actions",children:i&&e.jsx("button",{className:"sa-fp-header-btn",onClick:i,title:"关闭",children:e.jsx(w,{name:"x",size:18})})})]}),e.jsx(H,{slots:s,welcomeMessage:l,suggestedPrompts:r,avatar:d}),j?e.jsx(j,{status:n,onSend:o,onStop:x}):e.jsx(B,{})]})]})}function oe(a){const{sdk:s,mode:l="floating",slots:r={},hooks:t={},welcomeMessage:i,suggestedPrompts:d,title:n="AI Assistant",initialOpen:o=!1,onOpenChange:x,sidebarDefaultOpen:f,avatar:m}=a,[v,g]=c.useState(o);c.useEffect(()=>{g(o)},[o]);const p=c.useCallback(()=>{var k,C;const u=!v;g(u),x==null||x(u),u?(k=t.onOpen)==null||k.call(t):(C=t.onClose)==null||C.call(t)},[v,t,x]),h=c.useCallback(()=>{var u;g(!1),x==null||x(!1),(u=t.onClose)==null||u.call(t)},[t,x]),b=r.Trigger??Y;return l==="fullpage"?v?e.jsx(O,{sdk:s,hooks:t,children:e.jsx(ie,{title:n,slots:r,welcomeMessage:i,suggestedPrompts:d,sidebarDefaultOpen:f,onClose:h,avatar:m})}):null:e.jsxs(O,{sdk:s,hooks:t,children:[e.jsx(b,{isOpen:v,onClick:p}),e.jsx(me,{isOpen:v,onClose:h,title:n,slots:r,welcomeMessage:i,suggestedPrompts:d,avatar:m})]})}const le=`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),xe=require("react-dom/client"),e=require("react/jsx-runtime");function U(s){const{sdk:a,sessionId:n,onSessionCreated:t,onStreamStart:r,onStreamEnd:c,onError:o,onMessageSend:l}=s,[i,u]=d.useState([]),[f,m]=d.useState("ready"),[y,v]=d.useState(null),x=d.useRef(null),h=d.useRef(!1),b=d.useRef(n);b.current=n;const p=d.useCallback(N=>{if(h.current)return;h.current=!0,l==null||l(N);const $={id:`user_${Date.now()}`,role:"user",parts:[{type:"text",content:N}],timestamp:Date.now()},z=`assistant_${Date.now()}`,M={id:z,role:"assistant",parts:[],timestamp:Date.now()};u(C=>[...C,$,M]),m("submitted"),v(null);const D=C=>{let O="",I="",L=[],W=!1;const H=()=>{const k=[...L];if(O){const R=k.findIndex(P=>P.type==="thinking");R>=0?k[R]={type:"thinking",content:O}:k.unshift({type:"thinking",content:O})}if(I){const R=k.findLastIndex(P=>P.type==="text");R>=0?k[R]={type:"text",content:I}:k.push({type:"text",content:I})}u(R=>R.map(P=>P.id===z?{...P,parts:k}:P))};x.current=a.chat({sessionId:C,message:N,stream:!0,onMessage:k=>{switch(W||(W=!0,m("streaming")),k.type){case"thinking":O+=k.content;break;case"ai":I+=k.content;break;case"tool_call":L.push({type:"tool_call",toolName:k.toolName,toolCallId:k.toolCallId,args:k.args??"{}"});break;case"tool_result":L.push({type:"tool_result",toolName:k.toolName??"",toolCallId:k.toolCallId,content:k.content}),I&&(L.push({type:"text",content:I}),I="");break;case"interrupt":k.interrupt&&L.push({type:"interrupt",interrupt:k.interrupt,resolved:!1});break}H()},onDone:k=>{(I||L.length>0||O)&&H(),k.sessionId&&k.sessionId!==b.current&&(t==null||t(k.sessionId)),c==null||c(k.sessionId||C),m("ready"),h.current=!1,x.current=null},onError:k=>{L.push({type:"error",content:k.message}),H(),v(k),m("error"),o==null||o(k),h.current=!1,x.current=null}}),r==null||r(C)};b.current?D(b.current):a.createSession().then(C=>{b.current=C,t==null||t(C),D(C)}).catch(C=>{v(C instanceof Error?C:new Error(String(C))),m("error"),o==null||o(C instanceof Error?C:new Error(String(C))),h.current=!1})},[a,t,r,c,o,l]),j=d.useCallback(()=>{var N;(N=x.current)==null||N.abort(),x.current=null,m("ready"),h.current=!1},[]),w=d.useCallback(()=>{if(h.current)return;const N=i.findLastIndex(z=>z.role==="user");if(N<0)return;const $=i[N].parts.filter(z=>z.type==="text").map(z=>z.content).join("");u(z=>z.slice(0,N)),p($)},[i,p]),S=d.useCallback((N,$)=>{u(M=>M.map(D=>({...D,parts:D.parts.map(C=>C.type==="interrupt"&&C.interrupt.interruptId===N?{...C,resolved:!0,response:$}:C)})));const z=b.current;z&&a.respondInterrupt(N,z,$).catch(M=>{o==null||o(M instanceof Error?M:new Error(String(M)))})},[a,o]);return{messages:i,status:f,error:y,sendMessage:p,stop:j,regenerate:w,setMessages:u,respondToInterrupt:S}}const q="sa_active_conversation";function K(){try{return localStorage.getItem(q)}catch{return null}}function me(s){try{s?localStorage.setItem(q,s):localStorage.removeItem(q)}catch{}}function Y(s){const{sdk:a,onConversationChange:n}=s,[t,r]=d.useState([]),[c,o]=d.useState(()=>K()),[l,i]=d.useState(!1),u=d.useRef(!0);d.useEffect(()=>()=>{u.current=!1},[]);const f=d.useCallback(p=>{o(p),me(p),p&&(n==null||n(p))},[n]),m=d.useCallback(async()=>{i(!0);try{const p=await a.listConversations({page:1,size:100});if(!u.current)return;r(p.items);const j=K();j&&!p.items.find(w=>w.sessionId===j)&&f(null)}catch{}finally{u.current&&i(!1)}},[a,f]),y=d.useCallback(async p=>(f(p),await a.getMessages(p)),[a,f]),v=d.useCallback(()=>{f(null)},[f]),x=d.useCallback(async p=>{await a.deleteConversation(p),r(j=>j.filter(w=>w.sessionId!==p)),c===p&&f(null)},[a,c,f]),h=d.useCallback(async(p,j)=>{await a.renameConversation(p,j),r(w=>w.map(S=>S.sessionId===p?{...S,title:j}:S))},[a]),{enabled:b=!0}=s;return d.useEffect(()=>{b&&m()},[b,m]),{conversations:t,activeConversationId:c,loading:l,loadConversations:m,switchConversation:y,newConversation:v,deleteConversation:x,renameConversation:h,setActiveConversationId:f}}const J=d.createContext(null);function E(){const s=d.useContext(J);if(!s)throw new Error("useChatContext must be used within ChatProvider");return s}function B({sdk:s,hooks:a,children:n}){const[t,r]=d.useState(!1),[c,o]=d.useState(!1);d.useEffect(()=>{s.getToken().then(()=>{o(!0)}).catch(()=>{o(!0)})},[s]);const l=Y({sdk:s,onConversationChange:a==null?void 0:a.onConversationChange,enabled:c}),i=U({sdk:s,sessionId:l.activeConversationId,onSessionCreated:x=>{l.setActiveConversationId(x),l.loadConversations()},onStreamStart:a==null?void 0:a.onStreamStart,onStreamEnd:x=>{var h;(h=a==null?void 0:a.onStreamEnd)==null||h.call(a,x),l.loadConversations()},onError:a==null?void 0:a.onError,onMessageSend:a==null?void 0:a.onMessageSend}),u=d.useCallback(async x=>{const h=await l.switchConversation(x);i.setMessages(h),r(!1)},[l,i]),f=d.useCallback(()=>{l.newConversation(),i.setMessages([]),r(!1)},[l,i]),m=d.useCallback(async x=>{await l.deleteConversation(x),l.activeConversationId===x&&i.setMessages([])},[l,i]);d.useEffect(()=>{l.activeConversationId&&i.messages.length===0&&s.getMessages(l.activeConversationId).then(x=>{i.setMessages(x)}).catch(()=>{})},[]);const y=d.useCallback(()=>{r(x=>!x)},[]),v={status:i.status,error:i.error,messages:i.messages,conversations:l.conversations,activeConversationId:l.activeConversationId,isThreadListOpen:t,sendMessage:i.sendMessage,stop:i.stop,regenerate:i.regenerate,switchConversation:u,newConversation:f,deleteConversation:m,renameConversation:l.renameConversation,toggleThreadList:y,feedback:(x,h)=>{s.feedback(x,h)},respondToInterrupt:i.respondToInterrupt};return e.jsx(J.Provider,{value:v,children:n})}function g({name:s,size:a=16,color:n="currentColor",className:t,style:r}){return e.jsx("svg",{className:t,style:{width:a,height:a,fill:n,verticalAlign:"middle",...r},"aria-hidden":"true",children:e.jsx("use",{href:`#icon-${s}`})})}function X({isOpen:s,onClick:a}){return e.jsx("button",{className:`sa-trigger ${s?"sa-trigger-open":""}`,onClick:a,children:s?e.jsx(g,{name:"x",size:24,color:"#fff"}):e.jsx(g,{name:"message-square",size:24,color:"#fff"})})}function G({title:s,onClose:a,onToggleThreadList:n,showClose:t=!0}){return e.jsxs("div",{className:"sa-header",children:[e.jsxs("div",{className:"sa-header-left",children:[e.jsx("div",{className:"sa-header-avatar",children:"A"}),e.jsxs("div",{className:"sa-header-info",children:[e.jsx("div",{className:"sa-header-title",children:s}),e.jsx("div",{className:"sa-header-status",children:"● Online"})]})]}),e.jsxs("div",{className:"sa-header-actions",children:[e.jsx("button",{className:"sa-header-btn",onClick:n,title:"会话列表",children:e.jsx(g,{name:"menu",size:16})}),t&&e.jsx("button",{className:"sa-header-btn",onClick:a,title:"关闭",children:e.jsx(g,{name:"x",size:16})})]})]})}function he(s){const a=new Date,n=new Date(a.getFullYear(),a.getMonth(),a.getDate()).getTime(),t=n-6*864e5,r=[],c=[],o=[];for(const i of s){const u=new Date(i.updateTime).getTime();u>=n?r.push(i):u>=t?c.push(i):o.push(i)}const l=[];return r.length&&l.push({label:"今天",items:r}),c.length&&l.push({label:"最近 7 天",items:c}),o.length&&l.push({label:"更早",items:o}),l}function Z(){const{conversations:s,activeConversationId:a,switchConversation:n,newConversation:t,deleteConversation:r,renameConversation:c,isThreadListOpen:o,toggleThreadList:l}=E(),[i,u]=d.useState(null),[f,m]=d.useState(""),y=d.useCallback((h,b)=>{u(h),m(b??"")},[]),v=d.useCallback(h=>{f.trim()&&c(h,f.trim()),u(null)},[f,c]),x=d.useMemo(()=>he(s),[s]);return o?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"sa-thread-list-overlay",onClick:l}),e.jsxs("div",{className:"sa-thread-list",children:[e.jsxs("div",{className:"sa-thread-list-header",children:[e.jsx("span",{className:"sa-thread-list-title",children:"会话记录"}),e.jsxs("button",{className:"sa-thread-list-new",onClick:t,children:[e.jsx(g,{name:"plus",size:14})," 新会话"]})]}),e.jsxs("div",{className:"sa-thread-list-items",children:[s.length===0&&e.jsx("div",{className:"sa-thread-list-empty",children:"暂无会话"}),x.map(h=>e.jsxs("div",{className:"sa-thread-group",children:[e.jsx("div",{className:"sa-thread-group-label",children:h.label}),h.items.map(b=>e.jsxs("div",{className:`sa-thread-item ${b.sessionId===a?"active":""}`,onClick:()=>n(b.sessionId),children:[i===b.sessionId?e.jsx("input",{className:"sa-thread-item-edit",value:f,onChange:p=>m(p.target.value),onBlur:()=>v(b.sessionId),onKeyDown:p=>{p.key==="Enter"&&v(b.sessionId),p.key==="Escape"&&u(null)},onClick:p=>p.stopPropagation(),autoFocus:!0}):e.jsx("span",{className:"sa-thread-item-title",onDoubleClick:p=>{p.stopPropagation(),y(b.sessionId,b.title)},children:b.title||"新会话"}),e.jsx("button",{className:"sa-thread-item-delete",onClick:p=>{p.stopPropagation(),r(b.sessionId)},title:"删除",children:e.jsx(g,{name:"trash2",size:14})})]},b.sessionId))]},h.label))]})]})]}):null}function Q(s){const a=d.useRef(null),n=d.useRef(!1),t=d.useRef(0),r=d.useCallback(()=>{const o=a.current;if(!o)return;const{scrollTop:l,scrollHeight:i,clientHeight:u}=o,f=i-l-u<40;l<t.current&&!f&&(n.current=!0),f&&(n.current=!1),t.current=l},[]);d.useEffect(()=>{const o=a.current;if(o)return o.addEventListener("scroll",r,{passive:!0}),()=>o.removeEventListener("scroll",r)},[r]),d.useEffect(()=>{if(n.current)return;const o=a.current;o&&requestAnimationFrame(()=>{o.scrollTop=o.scrollHeight})},s);const c=d.useCallback(()=>{n.current=!1;const o=a.current;o&&(o.scrollTop=o.scrollHeight)},[]);return{containerRef:a,scrollToBottom:c}}function T(s){return s.value++}function A(s,a){const n=[],t=[],r=()=>{t.length>0&&(n.push(t.join("")),t.length=0)};let c=0;for(;c<s.length;){const o=s[c];if(o==="`"){const l=s.indexOf("`",c+1);if(l!==-1){r(),n.push(e.jsx("code",{className:"sa-inline-code",children:s.slice(c+1,l)},T(a))),c=l+1;continue}}else if(o==="*"&&s[c+1]==="*"){const l=s.indexOf("**",c+2);if(l!==-1){r(),n.push(e.jsx("strong",{children:A(s.slice(c+2,l),a)},T(a))),c=l+2;continue}}else if(o==="*"){const l=s.indexOf("*",c+1);if(l!==-1){r(),n.push(e.jsx("em",{children:A(s.slice(c+1,l),a)},T(a))),c=l+1;continue}}else if(o==="["){const l=s.indexOf("]",c+1);if(l!==-1&&s[l+1]==="("){const i=s.indexOf(")",l+2);if(i!==-1){const u=s.slice(c+1,l),f=s.slice(l+2,i);r(),n.push(e.jsx("a",{href:f,target:"_blank",rel:"noreferrer",children:A(u,a)},T(a))),c=i+1;continue}}}t.push(o),c++}return r(),n}function ge(s,a){const n=[],t=s.split(`
2
+ `);let r=0;const c=i=>i.trim()==="",o=i=>/^#{1,6}\s+\S/.test(i.trim()),l=i=>/^(?:[-*+]|\d+[.)])\s+\S/.test(i.trim());for(;r<t.length;){const i=t[r],u=i.trim();if(c(i)){r++;continue}if(o(i)){const m=u.match(/^(#{1,6})\s+(.*)$/);if(m){const v=`h${Math.min(m[1].length,6)}`;n.push(d.createElement(v,{key:T(a)},A(m[2],a)))}r++;continue}if(l(i)){const m=/^\d+[.)]/.test(u),y=[];for(;r<t.length&&l(t[r]);){const v=t[r].trim().match(/^(?:[-*+]|\d+[.)])\s+(.*)$/);v&&y.push(e.jsx("li",{children:A(v[1],a)},T(a))),r++}n.push(m?e.jsx("ol",{className:"sa-list",children:y},T(a)):e.jsx("ul",{className:"sa-list",children:y},T(a)));continue}const f=[];for(;r<t.length&&!c(t[r])&&!o(t[r])&&!l(t[r]);)f.push(t[r]),r++;n.push(e.jsx("p",{className:"sa-text-paragraph",children:A(f.join(" "),a)},T(a)))}return n}function be(s){const a={value:0},n=[],t=s.split("```");for(let r=0;r<t.length;r++)if(r%2===0)n.push(...ge(t[r],a));else if(t[r].trim()!==""){let c=t[r].replace(/^\r?\n/,"");c=c.replace(/^[a-zA-Z0-9_+#.-]+\r?\n/,""),c=c.replace(/\r?\n$/,""),n.push(e.jsx("pre",{className:"sa-code-block",children:e.jsx("code",{children:c})},T(a)))}return n}function ee({content:s}){return e.jsx("div",{className:"sa-text-part",children:be(s)})}function se({content:s}){const[a,n]=d.useState(!1);return e.jsxs("div",{className:"sa-thinking-part",onClick:()=>n(!a),children:[e.jsxs("div",{className:"sa-thinking-header",children:[e.jsx("span",{className:"sa-thinking-icon",children:e.jsx(g,{name:"brain",size:14})}),e.jsx("span",{className:"sa-thinking-label",children:"思考过程"}),e.jsx("span",{className:`sa-thinking-arrow ${a?"expanded":""}`,children:e.jsx(g,{name:"chevron-right",size:12})})]}),a&&e.jsx("div",{className:"sa-thinking-content",children:s})]})}function ae({toolName:s,toolCallId:a,args:n}){const[t,r]=d.useState(!1);let c=n;try{c=JSON.stringify(JSON.parse(n),null,2)}catch{}return e.jsxs("div",{className:"sa-tool-call-part",children:[e.jsxs("div",{className:"sa-tool-call-header",onClick:()=>r(!t),children:[e.jsx("span",{className:"sa-tool-icon",children:e.jsx(g,{name:"zap",size:14})}),e.jsxs("span",{className:"sa-tool-name",children:["调用工具: ",s]}),e.jsx("span",{className:`sa-thinking-arrow ${t?"expanded":""}`,children:e.jsx(g,{name:"chevron-right",size:12})})]}),t&&e.jsx("pre",{className:"sa-tool-args",children:c})]})}function te({toolName:s,toolCallId:a,content:n}){return e.jsxs("div",{className:"sa-tool-result-part",children:[e.jsxs("div",{className:"sa-tool-result-header",children:[e.jsx("span",{className:"sa-tool-icon",children:e.jsx(g,{name:"circle-check",size:14,color:"#10b981"})}),e.jsx("span",{className:"sa-tool-result-label",children:s||"工具返回"})]}),e.jsx("div",{className:"sa-tool-result-content",children:n})]})}function re({content:s,onRetry:a}){return e.jsxs("div",{className:"sa-error-part",children:[e.jsxs("div",{className:"sa-error-content",children:[e.jsx("span",{className:"sa-error-icon",children:e.jsx(g,{name:"triangle-alert",size:14})}),e.jsx("span",{children:s})]}),a&&e.jsx("button",{className:"sa-error-retry",onClick:a,children:"重试"})]})}function ve({interrupt:s,onRespond:a}){var c,o;const n=s.options,t=(typeof(n==null?void 0:n[0])=="string"?n[0]:(c=n==null?void 0:n[0])==null?void 0:c.label)||"确认",r=(typeof(n==null?void 0:n[1])=="string"?n[1]:(o=n==null?void 0:n[1])==null?void 0:o.label)||"取消";return e.jsxs("div",{className:"sa-interrupt-card",children:[e.jsxs("div",{className:"sa-interrupt-content",children:[e.jsx(g,{name:"circle-alert",size:16,color:"#f59e0b"}),e.jsx("span",{children:s.content})]}),e.jsxs("div",{className:"sa-interrupt-actions",children:[e.jsxs("button",{className:"sa-interrupt-btn sa-interrupt-btn-primary",onClick:()=>a({action:"confirm"}),children:[e.jsx(g,{name:"check",size:14})," ",t]}),e.jsxs("button",{className:"sa-interrupt-btn sa-interrupt-btn-secondary",onClick:()=>a({action:"cancel"}),children:[e.jsx(g,{name:"x",size:14})," ",r]})]})]})}function je(s){return typeof s=="string"?{value:s,label:s}:s}function ye({interrupt:s,onRespond:a}){const n=(s.options??[]).map(je);return e.jsxs("div",{className:"sa-interrupt-card",children:[e.jsxs("div",{className:"sa-interrupt-content",children:[e.jsx(g,{name:"list",size:16,color:"#6366f1"}),e.jsx("span",{children:s.content})]}),e.jsx("div",{className:"sa-interrupt-options",children:n.map(t=>e.jsxs("button",{className:`sa-interrupt-option ${t.danger?"sa-interrupt-option-danger":""}`,onClick:()=>a({action:"select",value:t.value}),children:[t.icon&&e.jsx(g,{name:t.icon,size:14}),e.jsx("span",{children:t.label}),t.description&&e.jsx("span",{className:"sa-interrupt-option-desc",children:t.description})]},t.value))})]})}function ke(s){return typeof s=="string"?{value:s,label:s}:s}function we({interrupt:s,onRespond:a}){const n=(s.options??[]).map(ke),[t,r]=d.useState(new Set),c=o=>{r(l=>{const i=new Set(l);return i.has(o)?i.delete(o):i.add(o),i})};return e.jsxs("div",{className:"sa-interrupt-card",children:[e.jsxs("div",{className:"sa-interrupt-content",children:[e.jsx(g,{name:"list-checks",size:16,color:"#6366f1"}),e.jsx("span",{children:s.content})]}),e.jsx("div",{className:"sa-interrupt-options",children:n.map(o=>e.jsxs("button",{className:`sa-interrupt-option ${t.has(o.value)?"sa-interrupt-option-selected":""}`,onClick:()=>c(o.value),children:[e.jsx(g,{name:t.has(o.value)?"square-check":"square",size:14}),e.jsx("span",{children:o.label})]},o.value))}),e.jsx("div",{className:"sa-interrupt-actions",children:e.jsxs("button",{className:"sa-interrupt-btn sa-interrupt-btn-primary",disabled:t.size===0,onClick:()=>a({action:"submit",value:Array.from(t)}),children:[e.jsx(g,{name:"check",size:14})," 确认 (",t.size,")"]})})]})}function Ce({interrupt:s,onRespond:a}){const[n,t]=d.useState(""),r=s.inputType??"text",c=r==="textarea",o=()=>{s.required&&!n.trim()||a({action:"submit",value:n.trim()})};return e.jsxs("div",{className:"sa-interrupt-card",children:[e.jsxs("div",{className:"sa-interrupt-content",children:[e.jsx(g,{name:"text-cursor-input",size:16,color:"#6366f1"}),e.jsx("span",{children:s.content})]}),e.jsx("div",{className:"sa-interrupt-input-area",children:c?e.jsx("textarea",{className:"sa-interrupt-textarea",value:n,onChange:l=>t(l.target.value),placeholder:s.placeholder,maxLength:s.maxLength,rows:3}):e.jsx("input",{className:"sa-interrupt-input",type:r,value:n,onChange:l=>t(l.target.value),placeholder:s.placeholder,maxLength:s.maxLength,onKeyDown:l=>l.key==="Enter"&&o()})}),e.jsx("div",{className:"sa-interrupt-actions",children:e.jsxs("button",{className:"sa-interrupt-btn sa-interrupt-btn-primary",disabled:s.required?!n.trim():!1,onClick:o,children:[e.jsx(g,{name:"check",size:14})," 提交"]})})]})}function Ne({interrupt:s,onRespond:a}){const n=s.fields??[],[t,r]=d.useState(()=>{const i={};for(const u of n)i[u.name]=u.defaultValue??"";return i}),c=(i,u)=>{r(f=>({...f,[i]:u}))},o=n.every(i=>!i.required||t[i.name]),l=()=>{o&&a({action:"submit",value:t})};return e.jsxs("div",{className:"sa-interrupt-card",children:[e.jsxs("div",{className:"sa-interrupt-content",children:[e.jsx(g,{name:"file-text",size:16,color:"#6366f1"}),e.jsx("span",{children:s.content})]}),e.jsx("div",{className:"sa-interrupt-form",children:n.map(i=>e.jsxs("div",{className:"sa-interrupt-form-field",children:[e.jsxs("label",{className:"sa-interrupt-form-label",children:[i.label,i.required&&e.jsx("span",{className:"sa-interrupt-form-required",children:"*"})]}),ze(i,t[i.name],u=>c(i.name,u))]},i.name))}),e.jsxs("div",{className:"sa-interrupt-actions",children:[e.jsxs("button",{className:"sa-interrupt-btn sa-interrupt-btn-primary",disabled:!o,onClick:l,children:[e.jsx(g,{name:"check",size:14})," 提交"]}),e.jsx("button",{className:"sa-interrupt-btn sa-interrupt-btn-secondary",onClick:()=>a({action:"cancel"}),children:"取消"})]})]})}function ze(s,a,n){switch(s.type){case"textarea":return e.jsx("textarea",{className:"sa-interrupt-textarea",value:a,onChange:t=>n(t.target.value),placeholder:s.placeholder,rows:3});case"select":return e.jsxs("select",{className:"sa-interrupt-select",value:a,onChange:t=>n(t.target.value),children:[e.jsx("option",{value:"",children:"请选择"}),(s.options??[]).map(t=>e.jsx("option",{value:t,children:t},t))]});default:return e.jsx("input",{className:"sa-interrupt-input",type:s.type,value:a,onChange:t=>n(t.target.value),placeholder:s.placeholder})}}function ne({interrupt:s,resolved:a,response:n,onRespond:t}){if(a)return e.jsxs("div",{className:"sa-interrupt-resolved",children:[e.jsx(g,{name:"circle-check",size:14,color:"#10b981"}),e.jsx("span",{children:Se(s.interruptType,n)})]});switch(s.interruptType){case"confirm":return e.jsx(ve,{interrupt:s,onRespond:t});case"select":return e.jsx(ye,{interrupt:s,onRespond:t});case"multiSelect":return e.jsx(we,{interrupt:s,onRespond:t});case"input":return e.jsx(Ce,{interrupt:s,onRespond:t});case"form":return e.jsx(Ne,{interrupt:s,onRespond:t});default:return e.jsxs("div",{className:"sa-interrupt-unknown",children:["未知的交互类型: ",s.interruptType]})}}function Se(s,a){if(!a)return"已完成";switch(a.action){case"confirm":return"已确认";case"cancel":return"已取消";case"select":return`已选择: ${a.value}`;case"submit":return"已提交";case"reject":return"已拒绝";default:return"已完成"}}function ie({message:s,onCopy:a,onRegenerate:n,onFeedback:t}){const{status:r}=E(),[c,o]=d.useState(null),[l,i]=d.useState(!1);if(r!=="ready"&&r!=="error")return null;const u=d.useCallback(()=>{a(),i(!0),setTimeout(()=>i(!1),2e3)},[a]),f=d.useCallback(m=>{const y=c===m?null:m;o(y),y&&(t==null||t(s.id,y))},[c,s.id,t]);return e.jsxs("div",{className:"sa-action-bar",children:[e.jsxs("button",{className:"sa-action-btn",onClick:u,title:"复制",children:[e.jsx(g,{name:l?"circle-check":"copy",size:14})," ",l?"已复制":"复制"]}),e.jsxs("button",{className:"sa-action-btn",onClick:n,title:"重新生成",children:[e.jsx(g,{name:"refresh-cw",size:14})," 重新生成"]}),e.jsx("span",{className:"sa-action-divider"}),e.jsx("button",{className:`sa-action-btn ${c==="like"?"sa-action-btn-active":""}`,onClick:()=>f("like"),title:"有用",children:e.jsx(g,{name:"thumbs-up",size:14})}),e.jsx("button",{className:`sa-action-btn ${c==="dislike"?"sa-action-btn-active":""}`,onClick:()=>f("dislike"),title:"无用",children:e.jsx(g,{name:"thumbs-down",size:14})})]})}function V({src:s,role:a}){const n=a==="assistant"?"A":"U";return s?s.startsWith("http")||s.startsWith("/")||s.startsWith("data:")?e.jsx("div",{className:`sa-avatar sa-avatar-${a}`,children:e.jsx("img",{src:s,alt:a,style:{width:"100%",height:"100%",borderRadius:"inherit",objectFit:"cover"}})}):e.jsx("div",{className:`sa-avatar sa-avatar-${a}`,children:s}):e.jsx("div",{className:`sa-avatar sa-avatar-${a}`,children:n})}function oe({message:s,isStreaming:a,isLast:n,slots:t,avatar:r}){const{regenerate:c,feedback:o,respondToInterrupt:l}=E(),i=d.useCallback(()=>{var j;const p=s.parts.filter(w=>w.type==="text").map(w=>w.content).join(`
3
+ `);(j=navigator.clipboard)==null||j.writeText(p).catch(()=>{})},[s]),u=s.role==="user",f=t.Message;if(f)return e.jsx(f,{message:s,isStreaming:a,isLast:n,avatar:r,slots:t,onCopy:i,onRegenerate:c,onFeedback:o});const m=t.TextPart??ee,y=t.ThinkingPart??se,v=t.ToolCallPart??ae,x=t.ToolResultPart??te,h=t.ErrorPart??re,b=t.ActionBar??ie;return e.jsxs("div",{className:`sa-message ${u?"sa-message-user":"sa-message-assistant"}`,children:[!u&&e.jsx(V,{src:r==null?void 0:r.assistant,role:"assistant"}),e.jsxs("div",{className:"sa-message-body",children:[s.parts.map((p,j)=>{switch(p.type){case"text":return e.jsx(m,{content:p.content},j);case"thinking":return e.jsx(y,{content:p.content},j);case"tool_call":return e.jsx(v,{toolName:p.toolName,toolCallId:p.toolCallId,args:p.args},j);case"tool_result":return e.jsx(x,{toolName:p.toolName,toolCallId:p.toolCallId,content:p.content},j);case"error":return e.jsx(h,{content:p.content,onRetry:c},j);case"interrupt":return e.jsx(ne,{interrupt:p.interrupt,resolved:p.resolved??!1,response:p.response,onRespond:w=>l(p.interrupt.interruptId,w)},j);default:return null}}),a&&n&&!u&&e.jsx("span",{className:"sa-streaming-cursor",children:"|"}),!u&&!a&&s.parts.length>0&&e.jsx(b,{message:s,onCopy:i,onRegenerate:c,onFeedback:o})]}),u&&e.jsx(V,{src:r==null?void 0:r.user,role:"user"})]})}function le({message:s,suggestedPrompts:a,onPromptClick:n}){return e.jsxs("div",{className:"sa-welcome",children:[e.jsx("div",{className:"sa-welcome-icon",children:e.jsx(g,{name:"sparkles",size:40})}),e.jsx("p",{className:"sa-welcome-message",children:s||"你好!有什么可以帮你的?"}),a&&a.length>0&&e.jsx("div",{className:"sa-welcome-prompts",children:a.map((t,r)=>e.jsx("button",{className:"sa-welcome-prompt",onClick:()=>n(t),children:t},r))})]})}function F({slots:s,welcomeMessage:a,suggestedPrompts:n,avatar:t}){const{messages:r,status:c,sendMessage:o}=E(),{containerRef:l}=Q([r]),i=c==="streaming",u=s.WelcomeScreen??le;return r.length===0?e.jsx("div",{className:"sa-thread",ref:l,children:e.jsx(u,{message:a,suggestedPrompts:n,onPromptClick:o})}):e.jsx("div",{className:"sa-thread",ref:l,children:r.map((f,m)=>e.jsx(oe,{message:f,isStreaming:i,isLast:m===r.length-1,slots:s,avatar:t},f.id))})}function _(){const{status:s,sendMessage:a,stop:n}=E(),[t,r]=d.useState(""),c=d.useRef(null),o=s==="streaming"||s==="submitted",l=d.useCallback(()=>{const f=t.trim();!f||o||(a(f),r(""),c.current&&(c.current.style.height="auto"))},[t,o,a]),i=d.useCallback(f=>{f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),l())},[l]),u=d.useCallback(f=>{r(f.target.value);const m=f.target;m.style.height="auto",m.style.height=Math.min(m.scrollHeight,120)+"px"},[]);return e.jsxs("div",{className:"sa-composer",children:[e.jsx("textarea",{ref:c,className:"sa-composer-input",value:t,onChange:u,onKeyDown:i,placeholder:"输入消息...",rows:1,disabled:s==="submitted"}),o?e.jsx("button",{className:"sa-composer-stop",onClick:n,title:"停止",children:e.jsx(g,{name:"circle-stop",size:16,color:"#fff"})}):e.jsx("button",{className:"sa-composer-send",onClick:l,disabled:!t.trim(),title:"发送",children:e.jsx(g,{name:"arrow-up",size:16,color:"#fff"})})]})}function Te({isOpen:s,onClose:a,title:n,slots:t,welcomeMessage:r,suggestedPrompts:c,avatar:o}){const{status:l,sendMessage:i,stop:u,toggleThreadList:f,conversations:m,activeConversationId:y,switchConversation:v,newConversation:x,deleteConversation:h,renameConversation:b,isThreadListOpen:p}=E();if(!s)return null;const j=t.Header,w=t.Composer,S=t.ThreadList;return e.jsxs("div",{className:"sa-panel",children:[j?e.jsx(j,{title:n,onClose:a,onToggleThreadList:f}):e.jsx(G,{title:n,onClose:a,onToggleThreadList:f}),S&&p?e.jsx(S,{conversations:m,activeSessionId:y,onSwitch:v,onNew:x,onDelete:h,onRename:b}):e.jsx(Z,{}),e.jsx(F,{slots:t,welcomeMessage:r,suggestedPrompts:c,avatar:o}),w?e.jsx(w,{status:l,onSend:i,onStop:u}):e.jsx(_,{})]})}function Ie({conversations:s,activeSessionId:a,onSwitch:n,onNew:t,onDelete:r,isCollapsed:c,onToggleCollapse:o}){const[l,i]=d.useState(null),[u,f]=d.useState(null),m=d.useCallback((v,x)=>{x.stopPropagation(),u===v?(r(v),f(null)):(f(v),setTimeout(()=>f(null),3e3))},[u,r]),y=(()=>{const v=Date.now(),x=[],h=[],b=[];for(const j of s){const w=v-new Date(j.updateTime).getTime();w<864e5?x.push(j):w<6048e5?h.push(j):b.push(j)}const p=[];return x.length&&p.push({label:"今天",items:x}),h.length&&p.push({label:"最近 7 天",items:h}),b.length&&p.push({label:"更早",items:b}),p})();return c?e.jsxs("div",{className:"sa-fp-sidebar sa-fp-sidebar-collapsed",children:[e.jsx("button",{className:"sa-fp-sidebar-toggle",onClick:o,title:"展开",children:e.jsx(g,{name:"panel-left",size:18})}),e.jsx("button",{className:"sa-fp-sidebar-toggle",onClick:t,title:"新会话",style:{marginTop:4},children:e.jsx(g,{name:"plus",size:18})})]}):e.jsxs("div",{className:"sa-fp-sidebar",children:[e.jsxs("div",{className:"sa-fp-sidebar-header",children:[e.jsxs("button",{className:"sa-fp-sidebar-new",onClick:t,children:[e.jsx(g,{name:"plus",size:15})," ",e.jsx("span",{children:"新会话"})]}),e.jsx("button",{className:"sa-fp-sidebar-toggle",onClick:o,title:"收起侧边栏",children:e.jsx(g,{name:"panel-left-close",size:18})})]}),e.jsxs("div",{className:"sa-fp-sidebar-list",children:[s.length===0&&e.jsx("div",{className:"sa-fp-sidebar-empty",children:"开始你的第一个对话"}),y.map(v=>e.jsxs("div",{children:[e.jsx("div",{className:"sa-fp-sidebar-group",children:v.label}),v.items.map(x=>{const h=x.sessionId===a,b=l===x.sessionId,p=u===x.sessionId;return e.jsxs("div",{className:`sa-fp-sidebar-item ${h?"active":""}`,onClick:()=>n(x.sessionId),onMouseEnter:()=>i(x.sessionId),onMouseLeave:()=>i(null),children:[e.jsx("span",{className:"sa-fp-sidebar-item-title",children:x.title||"新会话"}),b&&e.jsx("button",{className:`sa-fp-sidebar-item-action ${p?"danger":""}`,onClick:j=>m(x.sessionId,j),title:p?"确认删除":"删除",children:e.jsx(g,{name:p?"x":"trash2",size:14})})]},x.sessionId)})]},v.label))]})]})}function ce({title:s,slots:a,welcomeMessage:n,suggestedPrompts:t,sidebarDefaultOpen:r=!0,onClose:c,avatar:o}){const{status:l,sendMessage:i,stop:u,conversations:f,activeConversationId:m,switchConversation:y,newConversation:v,deleteConversation:x,renameConversation:h}=E(),[b,p]=d.useState(r),j=d.useCallback(()=>p(N=>!N),[]),w=a.ThreadList,S=a.Composer;return e.jsxs("div",{className:"sa-fullpage",children:[w?e.jsx("div",{className:`sa-fp-sidebar-wrapper ${b?"":"sa-fp-sidebar-wrapper-collapsed"}`,children:e.jsx(w,{conversations:f,activeSessionId:m,onSwitch:y,onNew:v,onDelete:x,onRename:h})}):e.jsx(Ie,{conversations:f,activeSessionId:m,onSwitch:y,onNew:v,onDelete:x,onRename:h,isCollapsed:!b,onToggleCollapse:j}),e.jsxs("div",{className:"sa-fp-main",children:[e.jsxs("div",{className:"sa-fp-header",children:[!b&&!w&&e.jsx("button",{className:"sa-fp-header-btn",onClick:j,title:"展开侧边栏",children:e.jsx(g,{name:"panel-left",size:18})}),e.jsx("div",{className:"sa-fp-header-title",children:s}),e.jsx("div",{className:"sa-fp-header-actions",children:c&&e.jsx("button",{className:"sa-fp-header-btn",onClick:c,title:"关闭",children:e.jsx(g,{name:"x",size:18})})})]}),e.jsx(F,{slots:a,welcomeMessage:n,suggestedPrompts:t,avatar:o}),S?e.jsx(S,{status:l,onSend:i,onStop:u}):e.jsx(_,{})]})]})}function de(s){const{sdk:a,mode:n="floating",slots:t={},hooks:r={},welcomeMessage:c,suggestedPrompts:o,title:l="AI Assistant",initialOpen:i=!1,onOpenChange:u,sidebarDefaultOpen:f,avatar:m}=s,[y,v]=d.useState(i);d.useEffect(()=>{v(i)},[i]);const x=d.useCallback(()=>{var j,w;const p=!y;v(p),u==null||u(p),p?(j=r.onOpen)==null||j.call(r):(w=r.onClose)==null||w.call(r)},[y,r,u]),h=d.useCallback(()=>{var p;v(!1),u==null||u(!1),(p=r.onClose)==null||p.call(r)},[r,u]),b=t.Trigger??X;return n==="fullpage"?y?e.jsx(B,{sdk:a,hooks:r,children:e.jsx(ce,{title:l,slots:t,welcomeMessage:c,suggestedPrompts:o,sidebarDefaultOpen:f,onClose:h,avatar:m})}):null:e.jsxs(B,{sdk:a,hooks:r,children:[e.jsx(b,{isOpen:y,onClick:x}),e.jsx(Te,{isOpen:y,onClose:h,title:l,slots:t,welcomeMessage:c,suggestedPrompts:o,avatar:m})]})}const pe=`
4
4
  [data-super-agent-widget] {
5
5
  --sa-primary-dark: color-mix(in srgb, var(--sa-primary) 82%, #000);
6
6
  --sa-primary-light: color-mix(in srgb, var(--sa-primary) 10%, #fff);
@@ -659,42 +659,55 @@
659
659
  .sa-thread-list-header {
660
660
  display: flex;
661
661
  align-items: center;
662
- gap: 10px;
663
- padding: 14px 16px;
664
- border-bottom: 1px solid var(--sa-border);
662
+ justify-content: space-between;
663
+ padding: 20px 20px 16px;
665
664
  flex-shrink: 0;
666
665
  }
667
666
 
667
+ .sa-thread-list-title {
668
+ font-size: 17px;
669
+ font-weight: 700;
670
+ color: #18181b;
671
+ letter-spacing: -0.2px;
672
+ }
673
+
674
+ .sa-thread-list-new {
675
+ display: flex;
676
+ align-items: center;
677
+ gap: 6px;
678
+ padding: 8px 16px;
679
+ border: none;
680
+ border-radius: 20px;
681
+ background: #f4f4f5;
682
+ color: #3f3f46;
683
+ font-size: 13px;
684
+ font-weight: 500;
685
+ cursor: pointer;
686
+ transition: background 0.15s;
687
+ }
688
+
689
+ .sa-thread-list-new:hover {
690
+ background: #e4e4e7;
691
+ }
692
+
668
693
  .sa-thread-list-items {
669
694
  flex: 1;
670
695
  overflow-y: auto;
696
+ padding: 0 12px 12px;
671
697
  }
672
698
 
673
699
  .sa-thread-list-empty {
674
- padding: 24px 16px;
700
+ padding: 48px 16px;
675
701
  text-align: center;
676
702
  color: var(--sa-text-muted);
677
- font-size: 13px;
678
- }
679
-
680
- .sa-thread-list-new {
681
- display: block;
682
- width: calc(100% - 24px);
683
- margin: 12px;
684
- padding: 10px;
685
- border: 1px dashed var(--sa-border);
686
- border-radius: 10px;
687
- background: transparent;
688
- color: var(--sa-primary);
689
703
  font-size: 14px;
690
- cursor: pointer;
691
- text-align: center;
692
- transition: background 0.15s, border-color 0.15s;
693
704
  }
694
705
 
695
- .sa-thread-list-new:hover {
696
- background: var(--sa-primary-light);
697
- border-color: var(--sa-primary);
706
+ .sa-thread-group-label {
707
+ padding: 16px 8px 6px;
708
+ font-size: 12px;
709
+ font-weight: 500;
710
+ color: #a1a1aa;
698
711
  }
699
712
 
700
713
  .sa-thread-item {
@@ -702,8 +715,9 @@
702
715
  align-items: center;
703
716
  justify-content: space-between;
704
717
  gap: 8px;
705
- padding: 12px 16px;
706
- border-bottom: 1px solid #f3f4f6;
718
+ padding: 10px 12px;
719
+ margin: 2px 0;
720
+ border-radius: 8px;
707
721
  color: #374151;
708
722
  font-size: 14px;
709
723
  cursor: pointer;
@@ -711,7 +725,7 @@
711
725
  }
712
726
 
713
727
  .sa-thread-item:hover {
714
- background: var(--sa-surface);
728
+ background: #f9fafb;
715
729
  }
716
730
 
717
731
  .sa-thread-item.active {
@@ -816,6 +830,191 @@
816
830
  animation: sa-blink 1s steps(2, start) infinite;
817
831
  }
818
832
 
833
+ /* ── Interrupt cards ──────────────────────────────────────── */
834
+
835
+ .sa-interrupt-card {
836
+ margin: 8px 0;
837
+ padding: 14px;
838
+ border: 1px solid #e0e7ff;
839
+ border-radius: 10px;
840
+ background: #f8faff;
841
+ }
842
+
843
+ .sa-interrupt-content {
844
+ display: flex;
845
+ align-items: flex-start;
846
+ gap: 8px;
847
+ font-size: 13px;
848
+ line-height: 1.6;
849
+ color: var(--sa-text);
850
+ margin-bottom: 12px;
851
+ }
852
+
853
+ .sa-interrupt-actions {
854
+ display: flex;
855
+ gap: 8px;
856
+ margin-top: 10px;
857
+ }
858
+
859
+ .sa-interrupt-btn {
860
+ display: inline-flex;
861
+ align-items: center;
862
+ gap: 5px;
863
+ padding: 6px 14px;
864
+ border: none;
865
+ border-radius: 8px;
866
+ font-size: 13px;
867
+ font-weight: 500;
868
+ cursor: pointer;
869
+ transition: background 0.15s, opacity 0.15s;
870
+ }
871
+
872
+ .sa-interrupt-btn:disabled {
873
+ opacity: 0.5;
874
+ cursor: not-allowed;
875
+ }
876
+
877
+ .sa-interrupt-btn-primary {
878
+ background: var(--sa-primary);
879
+ color: #fff;
880
+ }
881
+
882
+ .sa-interrupt-btn-primary:hover:not(:disabled) {
883
+ opacity: 0.9;
884
+ }
885
+
886
+ .sa-interrupt-btn-secondary {
887
+ background: #f3f4f6;
888
+ color: #374151;
889
+ }
890
+
891
+ .sa-interrupt-btn-secondary:hover:not(:disabled) {
892
+ background: #e5e7eb;
893
+ }
894
+
895
+ .sa-interrupt-options {
896
+ display: flex;
897
+ flex-direction: column;
898
+ gap: 6px;
899
+ }
900
+
901
+ .sa-interrupt-option {
902
+ display: flex;
903
+ align-items: center;
904
+ gap: 8px;
905
+ padding: 8px 12px;
906
+ border: 1px solid var(--sa-border);
907
+ border-radius: 8px;
908
+ background: #fff;
909
+ color: var(--sa-text);
910
+ font-size: 13px;
911
+ cursor: pointer;
912
+ text-align: left;
913
+ transition: border-color 0.12s, background 0.12s;
914
+ }
915
+
916
+ .sa-interrupt-option:hover {
917
+ border-color: var(--sa-primary);
918
+ background: #f5f3ff;
919
+ }
920
+
921
+ .sa-interrupt-option-selected {
922
+ border-color: var(--sa-primary);
923
+ background: #ede9fe;
924
+ color: var(--sa-primary);
925
+ font-weight: 500;
926
+ }
927
+
928
+ .sa-interrupt-option-danger {
929
+ color: #ef4444;
930
+ }
931
+
932
+ .sa-interrupt-option-danger:hover {
933
+ border-color: #ef4444;
934
+ background: #fef2f2;
935
+ }
936
+
937
+ .sa-interrupt-option-desc {
938
+ font-size: 11px;
939
+ color: var(--sa-text-muted);
940
+ margin-left: auto;
941
+ }
942
+
943
+ .sa-interrupt-input-area {
944
+ margin-top: 4px;
945
+ }
946
+
947
+ .sa-interrupt-input,
948
+ .sa-interrupt-textarea,
949
+ .sa-interrupt-select {
950
+ width: 100%;
951
+ padding: 8px 12px;
952
+ border: 1px solid var(--sa-border);
953
+ border-radius: 8px;
954
+ background: #fff;
955
+ color: var(--sa-text);
956
+ font-size: 13px;
957
+ font-family: inherit;
958
+ outline: none;
959
+ transition: border-color 0.15s;
960
+ }
961
+
962
+ .sa-interrupt-input:focus,
963
+ .sa-interrupt-textarea:focus,
964
+ .sa-interrupt-select:focus {
965
+ border-color: var(--sa-primary);
966
+ }
967
+
968
+ .sa-interrupt-textarea {
969
+ resize: vertical;
970
+ min-height: 60px;
971
+ }
972
+
973
+ .sa-interrupt-form {
974
+ display: flex;
975
+ flex-direction: column;
976
+ gap: 10px;
977
+ margin-top: 4px;
978
+ }
979
+
980
+ .sa-interrupt-form-field {
981
+ display: flex;
982
+ flex-direction: column;
983
+ gap: 4px;
984
+ }
985
+
986
+ .sa-interrupt-form-label {
987
+ font-size: 12px;
988
+ font-weight: 500;
989
+ color: var(--sa-text);
990
+ }
991
+
992
+ .sa-interrupt-form-required {
993
+ color: #ef4444;
994
+ margin-left: 2px;
995
+ }
996
+
997
+ .sa-interrupt-resolved {
998
+ display: flex;
999
+ align-items: center;
1000
+ gap: 6px;
1001
+ padding: 8px 12px;
1002
+ border-radius: 8px;
1003
+ background: #ecfdf5;
1004
+ color: #065f46;
1005
+ font-size: 13px;
1006
+ margin: 6px 0;
1007
+ }
1008
+
1009
+ .sa-interrupt-unknown {
1010
+ padding: 8px 12px;
1011
+ border-radius: 8px;
1012
+ background: #fef3c7;
1013
+ color: #92400e;
1014
+ font-size: 13px;
1015
+ margin: 6px 0;
1016
+ }
1017
+
819
1018
  /* ── Animations ──────────────────────────────────────────── */
820
1019
 
821
1020
  @keyframes sa-slide-up {
@@ -1121,4 +1320,4 @@
1121
1320
  border-color: #d4d4d8;
1122
1321
  box-shadow: 0 0 0 3px rgba(99,102,241,0.08);
1123
1322
  }
1124
- `,ce={primaryColor:"#6366f1",backgroundColor:"#ffffff",fontFamily:"system-ui, -apple-system, sans-serif",borderRadius:16,panelWidth:380,panelHeight:520,zIndex:9999};function de(a){const s={...ce,...a};return[`--sa-primary: ${s.primaryColor}`,`--sa-bg: ${s.backgroundColor}`,`--sa-font: ${s.fontFamily}`,`--sa-radius: ${s.borderRadius}px`,`--sa-panel-width: ${s.panelWidth}px`,`--sa-panel-height: ${s.panelHeight}px`,`--sa-z-index: ${s.zIndex}`].join("; ")}function be(a,s){const l=typeof a=="string"?document.querySelector(a):a;if(!l)throw new Error(`Target element not found: ${a}`);const r=document.createElement("div");r.setAttribute("data-super-agent-widget","");const t=de(s.theme??{});if(r.setAttribute("style",t),l.appendChild(r),!document.getElementById("sa-widget-styles")){const o=document.createElement("style");o.id="sa-widget-styles",o.textContent=le,document.head.appendChild(o)}let i=fe.createRoot(r),d=!1;const n=o=>{i&&i.render(c.createElement(oe,{...s,initialOpen:o??d,onOpenChange:x=>{d=x}}))};return n(!1),{open(){d=!0,n(!0)},close(){d=!1,n(!1)},destroy(){i&&(i.unmount(),i=null),r.remove()}}}exports.ActionBar=te;exports.ChatProvider=O;exports.ChatWidget=oe;exports.Composer=B;exports.ErrorPart=ae;exports.FullpageLayout=ie;exports.Header=J;exports.Icon=w;exports.Message=re;exports.TextPart=Z;exports.ThinkingPart=Q;exports.Thread=H;exports.ThreadList=X;exports.ToolCallPart=ee;exports.ToolResultPart=se;exports.Trigger=Y;exports.WelcomeScreen=ne;exports.defaultTheme=ce;exports.mount=be;exports.themeToCSSVars=de;exports.useAutoScroll=G;exports.useChat=K;exports.useChatContext=T;exports.useConversations=U;exports.widgetStyles=le;
1323
+ `,ue={primaryColor:"#6366f1",backgroundColor:"#ffffff",fontFamily:"system-ui, -apple-system, sans-serif",borderRadius:16,panelWidth:380,panelHeight:520,zIndex:9999};function fe(s){const a={...ue,...s};return[`--sa-primary: ${a.primaryColor}`,`--sa-bg: ${a.backgroundColor}`,`--sa-font: ${a.fontFamily}`,`--sa-radius: ${a.borderRadius}px`,`--sa-panel-width: ${a.panelWidth}px`,`--sa-panel-height: ${a.panelHeight}px`,`--sa-z-index: ${a.zIndex}`].join("; ")}function Ee(s,a){const n=typeof s=="string"?document.querySelector(s):s;if(!n)throw new Error(`Target element not found: ${s}`);const t=document.createElement("div");t.setAttribute("data-super-agent-widget","");const r=fe(a.theme??{});if(t.setAttribute("style",r),n.appendChild(t),!document.getElementById("sa-widget-styles")){const i=document.createElement("style");i.id="sa-widget-styles",i.textContent=pe,document.head.appendChild(i)}let c=xe.createRoot(t),o=!1;const l=i=>{c&&c.render(d.createElement(de,{...a,initialOpen:i??o,onOpenChange:u=>{o=u}}))};return l(!1),{open(){o=!0,l(!0)},close(){o=!1,l(!1)},destroy(){c&&(c.unmount(),c=null),t.remove()}}}exports.ActionBar=ie;exports.ChatProvider=B;exports.ChatWidget=de;exports.Composer=_;exports.ErrorPart=re;exports.FullpageLayout=ce;exports.Header=G;exports.Icon=g;exports.InterruptCard=ne;exports.Message=oe;exports.TextPart=ee;exports.ThinkingPart=se;exports.Thread=F;exports.ThreadList=Z;exports.ToolCallPart=ae;exports.ToolResultPart=te;exports.Trigger=X;exports.WelcomeScreen=le;exports.defaultTheme=ue;exports.mount=Ee;exports.themeToCSSVars=fe;exports.useAutoScroll=Q;exports.useChat=U;exports.useChatContext=E;exports.useConversations=Y;exports.widgetStyles=pe;