@qfei-design/make-ai-assistant 0.2.12 → 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.
Files changed (41) hide show
  1. package/PUBLIC_API.md +20 -20
  2. package/README.md +19 -13
  3. package/capabilities.json +2 -1
  4. package/dist/client-protocol.d.ts +24 -0
  5. package/dist/client-types.d.ts +420 -0
  6. package/dist/client.cjs +2 -0
  7. package/dist/client.d.ts +18 -0
  8. package/dist/client.mjs +1154 -0
  9. package/dist/conversation-BpmWa2VL.cjs +1 -0
  10. package/dist/conversation-DuqMadaQ.js +888 -0
  11. package/dist/conversation-management-DZROhXyK.js +229 -0
  12. package/dist/conversation-management-f1y0yRvt.cjs +1 -0
  13. package/dist/core/conversation-management.d.ts +15 -5
  14. package/dist/core/conversation.d.ts +6 -5
  15. package/dist/index.cjs +1 -1
  16. package/dist/index.mjs +4 -4
  17. package/dist/make-app.cjs +1 -1
  18. package/dist/make-app.d.ts +8 -69
  19. package/dist/make-app.mjs +236 -703
  20. package/dist/make-console.cjs +1 -1
  21. package/dist/make-console.mjs +1 -1
  22. package/dist/react/conversation-controls.d.ts +1 -1
  23. package/dist/react/make-ai-assistant.d.ts +1 -2
  24. package/dist/react/use-attachments.d.ts +3 -1
  25. package/dist/react/use-conversation-manager.d.ts +3 -2
  26. package/dist/react.cjs +62 -4
  27. package/dist/react.mjs +3268 -1794
  28. package/dist/sse.cjs +1 -1
  29. package/dist/sse.mjs +1 -1
  30. package/dist/styles.css +625 -137
  31. package/docs/backend-contract.md +3 -7
  32. package/docs/make-app-integration.md +23 -68
  33. package/examples/make-app/main.tsx +1 -1
  34. package/examples/make-app/transport.ts +36 -146
  35. package/package.ai.json +9 -6
  36. package/package.json +11 -3
  37. package/recipes.json +4 -3
  38. package/dist/conversation-CZfbgCXd.js +0 -1111
  39. package/dist/conversation-Cvh-IVRV.cjs +0 -1
  40. package/dist/make-app/protocol.d.ts +0 -27
  41. 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 t=require("react/jsx-runtime"),i=require("react"),Ae=require("./index.cjs"),v=require("./conversation-Cvh-IVRV.cjs"),Rt=e=>e?.trim()||void 0,ge=(e,s)=>Rt(e)??s,ct=e=>{const s=Rt(e?.primary);if(s)return{"--make-ai-theme-primary":s,"--make-ai-theme-primary-hover":ge(e?.primaryHover,"color-mix(in srgb, var(--make-ai-theme-primary) 84%, #15233d)"),"--make-ai-theme-on-primary":ge(e?.onPrimary,"#fcfcff"),"--make-ai-theme-bg":ge(e?.background,"color-mix(in srgb, var(--make-ai-theme-primary) 2%, #fcfcff)"),"--make-ai-theme-surface":ge(e?.surface,"color-mix(in srgb, var(--make-ai-theme-primary) 4%, var(--make-ai-theme-bg))"),"--make-ai-theme-surface-strong":ge(e?.surfaceStrong,"color-mix(in srgb, var(--make-ai-theme-primary) 8%, var(--make-ai-theme-bg))"),"--make-ai-theme-text":ge(e?.text,"color-mix(in srgb, var(--make-ai-theme-primary) 12%, #252631)"),"--make-ai-theme-text-secondary":ge(e?.textSecondary,"color-mix(in srgb, var(--make-ai-theme-text) 74%, var(--make-ai-theme-primary))"),"--make-ai-theme-border":ge(e?.border,"color-mix(in srgb, var(--make-ai-theme-primary) 14%, var(--make-ai-theme-bg))"),"--make-ai-theme-overlay":ge(e?.overlay,"color-mix(in srgb, var(--make-ai-theme-text) 88%, var(--make-ai-theme-primary))"),"--make-ai-theme-on-overlay":ge(e?.onOverlay,"#fcfcff")}},bt=(e,s)=>!s||!i.isValidElement(e)||typeof e.type!="string"?e:i.cloneElement(e,{style:{...e.props.style,...s}});function St({artifact:e,context:s,fallback:a,onAction:o,onActionError:r,registry:c,theme:d}){const f=ct(d),g=Ae.resolveArtifactTemplate(c,e,s);if(!g){const $=a?a(e):t.jsxs("section",{className:"make-ai-artifact make-ai-artifact--unsupported",role:"status",children:[t.jsx("strong",{children:"暂不支持展示此结果"}),t.jsxs("span",{children:["结果类型:",e.kind]})]});return bt($,f)}const h={context:s,onAction:o,onActionError:r,theme:d,themeStyle:f},_=g.template.render(e,s,h);return bt(_,f)}const Ie=(e,s,a)=>{if(e==null||e==="")return"—";if(typeof e=="boolean")return e?"是":"否";if(typeof e!="number")return`${e}${s?.unit??""}`;const o=s?.precision,r={maximumFractionDigits:o??2,minimumFractionDigits:o};s?.style==="currency"&&s.currency?(r.style="currency",r.currency=s.currency):s?.style==="percent"&&(r.style="percent");try{const c=s?.style==="percent"?e/100:e;return`${new Intl.NumberFormat(a,r).format(c)}${s?.unit??""}`}catch{return`${e}${s?.unit??""}`}},Ct=e=>{let s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;for(const o of e)s=Math.min(s,o),a=Math.max(a,o);return Number.isFinite(s)&&Number.isFinite(a)?{min:s,max:a}:{min:0,max:0}},Et=(e,s,a)=>{if(!a.onAction)return;const o=c=>{console.error("[make-ai-assistant] host action error handler failed",{actionId:e.id,artifactId:s.artifact.id,errorType:c instanceof Error?c.name:typeof c,intent:e.intent})},r=c=>{if(a.onActionError){try{Promise.resolve(a.onActionError(c,e,s)).catch(o)}catch(d){o(d)}return}console.error("[make-ai-assistant] host action failed",{actionId:e.id,artifactId:s.artifact.id,errorType:c instanceof Error?c.name:typeof c,intent:e.intent})};try{Promise.resolve(a.onAction(e,s)).catch(r)}catch(c){r(c)}},Te=(e,s)=>e.actions?.length&&s.onAction?t.jsx("div",{className:"make-ai-artifact__actions",children:e.actions.map(a=>t.jsxs("button",{className:`make-ai-artifact__action make-ai-artifact__action--${a.appearance??"link"}`,type:"button",onClick:()=>Et(a,{artifact:e,context:s.context},s),children:[a.label,t.jsx("span",{"aria-hidden":"true",children:"→"})]},a.id))}):null,Ne=(e,s,a="",o)=>t.jsxs("section",{"aria-label":e.title??`${e.kind} result`,className:`make-ai-artifact ${a}`.trim(),"data-artifact-density":e.presentation?.density,"data-artifact-kind":e.kind,style:o,children:[e.title?t.jsx("h4",{className:"make-ai-artifact__title",children:e.title}):null,e.summary?t.jsx("p",{className:"make-ai-artifact__summary",children:e.summary}):null,s]}),Vt=({artifact:e,renderContext:s})=>{const a=e.data.delta,o=a?Ie(a.value,a.format==="percent"?{style:"percent"}:void 0,s.context.locale):void 0;return Ne(e,t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"make-ai-artifact__metric-value",children:Ie(e.data.value,e.data.format,s.context.locale)}),a?t.jsxs("div",{className:`make-ai-artifact__delta make-ai-artifact__delta--${a.direction??"flat"}`,children:[t.jsx("span",{"aria-hidden":"true",children:a.direction==="up"?"↗":a.direction==="down"?"↘":"→"}),t.jsx("span",{children:o}),a.label?t.jsx("span",{children:a.label}):null]}):null,e.data.context?t.jsx("p",{className:"make-ai-artifact__context",children:e.data.context}):null,Te(e,s)]}),"make-ai-artifact--metric",s.themeStyle)},qt=({artifact:e,renderContext:s})=>Ne(e,t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"make-ai-artifact__comparison",children:e.data.items.map(a=>t.jsxs("div",{className:"make-ai-artifact__comparison-item",children:[t.jsx("span",{children:a.label}),t.jsx("strong",{children:Ie(a.value,a.format,s.context.locale)}),a.hint?t.jsx("small",{children:a.hint}):null]},a.id))}),Te(e,s)]}),"make-ai-artifact--comparison",s.themeStyle),Ht=({artifact:e,renderContext:s})=>{const a=e.data.series.flatMap(d=>d.points.map(f=>f.y)),{max:o,min:r}=Ct(a),c=o-r||1;return Ne(e,t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"make-ai-artifact__trend",children:e.data.series.map(d=>t.jsxs("div",{className:"make-ai-artifact__trend-series",children:[t.jsx("div",{className:"make-ai-artifact__trend-label",children:d.label}),t.jsx("div",{className:"make-ai-artifact__trend-bars",children:d.points.map((f,g)=>{const h=18+(f.y-r)/c*70;return t.jsxs("div",{className:"make-ai-artifact__trend-point",children:[t.jsx("span",{"aria-label":`${f.x}: ${Ie(f.y,d.format,s.context.locale)}`,className:"make-ai-artifact__trend-bar",role:"img",style:{height:`${h}%`},title:`${f.x}: ${Ie(f.y,d.format,s.context.locale)}`}),t.jsx("small",{children:f.x})]},`${f.x}-${g}`)})})]},d.id))}),Te(e,s)]}),"make-ai-artifact--trend",s.themeStyle)},Xt=({artifact:e,renderContext:s})=>{const{max:a}=Ct(e.data.items.map(r=>Math.abs(r.value))),o=Math.max(a,1);return Ne(e,t.jsxs(t.Fragment,{children:[t.jsx("ol",{className:"make-ai-artifact__ranking",children:e.data.items.map((r,c)=>t.jsxs("li",{children:[t.jsx("span",{className:"make-ai-artifact__rank",children:c+1}),t.jsxs("span",{className:"make-ai-artifact__ranking-label",children:[t.jsx("span",{children:r.label}),r.description?t.jsx("small",{children:r.description}):null]}),t.jsx("span",{className:"make-ai-artifact__ranking-track","aria-hidden":"true",children:t.jsx("span",{style:{width:`${Math.abs(r.value)/o*100}%`}})}),t.jsx("strong",{children:Ie(r.value,r.format,s.context.locale)})]},r.id))}),Te(e,s)]}),"make-ai-artifact--ranking",s.themeStyle)},Zt=(e,s)=>s.action??{id:`open-${s.id}`,label:s.title??s.id,intent:"open-record",target:{entityKey:e.data.entity.key,recordId:s.id}},Gt=({artifact:e,renderContext:s})=>Ne(e,t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"make-ai-artifact__record-list",children:e.data.records.length===0?t.jsx("p",{className:"make-ai-artifact__empty",children:"没有符合条件的记录"}):e.data.records.map(a=>{const o=Zt(e,a),r=t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:a.title??a.id}),t.jsx("span",{className:"make-ai-artifact__record-values",children:e.data.columns.map(c=>t.jsxs("span",{children:[t.jsx("small",{children:c.label}),Ie(a.values[c.key],c.format,s.context.locale)]},c.key))}),s.onAction?t.jsx("span",{"aria-hidden":"true",children:"›"}):null]});return s.onAction?t.jsx("button",{className:"make-ai-artifact__record",type:"button",onClick:()=>Et(o,{artifact:e,context:s.context},s),children:r},a.id):t.jsx("div",{className:"make-ai-artifact__record",children:r},a.id)})}),e.data.total!==void 0?t.jsxs("p",{className:"make-ai-artifact__record-total",children:["共 ",e.data.total," 条"]}):null,Te(e,s)]}),"make-ai-artifact--record-list",s.themeStyle),Yt=({artifact:e,renderContext:s})=>Ne(e,t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:`make-ai-artifact__notice make-ai-artifact__notice--${e.data.tone}`,children:[t.jsx("span",{"aria-hidden":"true",children:e.data.tone==="success"?"✓":e.data.tone==="warning"?"!":e.data.tone==="danger"?"×":"i"}),t.jsx("p",{children:e.data.body})]}),Te(e,s)]}),"make-ai-artifact--notice",s.themeStyle),Ce=(e,s,a)=>({id:e,kinds:[s],priority:0,render:a}),Jt=[Ce("platform.metric.default","metric",(e,s,a)=>t.jsx(Vt,{artifact:e,renderContext:a})),Ce("platform.comparison.default","comparison",(e,s,a)=>t.jsx(qt,{artifact:e,renderContext:a})),Ce("platform.trend.default","trend",(e,s,a)=>t.jsx(Ht,{artifact:e,renderContext:a})),Ce("platform.ranking.default","ranking",(e,s,a)=>t.jsx(Xt,{artifact:e,renderContext:a})),Ce("platform.record-list.default","record-list",(e,s,a)=>t.jsx(Gt,{artifact:e,renderContext:a})),Ce("platform.notice.default","notice",(e,s,a)=>t.jsx(Yt,{artifact:e,renderContext:a}))],Tt=Ae.createArtifactTemplateRegistry(Jt).templates,Nt=(e=Tt)=>Ae.createArtifactTemplateRegistry(e),Ee=()=>globalThis.crypto.randomUUID(),lt=e=>{const s=e,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 Qt(e,s){const a=s.features?.conversationManagement===!0,o=a?s.scopeKey?.(e)??e.app.id:"",r=i.useRef(o);r.current=o;const c=i.useRef(o),[d,f]=i.useState(v.createAssistantConversationState),g=i.useRef(d),h=n=>{const m=typeof n=="function"?n(g.current):n;g.current=m,f(m)},[_,$]=i.useState([]),[A,H]=i.useState(),M=i.useRef(void 0),[O,y]=i.useState(""),[N,B]=i.useState(-1),[p,l]=i.useState(!1),[C,R]=i.useState(!1),[ee,S]=i.useState(a),[X,Z]=i.useState(!1),[D,J]=i.useState(),[ue,me]=i.useState([]),[F,ae]=i.useState([]),ie=i.useRef(new Set),W=i.useRef(new Map),L=i.useRef(0),k=i.useRef(0),z=i.useRef(0),te=i.useRef(void 0),he=i.useRef(void 0),we=i.useRef(new Map),E=(n,m=o)=>k.current===n&&r.current===m,Q=()=>{const n=new AbortController;return ie.current.add(n),n},oe=n=>ie.current.delete(n),ce=n=>{M.current=n,H(n)},Le=()=>{for(const n of W.current.values())n.abort();W.current.clear()},G=n=>{n instanceof Error&&n.name==="AbortError"||(console.warn("[make-ai-assistant] conversation operation failed",{errorType:n instanceof Error?n.name:typeof n}),J(lt(n)))},ne=async n=>{if(!a||!s.listConversations)return;const m=k.current,x=++z.current,b=Q();try{const I=await s.listConversations(e,{cursor:n},{signal:b.signal});if(!E(m)||b.signal.aborted||x!==z.current)return;$(T=>[...new Map([...n?T:[],...I.chats].map(j=>[j.chatId,j])).values()]),y(I.nextCursor)}catch(I){E(m)&&!b.signal.aborted&&G(I)}finally{oe(b),E(m)&&S(!1)}},le=async(n,m,x)=>{const b=k.current,I=L.current;let T;try{for await(const j of n){if(!E(b)||m.signal.aborted||I!==L.current||M.current?.chatId!==x)return;const V=v.parseAssistantEvent(j);if(V.type==="response.accepted"||V.type==="response.state"){T=V.responseId;const K=W.current.get(T);if(K&&K!==m){V.type==="response.accepted"&&h(P=>v.reduceAssistantEvent(P,V)),m.abort();return}W.current.set(T,m)}h(K=>v.reduceAssistantEvent(K,V)),V.type==="response.terminal"&&(me(K=>K.filter(P=>P!==V.responseId)),ne())}}catch(j){E(b)&&!m.signal.aborted&&I===L.current&&(G(j),T||h(V=>({...V,status:Object.values(V.responses??{}).some(K=>!v.isResponseTerminal(K.status))?"streaming":"error"})))}finally{T&&W.current.get(T)===m&&W.current.delete(T),oe(m)}},ye=async(n,m,x,b)=>{if(!s.getResponse||!s.watchResponse)return;const I=new Set(n.filter(j=>j.role==="assistant"&&j.persistent).map(j=>j.responseId)),T=[...new Map(n.filter(j=>j.role==="user"&&j.responseId&&!I.has(j.responseId)).map(j=>[j.responseId,j.cursor??-1])).entries()].slice(-20);for(const[j,V]of T){if(!E(b)||x!==L.current)return;if(W.current.has(j))continue;const K=Q();try{const P=await s.getResponse(e,{chatId:m,responseId:j},{signal:K.signal});if(!E(b)||K.signal.aborted||x!==L.current||W.current.has(j))continue;h(pe=>v.reduceAssistantEvent(pe,v.isResponseTerminal(P.status)?{type:"response.snapshot",snapshot:P}:{type:"response.state",chatId:m,responseId:j,status:P.status})),P.status==="failed"||P.status==="cancelled"?h(pe=>v.reduceAssistantEvent(pe,{type:"response.terminal",chatId:m,responseId:j,status:P.status})):(W.current.set(j,K),le(s.watchResponse(e,{chatId:m,responseId:j,historyCursor:V},{signal:K.signal}),K,m))}catch(P){E(b)&&!K.signal.aborted&&G(P)}finally{W.current.get(j)!==K&&oe(K)}}},$e=async n=>{const m=++L.current,x=k.current,b=Q();Le(),J(void 0),S(!0),me([]),he.current=void 0,ce(n),h({messages:[],status:"idle",threadId:n.chatId}),B(-1),l(!1),R(!1);try{const[I,T]=await Promise.all([s.getConversation(e,{chatId:n.chatId},{signal:b.signal}),s.loadConversation(e,{threadId:n.chatId,cursor:-1,signal:b.signal})]);if(!E(x)||b.signal.aborted||m!==L.current)return;if(I.chatId!==n.chatId||T.threadId!==n.chatId)throw new Error("Conversation mismatch");ce(I),h(v.createAssistantConversationState(T)),B(T.nextCursor??-1),l(T.hasMore??!1),ye(T.messages,n.chatId,m,x)}catch(I){E(x)&&!b.signal.aborted&&m===L.current&&G(I)}finally{oe(b),E(x)&&m===L.current&&S(!1)}},xe=async()=>{if(M.current)return M.current;if(te.current??={requestId:Ee()},te.current.promise)return te.current.promise;const n=k.current,m=L.current,x=Q(),b=te.current;return Z(!0),b.promise=s.createConversation(e,{requestId:b.requestId},{signal:x.signal}).then(I=>{if(!E(n)||x.signal.aborted||m!==L.current)throw Object.assign(new Error("Stale create"),{name:"AbortError"});return te.current=void 0,ce(I),h({messages:[],status:"idle",threadId:I.chatId}),ne(),I}).finally(()=>{oe(x),b.promise=void 0,E(n)&&Z(!1)}),b.promise},We=async()=>{if(!(X||te.current?.promise)){L.current+=1,Le(),ce(void 0),J(void 0),he.current=void 0,h(v.createAssistantConversationState()),l(!1),B(-1);try{await xe()}catch(n){G(n)}}},De=async n=>{const m=Q();he.current=n,J(void 0),g.current.messages.some(x=>x.id===n.message.id)||h(x=>v.appendUserMessage(x,n.message)),await le(s.run(n,{signal:m.signal}),m,n.threadId)},Oe=async(n,m)=>{if(!(!n.trim()&&!m?.length))try{const x=await xe(),b={id:Ee(),content:n,...m?{parts:m}:{}};await De({threadId:x.chatId,message:b,context:e,capabilities:{artifactSchemaVersions:[],artifactKinds:[],templates:[]}})}catch(x){G(x)}},Ve=async()=>{const n=he.current;if(!n||n.threadId!==M.current?.chatId){M.current&&await $e(M.current);return}const m=g.current.messages.find(x=>x.id===n.message.id);if(m?.responseId&&s.watchResponse){const x=m.responseId;if(W.current.has(x))return;const b=Q();W.current.set(x,b),J(void 0),await le(s.watchResponse(e,{chatId:n.threadId,responseId:x,historyCursor:m.cursor},{signal:b.signal}),b,n.threadId)}else await De(n)},fe=async(n=g.current.activeRunId)=>{const m=M.current;if(!m||!n||!s.cancelResponse||ue.includes(n))return;const x=k.current,b=L.current,I=Q();me(T=>[...T,n]),J(void 0);try{const T=await s.cancelResponse(e,{chatId:m.chatId,responseId:n},{signal:I.signal});if(!E(x)||b!==L.current)return;if(v.isResponseTerminal(T.status))h(j=>v.reduceAssistantEvent(j,{type:"response.snapshot",snapshot:T})),me(j=>j.filter(V=>V!==n));else if(!W.current.has(n)&&s.watchResponse){const j=Q();W.current.set(n,j),le(s.watchResponse(e,{chatId:m.chatId,responseId:n},{signal:j.signal}),j,m.chatId)}}catch(T){E(x)&&b===L.current&&(G(T),me(j=>j.filter(V=>V!==n)))}finally{oe(I)}},qe=async(n,m=M.current)=>{if(!m||X)return;const x=k.current,b=Q();Z(!0),J(void 0);try{const I=await s.updateConversation(e,{chatId:m.chatId,expectedRevision:m.revision,...n},{signal:b.signal});if(!E(x))return;M.current?.chatId===I.chatId&&ce(I),await ne()}catch(I){if(E(x)){G(I);try{const T=await s.getConversation(e,{chatId:m.chatId},{signal:b.signal});E(x)&&M.current?.chatId===m.chatId&&ce(T)}catch{}ne()}}finally{oe(b),E(x)&&Z(!1)}},He=async(n=M.current)=>{if(!n||X)return;const m=k.current,x=Q();Z(!0),J(void 0);try{if(await s.deleteConversation(e,{chatId:n.chatId,expectedRevision:n.revision},{signal:x.signal}),!E(m))return;M.current?.chatId===n.chatId&&(L.current+=1,Le(),ce(void 0),h(v.createAssistantConversationState())),await ne()}catch(b){E(m)&&G(b)}finally{oe(x),E(m)&&Z(!1)}},Xe=async(n,m,x="",b="")=>{const I=M.current;if(!I||!n.persistent||!s.setFeedback||F.includes(n.id))return;const T={chatId:I.chatId,messageId:n.id,rating:m,...x?{reason:x}:{},...b?{comment:b}:{}},j=we.current.get(n.id),{requestId:V,...K}=j??{requestId:""},P=j&&JSON.stringify(K)===JSON.stringify(T)?j:{...T,requestId:Ee()};we.current.set(n.id,P);const pe=k.current,Fe=L.current,Ge=Q();ae(ve=>[...ve,n.id]),J(void 0);try{const ve=await s.setFeedback(e,P,{signal:Ge.signal});return!E(pe)||Fe!==L.current||we.current.get(n.id)!==P?void 0:(h(be=>({...be,messages:be.messages.map(Me=>Me.id===n.id&&ve.revision>=(Me.feedback?.revision??0)?{...Me,feedback:ve}:Me)})),we.current.delete(n.id),!0)}catch(ve){return E(pe)&&Fe===L.current&&G(ve),!1}finally{oe(Ge),E(pe)&&ae(ve=>ve.filter(be=>be!==n.id))}},Ze=async()=>{if(!M.current||!p||ee)return;const n=k.current,m=L.current,x=M.current,b=Q();S(!0);try{const I=await s.loadConversation(e,{threadId:x.chatId,cursor:N,signal:b.signal});if(!E(n)||m!==L.current)return;const T=v.createAssistantConversationState(I),j=[...new Map([...g.current.messages,...T.messages].map(P=>[P.id,P])).values()];let V=0;const K=[];for(const P of j.slice(-200).reverse()){if(V+=[...P.content].length,V>1e6)break;K.unshift(P)}K.length<j.length&&R(!0),h(P=>({...P,messages:K})),B(I.nextCursor??N),l(I.hasMore??!1),ye(I.messages,x.chatId,m,n)}catch(I){E(n)&&G(I)}finally{oe(b),E(n)&&S(!1)}};i.useEffect(()=>(k.current+=1,c.current=o,te.current=void 0,he.current=void 0,we.current.clear(),ce(void 0),$([]),y(""),h(v.createAssistantConversationState()),J(void 0),S(a),Z(!1),me([]),ae([]),a&&ne(),()=>{k.current+=1,L.current+=1;for(const n of ie.current)n.abort();ie.current.clear(),W.current.clear()}),[a,o,s]);const _e=c.current===o;return{enabled:a,state:_e?d:v.createAssistantConversationState(),setState:h,chats:_e?_:[],chat:_e?A:void 0,listCursor:O,historyMore:p,historyTruncated:C,loading:!_e||ee,busy:X,error:_e?D:void 0,cancelling:ue,feedbackBusy:F,refresh:ne,select:$e,create:We,ensureChat:xe,send:Oe,retry:Ve,stop:fe,update:qe,remove:He,feedback:Xe,moreHistory:Ze,setError:J}}const es=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"M5 5.5h14v10H9l-4 3v-13Z"}),t.jsx("path",{d:"M8 9h8M8 12h6"})]}),ts=()=>t.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:t.jsx("path",{d:"M12 5v14M5 12h14"})});function ss({id:e,manager:s,onDismiss:a,onNewConversation:o,triggerRef:r}){const[c,d]=i.useState(""),[f,g]=i.useState(!1),h=i.useRef(null);return i.useEffect(()=>{d(s.chat?.title??""),g(!1)},[s.chat?.chatId,s.chat?.title]),i.useEffect(()=>{const _=$=>{const A=$.target;A instanceof Node&&(h.current?.contains(A)||r.current?.contains(A)||a())};return document.addEventListener("pointerdown",_),()=>{document.removeEventListener("pointerdown",_)}},[a,r]),t.jsxs("div",{"aria-label":"任务列表",className:"make-ai-assistant__conversation-controls",id:e,ref:h,role:"dialog",children:[t.jsxs("div",{className:"make-ai-assistant__conversation-heading",children:[t.jsx("span",{children:"最近对话"}),t.jsx("button",{"aria-label":"刷新任务列表",className:"make-ai-assistant__conversation-refresh",disabled:s.busy,type:"button",onClick:()=>{s.refresh()},children:"刷新"})]}),t.jsxs("nav",{"aria-label":"对话列表",className:"make-ai-assistant__conversation-list",children:[s.chats.map(_=>t.jsxs("div",{className:"make-ai-assistant__conversation-row",children:[t.jsxs("button",{type:"button","aria-pressed":s.chat?.chatId===_.chatId,onClick:()=>{a(),s.select(_)},children:[t.jsx(es,{}),t.jsx("span",{children:_.title||"未命名对话"})]}),t.jsx("button",{type:"button",disabled:s.busy,"aria-label":`${_.pinned?"取消置顶":"置顶"} ${_.title}`,onClick:()=>{s.update({pinned:!_.pinned},_)},children:_.pinned?"★":"☆"})]},_.chatId)),!s.loading&&!s.chats.length?t.jsx("p",{children:"暂无对话,发送消息即可新建"}):null,s.listCursor?t.jsx("button",{className:"make-ai-assistant__conversation-more",type:"button",onClick:()=>{s.refresh(s.listCursor)},children:"更多对话"}):null]}),s.chat?t.jsxs("details",{className:"make-ai-assistant__conversation-management",children:[t.jsx("summary",{children:"管理当前对话"}),t.jsxs("div",{className:"make-ai-assistant__conversation-actions",children:[t.jsx("input",{"aria-label":"对话标题",maxLength:255,value:c,onChange:_=>d(_.currentTarget.value)}),t.jsx("button",{type:"button",disabled:s.busy||!c.trim(),onClick:()=>{s.update({title:c})},children:"保存标题"}),t.jsx("button",{type:"button",disabled:s.busy,onClick:()=>g(!0),children:"删除对话"}),f?t.jsxs("div",{role:"group","aria-label":"确认删除对话",children:[t.jsxs("span",{children:["删除“",s.chat.title,"”?"]}),t.jsx("button",{type:"button",disabled:s.busy,onClick:()=>{g(!1),s.remove()},children:"确认删除"}),t.jsx("button",{type:"button",onClick:()=>g(!1),children:"保留"})]}):null,s.historyMore?t.jsx("button",{type:"button",disabled:s.loading,onClick:()=>{s.moreHistory()},children:"继续加载历史"}):null,s.historyTruncated||s.state.historyTruncated?t.jsx("p",{children:"当前展示有界消息窗口,可重新选择对话从头读取。"}):null]})]}):null,s.error?t.jsxs("div",{className:"make-ai-assistant__conversation-error",role:"alert",children:[t.jsx("span",{children:s.error}),t.jsx("button",{type:"button",onClick:()=>{s.retry()},children:"恢复对话"})]}):null,o?t.jsxs("button",{className:"make-ai-assistant__conversation-new",type:"button",onClick:o,children:[t.jsx(ts,{}),t.jsx("span",{children:"新建对话"})]}):null]})}function as({message:e,manager:s}){const[a,o]=i.useState(!1),[r,c]=i.useState(""),[d,f]=i.useState(""),g=s.feedbackBusy.includes(e.id);if(!e.persistent||e.role!=="assistant"||e.intermediate)return null;const h=e.feedback?.rating??"none";return t.jsxs("div",{className:"make-ai-assistant__feedback","aria-label":"回答反馈",children:[t.jsx("button",{type:"button","aria-label":"点赞","aria-pressed":h==="like",disabled:g,onClick:()=>{s.feedback(e,h==="like"?"none":"like")},children:"赞"}),t.jsx("button",{type:"button","aria-label":"点踩","aria-pressed":h==="dislike",disabled:g,onClick:()=>{if(h==="dislike"){s.feedback(e,"none");return}c(e.feedback?.reason??""),f(e.feedback?.comment??""),o(!0)},children:"踩"}),h==="dislike"?t.jsx("button",{type:"button",disabled:g,onClick:()=>{c(e.feedback?.reason??""),f(e.feedback?.comment??""),o(!0)},children:"修改反馈"}):null,a?t.jsxs("form",{onSubmit:_=>{_.preventDefault(),s.feedback(e,"dislike",r,d).then($=>{$&&o(!1)})},children:[t.jsx("input",{"aria-label":"反馈原因",maxLength:128,value:r,onChange:_=>c(_.currentTarget.value),placeholder:"原因(可选)"}),t.jsx("textarea",{"aria-label":"反馈说明",maxLength:4e3,value:d,onChange:_=>f(_.currentTarget.value),placeholder:"补充说明(可选)"}),t.jsx("button",{type:"submit",disabled:g,children:"提交反馈"}),t.jsx("button",{type:"button",onClick:()=>o(!1),children:"取消"})]}):null]})}const jt=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 ns({part:e,context:s,transport:a,chatId:o}){const[r,c]=i.useState(),[d,f]=i.useState(),[g,h]=i.useState(!1),_=i.useRef([]),$=i.useRef(void 0);i.useEffect(()=>()=>{$.current?.abort(),_.current.forEach(H=>URL.revokeObjectURL(H))},[]);const A=async H=>{if(!a.readContent||g)return;const M=new AbortController;$.current=M,h(!0),f(void 0);try{const O=await a.readContent(s,{chatId:o,contentRef:e.media.contentRef},{signal:M.signal});if(M.signal.aborted)return;const y=new Blob([new Uint8Array(O).buffer],{type:H&&jt.has(e.media.contentType)?e.media.contentType:"application/octet-stream"}),N=URL.createObjectURL(y);if(_.current.push(N),H)c(N);else{const B=document.createElement("a");B.href=N,B.download=e.name??"attachment",B.click()}}catch(O){M.signal.aborted||f(lt(O))}finally{M.signal.aborted||h(!1)}};return t.jsxs("div",{className:"make-ai-assistant__attachment",children:[t.jsxs("span",{children:[e.name??"附件"," · ",e.media.sizeBytes," 字节"]}),a.readContent?t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",disabled:g,onClick:()=>{A(!1)},children:"下载附件"}),jt.has(e.media.contentType)?t.jsx("button",{type:"button",disabled:g,onClick:()=>{A(!0)},children:"预览附件"}):null]}):null,d?t.jsx("span",{role:"alert",children:d}):null,r&&e.kind==="image"?t.jsx("img",{src:r,alt:e.name??"附件图片"}):null,r&&e.kind==="audio"?t.jsx("audio",{src:r,controls:!0}):null,r&&e.kind==="video"?t.jsx("video",{src:r,controls:!0}):null]})}function rs({message:e,context:s,transport:a,chatId:o}){return t.jsx(t.Fragment,{children:e.parts?.map((r,c)=>r.kind==="text"?null:t.jsx(ns,{part:r,context:s,transport:a,chatId:o},r.id??`${e.id}:${c}`))})}const is=e=>e.type.split(";")[0].trim().toLowerCase()||"application/octet-stream",os=e=>e.startsWith("image/")&&e!=="image/svg+xml"?"image":e.startsWith("audio/")?"audio":e.startsWith("video/")?"video":"file",cs=(e,s)=>new Promise((a,o)=>{const r=new FileReader,c=()=>s.removeEventListener("abort",d),d=()=>{r.abort(),c(),o(Object.assign(new Error("Read aborted"),{name:"AbortError"}))};if(s.aborted){d();return}s.addEventListener("abort",d,{once:!0}),r.onload=()=>{c(),a(new Uint8Array(r.result))},r.onerror=()=>{c(),o(new Error("无法读取文件"))},r.readAsArrayBuffer(e)});function ls(e,s,a){const[o,r]=i.useState([]),c=i.useRef(new Map),d=i.useRef(Promise.resolve()),f=s.scopeKey?.(e)??e.app.id,g=i.useRef(f);g.current=f;const h=i.useRef(void 0),_=a.enabled&&s.features?.attachments===!0,$=(p,l)=>{!c.current.has(p.draft.id)||p.scope!==g.current||(p.draft={...p.draft,...l},r([...c.current.values()].map(C=>C.draft)))},A=()=>{for(const p of c.current.values())p.controller.abort();c.current.clear(),r([]),h.current=void 0,d.current=Promise.resolve()};i.useEffect(()=>(A(),A),[f,s]),i.useEffect(()=>{h.current&&a.chat?.chatId!==h.current&&A()},[a.chat?.chatId]);const H=async p=>{const l=p.controller.signal,C=()=>{if(l.aborted||p.scope!==g.current||!c.current.has(p.draft.id))throw Object.assign(new Error("Upload aborted"),{name:"AbortError"})};try{if(C(),p.file.size>64<<20)throw new Error("文件不能超过 64 MiB");const R=await a.ensureChat();C(),h.current=R.chatId;const ee=is(p.file);$(p,{status:"uploading",error:void 0});let S=p.draft.upload?await s.getUpload(e,{chatId:R.chatId,uploadId:p.draft.upload.id},{signal:l}):await s.startUpload(e,{chatId:R.chatId,fileId:p.draft.fileId,name:p.file.name,contentType:ee,sizeBytes:p.file.size},{signal:l});if(C(),$(p,{upload:S}),S.name!==p.file.name||S.contentType!==ee||S.sizeBytes!==p.file.size)throw new Error("上传文件身份不一致");if(S.status!=="ready"){S=await s.getUpload(e,{chatId:R.chatId,uploadId:S.id},{signal:l}),C();const X=new Set(S.completedParts),Z=Math.ceil(p.file.size/S.partSize);for(let D=0;D<Z;D+=1){if(C(),!X.has(D)){const J=await cs(p.file.slice(D*S.partSize,Math.min(p.file.size,(D+1)*S.partSize)),l);C(),await s.uploadPart(e,{chatId:R.chatId,uploadId:S.id,part:D,bytes:J},{signal:l}),C(),X.add(D)}$(p,{progress:X.size/Math.max(Z,1)})}$(p,{status:"completing"}),S=await s.completeUpload(e,{chatId:R.chatId,uploadId:S.id},{signal:l}),C()}if(S.status!=="ready"||!S.content)throw new Error("上传尚未完成");$(p,{status:"ready",progress:1,upload:S})}catch(R){$(p,{status:l.aborted?"paused":"failed",error:l.aborted?void 0:lt(R)})}},M=p=>{if(_){if(p.length+c.current.size>32){a.setError("每条消息最多包含 32 个附件或文本片段");return}for(const l of p){const C={id:Ee(),fileId:Ee(),name:l.name,size:l.size,status:"queued",progress:0},R={draft:C,file:l,controller:new AbortController,scope:f};c.current.set(C.id,R),d.current=d.current.then(()=>H(R))}r([...c.current.values()].map(l=>l.draft))}},O=p=>{const l=c.current.get(p);!l||!["paused","failed"].includes(l.draft.status)||(l.controller=new AbortController,$(l,{status:"queued"}),d.current=d.current.then(()=>H(l)))},y=p=>{c.current.get(p)?.controller.abort(),c.current.delete(p),r([...c.current.values()].map(C=>C.draft))},N=p=>c.current.get(p)?.controller.abort(),B=o.flatMap(p=>{const l=p.upload;if(p.status!=="ready"||!l?.content)return[];const C=os(l.contentType);return[{id:p.id,kind:C,name:l.name,media:{contentRef:l.content.contentRef,contentType:l.contentType,sizeBytes:l.content.sizeBytes,digestSha256:l.content.digestSha256}}]});return{enabled:_,drafts:o,parts:B,pending:o.some(p=>p.status!=="ready"),add:M,retry:O,remove:y,pause:N,clear:A}}function ds({attachments:e,onOpenChange:s,open:a,triggerRef:o}){const r=i.useRef(null),c=i.useRef(null);i.useEffect(()=>{if(!a)return;const f=g=>{const h=g.target;h instanceof Node&&!r.current?.contains(h)&&s(!1)};return document.addEventListener("pointerdown",f),()=>{document.removeEventListener("pointerdown",f)}},[s,a]);const d=f=>{e.add(Array.from(f.files??[])),f.value="",s(!1)};return t.jsxs("div",{className:"make-ai-assistant__attachment-composer",ref:r,children:[t.jsx("button",{"aria-expanded":a,"aria-haspopup":"menu","aria-label":"添加附件",className:"make-ai-assistant__attachment-trigger",ref:o,title:"添加附件",type:"button",onClick:()=>s(!a),children:t.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:t.jsx("path",{d:"M12 5v14M5 12h14"})})}),a?t.jsx("div",{"aria-label":"附件选项",className:"make-ai-assistant__attachment-menu",role:"menu",children:t.jsxs("button",{role:"menuitem",type:"button",onClick:()=>c.current?.click(),children:[t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"M12 15V4M7.5 8.5 12 4l4.5 4.5"}),t.jsx("path",{d:"M5 14v5h14v-5"})]}),t.jsx("span",{children:"上传文件或图片"})]})}):null,t.jsx("input",{"aria-label":"上传文件或图片",hidden:!0,multiple:!0,ref:c,type:"file",onChange:f=>d(f.currentTarget)})]})}function us({attachments:e}){return e.drafts.length?t.jsx("div",{className:"make-ai-assistant__attachment-drafts","aria-label":"待发送附件",children:t.jsx("ul",{children:e.drafts.map(s=>t.jsxs("li",{children:[t.jsxs("span",{children:[s.name," ·"," ",s.status==="ready"?"已上传":s.status==="completing"?"校验中":s.status==="paused"?"已暂停":s.status==="failed"?"上传失败":`${Math.round(s.progress*100)}%`]}),s.error?t.jsx("span",{role:"alert",children:s.error}):null,s.status==="failed"||s.status==="paused"?t.jsx("button",{type:"button",onClick:()=>e.retry(s.id),children:"重试上传"}):null,s.status==="uploading"?t.jsx("button",{type:"button",onClick:()=>e.pause(s.id),children:"暂停上传"}):null,t.jsx("button",{type:"button",onClick:()=>e.remove(s.id),children:"移除附件"})]},s.id))})}):null}const ms=e=>`${e}-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,hs="Make",fs=["总结当前页面数据","找出需要关注的记录","列出我有权限查看的数据对象"],Lt=(e,s)=>s??`${e?.trim()||hs} AI 助手`,ps=e=>e??fs,vs=480,$t=1024,gs=.72,_t=16,rt=(e,s,a)=>Math.min(Math.max(e,Math.min(s,a)),a),ys=e=>typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0,xs=(e,s,a)=>{const o=Math.min($t,a*gs);return Math.max(e,Math.min(s??o,a))},bs=e=>typeof e=="number"?Number.isFinite(e)?`${e}px`:void 0:e?.trim()||void 0;class Y extends Error{}const tt=(e,s)=>{if(!(typeof e!="object"||e===null))return e[s]},js=e=>{const s=tt(e,"status");return typeof s=="number"?s:tt(tt(e,"response"),"status")},_s=e=>{const s=tt(e,"code"),a=js(e),o=e instanceof Error?e.message:"",r=[s,o].filter(g=>typeof g=="string").join(" ").toLowerCase(),d=globalThis.navigator?.onLine===!1||/network|fetch|timeout|offline|connection|网络|连接|超时/.test(r),f=typeof a=="number"&&a>=500||/server|service|服务器|服务异常/.test(r);return d?{actionLabel:"重新连接",description:"请检查网络后再试。",kind:"network",label:"网络连接",title:"网络连接不可用"}:f?{actionLabel:"重新加载",description:"服务暂时未能响应,请稍后重试。",kind:"service",label:"服务异常",title:"服务暂时不可用"}:{actionLabel:"重新加载",description:"请稍后重试;若问题持续出现,请联系管理员。",kind:"unknown",label:"加载异常",title:"暂时无法加载对话"}},kt=e=>{try{const s=e?.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})}},ks=async e=>{if(globalThis.navigator?.clipboard?.writeText){await globalThis.navigator.clipboard.writeText(e);return}if(typeof document>"u"||!document.body)throw new Error("Clipboard API is unavailable");const s=document.createElement("textarea");s.value=e,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")},Dt=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.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"}),t.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"})]}),Is=()=>t.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:t.jsx("path",{d:"m6 6 12 12M18 6 6 18"})}),As=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"M8 8h10v12H8z"}),t.jsx("path",{d:"M6 16H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),ws=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),t.jsx("path",{d:"M4 4v4h4"}),t.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),t.jsx("path",{d:"M20 20v-4h-4"})]}),Ms=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"M12 4v11"}),t.jsx("path",{d:"m7 10 5 5 5-5"}),t.jsx("path",{d:"M5 20h14"})]}),Rs=()=>t.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:t.jsx("path",{d:"M12 5v14M5 12h14"})}),Ss=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"M10 6h9M10 12h9M10 18h9"}),t.jsx("path",{d:"M5 6h.01M5 12h.01M5 18h.01"})]}),Cs=()=>t.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:t.jsx("path",{d:"m7 10 5 5 5-5"})}),It=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"m4 4 17 8-17 8 3-8-3-8Z"}),t.jsx("path",{d:"M7 12h14"})]}),Ot=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),t.jsx("path",{d:"M4 4v4h4"}),t.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),t.jsx("path",{d:"M20 20v-4h-4"})]}),Es=()=>t.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[t.jsx("circle",{cx:"12",cy:"12",r:"8"}),t.jsx("path",{d:"M12 8v4.5"}),t.jsx("path",{d:"M12 16h.01"})]}),st=({className:e=""})=>t.jsx("span",{className:`make-ai-assistant__avatar ${e}`.trim(),"aria-hidden":"true",children:t.jsx(Dt,{})}),Ts=({src:e})=>e?t.jsx("span",{className:"make-ai-assistant__user-avatar","aria-hidden":"true",children:t.jsx("img",{alt:"",src:e})}):null,Ns=({userAvatarUrl:e,userName:s})=>{const a=s?.trim();return!a&&!e?null:t.jsxs("div",{className:"make-ai-assistant__message-identity",children:[a?t.jsx("span",{className:"make-ai-assistant__message-sender",children:a}):null,t.jsx(Ts,{src:e})]})},it=e=>{const s=e.trim();if(!(!s.startsWith("|")||!s.endsWith("|")))return s.slice(1,-1).split("|").map(a=>a.trim())},Ls=e=>e.length>0&&e.every(s=>/^:?-{3,}:?$/.test(s)),$s=(e,s)=>{const a=it(e[s]??""),o=it(e[s+1]??"");if(!a||!o||a.length!==o.length||!Ls(o))return;const r=[];let c=s+2;for(;c<e.length;){const d=it(e[c]??"");if(!d||d.length!==a.length)break;r.push(d),c+=1}return{headers:a,lastIndex:c-1,rows:r}},Ds=e=>{const s=[],a=[],o=[],r=[],c=e.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
- `),d=()=>{const h=a.join(`
4
- `).trim();a.length=0,h&&s.push({type:"paragraph",text:h})},f=()=>{o.length&&s.push({type:"list",items:o.splice(0)})},g=()=>{const h=r.join(`
5
- `).trim();r.length=0,h&&s.push({type:"pre",text:h})};for(let h=0;h<c.length;h+=1){const _=c[h]??"",$=_.trim();if(!$){d(),f(),g();continue}const A=$s(c,h);if(A){d(),f(),g(),s.push({headers:A.headers,rows:A.rows,type:"table"}),h=A.lastIndex;continue}const H=/^(#{1,6})\s+(.+)$/.exec($);if(H){d(),f(),g();const O=(H[2]??"").replace(/\s+#+\s*$/,"").trim();O&&s.push({type:"heading",level:H[1]?.length,text:O});continue}if(/^\s*\|.+\|\s*$/.test(_)){d(),f(),r.push(_.trim());continue}const M=/^\s*[-*]\s+(.+)$/.exec(_);if(M){d(),g(),o.push(M[1]?.trim()??"");continue}f(),g(),a.push($)}return d(),f(),g(),s},Ue=e=>{const s=[],a=/(\*\*[^*]+\*\*|`[^`]+`)/g;let o=0;for(const r of e.matchAll(a)){const c=r[0],d=r.index??0;d>o&&s.push(e.slice(o,d)),c.startsWith("**")?s.push(t.jsx("strong",{children:c.slice(2,-2)},`${d}-strong`)):s.push(t.jsx("code",{children:c.slice(1,-1)},`${d}-code`)),o=d+c.length}return o<e.length&&s.push(e.slice(o)),s},At=({content:e})=>{const s=Ds(e);return s.length?t.jsx("div",{className:"make-ai-assistant__bubble make-ai-assistant__assistant-text",children:s.map((a,o)=>{if(a.type==="heading"){const r=a.level<=2?"h3":"h4";return t.jsx(r,{className:`make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${a.level}`,children:Ue(a.text)},`${o}-heading`)}return a.type==="paragraph"?t.jsx("p",{children:Ue(a.text)},`${o}-paragraph`):a.type==="pre"?t.jsx("pre",{children:t.jsx("code",{children:a.text})},`${o}-pre`):a.type==="table"?t.jsx("div",{"aria-label":"表格内容,可横向滚动",className:"make-ai-assistant__markdown-table-scroll",role:"region",tabIndex:0,children:t.jsxs("table",{className:"make-ai-assistant__markdown-table",children:[t.jsx("thead",{children:t.jsx("tr",{children:a.headers.map((r,c)=>t.jsx("th",{scope:"col",children:Ue(r)},`${c}-${r}`))})}),t.jsx("tbody",{children:a.rows.map((r,c)=>t.jsx("tr",{children:r.map((d,f)=>t.jsx("td",{children:Ue(d)},`${f}-${d}`))},`${c}-${r.join("|")}`))})]})},`${o}-table`):t.jsx("ul",{children:a.items.map((r,c)=>t.jsx("li",{children:Ue(r)},`${c}-${r}`))},`${o}-list`)})}):null},Ft=({assistantName:e})=>t.jsxs("div",{className:"make-ai-assistant__message-identity",children:[t.jsx(st,{className:"make-ai-assistant__avatar--message"}),t.jsx("span",{className:"make-ai-assistant__message-sender",children:e})]}),Pt=e=>{for(let s=e.messages.length-1;s>=0;s-=1){const a=e.messages[s];if(a.role==="assistant"&&a.status==="streaming")return a.id}},Os=e=>{for(let s=e.messages.length-1;s>=0;s-=1)if(e.messages[s].role==="user")return s;return-1},Bt=e=>{const s=Os(e);if(!(s<0))for(let a=e.messages.length-1;a>s;a-=1){const o=e.messages[a];if(o.role==="assistant")return o.id}},Fs=e=>{if(e.status==="idle")for(let s=e.messages.length-1;s>=0;s-=1){const a=e.messages[s];if(a.role==="assistant"&&a.status==="complete")return a.id}},Ps=e=>{for(let s=e.messages.length-1;s>=0;s-=1){const a=e.messages[s];if(a.role==="user")return a}},Bs=(e,s)=>{const a=e.messages.findIndex(o=>o.id===s&&o.role==="user");return{...e,error:void 0,progress:void 0,status:"streaming",messages:a<0?e.messages:e.messages.slice(0,a+1)}},zs=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=48,wt=(e="smooth")=>globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":e,ot=(e,s)=>{typeof e.scrollTo=="function"?e.scrollTo({top:e.scrollHeight,behavior:s}):e.scrollTop=e.scrollHeight},zt=({error:e,onRetry:s})=>t.jsxs("div",{className:"make-ai-assistant__message-status make-ai-assistant__message-status--error","data-error-presentation":"request-failed",role:"alert",children:[t.jsxs("div",{className:"make-ai-assistant__message-status-header",children:[t.jsx("span",{className:"make-ai-assistant__message-status-icon","aria-hidden":"true",children:t.jsx(Es,{})}),t.jsx("strong",{children:"请求未完成"})]}),t.jsx("span",{className:"make-ai-assistant__message-status-message",children:e.message}),e.retryable&&s?t.jsxs("button",{className:"make-ai-assistant__retry",type:"button",onClick:s,children:[t.jsx(Ot,{}),"重新发送"]}):null]}),Ks=({error:e,onRetry:s})=>{const a=_s(e);return t.jsxs("section",{"aria-live":"assertive",className:"make-ai-assistant__load-failure","data-load-failure-kind":a.kind,role:"alert",children:[t.jsx("span",{className:"make-ai-assistant__load-failure-icon","aria-hidden":"true",children:t.jsxs("svg",{viewBox:"0 0 24 24",children:[t.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"}),t.jsx("path",{d:"m9.2 14.8 5.6-5.6M9.2 9.2l5.6 5.6"})]})}),t.jsxs("div",{className:"make-ai-assistant__load-failure-copy",children:[t.jsx("span",{className:"make-ai-assistant__load-failure-label",children:a.label}),t.jsx("h3",{children:a.title}),t.jsx("p",{children:a.description})]}),t.jsxs("button",{className:"make-ai-assistant__retry make-ai-assistant__retry--primary",type:"button",onClick:s,children:[t.jsx(Ot,{}),a.actionLabel]})]})},Kt=({active:e,steps:s})=>{if(!e||!s?.length)return null;const a=s[s.length-1]??"处理中";return t.jsxs("details",{className:"make-ai-assistant__process",open:!0,children:[t.jsxs("summary",{children:[t.jsxs("span",{className:"make-ai-assistant__progress",role:"status",children:[t.jsx("span",{"aria-hidden":"true"}),t.jsx("span",{children:a})]}),t.jsxs("span",{className:"make-ai-assistant__process-count",children:[s.length," 步"]})]}),t.jsx("ol",{children:s.map((o,r)=>t.jsxs("li",{"data-step-active":r===s.length-1?!0:void 0,children:[t.jsx("span",{"aria-hidden":"true"}),t.jsx("span",{children:o})]},`${r}-${o}`))})]})},Us=({copyFeedback:e,onCopy:s,onRegenerate:a})=>!s&&!a?null:t.jsxs("div",{className:"make-ai-assistant__reply-actions","aria-label":"回复操作",children:[s?t.jsx("button",{"aria-label":"复制回答",className:"make-ai-assistant__reply-action make-ai-assistant__reply-copy","data-tooltip":"复制",type:"button",onClick:s,children:t.jsx(As,{})}):null,a?t.jsx("button",{"aria-label":"重新生成",className:"make-ai-assistant__reply-action make-ai-assistant__reply-regenerate","data-tooltip":"重新生成",type:"button",onClick:a,children:t.jsx(ws,{})}):null,e?t.jsx("span",{className:"make-ai-assistant__reply-feedback","data-copy-status":e.status,role:"status",children:e.message}):null]}),Mt=({assistantName:e,error:s,onRetry:a,progress:o})=>{const r=s?"error":"progress";return s?.message??o?.message?t.jsx("article",{"aria-label":`${e}的${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:t.jsxs("div",{className:"make-ai-assistant__message-turn",children:[t.jsx(Ft,{assistantName:e}),t.jsx("div",{className:"make-ai-assistant__message-stack",children:s?t.jsx(zt,{error:s,onRetry:a}):t.jsx(Kt,{active:!0,steps:o?.steps})})]})}):null},Ws=(e,s,a,o,r,c,d,f,g,h,_,$,A,H,M,O)=>{const y=Bt(e),N=Pt(e),B=Fs(e);let p;return e.messages.map(l=>{if(l.intermediate)return t.jsxs("details",{className:"make-ai-assistant__process",children:[t.jsx("summary",{children:"处理过程"}),t.jsx(At,{content:l.content})]},l.id);const C=l.role==="assistant",R=p;C||(p=l);const ee=l.id===N,S=l.id===y?e.error:void 0,X=l.error??S,Z=!C&&!!(g?.trim()||h),D=C?d:g?.trim()||"用户",J=C&&l.status==="complete"&&!X&&(l.content.trim()||l.id===B);return t.jsx("article",{"aria-label":`${D}的消息`,className:`make-ai-assistant__message make-ai-assistant__message--${l.role}`,"data-message-role":l.role,"data-message-state":X?"error":void 0,"data-message-status":l.status,"data-message-has-identity":C||Z?!0:void 0,children:t.jsxs("div",{className:"make-ai-assistant__message-turn",children:[C?t.jsx(Ft,{assistantName:d}):Z?t.jsx(Ns,{userAvatarUrl:h,userName:g}):null,t.jsxs("div",{className:"make-ai-assistant__message-stack",children:[C&&l.responseId&&e.responses?.[l.responseId]?.status==="cancelled"?t.jsx("p",{className:"make-ai-assistant__response-status",role:"status",children:"已停止生成"}):null,l.content?C?t.jsx(At,{content:l.content}):t.jsx("div",{className:"make-ai-assistant__bubble",children:l.content}):l.status==="streaming"?t.jsxs("div",{className:"make-ai-assistant__typing","aria-label":`${d}正在思考`,children:[t.jsx("span",{}),t.jsx("span",{}),t.jsx("span",{})]}):null,C?t.jsx(Kt,{active:ee&&e.status==="streaming",steps:l.progressSteps}):null,X?t.jsx(zt,{error:X,onRetry:S?f:void 0}):null,l.artifacts.map(ue=>t.jsx(St,{artifact:ue,context:s,onAction:r,onActionError:c,registry:a,theme:o},ue.id)),M&&O&&e.threadId?t.jsx(rs,{message:l,context:s,transport:O,chatId:e.threadId}):null,M&&O?.features?.feedback?t.jsx(as,{message:l,manager:M}):null,J?t.jsx(Us,{copyFeedback:_?.messageId===l.id?{message:_.message,status:_.status}:void 0,onCopy:l.content.trim()?()=>A(l.id,l.content):void 0,onRegenerate:$&&l.id===B&&R?()=>H({userMessage:R,assistantMessage:l}):void 0}):null]})]})},`${e.threadId??"local"}:${l.id}`)})};function Ut({assistantName:e="AI 助手",brandName:s,context:a,onAction:o,onActionError:r,onClose:c,onNewConversation:d,headerHeight:f,registry:g,suggestions:h,title:_,theme:$,transport:A,userAvatarUrl:H,userName:M,visible:O}){const y=Qt(a,A),N=ls(a,A,y),B=Lt(s,_),p=bs(f),l=ct($),C=l||p?{...l,...p?{"--make-ai-internal-header-height":p}:{}}:void 0,[R,ee]=i.useState(""),[S,X]=i.useState(!1),[Z,D]=i.useState(!1),J=y.enabled?A.scopeKey?.(a)??a.app.id:"";i.useLayoutEffect(()=>{y.enabled&&ee("")},[J,y.enabled]);const[ue,me]=i.useState(v.createAssistantConversationState),F=y.enabled?y.state:ue,ae=y.enabled?y.setState:me,ie=i.useRef(F);ie.current=F;const[W,L]=i.useState(void 0),[k,z]=i.useState(void 0),[te,he]=i.useState(0),[we,E]=i.useState(()=>A.loadConversation?"loading":"ready"),Q=y.enabled?y.loading&&!F.messages.length?"loading":"ready":we,[oe,ce]=i.useState(void 0),[Le,G]=i.useState(!1),ne=i.useRef(void 0),le=i.useRef(void 0),ye=i.useRef(0),$e=i.useRef(null),xe=i.useRef(null),We=i.useRef(null),De=i.useRef(null),Oe=i.useRef(null),Ve=i.useRef(null),fe=i.useRef(!0),qe=i.useRef(a.app.id),He=i.useRef(O),Xe=i.useId(),Ze=i.useMemo(()=>g??Nt(),[g]),_e=i.useMemo(()=>ps(h),[h]),n=u=>{const U=ne.current,q=le.current?.iterator;return!U&&!q?!1:(ye.current+=1,ne.current=void 0,le.current=void 0,console.info("[make-ai-assistant] local run cancellation requested",{reason:u}),U?.abort(),kt(q),!0)};i.useEffect(()=>()=>{n("unmount")},[]),i.useEffect(()=>{if(y.enabled)return;const u=A.loadConversation,U=qe.current!==a.app.id;if(qe.current=a.app.id,n("reinitialize"),U&&(ee(""),fe.current=!0),L(void 0),z(void 0),G(!1),ae(v.createAssistantConversationState()),!u){ce(void 0),E("ready");return}const q=new AbortController;return ce(void 0),E("loading"),console.info("[make-ai-assistant] conversation load start",{appId:a.app.id}),u.call(A,a,{signal:q.signal}).then(se=>{q.signal.aborted||(ae(v.createAssistantConversationState(se)),E("ready"),console.info("[make-ai-assistant] conversation load success",{appId:a.app.id,messageCount:se.messages.length}))}).catch(se=>{q.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"))}),()=>q.abort()},[a.app.id,te,A,y.enabled]),i.useEffect(()=>{const u=xe.current;if(!u||!fe.current)return;G(!1);const U=requestAnimationFrame(()=>{if(!fe.current)return;const q=F.status==="streaming"||globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";ot(u,q)});return()=>cancelAnimationFrame(U)},[F.messages,F.progress,F.status]),i.useEffect(()=>{O||(X(!1),D(!1))},[O]),i.useEffect(()=>{const u=O&&!He.current;if(He.current=O,!u)return;const U=requestAnimationFrame(()=>{const q=xe.current;if(q&&fe.current){G(!1);const Pe=ie.current.status==="streaming"?"auto":wt();ot(q,Pe)}else q&&G(ie.current.messages.length>0);const se=We.current;(se&&!se.disabled?se:Ve.current??$e.current?.querySelector("button:not(:disabled)"))?.focus()});return()=>cancelAnimationFrame(U)},[O]);const m=()=>{const u=xe.current;if(!u)return;const U=zs(u);fe.current=U,G(!U&&ie.current.messages.length>0)},x=()=>{const u=xe.current;if(!u)return;fe.current=!0,G(!1);const U=wt();ot(u,U)},b=async(u,U)=>{const q=u.trim(),se=ie.current,je=U?.regenerateFrom,Pe=A.regenerate;if(!q||Q!=="ready"||se.status==="streaming"||ne.current||je&&!Pe)return;if(v.countCodePointsUpTo(q,v.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)>v.MAKE_AI_CONVERSATION_LIMITS.messageCharacters){L(`输入内容过长,请控制在 ${v.MAKE_AI_CONVERSATION_LIMITS.messageCharacters} 个字符以内`);return}const Ye={id:je?.userMessage.id??ms("user"),content:q},Je=je?Bs(se,je.userMessage.id):v.appendUserMessage(se,Ye),Qe=new AbortController,Re=ye.current+1;ye.current=Re,ne.current=Qe,L(void 0),z(void 0),G(!fe.current&&se.messages.length>0),je||ee(""),ae(Je);try{let ke=!1,re,ut=0,mt=0,ht=0,at=0,Be=0;const ze=new Map,ft=new Set,pt=new Set([...Je.messages.map(et=>et.id),Ye.id]),Ke=new Set,vt=Ae.createArtifactCapabilities(Ze),gt={signal:Qe.signal};let nt;if(je){if(!Pe)throw new Y("当前 AI 助手不支持重新生成");nt=Pe({threadId:Je.threadId,message:Ye,assistantMessage:{id:je.assistantMessage.id,content:je.assistantMessage.content},context:a,capabilities:vt},gt)}else nt=A.run({threadId:Je.threadId,message:Ye,context:a,capabilities:vt},gt);const yt=nt[Symbol.asyncIterator]();for(le.current={iterator:yt,requestVersion:Re};;){const et=await yt.next();if(ye.current!==Re||et.done)break;let w;try{w=v.parseAssistantEvent(et.value)}catch(de){throw new Y(de instanceof Error?de.message:"Invalid assistant event")}if(w.type==="message.start"){if(re!==void 0&&re!==w.runId)throw new Y("AI 助手响应 run id 不一致");if(re??=w.runId,mt+=1,mt>v.MAKE_AI_CONVERSATION_LIMITS.assistantMessagesPerRun)throw new Y("AI 助手单次响应消息数量超过限制");if(pt.has(w.messageId))throw new Y("AI 助手响应包含重复的 message id");pt.add(w.messageId),Ke.add(w.messageId),ze.set(w.messageId,0)}if(w.type==="message.delta"){if(!Ke.has(w.messageId))throw new Y("AI 助手响应事件顺序无效");const de=ze.get(w.messageId)??0,Se=v.countCodePointsUpTo(w.delta,v.MAKE_AI_CONVERSATION_LIMITS.messageCharacters-Be);if(Be+Se>v.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new Y("AI 助手响应文本超过大小限制");Be+=Se,ze.set(w.messageId,de+Se)}if(w.type==="message.replace"){if(!Ke.has(w.messageId))throw new Y("AI 助手响应事件顺序无效");const de=ze.get(w.messageId)??0,Se=v.countCodePointsUpTo(w.content,v.MAKE_AI_CONVERSATION_LIMITS.messageCharacters),xt=Be-de+Se;if(xt>v.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new Y("AI 助手响应文本超过大小限制");Be=xt,ze.set(w.messageId,Se)}if(w.type==="run.progress"){if(re!==void 0&&re!==w.runId)throw new Y("AI 助手响应 run id 不一致");if(re??=w.runId,ht+=1,ht>v.MAKE_AI_CONVERSATION_LIMITS.progressStepsPerRun)throw new Y("AI 助手处理过程数量超过限制");const de=v.countCodePointsUpTo(w.message,v.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun-at);if(at+de>v.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun)throw new Y("AI 助手处理过程文本超过大小限制");at+=de}if(w.type==="artifact"){if(!Ke.has(w.messageId))throw new Y("AI 助手响应事件顺序无效");if(ut+=1,ut>v.MAKE_AI_CONVERSATION_LIMITS.artifactsPerRun)throw new Y("AI 助手单次响应 Artifact 数量超过限制");if(ft.has(w.artifact.id))throw new Y("AI 助手响应包含重复的 Artifact id");ft.add(w.artifact.id)}if(w.type==="message.complete"&&!Ke.delete(w.messageId))throw new Y("AI 助手响应事件顺序无效");if(w.type==="run.complete"&&re!==void 0&&re!==w.runId)throw new Y("AI 助手响应 run id 不一致");if(w.type==="run.cancelled"&&w.runId!==void 0&&re!==void 0&&re!==w.runId)throw new Y("AI 助手响应 run id 不一致");if(ae(de=>v.reduceAssistantEvent(de,w)),w.type==="error"||w.type==="run.cancelled"||w.type==="run.complete"){ke=!0;break}}if(!ke)throw new Y("AI 助手流式响应在终止事件前结束")}catch(ke){if(ye.current!==Re)return;if(Qe.signal.aborted){ae(re=>v.reduceAssistantEvent(re,{type:"run.cancelled"}));return}console.error("[make-ai-assistant] assistant run failed",{appId:a.app.id,errorType:ke instanceof Error?ke.name:typeof ke}),ae(re=>v.reduceAssistantEvent(re,{type:"error",code:"TRANSPORT_ERROR",message:ke instanceof Y?ke.message:"连接失败,请重试",retryable:!0}))}finally{ye.current===Re&&ne.current===Qe&&(ne.current=void 0),le.current?.requestVersion===Re&&(kt(le.current.iterator),le.current=void 0)}},I=u=>{if(y.enabled){if(N.pending)return L("请等待附件上传完成,或移除失败的附件"),Promise.resolve();const U=u.trim(),q=N.parts.length?[...U?[{id:Ee(),kind:"text",text:U}]:[],...N.parts]:void 0;return ee(""),N.clear(),y.send(U,q)}return b(u)},T=u=>b(u.userMessage.content,{regenerateFrom:u}),j=async(u,U)=>{try{await ks(U),z({messageId:u,message:"已复制",status:"success"})}catch(q){console.error("[make-ai-assistant] copy answer failed",{errorType:q instanceof Error?q.name:typeof q}),z({messageId:u,message:"复制失败",status:"error"})}},V=u=>{u.preventDefault(),I(R)},K=u=>{u.key==="Enter"&&!u.shiftKey&&!u.nativeEvent.isComposing&&(u.preventDefault(),I(R))},P=()=>{if(y.enabled){y.stop();return}n("stop")&&ae(u=>v.reduceAssistantEvent(u,{type:"run.cancelled"}))},pe=()=>{if(D(!1),y.enabled){ee(""),y.create(),d?.();return}n("new-conversation"),ee(""),L(void 0),z(void 0),G(!1),fe.current=!0,ae(v.createAssistantConversationState()),d?.()},Fe=y.enabled&&y.cancelling.length?"停止中":A.features?.remoteCancellation===!1?"停止接收":"停止生成",Ge=Pt(F),ve=Bt(F),be=Ps(F),Me=typeof A.regenerate=="function"&&A.features?.regeneration!==!1,dt=()=>{if(y.enabled){y.retry();return}be&&I(be.content)},Wt=u=>{if(u.key==="Escape"&&!(!S&&!Z)){if(u.preventDefault(),u.stopPropagation(),S){X(!1),De.current?.focus();return}D(!1),Oe.current?.focus()}};return t.jsxs("section",{className:`make-ai-assistant make-ai-assistant__panel${y.enabled?" make-ai-assistant__panel--managed":""}`,ref:$e,style:C,onKeyDown:Wt,onDragOver:u=>{N.enabled&&u.dataTransfer.types.includes("Files")&&u.preventDefault()},onDrop:u=>{N.enabled&&u.dataTransfer.files.length&&(u.preventDefault(),N.add(Array.from(u.dataTransfer.files)))},children:[t.jsxs("header",{className:"make-ai-assistant__header",children:[t.jsx("div",{className:"make-ai-assistant__header-leading",children:y.enabled?t.jsxs("button",{"aria-controls":Xe,"aria-expanded":Z,"aria-haspopup":"dialog","aria-label":"任务列表",className:"make-ai-assistant__task-list-trigger",ref:Oe,type:"button",onClick:()=>D(u=>!u),children:[t.jsx(Ss,{}),t.jsx("span",{children:"任务列表"}),t.jsx(Cs,{})]}):null}),t.jsxs("div",{className:"make-ai-assistant__header-center",children:[t.jsx(st,{}),t.jsx("h2",{className:"make-ai-assistant__header-title",title:B,children:B})]}),t.jsxs("div",{className:"make-ai-assistant__header-actions",children:[A.features?.newConversation!==!1?t.jsx("button",{"aria-label":"新建对话",className:"make-ai-assistant__icon-button",type:"button",onClick:pe,children:t.jsx(Rs,{})}):null,c?t.jsx("button",{"aria-label":`关闭 ${B}`,className:"make-ai-assistant__icon-button",type:"button",onClick:c,children:t.jsx(Is,{})}):null]})]}),y.enabled&&Z?t.jsx(ss,{id:Xe,manager:y,triggerRef:Oe,onDismiss:()=>D(!1),onNewConversation:A.features?.newConversation!==!1?pe:void 0}):null,t.jsxs("div",{className:"make-ai-assistant__body","aria-live":"polite","aria-relevant":"additions text",ref:xe,role:"log",onScroll:m,children:[Q==="loading"?t.jsxs("div",{className:"make-ai-assistant__empty",role:"status",children:[t.jsx(st,{}),t.jsx("h3",{children:"正在恢复对话"}),t.jsx("p",{children:"正在读取当前 App 的历史消息…"})]}):Q==="error"?t.jsx("div",{className:"make-ai-assistant__empty",children:t.jsx(Ks,{error:oe,onRetry:()=>he(u=>u+1)})}):F.messages.length===0?t.jsxs("div",{className:"make-ai-assistant__empty",children:[t.jsx(st,{}),t.jsx("h3",{children:"有什么可以帮你?"}),t.jsx("p",{children:"我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。"})]}):Ws(F,a,Ze,$,o,r,e,be?dt:void 0,M,H,k,Me,(u,U)=>{j(u,U)},u=>{T(u)},y.enabled?y:void 0,A),F.progress&&!Ge?t.jsx(Mt,{assistantName:e,progress:F.progress}):null,F.error&&!ve?t.jsx(Mt,{assistantName:e,error:F.error,onRetry:be?dt:void 0}):null]}),Le?t.jsx("button",{"aria-label":"回到最新消息",className:"make-ai-assistant__back-to-latest",type:"button",onClick:x,children:t.jsx(Ms,{})}):null,t.jsxs("footer",{className:"make-ai-assistant__composer-region",children:[N.enabled?t.jsx(us,{attachments:N}):null,Q==="ready"&&_e.length>0&&F.messages.length===0?t.jsx("div",{className:"make-ai-assistant__suggestions","aria-label":"推荐问题",children:_e.map((u,U)=>t.jsx("button",{type:"button",onClick:()=>{I(u)},children:u},`${U}-${u}`))}):null,t.jsxs("form",{className:"make-ai-assistant__composer",onSubmit:V,children:[t.jsx("textarea",{"aria-label":`向 ${e} 提问`,"aria-describedby":W?"make-ai-composer-error":void 0,"aria-invalid":W?!0:void 0,autoFocus:!0,disabled:Q!=="ready"||!y.enabled&&F.status==="streaming",placeholder:`询问当前 ${a.app.name??"App"} 中的数据…`,ref:We,rows:2,value:R,onChange:u=>{ee(u.currentTarget.value),L(void 0)},onKeyDown:K,onPaste:u=>{N.enabled&&u.clipboardData.files.length&&(u.preventDefault(),N.add(Array.from(u.clipboardData.files)))}}),N.enabled?t.jsx(ds,{attachments:N,open:S,triggerRef:De,onOpenChange:X}):null,t.jsxs("div",{className:"make-ai-assistant__composer-actions",children:[F.status==="streaming"?t.jsx("button",{"aria-label":Fe,className:"make-ai-assistant__send make-ai-assistant__send--stop","data-tooltip":Fe,ref:Ve,disabled:y.enabled&&y.cancelling.includes(F.activeRunId??""),type:"button",onClick:P,children:t.jsx("span",{"aria-hidden":"true"})}):t.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:Q!=="ready"||N.pending||!R.trim()&&!N.parts.length,type:"submit",children:t.jsx(It,{})}),y.enabled&&F.status==="streaming"?t.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:y.busy||N.pending||!R.trim()&&!N.parts.length,type:"submit",children:t.jsx(It,{})}):null]})]}),W?t.jsx("p",{id:"make-ai-composer-error",role:"alert",children:W}):null,t.jsx("p",{children:"AI 生成的结果可能存在偏差,重要数据请核对明细。"})]})]})}function Vs(e){return t.jsx(Ut,{...e,visible:!0})}function qs({defaultOpen:e=!1,hideLauncher:s=!1,launcher:a,launcherPosition:o="bottom-right",maxDrawerWidth:r,onOpenChange:c,open:d,...f}){const g=Lt(f.brandName,f.title),[h,_]=i.useState(e),[$,A]=i.useState(()=>e||d===!0),H=i.useRef(null),M=i.useRef(null),O=i.useRef(void 0),[y,N]=i.useState(),[B,p]=i.useState(vs),[l,C]=i.useState(!1),R=d??h,ee=ct(f.theme),S=ys(r),X=()=>xs(B,S,typeof window>"u"?$t:window.innerWidth),Z=X(),D=y===void 0?void 0:rt(y,B,Z),J=D===void 0&&S===void 0?void 0:{...D===void 0?{}:{"--make-ai-internal-drawer-width":`${D}px`},...S===void 0?{}:{"--make-ai-internal-drawer-max-width":`max(var(--make-ai-internal-drawer-min-width), ${S}px)`}};i.useLayoutEffect(()=>{D!==void 0&&D!==y&&N(D)},[D,y]);const ue=()=>{if(D!==void 0)return D;const k=M.current?.getBoundingClientRect().width;return k&&Number.isFinite(k)&&k>0?k:B},me=k=>{if(k.button!==0)return;const z=ue(),te=y===void 0?z:B;p(te),O.current={minimumWidth:te,pointerId:k.pointerId,startWidth:z,startX:k.clientX},C(!0),typeof k.currentTarget.setPointerCapture=="function"&&k.currentTarget.setPointerCapture(k.pointerId),k.preventDefault()},F=k=>{const z=O.current;if(!z||z.pointerId!==k.pointerId)return;const te=rt(z.startWidth+z.startX-k.clientX,z.minimumWidth,X());N(te)},ae=k=>{const z=O.current;!z||z.pointerId!==k.pointerId||(O.current=void 0,C(!1))},ie=k=>{const z=k.key==="ArrowLeft"?_t:k.key==="ArrowRight"?-_t:void 0;if(z===void 0)return;k.preventDefault();const te=ue(),he=y===void 0?te:B;p(he),N(rt(te+z,he,X()))},W=k=>{d===void 0&&_(k),c?.(k),k||requestAnimationFrame(()=>H.current?.focus())},L=()=>W(!R);return i.useEffect(()=>{R&&A(!0)},[R]),i.useEffect(()=>{if(!R)return;const k=z=>{z.key==="Escape"&&(W(!1),requestAnimationFrame(()=>H.current?.focus()))};return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[c,R]),t.jsxs("div",{className:"make-ai-assistant","data-open":R||void 0,style:ee,children:[!s&&(!R||a)?a?a({open:R,toggle:L}):t.jsxs("button",{"aria-label":R?`关闭 ${g}`:`打开 ${g}`,"aria-expanded":R,className:"make-ai-assistant__launcher","data-launcher-position":o,ref:H,type:"button",onClick:L,children:[t.jsx("span",{className:"make-ai-assistant__launcher-orbit","aria-hidden":"true"}),t.jsx(Dt,{})]}):null,$?t.jsxs("aside",{"aria-label":g,"aria-modal":"false",className:"make-ai-assistant__drawer","data-resizing":l||void 0,hidden:!R,ref:M,role:"dialog",style:J,children:[t.jsx("div",{"aria-label":"调整对话框宽度","aria-orientation":"vertical","aria-valuemax":Z,"aria-valuemin":B,"aria-valuenow":D??B,className:"make-ai-assistant__drawer-resize-handle",role:"separator",tabIndex:0,onKeyDown:ie,onPointerCancel:ae,onPointerDown:me,onPointerMove:F,onPointerUp:ae}),t.jsx(Ut,{...f,onClose:()=>W(!1),visible:R})]}):null]})}exports.createArtifactCapabilities=Ae.createArtifactCapabilities;exports.createArtifactTemplateRegistry=Ae.createArtifactTemplateRegistry;exports.extendArtifactTemplateRegistry=Ae.extendArtifactTemplateRegistry;exports.resolveArtifactTemplate=Ae.resolveArtifactTemplate;exports.MAKE_AI_ARTIFACT_KINDS=v.MAKE_AI_ARTIFACT_KINDS;exports.MAKE_AI_ARTIFACT_LIMITS=v.MAKE_AI_ARTIFACT_LIMITS;exports.MAKE_AI_ARTIFACT_SCHEMA_VERSION=v.MAKE_AI_ARTIFACT_SCHEMA_VERSION;exports.MAKE_AI_CONVERSATION_LIMITS=v.MAKE_AI_CONVERSATION_LIMITS;exports.appendUserMessage=v.appendUserMessage;exports.createAssistantConversationState=v.createAssistantConversationState;exports.parseArtifact=v.parseArtifact;exports.parseAssistantEvent=v.parseAssistantEvent;exports.reduceAssistantEvent=v.reduceAssistantEvent;exports.validateArtifact=v.validateArtifact;exports.ArtifactRenderer=St;exports.AssistantPanel=Vs;exports.MakeAiAssistant=qs;exports.createPlatformArtifactRegistry=Nt;exports.formatArtifactValue=Ie;exports.platformArtifactTemplates=Tt;
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;