@qfei-design/make-ai-assistant 0.2.14 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react.cjs +4 -62
- package/dist/react.mjs +2328 -2790
- package/dist/styles.css +133 -121
- package/package.ai.json +1 -1
- package/package.json +3 -5
package/dist/react.cjs
CHANGED
|
@@ -1,63 +1,5 @@
|
|
|
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,`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),c=require("react"),xe=require("./index.cjs"),w=require("./conversation-BpmWa2VL.cjs"),ht=require("./conversation-management-f1y0yRvt.cjs"),Ht=require("react-dom"),Kt=e=>e?.trim()||void 0,fe=(e,t)=>Kt(e)??t,kt=e=>{const t=Kt(e?.primary);if(t)return{"--make-ai-theme-primary":t,"--make-ai-theme-primary-hover":fe(e?.primaryHover,"color-mix(in srgb, var(--make-ai-theme-primary) 84%, #15233d)"),"--make-ai-theme-on-primary":fe(e?.onPrimary,"#fcfcff"),"--make-ai-theme-bg":fe(e?.background,"color-mix(in srgb, var(--make-ai-theme-primary) 2%, #fcfcff)"),"--make-ai-theme-surface":fe(e?.surface,"color-mix(in srgb, var(--make-ai-theme-primary) 4%, var(--make-ai-theme-bg))"),"--make-ai-theme-surface-strong":fe(e?.surfaceStrong,"color-mix(in srgb, var(--make-ai-theme-primary) 8%, var(--make-ai-theme-bg))"),"--make-ai-theme-text":fe(e?.text,"color-mix(in srgb, var(--make-ai-theme-primary) 12%, #252631)"),"--make-ai-theme-text-secondary":fe(e?.textSecondary,"color-mix(in srgb, var(--make-ai-theme-text) 74%, var(--make-ai-theme-primary))"),"--make-ai-theme-border":fe(e?.border,"color-mix(in srgb, var(--make-ai-theme-primary) 14%, var(--make-ai-theme-bg))"),"--make-ai-theme-overlay":fe(e?.overlay,"color-mix(in srgb, var(--make-ai-theme-text) 88%, var(--make-ai-theme-primary))"),"--make-ai-theme-on-overlay":fe(e?.onOverlay,"#fcfcff")}},Et=(e,t)=>!t||!c.isValidElement(e)||typeof e.type!="string"?e:c.cloneElement(e,{style:{...e.props.style,...t}});function Vt({artifact:e,context:t,fallback:s,onAction:n,onActionError:r,registry:l,theme:d}){const m=kt(d),y=xe.resolveArtifactTemplate(l,e,t);if(!y){const A=s?s(e):a.jsxs("section",{className:"make-ai-artifact make-ai-artifact--unsupported",role:"status",children:[a.jsx("strong",{children:"暂不支持展示此结果"}),a.jsxs("span",{children:["结果类型:",e.kind]})]});return Et(A,m)}const v={context:t,onAction:n,onActionError:r,theme:d,themeStyle:m},f=y.template.render(e,t,v);return Et(f,m)}const be=(e,t,s)=>{if(e==null||e==="")return"—";if(typeof e=="boolean")return e?"是":"否";if(typeof e!="number")return`${e}${t?.unit??""}`;const n=t?.precision,r={maximumFractionDigits:n??2,minimumFractionDigits:n};t?.style==="currency"&&t.currency?(r.style="currency",r.currency=t.currency):t?.style==="percent"&&(r.style="percent");try{const l=t?.style==="percent"?e/100:e;return`${new Intl.NumberFormat(s,r).format(l)}${t?.unit??""}`}catch{return`${e}${t?.unit??""}`}},Bt=e=>{let t=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY;for(const n of e)t=Math.min(t,n),s=Math.max(s,n);return Number.isFinite(t)&&Number.isFinite(s)?{min:t,max:s}:{min:0,max:0}},Wt=(e,t,s)=>{if(!s.onAction)return;const n=l=>{console.error("[make-ai-assistant] host action error handler failed",{actionId:e.id,artifactId:t.artifact.id,errorType:l instanceof Error?l.name:typeof l,intent:e.intent})},r=l=>{if(s.onActionError){try{Promise.resolve(s.onActionError(l,e,t)).catch(n)}catch(d){n(d)}return}console.error("[make-ai-assistant] host action failed",{actionId:e.id,artifactId:t.artifact.id,errorType:l instanceof Error?l.name:typeof l,intent:e.intent})};try{Promise.resolve(s.onAction(e,t)).catch(r)}catch(l){r(l)}},De=(e,t)=>e.actions?.length&&t.onAction?a.jsx("div",{className:"make-ai-artifact__actions",children:e.actions.map(s=>a.jsxs("button",{className:`make-ai-artifact__action make-ai-artifact__action--${s.appearance??"link"}`,type:"button",onClick:()=>Wt(s,{artifact:e,context:t.context},t),children:[s.label,a.jsx("span",{"aria-hidden":"true",children:"→"})]},s.id))}):null,Oe=(e,t,s="",n)=>a.jsxs("section",{"aria-label":e.title??`${e.kind} result`,className:`make-ai-artifact ${s}`.trim(),"data-artifact-density":e.presentation?.density,"data-artifact-kind":e.kind,style:n,children:[e.title?a.jsx("h4",{className:"make-ai-artifact__title",children:e.title}):null,e.summary?a.jsx("p",{className:"make-ai-artifact__summary",children:e.summary}):null,t]}),Ea=({artifact:e,renderContext:t})=>{const s=e.data.delta,n=s?be(s.value,s.format==="percent"?{style:"percent"}:void 0,t.context.locale):void 0;return Oe(e,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__metric-value",children:be(e.data.value,e.data.format,t.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,e.data.context?a.jsx("p",{className:"make-ai-artifact__context",children:e.data.context}):null,De(e,t)]}),"make-ai-artifact--metric",t.themeStyle)},Ta=({artifact:e,renderContext:t})=>Oe(e,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__comparison",children:e.data.items.map(s=>a.jsxs("div",{className:"make-ai-artifact__comparison-item",children:[a.jsx("span",{children:s.label}),a.jsx("strong",{children:be(s.value,s.format,t.context.locale)}),s.hint?a.jsx("small",{children:s.hint}):null]},s.id))}),De(e,t)]}),"make-ai-artifact--comparison",t.themeStyle),Ra=({artifact:e,renderContext:t})=>{const s=e.data.series.flatMap(d=>d.points.map(m=>m.y)),{max:n,min:r}=Bt(s),l=n-r||1;return Oe(e,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__trend",children:e.data.series.map(d=>a.jsxs("div",{className:"make-ai-artifact__trend-series",children:[a.jsx("div",{className:"make-ai-artifact__trend-label",children:d.label}),a.jsx("div",{className:"make-ai-artifact__trend-bars",children:d.points.map((m,y)=>{const v=18+(m.y-r)/l*70;return a.jsxs("div",{className:"make-ai-artifact__trend-point",children:[a.jsx("span",{"aria-label":`${m.x}: ${be(m.y,d.format,t.context.locale)}`,className:"make-ai-artifact__trend-bar",role:"img",style:{height:`${v}%`},title:`${m.x}: ${be(m.y,d.format,t.context.locale)}`}),a.jsx("small",{children:m.x})]},`${m.x}-${y}`)})})]},d.id))}),De(e,t)]}),"make-ai-artifact--trend",t.themeStyle)},$a=({artifact:e,renderContext:t})=>{const{max:s}=Bt(e.data.items.map(r=>Math.abs(r.value))),n=Math.max(s,1);return Oe(e,a.jsxs(a.Fragment,{children:[a.jsx("ol",{className:"make-ai-artifact__ranking",children:e.data.items.map((r,l)=>a.jsxs("li",{children:[a.jsx("span",{className:"make-ai-artifact__rank",children:l+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:be(r.value,r.format,t.context.locale)})]},r.id))}),De(e,t)]}),"make-ai-artifact--ranking",t.themeStyle)},La=(e,t)=>t.action??{id:`open-${t.id}`,label:t.title??t.id,intent:"open-record",target:{entityKey:e.data.entity.key,recordId:t.id}},za=({artifact:e,renderContext:t})=>Oe(e,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__record-list",children:e.data.records.length===0?a.jsx("p",{className:"make-ai-artifact__empty",children:"没有符合条件的记录"}):e.data.records.map(s=>{const n=La(e,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:e.data.columns.map(l=>a.jsxs("span",{children:[a.jsx("small",{children:l.label}),be(s.values[l.key],l.format,t.context.locale)]},l.key))}),t.onAction?a.jsx("span",{"aria-hidden":"true",children:"›"}):null]});return t.onAction?a.jsx("button",{className:"make-ai-artifact__record",type:"button",onClick:()=>Wt(n,{artifact:e,context:t.context},t),children:r},s.id):a.jsx("div",{className:"make-ai-artifact__record",children:r},s.id)})}),e.data.total!==void 0?a.jsxs("p",{className:"make-ai-artifact__record-total",children:["共 ",e.data.total," 条"]}):null,De(e,t)]}),"make-ai-artifact--record-list",t.themeStyle),Da=({artifact:e,renderContext:t})=>Oe(e,a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:`make-ai-artifact__notice make-ai-artifact__notice--${e.data.tone}`,children:[a.jsx("span",{"aria-hidden":"true",children:e.data.tone==="success"?"✓":e.data.tone==="warning"?"!":e.data.tone==="danger"?"×":"i"}),a.jsx("p",{children:e.data.body})]}),De(e,t)]}),"make-ai-artifact--notice",t.themeStyle),Le=(e,t,s)=>({id:e,kinds:[t],priority:0,render:s}),Oa=[Le("platform.metric.default","metric",(e,t,s)=>a.jsx(Ea,{artifact:e,renderContext:s})),Le("platform.comparison.default","comparison",(e,t,s)=>a.jsx(Ta,{artifact:e,renderContext:s})),Le("platform.trend.default","trend",(e,t,s)=>a.jsx(Ra,{artifact:e,renderContext:s})),Le("platform.ranking.default","ranking",(e,t,s)=>a.jsx($a,{artifact:e,renderContext:s})),Le("platform.record-list.default","record-list",(e,t,s)=>a.jsx(za,{artifact:e,renderContext:s})),Le("platform.notice.default","notice",(e,t,s)=>a.jsx(Da,{artifact:e,renderContext:s}))],Xt=xe.createArtifactTemplateRegistry(Oa).templates,Gt=(e=Xt)=>xe.createArtifactTemplateRegistry(e);const Pa=e=>e?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function Ua(e,t,s=[]){if(t==null)throw new Error("[lucide]: iconNode is required when icon name is used");return{name:Pa(e),size:24,node:t,...s.length>0?{aliases:s}:{}}}const Fa=e=>{let t="",s=!1;for(const n of e){if(n==="-"||n==="_"||n<=" "){s=t.length>0;continue}t.length===0?t+=n.toLowerCase():t+=s?n.toUpperCase():n,s=!1}return t};const qa=e=>{const t=Fa(e);return t.charAt(0).toUpperCase()+t.slice(1)};const gt=(...e)=>e.filter((t,s,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===s).join(" ").trim();const Ce={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function ft(e){return e!=null}function Ha(e,t={}){const s=t.attributeNames??{},n=N=>s[N]??N,r=e.size??e.width??Ce.width,l=e.size??e.height??Ce.height,d=e.aliases?.filter(N=>typeof N=="string"&&N.trim()!=="").map(N=>`lucide-${N}`)??[],m=[...e.name?[`lucide-${e.name}`]:[],...d],y=t.className?.split(" ").filter(Boolean)??[],v=t.includeDefaultClasses===!1?gt(...y):gt("lucide",...m,...y),f=t.absoluteStrokeWidth?Number(t.strokeWidth??Ce["stroke-width"])*Number(e.size??e.width??Ce.width)/Number(t.size??t.width??Ce.width):t.strokeWidth??Ce["stroke-width"];return["svg",{...Object.entries(Ce).reduce((N,[E,g])=>(N[n(E)]=g,N),{}),..."color"in t&&t.color&&{[n("stroke")]:t.color},..."size"in t&&ft(t.size)&&{[n("width")]:t.size,[n("height")]:t.size},..."width"in t&&ft(t.width)&&{[n("width")]:t.width},..."height"in t&&ft(t.height)&&{[n("height")]:t.height},[n("stroke-width")]:f,...v&&{[n("class")]:v},[n("viewBox")]:`0 0 ${r} ${l}`,...t.hasA11yProp===!1?{[n("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},e.node.map(N=>{const[E,g,D]=N,R=t.nonScalingStroke?{[n("vector-effect")]:"non-scaling-stroke",...g}:g;return D?[E,R,D]:[E,R]})]}function Ka(e,t={}){return Ha(e,{...t,attributeNames:{...t.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}const Va=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1},Ba=c.createContext({}),Wa=()=>c.useContext(Ba),Xa=c.forwardRef(({color:e,size:t,width:s,height:n,strokeWidth:r,absoluteStrokeWidth:l,nonScalingStroke:d,className:m="",children:y,iconNode:v=[],icon:f={node:v,aliases:[],size:24},...A},N)=>{const{size:E=24,strokeWidth:g=2,absoluteStrokeWidth:D=!1,nonScalingStroke:R=!1,color:P="currentColor",className:b=""}=Wa()??{},h=!!y||Va(A),[i,_,C=[]]=Ka(f,{color:e??P,width:s??t??E,height:n??t??E,strokeWidth:r??g,absoluteStrokeWidth:l??D,nonScalingStroke:d??R,className:gt(b,m),hasA11yProp:h,attributes:A});return c.createElement(i,{ref:N,..._},[...C.map(([B,I])=>c.createElement(B,I)),...Array.isArray(y)?y:[y]])});function q(e,t=[],s=[]){const n=typeof e=="string"?Ua(e,t,s):e,r=c.forwardRef(({className:l,...d},m)=>c.createElement(Xa,{ref:m,icon:n,className:l,...d}));return n.name&&(r.displayName=qa(n.name)),r}const Zt={name:"arrow-down-to-line",size:24,node:[["path",{d:"M12 17V3",key:"1cwfxf"}],["path",{d:"m6 11 6 6 6-6",key:"12ii2o"}],["path",{d:"M19 21H5",key:"150jfl"}]]};Zt.node;const Ga=q(Zt);const Jt={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};Jt.node;const Za=q(Jt);const Yt={name:"chevron-down",size:24,node:[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]};Yt.node;const Ja=q(Yt);const Qt={name:"chevron-up",size:24,node:[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]};Qt.node;const Ya=q(Qt);const ea={name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]};ea.node;const Qa=q(ea);const ta={name:"cloud-off",size:24,node:[["path",{d:"M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057",key:"1uxyv8"}],["path",{d:"M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78",key:"99tcn7"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]};ta.node;const es=q(ta);const aa={name:"copy",size:24,node:[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]};aa.node;const ts=q(aa);const sa={name:"file-text",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]};sa.node;const Tt=q(sa);const na={name:"list",size:24,node:[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]};na.node;const as=q(na);const ra={name:"maximize",size:24,node:[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]};ra.node;const ss=q(ra);const ia={name:"message-square-text",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M7 11h10",key:"1twpyw"}],["path",{d:"M7 15h6",key:"d9of3u"}],["path",{d:"M7 7h8",key:"af5zfr"}]]};ia.node;const ns=q(ia);const oa={name:"minimize",size:24,node:[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]};oa.node;const rs=q(oa);const ca={name:"pause",size:24,node:[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]};ca.node;const is=q(ca);const la={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]};la.node;const os=q(la);const da={name:"pin",size:24,node:[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]};da.node;const cs=q(da);const ua={name:"plus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]};ua.node;const _t=q(ua);const ma={name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]};ma.node;const dt=q(ma);const ha={name:"rotate-ccw",size:24,node:[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]};ha.node;const ls=q(ha);const fa={name:"send",size:24,node:[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]};fa.node;const Rt=q(fa);const pa={name:"sparkles",size:24,node:[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],aliases:["stars"]};pa.node;const va=q(pa);const ya={name:"thumbs-down",size:24,node:[["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}],["path",{d:"M17 14V2",key:"8ymqnk"}]]};ya.node;const ds=q(ya);const ga={name:"thumbs-up",size:24,node:[["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}],["path",{d:"M7 10v12",key:"1qc93n"}]]};ga.node;const us=q(ga);const ka={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};ka.node;const $t=q(ka);const _a={name:"triangle-alert",size:24,node:[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["alert-triangle"]};_a.node;const ms=q(_a);const ba={name:"upload",size:24,node:[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]};ba.node;const hs=q(ba);const xa={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};xa.node;const Ze=q(xa),ze=()=>globalThis.crypto.randomUUID(),Lt=1e3,pt=(e,t)=>e?.chatId===t.chatId&&e.revision>t.revision?e:t,bt=e=>{const t=e,s=t?.status??t?.response?.status;return s===410||t?.code==="AI_UPLOAD_EXPIRED"?"上传已过期,请移除后重新选择文件":s===409?"数据已变化或对话仍在运行,请刷新后重试":s===401||t?.code==="AI_AUTH_REQUIRED"||t?.code==="AI_AUTH_EXPIRED"?"登录已失效,请重新登录":s===403?"当前账号无权访问该对话":s===404?"对话或回答已不可见,请刷新列表":t?.message?.startsWith("输入内容过长")?t.message:"操作未完成,请重试或刷新对话"};function fs(e,t){const s=t.features?.conversationManagement===!0,n=s?t.scopeKey?.(e)??e.app.id:"",r=c.useRef(n);r.current=n;const l=c.useRef(n),[d,m]=c.useState(w.createAssistantConversationState),y=c.useRef(d),v=o=>{const u=typeof o=="function"?o(y.current):o;y.current=u,m(u)},[f,A]=c.useState([]),[N,E]=c.useState(),g=c.useRef(void 0),[D,R]=c.useState(""),[P,b]=c.useState(void 0),[h,i]=c.useState(!1),[_,C]=c.useState(!1),[B,I]=c.useState(s),[W,Y]=c.useState(!1),[se,G]=c.useState(),[ce,me]=c.useState([]),[je,Pe]=c.useState([]),U=c.useRef(new Set),K=c.useRef(new Map),O=c.useRef(0),J=c.useRef(0),re=c.useRef(0),pe=c.useRef(void 0),le=c.useRef(void 0),we=c.useRef(new Map),z=(o,u=n)=>J.current===o&&r.current===u,te=()=>{const o=new AbortController;return U.current.add(o),o},Q=o=>U.current.delete(o),ee=o=>{const u=o?pt(g.current,o):void 0;g.current=u,E(u)},Ue=o=>{A(u=>u.map(k=>k.chatId===o.chatId?pt(k,o):k))},Fe=o=>{A(u=>u.filter(k=>k.chatId!==o))},Je=()=>{re.current+=1},ie=()=>{for(const o of K.current.values())o.abort();K.current.clear()},X=o=>{o instanceof Error&&o.name==="AbortError"||(console.warn("[make-ai-assistant] conversation operation failed",{errorType:o instanceof Error?o.name:typeof o}),G(bt(o)))},oe=async o=>{if(!s||!t.listConversations)return;const u=J.current,k=++re.current,x=te();try{const S=await t.listConversations(e,{cursor:o},{signal:x.signal});if(!z(u)||x.signal.aborted||k!==re.current)return;A($=>{const j=new Map($.map(M=>[M.chatId,M])),T=S.chats.map(M=>pt(j.get(M.chatId),M));return[...new Map([...o?$:[],...T].map(M=>[M.chatId,M])).values()]}),R(S.nextCursor)}catch(S){z(u)&&!x.signal.aborted&&k===re.current&&X(S)}finally{Q(x),z(u)&&k===re.current&&I(!1)}},ge=async o=>{if(!t.getConversation)return;const u=J.current,k=te();try{const x=await t.getConversation(e,{chatId:o},{signal:k.signal});if(!z(u)||k.signal.aborted||x.chatId!==o)return;Ue(x),g.current?.chatId===o&&ee(x)}catch(x){z(u)&&!k.signal.aborted&&X(x)}finally{Q(k)}},Ie=async(o,u,k)=>{const x=J.current,S=O.current;let $;try{for await(const j of o){if(!z(x)||u.signal.aborted||S!==O.current||g.current?.chatId!==k)return;const T=w.parseAssistantEvent(j);if(T.type==="response.accepted"||T.type==="response.state"){$=T.responseId;const M=K.current.get($);if(M&&M!==u){T.type==="response.accepted"&&v(F=>w.reduceAssistantEvent(F,T)),u.abort();return}K.current.set($,u)}v(M=>w.reduceAssistantEvent(M,T)),T.type==="response.accepted"&&ge(k),T.type==="response.terminal"&&(me(M=>M.filter(F=>F!==T.responseId)),oe())}}catch(j){z(x)&&!u.signal.aborted&&S===O.current&&(X(j),$||v(T=>({...T,status:Object.values(T.responses??{}).some(M=>!ht.isResponseTerminal(M))?"streaming":"error"})))}finally{$&&K.current.get($)===u&&K.current.delete($),Q(u)}},ke=async(o,u,k,x)=>{if(!t.getResponse||!t.watchResponse)return;const S=new Set(o.filter(j=>j.role==="assistant"&&j.persistent).map(j=>j.responseId)),$=[...new Map(o.filter(j=>j.role==="user"&&j.responseId&&!S.has(j.responseId)).map(j=>[j.responseId,j.cursor])).entries()].slice(-20);for(const[j,T]of $){if(!z(x)||k!==O.current)return;if(K.current.has(j))continue;const M=te();try{const F=await t.getResponse(e,{chatId:u,responseId:j},{signal:M.signal});if(!z(x)||M.signal.aborted||k!==O.current||K.current.has(j))continue;v(ve=>w.reduceAssistantEvent(ve,ht.isResponseTerminal(F)?{type:"response.snapshot",snapshot:F}:{type:"response.state",chatId:u,responseId:j,status:F.status})),F.status==="failed"||F.status==="cancelled"?v(ve=>w.reduceAssistantEvent(ve,{type:"response.terminal",chatId:u,responseId:j,status:F.status})):(K.current.set(j,M),Ie(t.watchResponse(e,{chatId:u,responseId:j,historyCursor:T},{signal:M.signal}),M,u))}catch(F){z(x)&&!M.signal.aborted&&X(F)}finally{K.current.get(j)!==M&&Q(M)}}},Se=async o=>{const u=++O.current,k=J.current,x=te();ie(),G(void 0),I(!0),me([]),le.current=void 0,ee(o),v({messages:[],status:"idle",threadId:o.chatId}),b(void 0),i(!1),C(!1);try{const[S,$]=await Promise.all([t.getConversation(e,{chatId:o.chatId},{signal:x.signal}),t.loadConversation(e,{threadId:o.chatId,cursor:void 0,signal:x.signal})]);if(!z(k)||x.signal.aborted||u!==O.current)return;if(S.chatId!==o.chatId||$.threadId!==o.chatId)throw new Error("Conversation mismatch");ee(S),v(w.createAssistantConversationState($)),b($.nextCursor??-1),i($.hasMore??!1),ke($.messages,o.chatId,u,k)}catch(S){z(k)&&!x.signal.aborted&&u===O.current&&X(S)}finally{Q(x),z(k)&&u===O.current&&I(!1)}},Me=async()=>{if(g.current)return g.current;if(pe.current??={requestId:ze()},pe.current.promise)return pe.current.promise;const o=J.current,u=O.current,k=te(),x=pe.current;return Y(!0),x.promise=t.createConversation(e,{requestId:x.requestId},{signal:k.signal}).then(S=>{if(!z(o)||k.signal.aborted||u!==O.current)throw Object.assign(new Error("Stale create"),{name:"AbortError"});return pe.current=void 0,ee(S),v({messages:[],status:"idle",threadId:S.chatId}),oe(),S}).finally(()=>{Q(k),x.promise=void 0,z(o)&&Y(!1)}),x.promise},qe=async()=>{if(!(W||pe.current?.promise)){O.current+=1,ie(),ee(void 0),G(void 0),le.current=void 0,v(w.createAssistantConversationState()),i(!1),b(void 0);try{await Me()}catch(o){X(o)}}},He=async o=>{const u=te();le.current=o,G(void 0),y.current.messages.some(k=>k.id===o.message.id)||v(k=>w.appendUserMessage(k,o.message)),await Ie(t.run(o,{signal:u.signal}),u,o.threadId)},he=async(o,u)=>{if(!(!o.trim()&&!u?.length))try{const k=await Me(),x={id:ze(),content:o,...u?{parts:u}:{}};await He({threadId:k.chatId,message:x,context:e,capabilities:{artifactSchemaVersions:[],artifactKinds:[],templates:[]}})}catch(k){X(k)}},Ye=async()=>{const o=le.current;if(!o||o.threadId!==g.current?.chatId){g.current&&await Se(g.current);return}const u=y.current.messages.find(k=>k.id===o.message.id);if(u?.responseId&&t.watchResponse){const k=u.responseId;if(K.current.has(k))return;const x=te();K.current.set(k,x),G(void 0),await Ie(t.watchResponse(e,{chatId:o.threadId,responseId:k,historyCursor:u.cursor},{signal:x.signal}),x,o.threadId)}else await He(o)},Qe=async(o=y.current.activeRunId)=>{const u=g.current;if(!u||!o||!t.cancelResponse||ce.includes(o))return;const k=J.current,x=O.current,S=te();me($=>[...$,o]),G(void 0);try{const $=await t.cancelResponse(e,{chatId:u.chatId,responseId:o},{signal:S.signal});if(!z(k)||x!==O.current)return;if(ht.isResponseTerminal($))v(j=>w.reduceAssistantEvent(j,{type:"response.snapshot",snapshot:$})),me(j=>j.filter(T=>T!==o));else if(!K.current.has(o)&&t.watchResponse){const j=te();K.current.set(o,j),Ie(t.watchResponse(e,{chatId:u.chatId,responseId:o},{signal:j.signal}),j,u.chatId)}}catch($){z(k)&&x===O.current&&(X($),me(j=>j.filter(T=>T!==o)))}finally{Q(S)}},et=async(o,u=g.current)=>{if(!u||W)return!1;const k=J.current,x=te();Y(!0),G(void 0);try{const S=await t.updateConversation(e,{chatId:u.chatId,expectedRevision:u.revision,...o},{signal:x.signal});return z(k)?(Je(),Ue(S),g.current?.chatId===S.chatId&&ee(S),!0):!1}catch(S){if(z(k)){X(S);try{const $=await t.getConversation(e,{chatId:u.chatId},{signal:x.signal});z(k)&&g.current?.chatId===u.chatId&&ee($)}catch{}oe()}return!1}finally{Q(x),z(k)&&Y(!1)}},tt=async(o=g.current)=>{if(!o||W)return!1;const u=J.current,k=te();Y(!0),G(void 0);try{return await t.deleteConversation(e,{chatId:o.chatId,expectedRevision:o.revision},{signal:k.signal}),z(u)?(Je(),Fe(o.chatId),g.current?.chatId===o.chatId&&(O.current+=1,ie(),ee(void 0),v(w.createAssistantConversationState())),!0):!1}catch(x){return z(u)&&X(x),!1}finally{Q(k),z(u)&&Y(!1)}},at=async(o,u,k="",x="")=>{const S=g.current;if(!S||!o.persistent||!t.setFeedback||je.includes(o.id))return;const $={chatId:S.chatId,messageId:o.id,rating:u,...k?{reason:k}:{},...x?{comment:x}:{}},j=we.current.get(o.id),{requestId:T,...M}=j??{requestId:""},F=j&&JSON.stringify(M)===JSON.stringify($)?j:{...$,requestId:ze()};we.current.set(o.id,F);const ve=J.current,Ne=O.current,st=te();Pe(de=>[...de,o.id]),G(void 0);try{const de=await t.setFeedback(e,F,{signal:st.signal});return!z(ve)||Ne!==O.current||we.current.get(o.id)!==F?void 0:(v(Te=>({...Te,messages:Te.messages.map(p=>p.id===o.id&&de.revision>=(p.feedback?.revision??0)?{...p,feedback:de}:p)})),we.current.delete(o.id),!0)}catch(de){return z(ve)&&Ne===O.current&&X(de),!1}finally{Q(st),z(ve)&&Pe(de=>de.filter(Te=>Te!==o.id))}},Ee=async()=>{if(!g.current||!h||B)return;const o=J.current,u=O.current,k=g.current,x=te();I(!0);try{const S=await t.loadConversation(e,{threadId:k.chatId,cursor:P,signal:x.signal});if(!z(o)||u!==O.current)return;const $=w.createAssistantConversationState(S),j=[...new Map([...y.current.messages,...$.messages].map(F=>[F.id,F])).values()];let T=0;const M=[];for(const F of j.slice(-200).reverse()){if(T+=[...F.content].length,T>1e6)break;M.unshift(F)}M.length<j.length&&C(!0),v(F=>({...F,messages:M})),b(S.nextCursor??P),i(S.hasMore??!1),ke(S.messages,k.chatId,u,o)}catch(S){z(o)&&X(S)}finally{Q(x),z(o)&&I(!1)}},Ke=[...new Set([...f.filter(o=>o.titlePending).map(o=>o.chatId),...N?.titlePending?[N.chatId]:[]])].sort().join("\0");c.useEffect(()=>{if(!s||!t.getConversation||!Ke)return;const o=J.current,u=te(),k=Ke.split("\0"),x=new Set;let S;console.debug("[make-ai-assistant] watching pending conversation titles",{count:k.length});const $=async()=>{await Promise.all(k.map(async j=>{if(!x.has(j))try{const T=await t.getConversation(e,{chatId:j},{signal:u.signal});if(!z(o)||u.signal.aborted||T.chatId!==j)return;Ue(T),g.current?.chatId===j&&ee(T)}catch(T){if(!z(o)||u.signal.aborted)return;console.warn("[make-ai-assistant] title metadata refresh failed",{errorType:T instanceof Error?T.name:typeof T});const M=T?.status;M===401?(u.abort(),X(T)):(M===403||M===404)&&(x.add(j),g.current?.chatId===j&&X(T))}})),z(o)&&!u.signal.aborted&&k.some(j=>!x.has(j))&&(S=setTimeout(()=>{$()},Lt))};return S=setTimeout(()=>{$()},Lt),()=>{clearTimeout(S),u.abort(),Q(u)}},[s,n,t,Ke]),c.useEffect(()=>(J.current+=1,l.current=n,pe.current=void 0,le.current=void 0,we.current.clear(),ee(void 0),A([]),R(""),v(w.createAssistantConversationState()),G(void 0),I(s),Y(!1),me([]),Pe([]),s&&oe(),()=>{J.current+=1,O.current+=1;for(const o of U.current)o.abort();U.current.clear(),K.current.clear()}),[s,n,t]);const Ae=l.current===n;return{enabled:s,canEdit:t.features?.conversationEditing!==!1,state:Ae?d:w.createAssistantConversationState(),setState:v,chats:Ae?f:[],chat:Ae?N:void 0,listCursor:D,historyMore:h,historyTruncated:_,loading:!Ae||B,busy:W,error:Ae?se:void 0,cancelling:ce,feedbackBusy:je,refresh:oe,select:Se,create:qe,ensureChat:Me,send:he,retry:Ye,stop:Qe,update:et,remove:tt,feedback:at,moreHistory:Ee,setError:G}}const ps=({anchor:e,label:t,onDismiss:s})=>{const[n,r]=c.useState();if(c.useLayoutEffect(()=>{const d=()=>{if(!e.isConnected){s();return}const m=e.getBoundingClientRect(),y=m.top>=48?"above":"below";r({left:m.left+m.width/2,placement:y,top:y==="above"?m.top-8:m.bottom+8})};return d(),window.addEventListener("resize",d),document.addEventListener("scroll",d,!0),()=>{window.removeEventListener("resize",d),document.removeEventListener("scroll",d,!0)}},[e,s]),!n||typeof document>"u")return null;const l=e.closest(".make-ai-assistant")??document.body;return Ht.createPortal(a.jsx("span",{className:"make-ai-assistant__conversation-tooltip","data-placement":n.placement,role:"tooltip",style:{left:n.left,top:n.top},children:t}),l)};function vs({id:e,manager:t,onDismiss:s,onNewConversation:n,triggerRef:r}){const[l,d]=c.useState(),[m,y]=c.useState(""),[v,f]=c.useState(),[A,N]=c.useState(),E=c.useRef(null),g=(i,_)=>{N(C=>C?.anchor===_&&C.label===i?C:{anchor:_,label:i})},D=i=>{N(_=>_?.anchor===i?void 0:_)},R=i=>({"data-tooltip":i,onBlur:_=>D(_.currentTarget),onFocus:_=>g(i,_.currentTarget),onPointerEnter:_=>g(i,_.currentTarget),onPointerLeave:_=>D(_.currentTarget)}),P=()=>{d(void 0),y("")},b=async i=>{const _=m.trim();_&&await t.update({title:_},i)&&P()},h=async i=>{await t.remove(i)&&f(void 0)};return c.useEffect(()=>{const i=_=>{const C=_.target;C instanceof Node&&(E.current?.contains(C)||r.current?.contains(C)||s())};return document.addEventListener("pointerdown",i),()=>{document.removeEventListener("pointerdown",i)}},[s,r]),a.jsxs("div",{"aria-label":"任务列表",className:"make-ai-assistant__conversation-controls",id:e,ref:E,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:t.busy,type:"button",...R("刷新"),onClick:()=>{t.refresh()},children:a.jsx(dt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-refresh-icon"})})]}),a.jsxs("nav",{"aria-label":"对话列表",className:"make-ai-assistant__conversation-list",children:[t.chats.map(i=>{const _=l===i.chatId,C=v===i.chatId,B=i.title||"未命名对话";return a.jsxs("div",{className:"make-ai-assistant__conversation-row","data-active":t.chat?.chatId===i.chatId||void 0,"data-editing":_||C||void 0,children:[C?a.jsxs("div",{"aria-label":"确认删除对话",className:"make-ai-assistant__conversation-delete-confirmation",role:"group",children:[a.jsx(ms,{"aria-hidden":"true",className:"make-ai-assistant__conversation-delete-confirmation-icon"}),a.jsxs("span",{className:"make-ai-assistant__conversation-delete-confirmation-message",children:["确认删除“",B,"”?"]}),a.jsx("button",{"aria-label":`确认删除:${B}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger make-ai-assistant__conversation-delete-confirmation-confirm",disabled:t.busy||!t.canEdit,type:"button",...R("确认删除"),onClick:()=>{h(i)},children:a.jsx($t,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`取消删除:${B}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-delete-confirmation-cancel",disabled:t.busy,type:"button",...R("取消"),onClick:()=>f(void 0),children:a.jsx(Ze,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]}):_?a.jsx("input",{"aria-label":"对话标题",autoFocus:!0,className:"make-ai-assistant__conversation-row-title-input",disabled:t.busy,maxLength:255,value:m,onChange:I=>y(I.currentTarget.value),onKeyDown:I=>{I.nativeEvent.isComposing||(I.key==="Escape"&&(I.preventDefault(),P()),I.key==="Enter"&&(I.preventDefault(),b(i)))}}):a.jsxs("button",{"aria-pressed":t.chat?.chatId===i.chatId,className:"make-ai-assistant__conversation-row-select",type:"button",onClick:()=>{s(),t.select(i)},children:[a.jsx(ns,{"aria-hidden":"true"}),a.jsx("span",{children:B})]}),_?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:t.busy||!m.trim(),type:"button",...R("保存标题"),onClick:()=>{b(i)},children:a.jsx(Za,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":"取消修改标题",className:"make-ai-assistant__conversation-row-action",disabled:t.busy,type:"button",...R("取消"),onClick:P,children:a.jsx(Ze,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]}):C?null:a.jsxs("div",{className:"make-ai-assistant__conversation-row-actions",children:[a.jsx("button",{"aria-label":`${i.pinned?"取消置顶":"置顶"} ${B}`,"aria-pressed":i.pinned,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-pin",disabled:t.busy||!t.canEdit,type:"button",...R(i.pinned?"取消置顶":"置顶"),onClick:()=>{t.update({pinned:!i.pinned},i)},children:a.jsx(cs,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`修改标题:${B}`,className:"make-ai-assistant__conversation-row-action",disabled:t.busy||!t.canEdit,type:"button",...R("修改标题"),onClick:()=>{f(void 0),d(i.chatId),y(i.title)},children:a.jsx(os,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`删除:${B}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger",disabled:t.busy,type:"button",...R("删除"),onClick:()=>{P(),f(i.chatId)},children:a.jsx($t,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]})]},i.chatId)}),!t.loading&&!t.chats.length?a.jsx("p",{children:"暂无对话,发送消息即可新建"}):null,t.listCursor?a.jsx("button",{className:"make-ai-assistant__conversation-more",type:"button",onClick:()=>{t.refresh(t.listCursor)},children:"更多对话"}):null]}),t.chat&&(t.historyMore||t.historyTruncated||t.state.historyTruncated)?a.jsxs("div",{className:"make-ai-assistant__conversation-history-actions",children:[t.historyMore?a.jsx("button",{type:"button",disabled:t.loading,onClick:()=>{t.moreHistory()},children:"继续加载历史"}):null,t.historyTruncated||t.state.historyTruncated?a.jsx("p",{children:"当前展示有界消息窗口,可重新选择对话从头读取。"}):null]}):null,t.error?a.jsxs("div",{className:"make-ai-assistant__conversation-error",role:"alert",children:[a.jsx("span",{children:t.error}),a.jsx("button",{type:"button",onClick:()=>{t.retry()},children:"恢复对话"})]}):null,n?a.jsxs("button",{className:"make-ai-assistant__conversation-new",type:"button",onClick:n,children:[a.jsx(_t,{"aria-hidden":"true",className:"make-ai-assistant__conversation-new-icon"}),a.jsx("span",{children:"新建对话"})]}):null,A?a.jsx(ps,{anchor:A.anchor,label:A.label,onDismiss:()=>N(void 0)}):null]})}function ys({message:e,manager:t}){const[s,n]=c.useState(!1),[r,l]=c.useState(""),[d,m]=c.useState(""),y=t.feedbackBusy.includes(e.id);if(!e.persistent||e.role!=="assistant"||e.intermediate)return null;const v=e.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":v==="like",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"喜欢",disabled:y,onClick:()=>{t.feedback(e,v==="like"?"none":"like")},children:a.jsx(us,{"aria-hidden":"true",className:"make-ai-assistant__reply-feedback-icon"})}),a.jsx("button",{type:"button","aria-label":"不喜欢","aria-pressed":v==="dislike",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"不喜欢",disabled:y,onClick:()=>{if(v==="dislike"){t.feedback(e,"none");return}l(e.feedback?.reason??""),m(e.feedback?.comment??""),n(!0)},children:a.jsx(ds,{"aria-hidden":"true",className:"make-ai-assistant__reply-feedback-icon"})}),v==="dislike"?a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",disabled:y,onClick:()=>{l(e.feedback?.reason??""),m(e.feedback?.comment??""),n(!0)},children:"修改反馈"}):null,s?a.jsxs("form",{onSubmit:f=>{f.preventDefault(),t.feedback(e,"dislike",r,d).then(A=>{A&&n(!1)})},children:[a.jsx("input",{"aria-label":"反馈原因",maxLength:128,value:r,onChange:f=>l(f.currentTarget.value),placeholder:"原因(可选)"}),a.jsx("textarea",{"aria-label":"反馈说明",maxLength:4e3,value:d,onChange:f=>m(f.currentTarget.value),placeholder:"补充说明(可选)"}),a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"submit",disabled:y,children:"提交反馈"}),a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",onClick:()=>n(!1),children:"取消"})]}):null]})}const zt=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 gs({part:e,context:t,transport:s,chatId:n}){const[r,l]=c.useState(),[d,m]=c.useState(),[y,v]=c.useState(!1),f=c.useRef([]),A=c.useRef(void 0);c.useEffect(()=>()=>{A.current?.abort(),f.current.forEach(E=>URL.revokeObjectURL(E))},[]);const N=async E=>{if(!s.readContent||y)return;const g=new AbortController;A.current=g,v(!0),m(void 0);try{const D=await s.readContent(t,{chatId:n,contentRef:e.media.contentRef},{signal:g.signal});if(g.signal.aborted)return;const R=new Blob([new Uint8Array(D).buffer],{type:E&&zt.has(e.media.contentType)?e.media.contentType:"application/octet-stream"}),P=URL.createObjectURL(R);if(f.current.push(P),E)l(P);else{const b=document.createElement("a");b.href=P,b.download=e.name??"attachment",b.click()}}catch(D){g.signal.aborted||m(bt(D))}finally{g.signal.aborted||v(!1)}};return a.jsxs("div",{className:"make-ai-assistant__attachment",children:[a.jsxs("span",{children:[e.name??"附件"," · ",e.media.sizeBytes," 字节"]}),s.readContent?a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",disabled:y,onClick:()=>{N(!1)},children:"下载附件"}),zt.has(e.media.contentType)?a.jsx("button",{type:"button",disabled:y,onClick:()=>{N(!0)},children:"预览附件"}):null]}):null,d?a.jsx("span",{role:"alert",children:d}):null,r&&e.kind==="image"?a.jsx("img",{src:r,alt:e.name??"附件图片"}):null,r&&e.kind==="audio"?a.jsx("audio",{src:r,controls:!0}):null,r&&e.kind==="video"?a.jsx("video",{src:r,controls:!0}):null]})}function ks({message:e,context:t,transport:s,chatId:n}){return a.jsx(a.Fragment,{children:e.parts?.map((r,l)=>r.kind==="text"?null:r.kind==="unknown"?a.jsx("span",{className:"make-ai-assistant__attachment",children:r.textFallback??"此内容类型暂不支持展示"},r.id??`${e.id}:${l}`):a.jsx(gs,{part:r,context:t,transport:s,chatId:n},r.id??`${e.id}:${l}`))})}const Dt=e=>{switch(e.status){case"ready":return"已上传";case"completing":return"校验中";case"paused":return"已暂停";case"failed":return"上传失败";default:return`${Math.round(e.progress*100)}%`}},_s=(e,t)=>{switch(e.status){case"uploading":case"queued":return t;case"completing":return"校验";case"paused":return"暂停";case"failed":return"失败";case"ready":return}},ja=e=>e.type.split(";")[0].trim().toLowerCase()||"application/octet-stream",bs=e=>e.startsWith("image/")&&e!=="image/svg+xml"?"image":e.startsWith("audio/")?"audio":e.startsWith("video/")?"video":"file",xs=e=>{const t=ja(e);if(!(!t.startsWith("image/")||t==="image/svg+xml"||typeof URL>"u"||typeof URL.createObjectURL!="function"))return URL.createObjectURL(e)},Ot=e=>{e&&typeof URL<"u"&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(e)},js=(e,t)=>new Promise((s,n)=>{const r=new FileReader,l=()=>t.removeEventListener("abort",d),d=()=>{r.abort(),l(),n(Object.assign(new Error("Read aborted"),{name:"AbortError"}))};if(t.aborted){d();return}t.addEventListener("abort",d,{once:!0}),r.onload=()=>{l(),s(new Uint8Array(r.result))},r.onerror=()=>{l(),n(new Error("无法读取文件"))},r.readAsArrayBuffer(e)});function ws(e,t,s){const[n,r]=c.useState([]),l=c.useRef(new Map),d=c.useRef(Promise.resolve()),m=t.scopeKey?.(e)??e.app.id,y=c.useRef(m);y.current=m;const v=c.useRef(void 0),f=s.enabled&&t.features?.attachments===!0,A=(h,i)=>{!l.current.has(h.draft.id)||h.scope!==y.current||(h.draft={...h.draft,...i},r([...l.current.values()].map(_=>_.draft)))},N=()=>{for(const h of l.current.values())h.controller.abort(),Ot(h.draft.previewUrl);l.current.clear(),r([]),v.current=void 0,d.current=Promise.resolve()};c.useEffect(()=>(N(),N),[m,t]),c.useEffect(()=>{v.current&&s.chat?.chatId!==v.current&&N()},[s.chat?.chatId]);const E=async h=>{const i=h.controller.signal,_=()=>{if(i.aborted||h.scope!==y.current||!l.current.has(h.draft.id))throw Object.assign(new Error("Upload aborted"),{name:"AbortError"})};try{if(_(),h.file.size>64<<20)throw new Error("文件不能超过 64 MiB");const C=await s.ensureChat();_(),v.current=C.chatId;const B=ja(h.file);A(h,{status:"uploading",error:void 0});let I=h.draft.upload?await t.getUpload(e,{chatId:C.chatId,uploadId:h.draft.upload.id},{signal:i}):await t.startUpload(e,{chatId:C.chatId,fileId:h.draft.fileId,name:h.file.name,contentType:B,sizeBytes:h.file.size},{signal:i});if(_(),A(h,{upload:I}),I.name!==h.file.name||I.contentType!==B||I.sizeBytes!==h.file.size)throw new Error("上传文件身份不一致");if(I.status!=="ready"){if(I=await t.getUpload(e,{chatId:C.chatId,uploadId:I.id},{signal:i}),_(),I.status!=="uploading"||!Number.isSafeInteger(I.partSize)||I.partSize<=0||I.partSize>1<<20)throw new Error("当前上传状态无法继续,请重新选择文件");const W=new Set(I.completedParts),Y=Math.ceil(h.file.size/I.partSize);for(let se=0;se<Y;se+=1){if(_(),!W.has(se)){const G=await js(h.file.slice(se*I.partSize,Math.min(h.file.size,(se+1)*I.partSize)),i);_(),await t.uploadPart(e,{chatId:C.chatId,uploadId:I.id,part:se,bytes:G},{signal:i}),_(),W.add(se)}A(h,{progress:W.size/Math.max(Y,1)})}A(h,{status:"completing"}),I=await t.completeUpload(e,{chatId:C.chatId,uploadId:I.id},{signal:i}),_()}if(I.status!=="ready"||!I.content)throw new Error("上传尚未完成");A(h,{status:"ready",progress:1,upload:I})}catch(C){A(h,{status:i.aborted?"paused":"failed",error:i.aborted?void 0:bt(C)})}},g=h=>{if(f){if(h.length+l.current.size>32){s.setError("每条消息最多包含 32 个附件或文本片段");return}for(const i of h){const _={id:ze(),fileId:ze(),name:i.name,size:i.size,status:"queued",progress:0,previewUrl:xs(i)},C={draft:_,file:i,controller:new AbortController,scope:m};l.current.set(_.id,C),d.current=d.current.then(()=>E(C))}r([...l.current.values()].map(i=>i.draft))}},D=h=>{const i=l.current.get(h);!i||!["paused","failed"].includes(i.draft.status)||(i.controller=new AbortController,A(i,{status:"queued"}),d.current=d.current.then(()=>E(i)))},R=h=>{const i=l.current.get(h);i?.controller.abort(),Ot(i?.draft.previewUrl),l.current.delete(h),r([...l.current.values()].map(_=>_.draft))},P=h=>l.current.get(h)?.controller.abort(),b=n.flatMap(h=>{const i=h.upload;if(h.status!=="ready"||!i?.content)return[];const _=bs(i.contentType);return[{id:h.id,kind:_,name:i.name,media:{contentRef:i.content.contentRef,contentType:i.contentType,sizeBytes:i.content.sizeBytes,digestSha256:i.content.digestSha256}}]});return{enabled:f,drafts:n,parts:b,pending:n.some(h=>h.status!=="ready"),add:g,retry:D,remove:R,pause:P,clear:N}}function Is({attachments:e,onOpenChange:t,open:s,triggerRef:n}){const r=c.useRef(null),l=c.useRef(null);c.useEffect(()=>{if(!s)return;const m=y=>{const v=y.target;v instanceof Node&&!r.current?.contains(v)&&t(!1)};return document.addEventListener("pointerdown",m),()=>{document.removeEventListener("pointerdown",m)}},[t,s]);const d=m=>{e.add(Array.from(m.files??[])),m.value="",t(!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:()=>t(!s),children:a.jsx(_t,{"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:()=>l.current?.click(),children:[a.jsx(hs,{"aria-hidden":"true"}),a.jsx("span",{children:"上传文件或图片"})]})}):null,a.jsx("input",{"aria-label":"上传文件或图片",hidden:!0,multiple:!0,ref:l,type:"file",onChange:m=>d(m.currentTarget)})]})}function As({attachments:e,visible:t}){const[s,n]=c.useState(),r=e.drafts.find(f=>f.id===s),l=!!r,d=c.useRef(null),m=c.useRef(null),y=c.useCallback(()=>{n(void 0),m.current?.focus()},[]);if(c.useEffect(()=>{if(!l)return;const f=A=>{A.key==="Escape"&&(A.preventDefault(),A.stopImmediatePropagation(),y())};return document.addEventListener("keydown",f,!0),()=>document.removeEventListener("keydown",f,!0)},[y,l]),c.useEffect(()=>{t||n(void 0)},[t]),!e.drafts.length)return null;const v=typeof document>"u"?void 0:d.current?.closest(".make-ai-assistant")??document.body;return a.jsxs("div",{"aria-label":"待发送附件",className:"make-ai-assistant__attachment-drafts",ref:d,children:[a.jsx("ul",{children:e.drafts.map(f=>{const A=Dt(f),N=_s(f,A);return a.jsxs("li",{"aria-label":`${f.name},${A}`,"data-status":f.status,children:[f.previewUrl?a.jsx("button",{"aria-label":`预览附件 ${f.name}`,className:"make-ai-assistant__attachment-draft-preview-button",type:"button",onClick:E=>{m.current=E.currentTarget,n(f.id)},children:a.jsx("img",{alt:"",className:"make-ai-assistant__attachment-draft-preview",src:f.previewUrl})}):a.jsx("button",{"aria-label":`查看附件详情 ${f.name}`,className:"make-ai-assistant__attachment-draft-file",type:"button",onClick:E=>{m.current=E.currentTarget,n(f.id)},children:a.jsx(Tt,{"aria-hidden":"true"})}),N?a.jsx("span",{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-status",children:N}):null,f.error?a.jsx("span",{className:"make-ai-assistant__attachment-draft-error",role:"alert",children:f.error}):null,f.status==="failed"||f.status==="paused"?a.jsx("button",{"aria-label":`重试上传 ${f.name}`,className:"make-ai-assistant__attachment-draft-control",title:"重试上传",type:"button",onClick:()=>e.retry(f.id),children:a.jsx(ls,{"aria-hidden":"true"})}):null,f.status==="uploading"?a.jsx("button",{"aria-label":`暂停上传 ${f.name}`,className:"make-ai-assistant__attachment-draft-control",title:"暂停上传",type:"button",onClick:()=>e.pause(f.id),children:a.jsx(is,{"aria-hidden":"true"})}):null,a.jsx("button",{"aria-label":`移除附件 ${f.name}`,className:"make-ai-assistant__attachment-draft-remove",type:"button",onClick:()=>{s===f.id&&y(),e.remove(f.id)},children:a.jsx(Ze,{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-remove-icon"})})]},f.id)})}),r&&v?Ht.createPortal(a.jsx("div",{className:"make-ai-assistant__attachment-preview-backdrop",onPointerDown:f=>{f.target===f.currentTarget&&y()},children:a.jsxs("div",{"aria-label":`${r.previewUrl?"预览附件":"附件详情"} ${r.name}`,"aria-modal":"true",className:"make-ai-assistant__attachment-preview-dialog","data-kind":r.previewUrl?"image":"file",role:"dialog",onKeyDown:f=>{f.key==="Tab"&&f.preventDefault()},children:[a.jsx("button",{"aria-label":`${r.previewUrl?"关闭图片预览":"关闭附件详情"} ${r.name}`,autoFocus:!0,className:"make-ai-assistant__attachment-preview-close",type:"button",onClick:y,children:a.jsx(Ze,{"aria-hidden":"true",className:"make-ai-assistant__attachment-preview-close-icon"})}),r.previewUrl?a.jsx("img",{alt:r.name,src:r.previewUrl}):a.jsx("div",{"aria-hidden":"true",className:"make-ai-assistant__attachment-preview-file",children:a.jsx(Tt,{})}),a.jsxs("div",{className:"make-ai-assistant__attachment-preview-details",children:[a.jsx("strong",{children:r.name}),a.jsx("span",{children:Dt(r)}),r.error?a.jsx("p",{children:r.error}):null]})]})}),v):null]})}const Ns=e=>`${e}-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,Cs="Make",Ss=["总结当前页面数据","找出需要关注的记录","列出我有权限查看的数据对象"],Ms=48,Es=160,wa=(e,t)=>t??`${e?.trim()||Cs} AI 助手`,Ts=e=>e??Ss,Rs=e=>typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0,$s=e=>typeof e=="number"?Number.isFinite(e)?`${e}px`:void 0:e?.trim()||void 0;class Z extends Error{}const ct=(e,t)=>{if(!(typeof e!="object"||e===null))return e[t]},Ls=e=>{const t=ct(e,"status");return typeof t=="number"?t:ct(ct(e,"response"),"status")},zs=e=>{const t=ct(e,"code"),s=Ls(e),n=e instanceof Error?e.message:"",r=[t,n].filter(y=>typeof y=="string").join(" ").toLowerCase(),d=globalThis.navigator?.onLine===!1||/network|fetch|timeout|offline|connection|网络|连接|超时/.test(r),m=typeof s=="number"&&s>=500||/server|service|服务器|服务异常/.test(r);return d?{actionLabel:"重新连接",description:"请检查网络后再试。",kind:"network",label:"网络连接",title:"网络连接不可用"}:m?{actionLabel:"重新加载",description:"服务暂时未能响应,请稍后重试。",kind:"service",label:"服务异常",title:"服务暂时不可用"}:{actionLabel:"重新加载",description:"请稍后重试;若问题持续出现,请联系管理员。",kind:"unknown",label:"加载异常",title:"暂时无法加载对话"}},Pt=e=>{try{const t=e?.return?.();if(!t)return;Promise.resolve(t).catch(s=>{console.error("[make-ai-assistant] transport iterator close failed",{errorType:s instanceof Error?s.name:typeof s})})}catch(t){console.error("[make-ai-assistant] transport iterator close failed",{errorType:t instanceof Error?t.name:typeof t})}},Ds=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 t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.inset="0 auto auto 0",t.style.opacity="0",document.body.append(t),t.select();const s=document.execCommand("copy");if(t.remove(),!s)throw new Error("Clipboard copy failed")},lt=({className:e=""})=>a.jsx("span",{className:`make-ai-assistant__avatar ${e}`.trim(),"aria-hidden":"true",children:a.jsx(va,{"aria-hidden":"true"})}),Os=({src:e})=>e?a.jsx("span",{className:"make-ai-assistant__user-avatar","aria-hidden":"true",children:a.jsx("img",{alt:"",src:e})}):null,Ps=({userAvatarUrl:e,userName:t})=>{const s=t?.trim();return!s&&!e?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(Os,{src:e})]})},vt=e=>{const t=e.trim();if(!(!t.startsWith("|")||!t.endsWith("|")))return t.slice(1,-1).split("|").map(s=>s.trim())},Us=e=>e.length>0&&e.every(t=>/^:?-{3,}:?$/.test(t)),Fs=(e,t)=>{const s=vt(e[t]??""),n=vt(e[t+1]??"");if(!s||!n||s.length!==n.length||!Us(n))return;const r=[];let l=t+2;for(;l<e.length;){const d=vt(e[l]??"");if(!d||d.length!==s.length)break;r.push(d),l+=1}return{headers:s,lastIndex:l-1,rows:r}},qs=e=>{const t=[],s=[],n=[],r=[],l=e.replace(/\r\n?/g,`
|
|
60
2
|
`).split(`
|
|
61
|
-
`),
|
|
62
|
-
`).trim();s.length=0,
|
|
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;
|
|
3
|
+
`),d=()=>{const v=s.join(`
|
|
4
|
+
`).trim();s.length=0,v&&t.push({type:"paragraph",text:v})},m=()=>{n.length&&t.push({type:"list",items:n.splice(0)})},y=()=>{const v=r.join(`
|
|
5
|
+
`).trim();r.length=0,v&&t.push({type:"pre",text:v})};for(let v=0;v<l.length;v+=1){const f=l[v]??"",A=f.trim();if(!A){d(),m(),y();continue}const N=Fs(l,v);if(N){d(),m(),y(),t.push({headers:N.headers,rows:N.rows,type:"table"}),v=N.lastIndex;continue}const E=/^(#{1,6})\s+(.+)$/.exec(A);if(E){d(),m(),y();const D=(E[2]??"").replace(/\s+#+\s*$/,"").trim();D&&t.push({type:"heading",level:E[1]?.length,text:D});continue}if(/^\s*\|.+\|\s*$/.test(f)){d(),m(),r.push(f.trim());continue}const g=/^\s*[-*]\s+(.+)$/.exec(f);if(g){d(),y(),n.push(g[1]?.trim()??"");continue}m(),y(),s.push(A)}return d(),m(),y(),t},Ge=e=>{const t=[],s=/(\*\*[^*]+\*\*|`[^`]+`)/g;let n=0;for(const r of e.matchAll(s)){const l=r[0],d=r.index??0;d>n&&t.push(e.slice(n,d)),l.startsWith("**")?t.push(a.jsx("strong",{children:l.slice(2,-2)},`${d}-strong`)):t.push(a.jsx("code",{children:l.slice(1,-1)},`${d}-code`)),n=d+l.length}return n<e.length&&t.push(e.slice(n)),t},Ut=({content:e})=>{const t=qs(e);return t.length?a.jsx("div",{className:"make-ai-assistant__bubble make-ai-assistant__assistant-text",children:t.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:Ge(s.text)},`${n}-heading`)}return s.type==="paragraph"?a.jsx("p",{children:Ge(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,l)=>a.jsx("th",{scope:"col",children:Ge(r)},`${l}-${r}`))})}),a.jsx("tbody",{children:s.rows.map((r,l)=>a.jsx("tr",{children:r.map((d,m)=>a.jsx("td",{children:Ge(d)},`${m}-${d}`))},`${l}-${r.join("|")}`))})]})},`${n}-table`):a.jsx("ul",{children:s.items.map((r,l)=>a.jsx("li",{children:Ge(r)},`${l}-${r}`))},`${n}-list`)})}):null},Ia=({assistantName:e})=>a.jsxs("div",{className:"make-ai-assistant__message-identity",children:[a.jsx(lt,{className:"make-ai-assistant__avatar--message"}),a.jsx("span",{className:"make-ai-assistant__message-sender",children:e})]}),Aa=e=>{for(let t=e.messages.length-1;t>=0;t-=1){const s=e.messages[t];if(s.role==="assistant"&&s.status==="streaming")return s.id}},Hs=e=>{for(let t=e.messages.length-1;t>=0;t-=1)if(e.messages[t].role==="user")return t;return-1},Na=e=>{const t=Hs(e);if(!(t<0))for(let s=e.messages.length-1;s>t;s-=1){const n=e.messages[s];if(n.role==="assistant")return n.id}},Ks=e=>{if(e.status==="idle")for(let t=e.messages.length-1;t>=0;t-=1){const s=e.messages[t];if(s.role==="assistant"&&s.status==="complete")return s.id}},Vs=e=>{for(let t=e.messages.length-1;t>=0;t-=1){const s=e.messages[t];if(s.role==="user")return s}},Bs=(e,t)=>{const s=e.messages.findIndex(n=>n.id===t&&n.role==="user");return{...e,error:void 0,progress:void 0,status:"streaming",messages:s<0?e.messages:e.messages.slice(0,s+1)}},Ws=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=48,Ft=(e="smooth")=>globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":e,yt=(e,t)=>{typeof e.scrollTo=="function"?e.scrollTo({top:e.scrollHeight,behavior:t}):e.scrollTop=e.scrollHeight},Ca=({error:e,onRetry:t})=>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(Qa,{"aria-hidden":"true"})}),a.jsx("strong",{children:"请求未完成"})]}),a.jsx("span",{className:"make-ai-assistant__message-status-message",children:e.message}),e.retryable&&t?a.jsxs("button",{className:"make-ai-assistant__retry",type:"button",onClick:t,children:[a.jsx(dt,{"aria-hidden":"true"}),"重新发送"]}):null]}),Xs=({error:e,onRetry:t})=>{const s=zs(e);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.jsx(es,{"aria-hidden":"true"})}),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:t,children:[a.jsx(dt,{"aria-hidden":"true"}),s.actionLabel]})]})},Sa=({active:e,steps:t})=>{const[s,n]=c.useState(!1);if(!e||!t?.length)return null;const r=t[t.length-1]??"处理中";return a.jsxs("details",{className:"make-ai-assistant__process",open:s,onToggle:l=>n(l.currentTarget.open),children:[a.jsxs("summary",{"aria-label":`查看处理过程,共 ${t.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:[t.length," 步"]})]}),a.jsx("ol",{children:t.map((l,d)=>a.jsxs("li",{"data-step-active":d===t.length-1?!0:void 0,children:[a.jsx("span",{"aria-hidden":"true"}),a.jsx("span",{children:l})]},`${d}-${l}`))})]})},Gs=({copyFeedback:e,feedback:t,onCopy:s,onRegenerate:n})=>!t&&!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(ts,{"aria-hidden":"true",className:"make-ai-assistant__reply-copy-icon"})}):null,t,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(dt,{"aria-hidden":"true"})}):null,e?a.jsx("span",{className:"make-ai-assistant__reply-feedback","data-copy-status":e.status,role:"status",children:e.message}):null]}),qt=({assistantName:e,error:t,onRetry:s,progress:n})=>{const r=t?"error":"progress";return t?.message??n?.message?a.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:a.jsxs("div",{className:"make-ai-assistant__message-turn",children:[a.jsx(Ia,{assistantName:e}),a.jsx("div",{className:"make-ai-assistant__message-stack",children:t?a.jsx(Ca,{error:t,onRetry:s}):a.jsx(Sa,{active:!0,steps:n?.steps})})]})}):null},Zs=(e,t,s,n,r,l,d,m,y,v,f,A,N,E,g,D)=>{const R=Na(e),P=Aa(e),b=Ks(e);let h;return e.messages.map(i=>{if(i.intermediate)return a.jsxs("details",{className:"make-ai-assistant__process",children:[a.jsx("summary",{children:"处理过程"}),a.jsx(Ut,{content:i.content})]},i.id);const _=i.role==="assistant",C=h;_||(h=i);const B=i.id===P,I=i.id===R?e.error:void 0,W=i.error??I,Y=!_&&!!(y?.trim()||v),se=_?d:y?.trim()||"用户",G=_&&i.status==="complete"&&!W&&(i.content.trim()||i.id===b),ce=!!(g&&D?.features?.feedback&&_&&i.persistent),me=G||ce;return a.jsx("article",{"aria-label":`${se}的消息`,className:`make-ai-assistant__message make-ai-assistant__message--${i.role}`,"data-message-role":i.role,"data-message-state":W?"error":void 0,"data-message-status":i.status,"data-message-has-identity":_||Y?!0:void 0,children:a.jsxs("div",{className:"make-ai-assistant__message-turn",children:[_?a.jsx(Ia,{assistantName:d}):Y?a.jsx(Ps,{userAvatarUrl:v,userName:y}):null,a.jsxs("div",{className:"make-ai-assistant__message-stack",children:[_&&i.responseId&&e.responses?.[i.responseId]?.status==="cancelled"?a.jsx("p",{className:"make-ai-assistant__response-status",role:"status",children:"已停止生成"}):null,i.content?_?a.jsx(Ut,{content:i.content}):a.jsx("div",{className:"make-ai-assistant__bubble",children:i.content}):i.status==="streaming"?a.jsxs("div",{className:"make-ai-assistant__typing","aria-label":`${d}正在思考`,children:[a.jsx("span",{}),a.jsx("span",{}),a.jsx("span",{})]}):null,_?a.jsx(Sa,{active:B&&e.status==="streaming",steps:i.progressSteps}):null,W?a.jsx(Ca,{error:W,onRetry:I?m:void 0}):null,i.artifacts.map(je=>a.jsx(Vt,{artifact:je,context:t,onAction:r,onActionError:l,registry:s,theme:n},je.id)),g&&D&&e.threadId?a.jsx(ks,{message:i,context:t,transport:D,chatId:e.threadId}):null,me?a.jsx(Gs,{copyFeedback:f?.messageId===i.id?{message:f.message,status:f.status}:void 0,onCopy:i.content.trim()?()=>N(i.id,i.content):void 0,feedback:g&&ce?a.jsx(ys,{message:i,manager:g}):void 0,onRegenerate:A&&i.id===b&&C?()=>E({userMessage:C,assistantMessage:i}):void 0}):null]})]})},`${e.threadId??"local"}:${i.id}`)})};function Ma({assistantName:e="AI 助手",brandName:t,context:s,onAction:n,onActionError:r,onClose:l,onNewConversation:d,onToggleFullscreen:m,headerHeight:y,isFullscreen:v=!1,registry:f,suggestions:A,title:N,theme:E,transport:g,userAvatarUrl:D,userName:R,visible:P}){const b=fs(s,g),h=ws(s,g,b),i=wa(t,N),_=$s(y),C=kt(E),B=C||_?{...C,..._?{"--make-ai-internal-header-height":_}:{}}:void 0,[I,W]=c.useState(""),[Y,se]=c.useState(!1),[G,ce]=c.useState(!1),me=b.enabled?g.scopeKey?.(s)??s.app.id:"";c.useLayoutEffect(()=>{b.enabled&&W("")},[me,b.enabled]);const[je,Pe]=c.useState(w.createAssistantConversationState),U=b.enabled?b.state:je,K=b.enabled?b.setState:Pe,O=c.useRef(U);O.current=U;const[J,re]=c.useState(void 0),[pe,le]=c.useState(void 0),[we,z]=c.useState(0),[te,Q]=c.useState(()=>g.loadConversation?"loading":"ready"),ee=b.enabled?b.loading&&!U.messages.length?"loading":"ready":te,[Ue,Fe]=c.useState(void 0),[Je,ie]=c.useState(!1),X=c.useRef(void 0),oe=c.useRef(void 0),ge=c.useRef(0),Ie=c.useRef(null),ke=c.useRef(null),Se=c.useRef(null),Me=c.useRef(null),qe=c.useRef(null),He=c.useRef(null),he=c.useRef(!0),Ye=c.useRef(s.app.id),Qe=c.useRef(P),et=c.useId();c.useLayoutEffect(()=>{const p=Se.current;p&&(p.style.height="auto",p.style.height=`${Math.min(Math.max(p.scrollHeight,Ms),Es)}px`)},[I]);const tt=c.useMemo(()=>f??Gt(),[f]),at=c.useMemo(()=>Ts(A),[A]),Ee=p=>{const H=X.current,V=oe.current?.iterator;return!H&&!V?!1:(ge.current+=1,X.current=void 0,oe.current=void 0,console.info("[make-ai-assistant] local run cancellation requested",{reason:p}),H?.abort(),Pt(V),!0)};c.useEffect(()=>()=>{Ee("unmount")},[]),c.useEffect(()=>{if(b.enabled)return;const p=g.loadConversation,H=Ye.current!==s.app.id;if(Ye.current=s.app.id,Ee("reinitialize"),H&&(W(""),he.current=!0),re(void 0),le(void 0),ie(!1),K(w.createAssistantConversationState()),!p){Fe(void 0),Q("ready");return}const V=new AbortController;return Fe(void 0),Q("loading"),console.info("[make-ai-assistant] conversation load start",{appId:s.app.id}),p.call(g,s,{signal:V.signal}).then(ae=>{V.signal.aborted||(K(w.createAssistantConversationState(ae)),Q("ready"),console.info("[make-ai-assistant] conversation load success",{appId:s.app.id,messageCount:ae.messages.length}))}).catch(ae=>{V.signal.aborted||(console.error("[make-ai-assistant] conversation load failed",{appId:s.app.id,errorType:ae instanceof Error?ae.name:typeof ae}),Fe(ae),Q("error"))}),()=>V.abort()},[s.app.id,we,g,b.enabled]),c.useEffect(()=>{const p=ke.current;if(!p||!he.current)return;ie(!1);const H=requestAnimationFrame(()=>{if(!he.current)return;const V=U.status==="streaming"||globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";yt(p,V)});return()=>cancelAnimationFrame(H)},[U.messages,U.progress,U.status]),c.useEffect(()=>{P||(se(!1),ce(!1))},[P]),c.useEffect(()=>{const p=P&&!Qe.current;if(Qe.current=P,!p)return;const H=requestAnimationFrame(()=>{const V=ke.current;if(V&&he.current){ie(!1);const Ve=O.current.status==="streaming"?"auto":Ft();yt(V,Ve)}else V&&ie(O.current.messages.length>0);const ae=Se.current;(ae&&!ae.disabled?ae:He.current??Ie.current?.querySelector("button:not(:disabled)"))?.focus()});return()=>cancelAnimationFrame(H)},[P]);const Ke=()=>{const p=ke.current;if(!p)return;const H=Ws(p);he.current=H,ie(!H&&O.current.messages.length>0)},Ae=()=>{const p=ke.current;if(!p)return;he.current=!0,ie(!1);const H=Ft();yt(p,H)},o=async(p,H)=>{const V=p.trim(),ae=O.current,ye=H?.regenerateFrom,Ve=g.regenerate;if(!V||ee!=="ready"||ae.status==="streaming"||X.current||ye&&!Ve)return;if(w.countCodePointsUpTo(V,w.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)>w.MAKE_AI_CONVERSATION_LIMITS.messageCharacters){re(`输入内容过长,请控制在 ${w.MAKE_AI_CONVERSATION_LIMITS.messageCharacters} 个字符以内`);return}const nt={id:ye?.userMessage.id??Ns("user"),content:V},rt=ye?Bs(ae,ye.userMessage.id):w.appendUserMessage(ae,nt),it=new AbortController,Re=ge.current+1;ge.current=Re,X.current=it,re(void 0),le(void 0),ie(!he.current&&ae.messages.length>0),ye||W(""),K(rt);try{let _e=!1,ne,xt=0,jt=0,wt=0,ut=0,Be=0;const We=new Map,It=new Set,At=new Set([...rt.messages.map(ot=>ot.id),nt.id]),Xe=new Set,Nt=xe.createArtifactCapabilities(tt),Ct={signal:it.signal};let mt;if(ye){if(!Ve)throw new Z("当前 AI 助手不支持重新生成");mt=Ve({threadId:rt.threadId,message:nt,assistantMessage:{id:ye.assistantMessage.id,content:ye.assistantMessage.content},context:s,capabilities:Nt},Ct)}else mt=g.run({threadId:rt.threadId,message:nt,context:s,capabilities:Nt},Ct);const St=mt[Symbol.asyncIterator]();for(oe.current={iterator:St,requestVersion:Re};;){const ot=await St.next();if(ge.current!==Re||ot.done)break;let L;try{L=w.parseAssistantEvent(ot.value)}catch(ue){throw new Z(ue instanceof Error?ue.message:"Invalid assistant event")}if(L.type==="message.start"){if(ne!==void 0&&ne!==L.runId)throw new Z("AI 助手响应 run id 不一致");if(ne??=L.runId,jt+=1,jt>w.MAKE_AI_CONVERSATION_LIMITS.assistantMessagesPerRun)throw new Z("AI 助手单次响应消息数量超过限制");if(At.has(L.messageId))throw new Z("AI 助手响应包含重复的 message id");At.add(L.messageId),Xe.add(L.messageId),We.set(L.messageId,0)}if(L.type==="message.delta"){if(!Xe.has(L.messageId))throw new Z("AI 助手响应事件顺序无效");const ue=We.get(L.messageId)??0,$e=w.countCodePointsUpTo(L.delta,w.MAKE_AI_CONVERSATION_LIMITS.messageCharacters-Be);if(Be+$e>w.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new Z("AI 助手响应文本超过大小限制");Be+=$e,We.set(L.messageId,ue+$e)}if(L.type==="message.replace"){if(!Xe.has(L.messageId))throw new Z("AI 助手响应事件顺序无效");const ue=We.get(L.messageId)??0,$e=w.countCodePointsUpTo(L.content,w.MAKE_AI_CONVERSATION_LIMITS.messageCharacters),Mt=Be-ue+$e;if(Mt>w.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new Z("AI 助手响应文本超过大小限制");Be=Mt,We.set(L.messageId,$e)}if(L.type==="run.progress"){if(ne!==void 0&&ne!==L.runId)throw new Z("AI 助手响应 run id 不一致");if(ne??=L.runId,wt+=1,wt>w.MAKE_AI_CONVERSATION_LIMITS.progressStepsPerRun)throw new Z("AI 助手处理过程数量超过限制");const ue=w.countCodePointsUpTo(L.message,w.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun-ut);if(ut+ue>w.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun)throw new Z("AI 助手处理过程文本超过大小限制");ut+=ue}if(L.type==="artifact"){if(!Xe.has(L.messageId))throw new Z("AI 助手响应事件顺序无效");if(xt+=1,xt>w.MAKE_AI_CONVERSATION_LIMITS.artifactsPerRun)throw new Z("AI 助手单次响应 Artifact 数量超过限制");if(It.has(L.artifact.id))throw new Z("AI 助手响应包含重复的 Artifact id");It.add(L.artifact.id)}if(L.type==="message.complete"&&!Xe.delete(L.messageId))throw new Z("AI 助手响应事件顺序无效");if(L.type==="run.complete"&&ne!==void 0&&ne!==L.runId)throw new Z("AI 助手响应 run id 不一致");if(L.type==="run.cancelled"&&L.runId!==void 0&&ne!==void 0&&ne!==L.runId)throw new Z("AI 助手响应 run id 不一致");if(K(ue=>w.reduceAssistantEvent(ue,L)),L.type==="error"||L.type==="run.cancelled"||L.type==="run.complete"){_e=!0;break}}if(!_e)throw new Z("AI 助手流式响应在终止事件前结束")}catch(_e){if(ge.current!==Re)return;if(it.signal.aborted){K(ne=>w.reduceAssistantEvent(ne,{type:"run.cancelled"}));return}console.error("[make-ai-assistant] assistant run failed",{appId:s.app.id,errorType:_e instanceof Error?_e.name:typeof _e}),K(ne=>w.reduceAssistantEvent(ne,{type:"error",code:"TRANSPORT_ERROR",message:_e instanceof Z?_e.message:"连接失败,请重试",retryable:!0}))}finally{ge.current===Re&&X.current===it&&(X.current=void 0),oe.current?.requestVersion===Re&&(Pt(oe.current.iterator),oe.current=void 0)}},u=p=>{if(b.enabled){if(h.pending)return re("请等待附件上传完成,或移除失败的附件"),Promise.resolve();const H=p.trim(),V=h.parts.length?[...H?[{id:ze(),kind:"text",text:H}]:[],...h.parts]:void 0;return W(""),h.clear(),b.send(H,V)}return o(p)},k=p=>o(p.userMessage.content,{regenerateFrom:p}),x=async(p,H)=>{try{await Ds(H),le({messageId:p,message:"已复制",status:"success"})}catch(V){console.error("[make-ai-assistant] copy answer failed",{errorType:V instanceof Error?V.name:typeof V}),le({messageId:p,message:"复制失败",status:"error"})}},S=p=>{p.preventDefault(),u(I)},$=p=>{p.key==="Enter"&&!p.shiftKey&&!p.nativeEvent.isComposing&&(p.preventDefault(),u(I))},j=()=>{if(b.enabled){b.stop();return}Ee("stop")&&K(p=>w.reduceAssistantEvent(p,{type:"run.cancelled"}))},T=()=>{if(ce(!1),b.enabled){W(""),b.create(),d?.();return}Ee("new-conversation"),W(""),re(void 0),le(void 0),ie(!1),he.current=!0,K(w.createAssistantConversationState()),d?.()},M=b.enabled&&b.cancelling.length?"停止中":g.features?.remoteCancellation===!1?"停止接收":"停止生成",F=Aa(U),ve=Na(U),Ne=Vs(U),st=typeof g.regenerate=="function"&&g.features?.regeneration!==!1,de=()=>{if(b.enabled){b.retry();return}Ne&&u(Ne.content)},Te=p=>{if(p.key==="Escape"&&!(!Y&&!G)){if(p.preventDefault(),p.stopPropagation(),Y){se(!1),Me.current?.focus();return}ce(!1),qe.current?.focus()}};return a.jsxs("section",{className:`make-ai-assistant make-ai-assistant__panel${b.enabled?" make-ai-assistant__panel--managed":""}`,ref:Ie,style:B,onKeyDown:Te,onDragOver:p=>{h.enabled&&p.dataTransfer.types.includes("Files")&&p.preventDefault()},onDrop:p=>{h.enabled&&p.dataTransfer.files.length&&(p.preventDefault(),h.add(Array.from(p.dataTransfer.files)))},children:[a.jsxs("header",{className:"make-ai-assistant__header",children:[a.jsx("div",{className:"make-ai-assistant__header-leading",children:b.enabled?a.jsxs("button",{"aria-controls":et,"aria-expanded":G,"aria-haspopup":"dialog","aria-label":"任务列表",className:"make-ai-assistant__task-list-trigger",ref:qe,type:"button",onClick:()=>ce(p=>!p),children:[a.jsx(as,{"aria-hidden":"true",className:"make-ai-assistant__task-list-icon"}),a.jsx("span",{className:"make-ai-assistant__task-list-label",children:"任务列表"}),G?a.jsx(Ya,{"aria-hidden":"true",className:"make-ai-assistant__task-list-disclosure"}):a.jsx(Ja,{"aria-hidden":"true",className:"make-ai-assistant__task-list-disclosure"})]}):null}),a.jsxs("div",{className:"make-ai-assistant__header-center",children:[a.jsx(lt,{}),a.jsx("h2",{className:"make-ai-assistant__header-title",title:i,children:i})]}),a.jsxs("div",{className:"make-ai-assistant__header-actions",children:[m?a.jsx("button",{"aria-label":v?"退出全屏":"全屏显示","aria-pressed":v,className:"make-ai-assistant__icon-button",title:v?"退出全屏":"全屏显示",type:"button",onClick:m,children:v?a.jsx(rs,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"}):a.jsx(ss,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null,g.features?.newConversation!==!1?a.jsx("button",{"aria-label":"新建对话",className:"make-ai-assistant__icon-button",type:"button",onClick:T,children:a.jsx(_t,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null,l?a.jsx("button",{"aria-label":`关闭 ${i}`,className:"make-ai-assistant__icon-button",type:"button",onClick:l,children:a.jsx(Ze,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null]})]}),b.enabled&&G?a.jsx(vs,{id:et,manager:b,triggerRef:qe,onDismiss:()=>ce(!1),onNewConversation:g.features?.newConversation!==!1?T:void 0}):null,a.jsxs("div",{className:"make-ai-assistant__body","aria-live":"polite","aria-relevant":"additions text",ref:ke,role:"log",onScroll:Ke,children:[ee==="loading"?a.jsxs("div",{className:"make-ai-assistant__empty",role:"status",children:[a.jsx(lt,{}),a.jsx("h3",{children:"正在恢复对话"}),a.jsx("p",{children:"正在读取当前 App 的历史消息…"})]}):ee==="error"?a.jsx("div",{className:"make-ai-assistant__empty",children:a.jsx(Xs,{error:Ue,onRetry:()=>z(p=>p+1)})}):U.messages.length===0?a.jsxs("div",{className:"make-ai-assistant__empty",children:[a.jsx(lt,{}),a.jsx("h3",{children:"有什么可以帮你?"}),a.jsx("p",{children:"我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。"})]}):Zs(U,s,tt,E,n,r,e,Ne?de:void 0,R,D,pe,st,(p,H)=>{x(p,H)},p=>{k(p)},b.enabled?b:void 0,g),U.progress&&!F?a.jsx(qt,{assistantName:e,progress:U.progress}):null,U.error&&!ve?a.jsx(qt,{assistantName:e,error:U.error,onRetry:Ne?de:void 0}):null]}),Je?a.jsx("button",{"aria-label":"回到最新消息",className:"make-ai-assistant__back-to-latest",type:"button",onClick:Ae,children:a.jsx(Ga,{"aria-hidden":"true"})}):null,a.jsxs("footer",{className:"make-ai-assistant__composer-region",children:[ee==="ready"&&at.length>0&&U.messages.length===0?a.jsx("div",{className:"make-ai-assistant__suggestions","aria-label":"推荐问题",children:at.map((p,H)=>a.jsx("button",{type:"button",onClick:()=>{u(p)},children:p},`${H}-${p}`))}):null,a.jsxs("form",{className:"make-ai-assistant__composer",onSubmit:S,children:[h.enabled?a.jsx(As,{attachments:h,visible:P}):null,a.jsx("textarea",{"aria-label":`向 ${e} 提问`,"aria-describedby":J?"make-ai-composer-error":void 0,"aria-invalid":J?!0:void 0,autoFocus:!0,disabled:ee!=="ready"||!b.enabled&&U.status==="streaming",placeholder:`询问当前 ${s.app.name??"App"} 中的数据…`,ref:Se,rows:2,value:I,onChange:p=>{W(p.currentTarget.value),re(void 0)},onKeyDown:$,onPaste:p=>{!h.enabled||!p.clipboardData.files.length||(p.preventDefault(),h.add(Array.from(p.clipboardData.files)))}}),a.jsxs("div",{className:"make-ai-assistant__composer-toolbar",children:[h.enabled?a.jsx(Is,{attachments:h,open:Y,triggerRef:Me,onOpenChange:se}):null,a.jsxs("div",{className:"make-ai-assistant__composer-actions",children:[U.status==="streaming"?a.jsx("button",{"aria-label":M,className:"make-ai-assistant__send make-ai-assistant__send--stop","data-tooltip":M,ref:He,disabled:b.enabled&&b.cancelling.includes(U.activeRunId??""),type:"button",onClick:j,children:a.jsx("span",{"aria-hidden":"true"})}):a.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:ee!=="ready"||h.pending||!I.trim()&&!h.parts.length,type:"submit",children:a.jsx(Rt,{"aria-hidden":"true"})}),b.enabled&&U.status==="streaming"?a.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:b.busy||h.pending||!I.trim()&&!h.parts.length,type:"submit",children:a.jsx(Rt,{"aria-hidden":"true"})}):null]})]})]}),J?a.jsx("p",{id:"make-ai-composer-error",role:"alert",children:J}):null,a.jsx("p",{children:"AI 生成的结果可能存在偏差,重要数据请核对明细。"})]})]})}function Js(e){return a.jsx(Ma,{...e,visible:!0})}function Ys({defaultOpen:e=!1,hideLauncher:t=!1,launcher:s,launcherPosition:n="bottom-right",maxDrawerWidth:r,onOpenChange:l,open:d,...m}){const y=wa(m.brandName,m.title),[v,f]=c.useState(e),[A,N]=c.useState(()=>e||d===!0),[E,g]=c.useState(!1),D=c.useRef(null),R=d??v,P=kt(m.theme),b=Rs(r),h=b===void 0?void 0:{"--make-ai-internal-drawer-max-width":`${b}px`},i=C=>{d===void 0&&f(C),l?.(C),C||(g(!1),requestAnimationFrame(()=>D.current?.focus()))},_=()=>i(!R);return c.useEffect(()=>{R&&N(!0)},[R]),c.useEffect(()=>{if(!R)return;const C=B=>{if(B.key==="Escape"){if(E){g(!1);return}i(!1),requestAnimationFrame(()=>D.current?.focus())}};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[E,l,R]),a.jsxs("div",{className:"make-ai-assistant","data-open":R||void 0,style:P,children:[!t&&(!R||s)?s?s({open:R,toggle:_}):a.jsxs("button",{"aria-label":R?`关闭 ${y}`:`打开 ${y}`,"aria-expanded":R,className:"make-ai-assistant__launcher","data-launcher-position":n,ref:D,type:"button",onClick:_,children:[a.jsx("span",{className:"make-ai-assistant__launcher-orbit","aria-hidden":"true"}),a.jsx(va,{"aria-hidden":"true"})]}):null,A?a.jsx("aside",{"aria-label":y,"aria-modal":"false",className:`make-ai-assistant__drawer${E?" make-ai-assistant__drawer--fullscreen":""}`,hidden:!R,role:"dialog",style:h,children:a.jsx(Ma,{...m,isFullscreen:E,onClose:()=>i(!1),onToggleFullscreen:()=>g(C=>!C),visible:R})}):null]})}exports.createArtifactCapabilities=xe.createArtifactCapabilities;exports.createArtifactTemplateRegistry=xe.createArtifactTemplateRegistry;exports.extendArtifactTemplateRegistry=xe.extendArtifactTemplateRegistry;exports.resolveArtifactTemplate=xe.resolveArtifactTemplate;exports.MAKE_AI_ARTIFACT_KINDS=w.MAKE_AI_ARTIFACT_KINDS;exports.MAKE_AI_ARTIFACT_LIMITS=w.MAKE_AI_ARTIFACT_LIMITS;exports.MAKE_AI_ARTIFACT_SCHEMA_VERSION=w.MAKE_AI_ARTIFACT_SCHEMA_VERSION;exports.MAKE_AI_CONVERSATION_LIMITS=w.MAKE_AI_CONVERSATION_LIMITS;exports.appendUserMessage=w.appendUserMessage;exports.createAssistantConversationState=w.createAssistantConversationState;exports.parseArtifact=w.parseArtifact;exports.parseAssistantEvent=w.parseAssistantEvent;exports.reduceAssistantEvent=w.reduceAssistantEvent;exports.validateArtifact=w.validateArtifact;exports.ArtifactRenderer=Vt;exports.AssistantPanel=Js;exports.MakeAiAssistant=Ys;exports.createPlatformArtifactRegistry=Gt;exports.formatArtifactValue=be;exports.platformArtifactTemplates=Xt;
|