@qfei-design/make-ai-assistant 0.2.13 → 0.2.14
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/PUBLIC_API.md +18 -19
- package/README.md +18 -12
- package/capabilities.json +2 -1
- package/dist/client-protocol.d.ts +24 -0
- package/dist/client-types.d.ts +420 -0
- package/dist/client.cjs +2 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.mjs +1154 -0
- package/dist/conversation-BpmWa2VL.cjs +1 -0
- package/dist/conversation-DuqMadaQ.js +888 -0
- package/dist/conversation-management-DZROhXyK.js +229 -0
- package/dist/conversation-management-f1y0yRvt.cjs +1 -0
- package/dist/core/conversation-management.d.ts +15 -5
- package/dist/core/conversation.d.ts +6 -5
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +4 -4
- package/dist/make-app.cjs +1 -1
- package/dist/make-app.d.ts +8 -69
- package/dist/make-app.mjs +236 -703
- package/dist/make-console.cjs +1 -1
- package/dist/make-console.mjs +1 -1
- package/dist/react/make-ai-assistant.d.ts +1 -2
- package/dist/react/use-attachments.d.ts +2 -1
- package/dist/react/use-conversation-manager.d.ts +1 -0
- package/dist/react.cjs +62 -4
- package/dist/react.mjs +3048 -1815
- package/dist/sse.cjs +1 -1
- package/dist/sse.mjs +1 -1
- package/dist/styles.css +288 -105
- package/docs/backend-contract.md +3 -7
- package/docs/make-app-integration.md +23 -68
- package/examples/make-app/main.tsx +1 -1
- package/examples/make-app/transport.ts +36 -146
- package/package.ai.json +9 -6
- package/package.json +11 -3
- package/recipes.json +4 -3
- package/dist/conversation-CZfbgCXd.js +0 -1111
- package/dist/conversation-Cvh-IVRV.cjs +0 -1
- package/dist/make-app/protocol.d.ts +0 -27
- package/dist/make-app/stream.d.ts +0 -20
package/dist/react.cjs
CHANGED
|
@@ -1,5 +1,63 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("react"),Ie=require("./index.cjs"),b=require("./conversation-Cvh-IVRV.cjs"),Xt=require("react-dom"),Ct=t=>t?.trim()||void 0,ge=(t,s)=>Ct(t)??s,dt=t=>{const s=Ct(t?.primary);if(s)return{"--make-ai-theme-primary":s,"--make-ai-theme-primary-hover":ge(t?.primaryHover,"color-mix(in srgb, var(--make-ai-theme-primary) 84%, #15233d)"),"--make-ai-theme-on-primary":ge(t?.onPrimary,"#fcfcff"),"--make-ai-theme-bg":ge(t?.background,"color-mix(in srgb, var(--make-ai-theme-primary) 2%, #fcfcff)"),"--make-ai-theme-surface":ge(t?.surface,"color-mix(in srgb, var(--make-ai-theme-primary) 4%, var(--make-ai-theme-bg))"),"--make-ai-theme-surface-strong":ge(t?.surfaceStrong,"color-mix(in srgb, var(--make-ai-theme-primary) 8%, var(--make-ai-theme-bg))"),"--make-ai-theme-text":ge(t?.text,"color-mix(in srgb, var(--make-ai-theme-primary) 12%, #252631)"),"--make-ai-theme-text-secondary":ge(t?.textSecondary,"color-mix(in srgb, var(--make-ai-theme-text) 74%, var(--make-ai-theme-primary))"),"--make-ai-theme-border":ge(t?.border,"color-mix(in srgb, var(--make-ai-theme-primary) 14%, var(--make-ai-theme-bg))"),"--make-ai-theme-overlay":ge(t?.overlay,"color-mix(in srgb, var(--make-ai-theme-text) 88%, var(--make-ai-theme-primary))"),"--make-ai-theme-on-overlay":ge(t?.onOverlay,"#fcfcff")}},_t=(t,s)=>!s||!c.isValidElement(t)||typeof t.type!="string"?t:c.cloneElement(t,{style:{...t.props.style,...s}});function Et({artifact:t,context:s,fallback:a,onAction:i,onActionError:o,registry:l,theme:d}){const h=dt(d),y=Ie.resolveArtifactTemplate(l,t,s);if(!y){const S=a?a(t):e.jsxs("section",{className:"make-ai-artifact make-ai-artifact--unsupported",role:"status",children:[e.jsx("strong",{children:"暂不支持展示此结果"}),e.jsxs("span",{children:["结果类型:",t.kind]})]});return _t(S,h)}const p={context:s,onAction:i,onActionError:o,theme:d,themeStyle:h},C=y.template.render(t,s,p);return _t(C,h)}const ke=(t,s,a)=>{if(t==null||t==="")return"—";if(typeof t=="boolean")return t?"是":"否";if(typeof t!="number")return`${t}${s?.unit??""}`;const i=s?.precision,o={maximumFractionDigits:i??2,minimumFractionDigits:i};s?.style==="currency"&&s.currency?(o.style="currency",o.currency=s.currency):s?.style==="percent"&&(o.style="percent");try{const l=s?.style==="percent"?t/100:t;return`${new Intl.NumberFormat(a,o).format(l)}${s?.unit??""}`}catch{return`${t}${s?.unit??""}`}},Lt=t=>{let s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;for(const i of t)s=Math.min(s,i),a=Math.max(a,i);return Number.isFinite(s)&&Number.isFinite(a)?{min:s,max:a}:{min:0,max:0}},$t=(t,s,a)=>{if(!a.onAction)return;const i=l=>{console.error("[make-ai-assistant] host action error handler failed",{actionId:t.id,artifactId:s.artifact.id,errorType:l instanceof Error?l.name:typeof l,intent:t.intent})},o=l=>{if(a.onActionError){try{Promise.resolve(a.onActionError(l,t,s)).catch(i)}catch(d){i(d)}return}console.error("[make-ai-assistant] host action failed",{actionId:t.id,artifactId:s.artifact.id,errorType:l instanceof Error?l.name:typeof l,intent:t.intent})};try{Promise.resolve(a.onAction(t,s)).catch(o)}catch(l){o(l)}},$e=(t,s)=>t.actions?.length&&s.onAction?e.jsx("div",{className:"make-ai-artifact__actions",children:t.actions.map(a=>e.jsxs("button",{className:`make-ai-artifact__action make-ai-artifact__action--${a.appearance??"link"}`,type:"button",onClick:()=>$t(a,{artifact:t,context:s.context},s),children:[a.label,e.jsx("span",{"aria-hidden":"true",children:"→"})]},a.id))}):null,De=(t,s,a="",i)=>e.jsxs("section",{"aria-label":t.title??`${t.kind} result`,className:`make-ai-artifact ${a}`.trim(),"data-artifact-density":t.presentation?.density,"data-artifact-kind":t.kind,style:i,children:[t.title?e.jsx("h4",{className:"make-ai-artifact__title",children:t.title}):null,t.summary?e.jsx("p",{className:"make-ai-artifact__summary",children:t.summary}):null,s]}),Gt=({artifact:t,renderContext:s})=>{const a=t.data.delta,i=a?ke(a.value,a.format==="percent"?{style:"percent"}:void 0,s.context.locale):void 0;return De(t,e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"make-ai-artifact__metric-value",children:ke(t.data.value,t.data.format,s.context.locale)}),a?e.jsxs("div",{className:`make-ai-artifact__delta make-ai-artifact__delta--${a.direction??"flat"}`,children:[e.jsx("span",{"aria-hidden":"true",children:a.direction==="up"?"↗":a.direction==="down"?"↘":"→"}),e.jsx("span",{children:i}),a.label?e.jsx("span",{children:a.label}):null]}):null,t.data.context?e.jsx("p",{className:"make-ai-artifact__context",children:t.data.context}):null,$e(t,s)]}),"make-ai-artifact--metric",s.themeStyle)},Yt=({artifact:t,renderContext:s})=>De(t,e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"make-ai-artifact__comparison",children:t.data.items.map(a=>e.jsxs("div",{className:"make-ai-artifact__comparison-item",children:[e.jsx("span",{children:a.label}),e.jsx("strong",{children:ke(a.value,a.format,s.context.locale)}),a.hint?e.jsx("small",{children:a.hint}):null]},a.id))}),$e(t,s)]}),"make-ai-artifact--comparison",s.themeStyle),Jt=({artifact:t,renderContext:s})=>{const a=t.data.series.flatMap(d=>d.points.map(h=>h.y)),{max:i,min:o}=Lt(a),l=i-o||1;return De(t,e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"make-ai-artifact__trend",children:t.data.series.map(d=>e.jsxs("div",{className:"make-ai-artifact__trend-series",children:[e.jsx("div",{className:"make-ai-artifact__trend-label",children:d.label}),e.jsx("div",{className:"make-ai-artifact__trend-bars",children:d.points.map((h,y)=>{const p=18+(h.y-o)/l*70;return e.jsxs("div",{className:"make-ai-artifact__trend-point",children:[e.jsx("span",{"aria-label":`${h.x}: ${ke(h.y,d.format,s.context.locale)}`,className:"make-ai-artifact__trend-bar",role:"img",style:{height:`${p}%`},title:`${h.x}: ${ke(h.y,d.format,s.context.locale)}`}),e.jsx("small",{children:h.x})]},`${h.x}-${y}`)})})]},d.id))}),$e(t,s)]}),"make-ai-artifact--trend",s.themeStyle)},Qt=({artifact:t,renderContext:s})=>{const{max:a}=Lt(t.data.items.map(o=>Math.abs(o.value))),i=Math.max(a,1);return De(t,e.jsxs(e.Fragment,{children:[e.jsx("ol",{className:"make-ai-artifact__ranking",children:t.data.items.map((o,l)=>e.jsxs("li",{children:[e.jsx("span",{className:"make-ai-artifact__rank",children:l+1}),e.jsxs("span",{className:"make-ai-artifact__ranking-label",children:[e.jsx("span",{children:o.label}),o.description?e.jsx("small",{children:o.description}):null]}),e.jsx("span",{className:"make-ai-artifact__ranking-track","aria-hidden":"true",children:e.jsx("span",{style:{width:`${Math.abs(o.value)/i*100}%`}})}),e.jsx("strong",{children:ke(o.value,o.format,s.context.locale)})]},o.id))}),$e(t,s)]}),"make-ai-artifact--ranking",s.themeStyle)},es=(t,s)=>s.action??{id:`open-${s.id}`,label:s.title??s.id,intent:"open-record",target:{entityKey:t.data.entity.key,recordId:s.id}},ts=({artifact:t,renderContext:s})=>De(t,e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"make-ai-artifact__record-list",children:t.data.records.length===0?e.jsx("p",{className:"make-ai-artifact__empty",children:"没有符合条件的记录"}):t.data.records.map(a=>{const i=es(t,a),o=e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:a.title??a.id}),e.jsx("span",{className:"make-ai-artifact__record-values",children:t.data.columns.map(l=>e.jsxs("span",{children:[e.jsx("small",{children:l.label}),ke(a.values[l.key],l.format,s.context.locale)]},l.key))}),s.onAction?e.jsx("span",{"aria-hidden":"true",children:"›"}):null]});return s.onAction?e.jsx("button",{className:"make-ai-artifact__record",type:"button",onClick:()=>$t(i,{artifact:t,context:s.context},s),children:o},a.id):e.jsx("div",{className:"make-ai-artifact__record",children:o},a.id)})}),t.data.total!==void 0?e.jsxs("p",{className:"make-ai-artifact__record-total",children:["共 ",t.data.total," 条"]}):null,$e(t,s)]}),"make-ai-artifact--record-list",s.themeStyle),ss=({artifact:t,renderContext:s})=>De(t,e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`make-ai-artifact__notice make-ai-artifact__notice--${t.data.tone}`,children:[e.jsx("span",{"aria-hidden":"true",children:t.data.tone==="success"?"✓":t.data.tone==="warning"?"!":t.data.tone==="danger"?"×":"i"}),e.jsx("p",{children:t.data.body})]}),$e(t,s)]}),"make-ai-artifact--notice",s.themeStyle),Ee=(t,s,a)=>({id:t,kinds:[s],priority:0,render:a}),as=[Ee("platform.metric.default","metric",(t,s,a)=>e.jsx(Gt,{artifact:t,renderContext:a})),Ee("platform.comparison.default","comparison",(t,s,a)=>e.jsx(Yt,{artifact:t,renderContext:a})),Ee("platform.trend.default","trend",(t,s,a)=>e.jsx(Jt,{artifact:t,renderContext:a})),Ee("platform.ranking.default","ranking",(t,s,a)=>e.jsx(Qt,{artifact:t,renderContext:a})),Ee("platform.record-list.default","record-list",(t,s,a)=>e.jsx(ts,{artifact:t,renderContext:a})),Ee("platform.notice.default","notice",(t,s,a)=>e.jsx(ss,{artifact:t,renderContext:a}))],Dt=Ie.createArtifactTemplateRegistry(as).templates,Ot=(t=Dt)=>Ie.createArtifactTemplateRegistry(t),Le=()=>globalThis.crypto.randomUUID(),ut=t=>{const s=t,a=s?.status??s?.response?.status;return a===409?"数据已变化或对话仍在运行,请刷新后重试":a===401||s?.code==="AI_AUTH_REQUIRED"||s?.code==="AI_AUTH_EXPIRED"?"登录已失效,请重新登录":a===403?"当前账号无权访问该对话":a===404?"对话或回答已不可见,请刷新列表":s?.message?.startsWith("输入内容过长")?s.message:"操作未完成,请重试或刷新对话"};function ns(t,s){const a=s.features?.conversationManagement===!0,i=a?s.scopeKey?.(t)??t.app.id:"",o=c.useRef(i);o.current=i;const l=c.useRef(i),[d,h]=c.useState(b.createAssistantConversationState),y=c.useRef(d),p=r=>{const u=typeof r=="function"?r(y.current):r;y.current=u,h(u)},[C,S]=c.useState([]),[R,V]=c.useState(),A=c.useRef(void 0),[D,g]=c.useState(""),[N,F]=c.useState(-1),[f,n]=c.useState(!1),[v,_]=c.useState(!1),[K,I]=c.useState(a),[X,G]=c.useState(!1),[U,J]=c.useState(),[me,re]=c.useState([]),[O,ae]=c.useState([]),ie=c.useRef(new Set),q=c.useRef(new Map),$=c.useRef(0),w=c.useRef(0),P=c.useRef(0),te=c.useRef(void 0),he=c.useRef(void 0),we=c.useRef(new Map),E=(r,u=i)=>w.current===r&&o.current===u,Q=()=>{const r=new AbortController;return ie.current.add(r),r},oe=r=>ie.current.delete(r),ce=r=>{A.current=r,V(r)},at=r=>{S(u=>u.map(x=>x.chatId===r.chatId?r:x))},fe=r=>{S(u=>u.filter(x=>x.chatId!==r))},xe=()=>{P.current+=1},pe=()=>{for(const r of q.current.values())r.abort();q.current.clear()},ee=r=>{r instanceof Error&&r.name==="AbortError"||(console.warn("[make-ai-assistant] conversation operation failed",{errorType:r instanceof Error?r.name:typeof r}),J(ut(r)))},_e=async r=>{if(!a||!s.listConversations)return;const u=w.current,x=++P.current,k=Q();try{const M=await s.listConversations(t,{cursor:r},{signal:k.signal});if(!E(u)||k.signal.aborted||x!==P.current)return;S(L=>[...new Map([...r?L:[],...M.chats].map(j=>[j.chatId,j])).values()]),g(M.nextCursor)}catch(M){E(u)&&!k.signal.aborted&&x===P.current&&ee(M)}finally{oe(k),E(u)&&x===P.current&&I(!1)}},ve=async(r,u,x)=>{const k=w.current,M=$.current;let L;try{for await(const j of r){if(!E(k)||u.signal.aborted||M!==$.current||A.current?.chatId!==x)return;const H=b.parseAssistantEvent(j);if(H.type==="response.accepted"||H.type==="response.state"){L=H.responseId;const B=q.current.get(L);if(B&&B!==u){H.type==="response.accepted"&&p(z=>b.reduceAssistantEvent(z,H)),u.abort();return}q.current.set(L,u)}p(B=>b.reduceAssistantEvent(B,H)),H.type==="response.terminal"&&(re(B=>B.filter(z=>z!==H.responseId)),_e())}}catch(j){E(k)&&!u.signal.aborted&&M===$.current&&(ee(j),L||p(H=>({...H,status:Object.values(H.responses??{}).some(B=>!b.isResponseTerminal(B.status))?"streaming":"error"})))}finally{L&&q.current.get(L)===u&&q.current.delete(L),oe(u)}},Oe=async(r,u,x,k)=>{if(!s.getResponse||!s.watchResponse)return;const M=new Set(r.filter(j=>j.role==="assistant"&&j.persistent).map(j=>j.responseId)),L=[...new Map(r.filter(j=>j.role==="user"&&j.responseId&&!M.has(j.responseId)).map(j=>[j.responseId,j.cursor??-1])).entries()].slice(-20);for(const[j,H]of L){if(!E(k)||x!==$.current)return;if(q.current.has(j))continue;const B=Q();try{const z=await s.getResponse(t,{chatId:u,responseId:j},{signal:B.signal});if(!E(k)||B.signal.aborted||x!==$.current||q.current.has(j))continue;p(ye=>b.reduceAssistantEvent(ye,b.isResponseTerminal(z.status)?{type:"response.snapshot",snapshot:z}:{type:"response.state",chatId:u,responseId:j,status:z.status})),z.status==="failed"||z.status==="cancelled"?p(ye=>b.reduceAssistantEvent(ye,{type:"response.terminal",chatId:u,responseId:j,status:z.status})):(q.current.set(j,B),ve(s.watchResponse(t,{chatId:u,responseId:j,historyCursor:H},{signal:B.signal}),B,u))}catch(z){E(k)&&!B.signal.aborted&&ee(z)}finally{q.current.get(j)!==B&&oe(B)}}},Fe=async r=>{const u=++$.current,x=w.current,k=Q();pe(),J(void 0),I(!0),re([]),he.current=void 0,ce(r),p({messages:[],status:"idle",threadId:r.chatId}),F(-1),n(!1),_(!1);try{const[M,L]=await Promise.all([s.getConversation(t,{chatId:r.chatId},{signal:k.signal}),s.loadConversation(t,{threadId:r.chatId,cursor:-1,signal:k.signal})]);if(!E(x)||k.signal.aborted||u!==$.current)return;if(M.chatId!==r.chatId||L.threadId!==r.chatId)throw new Error("Conversation mismatch");ce(M),p(b.createAssistantConversationState(L)),F(L.nextCursor??-1),n(L.hasMore??!1),Oe(L.messages,r.chatId,u,x)}catch(M){E(x)&&!k.signal.aborted&&u===$.current&&ee(M)}finally{oe(k),E(x)&&u===$.current&&I(!1)}},Ae=async()=>{if(A.current)return A.current;if(te.current??={requestId:Le()},te.current.promise)return te.current.promise;const r=w.current,u=$.current,x=Q(),k=te.current;return G(!0),k.promise=s.createConversation(t,{requestId:k.requestId},{signal:x.signal}).then(M=>{if(!E(r)||x.signal.aborted||u!==$.current)throw Object.assign(new Error("Stale create"),{name:"AbortError"});return te.current=void 0,ce(M),p({messages:[],status:"idle",threadId:M.chatId}),_e(),M}).finally(()=>{oe(x),k.promise=void 0,E(r)&&G(!1)}),k.promise},We=async()=>{if(!(X||te.current?.promise)){$.current+=1,pe(),ce(void 0),J(void 0),he.current=void 0,p(b.createAssistantConversationState()),n(!1),F(-1);try{await Ae()}catch(r){ee(r)}}},le=async r=>{const u=Q();he.current=r,J(void 0),y.current.messages.some(x=>x.id===r.message.id)||p(x=>b.appendUserMessage(x,r.message)),await ve(s.run(r,{signal:u.signal}),u,r.threadId)},Ve=async(r,u)=>{if(!(!r.trim()&&!u?.length))try{const x=await Ae(),k={id:Le(),content:r,...u?{parts:u}:{}};await le({threadId:x.chatId,message:k,context:t,capabilities:{artifactSchemaVersions:[],artifactKinds:[],templates:[]}})}catch(x){ee(x)}},qe=async()=>{const r=he.current;if(!r||r.threadId!==A.current?.chatId){A.current&&await Fe(A.current);return}const u=y.current.messages.find(x=>x.id===r.message.id);if(u?.responseId&&s.watchResponse){const x=u.responseId;if(q.current.has(x))return;const k=Q();q.current.set(x,k),J(void 0),await ve(s.watchResponse(t,{chatId:r.threadId,responseId:x,historyCursor:u.cursor},{signal:k.signal}),k,r.threadId)}else await le(r)},He=async(r=y.current.activeRunId)=>{const u=A.current;if(!u||!r||!s.cancelResponse||me.includes(r))return;const x=w.current,k=$.current,M=Q();re(L=>[...L,r]),J(void 0);try{const L=await s.cancelResponse(t,{chatId:u.chatId,responseId:r},{signal:M.signal});if(!E(x)||k!==$.current)return;if(b.isResponseTerminal(L.status))p(j=>b.reduceAssistantEvent(j,{type:"response.snapshot",snapshot:L})),re(j=>j.filter(H=>H!==r));else if(!q.current.has(r)&&s.watchResponse){const j=Q();q.current.set(r,j),ve(s.watchResponse(t,{chatId:u.chatId,responseId:r},{signal:j.signal}),j,u.chatId)}}catch(L){E(x)&&k===$.current&&(ee(L),re(j=>j.filter(H=>H!==r)))}finally{oe(M)}},Ze=async(r,u=A.current)=>{if(!u||X)return!1;const x=w.current,k=Q();G(!0),J(void 0);try{const M=await s.updateConversation(t,{chatId:u.chatId,expectedRevision:u.revision,...r},{signal:k.signal});return E(x)?(xe(),at(M),A.current?.chatId===M.chatId&&ce(M),!0):!1}catch(M){if(E(x)){ee(M);try{const L=await s.getConversation(t,{chatId:u.chatId},{signal:k.signal});E(x)&&A.current?.chatId===u.chatId&&ce(L)}catch{}_e()}return!1}finally{oe(k),E(x)&&G(!1)}},Xe=async(r=A.current)=>{if(!r||X)return!1;const u=w.current,x=Q();G(!0),J(void 0);try{return await s.deleteConversation(t,{chatId:r.chatId,expectedRevision:r.revision},{signal:x.signal}),E(u)?(xe(),fe(r.chatId),A.current?.chatId===r.chatId&&($.current+=1,pe(),ce(void 0),p(b.createAssistantConversationState())),!0):!1}catch(k){return E(u)&&ee(k),!1}finally{oe(x),E(u)&&G(!1)}},Ne=async(r,u,x="",k="")=>{const M=A.current;if(!M||!r.persistent||!s.setFeedback||O.includes(r.id))return;const L={chatId:M.chatId,messageId:r.id,rating:u,...x?{reason:x}:{},...k?{comment:k}:{}},j=we.current.get(r.id),{requestId:H,...B}=j??{requestId:""},z=j&&JSON.stringify(B)===JSON.stringify(L)?j:{...L,requestId:Le()};we.current.set(r.id,z);const ye=w.current,Re=$.current,Ge=Q();ae(de=>[...de,r.id]),J(void 0);try{const de=await s.setFeedback(t,z,{signal:Ge.signal});return!E(ye)||Re!==$.current||we.current.get(r.id)!==z?void 0:(p(Te=>({...Te,messages:Te.messages.map(m=>m.id===r.id&&de.revision>=(m.feedback?.revision??0)?{...m,feedback:de}:m)})),we.current.delete(r.id),!0)}catch(de){return E(ye)&&Re===$.current&&ee(de),!1}finally{oe(Ge),E(ye)&&ae(de=>de.filter(Te=>Te!==r.id))}},nt=async()=>{if(!A.current||!f||K)return;const r=w.current,u=$.current,x=A.current,k=Q();I(!0);try{const M=await s.loadConversation(t,{threadId:x.chatId,cursor:N,signal:k.signal});if(!E(r)||u!==$.current)return;const L=b.createAssistantConversationState(M),j=[...new Map([...y.current.messages,...L.messages].map(z=>[z.id,z])).values()];let H=0;const B=[];for(const z of j.slice(-200).reverse()){if(H+=[...z.content].length,H>1e6)break;B.unshift(z)}B.length<j.length&&_(!0),p(z=>({...z,messages:B})),F(M.nextCursor??N),n(M.hasMore??!1),Oe(M.messages,x.chatId,u,r)}catch(M){E(r)&&ee(M)}finally{oe(k),E(r)&&I(!1)}};c.useEffect(()=>(w.current+=1,l.current=i,te.current=void 0,he.current=void 0,we.current.clear(),ce(void 0),S([]),g(""),p(b.createAssistantConversationState()),J(void 0),I(a),G(!1),re([]),ae([]),a&&_e(),()=>{w.current+=1,$.current+=1;for(const r of ie.current)r.abort();ie.current.clear(),q.current.clear()}),[a,i,s]);const Me=l.current===i;return{enabled:a,state:Me?d:b.createAssistantConversationState(),setState:p,chats:Me?C:[],chat:Me?R:void 0,listCursor:D,historyMore:f,historyTruncated:v,loading:!Me||K,busy:X,error:Me?U:void 0,cancelling:me,feedbackBusy:O,refresh:_e,select:Fe,create:We,ensureChat:Ae,send:Ve,retry:qe,stop:He,update:Ze,remove:Xe,feedback:Ne,moreHistory:nt,setError:J}}const rs=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M5 5.5h14v10H9l-4 3v-13Z"}),e.jsx("path",{d:"M8 9h8M8 12h6"})]}),is=()=>e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"M12 5v14M5 12h14"})}),os=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"m4.5 16.8-.7 3.7 3.7-.7L18 9.3l-3-3L4.5 16.8Z"}),e.jsx("path",{d:"m13.8 7.5 3 3"})]}),cs=()=>e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"M5.5 7.5h13M9.5 7.5V5.7h5v1.8M8 10.5v6M12 10.5v6M16 10.5v6M7 7.5l.7 12h8.6l.7-12"})}),jt=()=>e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"m5 12.5 4.5 4.5L19 7.5"})}),kt=()=>e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"m6 6 12 12M18 6 6 18"})}),ls=({anchor:t,label:s,onDismiss:a})=>{const[i,o]=c.useState();if(c.useLayoutEffect(()=>{const d=()=>{if(!t.isConnected){a();return}const h=t.getBoundingClientRect(),y=h.top>=48?"above":"below";o({left:h.left+h.width/2,placement:y,top:y==="above"?h.top-8:h.bottom+8})};return d(),window.addEventListener("resize",d),document.addEventListener("scroll",d,!0),()=>{window.removeEventListener("resize",d),document.removeEventListener("scroll",d,!0)}},[t,a]),!i||typeof document>"u")return null;const l=t.closest(".make-ai-assistant")??document.body;return Xt.createPortal(e.jsx("span",{className:"make-ai-assistant__conversation-tooltip","data-placement":i.placement,role:"tooltip",style:{left:i.left,top:i.top},children:s}),l)},ds=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M7.5 10.5v9H4.8a1.8 1.8 0 0 1-1.8-1.8v-5.4a1.8 1.8 0 0 1 1.8-1.8h2.7Z"}),e.jsx("path",{d:"M7.5 19.5h8.1a2.4 2.4 0 0 0 2.3-1.8l1.4-5.4a1.5 1.5 0 0 0-1.5-1.8h-4.1l.7-3.4A2.4 2.4 0 0 0 12 4.2L7.5 10.5Z"})]}),us=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M7.5 13.5v-9H4.8A1.8 1.8 0 0 0 3 6.3v5.4a1.8 1.8 0 0 0 1.8 1.8h2.7Z"}),e.jsx("path",{d:"M7.5 4.5h8.1a2.4 2.4 0 0 1 2.3 1.8l1.4 5.4a1.5 1.5 0 0 1-1.5 1.8h-4.1l.7 3.4A2.4 2.4 0 0 1 12 19.8l-4.5-6.3Z"})]});function ms({id:t,manager:s,onDismiss:a,onNewConversation:i,triggerRef:o}){const[l,d]=c.useState(),[h,y]=c.useState(""),[p,C]=c.useState(),[S,R]=c.useState(),V=c.useRef(null),A=(n,v)=>{R(_=>_?.anchor===v&&_.label===n?_:{anchor:v,label:n})},D=n=>{R(v=>v?.anchor===n?void 0:v)},g=n=>({"data-tooltip":n,onBlur:v=>D(v.currentTarget),onFocus:v=>A(n,v.currentTarget),onPointerEnter:v=>A(n,v.currentTarget),onPointerLeave:v=>D(v.currentTarget)}),N=()=>{d(void 0),y("")},F=async n=>{const v=h.trim();v&&await s.update({title:v},n)&&N()},f=async n=>{await s.remove(n)&&C(void 0)};return c.useEffect(()=>{const n=v=>{const _=v.target;_ instanceof Node&&(V.current?.contains(_)||o.current?.contains(_)||a())};return document.addEventListener("pointerdown",n),()=>{document.removeEventListener("pointerdown",n)}},[a,o]),e.jsxs("div",{"aria-label":"任务列表",className:"make-ai-assistant__conversation-controls",id:t,ref:V,role:"dialog",children:[e.jsxs("div",{className:"make-ai-assistant__conversation-heading",children:[e.jsx("span",{children:"最近对话"}),e.jsx("button",{"aria-label":"刷新任务列表",className:"make-ai-assistant__conversation-refresh",disabled:s.busy,type:"button",onClick:()=>{s.refresh()},children:"刷新"})]}),e.jsxs("nav",{"aria-label":"对话列表",className:"make-ai-assistant__conversation-list",children:[s.chats.map(n=>{const v=l===n.chatId,_=p===n.chatId,K=n.title||"未命名对话";return e.jsxs("div",{className:"make-ai-assistant__conversation-row","data-editing":v||_||void 0,children:[_?e.jsxs("div",{"aria-label":"确认删除对话",className:"make-ai-assistant__conversation-delete-confirmation",role:"group",children:[e.jsxs("span",{children:["删除“",K,"”?"]}),e.jsx("button",{"aria-label":`确认删除:${K}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger",disabled:s.busy,type:"button",...g("确认删除"),onClick:()=>{f(n)},children:e.jsx(jt,{})}),e.jsx("button",{"aria-label":`取消删除:${K}`,className:"make-ai-assistant__conversation-row-action",disabled:s.busy,type:"button",...g("取消"),onClick:()=>C(void 0),children:e.jsx(kt,{})})]}):v?e.jsx("input",{"aria-label":"对话标题",autoFocus:!0,className:"make-ai-assistant__conversation-row-title-input",disabled:s.busy,maxLength:255,value:h,onChange:I=>y(I.currentTarget.value),onKeyDown:I=>{I.nativeEvent.isComposing||(I.key==="Escape"&&(I.preventDefault(),N()),I.key==="Enter"&&(I.preventDefault(),F(n)))}}):e.jsxs("button",{"aria-pressed":s.chat?.chatId===n.chatId,className:"make-ai-assistant__conversation-row-select",type:"button",onClick:()=>{a(),s.select(n)},children:[e.jsx(rs,{}),e.jsx("span",{children:K})]}),v?e.jsxs("div",{"aria-label":"修改标题操作",className:"make-ai-assistant__conversation-row-actions",role:"group",children:[e.jsx("button",{"aria-label":"确认修改标题",className:"make-ai-assistant__conversation-row-action",disabled:s.busy||!h.trim(),type:"button",...g("保存标题"),onClick:()=>{F(n)},children:e.jsx(jt,{})}),e.jsx("button",{"aria-label":"取消修改标题",className:"make-ai-assistant__conversation-row-action",disabled:s.busy,type:"button",...g("取消"),onClick:N,children:e.jsx(kt,{})})]}):_?null:e.jsxs("div",{className:"make-ai-assistant__conversation-row-actions",children:[e.jsx("button",{"aria-label":`${n.pinned?"取消置顶":"置顶"} ${K}`,className:"make-ai-assistant__conversation-row-pin",disabled:s.busy,type:"button",onClick:()=>{s.update({pinned:!n.pinned},n)},children:n.pinned?"★":"☆"}),e.jsx("button",{"aria-label":`修改标题:${K}`,className:"make-ai-assistant__conversation-row-action",disabled:s.busy,type:"button",...g("修改标题"),onClick:()=>{C(void 0),d(n.chatId),y(n.title)},children:e.jsx(os,{})}),e.jsx("button",{"aria-label":`删除:${K}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger",disabled:s.busy,type:"button",...g("删除"),onClick:()=>{N(),C(n.chatId)},children:e.jsx(cs,{})})]})]},n.chatId)}),!s.loading&&!s.chats.length?e.jsx("p",{children:"暂无对话,发送消息即可新建"}):null,s.listCursor?e.jsx("button",{className:"make-ai-assistant__conversation-more",type:"button",onClick:()=>{s.refresh(s.listCursor)},children:"更多对话"}):null]}),s.chat&&(s.historyMore||s.historyTruncated||s.state.historyTruncated)?e.jsxs("div",{className:"make-ai-assistant__conversation-history-actions",children:[s.historyMore?e.jsx("button",{type:"button",disabled:s.loading,onClick:()=>{s.moreHistory()},children:"继续加载历史"}):null,s.historyTruncated||s.state.historyTruncated?e.jsx("p",{children:"当前展示有界消息窗口,可重新选择对话从头读取。"}):null]}):null,s.error?e.jsxs("div",{className:"make-ai-assistant__conversation-error",role:"alert",children:[e.jsx("span",{children:s.error}),e.jsx("button",{type:"button",onClick:()=>{s.retry()},children:"恢复对话"})]}):null,i?e.jsxs("button",{className:"make-ai-assistant__conversation-new",type:"button",onClick:i,children:[e.jsx(is,{}),e.jsx("span",{children:"新建对话"})]}):null,S?e.jsx(ls,{anchor:S.anchor,label:S.label,onDismiss:()=>R(void 0)}):null]})}function hs({message:t,manager:s}){const[a,i]=c.useState(!1),[o,l]=c.useState(""),[d,h]=c.useState(""),y=s.feedbackBusy.includes(t.id);if(!t.persistent||t.role!=="assistant"||t.intermediate)return null;const p=t.feedback?.rating??"none";return e.jsxs("div",{"aria-label":"回答反馈",className:"make-ai-assistant__feedback",role:"group",children:[e.jsx("button",{type:"button","aria-label":"喜欢","aria-pressed":p==="like",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"喜欢",disabled:y,onClick:()=>{s.feedback(t,p==="like"?"none":"like")},children:e.jsx(ds,{})}),e.jsx("button",{type:"button","aria-label":"不喜欢","aria-pressed":p==="dislike",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"不喜欢",disabled:y,onClick:()=>{if(p==="dislike"){s.feedback(t,"none");return}l(t.feedback?.reason??""),h(t.feedback?.comment??""),i(!0)},children:e.jsx(us,{})}),p==="dislike"?e.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",disabled:y,onClick:()=>{l(t.feedback?.reason??""),h(t.feedback?.comment??""),i(!0)},children:"修改反馈"}):null,a?e.jsxs("form",{onSubmit:C=>{C.preventDefault(),s.feedback(t,"dislike",o,d).then(S=>{S&&i(!1)})},children:[e.jsx("input",{"aria-label":"反馈原因",maxLength:128,value:o,onChange:C=>l(C.currentTarget.value),placeholder:"原因(可选)"}),e.jsx("textarea",{"aria-label":"反馈说明",maxLength:4e3,value:d,onChange:C=>h(C.currentTarget.value),placeholder:"补充说明(可选)"}),e.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"submit",disabled:y,children:"提交反馈"}),e.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",onClick:()=>i(!1),children:"取消"})]}):null]})}const It=new Set(["image/png","image/jpeg","image/webp","image/gif","audio/mpeg","audio/wav","audio/ogg","audio/webm","video/mp4","video/webm","video/ogg"]);function fs({part:t,context:s,transport:a,chatId:i}){const[o,l]=c.useState(),[d,h]=c.useState(),[y,p]=c.useState(!1),C=c.useRef([]),S=c.useRef(void 0);c.useEffect(()=>()=>{S.current?.abort(),C.current.forEach(V=>URL.revokeObjectURL(V))},[]);const R=async V=>{if(!a.readContent||y)return;const A=new AbortController;S.current=A,p(!0),h(void 0);try{const D=await a.readContent(s,{chatId:i,contentRef:t.media.contentRef},{signal:A.signal});if(A.signal.aborted)return;const g=new Blob([new Uint8Array(D).buffer],{type:V&&It.has(t.media.contentType)?t.media.contentType:"application/octet-stream"}),N=URL.createObjectURL(g);if(C.current.push(N),V)l(N);else{const F=document.createElement("a");F.href=N,F.download=t.name??"attachment",F.click()}}catch(D){A.signal.aborted||h(ut(D))}finally{A.signal.aborted||p(!1)}};return e.jsxs("div",{className:"make-ai-assistant__attachment",children:[e.jsxs("span",{children:[t.name??"附件"," · ",t.media.sizeBytes," 字节"]}),a.readContent?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",disabled:y,onClick:()=>{R(!1)},children:"下载附件"}),It.has(t.media.contentType)?e.jsx("button",{type:"button",disabled:y,onClick:()=>{R(!0)},children:"预览附件"}):null]}):null,d?e.jsx("span",{role:"alert",children:d}):null,o&&t.kind==="image"?e.jsx("img",{src:o,alt:t.name??"附件图片"}):null,o&&t.kind==="audio"?e.jsx("audio",{src:o,controls:!0}):null,o&&t.kind==="video"?e.jsx("video",{src:o,controls:!0}):null]})}function ps({message:t,context:s,transport:a,chatId:i}){return e.jsx(e.Fragment,{children:t.parts?.map((o,l)=>o.kind==="text"?null:e.jsx(fs,{part:o,context:s,transport:a,chatId:i},o.id??`${t.id}:${l}`))})}const Ft=t=>t.type.split(";")[0].trim().toLowerCase()||"application/octet-stream",vs=t=>t.startsWith("image/")&&t!=="image/svg+xml"?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file",gs=t=>{const s=Ft(t);if(!(!s.startsWith("image/")||s==="image/svg+xml"||typeof URL>"u"||typeof URL.createObjectURL!="function"))return URL.createObjectURL(t)},wt=t=>{t&&typeof URL<"u"&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(t)},xs=(t,s)=>new Promise((a,i)=>{const o=new FileReader,l=()=>s.removeEventListener("abort",d),d=()=>{o.abort(),l(),i(Object.assign(new Error("Read aborted"),{name:"AbortError"}))};if(s.aborted){d();return}s.addEventListener("abort",d,{once:!0}),o.onload=()=>{l(),a(new Uint8Array(o.result))},o.onerror=()=>{l(),i(new Error("无法读取文件"))},o.readAsArrayBuffer(t)});function ys(t,s,a){const[i,o]=c.useState([]),l=c.useRef(new Map),d=c.useRef(Promise.resolve()),h=s.scopeKey?.(t)??t.app.id,y=c.useRef(h);y.current=h;const p=c.useRef(void 0),C=a.enabled&&s.features?.attachments===!0,S=(f,n)=>{!l.current.has(f.draft.id)||f.scope!==y.current||(f.draft={...f.draft,...n},o([...l.current.values()].map(v=>v.draft)))},R=()=>{for(const f of l.current.values())f.controller.abort(),wt(f.draft.previewUrl);l.current.clear(),o([]),p.current=void 0,d.current=Promise.resolve()};c.useEffect(()=>(R(),R),[h,s]),c.useEffect(()=>{p.current&&a.chat?.chatId!==p.current&&R()},[a.chat?.chatId]);const V=async f=>{const n=f.controller.signal,v=()=>{if(n.aborted||f.scope!==y.current||!l.current.has(f.draft.id))throw Object.assign(new Error("Upload aborted"),{name:"AbortError"})};try{if(v(),f.file.size>64<<20)throw new Error("文件不能超过 64 MiB");const _=await a.ensureChat();v(),p.current=_.chatId;const K=Ft(f.file);S(f,{status:"uploading",error:void 0});let I=f.draft.upload?await s.getUpload(t,{chatId:_.chatId,uploadId:f.draft.upload.id},{signal:n}):await s.startUpload(t,{chatId:_.chatId,fileId:f.draft.fileId,name:f.file.name,contentType:K,sizeBytes:f.file.size},{signal:n});if(v(),S(f,{upload:I}),I.name!==f.file.name||I.contentType!==K||I.sizeBytes!==f.file.size)throw new Error("上传文件身份不一致");if(I.status!=="ready"){I=await s.getUpload(t,{chatId:_.chatId,uploadId:I.id},{signal:n}),v();const X=new Set(I.completedParts),G=Math.ceil(f.file.size/I.partSize);for(let U=0;U<G;U+=1){if(v(),!X.has(U)){const J=await xs(f.file.slice(U*I.partSize,Math.min(f.file.size,(U+1)*I.partSize)),n);v(),await s.uploadPart(t,{chatId:_.chatId,uploadId:I.id,part:U,bytes:J},{signal:n}),v(),X.add(U)}S(f,{progress:X.size/Math.max(G,1)})}S(f,{status:"completing"}),I=await s.completeUpload(t,{chatId:_.chatId,uploadId:I.id},{signal:n}),v()}if(I.status!=="ready"||!I.content)throw new Error("上传尚未完成");S(f,{status:"ready",progress:1,upload:I})}catch(_){S(f,{status:n.aborted?"paused":"failed",error:n.aborted?void 0:ut(_)})}},A=f=>{if(C){if(f.length+l.current.size>32){a.setError("每条消息最多包含 32 个附件或文本片段");return}for(const n of f){const v={id:Le(),fileId:Le(),name:n.name,size:n.size,status:"queued",progress:0,previewUrl:gs(n)},_={draft:v,file:n,controller:new AbortController,scope:h};l.current.set(v.id,_),d.current=d.current.then(()=>V(_))}o([...l.current.values()].map(n=>n.draft))}},D=f=>{const n=l.current.get(f);!n||!["paused","failed"].includes(n.draft.status)||(n.controller=new AbortController,S(n,{status:"queued"}),d.current=d.current.then(()=>V(n)))},g=f=>{const n=l.current.get(f);n?.controller.abort(),wt(n?.draft.previewUrl),l.current.delete(f),o([...l.current.values()].map(v=>v.draft))},N=f=>l.current.get(f)?.controller.abort(),F=i.flatMap(f=>{const n=f.upload;if(f.status!=="ready"||!n?.content)return[];const v=vs(n.contentType);return[{id:f.id,kind:v,name:n.name,media:{contentRef:n.content.contentRef,contentType:n.contentType,sizeBytes:n.content.sizeBytes,digestSha256:n.content.digestSha256}}]});return{enabled:C,drafts:i,parts:F,pending:i.some(f=>f.status!=="ready"),add:A,retry:D,remove:g,pause:N,clear:R}}function bs({attachments:t,onOpenChange:s,open:a,triggerRef:i}){const o=c.useRef(null),l=c.useRef(null);c.useEffect(()=>{if(!a)return;const h=y=>{const p=y.target;p instanceof Node&&!o.current?.contains(p)&&s(!1)};return document.addEventListener("pointerdown",h),()=>{document.removeEventListener("pointerdown",h)}},[s,a]);const d=h=>{t.add(Array.from(h.files??[])),h.value="",s(!1)};return e.jsxs("div",{className:"make-ai-assistant__attachment-composer",ref:o,children:[e.jsx("button",{"aria-expanded":a,"aria-haspopup":"menu","aria-label":"添加附件",className:"make-ai-assistant__attachment-trigger",ref:i,title:"添加附件",type:"button",onClick:()=>s(!a),children:e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"M12 5v14M5 12h14"})})}),a?e.jsx("div",{"aria-label":"附件选项",className:"make-ai-assistant__attachment-menu",role:"menu",children:e.jsxs("button",{role:"menuitem",type:"button",onClick:()=>l.current?.click(),children:[e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M12 15V4M7.5 8.5 12 4l4.5 4.5"}),e.jsx("path",{d:"M5 14v5h14v-5"})]}),e.jsx("span",{children:"上传文件或图片"})]})}):null,e.jsx("input",{"aria-label":"上传文件或图片",hidden:!0,multiple:!0,ref:l,type:"file",onChange:h=>d(h.currentTarget)})]})}function _s({attachments:t}){return t.drafts.length?e.jsx("div",{className:"make-ai-assistant__attachment-drafts","aria-label":"待发送附件",children:e.jsx("ul",{children:t.drafts.map(s=>e.jsxs("li",{"data-status":s.status,children:[s.previewUrl?e.jsx("img",{alt:"",className:"make-ai-assistant__attachment-draft-preview",src:s.previewUrl}):e.jsx("span",{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-file",children:e.jsxs("svg",{viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M6 3h8l4 4v14H6z"}),e.jsx("path",{d:"M14 3v5h5M9 13h6M9 16h6"})]})}),e.jsxs("span",{className:"make-ai-assistant__attachment-draft-details",children:[e.jsx("span",{className:"make-ai-assistant__attachment-draft-name",title:s.name,children:s.name}),e.jsx("span",{className:"make-ai-assistant__attachment-draft-status",children:s.status==="ready"?"已上传":s.status==="completing"?"校验中":s.status==="paused"?"已暂停":s.status==="failed"?"上传失败":`${Math.round(s.progress*100)}%`})]}),s.error?e.jsx("span",{role:"alert",children:s.error}):null,s.status==="failed"||s.status==="paused"?e.jsx("button",{type:"button",onClick:()=>t.retry(s.id),children:"重试上传"}):null,s.status==="uploading"?e.jsx("button",{type:"button",onClick:()=>t.pause(s.id),children:"暂停上传"}):null,e.jsx("button",{"aria-label":`移除附件 ${s.name}`,className:"make-ai-assistant__attachment-draft-remove",type:"button",onClick:()=>t.remove(s.id),children:e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"m7 7 10 10M17 7 7 17"})})})]},s.id))})}):null}const js=t=>`${t}-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,ks="Make",Is=["总结当前页面数据","找出需要关注的记录","列出我有权限查看的数据对象"],Ut=(t,s)=>s??`${t?.trim()||ks} AI 助手`,ws=t=>t??Is,As=480,Pt=1024,Ms=.72,At=16,ot=(t,s,a)=>Math.min(Math.max(t,Math.min(s,a)),a),Rs=t=>typeof t=="number"&&Number.isFinite(t)&&t>0?t:void 0,Ns=(t,s,a)=>{const i=Math.min(Pt,a*Ms);return Math.max(t,Math.min(s??i,a))},Ts=t=>typeof t=="number"?Number.isFinite(t)?`${t}px`:void 0:t?.trim()||void 0;class Y extends Error{}const tt=(t,s)=>{if(!(typeof t!="object"||t===null))return t[s]},Ss=t=>{const s=tt(t,"status");return typeof s=="number"?s:tt(tt(t,"response"),"status")},Cs=t=>{const s=tt(t,"code"),a=Ss(t),i=t instanceof Error?t.message:"",o=[s,i].filter(y=>typeof y=="string").join(" ").toLowerCase(),d=globalThis.navigator?.onLine===!1||/network|fetch|timeout|offline|connection|网络|连接|超时/.test(o),h=typeof a=="number"&&a>=500||/server|service|服务器|服务异常/.test(o);return d?{actionLabel:"重新连接",description:"请检查网络后再试。",kind:"network",label:"网络连接",title:"网络连接不可用"}:h?{actionLabel:"重新加载",description:"服务暂时未能响应,请稍后重试。",kind:"service",label:"服务异常",title:"服务暂时不可用"}:{actionLabel:"重新加载",description:"请稍后重试;若问题持续出现,请联系管理员。",kind:"unknown",label:"加载异常",title:"暂时无法加载对话"}},Mt=t=>{try{const s=t?.return?.();if(!s)return;Promise.resolve(s).catch(a=>{console.error("[make-ai-assistant] transport iterator close failed",{errorType:a instanceof Error?a.name:typeof a})})}catch(s){console.error("[make-ai-assistant] transport iterator close failed",{errorType:s instanceof Error?s.name:typeof s})}},Es=async t=>{if(globalThis.navigator?.clipboard?.writeText){await globalThis.navigator.clipboard.writeText(t);return}if(typeof document>"u"||!document.body)throw new Error("Clipboard API is unavailable");const s=document.createElement("textarea");s.value=t,s.setAttribute("readonly",""),s.style.position="fixed",s.style.inset="0 auto auto 0",s.style.opacity="0",document.body.append(s),s.select();const a=document.execCommand("copy");if(s.remove(),!a)throw new Error("Clipboard copy failed")},Bt=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M12 2.8c.5 4.4 2.8 6.8 7.2 7.2-4.4.5-6.8 2.8-7.2 7.2-.5-4.4-2.8-6.8-7.2-7.2 4.4-.5 6.8-2.8 7.2-7.2Z"}),e.jsx("path",{d:"M18.3 16.1c.2 1.8 1.2 2.8 3 3-1.8.2-2.8 1.2-3 3-.2-1.8-1.2-2.8-3-3 1.8-.2 2.8-1.2 3-3Z"})]}),Ls=()=>e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"m6 6 12 12M18 6 6 18"})}),$s=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M8 8h10v12H8z"}),e.jsx("path",{d:"M6 16H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),Ds=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),e.jsx("path",{d:"M4 4v4h4"}),e.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),e.jsx("path",{d:"M20 20v-4h-4"})]}),Os=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M12 4v11"}),e.jsx("path",{d:"m7 10 5 5 5-5"}),e.jsx("path",{d:"M5 20h14"})]}),Fs=()=>e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"M12 5v14M5 12h14"})}),Us=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M10 6h9M10 12h9M10 18h9"}),e.jsx("path",{d:"M5 6h.01M5 12h.01M5 18h.01"})]}),Ps=()=>e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"m7 10 5 5 5-5"})}),Rt=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"m4 4 17 8-17 8 3-8-3-8Z"}),e.jsx("path",{d:"M7 12h14"})]}),zt=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),e.jsx("path",{d:"M4 4v4h4"}),e.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),e.jsx("path",{d:"M20 20v-4h-4"})]}),Bs=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("circle",{cx:"12",cy:"12",r:"8"}),e.jsx("path",{d:"M12 8v4.5"}),e.jsx("path",{d:"M12 16h.01"})]}),st=({className:t=""})=>e.jsx("span",{className:`make-ai-assistant__avatar ${t}`.trim(),"aria-hidden":"true",children:e.jsx(Bt,{})}),zs=({src:t})=>t?e.jsx("span",{className:"make-ai-assistant__user-avatar","aria-hidden":"true",children:e.jsx("img",{alt:"",src:t})}):null,Ks=({userAvatarUrl:t,userName:s})=>{const a=s?.trim();return!a&&!t?null:e.jsxs("div",{className:"make-ai-assistant__message-identity",children:[a?e.jsx("span",{className:"make-ai-assistant__message-sender",children:a}):null,e.jsx(zs,{src:t})]})},ct=t=>{const s=t.trim();if(!(!s.startsWith("|")||!s.endsWith("|")))return s.slice(1,-1).split("|").map(a=>a.trim())},Ws=t=>t.length>0&&t.every(s=>/^:?-{3,}:?$/.test(s)),Vs=(t,s)=>{const a=ct(t[s]??""),i=ct(t[s+1]??"");if(!a||!i||a.length!==i.length||!Ws(i))return;const o=[];let l=s+2;for(;l<t.length;){const d=ct(t[l]??"");if(!d||d.length!==a.length)break;o.push(d),l+=1}return{headers:a,lastIndex:l-1,rows:o}},qs=t=>{const s=[],a=[],i=[],o=[],l=t.replace(/\r\n?/g,`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),f=require("react"),Ce=require("./index.cjs"),I=require("./conversation-BpmWa2VL.cjs"),wt=require("./conversation-management-f1y0yRvt.cjs"),gs=require("react-dom");function ra(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const n=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,n.get?n:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const S=ra(f),_s=t=>t?.trim()||void 0,_e=(t,e)=>_s(t)??e,$t=t=>{const e=_s(t?.primary);if(e)return{"--make-ai-theme-primary":e,"--make-ai-theme-primary-hover":_e(t?.primaryHover,"color-mix(in srgb, var(--make-ai-theme-primary) 84%, #15233d)"),"--make-ai-theme-on-primary":_e(t?.onPrimary,"#fcfcff"),"--make-ai-theme-bg":_e(t?.background,"color-mix(in srgb, var(--make-ai-theme-primary) 2%, #fcfcff)"),"--make-ai-theme-surface":_e(t?.surface,"color-mix(in srgb, var(--make-ai-theme-primary) 4%, var(--make-ai-theme-bg))"),"--make-ai-theme-surface-strong":_e(t?.surfaceStrong,"color-mix(in srgb, var(--make-ai-theme-primary) 8%, var(--make-ai-theme-bg))"),"--make-ai-theme-text":_e(t?.text,"color-mix(in srgb, var(--make-ai-theme-primary) 12%, #252631)"),"--make-ai-theme-text-secondary":_e(t?.textSecondary,"color-mix(in srgb, var(--make-ai-theme-text) 74%, var(--make-ai-theme-primary))"),"--make-ai-theme-border":_e(t?.border,"color-mix(in srgb, var(--make-ai-theme-primary) 14%, var(--make-ai-theme-bg))"),"--make-ai-theme-overlay":_e(t?.overlay,"color-mix(in srgb, var(--make-ai-theme-text) 88%, var(--make-ai-theme-primary))"),"--make-ai-theme-on-overlay":_e(t?.onOverlay,"#fcfcff")}},Xt=(t,e)=>!e||!f.isValidElement(t)||typeof t.type!="string"?t:f.cloneElement(t,{style:{...t.props.style,...e}});function bs({artifact:t,context:e,fallback:s,onAction:n,onActionError:r,registry:i,theme:o}){const u=$t(o),c=Ce.resolveArtifactTemplate(i,t,e);if(!c){const y=s?s(t):a.jsxs("section",{className:"make-ai-artifact make-ai-artifact--unsupported",role:"status",children:[a.jsx("strong",{children:"暂不支持展示此结果"}),a.jsxs("span",{children:["结果类型:",t.kind]})]});return Xt(y,u)}const m={context:e,onAction:n,onActionError:r,theme:o,themeStyle:u},_=c.template.render(t,e,m);return Xt(_,u)}const Ne=(t,e,s)=>{if(t==null||t==="")return"—";if(typeof t=="boolean")return t?"是":"否";if(typeof t!="number")return`${t}${e?.unit??""}`;const n=e?.precision,r={maximumFractionDigits:n??2,minimumFractionDigits:n};e?.style==="currency"&&e.currency?(r.style="currency",r.currency=e.currency):e?.style==="percent"&&(r.style="percent");try{const i=e?.style==="percent"?t/100:t;return`${new Intl.NumberFormat(s,r).format(i)}${e?.unit??""}`}catch{return`${t}${e?.unit??""}`}},ys=t=>{let e=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY;for(const n of t)e=Math.min(e,n),s=Math.max(s,n);return Number.isFinite(e)&&Number.isFinite(s)?{min:e,max:s}:{min:0,max:0}},xs=(t,e,s)=>{if(!s.onAction)return;const n=i=>{console.error("[make-ai-assistant] host action error handler failed",{actionId:t.id,artifactId:e.artifact.id,errorType:i instanceof Error?i.name:typeof i,intent:t.intent})},r=i=>{if(s.onActionError){try{Promise.resolve(s.onActionError(i,t,e)).catch(n)}catch(o){n(o)}return}console.error("[make-ai-assistant] host action failed",{actionId:t.id,artifactId:e.artifact.id,errorType:i instanceof Error?i.name:typeof i,intent:t.intent})};try{Promise.resolve(s.onAction(t,e)).catch(r)}catch(i){r(i)}},Ue=(t,e)=>t.actions?.length&&e.onAction?a.jsx("div",{className:"make-ai-artifact__actions",children:t.actions.map(s=>a.jsxs("button",{className:`make-ai-artifact__action make-ai-artifact__action--${s.appearance??"link"}`,type:"button",onClick:()=>xs(s,{artifact:t,context:e.context},e),children:[s.label,a.jsx("span",{"aria-hidden":"true",children:"→"})]},s.id))}):null,Be=(t,e,s="",n)=>a.jsxs("section",{"aria-label":t.title??`${t.kind} result`,className:`make-ai-artifact ${s}`.trim(),"data-artifact-density":t.presentation?.density,"data-artifact-kind":t.kind,style:n,children:[t.title?a.jsx("h4",{className:"make-ai-artifact__title",children:t.title}):null,t.summary?a.jsx("p",{className:"make-ai-artifact__summary",children:t.summary}):null,e]}),ia=({artifact:t,renderContext:e})=>{const s=t.data.delta,n=s?Ne(s.value,s.format==="percent"?{style:"percent"}:void 0,e.context.locale):void 0;return Be(t,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__metric-value",children:Ne(t.data.value,t.data.format,e.context.locale)}),s?a.jsxs("div",{className:`make-ai-artifact__delta make-ai-artifact__delta--${s.direction??"flat"}`,children:[a.jsx("span",{"aria-hidden":"true",children:s.direction==="up"?"↗":s.direction==="down"?"↘":"→"}),a.jsx("span",{children:n}),s.label?a.jsx("span",{children:s.label}):null]}):null,t.data.context?a.jsx("p",{className:"make-ai-artifact__context",children:t.data.context}):null,Ue(t,e)]}),"make-ai-artifact--metric",e.themeStyle)},oa=({artifact:t,renderContext:e})=>Be(t,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__comparison",children:t.data.items.map(s=>a.jsxs("div",{className:"make-ai-artifact__comparison-item",children:[a.jsx("span",{children:s.label}),a.jsx("strong",{children:Ne(s.value,s.format,e.context.locale)}),s.hint?a.jsx("small",{children:s.hint}):null]},s.id))}),Ue(t,e)]}),"make-ai-artifact--comparison",e.themeStyle),ca=({artifact:t,renderContext:e})=>{const s=t.data.series.flatMap(o=>o.points.map(u=>u.y)),{max:n,min:r}=ys(s),i=n-r||1;return Be(t,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__trend",children:t.data.series.map(o=>a.jsxs("div",{className:"make-ai-artifact__trend-series",children:[a.jsx("div",{className:"make-ai-artifact__trend-label",children:o.label}),a.jsx("div",{className:"make-ai-artifact__trend-bars",children:o.points.map((u,c)=>{const m=18+(u.y-r)/i*70;return a.jsxs("div",{className:"make-ai-artifact__trend-point",children:[a.jsx("span",{"aria-label":`${u.x}: ${Ne(u.y,o.format,e.context.locale)}`,className:"make-ai-artifact__trend-bar",role:"img",style:{height:`${m}%`},title:`${u.x}: ${Ne(u.y,o.format,e.context.locale)}`}),a.jsx("small",{children:u.x})]},`${u.x}-${c}`)})})]},o.id))}),Ue(t,e)]}),"make-ai-artifact--trend",e.themeStyle)},la=({artifact:t,renderContext:e})=>{const{max:s}=ys(t.data.items.map(r=>Math.abs(r.value))),n=Math.max(s,1);return Be(t,a.jsxs(a.Fragment,{children:[a.jsx("ol",{className:"make-ai-artifact__ranking",children:t.data.items.map((r,i)=>a.jsxs("li",{children:[a.jsx("span",{className:"make-ai-artifact__rank",children:i+1}),a.jsxs("span",{className:"make-ai-artifact__ranking-label",children:[a.jsx("span",{children:r.label}),r.description?a.jsx("small",{children:r.description}):null]}),a.jsx("span",{className:"make-ai-artifact__ranking-track","aria-hidden":"true",children:a.jsx("span",{style:{width:`${Math.abs(r.value)/n*100}%`}})}),a.jsx("strong",{children:Ne(r.value,r.format,e.context.locale)})]},r.id))}),Ue(t,e)]}),"make-ai-artifact--ranking",e.themeStyle)},da=(t,e)=>e.action??{id:`open-${e.id}`,label:e.title??e.id,intent:"open-record",target:{entityKey:t.data.entity.key,recordId:e.id}},ua=({artifact:t,renderContext:e})=>Be(t,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__record-list",children:t.data.records.length===0?a.jsx("p",{className:"make-ai-artifact__empty",children:"没有符合条件的记录"}):t.data.records.map(s=>{const n=da(t,s),r=a.jsxs(a.Fragment,{children:[a.jsx("strong",{children:s.title??s.id}),a.jsx("span",{className:"make-ai-artifact__record-values",children:t.data.columns.map(i=>a.jsxs("span",{children:[a.jsx("small",{children:i.label}),Ne(s.values[i.key],i.format,e.context.locale)]},i.key))}),e.onAction?a.jsx("span",{"aria-hidden":"true",children:"›"}):null]});return e.onAction?a.jsx("button",{className:"make-ai-artifact__record",type:"button",onClick:()=>xs(n,{artifact:t,context:e.context},e),children:r},s.id):a.jsx("div",{className:"make-ai-artifact__record",children:r},s.id)})}),t.data.total!==void 0?a.jsxs("p",{className:"make-ai-artifact__record-total",children:["共 ",t.data.total," 条"]}):null,Ue(t,e)]}),"make-ai-artifact--record-list",e.themeStyle),fa=({artifact:t,renderContext:e})=>Be(t,a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:`make-ai-artifact__notice make-ai-artifact__notice--${t.data.tone}`,children:[a.jsx("span",{"aria-hidden":"true",children:t.data.tone==="success"?"✓":t.data.tone==="warning"?"!":t.data.tone==="danger"?"×":"i"}),a.jsx("p",{children:t.data.body})]}),Ue(t,e)]}),"make-ai-artifact--notice",e.themeStyle),De=(t,e,s)=>({id:t,kinds:[e],priority:0,render:s}),ma=[De("platform.metric.default","metric",(t,e,s)=>a.jsx(ia,{artifact:t,renderContext:s})),De("platform.comparison.default","comparison",(t,e,s)=>a.jsx(oa,{artifact:t,renderContext:s})),De("platform.trend.default","trend",(t,e,s)=>a.jsx(ca,{artifact:t,renderContext:s})),De("platform.ranking.default","ranking",(t,e,s)=>a.jsx(la,{artifact:t,renderContext:s})),De("platform.record-list.default","record-list",(t,e,s)=>a.jsx(ua,{artifact:t,renderContext:s})),De("platform.notice.default","notice",(t,e,s)=>a.jsx(fa,{artifact:t,renderContext:s}))],ks=Ce.createArtifactTemplateRegistry(ma).templates,ws=(t=ks)=>Ce.createArtifactTemplateRegistry(t);var js=f.createContext({});function X(){return X=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var s=arguments[e];for(var n in s)({}).hasOwnProperty.call(s,n)&&(t[n]=s[n])}return t},X.apply(null,arguments)}function ha(t){if(Array.isArray(t))return t}function pa(t,e){var s=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(s!=null){var n,r,i,o,u=[],c=!0,m=!1;try{if(i=(s=s.call(t)).next,e!==0)for(;!(c=(n=i.call(s)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(_){m=!0,r=_}finally{try{if(!c&&s.return!=null&&(o=s.return(),Object(o)!==o))return}finally{if(m)throw r}}return u}}function Yt(t,e){(e==null||e>t.length)&&(e=t.length);for(var s=0,n=Array(e);s<e;s++)n[s]=t[s];return n}function va(t,e){if(t){if(typeof t=="string")return Yt(t,e);var s={}.toString.call(t).slice(8,-1);return s==="Object"&&t.constructor&&(s=t.constructor.name),s==="Map"||s==="Set"?Array.from(t):s==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?Yt(t,e):void 0}}function ga(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Is(t,e){return ha(t)||pa(t,e)||va(t,e)||ga()}function Te(t){"@babel/helpers - typeof";return Te=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Te(t)}function _a(t,e){if(Te(t)!="object"||!t)return t;var s=t[Symbol.toPrimitive];if(s!==void 0){var n=s.call(t,e);if(Te(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function ba(t){var e=_a(t,"string");return Te(e)=="symbol"?e:e+""}function oe(t,e,s){return(e=ba(e))in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}function ya(t,e){if(t==null)return{};var s={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.indexOf(n)!==-1)continue;s[n]=t[n]}return s}function Ns(t,e){if(t==null)return{};var s,n,r=ya(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)s=i[n],e.indexOf(s)===-1&&{}.propertyIsEnumerable.call(t,s)&&(r[s]=t[s])}return r}function xa(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var jt={exports:{}};var Zt;function ka(){return Zt||(Zt=1,(function(t){(function(){var e={}.hasOwnProperty;function s(){for(var i="",o=0;o<arguments.length;o++){var u=arguments[o];u&&(i=r(i,n(u)))}return i}function n(i){if(typeof i=="string"||typeof i=="number")return i;if(typeof i!="object")return"";if(Array.isArray(i))return s.apply(null,i);if(i.toString!==Object.prototype.toString&&!i.toString.toString().includes("[native code]"))return i.toString();var o="";for(var u in i)e.call(i,u)&&i[u]&&(o=r(o,u));return o}function r(i,o){return o?i?i+" "+o:i+o:i}t.exports?(s.default=s,t.exports=s):window.classNames=s})()})(jt)),jt.exports}var wa=ka();const ja=xa(wa),ee=Math.round;function It(t,e){const s=t.replace(/^[^(]*\((.*)/,"$1").replace(/\).*/,"").match(/\d*\.?\d+%?/g)||[],n=s.map(r=>parseFloat(r));for(let r=0;r<3;r+=1)n[r]=e(n[r]||0,s[r]||"",r);return s[3]?n[3]=s[3].includes("%")?n[3]/100:n[3]:n[3]=1,n}const Jt=(t,e,s)=>s===0?t:t/100;function st(t,e){const s=e||255;return t>s?s:t<0?0:t}class Ve{constructor(e){oe(this,"isValid",!0),oe(this,"r",0),oe(this,"g",0),oe(this,"b",0),oe(this,"a",1),oe(this,"_h",void 0),oe(this,"_s",void 0),oe(this,"_l",void 0),oe(this,"_v",void 0),oe(this,"_max",void 0),oe(this,"_min",void 0),oe(this,"_brightness",void 0);function s(n){return n[0]in e&&n[1]in e&&n[2]in e}if(e)if(typeof e=="string"){let r=function(i){return n.startsWith(i)};const n=e.trim();/^#?[A-F\d]{3,8}$/i.test(n)?this.fromHexString(n):r("rgb")?this.fromRgbString(n):r("hsl")?this.fromHslString(n):(r("hsv")||r("hsb"))&&this.fromHsvString(n)}else if(e instanceof Ve)this.r=e.r,this.g=e.g,this.b=e.b,this.a=e.a,this._h=e._h,this._s=e._s,this._l=e._l,this._v=e._v;else if(s("rgb"))this.r=st(e.r),this.g=st(e.g),this.b=st(e.b),this.a=typeof e.a=="number"?st(e.a,1):1;else if(s("hsl"))this.fromHsl(e);else if(s("hsv"))this.fromHsv(e);else throw new Error("@ant-design/fast-color: unsupported input "+JSON.stringify(e))}setR(e){return this._sc("r",e)}setG(e){return this._sc("g",e)}setB(e){return this._sc("b",e)}setA(e){return this._sc("a",e,1)}setHue(e){const s=this.toHsv();return s.h=e,this._c(s)}getLuminance(){function e(i){const o=i/255;return o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4)}const s=e(this.r),n=e(this.g),r=e(this.b);return .2126*s+.7152*n+.0722*r}getHue(){if(typeof this._h>"u"){const e=this.getMax()-this.getMin();e===0?this._h=0:this._h=ee(60*(this.r===this.getMax()?(this.g-this.b)/e+(this.g<this.b?6:0):this.g===this.getMax()?(this.b-this.r)/e+2:(this.r-this.g)/e+4))}return this._h}getSaturation(){if(typeof this._s>"u"){const e=this.getMax()-this.getMin();e===0?this._s=0:this._s=e/this.getMax()}return this._s}getLightness(){return typeof this._l>"u"&&(this._l=(this.getMax()+this.getMin())/510),this._l}getValue(){return typeof this._v>"u"&&(this._v=this.getMax()/255),this._v}getBrightness(){return typeof this._brightness>"u"&&(this._brightness=(this.r*299+this.g*587+this.b*114)/1e3),this._brightness}darken(e=10){const s=this.getHue(),n=this.getSaturation();let r=this.getLightness()-e/100;return r<0&&(r=0),this._c({h:s,s:n,l:r,a:this.a})}lighten(e=10){const s=this.getHue(),n=this.getSaturation();let r=this.getLightness()+e/100;return r>1&&(r=1),this._c({h:s,s:n,l:r,a:this.a})}mix(e,s=50){const n=this._c(e),r=s/100,i=u=>(n[u]-this[u])*r+this[u],o={r:ee(i("r")),g:ee(i("g")),b:ee(i("b")),a:ee(i("a")*100)/100};return this._c(o)}tint(e=10){return this.mix({r:255,g:255,b:255,a:1},e)}shade(e=10){return this.mix({r:0,g:0,b:0,a:1},e)}onBackground(e){const s=this._c(e),n=this.a+s.a*(1-this.a),r=i=>ee((this[i]*this.a+s[i]*s.a*(1-this.a))/n);return this._c({r:r("r"),g:r("g"),b:r("b"),a:n})}isDark(){return this.getBrightness()<128}isLight(){return this.getBrightness()>=128}equals(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}clone(){return this._c(this)}toHexString(){let e="#";const s=(this.r||0).toString(16);e+=s.length===2?s:"0"+s;const n=(this.g||0).toString(16);e+=n.length===2?n:"0"+n;const r=(this.b||0).toString(16);if(e+=r.length===2?r:"0"+r,typeof this.a=="number"&&this.a>=0&&this.a<1){const i=ee(this.a*255).toString(16);e+=i.length===2?i:"0"+i}return e}toHsl(){return{h:this.getHue(),s:this.getSaturation(),l:this.getLightness(),a:this.a}}toHslString(){const e=this.getHue(),s=ee(this.getSaturation()*100),n=ee(this.getLightness()*100);return this.a!==1?`hsla(${e},${s}%,${n}%,${this.a})`:`hsl(${e},${s}%,${n}%)`}toHsv(){return{h:this.getHue(),s:this.getSaturation(),v:this.getValue(),a:this.a}}toRgb(){return{r:this.r,g:this.g,b:this.b,a:this.a}}toRgbString(){return this.a!==1?`rgba(${this.r},${this.g},${this.b},${this.a})`:`rgb(${this.r},${this.g},${this.b})`}toString(){return this.toRgbString()}_sc(e,s,n){const r=this.clone();return r[e]=st(s,n),r}_c(e){return new this.constructor(e)}getMax(){return typeof this._max>"u"&&(this._max=Math.max(this.r,this.g,this.b)),this._max}getMin(){return typeof this._min>"u"&&(this._min=Math.min(this.r,this.g,this.b)),this._min}fromHexString(e){const s=e.replace("#","");function n(r,i){return parseInt(s[r]+s[i||r],16)}s.length<6?(this.r=n(0),this.g=n(1),this.b=n(2),this.a=s[3]?n(3)/255:1):(this.r=n(0,1),this.g=n(2,3),this.b=n(4,5),this.a=s[6]?n(6,7)/255:1)}fromHsl({h:e,s,l:n,a:r}){if(this._h=e%360,this._s=s,this._l=n,this.a=typeof r=="number"?r:1,s<=0){const M=ee(n*255);this.r=M,this.g=M,this.b=M}let i=0,o=0,u=0;const c=e/60,m=(1-Math.abs(2*n-1))*s,_=m*(1-Math.abs(c%2-1));c>=0&&c<1?(i=m,o=_):c>=1&&c<2?(i=_,o=m):c>=2&&c<3?(o=m,u=_):c>=3&&c<4?(o=_,u=m):c>=4&&c<5?(i=_,u=m):c>=5&&c<6&&(i=m,u=_);const y=n-m/2;this.r=ee((i+y)*255),this.g=ee((o+y)*255),this.b=ee((u+y)*255)}fromHsv({h:e,s,v:n,a:r}){this._h=e%360,this._s=s,this._v=n,this.a=typeof r=="number"?r:1;const i=ee(n*255);if(this.r=i,this.g=i,this.b=i,s<=0)return;const o=e/60,u=Math.floor(o),c=o-u,m=ee(n*(1-s)*255),_=ee(n*(1-s*c)*255),y=ee(n*(1-s*(1-c))*255);switch(u){case 0:this.g=y,this.b=m;break;case 1:this.r=_,this.b=m;break;case 2:this.r=m,this.b=y;break;case 3:this.r=m,this.g=_;break;case 4:this.r=y,this.g=m;break;default:this.g=m,this.b=_;break}}fromHsvString(e){const s=It(e,Jt);this.fromHsv({h:s[0],s:s[1],v:s[2],a:s[3]})}fromHslString(e){const s=It(e,Jt);this.fromHsl({h:s[0],s:s[1],l:s[2],a:s[3]})}fromRgbString(e){const s=It(e,(n,r)=>r.includes("%")?ee(n/100*255):n);this.r=s[0],this.g=s[1],this.b=s[2],this.a=s[3]}}var vt=2,es=.16,Ia=.05,Na=.05,Ca=.15,Cs=5,As=4,Aa=[{index:7,amount:15},{index:6,amount:25},{index:5,amount:30},{index:5,amount:45},{index:5,amount:65},{index:5,amount:85},{index:4,amount:90},{index:3,amount:95},{index:2,amount:97},{index:1,amount:98}];function ts(t,e,s){var n;return Math.round(t.h)>=60&&Math.round(t.h)<=240?n=s?Math.round(t.h)-vt*e:Math.round(t.h)+vt*e:n=s?Math.round(t.h)+vt*e:Math.round(t.h)-vt*e,n<0?n+=360:n>=360&&(n-=360),n}function ss(t,e,s){if(t.h===0&&t.s===0)return t.s;var n;return s?n=t.s-es*e:e===As?n=t.s+es:n=t.s+Ia*e,n>1&&(n=1),s&&e===Cs&&n>.1&&(n=.1),n<.06&&(n=.06),Math.round(n*100)/100}function as(t,e,s){var n;return s?n=t.v+Na*e:n=t.v-Ca*e,n=Math.max(0,Math.min(1,n)),Math.round(n*100)/100}function Ea(t){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=[],n=new Ve(t),r=n.toHsv(),i=Cs;i>0;i-=1){var o=new Ve({h:ts(r,i,!0),s:ss(r,i,!0),v:as(r,i,!0)});s.push(o)}s.push(n);for(var u=1;u<=As;u+=1){var c=new Ve({h:ts(r,u),s:ss(r,u),v:as(r,u)});s.push(c)}return e.theme==="dark"?Aa.map(function(m){var _=m.index,y=m.amount;return new Ve(e.backgroundColor||"#141414").mix(s[_],y).toHexString()}):s.map(function(m){return m.toHexString()})}var Et=["#e6f4ff","#bae0ff","#91caff","#69b1ff","#4096ff","#1677ff","#0958d9","#003eb3","#002c8c","#001d66"];Et.primary=Et[5];function ns(t,e){var s=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),s.push.apply(s,n)}return s}function be(t){for(var e=1;e<arguments.length;e++){var s=arguments[e]!=null?arguments[e]:{};e%2?ns(Object(s),!0).forEach(function(n){oe(t,n,s[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(s)):ns(Object(s)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(s,n))})}return t}function Sa(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Ra(t,e){if(!t)return!1;if(t.contains)return t.contains(e);for(var s=e;s;){if(s===t)return!0;s=s.parentNode}return!1}var rs="data-rc-order",is="data-rc-priority",Ma="rc-util-key",St=new Map;function Es(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.mark;return e?e.startsWith("data-")?e:"data-".concat(e):Ma}function Ht(t){if(t.attachTo)return t.attachTo;var e=document.querySelector("head");return e||document.body}function Ta(t){return t==="queue"?"prependQueue":t?"prepend":"append"}function Pt(t){return Array.from((St.get(t)||t).children).filter(function(e){return e.tagName==="STYLE"})}function Ss(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Sa())return null;var s=e.csp,n=e.prepend,r=e.priority,i=r===void 0?0:r,o=Ta(n),u=o==="prependQueue",c=document.createElement("style");c.setAttribute(rs,o),u&&i&&c.setAttribute(is,"".concat(i)),s!=null&&s.nonce&&(c.nonce=s?.nonce),c.innerHTML=t;var m=Ht(e),_=m.firstChild;if(n){if(u){var y=(e.styles||Pt(m)).filter(function(M){if(!["prepend","prependQueue"].includes(M.getAttribute(rs)))return!1;var H=Number(M.getAttribute(is)||0);return i>=H});if(y.length)return m.insertBefore(c,y[y.length-1].nextSibling),c}m.insertBefore(c,_)}else m.appendChild(c);return c}function Oa(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=Ht(e);return(e.styles||Pt(s)).find(function(n){return n.getAttribute(Es(e))===t})}function La(t,e){var s=St.get(t);if(!s||!Ra(document,s)){var n=Ss("",e),r=n.parentNode;St.set(t,r),t.removeChild(n)}}function $a(t,e){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=Ht(s),r=Pt(n),i=be(be({},s),{},{styles:r});La(n,i);var o=Oa(e,i);if(o){var u,c;if((u=i.csp)!==null&&u!==void 0&&u.nonce&&o.nonce!==((c=i.csp)===null||c===void 0?void 0:c.nonce)){var m;o.nonce=(m=i.csp)===null||m===void 0?void 0:m.nonce}return o.innerHTML!==t&&(o.innerHTML=t),o}var _=Ss(t,i);return _.setAttribute(Es(i),e),_}function Rs(t){var e;return t==null||(e=t.getRootNode)===null||e===void 0?void 0:e.call(t)}function Ha(t){return Rs(t)instanceof ShadowRoot}function Pa(t){return Ha(t)?Rs(t):null}var Rt={},zt=[],za=function(e){zt.push(e)};function Da(t,e){if(process.env.NODE_ENV!=="production"&&!t&&console!==void 0){var s=zt.reduce(function(n,r){return r(n??"","warning")},e);s&&console.error("Warning: ".concat(s))}}function Va(t,e){if(process.env.NODE_ENV!=="production"&&!t&&console!==void 0){var s=zt.reduce(function(n,r){return r(n??"","note")},e);s&&console.warn("Note: ".concat(s))}}function Fa(){Rt={}}function Ms(t,e,s){!e&&!Rt[s]&&(t(!1,s),Rt[s]=!0)}function bt(t,e){Ms(Da,t,e)}function Ua(t,e){Ms(Va,t,e)}bt.preMessage=za;bt.resetWarned=Fa;bt.noteOnce=Ua;function Ba(t){return t.replace(/[:-](.)/g,function(e,s){return s.toUpperCase()})}function Qa(t){return t.startsWith("data-")||t.startsWith("aria-")?t:Ba(t)}function qa(t,e){bt(t,"[@qfei-design/icons] ".concat(e))}function os(t){return Te(t)==="object"&&typeof t.name=="string"&&typeof t.theme=="string"&&(Te(t.icon)==="object"||typeof t.icon=="function")}function cs(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.keys(t).reduce(function(e,s){var n=t[s];return s==="class"?(e.className=n,delete e.class):(delete e[s],e[Qa(s)]=n),e},{})}function Mt(t,e,s){return s?f.createElement(t.tag,be(be({key:e},cs(t.attrs)),s),(t.children||[]).map(function(n,r){return Mt(n,"".concat(e,"-").concat(t.tag,"-").concat(r))})):f.createElement(t.tag,be({key:e},cs(t.attrs)),(t.children||[]).map(function(n,r){return Mt(n,"".concat(e,"-").concat(t.tag,"-").concat(r))}))}function Ts(t){return Ea(t)[0]}function Os(t){return t?Array.isArray(t)?t:[t]:[]}var Ka=`
|
|
3
|
+
.qfei-icon {
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
color: inherit;
|
|
7
|
+
font-style: normal;
|
|
8
|
+
line-height: 0;
|
|
9
|
+
text-align: center;
|
|
10
|
+
text-transform: none;
|
|
11
|
+
vertical-align: -0.125em;
|
|
12
|
+
text-rendering: optimizeLegibility;
|
|
13
|
+
-webkit-font-smoothing: antialiased;
|
|
14
|
+
-moz-osx-font-smoothing: grayscale;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.qfei-icon > * {
|
|
18
|
+
line-height: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.qfei-icon svg {
|
|
22
|
+
display: inline-block;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.qfei-icon::before {
|
|
26
|
+
display: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.qfei-icon .qfei-icon-icon {
|
|
30
|
+
display: block;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.qfei-icon[tabindex] {
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.qfei-icon-spin::before,
|
|
38
|
+
.qfei-icon-spin {
|
|
39
|
+
display: inline-block;
|
|
40
|
+
-webkit-animation: loadingCircle 1s infinite linear;
|
|
41
|
+
animation: loadingCircle 1s infinite linear;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@-webkit-keyframes loadingCircle {
|
|
45
|
+
100% {
|
|
46
|
+
-webkit-transform: rotate(360deg);
|
|
47
|
+
transform: rotate(360deg);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@keyframes loadingCircle {
|
|
52
|
+
100% {
|
|
53
|
+
-webkit-transform: rotate(360deg);
|
|
54
|
+
transform: rotate(360deg);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
`,Wa=function(e){var s=f.useContext(js),n=s.csp,r=s.prefixCls,i=s.layer,o=Ka;r&&(o=o.replace(/qfei-icon/g,r)),i&&(o="@layer ".concat(i,` {
|
|
58
|
+
`).concat(o,`
|
|
59
|
+
}`)),f.useEffect(function(){var u=e.current,c=Pa(u);$a(o,"@qfei-design-icons",{prepend:!i,csp:n,attachTo:c})},[])},Ga=["icon","className","onClick","style","primaryColor","secondaryColor"],nt={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};function Xa(t){var e=t.primaryColor,s=t.secondaryColor;nt.primaryColor=e,nt.secondaryColor=s||Ts(e),nt.calculated=!!s}function Ya(){return be({},nt)}var Qe=function(e){var s=e.icon,n=e.className,r=e.onClick,i=e.style,o=e.primaryColor,u=e.secondaryColor,c=Ns(e,Ga),m=S.useRef(),_=nt;if(o&&(_={primaryColor:o,secondaryColor:u||Ts(o)}),Wa(m),qa(os(s),"icon should be icon definiton, but got ".concat(s)),!os(s))return null;var y=s;return y&&typeof y.icon=="function"&&(y=be(be({},y),{},{icon:y.icon(_.primaryColor,_.secondaryColor)})),Mt(y.icon,"svg-".concat(y.name),be(be({className:n,onClick:r,style:i,"data-icon":y.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},c),{},{ref:m}))};Qe.displayName="IconReact";Qe.getTwoToneColors=Ya;Qe.setTwoToneColors=Xa;function Ls(t){var e=Os(t),s=Is(e,2),n=s[0],r=s[1];return Qe.setTwoToneColors({primaryColor:n,secondaryColor:r})}function Za(){var t=Qe.getTwoToneColors();return t.calculated?[t.primaryColor,t.secondaryColor]:t.primaryColor}var Ja=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];Ls(Et.primary);var Y=S.forwardRef(function(t,e){var s=t.className,n=t.icon,r=t.spin,i=t.rotate,o=t.tabIndex,u=t.onClick,c=t.twoToneColor,m=Ns(t,Ja),_=S.useContext(js),y=_.prefixCls,M=y===void 0?"anticon":y,H=_.rootClassName,b=ja(H,M,oe(oe({},"".concat(M,"-").concat(n.name),!!n.name),"".concat(M,"-spin"),!!r||n.name==="loading"),s),z=o;z===void 0&&u&&(z=-1);var $=i?{msTransform:"rotate(".concat(i,"deg)"),transform:"rotate(".concat(i,"deg)")}:void 0,D=Os(c),k=Is(D,2),p=k[0],l=k[1];return S.createElement("span",X({role:"img","aria-label":n.name},m,{ref:e,tabIndex:z,onClick:u,className:b}),S.createElement(Qe,{icon:n,primaryColor:p,secondaryColor:l,style:$}))});Y.displayName="AntdIcon";Y.getTwoToneColor=Za;Y.setTwoToneColor=Ls;var en={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22 11h-9V2c0-.6-.4-1-1-1s-1 .4-1 1v9H2c-.6 0-1 .4-1 1s.4 1 1 1h9v9c0 .6.4 1 1 1s1-.4 1-1v-9h9c.6 0 1-.4 1-1s-.4-1-1-1z","data-follow-fill":"#4e5969"}}]},name:"add-two__加1__tip",theme:"outlined"},tn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:en}))},yt=S.forwardRef(tn);process.env.NODE_ENV!=="production"&&(yt.displayName="QfeiIconAddTwoOutlined");var sn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22.7 4.3c-.4-.4-1-.4-1.4 0L8 17.6l-5.3-5.3c-.4-.4-1-.4-1.4 0s-.4 1 0 1.4l6 6c.2.2.4.3.7.3s.5-.1.7-.3l14-14c.4-.4.4-1 0-1.4z","data-follow-fill":"#4e5969"}}]},name:"checkmark-one__对勾0__tip",theme:"outlined"},an=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:sn}))},$s=S.forwardRef(an);process.env.NODE_ENV!=="production"&&($s.displayName="QfeiIconCheckmarkOneOutlined");var nn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M13.4 12l9.3-9.3c.4-.4.4-1 0-1.4s-1-.4-1.4 0L12 10.6 2.7 1.3c-.4-.4-1-.4-1.4 0s-.4 1 0 1.4l9.3 9.3-9.3 9.3c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3l9.3-9.3 9.3 9.3c.2.2.5.3.7.3s.5-.1.7-.3c.4-.4.4-1 0-1.4L13.4 12z","data-follow-fill":"#4e5969"}}]},name:"close-one__关闭0__tip",theme:"outlined"},rn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:nn}))},Tt=S.forwardRef(rn);process.env.NODE_ENV!=="production"&&(Tt.displayName="QfeiIconCloseOneOutlined");var on={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"g",attrs:{"data-follow-fill":"#4e5969"},children:[{tag:"path",attrs:{d:"M16.7 7.3c-.4-.4-1-.4-1.4 0L12 10.6 8.7 7.3c-.4-.4-1-.4-1.4 0s-.4 1 0 1.4l3.3 3.3-3.3 3.3c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3l3.3-3.3 3.3 3.3c.2.2.5.3.7.3s.5-.1.7-.3c.4-.4.4-1 0-1.4L13.4 12l3.3-3.3c.4-.4.4-1 0-1.4z"}},{tag:"path",attrs:{d:"M12 1C5.9 1 1 5.9 1 12s4.9 11 11 11 11-4.9 11-11S18.1 1 12 1zm0 20c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9z"}}]}]},name:"close-two__关闭1__tip",theme:"outlined"},cn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:on}))},Ot=S.forwardRef(cn);process.env.NODE_ENV!=="production"&&(Ot.displayName="QfeiIconCloseTwoOutlined");var ln={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M7.5 14H3c-.6 0-1 .4-1 1s.4 1 1 1h3.6l-5.3 5.3c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3L8 17.4v4.4c0 .6.4 1 1 1s1-.4 1-1v-5.3c0-1.4-1.1-2.5-2.5-2.5zM22 15.9c-.6 0-1 .4-1 1v3.6c0 .3-.2.5-.5.5H16c-.6 0-1 .4-1 1s.4 1 1 1h4.5c1.4 0 2.5-1.1 2.5-2.5v-3.6c0-.6-.4-1-1-1zm-20-6c.6 0 1-.4 1-1V3.5c0-.3.2-.5.5-.5H8c.6 0 1-.4 1-1s-.4-1-1-1H3.5C2.1 1 1 2.1 1 3.5v5.4c0 .5.4 1 1 1zm19.3-8.6l-5.6 5.6V4.2c0-.6-.4-1-1-1s-1 .4-1 1v3.6c0 1.4 1.1 2.5 2.5 2.5h4.5c.6 0 1-.4 1-1s-.4-1-1-1h-3.6l5.6-5.6c.4-.4.4-1 0-1.4s-1-.4-1.4 0z","data-follow-fill":"#4e5969"}}]},name:"contract__收缩__direction",theme:"outlined"},dn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:ln}))},Hs=S.forwardRef(dn);process.env.NODE_ENV!=="production"&&(Hs.displayName="QfeiIconContractOutlined");var un={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M20 1h-8.5a3 3 0 00-3 2.5h2.1c.2-.3.6-.5.9-.5H20c.5 0 1 .5 1 1v10.9c0 .5-.5 1-1 1h-2.1v2H20a3 3 0 003-3V4c0-1.7-1.3-3-3-3zm-7.1 4.5H4c-1.7 0-3 1.3-3 3V20c0 1.7 1.3 3 3 3h8.9c1.7 0 3-1.3 3-3V8.5c0-1.7-1.3-3-3-3zm1 14.5c0 .5-.4 1-1 1H4c-.5 0-1-.5-1-1V8.5c0-.5.5-1 1-1h8.9c.6 0 1 .5 1 1V20z","data-follow-fill":"#4e5969"}}]},name:"copy__复制__common",theme:"outlined"},fn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:un}))},Ps=S.forwardRef(fn);process.env.NODE_ENV!=="production"&&(Ps.displayName="QfeiIconCopyOutlined");var mn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"g",attrs:{"data-follow-fill":"#4e5969"},children:[{tag:"path",attrs:{d:"M22 4.5h-5.3v-.4c0-1.7-1.4-3.1-3.1-3.1h-3.1C8.7 1 7.3 2.4 7.3 4.1v.4H2c-.5 0-1 .4-1 1s.4 1 1 1h1.8v11.8c0 2.6 2.1 4.7 4.7 4.7h7.1c2.6 0 4.7-2.1 4.7-4.7V6.5H22c.5 0 1-.4 1-1s-.4-1-1-1zM9.3 4.1c0-.6.5-1.1 1.1-1.1h3.1c.6 0 1.2.5 1.2 1.2v.4H9.3v-.5zm9 14.2c0 1.5-1.2 2.8-2.7 2.8H8.5c-1.5 0-2.7-1.2-2.7-2.8V6.5h12.6v11.8h-.1z"}},{tag:"path",attrs:{d:"M9.4 10.8a1 1 0 00-1 1v3.9a1 1 0 002 0v-3.9c0-.5-.4-1-1-1zm5.2 0a1 1 0 00-1 1v3.9a1 1 0 002 0v-3.9c-.1-.5-.5-1-1-1z"}}]}]},name:"delete__删除__common",theme:"outlined"},hn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:mn}))},Lt=S.forwardRef(hn);process.env.NODE_ENV!=="production"&&(Lt.displayName="QfeiIconDeleteOutlined");var pn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M1.3 7.7l10 10c.4.4 1 .4 1.4 0l10-10c.4-.4.4-1 0-1.4-.2-.2-.4-.3-.7-.3s-.5.1-.7.3L12 15.6 2.7 6.3C2.5 6.1 2.3 6 2 6s-.5.1-.7.3c-.4.4-.4 1 0 1.4z","data-follow-fill":"#4e5969"}}]},name:"down__下__direction",theme:"outlined"},vn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:pn}))},zs=S.forwardRef(vn);process.env.NODE_ENV!=="production"&&(zs.displayName="QfeiIconDownOutlined");var gn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22 22.9H2c-.6 0-1-.4-1-1s.4-1 1-1h20c.6 0 1 .4 1 1s-.4 1-1 1zM20 4.4L17.6 2l-.6-.6c-.4-.4-1.1-.4-1.6 0l-.7.6-1.5 1.5L11.7 5l-5.5 5.5-1 1-2.1 2.1v5.1h5.2l8.5-8.5 1.5-1.5 1.5-1.5.7-.7a1 1 0 00.1-1.5l-.6-.6zM7.6 16.7H5.2v-2.4l1-1 6.9-6.9 2.4 2.4-7.9 7.9zM17 7.3L14.6 5l1.5-1.5 2.4 2.4L17 7.3z","data-follow-fill":"#4e5969"}}]},name:"edit__编辑__common",theme:"outlined"},_n=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:gn}))},Ds=S.forwardRef(_n);process.env.NODE_ENV!=="production"&&(Ds.displayName="QfeiIconEditOutlined");var bn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M20.5 1H16c-.6 0-1 .4-1 1s.4 1 1 1h3.6l-5.3 5.3c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3L21 4.4v4.4c0 .6.4 1 1 1s1-.4 1-1V3.5C23 2.1 21.9 1 20.5 1zM22 15.9c-.6 0-1 .4-1 1v3.6c0 .3-.2.5-.5.5H16c-.6 0-1 .4-1 1s.4 1 1 1h4.5c1.4 0 2.5-1.1 2.5-2.5v-3.6c0-.6-.4-1-1-1zm-20-6c.6 0 1-.4 1-1V3.5c0-.3.2-.5.5-.5H8c.6 0 1-.4 1-1s-.4-1-1-1H3.5C2.1 1 1 2.1 1 3.5v5.4c0 .5.4 1 1 1zM8.6 14L3 19.6v-2.7c0-.6-.4-1-1-1s-1 .4-1 1v3.6C1 21.9 2.1 23 3.5 23H8c.6 0 1-.4 1-1s-.4-1-1-1H4.4l5.6-5.6c.4-.4.4-1 0-1.4s-1-.4-1.4 0z","data-follow-fill":"#4e5969"}}]},name:"full-screen__全屏__direction",theme:"outlined"},yn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:bn}))},Vs=S.forwardRef(yn);process.env.NODE_ENV!=="production"&&(Vs.displayName="QfeiIconFullScreenOutlined");var xn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M4.29 22.99A3.3 3.3 0 011 20.11v-7.12c.31-1.79 1.7-3.1 3.29-3.1h2.08l3.72-8.3c.24-.36.57-.58.91-.58 1.05 0 2.08.45 2.83 1.23A3.73 3.73 0 0114.89 5v3.01h5.09c.88 0 1.73.39 2.27 1.04.57.57.83 1.47.72 2.47l-1.38 8.98a2.9 2.9 0 01-2.9 2.49H4.29zm3.68-11.72v9.77H18.6c.53 0 .96-.36 1.05-.87l1.38-8.97c0-.33-.09-.61-.27-.89-.16-.25-.51-.33-.77-.33h-6.02a.92.92 0 01-.93-.93V5.01a2 2 0 00-1.37-1.89l-.09-.03-3.6 8.18zm-3.68.57c-.64 0-1.26.58-1.34 1.26v6.89c.09.51.65 1.04 1.34 1.04h1.74v-9.19H4.29z"}}]},name:"like__点赞__common",theme:"outlined"},kn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:xn}))},Fs=S.forwardRef(kn);process.env.NODE_ENV!=="production"&&(Fs.displayName="QfeiIconLikeOutlined");var wn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M14 4h8c.6 0 1-.4 1-1s-.4-1-1-1h-8c-.6 0-1 .4-1 1s.4 1 1 1zm8 16h-8c-.6 0-1 .4-1 1s.4 1 1 1h8c.6 0 1-.4 1-1s-.4-1-1-1zm0-12h-8c-.6 0-1 .4-1 1s.4 1 1 1h8c.6 0 1-.4 1-1s-.4-1-1-1zm0 6h-8c-.6 0-1 .4-1 1s.4 1 1 1h8c.6 0 1-.4 1-1s-.4-1-1-1zM10 1H2c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h8c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zM9 9H3V3h6v6zm1 4H2c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h8c.6 0 1-.4 1-1v-8c0-.6-.4-1-1-1zm-1 8H3v-6h6v6z","data-follow-fill":"#4e5969"}}]},name:"list__列表__common",theme:"outlined"},jn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:wn}))},Us=S.forwardRef(jn);process.env.NODE_ENV!=="production"&&(Us.displayName="QfeiIconListOutlined");var In={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M11.4 5.3l-8 8c-.4.4-.4 1 0 1.4s1 .4 1.4 0l6.3-6.3V22c0 .6.5 1 1 1s1-.5 1-1V8.4l6.3 6.3c.4.4 1 .4 1.4 0 .2-.2.3-.5.3-.7 0-.2-.1-.5-.3-.7l-8-8c-.2-.2-.5-.4-.8-.4s-.4.2-.6.4zM23 1.9c0-.6-.4-1-1-1H2c-.6 0-1 .4-1 1s.4 1 1 1h20c.6 0 1-.4 1-1z","data-follow-fill":"#4e5969"}},{tag:"path",attrs:{d:"M7.7 12.7v-.2"}}]},name:"pin__置顶__direction",theme:"outlined"},Nn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:In}))},Bs=S.forwardRef(Nn);process.env.NODE_ENV!=="production"&&(Bs.displayName="QfeiIconPinOutlined");var Cn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M18.6 3.2A11.24 11.24 0 0012 1c-1.6 0-3.1.3-4.5 1-.6.2-1.2.6-1.8 1-1 .7-2 1.7-2.7 2.7-.4.6-.8 1.2-1 1.8-.7 1.4-1 2.9-1 4.5s.3 3.2 1 4.7c.3.6 1.1.8 1.6.3.4-.4.4-.8.2-1.2-.5-1.2-.8-2.5-.8-3.8 0-1 .2-2 .5-3A8.7 8.7 0 019 3.5c1-.3 2-.5 3-.5 1.6 0 3.1.4 4.4 1.2l-2.6 2.6c-.4.4-.4 1 0 1.4.4.4 1 .4 1.4 0L19.5 4c-.3-.3-.6-.6-.9-.8zM5.4 20.8A11.24 11.24 0 0012 23c1.6 0 3.1-.3 4.5-1 .6-.3 1.2-.6 1.8-1 1-.7 2-1.7 2.7-2.7.4-.6.7-1.2 1-1.8a11.04 11.04 0 000-9.2c-.3-.6-1.1-.8-1.6-.3-.4.4-.4.8-.2 1.2.5 1.2.8 2.5.8 3.8 0 1-.2 2-.5 3a8.7 8.7 0 01-5.5 5.5c-1 .3-2 .5-3 .5-1.6 0-3.1-.4-4.4-1.2l2.6-2.6c.4-.4.4-1 0-1.4-.4-.4-1-.4-1.4 0L4.5 20c.3.3.6.6.9.8z","data-follow-fill":"#4e5969"}}]},name:"refresh__刷新__common",theme:"outlined"},An=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:Cn}))},Qs=S.forwardRef(An);process.env.NODE_ENV!=="production"&&(Qs.displayName="QfeiIconRefreshOutlined");var En={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M19.71 1.01A3.3 3.3 0 0123 3.89v7.12c-.31 1.79-1.7 3.1-3.29 3.1h-2.08l-3.71 8.3c-.24.36-.57.58-.91.58a3.96 3.96 0 01-2.83-1.23A3.73 3.73 0 019.12 19v-3.01H4.03c-.88 0-1.73-.39-2.27-1.04a2.99 2.99 0 01-.72-2.47L2.41 3.5a2.9 2.9 0 012.9-2.49h14.4zm-3.68 11.72V2.97H5.4c-.53 0-.96.36-1.05.87l-1.38 8.97c0 .33.09.61.27.89.16.25.51.33.77.33h6.02c.46 0 .93.35.93.93V19a2 2 0 001.37 1.89l.09.03 3.6-8.18zm3.68-.57c.64 0 1.26-.58 1.34-1.26V4.01c-.09-.51-.65-1.04-1.34-1.04h-1.74v9.19h1.74z"}}]},name:"unlike__点踩__common",theme:"outlined"},Sn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:En}))},qs=S.forwardRef(Sn);process.env.NODE_ENV!=="production"&&(qs.displayName="QfeiIconUnlikeOutlined");var Rn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22.7 16.3l-10-10c-.4-.4-1-.4-1.4 0l-10 10c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3L12 8.4l9.3 9.3c.2.2.5.3.7.3s.5-.1.7-.3c.4-.4.4-1 0-1.4z","data-follow-fill":"#4e5969"}}]},name:"up__上__direction",theme:"outlined"},Mn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:Rn}))},Ks=S.forwardRef(Mn);process.env.NODE_ENV!=="production"&&(Ks.displayName="QfeiIconUpOutlined");var Tn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22.7 18.9L14.1 2.4c-.9-1.9-3.3-1.9-4.2 0L1.3 18.9c-.9 1.9.2 4.1 2.1 4.1h17.1c1.9-.1 3.1-2.4 2.2-4.1zM13 19c0 .6-.4 1-1 1s-1-.4-1-1v-.8c0-.6.4-1 1-1s1 .4 1 1v.8zm0-4c0 .6-.4 1-1 1s-1-.4-1-1V7c0-.6.4-1 1-1s1 .4 1 1v8z"}}]},name:"warning__警告__tip",theme:"outlined"},On=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:Tn}))},Ws=S.forwardRef(On);process.env.NODE_ENV!=="production"&&(Ws.displayName="QfeiIconWarningOutlined");const Fe=()=>globalThis.crypto.randomUUID(),ls=1e3,Nt=(t,e)=>t?.chatId===e.chatId&&t.revision>e.revision?t:e,Dt=t=>{const e=t,s=e?.status??e?.response?.status;return s===410||e?.code==="AI_UPLOAD_EXPIRED"?"上传已过期,请移除后重新选择文件":s===409?"数据已变化或对话仍在运行,请刷新后重试":s===401||e?.code==="AI_AUTH_REQUIRED"||e?.code==="AI_AUTH_EXPIRED"?"登录已失效,请重新登录":s===403?"当前账号无权访问该对话":s===404?"对话或回答已不可见,请刷新列表":e?.message?.startsWith("输入内容过长")?e.message:"操作未完成,请重试或刷新对话"};function Ln(t,e){const s=e.features?.conversationManagement===!0,n=s?e.scopeKey?.(t)??t.app.id:"",r=f.useRef(n);r.current=n;const i=f.useRef(n),[o,u]=f.useState(I.createAssistantConversationState),c=f.useRef(o),m=d=>{const h=typeof d=="function"?d(c.current):d;c.current=h,u(h)},[_,y]=f.useState([]),[M,H]=f.useState(),b=f.useRef(void 0),[z,$]=f.useState(""),[D,k]=f.useState(void 0),[p,l]=f.useState(!1),[x,A]=f.useState(!1),[Z,N]=f.useState(s),[q,te]=f.useState(!1),[ie,W]=f.useState(),[fe,ve]=f.useState([]),[Ae,qe]=f.useState([]),V=f.useRef(new Set),B=f.useRef(new Map),P=f.useRef(0),J=f.useRef(0),le=f.useRef(0),ye=f.useRef(void 0),me=f.useRef(void 0),Ee=f.useRef(new Map),L=(d,h=n)=>J.current===d&&r.current===h,ne=()=>{const d=new AbortController;return V.current.add(d),d},se=d=>V.current.delete(d),ae=d=>{const h=d?Nt(b.current,d):void 0;b.current=h,H(h)},Ke=d=>{y(h=>h.map(g=>g.chatId===d.chatId?Nt(g,d):g))},We=d=>{y(h=>h.filter(g=>g.chatId!==d))},rt=()=>{le.current+=1},de=()=>{for(const d of B.current.values())d.abort();B.current.clear()},K=d=>{d instanceof Error&&d.name==="AbortError"||(console.warn("[make-ai-assistant] conversation operation failed",{errorType:d instanceof Error?d.name:typeof d}),W(Dt(d)))},ue=async d=>{if(!s||!e.listConversations)return;const h=J.current,g=++le.current,w=ne();try{const C=await e.listConversations(t,{cursor:d},{signal:w.signal});if(!L(h)||w.signal.aborted||g!==le.current)return;y(T=>{const j=new Map(T.map(E=>[E.chatId,E])),R=C.chats.map(E=>Nt(j.get(E.chatId),E));return[...new Map([...d?T:[],...R].map(E=>[E.chatId,E])).values()]}),$(C.nextCursor)}catch(C){L(h)&&!w.signal.aborted&&g===le.current&&K(C)}finally{se(w),L(h)&&g===le.current&&N(!1)}},we=async d=>{if(!e.getConversation)return;const h=J.current,g=ne();try{const w=await e.getConversation(t,{chatId:d},{signal:g.signal});if(!L(h)||g.signal.aborted||w.chatId!==d)return;Ke(w),b.current?.chatId===d&&ae(w)}catch(w){L(h)&&!g.signal.aborted&&K(w)}finally{se(g)}},Se=async(d,h,g)=>{const w=J.current,C=P.current;let T;try{for await(const j of d){if(!L(w)||h.signal.aborted||C!==P.current||b.current?.chatId!==g)return;const R=I.parseAssistantEvent(j);if(R.type==="response.accepted"||R.type==="response.state"){T=R.responseId;const E=B.current.get(T);if(E&&E!==h){R.type==="response.accepted"&&m(F=>I.reduceAssistantEvent(F,R)),h.abort();return}B.current.set(T,h)}m(E=>I.reduceAssistantEvent(E,R)),R.type==="response.accepted"&&we(g),R.type==="response.terminal"&&(ve(E=>E.filter(F=>F!==R.responseId)),ue())}}catch(j){L(w)&&!h.signal.aborted&&C===P.current&&(K(j),T||m(R=>({...R,status:Object.values(R.responses??{}).some(E=>!wt.isResponseTerminal(E))?"streaming":"error"})))}finally{T&&B.current.get(T)===h&&B.current.delete(T),se(h)}},je=async(d,h,g,w)=>{if(!e.getResponse||!e.watchResponse)return;const C=new Set(d.filter(j=>j.role==="assistant"&&j.persistent).map(j=>j.responseId)),T=[...new Map(d.filter(j=>j.role==="user"&&j.responseId&&!C.has(j.responseId)).map(j=>[j.responseId,j.cursor])).entries()].slice(-20);for(const[j,R]of T){if(!L(w)||g!==P.current)return;if(B.current.has(j))continue;const E=ne();try{const F=await e.getResponse(t,{chatId:h,responseId:j},{signal:E.signal});if(!L(w)||E.signal.aborted||g!==P.current||B.current.has(j))continue;m(xe=>I.reduceAssistantEvent(xe,wt.isResponseTerminal(F)?{type:"response.snapshot",snapshot:F}:{type:"response.state",chatId:h,responseId:j,status:F.status})),F.status==="failed"||F.status==="cancelled"?m(xe=>I.reduceAssistantEvent(xe,{type:"response.terminal",chatId:h,responseId:j,status:F.status})):(B.current.set(j,E),Se(e.watchResponse(t,{chatId:h,responseId:j,historyCursor:R},{signal:E.signal}),E,h))}catch(F){L(w)&&!E.signal.aborted&&K(F)}finally{B.current.get(j)!==E&&se(E)}}},Oe=async d=>{const h=++P.current,g=J.current,w=ne();de(),W(void 0),N(!0),ve([]),me.current=void 0,ae(d),m({messages:[],status:"idle",threadId:d.chatId}),k(void 0),l(!1),A(!1);try{const[C,T]=await Promise.all([e.getConversation(t,{chatId:d.chatId},{signal:w.signal}),e.loadConversation(t,{threadId:d.chatId,cursor:void 0,signal:w.signal})]);if(!L(g)||w.signal.aborted||h!==P.current)return;if(C.chatId!==d.chatId||T.threadId!==d.chatId)throw new Error("Conversation mismatch");ae(C),m(I.createAssistantConversationState(T)),k(T.nextCursor??-1),l(T.hasMore??!1),je(T.messages,d.chatId,h,g)}catch(C){L(g)&&!w.signal.aborted&&h===P.current&&K(C)}finally{se(w),L(g)&&h===P.current&&N(!1)}},Le=async()=>{if(b.current)return b.current;if(ye.current??={requestId:Fe()},ye.current.promise)return ye.current.promise;const d=J.current,h=P.current,g=ne(),w=ye.current;return te(!0),w.promise=e.createConversation(t,{requestId:w.requestId},{signal:g.signal}).then(C=>{if(!L(d)||g.signal.aborted||h!==P.current)throw Object.assign(new Error("Stale create"),{name:"AbortError"});return ye.current=void 0,ae(C),m({messages:[],status:"idle",threadId:C.chatId}),ue(),C}).finally(()=>{se(g),w.promise=void 0,L(d)&&te(!1)}),w.promise},Ge=async()=>{if(!(q||ye.current?.promise)){P.current+=1,de(),ae(void 0),W(void 0),me.current=void 0,m(I.createAssistantConversationState()),l(!1),k(void 0);try{await Le()}catch(d){K(d)}}},Xe=async d=>{const h=ne();me.current=d,W(void 0),c.current.messages.some(g=>g.id===d.message.id)||m(g=>I.appendUserMessage(g,d.message)),await Se(e.run(d,{signal:h.signal}),h,d.threadId)},ge=async(d,h)=>{if(!(!d.trim()&&!h?.length))try{const g=await Le(),w={id:Fe(),content:d,...h?{parts:h}:{}};await Xe({threadId:g.chatId,message:w,context:t,capabilities:{artifactSchemaVersions:[],artifactKinds:[],templates:[]}})}catch(g){K(g)}},it=async()=>{const d=me.current;if(!d||d.threadId!==b.current?.chatId){b.current&&await Oe(b.current);return}const h=c.current.messages.find(g=>g.id===d.message.id);if(h?.responseId&&e.watchResponse){const g=h.responseId;if(B.current.has(g))return;const w=ne();B.current.set(g,w),W(void 0),await Se(e.watchResponse(t,{chatId:d.threadId,responseId:g,historyCursor:h.cursor},{signal:w.signal}),w,d.threadId)}else await Xe(d)},ot=async(d=c.current.activeRunId)=>{const h=b.current;if(!h||!d||!e.cancelResponse||fe.includes(d))return;const g=J.current,w=P.current,C=ne();ve(T=>[...T,d]),W(void 0);try{const T=await e.cancelResponse(t,{chatId:h.chatId,responseId:d},{signal:C.signal});if(!L(g)||w!==P.current)return;if(wt.isResponseTerminal(T))m(j=>I.reduceAssistantEvent(j,{type:"response.snapshot",snapshot:T})),ve(j=>j.filter(R=>R!==d));else if(!B.current.has(d)&&e.watchResponse){const j=ne();B.current.set(d,j),Se(e.watchResponse(t,{chatId:h.chatId,responseId:d},{signal:j.signal}),j,h.chatId)}}catch(T){L(g)&&w===P.current&&(K(T),ve(j=>j.filter(R=>R!==d)))}finally{se(C)}},ct=async(d,h=b.current)=>{if(!h||q)return!1;const g=J.current,w=ne();te(!0),W(void 0);try{const C=await e.updateConversation(t,{chatId:h.chatId,expectedRevision:h.revision,...d},{signal:w.signal});return L(g)?(rt(),Ke(C),b.current?.chatId===C.chatId&&ae(C),!0):!1}catch(C){if(L(g)){K(C);try{const T=await e.getConversation(t,{chatId:h.chatId},{signal:w.signal});L(g)&&b.current?.chatId===h.chatId&&ae(T)}catch{}ue()}return!1}finally{se(w),L(g)&&te(!1)}},lt=async(d=b.current)=>{if(!d||q)return!1;const h=J.current,g=ne();te(!0),W(void 0);try{return await e.deleteConversation(t,{chatId:d.chatId,expectedRevision:d.revision},{signal:g.signal}),L(h)?(rt(),We(d.chatId),b.current?.chatId===d.chatId&&(P.current+=1,de(),ae(void 0),m(I.createAssistantConversationState())),!0):!1}catch(w){return L(h)&&K(w),!1}finally{se(g),L(h)&&te(!1)}},dt=async(d,h,g="",w="")=>{const C=b.current;if(!C||!d.persistent||!e.setFeedback||Ae.includes(d.id))return;const T={chatId:C.chatId,messageId:d.id,rating:h,...g?{reason:g}:{},...w?{comment:w}:{}},j=Ee.current.get(d.id),{requestId:R,...E}=j??{requestId:""},F=j&&JSON.stringify(E)===JSON.stringify(T)?j:{...T,requestId:Fe()};Ee.current.set(d.id,F);const xe=J.current,Me=P.current,ut=ne();qe(he=>[...he,d.id]),W(void 0);try{const he=await e.setFeedback(t,F,{signal:ut.signal});return!L(xe)||Me!==P.current||Ee.current.get(d.id)!==F?void 0:(m(He=>({...He,messages:He.messages.map(v=>v.id===d.id&&he.revision>=(v.feedback?.revision??0)?{...v,feedback:he}:v)})),Ee.current.delete(d.id),!0)}catch(he){return L(xe)&&Me===P.current&&K(he),!1}finally{se(ut),L(xe)&&qe(he=>he.filter(He=>He!==d.id))}},$e=async()=>{if(!b.current||!p||Z)return;const d=J.current,h=P.current,g=b.current,w=ne();N(!0);try{const C=await e.loadConversation(t,{threadId:g.chatId,cursor:D,signal:w.signal});if(!L(d)||h!==P.current)return;const T=I.createAssistantConversationState(C),j=[...new Map([...c.current.messages,...T.messages].map(F=>[F.id,F])).values()];let R=0;const E=[];for(const F of j.slice(-200).reverse()){if(R+=[...F.content].length,R>1e6)break;E.unshift(F)}E.length<j.length&&A(!0),m(F=>({...F,messages:E})),k(C.nextCursor??D),l(C.hasMore??!1),je(C.messages,g.chatId,h,d)}catch(C){L(d)&&K(C)}finally{se(w),L(d)&&N(!1)}},Ye=[...new Set([..._.filter(d=>d.titlePending).map(d=>d.chatId),...M?.titlePending?[M.chatId]:[]])].sort().join("\0");f.useEffect(()=>{if(!s||!e.getConversation||!Ye)return;const d=J.current,h=ne(),g=Ye.split("\0"),w=new Set;let C;console.debug("[make-ai-assistant] watching pending conversation titles",{count:g.length});const T=async()=>{await Promise.all(g.map(async j=>{if(!w.has(j))try{const R=await e.getConversation(t,{chatId:j},{signal:h.signal});if(!L(d)||h.signal.aborted||R.chatId!==j)return;Ke(R),b.current?.chatId===j&&ae(R)}catch(R){if(!L(d)||h.signal.aborted)return;console.warn("[make-ai-assistant] title metadata refresh failed",{errorType:R instanceof Error?R.name:typeof R});const E=R?.status;E===401?(h.abort(),K(R)):(E===403||E===404)&&(w.add(j),b.current?.chatId===j&&K(R))}})),L(d)&&!h.signal.aborted&&g.some(j=>!w.has(j))&&(C=setTimeout(()=>{T()},ls))};return C=setTimeout(()=>{T()},ls),()=>{clearTimeout(C),h.abort(),se(h)}},[s,n,e,Ye]),f.useEffect(()=>(J.current+=1,i.current=n,ye.current=void 0,me.current=void 0,Ee.current.clear(),ae(void 0),y([]),$(""),m(I.createAssistantConversationState()),W(void 0),N(s),te(!1),ve([]),qe([]),s&&ue(),()=>{J.current+=1,P.current+=1;for(const d of V.current)d.abort();V.current.clear(),B.current.clear()}),[s,n,e]);const Re=i.current===n;return{enabled:s,canEdit:e.features?.conversationEditing!==!1,state:Re?o:I.createAssistantConversationState(),setState:m,chats:Re?_:[],chat:Re?M:void 0,listCursor:z,historyMore:p,historyTruncated:x,loading:!Re||Z,busy:q,error:Re?ie:void 0,cancelling:fe,feedbackBusy:Ae,refresh:ue,select:Oe,create:Ge,ensureChat:Le,send:ge,retry:it,stop:ot,update:ct,remove:lt,feedback:dt,moreHistory:$e,setError:W}}const $n=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M5 5.5h14v10H9l-4 3v-13Z"}),a.jsx("path",{d:"M8 9h8M8 12h6"})]}),Hn=({anchor:t,label:e,onDismiss:s})=>{const[n,r]=f.useState();if(f.useLayoutEffect(()=>{const o=()=>{if(!t.isConnected){s();return}const u=t.getBoundingClientRect(),c=u.top>=48?"above":"below";r({left:u.left+u.width/2,placement:c,top:c==="above"?u.top-8:u.bottom+8})};return o(),window.addEventListener("resize",o),document.addEventListener("scroll",o,!0),()=>{window.removeEventListener("resize",o),document.removeEventListener("scroll",o,!0)}},[t,s]),!n||typeof document>"u")return null;const i=t.closest(".make-ai-assistant")??document.body;return gs.createPortal(a.jsx("span",{className:"make-ai-assistant__conversation-tooltip","data-placement":n.placement,role:"tooltip",style:{left:n.left,top:n.top},children:e}),i)};function Pn({id:t,manager:e,onDismiss:s,onNewConversation:n,triggerRef:r}){const[i,o]=f.useState(),[u,c]=f.useState(""),[m,_]=f.useState(),[y,M]=f.useState(),H=f.useRef(null),b=(l,x)=>{M(A=>A?.anchor===x&&A.label===l?A:{anchor:x,label:l})},z=l=>{M(x=>x?.anchor===l?void 0:x)},$=l=>({"data-tooltip":l,onBlur:x=>z(x.currentTarget),onFocus:x=>b(l,x.currentTarget),onPointerEnter:x=>b(l,x.currentTarget),onPointerLeave:x=>z(x.currentTarget)}),D=()=>{o(void 0),c("")},k=async l=>{const x=u.trim();x&&await e.update({title:x},l)&&D()},p=async l=>{await e.remove(l)&&_(void 0)};return f.useEffect(()=>{const l=x=>{const A=x.target;A instanceof Node&&(H.current?.contains(A)||r.current?.contains(A)||s())};return document.addEventListener("pointerdown",l),()=>{document.removeEventListener("pointerdown",l)}},[s,r]),a.jsxs("div",{"aria-label":"任务列表",className:"make-ai-assistant__conversation-controls",id:t,ref:H,role:"dialog",children:[a.jsxs("div",{className:"make-ai-assistant__conversation-heading",children:[a.jsx("span",{children:"最近对话"}),a.jsx("button",{"aria-label":"刷新任务列表",className:"make-ai-assistant__conversation-refresh",disabled:e.busy,type:"button",...$("刷新"),onClick:()=>{e.refresh()},children:a.jsx(Qs,{"aria-hidden":"true",className:"make-ai-assistant__conversation-refresh-icon"})})]}),a.jsxs("nav",{"aria-label":"对话列表",className:"make-ai-assistant__conversation-list",children:[e.chats.map(l=>{const x=i===l.chatId,A=m===l.chatId,Z=l.title||"未命名对话";return a.jsxs("div",{className:"make-ai-assistant__conversation-row","data-active":e.chat?.chatId===l.chatId||void 0,"data-editing":x||A||void 0,children:[A?a.jsxs("div",{"aria-label":"确认删除对话",className:"make-ai-assistant__conversation-delete-confirmation",role:"group",children:[a.jsx(Ws,{"aria-hidden":"true",className:"make-ai-assistant__conversation-delete-confirmation-icon"}),a.jsxs("span",{className:"make-ai-assistant__conversation-delete-confirmation-message",children:["确认删除“",Z,"”?"]}),a.jsx("button",{"aria-label":`确认删除:${Z}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger make-ai-assistant__conversation-delete-confirmation-confirm",disabled:e.busy||!e.canEdit,type:"button",...$("确认删除"),onClick:()=>{p(l)},children:a.jsx(Lt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`取消删除:${Z}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-delete-confirmation-cancel",disabled:e.busy,type:"button",...$("取消"),onClick:()=>_(void 0),children:a.jsx(Tt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]}):x?a.jsx("input",{"aria-label":"对话标题",autoFocus:!0,className:"make-ai-assistant__conversation-row-title-input",disabled:e.busy,maxLength:255,value:u,onChange:N=>c(N.currentTarget.value),onKeyDown:N=>{N.nativeEvent.isComposing||(N.key==="Escape"&&(N.preventDefault(),D()),N.key==="Enter"&&(N.preventDefault(),k(l)))}}):a.jsxs("button",{"aria-pressed":e.chat?.chatId===l.chatId,className:"make-ai-assistant__conversation-row-select",type:"button",onClick:()=>{s(),e.select(l)},children:[a.jsx($n,{}),a.jsx("span",{children:Z})]}),x?a.jsxs("div",{"aria-label":"修改标题操作",className:"make-ai-assistant__conversation-row-actions",role:"group",children:[a.jsx("button",{"aria-label":"确认修改标题",className:"make-ai-assistant__conversation-row-action",disabled:e.busy||!u.trim(),type:"button",...$("保存标题"),onClick:()=>{k(l)},children:a.jsx($s,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":"取消修改标题",className:"make-ai-assistant__conversation-row-action",disabled:e.busy,type:"button",...$("取消"),onClick:D,children:a.jsx(Tt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]}):A?null:a.jsxs("div",{className:"make-ai-assistant__conversation-row-actions",children:[a.jsx("button",{"aria-label":`${l.pinned?"取消置顶":"置顶"} ${Z}`,"aria-pressed":l.pinned,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-pin",disabled:e.busy||!e.canEdit,type:"button",...$(l.pinned?"取消置顶":"置顶"),onClick:()=>{e.update({pinned:!l.pinned},l)},children:a.jsx(Bs,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`修改标题:${Z}`,className:"make-ai-assistant__conversation-row-action",disabled:e.busy||!e.canEdit,type:"button",...$("修改标题"),onClick:()=>{_(void 0),o(l.chatId),c(l.title)},children:a.jsx(Ds,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`删除:${Z}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger",disabled:e.busy,type:"button",...$("删除"),onClick:()=>{D(),_(l.chatId)},children:a.jsx(Lt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]})]},l.chatId)}),!e.loading&&!e.chats.length?a.jsx("p",{children:"暂无对话,发送消息即可新建"}):null,e.listCursor?a.jsx("button",{className:"make-ai-assistant__conversation-more",type:"button",onClick:()=>{e.refresh(e.listCursor)},children:"更多对话"}):null]}),e.chat&&(e.historyMore||e.historyTruncated||e.state.historyTruncated)?a.jsxs("div",{className:"make-ai-assistant__conversation-history-actions",children:[e.historyMore?a.jsx("button",{type:"button",disabled:e.loading,onClick:()=>{e.moreHistory()},children:"继续加载历史"}):null,e.historyTruncated||e.state.historyTruncated?a.jsx("p",{children:"当前展示有界消息窗口,可重新选择对话从头读取。"}):null]}):null,e.error?a.jsxs("div",{className:"make-ai-assistant__conversation-error",role:"alert",children:[a.jsx("span",{children:e.error}),a.jsx("button",{type:"button",onClick:()=>{e.retry()},children:"恢复对话"})]}):null,n?a.jsxs("button",{className:"make-ai-assistant__conversation-new",type:"button",onClick:n,children:[a.jsx(yt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-new-icon"}),a.jsx("span",{children:"新建对话"})]}):null,y?a.jsx(Hn,{anchor:y.anchor,label:y.label,onDismiss:()=>M(void 0)}):null]})}function zn({message:t,manager:e}){const[s,n]=f.useState(!1),[r,i]=f.useState(""),[o,u]=f.useState(""),c=e.feedbackBusy.includes(t.id);if(!t.persistent||t.role!=="assistant"||t.intermediate)return null;const m=t.feedback?.rating??"none";return a.jsxs("div",{"aria-label":"回答反馈",className:"make-ai-assistant__feedback",role:"group",children:[a.jsx("button",{type:"button","aria-label":"喜欢","aria-pressed":m==="like",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"喜欢",disabled:c,onClick:()=>{e.feedback(t,m==="like"?"none":"like")},children:a.jsx(Fs,{"aria-hidden":"true",className:"make-ai-assistant__reply-feedback-icon"})}),a.jsx("button",{type:"button","aria-label":"不喜欢","aria-pressed":m==="dislike",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"不喜欢",disabled:c,onClick:()=>{if(m==="dislike"){e.feedback(t,"none");return}i(t.feedback?.reason??""),u(t.feedback?.comment??""),n(!0)},children:a.jsx(qs,{"aria-hidden":"true",className:"make-ai-assistant__reply-feedback-icon"})}),m==="dislike"?a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",disabled:c,onClick:()=>{i(t.feedback?.reason??""),u(t.feedback?.comment??""),n(!0)},children:"修改反馈"}):null,s?a.jsxs("form",{onSubmit:_=>{_.preventDefault(),e.feedback(t,"dislike",r,o).then(y=>{y&&n(!1)})},children:[a.jsx("input",{"aria-label":"反馈原因",maxLength:128,value:r,onChange:_=>i(_.currentTarget.value),placeholder:"原因(可选)"}),a.jsx("textarea",{"aria-label":"反馈说明",maxLength:4e3,value:o,onChange:_=>u(_.currentTarget.value),placeholder:"补充说明(可选)"}),a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"submit",disabled:c,children:"提交反馈"}),a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",onClick:()=>n(!1),children:"取消"})]}):null]})}const ds=new Set(["image/png","image/jpeg","image/webp","image/gif","audio/mpeg","audio/wav","audio/ogg","audio/webm","video/mp4","video/webm","video/ogg"]);function Dn({part:t,context:e,transport:s,chatId:n}){const[r,i]=f.useState(),[o,u]=f.useState(),[c,m]=f.useState(!1),_=f.useRef([]),y=f.useRef(void 0);f.useEffect(()=>()=>{y.current?.abort(),_.current.forEach(H=>URL.revokeObjectURL(H))},[]);const M=async H=>{if(!s.readContent||c)return;const b=new AbortController;y.current=b,m(!0),u(void 0);try{const z=await s.readContent(e,{chatId:n,contentRef:t.media.contentRef},{signal:b.signal});if(b.signal.aborted)return;const $=new Blob([new Uint8Array(z).buffer],{type:H&&ds.has(t.media.contentType)?t.media.contentType:"application/octet-stream"}),D=URL.createObjectURL($);if(_.current.push(D),H)i(D);else{const k=document.createElement("a");k.href=D,k.download=t.name??"attachment",k.click()}}catch(z){b.signal.aborted||u(Dt(z))}finally{b.signal.aborted||m(!1)}};return a.jsxs("div",{className:"make-ai-assistant__attachment",children:[a.jsxs("span",{children:[t.name??"附件"," · ",t.media.sizeBytes," 字节"]}),s.readContent?a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",disabled:c,onClick:()=>{M(!1)},children:"下载附件"}),ds.has(t.media.contentType)?a.jsx("button",{type:"button",disabled:c,onClick:()=>{M(!0)},children:"预览附件"}):null]}):null,o?a.jsx("span",{role:"alert",children:o}):null,r&&t.kind==="image"?a.jsx("img",{src:r,alt:t.name??"附件图片"}):null,r&&t.kind==="audio"?a.jsx("audio",{src:r,controls:!0}):null,r&&t.kind==="video"?a.jsx("video",{src:r,controls:!0}):null]})}function Vn({message:t,context:e,transport:s,chatId:n}){return a.jsx(a.Fragment,{children:t.parts?.map((r,i)=>r.kind==="text"?null:r.kind==="unknown"?a.jsx("span",{className:"make-ai-assistant__attachment",children:r.textFallback??"此内容类型暂不支持展示"},r.id??`${t.id}:${i}`):a.jsx(Dn,{part:r,context:e,transport:s,chatId:n},r.id??`${t.id}:${i}`))})}const Gs=t=>t.type.split(";")[0].trim().toLowerCase()||"application/octet-stream",Fn=t=>t.startsWith("image/")&&t!=="image/svg+xml"?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file",Un=t=>{const e=Gs(t);if(!(!e.startsWith("image/")||e==="image/svg+xml"||typeof URL>"u"||typeof URL.createObjectURL!="function"))return URL.createObjectURL(t)},us=t=>{t&&typeof URL<"u"&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(t)},Bn=(t,e)=>new Promise((s,n)=>{const r=new FileReader,i=()=>e.removeEventListener("abort",o),o=()=>{r.abort(),i(),n(Object.assign(new Error("Read aborted"),{name:"AbortError"}))};if(e.aborted){o();return}e.addEventListener("abort",o,{once:!0}),r.onload=()=>{i(),s(new Uint8Array(r.result))},r.onerror=()=>{i(),n(new Error("无法读取文件"))},r.readAsArrayBuffer(t)});function Qn(t,e,s){const[n,r]=f.useState([]),i=f.useRef(new Map),o=f.useRef(Promise.resolve()),u=e.scopeKey?.(t)??t.app.id,c=f.useRef(u);c.current=u;const m=f.useRef(void 0),_=s.enabled&&e.features?.attachments===!0,y=(p,l)=>{!i.current.has(p.draft.id)||p.scope!==c.current||(p.draft={...p.draft,...l},r([...i.current.values()].map(x=>x.draft)))},M=()=>{for(const p of i.current.values())p.controller.abort(),us(p.draft.previewUrl);i.current.clear(),r([]),m.current=void 0,o.current=Promise.resolve()};f.useEffect(()=>(M(),M),[u,e]),f.useEffect(()=>{m.current&&s.chat?.chatId!==m.current&&M()},[s.chat?.chatId]);const H=async p=>{const l=p.controller.signal,x=()=>{if(l.aborted||p.scope!==c.current||!i.current.has(p.draft.id))throw Object.assign(new Error("Upload aborted"),{name:"AbortError"})};try{if(x(),p.file.size>64<<20)throw new Error("文件不能超过 64 MiB");const A=await s.ensureChat();x(),m.current=A.chatId;const Z=Gs(p.file);y(p,{status:"uploading",error:void 0});let N=p.draft.upload?await e.getUpload(t,{chatId:A.chatId,uploadId:p.draft.upload.id},{signal:l}):await e.startUpload(t,{chatId:A.chatId,fileId:p.draft.fileId,name:p.file.name,contentType:Z,sizeBytes:p.file.size},{signal:l});if(x(),y(p,{upload:N}),N.name!==p.file.name||N.contentType!==Z||N.sizeBytes!==p.file.size)throw new Error("上传文件身份不一致");if(N.status!=="ready"){if(N=await e.getUpload(t,{chatId:A.chatId,uploadId:N.id},{signal:l}),x(),N.status!=="uploading"||!Number.isSafeInteger(N.partSize)||N.partSize<=0||N.partSize>1<<20)throw new Error("当前上传状态无法继续,请重新选择文件");const q=new Set(N.completedParts),te=Math.ceil(p.file.size/N.partSize);for(let ie=0;ie<te;ie+=1){if(x(),!q.has(ie)){const W=await Bn(p.file.slice(ie*N.partSize,Math.min(p.file.size,(ie+1)*N.partSize)),l);x(),await e.uploadPart(t,{chatId:A.chatId,uploadId:N.id,part:ie,bytes:W},{signal:l}),x(),q.add(ie)}y(p,{progress:q.size/Math.max(te,1)})}y(p,{status:"completing"}),N=await e.completeUpload(t,{chatId:A.chatId,uploadId:N.id},{signal:l}),x()}if(N.status!=="ready"||!N.content)throw new Error("上传尚未完成");y(p,{status:"ready",progress:1,upload:N})}catch(A){y(p,{status:l.aborted?"paused":"failed",error:l.aborted?void 0:Dt(A)})}},b=p=>{if(_){if(p.length+i.current.size>32){s.setError("每条消息最多包含 32 个附件或文本片段");return}for(const l of p){const x={id:Fe(),fileId:Fe(),name:l.name,size:l.size,status:"queued",progress:0,previewUrl:Un(l)},A={draft:x,file:l,controller:new AbortController,scope:u};i.current.set(x.id,A),o.current=o.current.then(()=>H(A))}r([...i.current.values()].map(l=>l.draft))}},z=p=>{const l=i.current.get(p);!l||!["paused","failed"].includes(l.draft.status)||(l.controller=new AbortController,y(l,{status:"queued"}),o.current=o.current.then(()=>H(l)))},$=p=>{const l=i.current.get(p);l?.controller.abort(),us(l?.draft.previewUrl),i.current.delete(p),r([...i.current.values()].map(x=>x.draft))},D=p=>i.current.get(p)?.controller.abort(),k=n.flatMap(p=>{const l=p.upload;if(p.status!=="ready"||!l?.content)return[];const x=Fn(l.contentType);return[{id:p.id,kind:x,name:l.name,media:{contentRef:l.content.contentRef,contentType:l.contentType,sizeBytes:l.content.sizeBytes,digestSha256:l.content.digestSha256}}]});return{enabled:_,drafts:n,parts:k,pending:n.some(p=>p.status!=="ready"),add:b,retry:z,remove:$,pause:D,clear:M}}function qn({attachments:t,onOpenChange:e,open:s,triggerRef:n}){const r=f.useRef(null),i=f.useRef(null);f.useEffect(()=>{if(!s)return;const u=c=>{const m=c.target;m instanceof Node&&!r.current?.contains(m)&&e(!1)};return document.addEventListener("pointerdown",u),()=>{document.removeEventListener("pointerdown",u)}},[e,s]);const o=u=>{t.add(Array.from(u.files??[])),u.value="",e(!1)};return a.jsxs("div",{className:"make-ai-assistant__attachment-composer",ref:r,children:[a.jsx("button",{"aria-expanded":s,"aria-haspopup":"menu","aria-label":"添加附件",className:"make-ai-assistant__attachment-trigger",ref:n,title:"添加附件",type:"button",onClick:()=>e(!s),children:a.jsx(yt,{"aria-hidden":"true",className:"make-ai-assistant__attachment-trigger-icon"})}),s?a.jsx("div",{"aria-label":"附件选项",className:"make-ai-assistant__attachment-menu",role:"menu",children:a.jsxs("button",{role:"menuitem",type:"button",onClick:()=>i.current?.click(),children:[a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M12 15V4M7.5 8.5 12 4l4.5 4.5"}),a.jsx("path",{d:"M5 14v5h14v-5"})]}),a.jsx("span",{children:"上传文件或图片"})]})}):null,a.jsx("input",{"aria-label":"上传文件或图片",hidden:!0,multiple:!0,ref:i,type:"file",onChange:u=>o(u.currentTarget)})]})}function Kn({attachments:t,visible:e}){const[s,n]=f.useState(),r=f.useRef(null),i=f.useRef(null),o=f.useCallback(()=>{n(void 0),i.current?.focus()},[]);if(f.useEffect(()=>{if(!s)return;const c=m=>{m.key==="Escape"&&(m.preventDefault(),m.stopImmediatePropagation(),o())};return document.addEventListener("keydown",c,!0),()=>document.removeEventListener("keydown",c,!0)},[o,s]),f.useEffect(()=>{e||n(void 0)},[e]),!t.drafts.length)return null;const u=typeof document>"u"?void 0:r.current?.closest(".make-ai-assistant")??document.body;return a.jsxs("div",{"aria-label":"待发送附件",className:"make-ai-assistant__attachment-drafts",ref:r,children:[a.jsx("ul",{children:t.drafts.map(c=>a.jsxs("li",{"data-status":c.status,children:[c.previewUrl?a.jsx("button",{"aria-label":`预览附件 ${c.name}`,className:"make-ai-assistant__attachment-draft-preview-button",type:"button",onClick:m=>{i.current=m.currentTarget,n(c)},children:a.jsx("img",{alt:"",className:"make-ai-assistant__attachment-draft-preview",src:c.previewUrl})}):a.jsx("span",{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-file",children:a.jsxs("svg",{viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M6 3h8l4 4v14H6z"}),a.jsx("path",{d:"M14 3v5h5M9 13h6M9 16h6"})]})}),a.jsxs("span",{className:"make-ai-assistant__attachment-draft-details",children:[a.jsx("span",{className:"make-ai-assistant__attachment-draft-name",title:c.name,children:c.name}),a.jsx("span",{className:"make-ai-assistant__attachment-draft-status",children:c.status==="ready"?"已上传":c.status==="completing"?"校验中":c.status==="paused"?"已暂停":c.status==="failed"?"上传失败":`${Math.round(c.progress*100)}%`})]}),c.error?a.jsx("span",{role:"alert",children:c.error}):null,c.status==="failed"||c.status==="paused"?a.jsx("button",{type:"button",onClick:()=>t.retry(c.id),children:"重试上传"}):null,c.status==="uploading"?a.jsx("button",{type:"button",onClick:()=>t.pause(c.id),children:"暂停上传"}):null,a.jsx("button",{"aria-label":`移除附件 ${c.name}`,className:"make-ai-assistant__attachment-draft-remove",type:"button",onClick:()=>{s?.id===c.id&&o(),t.remove(c.id)},children:a.jsx(Ot,{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-remove-icon"})})]},c.id))}),s?.previewUrl&&u?gs.createPortal(a.jsx("div",{className:"make-ai-assistant__attachment-preview-backdrop",onPointerDown:c=>{c.target===c.currentTarget&&o()},children:a.jsxs("div",{"aria-label":`预览附件 ${s.name}`,"aria-modal":"true",className:"make-ai-assistant__attachment-preview-dialog",role:"dialog",onKeyDown:c=>{c.key==="Tab"&&c.preventDefault()},children:[a.jsx("button",{"aria-label":`关闭图片预览 ${s.name}`,autoFocus:!0,className:"make-ai-assistant__attachment-preview-close",type:"button",onClick:o,children:a.jsx(Ot,{"aria-hidden":"true",className:"make-ai-assistant__attachment-preview-close-icon"})}),a.jsx("img",{alt:s.name,src:s.previewUrl})]})}),u):null]})}const Wn=t=>`${t}-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,Gn="Make",Xn=["总结当前页面数据","找出需要关注的记录","列出我有权限查看的数据对象"],Yn=72,Zn=192,Xs=(t,e)=>e??`${t?.trim()||Gn} AI 助手`,Jn=t=>t??Xn,er=t=>typeof t=="number"&&Number.isFinite(t)&&t>0?t:void 0,tr=t=>typeof t=="number"?Number.isFinite(t)?`${t}px`:void 0:t?.trim()||void 0;class G extends Error{}const gt=(t,e)=>{if(!(typeof t!="object"||t===null))return t[e]},sr=t=>{const e=gt(t,"status");return typeof e=="number"?e:gt(gt(t,"response"),"status")},ar=t=>{const e=gt(t,"code"),s=sr(t),n=t instanceof Error?t.message:"",r=[e,n].filter(c=>typeof c=="string").join(" ").toLowerCase(),o=globalThis.navigator?.onLine===!1||/network|fetch|timeout|offline|connection|网络|连接|超时/.test(r),u=typeof s=="number"&&s>=500||/server|service|服务器|服务异常/.test(r);return o?{actionLabel:"重新连接",description:"请检查网络后再试。",kind:"network",label:"网络连接",title:"网络连接不可用"}:u?{actionLabel:"重新加载",description:"服务暂时未能响应,请稍后重试。",kind:"service",label:"服务异常",title:"服务暂时不可用"}:{actionLabel:"重新加载",description:"请稍后重试;若问题持续出现,请联系管理员。",kind:"unknown",label:"加载异常",title:"暂时无法加载对话"}},fs=t=>{try{const e=t?.return?.();if(!e)return;Promise.resolve(e).catch(s=>{console.error("[make-ai-assistant] transport iterator close failed",{errorType:s instanceof Error?s.name:typeof s})})}catch(e){console.error("[make-ai-assistant] transport iterator close failed",{errorType:e instanceof Error?e.name:typeof e})}},nr=async t=>{if(globalThis.navigator?.clipboard?.writeText){await globalThis.navigator.clipboard.writeText(t);return}if(typeof document>"u"||!document.body)throw new Error("Clipboard API is unavailable");const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="fixed",e.style.inset="0 auto auto 0",e.style.opacity="0",document.body.append(e),e.select();const s=document.execCommand("copy");if(e.remove(),!s)throw new Error("Clipboard copy failed")},Ys=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M12 2.8c.5 4.4 2.8 6.8 7.2 7.2-4.4.5-6.8 2.8-7.2 7.2-.5-4.4-2.8-6.8-7.2-7.2 4.4-.5 6.8-2.8 7.2-7.2Z"}),a.jsx("path",{d:"M18.3 16.1c.2 1.8 1.2 2.8 3 3-1.8.2-2.8 1.2-3 3-.2-1.8-1.2-2.8-3-3 1.8-.2 2.8-1.2 3-3Z"})]}),rr=()=>a.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:a.jsx("path",{d:"m6 6 12 12M18 6 6 18"})}),ir=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),a.jsx("path",{d:"M4 4v4h4"}),a.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),a.jsx("path",{d:"M20 20v-4h-4"})]}),or=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M12 4v11"}),a.jsx("path",{d:"m7 10 5 5 5-5"}),a.jsx("path",{d:"M5 20h14"})]}),ms=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"m4 4 17 8-17 8 3-8-3-8Z"}),a.jsx("path",{d:"M7 12h14"})]}),Zs=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),a.jsx("path",{d:"M4 4v4h4"}),a.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),a.jsx("path",{d:"M20 20v-4h-4"})]}),cr=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("circle",{cx:"12",cy:"12",r:"8"}),a.jsx("path",{d:"M12 8v4.5"}),a.jsx("path",{d:"M12 16h.01"})]}),_t=({className:t=""})=>a.jsx("span",{className:`make-ai-assistant__avatar ${t}`.trim(),"aria-hidden":"true",children:a.jsx(Ys,{})}),lr=({src:t})=>t?a.jsx("span",{className:"make-ai-assistant__user-avatar","aria-hidden":"true",children:a.jsx("img",{alt:"",src:t})}):null,dr=({userAvatarUrl:t,userName:e})=>{const s=e?.trim();return!s&&!t?null:a.jsxs("div",{className:"make-ai-assistant__message-identity",children:[s?a.jsx("span",{className:"make-ai-assistant__message-sender",children:s}):null,a.jsx(lr,{src:t})]})},Ct=t=>{const e=t.trim();if(!(!e.startsWith("|")||!e.endsWith("|")))return e.slice(1,-1).split("|").map(s=>s.trim())},ur=t=>t.length>0&&t.every(e=>/^:?-{3,}:?$/.test(e)),fr=(t,e)=>{const s=Ct(t[e]??""),n=Ct(t[e+1]??"");if(!s||!n||s.length!==n.length||!ur(n))return;const r=[];let i=e+2;for(;i<t.length;){const o=Ct(t[i]??"");if(!o||o.length!==s.length)break;r.push(o),i+=1}return{headers:s,lastIndex:i-1,rows:r}},mr=t=>{const e=[],s=[],n=[],r=[],i=t.replace(/\r\n?/g,`
|
|
2
60
|
`).split(`
|
|
3
|
-
`),
|
|
4
|
-
`).trim();
|
|
5
|
-
`).trim();o.length=0,p&&s.push({type:"pre",text:p})};for(let p=0;p<l.length;p+=1){const C=l[p]??"",S=C.trim();if(!S){d(),h(),y();continue}const R=Vs(l,p);if(R){d(),h(),y(),s.push({headers:R.headers,rows:R.rows,type:"table"}),p=R.lastIndex;continue}const V=/^(#{1,6})\s+(.+)$/.exec(S);if(V){d(),h(),y();const D=(V[2]??"").replace(/\s+#+\s*$/,"").trim();D&&s.push({type:"heading",level:V[1]?.length,text:D});continue}if(/^\s*\|.+\|\s*$/.test(C)){d(),h(),o.push(C.trim());continue}const A=/^\s*[-*]\s+(.+)$/.exec(C);if(A){d(),y(),i.push(A[1]?.trim()??"");continue}h(),y(),a.push(S)}return d(),h(),y(),s},Ke=t=>{const s=[],a=/(\*\*[^*]+\*\*|`[^`]+`)/g;let i=0;for(const o of t.matchAll(a)){const l=o[0],d=o.index??0;d>i&&s.push(t.slice(i,d)),l.startsWith("**")?s.push(e.jsx("strong",{children:l.slice(2,-2)},`${d}-strong`)):s.push(e.jsx("code",{children:l.slice(1,-1)},`${d}-code`)),i=d+l.length}return i<t.length&&s.push(t.slice(i)),s},Nt=({content:t})=>{const s=qs(t);return s.length?e.jsx("div",{className:"make-ai-assistant__bubble make-ai-assistant__assistant-text",children:s.map((a,i)=>{if(a.type==="heading"){const o=a.level<=2?"h3":"h4";return e.jsx(o,{className:`make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${a.level}`,children:Ke(a.text)},`${i}-heading`)}return a.type==="paragraph"?e.jsx("p",{children:Ke(a.text)},`${i}-paragraph`):a.type==="pre"?e.jsx("pre",{children:e.jsx("code",{children:a.text})},`${i}-pre`):a.type==="table"?e.jsx("div",{"aria-label":"表格内容,可横向滚动",className:"make-ai-assistant__markdown-table-scroll",role:"region",tabIndex:0,children:e.jsxs("table",{className:"make-ai-assistant__markdown-table",children:[e.jsx("thead",{children:e.jsx("tr",{children:a.headers.map((o,l)=>e.jsx("th",{scope:"col",children:Ke(o)},`${l}-${o}`))})}),e.jsx("tbody",{children:a.rows.map((o,l)=>e.jsx("tr",{children:o.map((d,h)=>e.jsx("td",{children:Ke(d)},`${h}-${d}`))},`${l}-${o.join("|")}`))})]})},`${i}-table`):e.jsx("ul",{children:a.items.map((o,l)=>e.jsx("li",{children:Ke(o)},`${l}-${o}`))},`${i}-list`)})}):null},Kt=({assistantName:t})=>e.jsxs("div",{className:"make-ai-assistant__message-identity",children:[e.jsx(st,{className:"make-ai-assistant__avatar--message"}),e.jsx("span",{className:"make-ai-assistant__message-sender",children:t})]}),Wt=t=>{for(let s=t.messages.length-1;s>=0;s-=1){const a=t.messages[s];if(a.role==="assistant"&&a.status==="streaming")return a.id}},Hs=t=>{for(let s=t.messages.length-1;s>=0;s-=1)if(t.messages[s].role==="user")return s;return-1},Vt=t=>{const s=Hs(t);if(!(s<0))for(let a=t.messages.length-1;a>s;a-=1){const i=t.messages[a];if(i.role==="assistant")return i.id}},Zs=t=>{if(t.status==="idle")for(let s=t.messages.length-1;s>=0;s-=1){const a=t.messages[s];if(a.role==="assistant"&&a.status==="complete")return a.id}},Xs=t=>{for(let s=t.messages.length-1;s>=0;s-=1){const a=t.messages[s];if(a.role==="user")return a}},Gs=(t,s)=>{const a=t.messages.findIndex(i=>i.id===s&&i.role==="user");return{...t,error:void 0,progress:void 0,status:"streaming",messages:a<0?t.messages:t.messages.slice(0,a+1)}},Ys=t=>t.scrollHeight-t.scrollTop-t.clientHeight<=48,Tt=(t="smooth")=>globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":t,lt=(t,s)=>{typeof t.scrollTo=="function"?t.scrollTo({top:t.scrollHeight,behavior:s}):t.scrollTop=t.scrollHeight},qt=({error:t,onRetry:s})=>e.jsxs("div",{className:"make-ai-assistant__message-status make-ai-assistant__message-status--error","data-error-presentation":"request-failed",role:"alert",children:[e.jsxs("div",{className:"make-ai-assistant__message-status-header",children:[e.jsx("span",{className:"make-ai-assistant__message-status-icon","aria-hidden":"true",children:e.jsx(Bs,{})}),e.jsx("strong",{children:"请求未完成"})]}),e.jsx("span",{className:"make-ai-assistant__message-status-message",children:t.message}),t.retryable&&s?e.jsxs("button",{className:"make-ai-assistant__retry",type:"button",onClick:s,children:[e.jsx(zt,{}),"重新发送"]}):null]}),Js=({error:t,onRetry:s})=>{const a=Cs(t);return e.jsxs("section",{"aria-live":"assertive",className:"make-ai-assistant__load-failure","data-load-failure-kind":a.kind,role:"alert",children:[e.jsx("span",{className:"make-ai-assistant__load-failure-icon","aria-hidden":"true",children:e.jsxs("svg",{viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M5 12a7 7 0 0 1 13.4-2.8A4.5 4.5 0 0 1 18 18H7.5A4.5 4.5 0 0 1 5 12Z"}),e.jsx("path",{d:"m9.2 14.8 5.6-5.6M9.2 9.2l5.6 5.6"})]})}),e.jsxs("div",{className:"make-ai-assistant__load-failure-copy",children:[e.jsx("span",{className:"make-ai-assistant__load-failure-label",children:a.label}),e.jsx("h3",{children:a.title}),e.jsx("p",{children:a.description})]}),e.jsxs("button",{className:"make-ai-assistant__retry make-ai-assistant__retry--primary",type:"button",onClick:s,children:[e.jsx(zt,{}),a.actionLabel]})]})},Ht=({active:t,steps:s})=>{const[a,i]=c.useState(!1);if(!t||!s?.length)return null;const o=s[s.length-1]??"处理中";return e.jsxs("details",{className:"make-ai-assistant__process",open:a,onToggle:l=>i(l.currentTarget.open),children:[e.jsxs("summary",{"aria-label":`查看处理过程,共 ${s.length} 步`,children:[e.jsxs("span",{className:"make-ai-assistant__process-summary",children:[e.jsx("span",{className:"make-ai-assistant__process-indicator","aria-hidden":"true"}),e.jsxs("span",{className:"make-ai-assistant__process-copy",children:[e.jsx("span",{className:"make-ai-assistant__process-title",children:"处理过程"}),e.jsx("span",{className:"make-ai-assistant__progress make-ai-assistant__process-latest",role:"status",children:o})]})]}),e.jsxs("span",{className:"make-ai-assistant__process-count",children:[s.length," 步"]})]}),e.jsx("ol",{children:s.map((l,d)=>e.jsxs("li",{"data-step-active":d===s.length-1?!0:void 0,children:[e.jsx("span",{"aria-hidden":"true"}),e.jsx("span",{children:l})]},`${d}-${l}`))})]})},Qs=({copyFeedback:t,feedback:s,onCopy:a,onRegenerate:i})=>!s&&!a&&!i?null:e.jsxs("div",{className:"make-ai-assistant__reply-actions","aria-label":"回复操作",children:[a?e.jsx("button",{"aria-label":"复制回答",className:"make-ai-assistant__reply-action make-ai-assistant__reply-copy","data-tooltip":"复制",type:"button",onClick:a,children:e.jsx($s,{})}):null,s,i?e.jsx("button",{"aria-label":"重新生成",className:"make-ai-assistant__reply-action make-ai-assistant__reply-regenerate","data-tooltip":"重新生成",type:"button",onClick:i,children:e.jsx(Ds,{})}):null,t?e.jsx("span",{className:"make-ai-assistant__reply-feedback","data-copy-status":t.status,role:"status",children:t.message}):null]}),St=({assistantName:t,error:s,onRetry:a,progress:i})=>{const o=s?"error":"progress";return s?.message??i?.message?e.jsx("article",{"aria-label":`${t}的${o==="error"?"错误消息":"状态消息"}`,className:`make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${o}`,"data-message-role":"assistant","data-message-state":o,children:e.jsxs("div",{className:"make-ai-assistant__message-turn",children:[e.jsx(Kt,{assistantName:t}),e.jsx("div",{className:"make-ai-assistant__message-stack",children:s?e.jsx(qt,{error:s,onRetry:a}):e.jsx(Ht,{active:!0,steps:i?.steps})})]})}):null},ea=(t,s,a,i,o,l,d,h,y,p,C,S,R,V,A,D)=>{const g=Vt(t),N=Wt(t),F=Zs(t);let f;return t.messages.map(n=>{if(n.intermediate)return e.jsxs("details",{className:"make-ai-assistant__process",children:[e.jsx("summary",{children:"处理过程"}),e.jsx(Nt,{content:n.content})]},n.id);const v=n.role==="assistant",_=f;v||(f=n);const K=n.id===N,I=n.id===g?t.error:void 0,X=n.error??I,G=!v&&!!(y?.trim()||p),U=v?d:y?.trim()||"用户",J=v&&n.status==="complete"&&!X&&(n.content.trim()||n.id===F),me=!!(A&&D?.features?.feedback&&v&&n.persistent),re=J||me;return e.jsx("article",{"aria-label":`${U}的消息`,className:`make-ai-assistant__message make-ai-assistant__message--${n.role}`,"data-message-role":n.role,"data-message-state":X?"error":void 0,"data-message-status":n.status,"data-message-has-identity":v||G?!0:void 0,children:e.jsxs("div",{className:"make-ai-assistant__message-turn",children:[v?e.jsx(Kt,{assistantName:d}):G?e.jsx(Ks,{userAvatarUrl:p,userName:y}):null,e.jsxs("div",{className:"make-ai-assistant__message-stack",children:[v&&n.responseId&&t.responses?.[n.responseId]?.status==="cancelled"?e.jsx("p",{className:"make-ai-assistant__response-status",role:"status",children:"已停止生成"}):null,n.content?v?e.jsx(Nt,{content:n.content}):e.jsx("div",{className:"make-ai-assistant__bubble",children:n.content}):n.status==="streaming"?e.jsxs("div",{className:"make-ai-assistant__typing","aria-label":`${d}正在思考`,children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}):null,v?e.jsx(Ht,{active:K&&t.status==="streaming",steps:n.progressSteps}):null,X?e.jsx(qt,{error:X,onRetry:I?h:void 0}):null,n.artifacts.map(O=>e.jsx(Et,{artifact:O,context:s,onAction:o,onActionError:l,registry:a,theme:i},O.id)),A&&D&&t.threadId?e.jsx(ps,{message:n,context:s,transport:D,chatId:t.threadId}):null,re?e.jsx(Qs,{copyFeedback:C?.messageId===n.id?{message:C.message,status:C.status}:void 0,onCopy:n.content.trim()?()=>R(n.id,n.content):void 0,feedback:A&&me?e.jsx(hs,{message:n,manager:A}):void 0,onRegenerate:S&&n.id===F&&_?()=>V({userMessage:_,assistantMessage:n}):void 0}):null]})]})},`${t.threadId??"local"}:${n.id}`)})};function Zt({assistantName:t="AI 助手",brandName:s,context:a,onAction:i,onActionError:o,onClose:l,onNewConversation:d,headerHeight:h,registry:y,suggestions:p,title:C,theme:S,transport:R,userAvatarUrl:V,userName:A,visible:D}){const g=ns(a,R),N=ys(a,R,g),F=Ut(s,C),f=Ts(h),n=dt(S),v=n||f?{...n,...f?{"--make-ai-internal-header-height":f}:{}}:void 0,[_,K]=c.useState(""),[I,X]=c.useState(!1),[G,U]=c.useState(!1),J=g.enabled?R.scopeKey?.(a)??a.app.id:"";c.useLayoutEffect(()=>{g.enabled&&K("")},[J,g.enabled]);const[me,re]=c.useState(b.createAssistantConversationState),O=g.enabled?g.state:me,ae=g.enabled?g.setState:re,ie=c.useRef(O);ie.current=O;const[q,$]=c.useState(void 0),[w,P]=c.useState(void 0),[te,he]=c.useState(0),[we,E]=c.useState(()=>R.loadConversation?"loading":"ready"),Q=g.enabled?g.loading&&!O.messages.length?"loading":"ready":we,[oe,ce]=c.useState(void 0),[at,fe]=c.useState(!1),xe=c.useRef(void 0),pe=c.useRef(void 0),ee=c.useRef(0),_e=c.useRef(null),ve=c.useRef(null),Oe=c.useRef(null),Fe=c.useRef(null),Ae=c.useRef(null),We=c.useRef(null),le=c.useRef(!0),Ve=c.useRef(a.app.id),qe=c.useRef(D),He=c.useId(),Ze=c.useMemo(()=>y??Ot(),[y]),Xe=c.useMemo(()=>ws(p),[p]),Ne=m=>{const W=xe.current,Z=pe.current?.iterator;return!W&&!Z?!1:(ee.current+=1,xe.current=void 0,pe.current=void 0,console.info("[make-ai-assistant] local run cancellation requested",{reason:m}),W?.abort(),Mt(Z),!0)};c.useEffect(()=>()=>{Ne("unmount")},[]),c.useEffect(()=>{if(g.enabled)return;const m=R.loadConversation,W=Ve.current!==a.app.id;if(Ve.current=a.app.id,Ne("reinitialize"),W&&(K(""),le.current=!0),$(void 0),P(void 0),fe(!1),ae(b.createAssistantConversationState()),!m){ce(void 0),E("ready");return}const Z=new AbortController;return ce(void 0),E("loading"),console.info("[make-ai-assistant] conversation load start",{appId:a.app.id}),m.call(R,a,{signal:Z.signal}).then(se=>{Z.signal.aborted||(ae(b.createAssistantConversationState(se)),E("ready"),console.info("[make-ai-assistant] conversation load success",{appId:a.app.id,messageCount:se.messages.length}))}).catch(se=>{Z.signal.aborted||(console.error("[make-ai-assistant] conversation load failed",{appId:a.app.id,errorType:se instanceof Error?se.name:typeof se}),ce(se),E("error"))}),()=>Z.abort()},[a.app.id,te,R,g.enabled]),c.useEffect(()=>{const m=ve.current;if(!m||!le.current)return;fe(!1);const W=requestAnimationFrame(()=>{if(!le.current)return;const Z=O.status==="streaming"||globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";lt(m,Z)});return()=>cancelAnimationFrame(W)},[O.messages,O.progress,O.status]),c.useEffect(()=>{D||(X(!1),U(!1))},[D]),c.useEffect(()=>{const m=D&&!qe.current;if(qe.current=D,!m)return;const W=requestAnimationFrame(()=>{const Z=ve.current;if(Z&&le.current){fe(!1);const Ue=ie.current.status==="streaming"?"auto":Tt();lt(Z,Ue)}else Z&&fe(ie.current.messages.length>0);const se=Oe.current;(se&&!se.disabled?se:We.current??_e.current?.querySelector("button:not(:disabled)"))?.focus()});return()=>cancelAnimationFrame(W)},[D]);const nt=()=>{const m=ve.current;if(!m)return;const W=Ys(m);le.current=W,fe(!W&&ie.current.messages.length>0)},Me=()=>{const m=ve.current;if(!m)return;le.current=!0,fe(!1);const W=Tt();lt(m,W)},r=async(m,W)=>{const Z=m.trim(),se=ie.current,be=W?.regenerateFrom,Ue=R.regenerate;if(!Z||Q!=="ready"||se.status==="streaming"||xe.current||be&&!Ue)return;if(b.countCodePointsUpTo(Z,b.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)>b.MAKE_AI_CONVERSATION_LIMITS.messageCharacters){$(`输入内容过长,请控制在 ${b.MAKE_AI_CONVERSATION_LIMITS.messageCharacters} 个字符以内`);return}const Ye={id:be?.userMessage.id??js("user"),content:Z},Je=be?Gs(se,be.userMessage.id):b.appendUserMessage(se,Ye),Qe=new AbortController,Se=ee.current+1;ee.current=Se,xe.current=Qe,$(void 0),P(void 0),fe(!le.current&&se.messages.length>0),be||K(""),ae(Je);try{let je=!1,ne,mt=0,ht=0,ft=0,rt=0,Pe=0;const Be=new Map,pt=new Set,vt=new Set([...Je.messages.map(et=>et.id),Ye.id]),ze=new Set,gt=Ie.createArtifactCapabilities(Ze),xt={signal:Qe.signal};let it;if(be){if(!Ue)throw new Y("当前 AI 助手不支持重新生成");it=Ue({threadId:Je.threadId,message:Ye,assistantMessage:{id:be.assistantMessage.id,content:be.assistantMessage.content},context:a,capabilities:gt},xt)}else it=R.run({threadId:Je.threadId,message:Ye,context:a,capabilities:gt},xt);const yt=it[Symbol.asyncIterator]();for(pe.current={iterator:yt,requestVersion:Se};;){const et=await yt.next();if(ee.current!==Se||et.done)break;let T;try{T=b.parseAssistantEvent(et.value)}catch(ue){throw new Y(ue instanceof Error?ue.message:"Invalid assistant event")}if(T.type==="message.start"){if(ne!==void 0&&ne!==T.runId)throw new Y("AI 助手响应 run id 不一致");if(ne??=T.runId,ht+=1,ht>b.MAKE_AI_CONVERSATION_LIMITS.assistantMessagesPerRun)throw new Y("AI 助手单次响应消息数量超过限制");if(vt.has(T.messageId))throw new Y("AI 助手响应包含重复的 message id");vt.add(T.messageId),ze.add(T.messageId),Be.set(T.messageId,0)}if(T.type==="message.delta"){if(!ze.has(T.messageId))throw new Y("AI 助手响应事件顺序无效");const ue=Be.get(T.messageId)??0,Ce=b.countCodePointsUpTo(T.delta,b.MAKE_AI_CONVERSATION_LIMITS.messageCharacters-Pe);if(Pe+Ce>b.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new Y("AI 助手响应文本超过大小限制");Pe+=Ce,Be.set(T.messageId,ue+Ce)}if(T.type==="message.replace"){if(!ze.has(T.messageId))throw new Y("AI 助手响应事件顺序无效");const ue=Be.get(T.messageId)??0,Ce=b.countCodePointsUpTo(T.content,b.MAKE_AI_CONVERSATION_LIMITS.messageCharacters),bt=Pe-ue+Ce;if(bt>b.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new Y("AI 助手响应文本超过大小限制");Pe=bt,Be.set(T.messageId,Ce)}if(T.type==="run.progress"){if(ne!==void 0&&ne!==T.runId)throw new Y("AI 助手响应 run id 不一致");if(ne??=T.runId,ft+=1,ft>b.MAKE_AI_CONVERSATION_LIMITS.progressStepsPerRun)throw new Y("AI 助手处理过程数量超过限制");const ue=b.countCodePointsUpTo(T.message,b.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun-rt);if(rt+ue>b.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun)throw new Y("AI 助手处理过程文本超过大小限制");rt+=ue}if(T.type==="artifact"){if(!ze.has(T.messageId))throw new Y("AI 助手响应事件顺序无效");if(mt+=1,mt>b.MAKE_AI_CONVERSATION_LIMITS.artifactsPerRun)throw new Y("AI 助手单次响应 Artifact 数量超过限制");if(pt.has(T.artifact.id))throw new Y("AI 助手响应包含重复的 Artifact id");pt.add(T.artifact.id)}if(T.type==="message.complete"&&!ze.delete(T.messageId))throw new Y("AI 助手响应事件顺序无效");if(T.type==="run.complete"&&ne!==void 0&&ne!==T.runId)throw new Y("AI 助手响应 run id 不一致");if(T.type==="run.cancelled"&&T.runId!==void 0&&ne!==void 0&&ne!==T.runId)throw new Y("AI 助手响应 run id 不一致");if(ae(ue=>b.reduceAssistantEvent(ue,T)),T.type==="error"||T.type==="run.cancelled"||T.type==="run.complete"){je=!0;break}}if(!je)throw new Y("AI 助手流式响应在终止事件前结束")}catch(je){if(ee.current!==Se)return;if(Qe.signal.aborted){ae(ne=>b.reduceAssistantEvent(ne,{type:"run.cancelled"}));return}console.error("[make-ai-assistant] assistant run failed",{appId:a.app.id,errorType:je instanceof Error?je.name:typeof je}),ae(ne=>b.reduceAssistantEvent(ne,{type:"error",code:"TRANSPORT_ERROR",message:je instanceof Y?je.message:"连接失败,请重试",retryable:!0}))}finally{ee.current===Se&&xe.current===Qe&&(xe.current=void 0),pe.current?.requestVersion===Se&&(Mt(pe.current.iterator),pe.current=void 0)}},u=m=>{if(g.enabled){if(N.pending)return $("请等待附件上传完成,或移除失败的附件"),Promise.resolve();const W=m.trim(),Z=N.parts.length?[...W?[{id:Le(),kind:"text",text:W}]:[],...N.parts]:void 0;return K(""),N.clear(),g.send(W,Z)}return r(m)},x=m=>r(m.userMessage.content,{regenerateFrom:m}),k=async(m,W)=>{try{await Es(W),P({messageId:m,message:"已复制",status:"success"})}catch(Z){console.error("[make-ai-assistant] copy answer failed",{errorType:Z instanceof Error?Z.name:typeof Z}),P({messageId:m,message:"复制失败",status:"error"})}},M=m=>{m.preventDefault(),u(_)},L=m=>{m.key==="Enter"&&!m.shiftKey&&!m.nativeEvent.isComposing&&(m.preventDefault(),u(_))},j=()=>{if(g.enabled){g.stop();return}Ne("stop")&&ae(m=>b.reduceAssistantEvent(m,{type:"run.cancelled"}))},H=()=>{if(U(!1),g.enabled){K(""),g.create(),d?.();return}Ne("new-conversation"),K(""),$(void 0),P(void 0),fe(!1),le.current=!0,ae(b.createAssistantConversationState()),d?.()},B=g.enabled&&g.cancelling.length?"停止中":R.features?.remoteCancellation===!1?"停止接收":"停止生成",z=Wt(O),ye=Vt(O),Re=Xs(O),Ge=typeof R.regenerate=="function"&&R.features?.regeneration!==!1,de=()=>{if(g.enabled){g.retry();return}Re&&u(Re.content)},Te=m=>{if(m.key==="Escape"&&!(!I&&!G)){if(m.preventDefault(),m.stopPropagation(),I){X(!1),Fe.current?.focus();return}U(!1),Ae.current?.focus()}};return e.jsxs("section",{className:`make-ai-assistant make-ai-assistant__panel${g.enabled?" make-ai-assistant__panel--managed":""}`,ref:_e,style:v,onKeyDown:Te,onDragOver:m=>{N.enabled&&m.dataTransfer.types.includes("Files")&&m.preventDefault()},onDrop:m=>{N.enabled&&m.dataTransfer.files.length&&(m.preventDefault(),N.add(Array.from(m.dataTransfer.files)))},children:[e.jsxs("header",{className:"make-ai-assistant__header",children:[e.jsx("div",{className:"make-ai-assistant__header-leading",children:g.enabled?e.jsxs("button",{"aria-controls":He,"aria-expanded":G,"aria-haspopup":"dialog","aria-label":"任务列表",className:"make-ai-assistant__task-list-trigger",ref:Ae,type:"button",onClick:()=>U(m=>!m),children:[e.jsx(Us,{}),e.jsx("span",{children:"任务列表"}),e.jsx(Ps,{})]}):null}),e.jsxs("div",{className:"make-ai-assistant__header-center",children:[e.jsx(st,{}),e.jsx("h2",{className:"make-ai-assistant__header-title",title:F,children:F})]}),e.jsxs("div",{className:"make-ai-assistant__header-actions",children:[R.features?.newConversation!==!1?e.jsx("button",{"aria-label":"新建对话",className:"make-ai-assistant__icon-button",type:"button",onClick:H,children:e.jsx(Fs,{})}):null,l?e.jsx("button",{"aria-label":`关闭 ${F}`,className:"make-ai-assistant__icon-button",type:"button",onClick:l,children:e.jsx(Ls,{})}):null]})]}),g.enabled&&G?e.jsx(ms,{id:He,manager:g,triggerRef:Ae,onDismiss:()=>U(!1),onNewConversation:R.features?.newConversation!==!1?H:void 0}):null,e.jsxs("div",{className:"make-ai-assistant__body","aria-live":"polite","aria-relevant":"additions text",ref:ve,role:"log",onScroll:nt,children:[Q==="loading"?e.jsxs("div",{className:"make-ai-assistant__empty",role:"status",children:[e.jsx(st,{}),e.jsx("h3",{children:"正在恢复对话"}),e.jsx("p",{children:"正在读取当前 App 的历史消息…"})]}):Q==="error"?e.jsx("div",{className:"make-ai-assistant__empty",children:e.jsx(Js,{error:oe,onRetry:()=>he(m=>m+1)})}):O.messages.length===0?e.jsxs("div",{className:"make-ai-assistant__empty",children:[e.jsx(st,{}),e.jsx("h3",{children:"有什么可以帮你?"}),e.jsx("p",{children:"我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。"})]}):ea(O,a,Ze,S,i,o,t,Re?de:void 0,A,V,w,Ge,(m,W)=>{k(m,W)},m=>{x(m)},g.enabled?g:void 0,R),O.progress&&!z?e.jsx(St,{assistantName:t,progress:O.progress}):null,O.error&&!ye?e.jsx(St,{assistantName:t,error:O.error,onRetry:Re?de:void 0}):null]}),at?e.jsx("button",{"aria-label":"回到最新消息",className:"make-ai-assistant__back-to-latest",type:"button",onClick:Me,children:e.jsx(Os,{})}):null,e.jsxs("footer",{className:"make-ai-assistant__composer-region",children:[N.enabled?e.jsx(_s,{attachments:N}):null,Q==="ready"&&Xe.length>0&&O.messages.length===0?e.jsx("div",{className:"make-ai-assistant__suggestions","aria-label":"推荐问题",children:Xe.map((m,W)=>e.jsx("button",{type:"button",onClick:()=>{u(m)},children:m},`${W}-${m}`))}):null,e.jsxs("form",{className:"make-ai-assistant__composer",onSubmit:M,children:[e.jsx("textarea",{"aria-label":`向 ${t} 提问`,"aria-describedby":q?"make-ai-composer-error":void 0,"aria-invalid":q?!0:void 0,autoFocus:!0,disabled:Q!=="ready"||!g.enabled&&O.status==="streaming",placeholder:`询问当前 ${a.app.name??"App"} 中的数据…`,ref:Oe,rows:2,value:_,onChange:m=>{K(m.currentTarget.value),$(void 0)},onKeyDown:L,onPaste:m=>{N.enabled&&m.clipboardData.files.length&&(m.preventDefault(),N.add(Array.from(m.clipboardData.files)))}}),N.enabled?e.jsx(bs,{attachments:N,open:I,triggerRef:Fe,onOpenChange:X}):null,e.jsxs("div",{className:"make-ai-assistant__composer-actions",children:[O.status==="streaming"?e.jsx("button",{"aria-label":B,className:"make-ai-assistant__send make-ai-assistant__send--stop","data-tooltip":B,ref:We,disabled:g.enabled&&g.cancelling.includes(O.activeRunId??""),type:"button",onClick:j,children:e.jsx("span",{"aria-hidden":"true"})}):e.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:Q!=="ready"||N.pending||!_.trim()&&!N.parts.length,type:"submit",children:e.jsx(Rt,{})}),g.enabled&&O.status==="streaming"?e.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:g.busy||N.pending||!_.trim()&&!N.parts.length,type:"submit",children:e.jsx(Rt,{})}):null]})]}),q?e.jsx("p",{id:"make-ai-composer-error",role:"alert",children:q}):null,e.jsx("p",{children:"AI 生成的结果可能存在偏差,重要数据请核对明细。"})]})]})}function ta(t){return e.jsx(Zt,{...t,visible:!0})}function sa({defaultOpen:t=!1,hideLauncher:s=!1,launcher:a,launcherPosition:i="bottom-right",maxDrawerWidth:o,onOpenChange:l,open:d,...h}){const y=Ut(h.brandName,h.title),[p,C]=c.useState(t),[S,R]=c.useState(()=>t||d===!0),V=c.useRef(null),A=c.useRef(null),D=c.useRef(void 0),[g,N]=c.useState(),[F,f]=c.useState(As),[n,v]=c.useState(!1),_=d??p,K=dt(h.theme),I=Rs(o),X=()=>Ns(F,I,typeof window>"u"?Pt:window.innerWidth),G=X(),U=g===void 0?void 0:ot(g,F,G),J=U===void 0&&I===void 0?void 0:{...U===void 0?{}:{"--make-ai-internal-drawer-width":`${U}px`},...I===void 0?{}:{"--make-ai-internal-drawer-max-width":`max(var(--make-ai-internal-drawer-min-width), ${I}px)`}};c.useLayoutEffect(()=>{U!==void 0&&U!==g&&N(U)},[U,g]);const me=()=>{if(U!==void 0)return U;const w=A.current?.getBoundingClientRect().width;return w&&Number.isFinite(w)&&w>0?w:F},re=w=>{if(w.button!==0)return;const P=me(),te=g===void 0?P:F;f(te),D.current={minimumWidth:te,pointerId:w.pointerId,startWidth:P,startX:w.clientX},v(!0),typeof w.currentTarget.setPointerCapture=="function"&&w.currentTarget.setPointerCapture(w.pointerId),w.preventDefault()},O=w=>{const P=D.current;if(!P||P.pointerId!==w.pointerId)return;const te=ot(P.startWidth+P.startX-w.clientX,P.minimumWidth,X());N(te)},ae=w=>{const P=D.current;!P||P.pointerId!==w.pointerId||(D.current=void 0,v(!1))},ie=w=>{const P=w.key==="ArrowLeft"?At:w.key==="ArrowRight"?-At:void 0;if(P===void 0)return;w.preventDefault();const te=me(),he=g===void 0?te:F;f(he),N(ot(te+P,he,X()))},q=w=>{d===void 0&&C(w),l?.(w),w||requestAnimationFrame(()=>V.current?.focus())},$=()=>q(!_);return c.useEffect(()=>{_&&R(!0)},[_]),c.useEffect(()=>{if(!_)return;const w=P=>{P.key==="Escape"&&(q(!1),requestAnimationFrame(()=>V.current?.focus()))};return document.addEventListener("keydown",w),()=>document.removeEventListener("keydown",w)},[l,_]),e.jsxs("div",{className:"make-ai-assistant","data-open":_||void 0,style:K,children:[!s&&(!_||a)?a?a({open:_,toggle:$}):e.jsxs("button",{"aria-label":_?`关闭 ${y}`:`打开 ${y}`,"aria-expanded":_,className:"make-ai-assistant__launcher","data-launcher-position":i,ref:V,type:"button",onClick:$,children:[e.jsx("span",{className:"make-ai-assistant__launcher-orbit","aria-hidden":"true"}),e.jsx(Bt,{})]}):null,S?e.jsxs("aside",{"aria-label":y,"aria-modal":"false",className:"make-ai-assistant__drawer","data-resizing":n||void 0,hidden:!_,ref:A,role:"dialog",style:J,children:[e.jsx("div",{"aria-label":"调整对话框宽度","aria-orientation":"vertical","aria-valuemax":G,"aria-valuemin":F,"aria-valuenow":U??F,className:"make-ai-assistant__drawer-resize-handle",role:"separator",tabIndex:0,onKeyDown:ie,onPointerCancel:ae,onPointerDown:re,onPointerMove:O,onPointerUp:ae}),e.jsx(Zt,{...h,onClose:()=>q(!1),visible:_})]}):null]})}exports.createArtifactCapabilities=Ie.createArtifactCapabilities;exports.createArtifactTemplateRegistry=Ie.createArtifactTemplateRegistry;exports.extendArtifactTemplateRegistry=Ie.extendArtifactTemplateRegistry;exports.resolveArtifactTemplate=Ie.resolveArtifactTemplate;exports.MAKE_AI_ARTIFACT_KINDS=b.MAKE_AI_ARTIFACT_KINDS;exports.MAKE_AI_ARTIFACT_LIMITS=b.MAKE_AI_ARTIFACT_LIMITS;exports.MAKE_AI_ARTIFACT_SCHEMA_VERSION=b.MAKE_AI_ARTIFACT_SCHEMA_VERSION;exports.MAKE_AI_CONVERSATION_LIMITS=b.MAKE_AI_CONVERSATION_LIMITS;exports.appendUserMessage=b.appendUserMessage;exports.createAssistantConversationState=b.createAssistantConversationState;exports.parseArtifact=b.parseArtifact;exports.parseAssistantEvent=b.parseAssistantEvent;exports.reduceAssistantEvent=b.reduceAssistantEvent;exports.validateArtifact=b.validateArtifact;exports.ArtifactRenderer=Et;exports.AssistantPanel=ta;exports.MakeAiAssistant=sa;exports.createPlatformArtifactRegistry=Ot;exports.formatArtifactValue=ke;exports.platformArtifactTemplates=Dt;
|
|
61
|
+
`),o=()=>{const m=s.join(`
|
|
62
|
+
`).trim();s.length=0,m&&e.push({type:"paragraph",text:m})},u=()=>{n.length&&e.push({type:"list",items:n.splice(0)})},c=()=>{const m=r.join(`
|
|
63
|
+
`).trim();r.length=0,m&&e.push({type:"pre",text:m})};for(let m=0;m<i.length;m+=1){const _=i[m]??"",y=_.trim();if(!y){o(),u(),c();continue}const M=fr(i,m);if(M){o(),u(),c(),e.push({headers:M.headers,rows:M.rows,type:"table"}),m=M.lastIndex;continue}const H=/^(#{1,6})\s+(.+)$/.exec(y);if(H){o(),u(),c();const z=(H[2]??"").replace(/\s+#+\s*$/,"").trim();z&&e.push({type:"heading",level:H[1]?.length,text:z});continue}if(/^\s*\|.+\|\s*$/.test(_)){o(),u(),r.push(_.trim());continue}const b=/^\s*[-*]\s+(.+)$/.exec(_);if(b){o(),c(),n.push(b[1]?.trim()??"");continue}u(),c(),s.push(y)}return o(),u(),c(),e},at=t=>{const e=[],s=/(\*\*[^*]+\*\*|`[^`]+`)/g;let n=0;for(const r of t.matchAll(s)){const i=r[0],o=r.index??0;o>n&&e.push(t.slice(n,o)),i.startsWith("**")?e.push(a.jsx("strong",{children:i.slice(2,-2)},`${o}-strong`)):e.push(a.jsx("code",{children:i.slice(1,-1)},`${o}-code`)),n=o+i.length}return n<t.length&&e.push(t.slice(n)),e},hs=({content:t})=>{const e=mr(t);return e.length?a.jsx("div",{className:"make-ai-assistant__bubble make-ai-assistant__assistant-text",children:e.map((s,n)=>{if(s.type==="heading"){const r=s.level<=2?"h3":"h4";return a.jsx(r,{className:`make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${s.level}`,children:at(s.text)},`${n}-heading`)}return s.type==="paragraph"?a.jsx("p",{children:at(s.text)},`${n}-paragraph`):s.type==="pre"?a.jsx("pre",{children:a.jsx("code",{children:s.text})},`${n}-pre`):s.type==="table"?a.jsx("div",{"aria-label":"表格内容,可横向滚动",className:"make-ai-assistant__markdown-table-scroll",role:"region",tabIndex:0,children:a.jsxs("table",{className:"make-ai-assistant__markdown-table",children:[a.jsx("thead",{children:a.jsx("tr",{children:s.headers.map((r,i)=>a.jsx("th",{scope:"col",children:at(r)},`${i}-${r}`))})}),a.jsx("tbody",{children:s.rows.map((r,i)=>a.jsx("tr",{children:r.map((o,u)=>a.jsx("td",{children:at(o)},`${u}-${o}`))},`${i}-${r.join("|")}`))})]})},`${n}-table`):a.jsx("ul",{children:s.items.map((r,i)=>a.jsx("li",{children:at(r)},`${i}-${r}`))},`${n}-list`)})}):null},Js=({assistantName:t})=>a.jsxs("div",{className:"make-ai-assistant__message-identity",children:[a.jsx(_t,{className:"make-ai-assistant__avatar--message"}),a.jsx("span",{className:"make-ai-assistant__message-sender",children:t})]}),ea=t=>{for(let e=t.messages.length-1;e>=0;e-=1){const s=t.messages[e];if(s.role==="assistant"&&s.status==="streaming")return s.id}},hr=t=>{for(let e=t.messages.length-1;e>=0;e-=1)if(t.messages[e].role==="user")return e;return-1},ta=t=>{const e=hr(t);if(!(e<0))for(let s=t.messages.length-1;s>e;s-=1){const n=t.messages[s];if(n.role==="assistant")return n.id}},pr=t=>{if(t.status==="idle")for(let e=t.messages.length-1;e>=0;e-=1){const s=t.messages[e];if(s.role==="assistant"&&s.status==="complete")return s.id}},vr=t=>{for(let e=t.messages.length-1;e>=0;e-=1){const s=t.messages[e];if(s.role==="user")return s}},gr=(t,e)=>{const s=t.messages.findIndex(n=>n.id===e&&n.role==="user");return{...t,error:void 0,progress:void 0,status:"streaming",messages:s<0?t.messages:t.messages.slice(0,s+1)}},_r=t=>t.scrollHeight-t.scrollTop-t.clientHeight<=48,ps=(t="smooth")=>globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":t,At=(t,e)=>{typeof t.scrollTo=="function"?t.scrollTo({top:t.scrollHeight,behavior:e}):t.scrollTop=t.scrollHeight},sa=({error:t,onRetry:e})=>a.jsxs("div",{className:"make-ai-assistant__message-status make-ai-assistant__message-status--error","data-error-presentation":"request-failed",role:"alert",children:[a.jsxs("div",{className:"make-ai-assistant__message-status-header",children:[a.jsx("span",{className:"make-ai-assistant__message-status-icon","aria-hidden":"true",children:a.jsx(cr,{})}),a.jsx("strong",{children:"请求未完成"})]}),a.jsx("span",{className:"make-ai-assistant__message-status-message",children:t.message}),t.retryable&&e?a.jsxs("button",{className:"make-ai-assistant__retry",type:"button",onClick:e,children:[a.jsx(Zs,{}),"重新发送"]}):null]}),br=({error:t,onRetry:e})=>{const s=ar(t);return a.jsxs("section",{"aria-live":"assertive",className:"make-ai-assistant__load-failure","data-load-failure-kind":s.kind,role:"alert",children:[a.jsx("span",{className:"make-ai-assistant__load-failure-icon","aria-hidden":"true",children:a.jsxs("svg",{viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M5 12a7 7 0 0 1 13.4-2.8A4.5 4.5 0 0 1 18 18H7.5A4.5 4.5 0 0 1 5 12Z"}),a.jsx("path",{d:"m9.2 14.8 5.6-5.6M9.2 9.2l5.6 5.6"})]})}),a.jsxs("div",{className:"make-ai-assistant__load-failure-copy",children:[a.jsx("span",{className:"make-ai-assistant__load-failure-label",children:s.label}),a.jsx("h3",{children:s.title}),a.jsx("p",{children:s.description})]}),a.jsxs("button",{className:"make-ai-assistant__retry make-ai-assistant__retry--primary",type:"button",onClick:e,children:[a.jsx(Zs,{}),s.actionLabel]})]})},aa=({active:t,steps:e})=>{const[s,n]=f.useState(!1);if(!t||!e?.length)return null;const r=e[e.length-1]??"处理中";return a.jsxs("details",{className:"make-ai-assistant__process",open:s,onToggle:i=>n(i.currentTarget.open),children:[a.jsxs("summary",{"aria-label":`查看处理过程,共 ${e.length} 步`,children:[a.jsxs("span",{className:"make-ai-assistant__process-summary",children:[a.jsx("span",{className:"make-ai-assistant__process-indicator","aria-hidden":"true"}),a.jsxs("span",{className:"make-ai-assistant__process-copy",children:[a.jsx("span",{className:"make-ai-assistant__process-title",children:"处理过程"}),a.jsx("span",{className:"make-ai-assistant__progress make-ai-assistant__process-latest",role:"status",children:r})]})]}),a.jsxs("span",{className:"make-ai-assistant__process-count",children:[e.length," 步"]})]}),a.jsx("ol",{children:e.map((i,o)=>a.jsxs("li",{"data-step-active":o===e.length-1?!0:void 0,children:[a.jsx("span",{"aria-hidden":"true"}),a.jsx("span",{children:i})]},`${o}-${i}`))})]})},yr=({copyFeedback:t,feedback:e,onCopy:s,onRegenerate:n})=>!e&&!s&&!n?null:a.jsxs("div",{className:"make-ai-assistant__reply-actions","aria-label":"回复操作",children:[s?a.jsx("button",{"aria-label":"复制回答",className:"make-ai-assistant__reply-action make-ai-assistant__reply-copy","data-tooltip":"复制",type:"button",onClick:s,children:a.jsx(Ps,{"aria-hidden":"true",className:"make-ai-assistant__reply-copy-icon"})}):null,e,n?a.jsx("button",{"aria-label":"重新生成",className:"make-ai-assistant__reply-action make-ai-assistant__reply-regenerate","data-tooltip":"重新生成",type:"button",onClick:n,children:a.jsx(ir,{})}):null,t?a.jsx("span",{className:"make-ai-assistant__reply-feedback","data-copy-status":t.status,role:"status",children:t.message}):null]}),vs=({assistantName:t,error:e,onRetry:s,progress:n})=>{const r=e?"error":"progress";return e?.message??n?.message?a.jsx("article",{"aria-label":`${t}的${r==="error"?"错误消息":"状态消息"}`,className:`make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${r}`,"data-message-role":"assistant","data-message-state":r,children:a.jsxs("div",{className:"make-ai-assistant__message-turn",children:[a.jsx(Js,{assistantName:t}),a.jsx("div",{className:"make-ai-assistant__message-stack",children:e?a.jsx(sa,{error:e,onRetry:s}):a.jsx(aa,{active:!0,steps:n?.steps})})]})}):null},xr=(t,e,s,n,r,i,o,u,c,m,_,y,M,H,b,z)=>{const $=ta(t),D=ea(t),k=pr(t);let p;return t.messages.map(l=>{if(l.intermediate)return a.jsxs("details",{className:"make-ai-assistant__process",children:[a.jsx("summary",{children:"处理过程"}),a.jsx(hs,{content:l.content})]},l.id);const x=l.role==="assistant",A=p;x||(p=l);const Z=l.id===D,N=l.id===$?t.error:void 0,q=l.error??N,te=!x&&!!(c?.trim()||m),ie=x?o:c?.trim()||"用户",W=x&&l.status==="complete"&&!q&&(l.content.trim()||l.id===k),fe=!!(b&&z?.features?.feedback&&x&&l.persistent),ve=W||fe;return a.jsx("article",{"aria-label":`${ie}的消息`,className:`make-ai-assistant__message make-ai-assistant__message--${l.role}`,"data-message-role":l.role,"data-message-state":q?"error":void 0,"data-message-status":l.status,"data-message-has-identity":x||te?!0:void 0,children:a.jsxs("div",{className:"make-ai-assistant__message-turn",children:[x?a.jsx(Js,{assistantName:o}):te?a.jsx(dr,{userAvatarUrl:m,userName:c}):null,a.jsxs("div",{className:"make-ai-assistant__message-stack",children:[x&&l.responseId&&t.responses?.[l.responseId]?.status==="cancelled"?a.jsx("p",{className:"make-ai-assistant__response-status",role:"status",children:"已停止生成"}):null,l.content?x?a.jsx(hs,{content:l.content}):a.jsx("div",{className:"make-ai-assistant__bubble",children:l.content}):l.status==="streaming"?a.jsxs("div",{className:"make-ai-assistant__typing","aria-label":`${o}正在思考`,children:[a.jsx("span",{}),a.jsx("span",{}),a.jsx("span",{})]}):null,x?a.jsx(aa,{active:Z&&t.status==="streaming",steps:l.progressSteps}):null,q?a.jsx(sa,{error:q,onRetry:N?u:void 0}):null,l.artifacts.map(Ae=>a.jsx(bs,{artifact:Ae,context:e,onAction:r,onActionError:i,registry:s,theme:n},Ae.id)),b&&z&&t.threadId?a.jsx(Vn,{message:l,context:e,transport:z,chatId:t.threadId}):null,ve?a.jsx(yr,{copyFeedback:_?.messageId===l.id?{message:_.message,status:_.status}:void 0,onCopy:l.content.trim()?()=>M(l.id,l.content):void 0,feedback:b&&fe?a.jsx(zn,{message:l,manager:b}):void 0,onRegenerate:y&&l.id===k&&A?()=>H({userMessage:A,assistantMessage:l}):void 0}):null]})]})},`${t.threadId??"local"}:${l.id}`)})};function na({assistantName:t="AI 助手",brandName:e,context:s,onAction:n,onActionError:r,onClose:i,onNewConversation:o,onToggleFullscreen:u,headerHeight:c,isFullscreen:m=!1,registry:_,suggestions:y,title:M,theme:H,transport:b,userAvatarUrl:z,userName:$,visible:D}){const k=Ln(s,b),p=Qn(s,b,k),l=Xs(e,M),x=tr(c),A=$t(H),Z=A||x?{...A,...x?{"--make-ai-internal-header-height":x}:{}}:void 0,[N,q]=f.useState(""),[te,ie]=f.useState(!1),[W,fe]=f.useState(!1),ve=k.enabled?b.scopeKey?.(s)??s.app.id:"";f.useLayoutEffect(()=>{k.enabled&&q("")},[ve,k.enabled]);const[Ae,qe]=f.useState(I.createAssistantConversationState),V=k.enabled?k.state:Ae,B=k.enabled?k.setState:qe,P=f.useRef(V);P.current=V;const[J,le]=f.useState(void 0),[ye,me]=f.useState(void 0),[Ee,L]=f.useState(0),[ne,se]=f.useState(()=>b.loadConversation?"loading":"ready"),ae=k.enabled?k.loading&&!V.messages.length?"loading":"ready":ne,[Ke,We]=f.useState(void 0),[rt,de]=f.useState(!1),K=f.useRef(void 0),ue=f.useRef(void 0),we=f.useRef(0),Se=f.useRef(null),je=f.useRef(null),Oe=f.useRef(null),Le=f.useRef(null),Ge=f.useRef(null),Xe=f.useRef(null),ge=f.useRef(!0),it=f.useRef(s.app.id),ot=f.useRef(D),ct=f.useId();f.useLayoutEffect(()=>{const v=Oe.current;v&&(v.style.height="auto",v.style.height=`${Math.min(Math.max(v.scrollHeight,Yn),Zn)}px`)},[N]);const lt=f.useMemo(()=>_??ws(),[_]),dt=f.useMemo(()=>Jn(y),[y]),$e=v=>{const U=K.current,Q=ue.current?.iterator;return!U&&!Q?!1:(we.current+=1,K.current=void 0,ue.current=void 0,console.info("[make-ai-assistant] local run cancellation requested",{reason:v}),U?.abort(),fs(Q),!0)};f.useEffect(()=>()=>{$e("unmount")},[]),f.useEffect(()=>{if(k.enabled)return;const v=b.loadConversation,U=it.current!==s.app.id;if(it.current=s.app.id,$e("reinitialize"),U&&(q(""),ge.current=!0),le(void 0),me(void 0),de(!1),B(I.createAssistantConversationState()),!v){We(void 0),se("ready");return}const Q=new AbortController;return We(void 0),se("loading"),console.info("[make-ai-assistant] conversation load start",{appId:s.app.id}),v.call(b,s,{signal:Q.signal}).then(re=>{Q.signal.aborted||(B(I.createAssistantConversationState(re)),se("ready"),console.info("[make-ai-assistant] conversation load success",{appId:s.app.id,messageCount:re.messages.length}))}).catch(re=>{Q.signal.aborted||(console.error("[make-ai-assistant] conversation load failed",{appId:s.app.id,errorType:re instanceof Error?re.name:typeof re}),We(re),se("error"))}),()=>Q.abort()},[s.app.id,Ee,b,k.enabled]),f.useEffect(()=>{const v=je.current;if(!v||!ge.current)return;de(!1);const U=requestAnimationFrame(()=>{if(!ge.current)return;const Q=V.status==="streaming"||globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";At(v,Q)});return()=>cancelAnimationFrame(U)},[V.messages,V.progress,V.status]),f.useEffect(()=>{D||(ie(!1),fe(!1))},[D]),f.useEffect(()=>{const v=D&&!ot.current;if(ot.current=D,!v)return;const U=requestAnimationFrame(()=>{const Q=je.current;if(Q&&ge.current){de(!1);const Ze=P.current.status==="streaming"?"auto":ps();At(Q,Ze)}else Q&&de(P.current.messages.length>0);const re=Oe.current;(re&&!re.disabled?re:Xe.current??Se.current?.querySelector("button:not(:disabled)"))?.focus()});return()=>cancelAnimationFrame(U)},[D]);const Ye=()=>{const v=je.current;if(!v)return;const U=_r(v);ge.current=U,de(!U&&P.current.messages.length>0)},Re=()=>{const v=je.current;if(!v)return;ge.current=!0,de(!1);const U=ps();At(v,U)},d=async(v,U)=>{const Q=v.trim(),re=P.current,ke=U?.regenerateFrom,Ze=b.regenerate;if(!Q||ae!=="ready"||re.status==="streaming"||K.current||ke&&!Ze)return;if(I.countCodePointsUpTo(Q,I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)>I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters){le(`输入内容过长,请控制在 ${I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters} 个字符以内`);return}const ft={id:ke?.userMessage.id??Wn("user"),content:Q},mt=ke?gr(re,ke.userMessage.id):I.appendUserMessage(re,ft),ht=new AbortController,Pe=we.current+1;we.current=Pe,K.current=ht,le(void 0),me(void 0),de(!ge.current&&re.messages.length>0),ke||q(""),B(mt);try{let Ie=!1,ce,Vt=0,Ft=0,Ut=0,xt=0,Je=0;const et=new Map,Bt=new Set,Qt=new Set([...mt.messages.map(pt=>pt.id),ft.id]),tt=new Set,qt=Ce.createArtifactCapabilities(lt),Kt={signal:ht.signal};let kt;if(ke){if(!Ze)throw new G("当前 AI 助手不支持重新生成");kt=Ze({threadId:mt.threadId,message:ft,assistantMessage:{id:ke.assistantMessage.id,content:ke.assistantMessage.content},context:s,capabilities:qt},Kt)}else kt=b.run({threadId:mt.threadId,message:ft,context:s,capabilities:qt},Kt);const Wt=kt[Symbol.asyncIterator]();for(ue.current={iterator:Wt,requestVersion:Pe};;){const pt=await Wt.next();if(we.current!==Pe||pt.done)break;let O;try{O=I.parseAssistantEvent(pt.value)}catch(pe){throw new G(pe instanceof Error?pe.message:"Invalid assistant event")}if(O.type==="message.start"){if(ce!==void 0&&ce!==O.runId)throw new G("AI 助手响应 run id 不一致");if(ce??=O.runId,Ft+=1,Ft>I.MAKE_AI_CONVERSATION_LIMITS.assistantMessagesPerRun)throw new G("AI 助手单次响应消息数量超过限制");if(Qt.has(O.messageId))throw new G("AI 助手响应包含重复的 message id");Qt.add(O.messageId),tt.add(O.messageId),et.set(O.messageId,0)}if(O.type==="message.delta"){if(!tt.has(O.messageId))throw new G("AI 助手响应事件顺序无效");const pe=et.get(O.messageId)??0,ze=I.countCodePointsUpTo(O.delta,I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters-Je);if(Je+ze>I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new G("AI 助手响应文本超过大小限制");Je+=ze,et.set(O.messageId,pe+ze)}if(O.type==="message.replace"){if(!tt.has(O.messageId))throw new G("AI 助手响应事件顺序无效");const pe=et.get(O.messageId)??0,ze=I.countCodePointsUpTo(O.content,I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters),Gt=Je-pe+ze;if(Gt>I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new G("AI 助手响应文本超过大小限制");Je=Gt,et.set(O.messageId,ze)}if(O.type==="run.progress"){if(ce!==void 0&&ce!==O.runId)throw new G("AI 助手响应 run id 不一致");if(ce??=O.runId,Ut+=1,Ut>I.MAKE_AI_CONVERSATION_LIMITS.progressStepsPerRun)throw new G("AI 助手处理过程数量超过限制");const pe=I.countCodePointsUpTo(O.message,I.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun-xt);if(xt+pe>I.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun)throw new G("AI 助手处理过程文本超过大小限制");xt+=pe}if(O.type==="artifact"){if(!tt.has(O.messageId))throw new G("AI 助手响应事件顺序无效");if(Vt+=1,Vt>I.MAKE_AI_CONVERSATION_LIMITS.artifactsPerRun)throw new G("AI 助手单次响应 Artifact 数量超过限制");if(Bt.has(O.artifact.id))throw new G("AI 助手响应包含重复的 Artifact id");Bt.add(O.artifact.id)}if(O.type==="message.complete"&&!tt.delete(O.messageId))throw new G("AI 助手响应事件顺序无效");if(O.type==="run.complete"&&ce!==void 0&&ce!==O.runId)throw new G("AI 助手响应 run id 不一致");if(O.type==="run.cancelled"&&O.runId!==void 0&&ce!==void 0&&ce!==O.runId)throw new G("AI 助手响应 run id 不一致");if(B(pe=>I.reduceAssistantEvent(pe,O)),O.type==="error"||O.type==="run.cancelled"||O.type==="run.complete"){Ie=!0;break}}if(!Ie)throw new G("AI 助手流式响应在终止事件前结束")}catch(Ie){if(we.current!==Pe)return;if(ht.signal.aborted){B(ce=>I.reduceAssistantEvent(ce,{type:"run.cancelled"}));return}console.error("[make-ai-assistant] assistant run failed",{appId:s.app.id,errorType:Ie instanceof Error?Ie.name:typeof Ie}),B(ce=>I.reduceAssistantEvent(ce,{type:"error",code:"TRANSPORT_ERROR",message:Ie instanceof G?Ie.message:"连接失败,请重试",retryable:!0}))}finally{we.current===Pe&&K.current===ht&&(K.current=void 0),ue.current?.requestVersion===Pe&&(fs(ue.current.iterator),ue.current=void 0)}},h=v=>{if(k.enabled){if(p.pending)return le("请等待附件上传完成,或移除失败的附件"),Promise.resolve();const U=v.trim(),Q=p.parts.length?[...U?[{id:Fe(),kind:"text",text:U}]:[],...p.parts]:void 0;return q(""),p.clear(),k.send(U,Q)}return d(v)},g=v=>d(v.userMessage.content,{regenerateFrom:v}),w=async(v,U)=>{try{await nr(U),me({messageId:v,message:"已复制",status:"success"})}catch(Q){console.error("[make-ai-assistant] copy answer failed",{errorType:Q instanceof Error?Q.name:typeof Q}),me({messageId:v,message:"复制失败",status:"error"})}},C=v=>{v.preventDefault(),h(N)},T=v=>{v.key==="Enter"&&!v.shiftKey&&!v.nativeEvent.isComposing&&(v.preventDefault(),h(N))},j=()=>{if(k.enabled){k.stop();return}$e("stop")&&B(v=>I.reduceAssistantEvent(v,{type:"run.cancelled"}))},R=()=>{if(fe(!1),k.enabled){q(""),k.create(),o?.();return}$e("new-conversation"),q(""),le(void 0),me(void 0),de(!1),ge.current=!0,B(I.createAssistantConversationState()),o?.()},E=k.enabled&&k.cancelling.length?"停止中":b.features?.remoteCancellation===!1?"停止接收":"停止生成",F=ea(V),xe=ta(V),Me=vr(V),ut=typeof b.regenerate=="function"&&b.features?.regeneration!==!1,he=()=>{if(k.enabled){k.retry();return}Me&&h(Me.content)},He=v=>{if(v.key==="Escape"&&!(!te&&!W)){if(v.preventDefault(),v.stopPropagation(),te){ie(!1),Le.current?.focus();return}fe(!1),Ge.current?.focus()}};return a.jsxs("section",{className:`make-ai-assistant make-ai-assistant__panel${k.enabled?" make-ai-assistant__panel--managed":""}`,ref:Se,style:Z,onKeyDown:He,onDragOver:v=>{p.enabled&&v.dataTransfer.types.includes("Files")&&v.preventDefault()},onDrop:v=>{p.enabled&&v.dataTransfer.files.length&&(v.preventDefault(),p.add(Array.from(v.dataTransfer.files)))},children:[a.jsxs("header",{className:"make-ai-assistant__header",children:[a.jsx("div",{className:"make-ai-assistant__header-leading",children:k.enabled?a.jsxs("button",{"aria-controls":ct,"aria-expanded":W,"aria-haspopup":"dialog","aria-label":"任务列表",className:"make-ai-assistant__task-list-trigger",ref:Ge,type:"button",onClick:()=>fe(v=>!v),children:[a.jsx(Us,{"aria-hidden":"true",className:"make-ai-assistant__task-list-icon"}),a.jsx("span",{className:"make-ai-assistant__task-list-label",children:"任务列表"}),W?a.jsx(Ks,{"aria-hidden":"true",className:"make-ai-assistant__task-list-disclosure"}):a.jsx(zs,{"aria-hidden":"true",className:"make-ai-assistant__task-list-disclosure"})]}):null}),a.jsxs("div",{className:"make-ai-assistant__header-center",children:[a.jsx(_t,{}),a.jsx("h2",{className:"make-ai-assistant__header-title",title:l,children:l})]}),a.jsxs("div",{className:"make-ai-assistant__header-actions",children:[u?a.jsx("button",{"aria-label":m?"退出全屏":"全屏显示","aria-pressed":m,className:"make-ai-assistant__icon-button",title:m?"退出全屏":"全屏显示",type:"button",onClick:u,children:m?a.jsx(Hs,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"}):a.jsx(Vs,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null,b.features?.newConversation!==!1?a.jsx("button",{"aria-label":"新建对话",className:"make-ai-assistant__icon-button",type:"button",onClick:R,children:a.jsx(yt,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null,i?a.jsx("button",{"aria-label":`关闭 ${l}`,className:"make-ai-assistant__icon-button",type:"button",onClick:i,children:a.jsx(rr,{})}):null]})]}),k.enabled&&W?a.jsx(Pn,{id:ct,manager:k,triggerRef:Ge,onDismiss:()=>fe(!1),onNewConversation:b.features?.newConversation!==!1?R:void 0}):null,a.jsxs("div",{className:"make-ai-assistant__body","aria-live":"polite","aria-relevant":"additions text",ref:je,role:"log",onScroll:Ye,children:[ae==="loading"?a.jsxs("div",{className:"make-ai-assistant__empty",role:"status",children:[a.jsx(_t,{}),a.jsx("h3",{children:"正在恢复对话"}),a.jsx("p",{children:"正在读取当前 App 的历史消息…"})]}):ae==="error"?a.jsx("div",{className:"make-ai-assistant__empty",children:a.jsx(br,{error:Ke,onRetry:()=>L(v=>v+1)})}):V.messages.length===0?a.jsxs("div",{className:"make-ai-assistant__empty",children:[a.jsx(_t,{}),a.jsx("h3",{children:"有什么可以帮你?"}),a.jsx("p",{children:"我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。"})]}):xr(V,s,lt,H,n,r,t,Me?he:void 0,$,z,ye,ut,(v,U)=>{w(v,U)},v=>{g(v)},k.enabled?k:void 0,b),V.progress&&!F?a.jsx(vs,{assistantName:t,progress:V.progress}):null,V.error&&!xe?a.jsx(vs,{assistantName:t,error:V.error,onRetry:Me?he:void 0}):null]}),rt?a.jsx("button",{"aria-label":"回到最新消息",className:"make-ai-assistant__back-to-latest",type:"button",onClick:Re,children:a.jsx(or,{})}):null,a.jsxs("footer",{className:"make-ai-assistant__composer-region",children:[ae==="ready"&&dt.length>0&&V.messages.length===0?a.jsx("div",{className:"make-ai-assistant__suggestions","aria-label":"推荐问题",children:dt.map((v,U)=>a.jsx("button",{type:"button",onClick:()=>{h(v)},children:v},`${U}-${v}`))}):null,a.jsxs("form",{className:"make-ai-assistant__composer",onSubmit:C,children:[p.enabled?a.jsx(Kn,{attachments:p,visible:D}):null,a.jsx("textarea",{"aria-label":`向 ${t} 提问`,"aria-describedby":J?"make-ai-composer-error":void 0,"aria-invalid":J?!0:void 0,autoFocus:!0,disabled:ae!=="ready"||!k.enabled&&V.status==="streaming",placeholder:`询问当前 ${s.app.name??"App"} 中的数据…`,ref:Oe,rows:2,value:N,onChange:v=>{q(v.currentTarget.value),le(void 0)},onKeyDown:T,onPaste:v=>{!p.enabled||!v.clipboardData.files.length||(v.preventDefault(),p.add(Array.from(v.clipboardData.files)))}}),a.jsxs("div",{className:"make-ai-assistant__composer-toolbar",children:[p.enabled?a.jsx(qn,{attachments:p,open:te,triggerRef:Le,onOpenChange:ie}):null,a.jsxs("div",{className:"make-ai-assistant__composer-actions",children:[V.status==="streaming"?a.jsx("button",{"aria-label":E,className:"make-ai-assistant__send make-ai-assistant__send--stop","data-tooltip":E,ref:Xe,disabled:k.enabled&&k.cancelling.includes(V.activeRunId??""),type:"button",onClick:j,children:a.jsx("span",{"aria-hidden":"true"})}):a.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:ae!=="ready"||p.pending||!N.trim()&&!p.parts.length,type:"submit",children:a.jsx(ms,{})}),k.enabled&&V.status==="streaming"?a.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:k.busy||p.pending||!N.trim()&&!p.parts.length,type:"submit",children:a.jsx(ms,{})}):null]})]})]}),J?a.jsx("p",{id:"make-ai-composer-error",role:"alert",children:J}):null,a.jsx("p",{children:"AI 生成的结果可能存在偏差,重要数据请核对明细。"})]})]})}function kr(t){return a.jsx(na,{...t,visible:!0})}function wr({defaultOpen:t=!1,hideLauncher:e=!1,launcher:s,launcherPosition:n="bottom-right",maxDrawerWidth:r,onOpenChange:i,open:o,...u}){const c=Xs(u.brandName,u.title),[m,_]=f.useState(t),[y,M]=f.useState(()=>t||o===!0),[H,b]=f.useState(!1),z=f.useRef(null),$=o??m,D=$t(u.theme),k=er(r),p=k===void 0?void 0:{"--make-ai-internal-drawer-max-width":`${k}px`},l=A=>{o===void 0&&_(A),i?.(A),A||(b(!1),requestAnimationFrame(()=>z.current?.focus()))},x=()=>l(!$);return f.useEffect(()=>{$&&M(!0)},[$]),f.useEffect(()=>{if(!$)return;const A=Z=>{if(Z.key==="Escape"){if(H){b(!1);return}l(!1),requestAnimationFrame(()=>z.current?.focus())}};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[H,i,$]),a.jsxs("div",{className:"make-ai-assistant","data-open":$||void 0,style:D,children:[!e&&(!$||s)?s?s({open:$,toggle:x}):a.jsxs("button",{"aria-label":$?`关闭 ${c}`:`打开 ${c}`,"aria-expanded":$,className:"make-ai-assistant__launcher","data-launcher-position":n,ref:z,type:"button",onClick:x,children:[a.jsx("span",{className:"make-ai-assistant__launcher-orbit","aria-hidden":"true"}),a.jsx(Ys,{})]}):null,y?a.jsx("aside",{"aria-label":c,"aria-modal":"false",className:`make-ai-assistant__drawer${H?" make-ai-assistant__drawer--fullscreen":""}`,hidden:!$,role:"dialog",style:p,children:a.jsx(na,{...u,isFullscreen:H,onClose:()=>l(!1),onToggleFullscreen:()=>b(A=>!A),visible:$})}):null]})}exports.createArtifactCapabilities=Ce.createArtifactCapabilities;exports.createArtifactTemplateRegistry=Ce.createArtifactTemplateRegistry;exports.extendArtifactTemplateRegistry=Ce.extendArtifactTemplateRegistry;exports.resolveArtifactTemplate=Ce.resolveArtifactTemplate;exports.MAKE_AI_ARTIFACT_KINDS=I.MAKE_AI_ARTIFACT_KINDS;exports.MAKE_AI_ARTIFACT_LIMITS=I.MAKE_AI_ARTIFACT_LIMITS;exports.MAKE_AI_ARTIFACT_SCHEMA_VERSION=I.MAKE_AI_ARTIFACT_SCHEMA_VERSION;exports.MAKE_AI_CONVERSATION_LIMITS=I.MAKE_AI_CONVERSATION_LIMITS;exports.appendUserMessage=I.appendUserMessage;exports.createAssistantConversationState=I.createAssistantConversationState;exports.parseArtifact=I.parseArtifact;exports.parseAssistantEvent=I.parseAssistantEvent;exports.reduceAssistantEvent=I.reduceAssistantEvent;exports.validateArtifact=I.validateArtifact;exports.ArtifactRenderer=bs;exports.AssistantPanel=kr;exports.MakeAiAssistant=wr;exports.createPlatformArtifactRegistry=ws;exports.formatArtifactValue=Ne;exports.platformArtifactTemplates=ks;
|