@jiangxiaosheng/digital-agent-platform 2.0.1 → 2.0.2
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/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +310 -44
- package/.next/app-path-routes-manifest.json +1 -1
- package/.next/build-manifest.json +19 -6
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/server/app/[locale]/agents/[id]/chat/page.js +1 -516
- package/.next/server/app/[locale]/agents/[id]/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/[locale]/agents/[id]/edit/page_client-reference-manifest.js +1 -1
- package/.next/server/app/[locale]/agents/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/[locale]/agents/page_client-reference-manifest.js +1 -1
- package/.next/server/app/[locale]/knowledge/page_client-reference-manifest.js +1 -1
- package/.next/server/app/[locale]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/[locale]/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/api/agents/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth-config/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bash-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/builtin-providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/chat/[agentId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env-vars/[key]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env-vars/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env-vars/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/file-serve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/knowledge/[id]/documents/[docId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/knowledge/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/knowledge/[id]/upload/route.js +1 -1
- package/.next/server/app/api/knowledge/[id]/upload/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/knowledge/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[agentId]/[sessionId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[agentId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/voice-provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspace-files/route_client-reference-manifest.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +38 -0
- package/.next/server/middleware-build-manifest.js +1 -22
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -5
- package/.next/server/webpack-runtime.js +1 -215
- package/.next/static/chunks/{3763-85d191447a96df85.js → 3763-ea55ce7682889cb6.js} +1 -1
- package/.next/static/chunks/{6009-821afbef93a9b2dc.js → 6009-c9f03c0151c7d932.js} +1 -1
- package/.next/static/chunks/{7200-c9c613d1b11207fb.js → 7200-3e2b5e981a747a6b.js} +1 -1
- package/.next/static/chunks/app/[locale]/agents/[id]/chat/{page-95dc12875cda0b9c.js → page-1138da7e5b6e4435.js} +1 -1
- package/.next/static/chunks/app/[locale]/{layout-bca0349ba5d79253.js → layout-5c05e64401a6d048.js} +1 -1
- package/.next/trace +35 -35
- package/package.json +1 -1
- package/.next/server/vendor-chunks/@radix-ui.js +0 -125
- package/.next/server/vendor-chunks/lucide-react.js +0 -445
- package/.next/server/vendor-chunks/next.js +0 -3211
- package/.next/server/vendor-chunks/uuid.js +0 -75
- package/.next/static/chunks/app/layout.js +0 -39
- package/.next/static/chunks/webpack.js +0 -1416
- package/.next/static/development/_buildManifest.js +0 -1
- package/.next/static/development/_ssgManifest.js +0 -1
- package/.next/static/webpack/29489ef42c5fbc7f.webpack.hot-update.json +0 -1
- package/.next/static/webpack/app/layout.29489ef42c5fbc7f.hot-update.js +0 -22
- package/.next/static/webpack/app/layout.be3d0f45e3439f26.hot-update.js +0 -22
- package/.next/static/webpack/be3d0f45e3439f26.webpack.hot-update.json +0 -1
- package/.next/static/webpack/webpack.29489ef42c5fbc7f.hot-update.js +0 -18
- package/.next/static/webpack/webpack.be3d0f45e3439f26.hot-update.js +0 -18
- package/.next/types/app/[locale]/layout.ts +0 -84
- /package/.next/static/{RTJ4_XTTnBpNxBIZhyBht → yXEysGzm6PP-vW5ptUZ-5}/_buildManifest.js +0 -0
- /package/.next/static/{RTJ4_XTTnBpNxBIZhyBht → yXEysGzm6PP-vW5ptUZ-5}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6765],{5341:(e,t,r)=>{Promise.resolve().then(r.bind(r,3927))},3927:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>G});var a=r(5155),s=r(2115),l=r(7266),n=r(3518),o=r(3473),i=r(5686),d=r(4947),c=r(1406),x=r(8617),u=r(7072),p=r(1719),m=r(8867),h=r(8403),b=r(6246),g=r(9009),f=r(8207),v=r(6967),y=r(5765),j=r(3920),w=r(1773),N=r(7694),k=r(5220),S=r(4505),C=r(2792),A=r(1567);let E=/(?:\/(?:Users|home|tmp|var|root)\S+|~\/\S+)\.(?:png|jpg|jpeg|gif|webp|svg|mp4|webm|mov)/gi,D=new Set(["png","jpg","jpeg","gif","webp","svg"]),R=new Set(["mp4","webm","mov"]);function T(e){return"/api/file-serve?path=".concat(encodeURIComponent(e))}function L(e){let{message:t,agentName:r,agentAvatar:n,showTimestamp:o,onRetry:i,onFork:d,onSpeak:c}=e,x=(0,l.useTranslations)("chat"),[u,S]=(0,s.useState)(!1),[C,L]=(0,s.useState)(!1),z="user"===t.role,B=(0,s.useMemo)(()=>!z&&t.content?function(e){let t=[...e.matchAll(E)],r=new Set;return t.map(e=>e[0]).filter(e=>!r.has(e)&&(r.add(e),!0)).map(e=>{var t,r;let a=null!==(r=null===(t=e.split(".").pop())||void 0===t?void 0:t.toLowerCase())&&void 0!==r?r:"";return{path:e,type:D.has(a)?"image":R.has(a)?"video":"image"}})}(t.content):[],[z,t.content]);return(0,a.jsxs)("div",{className:"px-3",children:[o&&(0,a.jsx)("div",{className:"flex justify-center my-2",children:(0,a.jsx)("span",{className:"text-[11px] text-gray-500 neo-card bg-white dark:bg-slate-800/50 dark:backdrop-blur-sm rounded-full px-3 py-1 dark:border-slate-700/50",children:function(e){let t=new Date,r=new Date(e),a=Math.floor((t.getTime()-r.getTime())/864e5),s=r.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"});return 0===a?s:1===a?"昨天 ".concat(s):a<7?"".concat(["周日","周一","周二","周三","周四","周五","周六"][r.getDay()]," ").concat(s):r.toLocaleDateString("zh-CN",{month:"numeric",day:"numeric"})+" "+s}(t.createdAt)})}),(0,a.jsxs)("div",{className:(0,A.cn)("group flex items-end gap-2 mb-1",z?"flex-row-reverse":"flex-row"),children:[(0,a.jsx)("div",{className:(0,A.cn)("flex h-9 w-9 shrink-0 items-center justify-center rounded-xl text-lg shadow-lg transition-all duration-200 border",z?"neo-card bg-gradient-to-br from-blue-500 to-indigo-500 dark:from-cyan-600 dark:to-blue-600 text-white text-sm font-bold border-blue-400/50 dark:border-cyan-500/50 group-hover:scale-110 group-hover:shadow-blue-500/30 dark:group-hover:shadow-cyan-500/50":"neo-card bg-white dark:bg-slate-800 text-xl border-gray-200 dark:border-slate-700 group-hover:scale-110 dark:group-hover:shadow-purple-500/30"),children:z?"我":n}),(0,a.jsxs)("div",{className:(0,A.cn)("flex flex-col gap-1.5 max-w-[75%]",z?"items-end":"items-start"),children:[!z&&r&&(0,a.jsx)("span",{className:"text-xs text-gray-500 px-1",children:r}),!z&&t.thinking&&(0,a.jsxs)("button",{type:"button",onClick:()=>L(!C),className:"flex items-center gap-1.5 rounded-xl border neo-card border-purple-200 bg-purple-50 dark:border-purple-500/30 dark:bg-purple-900/20 dark:backdrop-blur-sm px-3 py-1.5 text-xs text-purple-700 dark:text-purple-300 hover:bg-purple-100 dark:hover:bg-purple-900/30 dark:hover:border-purple-500/50 transition-all duration-200 w-full text-left group/think hover:scale-[1.02]",children:[(0,a.jsx)(f.A,{className:"h-3.5 w-3.5 shrink-0 transition-transform duration-200 group-hover/think:rotate-12"}),(0,a.jsx)("span",{className:"flex-1 font-medium",children:"思考过程"}),C?(0,a.jsx)(p.A,{className:"h-3 w-3"}):(0,a.jsx)(v.A,{className:"h-3 w-3"})]}),C&&t.thinking&&(0,a.jsx)("div",{className:"rounded-xl border neo-card-inset border-purple-200 bg-purple-50/50 dark:border-purple-500/30 dark:bg-purple-900/10 dark:backdrop-blur-sm px-3 py-2 text-xs text-purple-800 dark:text-purple-200 w-full",children:(0,a.jsx)("div",{className:"prose prose-xs max-w-none dark:prose-invert whitespace-pre-wrap leading-relaxed font-mono",children:t.thinking})}),(0,a.jsxs)("div",{className:"relative",children:[z?(0,a.jsx)("span",{className:"absolute right-[-5px] bottom-3 w-0 h-0 border-t-[5px] border-t-transparent border-b-[5px] border-b-transparent border-l-[6px] border-l-blue-500 dark:border-l-cyan-600"}):(0,a.jsx)("span",{className:"absolute left-[-5px] bottom-3 w-0 h-0 border-t-[5px] border-t-transparent border-b-[5px] border-b-transparent border-r-[6px] border-r-white dark:border-r-slate-800"}),(0,a.jsxs)("div",{className:(0,A.cn)("group/msg relative rounded-xl text-[14px] leading-[1.6] shadow-lg overflow-hidden transition-all duration-200 border backdrop-blur-sm",z?"bg-gradient-to-br from-blue-500 to-indigo-500 dark:from-cyan-600 dark:to-blue-600 text-white rounded-br-[3px] border-blue-400/50 dark:border-cyan-500/50 hover:shadow-blue-500/20 dark:hover:shadow-cyan-500/30":"neo-card bg-white dark:bg-slate-800/90 text-gray-800 dark:text-gray-100 rounded-bl-[3px] border-gray-200 dark:border-slate-700/50 dark:hover:border-slate-600"),children:[z&&t.images&&t.images.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5 p-2 pb-0",children:t.images.map(e=>(0,a.jsx)("img",{src:e.previewUrl,alt:e.name,className:"h-32 max-w-[180px] object-cover rounded-md"},e.id))}),(0,a.jsx)("div",{className:"px-3.5 py-2.5",children:z?t.content?(0,a.jsx)("p",{className:"whitespace-pre-wrap break-words",children:t.content}):null:(0,a.jsx)("div",{className:(0,A.cn)("prose prose-sm max-w-none break-words","prose-p:my-1 prose-headings:my-2 prose-ul:my-1 prose-ol:my-1","prose-code:bg-gray-100 dark:prose-code:bg-black/10 prose-code:rounded prose-code:px-1 prose-code:text-[13px]","prose-pre:bg-gray-100 dark:prose-pre:bg-black/30 prose-pre:rounded-md prose-pre:text-[13px]","dark:prose-invert"),children:(0,a.jsx)(h.oz,{remarkPlugins:[b.A],rehypePlugins:[g.A],children:t.content})})})]})]}),B.length>0&&(0,a.jsx)("div",{className:"w-full space-y-2 mt-1",children:B.map(e=>{let{path:t,type:r}=e;return(0,a.jsx)("div",{className:"rounded-xl overflow-hidden border border-border/40 bg-black/5 dark:bg-white/5",children:"image"===r?(0,a.jsxs)("div",{className:"relative group/media",children:[(0,a.jsx)("img",{src:T(t),alt:t.split("/").pop(),className:"w-full max-h-[480px] object-contain",loading:"lazy"}),(0,a.jsxs)("a",{href:T(t),target:"_blank",rel:"noopener noreferrer",download:t.split("/").pop(),className:"absolute top-2 right-2 opacity-0 group-hover/media:opacity-100 transition-opacity bg-black/60 text-white rounded-lg px-2 py-1 text-xs flex items-center gap-1",children:[(0,a.jsx)(y.A,{className:"h-3 w-3"}),"打开原图"]}),(0,a.jsx)("p",{className:"px-2 py-1 text-[10px] text-muted-foreground font-mono truncate border-t border-border/30",children:t})]}):(0,a.jsxs)("div",{children:[(0,a.jsx)("video",{src:T(t),controls:!0,className:"w-full max-h-[360px]",preload:"metadata"}),(0,a.jsx)("p",{className:"px-2 py-1 text-[10px] text-muted-foreground font-mono truncate border-t border-border/30",children:t})]})},t)})}),t.toolCalls&&t.toolCalls.length>0&&(0,a.jsx)("div",{className:"w-full space-y-1",children:t.toolCalls.map(e=>(0,a.jsx)(I,{toolCall:e},e.id))}),(0,a.jsxs)("div",{className:(0,A.cn)("flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-all duration-200",z?"self-end":"self-start"),children:[(0,a.jsxs)("button",{type:"button",onClick:()=>{navigator.clipboard.writeText(t.content),S(!0),setTimeout(()=>S(!1),2e3)},className:"flex items-center gap-1 text-[11px] neo-button text-gray-600 hover:text-blue-600 dark:text-gray-400 dark:hover:bg-cyan-500/20 dark:hover:text-cyan-400 px-2.5 py-1 rounded-lg border-transparent dark:hover:border-cyan-500/50 transition-all duration-200 hover:scale-105",children:[u?(0,a.jsx)(m.A,{className:"h-3 w-3"}):(0,a.jsx)(j.A,{className:"h-3 w-3"}),x(u?"copied":"copyMessage")]}),!z&&i&&(0,a.jsxs)("button",{type:"button",onClick:()=>i(t),className:"flex items-center gap-1 text-[11px] neo-button text-gray-600 hover:text-purple-600 dark:text-gray-400 dark:hover:bg-purple-500/20 dark:hover:text-purple-400 px-2.5 py-1 rounded-lg border-transparent dark:hover:border-purple-500/50 transition-all duration-200 hover:scale-105",children:[(0,a.jsx)(w.A,{className:"h-3 w-3 transition-transform duration-200 hover:rotate-180"}),"重试"]}),!z&&d&&(0,a.jsxs)("button",{type:"button",onClick:()=>d(t),className:"flex items-center gap-1 text-[11px] neo-button text-gray-600 hover:text-indigo-600 dark:text-gray-400 dark:hover:bg-blue-500/20 dark:hover:text-blue-400 px-2.5 py-1 rounded-lg border-transparent dark:hover:border-blue-500/50 transition-all duration-200 hover:scale-105",children:[(0,a.jsx)(N.A,{className:"h-3 w-3"}),"分叉"]}),!z&&c&&(0,a.jsxs)("button",{type:"button",onClick:()=>c(t.content),className:"flex items-center gap-1 text-[11px] neo-button text-gray-600 hover:text-green-600 dark:text-gray-400 dark:hover:bg-green-500/20 dark:hover:text-green-400 px-2.5 py-1 rounded-lg border-transparent dark:hover:border-green-500/50 transition-all duration-200 hover:scale-105",children:[(0,a.jsx)(k.A,{className:"h-3 w-3"}),"朗读"]})]})]})]})]})}function z(e){let{agentAvatar:t}=e;return(0,a.jsx)("div",{className:"px-3",children:(0,a.jsxs)("div",{className:"flex items-end gap-2 mb-1",children:[(0,a.jsx)("div",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-[6px] bg-white dark:bg-zinc-700 text-xl shadow-sm",children:t}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("span",{className:(0,A.cn)("absolute left-[-5px] bottom-3 w-0 h-0 border-t-[5px] border-t-transparent border-b-[5px] border-b-transparent border-r-[6px] border-r-white dark:border-r-zinc-700")}),(0,a.jsx)("div",{className:"bg-white dark:bg-zinc-700 rounded-lg rounded-bl-[3px] px-4 py-3 shadow-sm",children:(0,a.jsx)("div",{className:"flex items-center gap-1.5",children:[0,1,2].map(e=>(0,a.jsx)("span",{className:"h-2 w-2 rounded-full bg-zinc-400 animate-bounce",style:{animationDelay:"".concat(150*e,"ms")}},e))})})]})]})})}function I(e){let{toolCall:t}=e,r=(0,l.useTranslations)("chat"),[n,o]=(0,s.useState)(!1),[i,d]=(0,s.useState)(null),[c,x]=(0,s.useState)(!1),u="bash"===t.name||"user_bash"===t.name,m=(()=>{if(!t.input)return null;if(u)return t.input;try{let e=JSON.parse(t.input);if("string"==typeof e)return e;return JSON.stringify(e,null,2)}catch(e){return t.input}})(),h=null!=i?i:t.output,b=async()=>{if(t.fullOutputPath&&!c){x(!0);try{var e,r;let a=await fetch("/api/bash-output?path=".concat(encodeURIComponent(t.fullOutputPath))),s=await a.json();d(null!==(r=null!==(e=s.output)&&void 0!==e?e:s.error)&&void 0!==r?r:"加载失败")}catch(e){d("加载失败: ".concat(String(e)))}finally{x(!1)}}};return(0,a.jsxs)("div",{className:(0,A.cn)("rounded-lg border text-[12px] overflow-hidden w-full",u?"bg-gray-100 dark:bg-zinc-950 border-gray-300 dark:border-zinc-700":"bg-black/5 dark:bg-white/5"),children:[(0,a.jsxs)("button",{type:"button",onClick:()=>o(!n),className:(0,A.cn)("flex w-full items-center gap-2 px-3 py-2 transition-colors text-left",u?"text-gray-700 hover:bg-gray-200 dark:text-zinc-300 dark:hover:bg-zinc-800":"hover:bg-black/5 dark:hover:bg-white/5"),children:[t.isLoading?(0,a.jsx)(S.A,{className:"h-3 w-3 text-muted-foreground animate-spin shrink-0"}):u?(0,a.jsx)("span",{className:"text-[10px] font-bold text-zinc-500 shrink-0 font-mono",children:"$_"}):(0,a.jsx)(C.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),u&&m?(0,a.jsx)("span",{className:"font-mono flex-1 text-left truncate text-zinc-200",children:m}):(0,a.jsx)("span",{className:"font-mono font-medium flex-1 text-left truncate",children:t.name}),!t.isLoading&&(0,a.jsx)("span",{className:(0,A.cn)("text-xs shrink-0",t.isError?"text-red-400":"text-green-400"),children:t.isError?"✗":"✓"}),t.isLoading&&(0,a.jsx)("span",{className:"text-muted-foreground text-[11px] animate-pulse shrink-0",children:r("thinking")}),n?(0,a.jsx)(p.A,{className:"h-3 w-3 shrink-0 text-zinc-500"}):(0,a.jsx)(v.A,{className:"h-3 w-3 shrink-0 text-zinc-500"})]}),n&&(0,a.jsxs)("div",{className:(0,A.cn)("border-t space-y-0",u?"border-zinc-700":"border-border"),children:[!u&&m&&(0,a.jsxs)("div",{className:"px-3 py-2 border-b border-border",children:[(0,a.jsx)("p",{className:"text-muted-foreground mb-1 text-[11px] uppercase tracking-wide",children:r("toolCall")}),(0,a.jsx)("pre",{className:"whitespace-pre-wrap break-all text-[12px]",children:m})]}),void 0!==h&&(0,a.jsxs)("div",{className:(0,A.cn)("px-3 py-2",u&&"bg-zinc-950"),children:[!u&&(0,a.jsx)("p",{className:"text-muted-foreground mb-1 text-[11px] uppercase tracking-wide",children:r("toolResult")}),(0,a.jsx)("pre",{className:(0,A.cn)("whitespace-pre-wrap break-all text-[12px] max-h-64 overflow-auto leading-relaxed",u?"text-zinc-200 font-mono":"",t.isError?"text-red-400":""),children:h}),t.truncated&&t.fullOutputPath&&!i&&(0,a.jsxs)("button",{type:"button",onClick:b,disabled:c,className:"mt-2 flex items-center gap-1.5 text-[11px] text-zinc-400 hover:text-zinc-200 transition-colors disabled:opacity-50",children:[c?(0,a.jsx)(S.A,{className:"h-3 w-3 animate-spin"}):(0,a.jsx)(p.A,{className:"h-3 w-3"}),c?"加载中…":"输出已截断,点击加载完整内容"]})]}),!h&&!t.isLoading&&(0,a.jsx)("div",{className:"px-3 py-2",children:(0,a.jsx)("span",{className:"text-[11px] text-zinc-500 italic",children:"(无输出)"})})]})]})}var B=r(6609),_=r(767),O=r(7509),P=r(9257),U=r(650),M=r(7156),F=r(6164),W=r(8283);let $={normal:{label:"发送",color:"bg-blue-500 hover:bg-blue-600 dark:bg-cyan-600 dark:hover:bg-cyan-500",activeColor:"text-blue-600 dark:text-cyan-400",desc:"普通发送"},steer:{label:"引导",color:"bg-orange-500 hover:bg-orange-600 dark:bg-orange-600 dark:hover:bg-orange-500",activeColor:"text-orange-600 dark:text-orange-400",desc:"中断并引导当前生成"},followup:{label:"追加",color:"bg-indigo-500 hover:bg-indigo-600 dark:bg-purple-600 dark:hover:bg-purple-500",activeColor:"text-indigo-600 dark:text-purple-400",desc:"完成后追加"}};async function J(e){return new Promise((t,r)=>{let a=new FileReader;a.onload=()=>{let r=a.result,s=r.split(",")[1];t({id:Math.random().toString(36).slice(2),data:s,mimeType:e.type||"image/jpeg",name:e.name,previewUrl:r})},a.onerror=r,a.readAsDataURL(e)})}function V(e){let{onSend:t,disabled:r,voiceEnabled:n,voiceSpeed:d=1,agentLanguage:c="zh-CN",ttsProvider:x="browser",ttsModel:m,voiceId:h,pendingReply:b,onSpeakDone:g,installedSkills:f=[],onNewSession:v,onClearMessages:y,isStreaming:j,currentModel:w,onModelChange:N}=e,k=(0,l.useTranslations)("chat"),[S,C]=(0,s.useState)(""),[E,D]=(0,s.useState)([]),[R,T]=(0,s.useState)("normal"),[L,z]=(0,s.useState)(!1),[I,V]=(0,s.useState)(!1),[K,H]=(0,s.useState)([]),[q,G]=(0,s.useState)(!1),[Q,Y]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(!1),[ee,et]=(0,s.useState)(""),[er,ea]=(0,s.useState)(0),[es,el]=(0,s.useState)([]),[en,eo]=(0,s.useState)(-1),[ei,ed]=(0,s.useState)(""),[ec,ex]=(0,s.useState)(!1),eu=(0,s.useRef)(null),ep=(0,s.useRef)(null),em=(0,s.useRef)(null),eh=(0,s.useRef)(null),eb=(0,s.useRef)(0);(0,s.useEffect)(()=>{I&&!(K.length>0)&&fetch("/api/models").then(e=>e.json()).then(H).catch(()=>{})},[I,K.length]),(0,s.useEffect)(()=>{let e=eu.current;e&&(e.style.height="auto",e.style.height=Math.min(e.scrollHeight,150)+"px")},[S]),(0,s.useEffect)(()=>{b&&n&&(async()=>{if("openai"===x)try{Y(!0);let e=await fetch("/api/tts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,model:m||"tts-1",voice:h||"alloy",speed:d||1})});if(!e.ok)throw Error("TTS request failed");let t=await e.blob(),r=URL.createObjectURL(t),a=new Audio(r);a.onended=()=>{Y(!1),null==g||g(),URL.revokeObjectURL(r)},a.onerror=()=>{Y(!1),null==g||g(),URL.revokeObjectURL(r)},await a.play()}catch(e){console.error("OpenAI TTS error:",e),Y(!1),null==g||g()}else{var e;null===(e=window.speechSynthesis)||void 0===e||e.cancel();let t=new SpeechSynthesisUtterance(b);if(t.lang=c,t.rate=d||1,h){let e=window.speechSynthesis.getVoices().find(e=>e.name===h||e.voiceURI===h);e&&(t.voice=e)}t.onstart=()=>Y(!0),t.onend=()=>{Y(!1),null==g||g()},window.speechSynthesis.speak(t)}})()},[b,n,d,c,x,m,h,g]),(0,s.useEffect)(()=>{j&&"normal"===R&&T("steer"),j||"steer"!==R||T("normal")},[j,R]);let eg=(0,s.useCallback)(async e=>{let t=e.filter(e=>e.type.startsWith("image/")).slice(0,4);if(!t.length)return;let r=await Promise.all(t.map(J));D(e=>[...e,...r].slice(0,4))},[]),ef=e=>D(t=>t.filter(t=>t.id!==e)),ev=[{id:"new",label:"新建会话",description:"开始全新对话",icon:(0,a.jsx)(o.A,{className:"h-4 w-4 text-blue-500"}),category:"system",action:()=>{null==v||v(),C(""),Z(!1)}},{id:"clear",label:"清空消息",description:"清空当前窗口消息",icon:(0,a.jsx)(i.A,{className:"h-4 w-4 text-red-500"}),category:"system",action:()=>{null==y||y(),C(""),Z(!1)}},...f.map(e=>({id:"skill:".concat(e.name),label:e.name,description:e.description||"执行此 Skill",icon:(0,a.jsx)(u.A,{className:"h-4 w-4 text-purple-500"}),category:"skill",insert:"/".concat(e.name," ")}))].filter(e=>!ee||e.label.toLowerCase().includes(ee.toLowerCase())||e.description.toLowerCase().includes(ee.toLowerCase())),ey=(0,s.useCallback)(e=>{if(e.action){e.action();return}if(e.insert){var t;let r=S.replace(/(?:^|\n)\/[^\s]*$/,t=>{var r;return t.startsWith("\n")?"\n"+e.insert:null!==(r=e.insert)&&void 0!==r?r:""});C(null!=r?r:""),Z(!1),null===(t=eu.current)||void 0===t||t.focus()}},[S]),ej=()=>{if(!S.trim()&&!E.length||r)return;let e=S.trim();t(e,R,E.length?E:void 0),e&&el(t=>[e,...t.filter(t=>t!==e)].slice(0,50)),C(""),D([]),eo(-1),Z(!1),("steer"===R||"followup"===R)&&T("normal")};(0,s.useEffect)(()=>{var e,t,r;null===(r=eh.current)||void 0===r||null===(t=r.querySelector('[data-idx="'.concat(er,'"]')))||void 0===t||null===(e=t.scrollIntoView)||void 0===e||e.call(t,{block:"nearest"})},[er]);let ew=ev.reduce((e,t)=>(e[t.category]||(e[t.category]=[]),e[t.category].push(t),e),{}),eN={system:"系统命令",skill:"Skills"},ek=0,eS=$[R],eC=(S.trim().length>0||E.length>0)&&!(r&&"normal"===R),eA="steer"===R?"border-orange-400/60 dark:border-orange-700/60":"followup"===R?"border-blue-400/60 dark:border-blue-700/60":ec?"border-[#57BE6B] border-dashed":"border-border";return(0,a.jsxs)("div",{className:"border-t bg-background px-3 py-2 relative",onDragEnter:e=>{e.preventDefault(),eb.current++,Array.from(e.dataTransfer.items).some(e=>e.type.startsWith("image/"))&&ex(!0)},onDragLeave:e=>{e.preventDefault(),eb.current--,eb.current<=0&&(eb.current=0,ex(!1))},onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault(),eb.current=0,ex(!1),eg(Array.from(e.dataTransfer.files))},children:[(0,a.jsx)("input",{ref:ep,type:"file",accept:"image/jpeg,image/png,image/gif,image/webp",multiple:!0,className:"hidden",onChange:e=>{e.target.files&&(eg(Array.from(e.target.files)),e.target.value="")}}),X&&(0,a.jsxs)("div",{ref:eh,className:"absolute bottom-full left-3 right-3 mb-2 rounded-xl border bg-white dark:bg-zinc-800 shadow-2xl overflow-hidden z-50 max-h-64 overflow-y-auto",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b bg-secondary/30",children:[(0,a.jsx)(B.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:ee?"/".concat(ee):"输入命令名称过滤…"}),(0,a.jsx)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:"↑↓ \xb7 Enter \xb7 Esc"})]}),0===ev.length?(0,a.jsx)("div",{className:"px-4 py-5 text-center text-sm text-muted-foreground",children:"没有匹配的命令"}):(0,a.jsx)("div",{className:"p-1",children:Object.entries(ew).map(e=>{var t;let[r,s]=e;return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"px-2 py-1 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",children:null!==(t=eN[r])&&void 0!==t?t:r}),s.map(e=>{let t=ek++,r=t===er;return(0,a.jsxs)("button",{type:"button","data-idx":t,onClick:()=>ey(e),onMouseEnter:()=>ea(t),className:(0,A.cn)("w-full flex items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-colors",r?"bg-secondary":"hover:bg-secondary/50"),children:[(0,a.jsx)("div",{className:"h-7 w-7 rounded-lg bg-secondary flex items-center justify-center shrink-0",children:e.icon}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:e.label}),(0,a.jsxs)("code",{className:"text-[10px] text-muted-foreground font-mono bg-secondary px-1.5 py-0.5 rounded",children:["/",e.id.replace("skill:","")]})]}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground truncate mt-0.5",children:e.description})]})]},e.id)})]},r)})})]}),(0,a.jsxs)("div",{className:(0,A.cn)("rounded-xl border transition-colors",eA,"steer"===R?"bg-orange-50/40 dark:bg-orange-900/10":"followup"===R?"bg-blue-50/40 dark:bg-blue-900/10":"bg-background"),children:[E.length>0&&(0,a.jsxs)("div",{className:"flex gap-2 p-2 flex-wrap border-b border-border/60 rounded-t-xl overflow-hidden",children:[E.map(e=>(0,a.jsxs)("div",{className:"relative group/img",children:[(0,a.jsx)("img",{src:e.previewUrl,alt:e.name,className:"h-16 w-16 object-cover rounded-lg border border-border/60"}),(0,a.jsx)("button",{type:"button",onClick:()=>ef(e.id),className:"absolute -top-1.5 -right-1.5 h-5 w-5 rounded-full bg-zinc-800 dark:bg-zinc-600 text-white flex items-center justify-center opacity-0 group-hover/img:opacity-100 transition-opacity shadow",children:(0,a.jsx)(_.A,{className:"h-3 w-3"})})]},e.id)),E.length<4&&(0,a.jsx)("button",{type:"button",onClick:()=>{var e;return null===(e=ep.current)||void 0===e?void 0:e.click()},className:"h-16 w-16 rounded-lg border-2 border-dashed border-border/60 flex items-center justify-center text-muted-foreground hover:border-[#57BE6B] hover:text-[#57BE6B] transition-colors",children:(0,a.jsx)(O.A,{className:"h-5 w-5"})})]}),(0,a.jsx)("textarea",{ref:eu,value:S,onChange:e=>{let t=e.target.value;if(C(t),eo(-1),"/"===t||/(?:^|\n)\/$/.test(t))et(""),ea(0),Z(!0);else if(X){let e=t.match(/(?:^|\n)\/([^\s]*)$/);e?(et(e[1]),ea(0)):Z(!1)}},onKeyDown:e=>{if(X){"ArrowDown"===e.key?(e.preventDefault(),ea(e=>Math.min(e+1,ev.length-1))):"ArrowUp"===e.key?(e.preventDefault(),ea(e=>Math.max(e-1,0))):"Enter"!==e.key||e.shiftKey?"Escape"===e.key&&Z(!1):(e.preventDefault(),ev[er]&&ey(ev[er]));return}if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),ej();return}if("ArrowUp"===e.key&&!S.trim()){e.preventDefault();let t=Math.min(en+1,es.length-1);t>=0&&es[t]&&(-1===en&&ed(S),C(es[t]),eo(t))}if("ArrowDown"===e.key&&en>=0){e.preventDefault();let t=en-1;t<0?(C(ei),eo(-1)):(C(es[t]),eo(t))}},onPaste:e=>{let t=Array.from(e.clipboardData.items).filter(e=>e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(Boolean);t.length&&(e.preventDefault(),eg(t))},onBlur:()=>setTimeout(()=>Z(!1),150),placeholder:"steer"===R?"引导生成方向(将中断当前输出)…":"followup"===R?"追加消息(当前完成后发送)…":"".concat(k("inputPlaceholder")," ( / 唤出命令 \xb7 粘贴/拖拽图片 )"),rows:1,disabled:r&&"normal"===R,className:"w-full resize-none bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:opacity-50 px-3 pt-2.5 pb-1 max-h-[150px]"}),(0,a.jsxs)("div",{className:"flex items-center gap-1 px-2 py-1.5",children:[(0,a.jsx)("button",{type:"button",onClick:()=>{var e;return null===(e=ep.current)||void 0===e?void 0:e.click()},title:"上传图片(最多 ".concat(4," 张,支持拖拽/粘贴)"),disabled:E.length>=4,className:"flex items-center justify-center h-7 w-7 rounded-lg text-muted-foreground hover:bg-secondary/60 hover:text-foreground transition-colors disabled:opacity-30 disabled:cursor-not-allowed",children:(0,a.jsx)(O.A,{className:"h-4 w-4"})}),N&&(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>{V(!I),z(!1)},title:w?"当前模型:".concat(w.provider,"/").concat(w.modelId):"切换模型",className:(0,A.cn)("flex items-center gap-1 h-7 px-2 rounded-lg text-xs transition-colors hover:bg-secondary/60",w?"text-muted-foreground hover:text-foreground":"text-muted-foreground"),children:[(0,a.jsx)(P.A,{className:"h-3.5 w-3.5 shrink-0"}),w&&(0,a.jsx)("span",{className:"font-mono max-w-[80px] truncate",children:w.modelId.split("-").slice(-2).join("-")}),(0,a.jsx)(p.A,{className:"h-3 w-3 opacity-50 shrink-0"})]}),I&&(0,a.jsxs)("div",{className:"absolute bottom-full left-0 mb-1 w-72 rounded-xl border bg-white dark:bg-zinc-800 shadow-xl z-50 overflow-hidden",children:[(0,a.jsx)("div",{className:"px-3 py-2 border-b text-xs text-muted-foreground font-medium bg-secondary/30",children:"切换模型(本次会话有效)"}),(0,a.jsx)("div",{className:"max-h-72 overflow-y-auto",children:0===K.length?(0,a.jsx)("div",{className:"px-4 py-6 text-center text-sm text-muted-foreground",children:"加载中…"}):K.map(e=>(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"px-3 py-1.5 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider bg-secondary/20 sticky top-0",children:e.name}),e.models.map(e=>{let t=(null==w?void 0:w.provider)===e.providerId&&(null==w?void 0:w.modelId)===e.id;return(0,a.jsx)("button",{type:"button",onClick:()=>{N(e.providerId,e.id),V(!1)},className:(0,A.cn)("w-full flex items-start gap-2.5 px-3 py-2 text-left transition-colors hover:bg-secondary/50",t&&"bg-[#57BE6B]/10 dark:bg-[#57BE6B]/15"),children:(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:(0,A.cn)("text-sm font-medium truncate",t&&"text-[#57BE6B]"),children:e.name}),t&&(0,a.jsx)("span",{className:"text-[10px] text-[#57BE6B] font-medium shrink-0",children:"当前"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,a.jsxs)("span",{className:"text-[10px] text-muted-foreground font-mono",children:[Math.round(e.contextWindow/1e3),"K ctx"]}),e.supportsThinking&&(0,a.jsx)("span",{className:"text-[10px] text-purple-500",children:"\uD83E\uDDE0 thinking"}),e.inputTypes.includes("image")&&(0,a.jsx)("span",{className:"text-[10px] text-blue-500",children:"\uD83D\uDDBC vision"}),e.costInput&&(0,a.jsxs)("span",{className:"text-[10px] text-muted-foreground ml-auto shrink-0",children:["$",e.costInput,"/M"]})]})]})},e.id)})]},e.id))})]})]}),n&&(Q?(0,a.jsx)("button",{type:"button",onClick:()=>{var e;null===(e=window.speechSynthesis)||void 0===e||e.cancel(),Y(!1),null==g||g()},title:"停止朗读",className:"flex items-center justify-center h-7 w-7 rounded-lg text-primary hover:bg-secondary/60 transition-colors",children:(0,a.jsx)(U.A,{className:"h-4 w-4"})}):(0,a.jsx)("button",{type:"button",onClick:()=>{var e,t;if(q){null===(e=em.current)||void 0===e||e.stop(),G(!1);return}let r=window,a=null!==(t=r.SpeechRecognition)&&void 0!==t?t:r.webkitSpeechRecognition;if(!a)return;let s=new a;s.lang=c,s.continuous=!1,s.interimResults=!1,s.onresult=e=>C(t=>t+(t?" ":"")+e.results[0][0].transcript),s.onend=()=>G(!1),s.onerror=()=>G(!1),s.start(),em.current=s,G(!0)},title:q?"停止录音":"语音输入",className:(0,A.cn)("flex items-center justify-center h-7 w-7 rounded-lg transition-colors hover:bg-secondary/60",q?"text-destructive animate-pulse":"text-muted-foreground hover:text-foreground"),children:q?(0,a.jsx)(M.A,{className:"h-4 w-4"}):(0,a.jsx)(F.A,{className:"h-4 w-4"})})),(0,a.jsx)("div",{className:"flex-1"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>z(!L),className:(0,A.cn)("flex items-center gap-1 rounded-lg px-2 py-1 text-xs font-medium transition-colors hover:bg-secondary/60",eS.activeColor),children:[eS.label,(0,a.jsx)(p.A,{className:"h-3 w-3 opacity-60"})]}),L&&(0,a.jsx)("div",{className:"absolute bottom-full right-0 mb-1 min-w-[160px] rounded-xl border bg-white dark:bg-zinc-800 shadow-xl z-50 p-1 space-y-0.5",children:Object.entries($).map(e=>{let[t,r]=e;return(0,a.jsxs)("button",{type:"button",onClick:()=>{T(t),z(!1)},className:(0,A.cn)("w-full text-left rounded-lg px-3 py-2 text-sm transition-colors",R===t?"bg-secondary":"hover:bg-secondary/50"),children:[(0,a.jsx)("div",{className:(0,A.cn)("font-medium",$[t].activeColor),children:r.label}),(0,a.jsx)("div",{className:"text-[11px] text-muted-foreground",children:r.desc})]},t)})})]}),(0,a.jsx)("button",{type:"button",onClick:ej,disabled:!eC,title:"发送(Enter)",className:(0,A.cn)("flex items-center justify-center h-7 w-7 rounded-lg text-white transition-colors disabled:opacity-40 disabled:cursor-not-allowed",eS.color),children:(0,a.jsx)(W.A,{className:"h-3.5 w-3.5"})})]})]}),ec&&(0,a.jsxs)("div",{className:"absolute inset-0 m-1 rounded-xl border-2 border-dashed border-[#57BE6B] bg-[#57BE6B]/5 flex flex-col items-center justify-center gap-1 pointer-events-none",children:[(0,a.jsx)(O.A,{className:"h-6 w-6 text-[#57BE6B]"}),(0,a.jsx)("p",{className:"text-sm font-medium text-[#57BE6B]",children:"松开鼠标上传图片"})]})]})}var K=r(7995),H=r(3697),q=r(5564);function G(e){var t,r,h;let{params:b}=e,g=(0,l.useTranslations)("chat"),f=(0,l.useLocale)(),[v,y]=(0,s.useState)(""),[j,w]=(0,s.useState)(null),[N,k]=(0,s.useState)([]),[S,C]=(0,s.useState)([]),[E,D]=(0,s.useState)(),[R,T]=(0,s.useState)(!1),[I,B]=(0,s.useState)(!1),[_,O]=(0,s.useState)(!1),[P,U]=(0,s.useState)(),[M,F]=(0,s.useState)(!1),[W,$]=(0,s.useState)(null),[J,G]=(0,s.useState)(!1),[Q,Y]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(null),[ee,et]=(0,s.useState)(null),[er,ea]=(0,s.useState)([]),[es,el]=(0,s.useState)(null),en=(0,s.useRef)(null),eo=(0,s.useRef)(null),ei=(0,s.useRef)(null),ed=(0,s.useRef)(null),ec=(0,s.useRef)(j),ex=(0,s.useRef)(v),eu=(0,s.useRef)(E),ep=(0,s.useRef)(ee),em=(0,s.useRef)(es);(0,s.useEffect)(()=>{ec.current=j},[j]),(0,s.useEffect)(()=>{ex.current=v},[v]),(0,s.useEffect)(()=>{eu.current=E},[E]),(0,s.useEffect)(()=>{ep.current=ee},[ee]),(0,s.useEffect)(()=>{em.current=es},[es]),(0,s.useEffect)(()=>{b.then(async e=>{let{id:t}=e;y(t);let[r,a,s]=await Promise.all([fetch("/api/agents/".concat(t)).then(e=>e.json()),fetch("/api/sessions/".concat(t)).then(e=>e.json()),fetch("/api/skills").then(e=>e.json())]);w(r),C(a),ea(s)})},[b]),(0,s.useEffect)(()=>{if(!J){var e;null===(e=en.current)||void 0===e||e.scrollIntoView({behavior:"smooth"})}},[N,R,J]);let eh=(0,s.useCallback)(()=>{let e=eo.current;e&&G(e.scrollHeight-e.scrollTop-e.clientHeight>120)},[]),eb=null!=ee?ee:null!==(r=null==j?void 0:j.enabledSkills)&&void 0!==r?r:[],eg=(0,s.useCallback)(()=>{var e;null===(e=ei.current)||void 0===e||e.abort(),ei.current=null,T(!1)},[]),ef=(0,s.useCallback)(async(e,t)=>{let r=ec.current,a=ex.current;if(!r||!a)return;let s={id:(0,H.A)(),role:"user",content:e,images:t,createdAt:new Date};k(e=>[...e,s]),T(!0);let l=(0,H.A)();k(e=>[...e,{id:l,role:"assistant",content:"",toolCalls:[],createdAt:new Date}]);let n=new Map,o=new AbortController;ei.current=o;try{var i,d,c,x;let r=await fetch("/api/chat/".concat(a),{method:"POST",headers:{"Content-Type":"application/json"},signal:o.signal,body:JSON.stringify({message:e,sessionFile:eu.current,overrideSkills:null!==(c=ep.current)&&void 0!==c?c:void 0,overrideProvider:null===(i=em.current)||void 0===i?void 0:i.provider,overrideModelId:null===(d=em.current)||void 0===d?void 0:d.modelId,images:null==t?void 0:t.map(e=>({data:e.data,mimeType:e.mimeType}))})});if(!r.ok||!r.body)throw Error("HTTP ".concat(r.status));let s=r.body.getReader(),u=new TextDecoder,p="";for(;;){let{done:t,value:r}=await s.read();if(t)break;let a=(p+=u.decode(r,{stream:!0})).split("\n");for(let t of(p=null!==(x=a.pop())&&void 0!==x?x:"",a))if(t.startsWith("data: "))try{let r=JSON.parse(t.slice(6));!function(e,t,r,a,s){switch(e.type){case"message_update":k(r=>r.map(r=>r.id===t?{...r,content:r.content+e.delta}:r));break;case"thinking_delta":k(r=>r.map(r=>{var a;return r.id===t?{...r,thinking:(null!==(a=r.thinking)&&void 0!==a?a:"")+e.delta}:r}));break;case"tool_start":{let a={id:e.toolCallId,name:e.toolName,isLoading:!0};r.set(e.toolCallId,a),k(e=>e.map(e=>{var r;return e.id===t?{...e,toolCalls:[...null!==(r=e.toolCalls)&&void 0!==r?r:[],a]}:e}));break}case"tool_update":{let a=r.get(e.toolCallId);if(a){let s={...a,input:e.content};r.set(e.toolCallId,s),k(r=>r.map(r=>{var a;return r.id===t?{...r,toolCalls:null===(a=r.toolCalls)||void 0===a?void 0:a.map(t=>t.id===e.toolCallId?s:t)}:r}))}break}case"tool_end":{let a=r.get(e.toolCallId);if(a){let s={...a,isLoading:!1,isError:e.isError,output:e.output,fullOutputPath:e.fullOutputPath,truncated:e.truncated};r.set(e.toolCallId,s),k(r=>r.map(r=>{var a;return r.id===t?{...r,toolCalls:null===(a=r.toolCalls)||void 0===a?void 0:a.map(t=>t.id===e.toolCallId?s:t)}:r}))}break}case"compaction_start":F(!0);break;case"compaction_end":F(!1);break;case"error":(0,q.oR)({title:"对话出错",description:e.message,variant:"destructive"}),k(r=>r.map(r=>r.id!==t||r.content?r:{...r,content:"⚠️ ".concat(e.message)}));break;case"aborted":case"done":T(!1);break;case"session_file":{let t=e.path;D(t);let r=a.slice(0,60)||"新对话";C(e=>e.find(e=>e.session_file===t)?e:[{id:(0,H.A)(),title:r,session_file:t,created_at:Date.now()},...e]);break}case"session_stats":$(e.stats)}}(r,l,n,e,0)}catch(e){}}}catch(t){if("AbortError"===t.name)return;let e=String(t);k(t=>t.map(t=>t.id===l?{...t,content:"⚠️ ".concat(e)}:t)),(0,q.oR)({title:"发送失败",description:e,variant:"destructive"})}finally{ei.current=null,T(!1)}},[]);(0,s.useEffect)(()=>{if(!R){if(ed.current){let e=ed.current;ed.current=null,ef(e)}else X&&(Z(null),ef(X))}},[R]);let ev=(0,s.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal",r=arguments.length>2?arguments[2]:void 0;if("steer"===t){R?(ed.current=e,eg()):ef(e,r);return}if("followup"===t){R?(Z(e),(0,q.oR)({title:"消息已排队",description:"当前回复完成后自动发送"})):ef(e,r);return}R||ef(e,r)},[R,ef,eg]),ey=()=>{D(void 0),k([]),et(null),$(null),el(null)},ej=async e=>{D(e),k([]),B(!1),$(null);try{let{messages:t}=await fetch("/api/sessions/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionFile:e})}).then(e=>e.json());k(t.map(e=>{var t;return{id:e.id,role:e.role,content:e.content,thinking:e.thinking,toolCalls:null!==(t=e.toolCalls)&&void 0!==t?t:[],createdAt:new Date(e.createdAt)}}))}catch(e){(0,q.oR)({title:"加载历史失败",description:String(e),variant:"destructive"})}},ew=(0,s.useCallback)(e=>{if(R)return;let t=N.findIndex(t=>t.id===e.id);for(let e=t-1;e>=0;e--)if("user"===N[e].role){k(t=>t.slice(0,e+1)),ef(N[e].content);return}},[N,R,ef]),eN=(0,s.useCallback)(e=>{let t=N.findIndex(t=>t.id===e.id);D(void 0),k(t>=0?N.slice(0,t):[]),et(null),$(null),(0,q.oR)({title:"会话已分叉",description:"从所选消息之前创建了新分支",variant:"success"})},[N]),ek=async(e,t,r)=>{e.stopPropagation(),await fetch("/api/sessions/".concat(v,"/").concat(t),{method:"DELETE"}),C(e=>e.filter(e=>e.id!==t)),E===r&&(D(void 0),k([]))},eS=async()=>{if(!Q){Y(!0),setTimeout(()=>Y(!1),3e3);return}await fetch("/api/sessions/".concat(v),{method:"DELETE"}),C([]),D(void 0),k([]),Y(!1)},eC=e=>{var t;let r=null!=ee?ee:null!==(t=null==j?void 0:j.enabledSkills)&&void 0!==t?t:[];et(r.includes(e)?r.filter(t=>t!==e):[...r,e])};if(!j)return(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:"Loading…"});let eA=e=>0===e||new Date(N[e].createdAt).getTime()-new Date(N[e-1].createdAt).getTime()>3e5,eE=null!==(h=null==W?void 0:null===(t=W.contextUsage)||void 0===t?void 0:t.percent)&&void 0!==h?h:0,eD=eE>80?"bg-red-500":eE>60?"bg-yellow-500":"bg-[#57BE6B]";return(0,a.jsxs)("div",{className:"flex h-full bg-gradient-to-br from-gray-50 to-gray-100 dark:from-slate-900 dark:via-purple-900/10 dark:to-slate-900",children:[(0,a.jsxs)("div",{className:(0,A.cn)("shrink-0 transition-all duration-300 overflow-hidden","bg-[hsl(var(--neo-bg))] backdrop-blur-xl border-r border-gray-200 dark:bg-slate-900/95 dark:backdrop-blur-2xl dark:border-slate-700/50",I?"w-[280px]":"w-0"),children:[(0,a.jsxs)("div",{className:"p-4 space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("span",{className:"text-[14px] font-bold text-gray-800 dark:text-white",children:"会话历史"}),(0,a.jsx)("button",{onClick:()=>B(!1),className:"h-8 w-8 rounded-xl neo-button hover:text-blue-600 dark:hover:bg-cyan-500/20 dark:border-transparent dark:hover:border-cyan-500/50 flex items-center justify-center transition-all duration-200 hover:scale-110",title:"关闭侧边栏",children:(0,a.jsx)(n.A,{className:"h-4 w-4 text-gray-500 dark:text-gray-400 dark:group-hover:text-cyan-400 transition-colors"})})]}),(0,a.jsxs)("button",{onClick:ey,className:"group w-full h-10 rounded-xl neo-button bg-gradient-to-r from-blue-500 to-indigo-500 hover:from-blue-600 hover:to-indigo-600 dark:from-cyan-600 dark:to-blue-600 dark:hover:from-cyan-500 dark:hover:to-blue-500 text-white text-[13px] font-semibold shadow-lg hover:shadow-blue-500/30 dark:hover:shadow-cyan-500/50 transition-all duration-200 hover:scale-[1.02] hover:-translate-y-0.5 flex items-center justify-center gap-2",children:[(0,a.jsx)(o.A,{className:"h-4 w-4 transition-transform duration-200 group-hover:rotate-90"}),(0,a.jsx)("span",{children:g("newSession")})]}),S.length>0&&(0,a.jsxs)("button",{onClick:eS,className:(0,A.cn)("w-full h-8 rounded-xl text-[12px] font-medium transition-all duration-200 flex items-center justify-center gap-2 border hover:scale-[1.02]",Q?"bg-red-100 text-red-600 border-red-300 hover:bg-red-200 dark:bg-red-500/20 dark:text-red-400 dark:border-red-500/50 dark:hover:bg-red-500/30":"neo-button text-gray-600 hover:text-red-600 dark:hover:bg-slate-800 dark:text-gray-400 dark:hover:text-red-400 border-transparent dark:hover:border-red-500/30"),children:[(0,a.jsx)(i.A,{className:"h-3.5 w-3.5 transition-transform duration-200 hover:rotate-12"}),(0,a.jsx)("span",{children:Q?"再次点击确认清空":"清空全部历史"})]})]}),(0,a.jsx)(K.F,{className:"h-[calc(100vh-10rem)]",children:(0,a.jsx)("div",{className:"px-3 pb-3 space-y-2",children:0===S.length?(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)("div",{className:"w-16 h-16 mx-auto mb-4 rounded-2xl neo-card bg-white dark:bg-slate-800 border-gray-200 dark:border-slate-700 flex items-center justify-center",children:(0,a.jsx)(d.A,{className:"h-7 w-7 text-gray-400 dark:text-slate-500"})}),(0,a.jsx)("p",{className:"text-[13px] text-gray-500",children:g("noSessions")})]}):S.map(e=>(0,a.jsxs)("div",{className:"relative group",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>ej(e.session_file),className:(0,A.cn)("w-full text-left px-3 py-3 rounded-xl transition-all duration-200 border hover:scale-[1.02] hover:-translate-y-0.5",e.session_file===E?"neo-card-inset bg-blue-50 text-blue-700 border-blue-200 dark:bg-gradient-to-r dark:from-cyan-600/20 dark:to-blue-600/20 dark:border-cyan-500/50 dark:shadow-lg dark:shadow-cyan-500/20":"neo-button text-gray-700 dark:border-slate-700/50 dark:hover:border-cyan-500/30 dark:hover:bg-slate-800/50"),children:[e.session_file===E&&(0,a.jsx)("div",{className:"absolute left-0 top-1/2 -translate-y-1/2 w-1 h-8 bg-gradient-to-b from-blue-500 to-indigo-500 dark:from-cyan-400 dark:to-blue-500 rounded-r-full shadow-lg dark:shadow-cyan-500/50"}),(0,a.jsx)("p",{className:(0,A.cn)("text-[13px] truncate leading-snug transition-colors",e.session_file===E?"font-bold text-cyan-400":"font-medium text-gray-300 group-hover:text-white"),children:e.title}),(0,a.jsxs)("p",{className:"text-[11px] text-gray-500 mt-1 flex items-center gap-1.5 group-hover:text-gray-400 transition-colors",children:[(0,a.jsx)("span",{className:"w-1 h-1 rounded-full bg-cyan-500"}),new Date(e.created_at).toLocaleDateString(f)]})]}),(0,a.jsx)("button",{type:"button",onClick:t=>ek(t,e.id,e.session_file),className:"absolute right-2 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-100 h-7 w-7 rounded-lg hover:bg-red-500/20 text-gray-500 hover:text-red-400 flex items-center justify-center transition-all duration-200 border border-transparent hover:border-red-500/50 hover:scale-110",children:(0,a.jsx)(i.A,{className:"h-3.5 w-3.5"})})]},e.id))})})]}),(0,a.jsxs)("div",{className:"flex flex-1 flex-col min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center h-[56px] px-4 shrink-0 glass-effect border-b border-purple-500/20",children:[(0,a.jsx)("button",{onClick:()=>{B(!0),O(!1)},className:"h-9 w-9 rounded-lg hover:bg-white/10 flex items-center justify-center transition-all hover:scale-110 border border-transparent hover:border-purple-500/30",title:"打开历史记录",children:(0,a.jsx)(d.A,{className:"h-4 w-4 text-cyan-400"})}),(0,a.jsxs)("div",{className:"flex-1 flex items-center justify-center gap-3",children:[(0,a.jsx)("div",{className:"h-10 w-10 rounded-xl bg-gradient-to-br from-purple-600/30 to-cyan-500/30 flex items-center justify-center text-2xl shadow-lg neon-glow-purple border border-purple-500/30",children:j.avatar}),(0,a.jsx)("span",{className:"text-[16px] font-bold bg-gradient-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent",children:j.name})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[M&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-full glass-effect border border-cyan-500/30",children:[(0,a.jsx)("div",{className:"w-2 h-2 rounded-full bg-cyan-400 animate-pulse neon-glow"}),(0,a.jsx)("span",{className:"text-[11px] font-semibold text-cyan-400",children:"压缩中"})]}),(null==W?void 0:W.contextUsage)&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-full glass-effect border border-purple-500/30",title:"Context: ".concat(eE,"%"),children:[(0,a.jsx)("div",{className:"h-1.5 w-16 rounded-full bg-white/10 overflow-hidden",children:(0,a.jsx)("div",{className:(0,A.cn)("h-full rounded-full transition-all duration-500",eD),style:{width:"".concat(eE,"%")}})}),(0,a.jsxs)("span",{className:"text-[11px] font-semibold text-gray-300",children:[eE,"%"]})]}),R&&(0,a.jsx)("button",{onClick:eg,className:"h-9 w-9 rounded-lg hover:bg-red-500/20 text-red-400 flex items-center justify-center transition-all hover:scale-110 border border-transparent hover:border-red-500/50",title:"停止生成",children:(0,a.jsx)(c.A,{className:"h-4 w-4 fill-current"})}),(0,a.jsx)("button",{onClick:()=>{O(!_),B(!1)},className:(0,A.cn)("h-9 w-9 rounded-lg flex items-center justify-center transition-all hover:scale-110 border",_?"bg-purple-500/20 text-purple-400 border-purple-500/50 neon-glow-purple":"hover:bg-white/10 text-gray-400 border-transparent hover:border-purple-500/30"),title:"数字人信息 & Skills",children:(0,a.jsx)(x.A,{className:"h-4 w-4"})})]})]}),W&&(0,a.jsxs)("div",{className:"flex items-center justify-center gap-3 px-4 py-2 glass-effect border-b border-purple-500/20 text-[11px] shrink-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-cyan-500/10 border border-cyan-500/30",children:[(0,a.jsx)("span",{className:"text-cyan-400 font-semibold",children:"↑"}),(0,a.jsx)("span",{className:"font-bold text-cyan-300",children:W.tokens.input.toLocaleString()})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-purple-500/10 border border-purple-500/30",children:[(0,a.jsx)("span",{className:"text-purple-400 font-semibold",children:"↓"}),(0,a.jsx)("span",{className:"font-bold text-purple-300",children:W.tokens.output.toLocaleString()})]}),W.cost>0&&(0,a.jsx)("div",{className:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-green-500/10 border border-green-500/30",children:(0,a.jsxs)("span",{className:"font-bold text-green-300",children:["≈ $",W.cost.toFixed(4)]})}),W.contextUsage&&(0,a.jsx)("div",{className:(0,A.cn)("flex items-center gap-1.5 px-2.5 py-1 rounded-lg border",eE>80?"bg-red-500/10 border-red-500/30 text-red-400":"bg-white/5 border-white/10 text-gray-300"),children:(0,a.jsxs)("span",{className:"font-bold",children:["context ",eE,"% / ",W.contextUsage.contextWindow.toLocaleString()]})})]}),(0,a.jsxs)("div",{className:"flex flex-1 min-h-0",children:[(0,a.jsxs)("div",{className:"flex flex-col flex-1 min-w-0 relative",children:[(0,a.jsx)("div",{ref:eo,onScroll:eh,className:"flex-1 overflow-y-auto bg-white dark:bg-slate-900/50",children:(0,a.jsxs)("div",{className:"py-4 space-y-1",children:[0===N.length&&(0,a.jsx)("div",{className:"flex justify-center mt-20 mb-4 text-center",children:(0,a.jsxs)("div",{className:"max-w-sm",children:[(0,a.jsxs)("div",{className:"relative w-24 h-24 mx-auto mb-6",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-gradient-to-r from-blue-400/20 to-indigo-400/20 dark:from-purple-600/30 dark:to-cyan-500/30 blur-2xl animate-pulse"}),(0,a.jsx)("div",{className:"relative w-24 h-24 rounded-2xl neo-card bg-gradient-to-br from-blue-100 to-indigo-100 dark:from-purple-600/20 dark:to-cyan-500/20 border-2 border-blue-200 dark:border-purple-500/30 flex items-center justify-center text-5xl neon-glow-purple",children:j.avatar})]}),(0,a.jsx)("p",{className:"text-[18px] font-bold text-gray-800 dark:bg-gradient-to-r dark:from-cyan-400 dark:to-purple-400 dark:bg-clip-text dark:text-transparent mb-3",children:j.name}),(0,a.jsx)("p",{className:"text-[13px] text-gray-600 dark:text-gray-400 leading-relaxed px-4",children:j.description||g("welcomeTitle")}),eb.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap justify-center gap-2 mt-4",children:eb.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-[11px] px-3 py-1.5 rounded-lg glass-effect border border-purple-500/30 text-purple-300 font-medium",children:[(0,a.jsx)(u.A,{className:"h-3 w-3 text-cyan-400"}),e]},e))})]})}),N.map((e,t)=>{var r;return!R||t!==N.length-1||"assistant"!==e.role||""!==e.content||(null===(r=e.toolCalls)||void 0===r?void 0:r.length)?(0,a.jsx)(L,{message:e,agentName:j.name,agentAvatar:j.avatar,showTimestamp:eA(t),onRetry:"assistant"===e.role?ew:void 0,onFork:"assistant"===e.role?eN:void 0,onSpeak:"assistant"===e.role?e=>U(e):void 0},e.id):(0,a.jsx)(z,{agentAvatar:j.avatar},e.id)}),(0,a.jsx)("div",{ref:en,className:"h-2"})]})}),J&&(0,a.jsx)("button",{type:"button",onClick:()=>{var e;null===(e=en.current)||void 0===e||e.scrollIntoView({behavior:"smooth"}),G(!1)},className:"absolute bottom-24 right-6 z-10 h-11 w-11 rounded-full glass-effect border border-cyan-500/50 flex items-center justify-center hover:scale-110 transition-all neon-glow shadow-xl",children:(0,a.jsx)(p.A,{className:"h-5 w-5 text-cyan-400"})}),(0,a.jsx)(V,{onSend:ev,disabled:R,isStreaming:R,voiceEnabled:j.voice.enabled,voiceSpeed:j.voice.speed,agentLanguage:j.persona.language,ttsProvider:j.voice.ttsProvider,ttsModel:j.voice.ttsModel,voiceId:j.voice.voiceId,pendingReply:P,onSpeakDone:()=>U(void 0),installedSkills:er,onNewSession:ey,onClearMessages:()=>k([]),currentModel:null!=es?es:{provider:j.model.provider,modelId:j.model.modelId},onModelChange:(e,t)=>el({provider:e,modelId:t})})]}),_&&(0,a.jsxs)("div",{className:"w-[320px] shrink-0 border-l border-purple-500/20 glass-effect flex flex-col overflow-hidden",children:[(0,a.jsxs)("div",{className:"px-4 py-3 border-b border-purple-500/20 flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-[14px] font-bold bg-gradient-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent",children:"数字人信息"}),(0,a.jsx)("button",{onClick:()=>O(!1),className:"h-8 w-8 rounded-lg hover:bg-white/10 flex items-center justify-center transition-all hover:scale-110",children:(0,a.jsx)(n.A,{className:"h-4 w-4 text-cyan-400"})})]}),(0,a.jsx)(K.F,{className:"flex-1",children:(0,a.jsxs)("div",{className:"p-4 space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 rounded-xl glass-effect border border-purple-500/30 neon-glow-purple",children:[(0,a.jsx)("div",{className:"h-12 w-12 rounded-xl bg-gradient-to-br from-purple-600/30 to-cyan-500/30 flex items-center justify-center text-2xl shrink-0 border border-purple-500/30",children:j.avatar}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-bold text-[13px] bg-gradient-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent",children:j.name}),(0,a.jsx)("p",{className:"text-[11px] text-gray-400 mt-1 leading-relaxed",children:j.description||"暂无描述"})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] font-bold text-cyan-400 uppercase tracking-wide",children:"当前模型"}),(0,a.jsxs)("div",{className:"rounded-xl glass-effect border border-cyan-500/30 p-3",children:[(0,a.jsxs)("p",{className:"text-[12px] font-mono font-bold text-cyan-300",children:[j.model.provider," / ",j.model.modelId]}),(0,a.jsxs)("div",{className:"flex gap-2 mt-2 flex-wrap",children:["off"!==j.model.thinkingLevel&&(0,a.jsxs)("span",{className:"text-[10px] px-2 py-1 rounded-md glass-effect border border-purple-500/30 text-purple-300 font-medium",children:["\uD83E\uDDE0 ",j.model.thinkingLevel]}),(0,a.jsxs)("span",{className:"text-[10px] px-2 py-1 rounded-md glass-effect border border-cyan-500/30 text-cyan-300 font-medium",children:["temp ",j.model.temperature]})]})]})]}),W&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] font-bold text-purple-400 uppercase tracking-wide",children:"本次会话用量"}),(0,a.jsxs)("div",{className:"rounded-xl glass-effect border border-purple-500/30 p-3 space-y-2",children:[(0,a.jsxs)("div",{className:"flex justify-between text-[11px] items-center",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"输入 tokens"}),(0,a.jsx)("span",{className:"font-mono font-bold text-cyan-300",children:W.tokens.input.toLocaleString()})]}),(0,a.jsxs)("div",{className:"flex justify-between text-[11px] items-center",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"输出 tokens"}),(0,a.jsx)("span",{className:"font-mono font-bold text-purple-300",children:W.tokens.output.toLocaleString()})]}),W.cost>0&&(0,a.jsxs)("div",{className:"flex justify-between text-[11px] items-center pt-2 border-t border-white/10",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"费用"}),(0,a.jsxs)("span",{className:"font-mono font-bold text-green-300",children:["$",W.cost.toFixed(4)]})]}),W.contextUsage&&(0,a.jsxs)("div",{className:"space-y-1.5 pt-2 border-t border-white/10",children:[(0,a.jsxs)("div",{className:"flex justify-between text-[11px] items-center",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"Context 用量"}),(0,a.jsxs)("span",{className:(0,A.cn)("font-mono font-bold",eE>80?"text-red-400":"text-cyan-300"),children:[eE,"%"]})]}),(0,a.jsx)("div",{className:"h-1.5 w-full rounded-full bg-white/10 overflow-hidden",children:(0,a.jsx)("div",{className:(0,A.cn)("h-full rounded-full transition-all duration-500",eD),style:{width:"".concat(eE,"%")}})})]})]})]}),Object.entries(j.tools).some(e=>{let[,t]=e;return t})&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] font-bold text-green-400 uppercase tracking-wide",children:"已开启工具"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(j.tools).filter(e=>{let[,t]=e;return t}).map(e=>{let[t]=e;return(0,a.jsx)("span",{className:"text-[11px] px-3 py-1 rounded-lg glass-effect border border-green-500/30 text-green-300 font-medium",children:t},t)})})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("p",{className:"text-[11px] font-bold text-cyan-400 uppercase tracking-wide",children:["Skills ",(0,a.jsx)("span",{className:"normal-case font-normal text-[10px] text-gray-500",children:"(本次会话)"})]}),null!==ee&&(0,a.jsx)("button",{type:"button",onClick:()=>et(null),className:"text-[10px] text-purple-400 hover:text-purple-300 font-medium transition-colors",children:"重置"})]}),0===er.length?(0,a.jsxs)("div",{className:"text-center py-8 px-4 rounded-xl glass-effect border border-dashed border-purple-500/30",children:[(0,a.jsx)(u.A,{className:"h-8 w-8 mx-auto mb-2 text-purple-400"}),(0,a.jsx)("p",{className:"text-[11px] text-gray-400",children:"还没有安装任何 Skill"})]}):(0,a.jsx)("div",{className:"space-y-2",children:er.map(e=>{let t=eb.includes(e.name);return(0,a.jsxs)("button",{type:"button",onClick:()=>eC(e.name),className:(0,A.cn)("w-full flex items-center gap-2.5 rounded-xl px-3 py-2.5 text-left transition-all border",t?"glass-effect border-purple-500/50 neon-glow-purple":"border-white/10 hover:border-purple-500/30 hover:bg-white/5"),children:[(0,a.jsx)("div",{className:(0,A.cn)("h-5 w-5 rounded-lg shrink-0 flex items-center justify-center transition-all border",t?"bg-gradient-to-br from-purple-600 to-cyan-500 border-purple-500/50":"bg-white/10 border-white/20"),children:t&&(0,a.jsx)(m.A,{className:"h-3 w-3 text-white stroke-[3]"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:(0,A.cn)("text-[11px] font-mono font-bold truncate",t?"text-cyan-400":"text-gray-300"),children:e.name}),e.description&&(0,a.jsx)("p",{className:"text-[10px] text-gray-500 truncate mt-0.5",children:e.description})]})]},e.name)})})]}),j.systemPrompt&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] font-bold text-purple-400 uppercase tracking-wide",children:"人设提示词"}),(0,a.jsx)("div",{className:"rounded-xl glass-effect border border-purple-500/30 p-3",children:(0,a.jsx)("p",{className:"text-[11px] text-gray-400 leading-relaxed line-clamp-6 whitespace-pre-wrap",children:j.systemPrompt})})]})]})})]})]})]})]})}},7995:(e,t,r)=>{"use strict";r.d(t,{F:()=>o});var a=r(5155),s=r(2115),l=r(1868),n=r(1567);let o=s.forwardRef((e,t)=>{let{className:r,children:s,...o}=e;return(0,a.jsxs)(l.bL,{ref:t,className:(0,n.cn)("relative overflow-hidden",r),...o,children:[(0,a.jsx)(l.LM,{className:"h-full w-full rounded-[inherit]",children:s}),(0,a.jsx)(i,{}),(0,a.jsx)(l.OK,{})]})});o.displayName=l.bL.displayName;let i=s.forwardRef((e,t)=>{let{className:r,orientation:s="vertical",...o}=e;return(0,a.jsx)(l.VM,{ref:t,orientation:s,className:(0,n.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r),...o,children:(0,a.jsx)(l.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=l.VM.displayName},5564:(e,t,r)=>{"use strict";r.d(t,{GY:()=>d,UW:()=>i,oR:()=>o});var a=r(2115);let s=[],l=[];function n(e){l=e,s.forEach(e=>e(l))}function o(e){let t=Math.random().toString(36).slice(2);return n([...l,{...e,id:t}]),setTimeout(()=>n(l.filter(e=>e.id!==t)),4e3),t}function i(e){n(l.filter(t=>t.id!==e))}function d(){let[e,t]=(0,a.useState)(l);return(0,a.useEffect)(()=>(s.push(t),()=>{s=s.filter(e=>e!==t)}),[]),e}},1567:(e,t,r)=>{"use strict";r.d(t,{cn:()=>l});var a=r(3463),s=r(9795);function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,s.QP)((0,a.$)(t))}}},e=>{var t=t=>e(e.s=t);e.O(0,[8313,1868,5663,8441,1517,7358],()=>t(5341)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6765],{5341:(e,t,r)=>{Promise.resolve().then(r.bind(r,6308))},6308:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>G});var a=r(5155),s=r(2115),l=r(7266),n=r(3518),o=r(3473),i=r(5686),d=r(4947),c=r(1406),x=r(8617),u=r(7072),p=r(1719),m=r(8867),h=r(8403),b=r(6246),g=r(9009),f=r(8207),v=r(6967),y=r(5765),j=r(3920),w=r(1773),N=r(7694),k=r(5220),S=r(4505),C=r(2792),A=r(1567);let E=/(?:\/(?:Users|home|tmp|var|root)\S+|~\/\S+)\.(?:png|jpg|jpeg|gif|webp|svg|mp4|webm|mov)/gi,D=new Set(["png","jpg","jpeg","gif","webp","svg"]),R=new Set(["mp4","webm","mov"]);function T(e){return"/api/file-serve?path=".concat(encodeURIComponent(e))}function L(e){let{message:t,agentName:r,agentAvatar:n,showTimestamp:o,onRetry:i,onFork:d,onSpeak:c}=e,x=(0,l.useTranslations)("chat"),[u,S]=(0,s.useState)(!1),[C,L]=(0,s.useState)(!1),z="user"===t.role,B=(0,s.useMemo)(()=>!z&&t.content?function(e){let t=[...e.matchAll(E)],r=new Set;return t.map(e=>e[0]).filter(e=>!r.has(e)&&(r.add(e),!0)).map(e=>{var t,r;let a=null!==(r=null===(t=e.split(".").pop())||void 0===t?void 0:t.toLowerCase())&&void 0!==r?r:"";return{path:e,type:D.has(a)?"image":R.has(a)?"video":"image"}})}(t.content):[],[z,t.content]);return(0,a.jsxs)("div",{className:"px-3",children:[o&&(0,a.jsx)("div",{className:"flex justify-center my-2",children:(0,a.jsx)("span",{className:"text-[11px] text-gray-500 neo-card bg-white dark:bg-slate-800/50 dark:backdrop-blur-sm rounded-full px-3 py-1 dark:border-slate-700/50",children:function(e){let t=new Date,r=new Date(e),a=Math.floor((t.getTime()-r.getTime())/864e5),s=r.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"});return 0===a?s:1===a?"昨天 ".concat(s):a<7?"".concat(["周日","周一","周二","周三","周四","周五","周六"][r.getDay()]," ").concat(s):r.toLocaleDateString("zh-CN",{month:"numeric",day:"numeric"})+" "+s}(t.createdAt)})}),(0,a.jsxs)("div",{className:(0,A.cn)("group flex items-end gap-2 mb-1",z?"flex-row-reverse":"flex-row"),children:[(0,a.jsx)("div",{className:(0,A.cn)("flex h-9 w-9 shrink-0 items-center justify-center rounded-xl text-lg shadow-lg transition-all duration-200 border",z?"neo-card bg-gradient-to-br from-blue-500 to-indigo-500 dark:from-cyan-600 dark:to-blue-600 text-white text-sm font-bold border-blue-400/50 dark:border-cyan-500/50 group-hover:scale-110 group-hover:shadow-blue-500/30 dark:group-hover:shadow-cyan-500/50":"neo-card bg-white dark:bg-slate-800 text-xl border-gray-200 dark:border-slate-700 group-hover:scale-110 dark:group-hover:shadow-purple-500/30"),children:z?"我":n}),(0,a.jsxs)("div",{className:(0,A.cn)("flex flex-col gap-1.5 max-w-[75%]",z?"items-end":"items-start"),children:[!z&&r&&(0,a.jsx)("span",{className:"text-xs text-gray-500 px-1",children:r}),!z&&t.thinking&&(0,a.jsxs)("button",{type:"button",onClick:()=>L(!C),className:"flex items-center gap-1.5 rounded-xl border neo-card border-purple-200 bg-purple-50 dark:border-purple-500/30 dark:bg-purple-900/20 dark:backdrop-blur-sm px-3 py-1.5 text-xs text-purple-700 dark:text-purple-300 hover:bg-purple-100 dark:hover:bg-purple-900/30 dark:hover:border-purple-500/50 transition-all duration-200 w-full text-left group/think hover:scale-[1.02]",children:[(0,a.jsx)(f.A,{className:"h-3.5 w-3.5 shrink-0 transition-transform duration-200 group-hover/think:rotate-12"}),(0,a.jsx)("span",{className:"flex-1 font-medium",children:"思考过程"}),C?(0,a.jsx)(p.A,{className:"h-3 w-3"}):(0,a.jsx)(v.A,{className:"h-3 w-3"})]}),C&&t.thinking&&(0,a.jsx)("div",{className:"rounded-xl border neo-card-inset border-purple-200 bg-purple-50/50 dark:border-purple-500/30 dark:bg-purple-900/10 dark:backdrop-blur-sm px-3 py-2 text-xs text-purple-800 dark:text-purple-200 w-full",children:(0,a.jsx)("div",{className:"prose prose-xs max-w-none dark:prose-invert whitespace-pre-wrap leading-relaxed font-mono",children:t.thinking})}),(0,a.jsxs)("div",{className:"relative",children:[z?(0,a.jsx)("span",{className:"absolute right-[-5px] bottom-3 w-0 h-0 border-t-[5px] border-t-transparent border-b-[5px] border-b-transparent border-l-[6px] border-l-blue-500 dark:border-l-cyan-600"}):(0,a.jsx)("span",{className:"absolute left-[-5px] bottom-3 w-0 h-0 border-t-[5px] border-t-transparent border-b-[5px] border-b-transparent border-r-[6px] border-r-white dark:border-r-slate-800"}),(0,a.jsxs)("div",{className:(0,A.cn)("group/msg relative rounded-xl text-[14px] leading-[1.6] shadow-lg overflow-hidden transition-all duration-200 border backdrop-blur-sm",z?"bg-gradient-to-br from-blue-500 to-indigo-500 dark:from-cyan-600 dark:to-blue-600 text-white rounded-br-[3px] border-blue-400/50 dark:border-cyan-500/50 hover:shadow-blue-500/20 dark:hover:shadow-cyan-500/30":"neo-card bg-white dark:bg-slate-800/90 text-gray-800 dark:text-gray-100 rounded-bl-[3px] border-gray-200 dark:border-slate-700/50 dark:hover:border-slate-600"),children:[z&&t.images&&t.images.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5 p-2 pb-0",children:t.images.map(e=>(0,a.jsx)("img",{src:e.previewUrl,alt:e.name,className:"h-32 max-w-[180px] object-cover rounded-md"},e.id))}),(0,a.jsx)("div",{className:"px-3.5 py-2.5",children:z?t.content?(0,a.jsx)("p",{className:"whitespace-pre-wrap break-words",children:t.content}):null:(0,a.jsx)("div",{className:(0,A.cn)("prose prose-sm max-w-none break-words","prose-p:my-1 prose-headings:my-2 prose-ul:my-1 prose-ol:my-1","prose-code:bg-gray-100 dark:prose-code:bg-black/10 prose-code:rounded prose-code:px-1 prose-code:text-[13px]","prose-pre:bg-gray-100 dark:prose-pre:bg-black/30 prose-pre:rounded-md prose-pre:text-[13px]","dark:prose-invert"),children:(0,a.jsx)(h.oz,{remarkPlugins:[b.A],rehypePlugins:[g.A],children:t.content})})})]})]}),B.length>0&&(0,a.jsx)("div",{className:"w-full space-y-2 mt-1",children:B.map(e=>{let{path:t,type:r}=e;return(0,a.jsx)("div",{className:"rounded-xl overflow-hidden border border-border/40 bg-black/5 dark:bg-white/5",children:"image"===r?(0,a.jsxs)("div",{className:"relative group/media",children:[(0,a.jsx)("img",{src:T(t),alt:t.split("/").pop(),className:"w-full max-h-[480px] object-contain",loading:"lazy"}),(0,a.jsxs)("a",{href:T(t),target:"_blank",rel:"noopener noreferrer",download:t.split("/").pop(),className:"absolute top-2 right-2 opacity-0 group-hover/media:opacity-100 transition-opacity bg-black/60 text-white rounded-lg px-2 py-1 text-xs flex items-center gap-1",children:[(0,a.jsx)(y.A,{className:"h-3 w-3"}),"打开原图"]}),(0,a.jsx)("p",{className:"px-2 py-1 text-[10px] text-muted-foreground font-mono truncate border-t border-border/30",children:t})]}):(0,a.jsxs)("div",{children:[(0,a.jsx)("video",{src:T(t),controls:!0,className:"w-full max-h-[360px]",preload:"metadata"}),(0,a.jsx)("p",{className:"px-2 py-1 text-[10px] text-muted-foreground font-mono truncate border-t border-border/30",children:t})]})},t)})}),t.toolCalls&&t.toolCalls.length>0&&(0,a.jsx)("div",{className:"w-full space-y-1",children:t.toolCalls.map(e=>(0,a.jsx)(I,{toolCall:e},e.id))}),(0,a.jsxs)("div",{className:(0,A.cn)("flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-all duration-200",z?"self-end":"self-start"),children:[(0,a.jsxs)("button",{type:"button",onClick:()=>{navigator.clipboard.writeText(t.content),S(!0),setTimeout(()=>S(!1),2e3)},className:"flex items-center gap-1 text-[11px] neo-button text-gray-600 hover:text-blue-600 dark:text-gray-400 dark:hover:bg-cyan-500/20 dark:hover:text-cyan-400 px-2.5 py-1 rounded-lg border-transparent dark:hover:border-cyan-500/50 transition-all duration-200 hover:scale-105",children:[u?(0,a.jsx)(m.A,{className:"h-3 w-3"}):(0,a.jsx)(j.A,{className:"h-3 w-3"}),x(u?"copied":"copyMessage")]}),!z&&i&&(0,a.jsxs)("button",{type:"button",onClick:()=>i(t),className:"flex items-center gap-1 text-[11px] neo-button text-gray-600 hover:text-purple-600 dark:text-gray-400 dark:hover:bg-purple-500/20 dark:hover:text-purple-400 px-2.5 py-1 rounded-lg border-transparent dark:hover:border-purple-500/50 transition-all duration-200 hover:scale-105",children:[(0,a.jsx)(w.A,{className:"h-3 w-3 transition-transform duration-200 hover:rotate-180"}),"重试"]}),!z&&d&&(0,a.jsxs)("button",{type:"button",onClick:()=>d(t),className:"flex items-center gap-1 text-[11px] neo-button text-gray-600 hover:text-indigo-600 dark:text-gray-400 dark:hover:bg-blue-500/20 dark:hover:text-blue-400 px-2.5 py-1 rounded-lg border-transparent dark:hover:border-blue-500/50 transition-all duration-200 hover:scale-105",children:[(0,a.jsx)(N.A,{className:"h-3 w-3"}),"分叉"]}),!z&&c&&(0,a.jsxs)("button",{type:"button",onClick:()=>c(t.content),className:"flex items-center gap-1 text-[11px] neo-button text-gray-600 hover:text-green-600 dark:text-gray-400 dark:hover:bg-green-500/20 dark:hover:text-green-400 px-2.5 py-1 rounded-lg border-transparent dark:hover:border-green-500/50 transition-all duration-200 hover:scale-105",children:[(0,a.jsx)(k.A,{className:"h-3 w-3"}),"朗读"]})]})]})]})]})}function z(e){let{agentAvatar:t}=e;return(0,a.jsx)("div",{className:"px-3",children:(0,a.jsxs)("div",{className:"flex items-end gap-2 mb-1",children:[(0,a.jsx)("div",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-[6px] bg-white dark:bg-zinc-700 text-xl shadow-sm",children:t}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("span",{className:(0,A.cn)("absolute left-[-5px] bottom-3 w-0 h-0 border-t-[5px] border-t-transparent border-b-[5px] border-b-transparent border-r-[6px] border-r-white dark:border-r-zinc-700")}),(0,a.jsx)("div",{className:"bg-white dark:bg-zinc-700 rounded-lg rounded-bl-[3px] px-4 py-3 shadow-sm",children:(0,a.jsx)("div",{className:"flex items-center gap-1.5",children:[0,1,2].map(e=>(0,a.jsx)("span",{className:"h-2 w-2 rounded-full bg-zinc-400 animate-bounce",style:{animationDelay:"".concat(150*e,"ms")}},e))})})]})]})})}function I(e){let{toolCall:t}=e,r=(0,l.useTranslations)("chat"),[n,o]=(0,s.useState)(!1),[i,d]=(0,s.useState)(null),[c,x]=(0,s.useState)(!1),u="bash"===t.name||"user_bash"===t.name,m=(()=>{if(!t.input)return null;if(u)return t.input;try{let e=JSON.parse(t.input);if("string"==typeof e)return e;return JSON.stringify(e,null,2)}catch(e){return t.input}})(),h=null!=i?i:t.output,b=async()=>{if(t.fullOutputPath&&!c){x(!0);try{var e,r;let a=await fetch("/api/bash-output?path=".concat(encodeURIComponent(t.fullOutputPath))),s=await a.json();d(null!==(r=null!==(e=s.output)&&void 0!==e?e:s.error)&&void 0!==r?r:"加载失败")}catch(e){d("加载失败: ".concat(String(e)))}finally{x(!1)}}};return(0,a.jsxs)("div",{className:(0,A.cn)("rounded-lg border text-[12px] overflow-hidden w-full",u?"bg-gray-100 dark:bg-zinc-950 border-gray-300 dark:border-zinc-700":"bg-black/5 dark:bg-white/5"),children:[(0,a.jsxs)("button",{type:"button",onClick:()=>o(!n),className:(0,A.cn)("flex w-full items-center gap-2 px-3 py-2 transition-colors text-left",u?"text-gray-700 hover:bg-gray-200 dark:text-zinc-300 dark:hover:bg-zinc-800":"hover:bg-black/5 dark:hover:bg-white/5"),children:[t.isLoading?(0,a.jsx)(S.A,{className:"h-3 w-3 text-muted-foreground animate-spin shrink-0"}):u?(0,a.jsx)("span",{className:"text-[10px] font-bold text-zinc-500 shrink-0 font-mono",children:"$_"}):(0,a.jsx)(C.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),u&&m?(0,a.jsx)("span",{className:"font-mono flex-1 text-left truncate text-zinc-200",children:m}):(0,a.jsx)("span",{className:"font-mono font-medium flex-1 text-left truncate",children:t.name}),!t.isLoading&&(0,a.jsx)("span",{className:(0,A.cn)("text-xs shrink-0",t.isError?"text-red-400":"text-green-400"),children:t.isError?"✗":"✓"}),t.isLoading&&(0,a.jsx)("span",{className:"text-muted-foreground text-[11px] animate-pulse shrink-0",children:r("thinking")}),n?(0,a.jsx)(p.A,{className:"h-3 w-3 shrink-0 text-zinc-500"}):(0,a.jsx)(v.A,{className:"h-3 w-3 shrink-0 text-zinc-500"})]}),n&&(0,a.jsxs)("div",{className:(0,A.cn)("border-t space-y-0",u?"border-zinc-700":"border-border"),children:[!u&&m&&(0,a.jsxs)("div",{className:"px-3 py-2 border-b border-border",children:[(0,a.jsx)("p",{className:"text-muted-foreground mb-1 text-[11px] uppercase tracking-wide",children:r("toolCall")}),(0,a.jsx)("pre",{className:"whitespace-pre-wrap break-all text-[12px]",children:m})]}),void 0!==h&&(0,a.jsxs)("div",{className:(0,A.cn)("px-3 py-2",u&&"bg-zinc-950"),children:[!u&&(0,a.jsx)("p",{className:"text-muted-foreground mb-1 text-[11px] uppercase tracking-wide",children:r("toolResult")}),(0,a.jsx)("pre",{className:(0,A.cn)("whitespace-pre-wrap break-all text-[12px] max-h-64 overflow-auto leading-relaxed",u?"text-zinc-200 font-mono":"",t.isError?"text-red-400":""),children:h}),t.truncated&&t.fullOutputPath&&!i&&(0,a.jsxs)("button",{type:"button",onClick:b,disabled:c,className:"mt-2 flex items-center gap-1.5 text-[11px] text-zinc-400 hover:text-zinc-200 transition-colors disabled:opacity-50",children:[c?(0,a.jsx)(S.A,{className:"h-3 w-3 animate-spin"}):(0,a.jsx)(p.A,{className:"h-3 w-3"}),c?"加载中…":"输出已截断,点击加载完整内容"]})]}),!h&&!t.isLoading&&(0,a.jsx)("div",{className:"px-3 py-2",children:(0,a.jsx)("span",{className:"text-[11px] text-zinc-500 italic",children:"(无输出)"})})]})]})}var B=r(6609),_=r(767),O=r(7509),P=r(9257),U=r(650),M=r(7156),F=r(6164),W=r(8283);let $={normal:{label:"发送",color:"bg-blue-500 hover:bg-blue-600 dark:bg-cyan-600 dark:hover:bg-cyan-500",activeColor:"text-blue-600 dark:text-cyan-400",desc:"普通发送"},steer:{label:"引导",color:"bg-orange-500 hover:bg-orange-600 dark:bg-orange-600 dark:hover:bg-orange-500",activeColor:"text-orange-600 dark:text-orange-400",desc:"中断并引导当前生成"},followup:{label:"追加",color:"bg-indigo-500 hover:bg-indigo-600 dark:bg-purple-600 dark:hover:bg-purple-500",activeColor:"text-indigo-600 dark:text-purple-400",desc:"完成后追加"}};async function J(e){return new Promise((t,r)=>{let a=new FileReader;a.onload=()=>{let r=a.result,s=r.split(",")[1];t({id:Math.random().toString(36).slice(2),data:s,mimeType:e.type||"image/jpeg",name:e.name,previewUrl:r})},a.onerror=r,a.readAsDataURL(e)})}function V(e){let{onSend:t,disabled:r,voiceEnabled:n,voiceSpeed:d=1,agentLanguage:c="zh-CN",ttsProvider:x="browser",ttsModel:m,voiceId:h,pendingReply:b,onSpeakDone:g,installedSkills:f=[],onNewSession:v,onClearMessages:y,isStreaming:j,currentModel:w,onModelChange:N}=e,k=(0,l.useTranslations)("chat"),[S,C]=(0,s.useState)(""),[E,D]=(0,s.useState)([]),[R,T]=(0,s.useState)("normal"),[L,z]=(0,s.useState)(!1),[I,V]=(0,s.useState)(!1),[K,H]=(0,s.useState)([]),[q,G]=(0,s.useState)(!1),[Q,Y]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(!1),[ee,et]=(0,s.useState)(""),[er,ea]=(0,s.useState)(0),[es,el]=(0,s.useState)([]),[en,eo]=(0,s.useState)(-1),[ei,ed]=(0,s.useState)(""),[ec,ex]=(0,s.useState)(!1),eu=(0,s.useRef)(null),ep=(0,s.useRef)(null),em=(0,s.useRef)(null),eh=(0,s.useRef)(null),eb=(0,s.useRef)(0);(0,s.useEffect)(()=>{I&&!(K.length>0)&&fetch("/api/models").then(e=>e.json()).then(H).catch(()=>{})},[I,K.length]),(0,s.useEffect)(()=>{let e=eu.current;e&&(e.style.height="auto",e.style.height=Math.min(e.scrollHeight,150)+"px")},[S]),(0,s.useEffect)(()=>{b&&n&&(async()=>{if("openai"===x)try{Y(!0);let e=await fetch("/api/tts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,model:m||"tts-1",voice:h||"alloy",speed:d||1})});if(!e.ok)throw Error("TTS request failed");let t=await e.blob(),r=URL.createObjectURL(t),a=new Audio(r);a.onended=()=>{Y(!1),null==g||g(),URL.revokeObjectURL(r)},a.onerror=()=>{Y(!1),null==g||g(),URL.revokeObjectURL(r)},await a.play()}catch(e){console.error("OpenAI TTS error:",e),Y(!1),null==g||g()}else{var e;null===(e=window.speechSynthesis)||void 0===e||e.cancel();let t=new SpeechSynthesisUtterance(b);if(t.lang=c,t.rate=d||1,h){let e=window.speechSynthesis.getVoices().find(e=>e.name===h||e.voiceURI===h);e&&(t.voice=e)}t.onstart=()=>Y(!0),t.onend=()=>{Y(!1),null==g||g()},window.speechSynthesis.speak(t)}})()},[b,n,d,c,x,m,h,g]),(0,s.useEffect)(()=>{j&&"normal"===R&&T("steer"),j||"steer"!==R||T("normal")},[j,R]);let eg=(0,s.useCallback)(async e=>{let t=e.filter(e=>e.type.startsWith("image/")).slice(0,4);if(!t.length)return;let r=await Promise.all(t.map(J));D(e=>[...e,...r].slice(0,4))},[]),ef=e=>D(t=>t.filter(t=>t.id!==e)),ev=[{id:"new",label:"新建会话",description:"开始全新对话",icon:(0,a.jsx)(o.A,{className:"h-4 w-4 text-blue-500"}),category:"system",action:()=>{null==v||v(),C(""),Z(!1)}},{id:"clear",label:"清空消息",description:"清空当前窗口消息",icon:(0,a.jsx)(i.A,{className:"h-4 w-4 text-red-500"}),category:"system",action:()=>{null==y||y(),C(""),Z(!1)}},...f.map(e=>({id:"skill:".concat(e.name),label:e.name,description:e.description||"执行此 Skill",icon:(0,a.jsx)(u.A,{className:"h-4 w-4 text-purple-500"}),category:"skill",insert:"/".concat(e.name," ")}))].filter(e=>!ee||e.label.toLowerCase().includes(ee.toLowerCase())||e.description.toLowerCase().includes(ee.toLowerCase())),ey=(0,s.useCallback)(e=>{if(e.action){e.action();return}if(e.insert){var t;let r=S.replace(/(?:^|\n)\/[^\s]*$/,t=>{var r;return t.startsWith("\n")?"\n"+e.insert:null!==(r=e.insert)&&void 0!==r?r:""});C(null!=r?r:""),Z(!1),null===(t=eu.current)||void 0===t||t.focus()}},[S]),ej=()=>{if(!S.trim()&&!E.length||r)return;let e=S.trim();t(e,R,E.length?E:void 0),e&&el(t=>[e,...t.filter(t=>t!==e)].slice(0,50)),C(""),D([]),eo(-1),Z(!1),("steer"===R||"followup"===R)&&T("normal")};(0,s.useEffect)(()=>{var e,t,r;null===(r=eh.current)||void 0===r||null===(t=r.querySelector('[data-idx="'.concat(er,'"]')))||void 0===t||null===(e=t.scrollIntoView)||void 0===e||e.call(t,{block:"nearest"})},[er]);let ew=ev.reduce((e,t)=>(e[t.category]||(e[t.category]=[]),e[t.category].push(t),e),{}),eN={system:"系统命令",skill:"Skills"},ek=0,eS=$[R],eC=(S.trim().length>0||E.length>0)&&!(r&&"normal"===R),eA="steer"===R?"border-orange-400/60 dark:border-orange-700/60":"followup"===R?"border-blue-400/60 dark:border-blue-700/60":ec?"border-[#57BE6B] border-dashed":"border-border";return(0,a.jsxs)("div",{className:"border-t bg-background px-3 py-2 relative",onDragEnter:e=>{e.preventDefault(),eb.current++,Array.from(e.dataTransfer.items).some(e=>e.type.startsWith("image/"))&&ex(!0)},onDragLeave:e=>{e.preventDefault(),eb.current--,eb.current<=0&&(eb.current=0,ex(!1))},onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault(),eb.current=0,ex(!1),eg(Array.from(e.dataTransfer.files))},children:[(0,a.jsx)("input",{ref:ep,type:"file",accept:"image/jpeg,image/png,image/gif,image/webp",multiple:!0,className:"hidden",onChange:e=>{e.target.files&&(eg(Array.from(e.target.files)),e.target.value="")}}),X&&(0,a.jsxs)("div",{ref:eh,className:"absolute bottom-full left-3 right-3 mb-2 rounded-xl border bg-white dark:bg-zinc-800 shadow-2xl overflow-hidden z-50 max-h-64 overflow-y-auto",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b bg-secondary/30",children:[(0,a.jsx)(B.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:ee?"/".concat(ee):"输入命令名称过滤…"}),(0,a.jsx)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:"↑↓ \xb7 Enter \xb7 Esc"})]}),0===ev.length?(0,a.jsx)("div",{className:"px-4 py-5 text-center text-sm text-muted-foreground",children:"没有匹配的命令"}):(0,a.jsx)("div",{className:"p-1",children:Object.entries(ew).map(e=>{var t;let[r,s]=e;return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"px-2 py-1 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",children:null!==(t=eN[r])&&void 0!==t?t:r}),s.map(e=>{let t=ek++,r=t===er;return(0,a.jsxs)("button",{type:"button","data-idx":t,onClick:()=>ey(e),onMouseEnter:()=>ea(t),className:(0,A.cn)("w-full flex items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-colors",r?"bg-secondary":"hover:bg-secondary/50"),children:[(0,a.jsx)("div",{className:"h-7 w-7 rounded-lg bg-secondary flex items-center justify-center shrink-0",children:e.icon}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:e.label}),(0,a.jsxs)("code",{className:"text-[10px] text-muted-foreground font-mono bg-secondary px-1.5 py-0.5 rounded",children:["/",e.id.replace("skill:","")]})]}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground truncate mt-0.5",children:e.description})]})]},e.id)})]},r)})})]}),(0,a.jsxs)("div",{className:(0,A.cn)("rounded-xl border transition-colors",eA,"steer"===R?"bg-orange-50/40 dark:bg-orange-900/10":"followup"===R?"bg-blue-50/40 dark:bg-blue-900/10":"bg-background"),children:[E.length>0&&(0,a.jsxs)("div",{className:"flex gap-2 p-2 flex-wrap border-b border-border/60 rounded-t-xl overflow-hidden",children:[E.map(e=>(0,a.jsxs)("div",{className:"relative group/img",children:[(0,a.jsx)("img",{src:e.previewUrl,alt:e.name,className:"h-16 w-16 object-cover rounded-lg border border-border/60"}),(0,a.jsx)("button",{type:"button",onClick:()=>ef(e.id),className:"absolute -top-1.5 -right-1.5 h-5 w-5 rounded-full bg-zinc-800 dark:bg-zinc-600 text-white flex items-center justify-center opacity-0 group-hover/img:opacity-100 transition-opacity shadow",children:(0,a.jsx)(_.A,{className:"h-3 w-3"})})]},e.id)),E.length<4&&(0,a.jsx)("button",{type:"button",onClick:()=>{var e;return null===(e=ep.current)||void 0===e?void 0:e.click()},className:"h-16 w-16 rounded-lg border-2 border-dashed border-border/60 flex items-center justify-center text-muted-foreground hover:border-[#57BE6B] hover:text-[#57BE6B] transition-colors",children:(0,a.jsx)(O.A,{className:"h-5 w-5"})})]}),(0,a.jsx)("textarea",{ref:eu,value:S,onChange:e=>{let t=e.target.value;if(C(t),eo(-1),"/"===t||/(?:^|\n)\/$/.test(t))et(""),ea(0),Z(!0);else if(X){let e=t.match(/(?:^|\n)\/([^\s]*)$/);e?(et(e[1]),ea(0)):Z(!1)}},onKeyDown:e=>{if(X){"ArrowDown"===e.key?(e.preventDefault(),ea(e=>Math.min(e+1,ev.length-1))):"ArrowUp"===e.key?(e.preventDefault(),ea(e=>Math.max(e-1,0))):"Enter"!==e.key||e.shiftKey?"Escape"===e.key&&Z(!1):(e.preventDefault(),ev[er]&&ey(ev[er]));return}if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),ej();return}if("ArrowUp"===e.key&&!S.trim()){e.preventDefault();let t=Math.min(en+1,es.length-1);t>=0&&es[t]&&(-1===en&&ed(S),C(es[t]),eo(t))}if("ArrowDown"===e.key&&en>=0){e.preventDefault();let t=en-1;t<0?(C(ei),eo(-1)):(C(es[t]),eo(t))}},onPaste:e=>{let t=Array.from(e.clipboardData.items).filter(e=>e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(Boolean);t.length&&(e.preventDefault(),eg(t))},onBlur:()=>setTimeout(()=>Z(!1),150),placeholder:"steer"===R?"引导生成方向(将中断当前输出)…":"followup"===R?"追加消息(当前完成后发送)…":"".concat(k("inputPlaceholder")," ( / 唤出命令 \xb7 粘贴/拖拽图片 )"),rows:1,disabled:r&&"normal"===R,className:"w-full resize-none bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:opacity-50 px-3 pt-2.5 pb-1 max-h-[150px]"}),(0,a.jsxs)("div",{className:"flex items-center gap-1 px-2 py-1.5",children:[(0,a.jsx)("button",{type:"button",onClick:()=>{var e;return null===(e=ep.current)||void 0===e?void 0:e.click()},title:"上传图片(最多 ".concat(4," 张,支持拖拽/粘贴)"),disabled:E.length>=4,className:"flex items-center justify-center h-7 w-7 rounded-lg text-muted-foreground hover:bg-secondary/60 hover:text-foreground transition-colors disabled:opacity-30 disabled:cursor-not-allowed",children:(0,a.jsx)(O.A,{className:"h-4 w-4"})}),N&&(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>{V(!I),z(!1)},title:w?"当前模型:".concat(w.provider,"/").concat(w.modelId):"切换模型",className:(0,A.cn)("flex items-center gap-1 h-7 px-2 rounded-lg text-xs transition-colors hover:bg-secondary/60",w?"text-muted-foreground hover:text-foreground":"text-muted-foreground"),children:[(0,a.jsx)(P.A,{className:"h-3.5 w-3.5 shrink-0"}),w&&(0,a.jsx)("span",{className:"font-mono max-w-[80px] truncate",children:w.modelId.split("-").slice(-2).join("-")}),(0,a.jsx)(p.A,{className:"h-3 w-3 opacity-50 shrink-0"})]}),I&&(0,a.jsxs)("div",{className:"absolute bottom-full left-0 mb-1 w-72 rounded-xl border bg-white dark:bg-zinc-800 shadow-xl z-50 overflow-hidden",children:[(0,a.jsx)("div",{className:"px-3 py-2 border-b text-xs text-muted-foreground font-medium bg-secondary/30",children:"切换模型(本次会话有效)"}),(0,a.jsx)("div",{className:"max-h-72 overflow-y-auto",children:0===K.length?(0,a.jsx)("div",{className:"px-4 py-6 text-center text-sm text-muted-foreground",children:"加载中…"}):K.map(e=>(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"px-3 py-1.5 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider bg-secondary/20 sticky top-0",children:e.name}),e.models.map(e=>{let t=(null==w?void 0:w.provider)===e.providerId&&(null==w?void 0:w.modelId)===e.id;return(0,a.jsx)("button",{type:"button",onClick:()=>{N(e.providerId,e.id),V(!1)},className:(0,A.cn)("w-full flex items-start gap-2.5 px-3 py-2 text-left transition-colors hover:bg-secondary/50",t&&"bg-[#57BE6B]/10 dark:bg-[#57BE6B]/15"),children:(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:(0,A.cn)("text-sm font-medium truncate",t&&"text-[#57BE6B]"),children:e.name}),t&&(0,a.jsx)("span",{className:"text-[10px] text-[#57BE6B] font-medium shrink-0",children:"当前"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,a.jsxs)("span",{className:"text-[10px] text-muted-foreground font-mono",children:[Math.round(e.contextWindow/1e3),"K ctx"]}),e.supportsThinking&&(0,a.jsx)("span",{className:"text-[10px] text-purple-500",children:"\uD83E\uDDE0 thinking"}),e.inputTypes.includes("image")&&(0,a.jsx)("span",{className:"text-[10px] text-blue-500",children:"\uD83D\uDDBC vision"}),e.costInput&&(0,a.jsxs)("span",{className:"text-[10px] text-muted-foreground ml-auto shrink-0",children:["$",e.costInput,"/M"]})]})]})},e.id)})]},e.id))})]})]}),n&&(Q?(0,a.jsx)("button",{type:"button",onClick:()=>{var e;null===(e=window.speechSynthesis)||void 0===e||e.cancel(),Y(!1),null==g||g()},title:"停止朗读",className:"flex items-center justify-center h-7 w-7 rounded-lg text-primary hover:bg-secondary/60 transition-colors",children:(0,a.jsx)(U.A,{className:"h-4 w-4"})}):(0,a.jsx)("button",{type:"button",onClick:()=>{var e,t;if(q){null===(e=em.current)||void 0===e||e.stop(),G(!1);return}let r=window,a=null!==(t=r.SpeechRecognition)&&void 0!==t?t:r.webkitSpeechRecognition;if(!a)return;let s=new a;s.lang=c,s.continuous=!1,s.interimResults=!1,s.onresult=e=>C(t=>t+(t?" ":"")+e.results[0][0].transcript),s.onend=()=>G(!1),s.onerror=()=>G(!1),s.start(),em.current=s,G(!0)},title:q?"停止录音":"语音输入",className:(0,A.cn)("flex items-center justify-center h-7 w-7 rounded-lg transition-colors hover:bg-secondary/60",q?"text-destructive animate-pulse":"text-muted-foreground hover:text-foreground"),children:q?(0,a.jsx)(M.A,{className:"h-4 w-4"}):(0,a.jsx)(F.A,{className:"h-4 w-4"})})),(0,a.jsx)("div",{className:"flex-1"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>z(!L),className:(0,A.cn)("flex items-center gap-1 rounded-lg px-2 py-1 text-xs font-medium transition-colors hover:bg-secondary/60",eS.activeColor),children:[eS.label,(0,a.jsx)(p.A,{className:"h-3 w-3 opacity-60"})]}),L&&(0,a.jsx)("div",{className:"absolute bottom-full right-0 mb-1 min-w-[160px] rounded-xl border bg-white dark:bg-zinc-800 shadow-xl z-50 p-1 space-y-0.5",children:Object.entries($).map(e=>{let[t,r]=e;return(0,a.jsxs)("button",{type:"button",onClick:()=>{T(t),z(!1)},className:(0,A.cn)("w-full text-left rounded-lg px-3 py-2 text-sm transition-colors",R===t?"bg-secondary":"hover:bg-secondary/50"),children:[(0,a.jsx)("div",{className:(0,A.cn)("font-medium",$[t].activeColor),children:r.label}),(0,a.jsx)("div",{className:"text-[11px] text-muted-foreground",children:r.desc})]},t)})})]}),(0,a.jsx)("button",{type:"button",onClick:ej,disabled:!eC,title:"发送(Enter)",className:(0,A.cn)("flex items-center justify-center h-7 w-7 rounded-lg text-white transition-colors disabled:opacity-40 disabled:cursor-not-allowed",eS.color),children:(0,a.jsx)(W.A,{className:"h-3.5 w-3.5"})})]})]}),ec&&(0,a.jsxs)("div",{className:"absolute inset-0 m-1 rounded-xl border-2 border-dashed border-[#57BE6B] bg-[#57BE6B]/5 flex flex-col items-center justify-center gap-1 pointer-events-none",children:[(0,a.jsx)(O.A,{className:"h-6 w-6 text-[#57BE6B]"}),(0,a.jsx)("p",{className:"text-sm font-medium text-[#57BE6B]",children:"松开鼠标上传图片"})]})]})}var K=r(7995),H=r(3697),q=r(5564);function G(e){var t,r,h;let{params:b}=e,g=(0,l.useTranslations)("chat"),f=(0,l.useLocale)(),[v,y]=(0,s.useState)(""),[j,w]=(0,s.useState)(null),[N,k]=(0,s.useState)([]),[S,C]=(0,s.useState)([]),[E,D]=(0,s.useState)(),[R,T]=(0,s.useState)(!1),[I,B]=(0,s.useState)(!1),[_,O]=(0,s.useState)(!1),[P,U]=(0,s.useState)(),[M,F]=(0,s.useState)(!1),[W,$]=(0,s.useState)(null),[J,G]=(0,s.useState)(!1),[Q,Y]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(null),[ee,et]=(0,s.useState)(null),[er,ea]=(0,s.useState)([]),[es,el]=(0,s.useState)(null),en=(0,s.useRef)(null),eo=(0,s.useRef)(null),ei=(0,s.useRef)(null),ed=(0,s.useRef)(null),ec=(0,s.useRef)(j),ex=(0,s.useRef)(v),eu=(0,s.useRef)(E),ep=(0,s.useRef)(ee),em=(0,s.useRef)(es);(0,s.useEffect)(()=>{ec.current=j},[j]),(0,s.useEffect)(()=>{ex.current=v},[v]),(0,s.useEffect)(()=>{eu.current=E},[E]),(0,s.useEffect)(()=>{ep.current=ee},[ee]),(0,s.useEffect)(()=>{em.current=es},[es]),(0,s.useEffect)(()=>{b.then(async e=>{let{id:t}=e;y(t);let[r,a,s]=await Promise.all([fetch("/api/agents/".concat(t)).then(e=>e.json()),fetch("/api/sessions/".concat(t)).then(e=>e.json()),fetch("/api/skills").then(e=>e.json())]);w(r),C(a),ea(s)})},[b]),(0,s.useEffect)(()=>{if(!J){var e;null===(e=en.current)||void 0===e||e.scrollIntoView({behavior:"smooth"})}},[N,R,J]);let eh=(0,s.useCallback)(()=>{let e=eo.current;e&&G(e.scrollHeight-e.scrollTop-e.clientHeight>120)},[]),eb=null!=ee?ee:null!==(r=null==j?void 0:j.enabledSkills)&&void 0!==r?r:[],eg=(0,s.useCallback)(()=>{var e;null===(e=ei.current)||void 0===e||e.abort(),ei.current=null,T(!1)},[]),ef=(0,s.useCallback)(async(e,t)=>{let r=ec.current,a=ex.current;if(!r||!a)return;let s={id:(0,H.A)(),role:"user",content:e,images:t,createdAt:new Date};k(e=>[...e,s]),T(!0);let l=(0,H.A)();k(e=>[...e,{id:l,role:"assistant",content:"",toolCalls:[],createdAt:new Date}]);let n=new Map,o=new AbortController;ei.current=o;try{var i,d,c,x;let r=await fetch("/api/chat/".concat(a),{method:"POST",headers:{"Content-Type":"application/json"},signal:o.signal,body:JSON.stringify({message:e,sessionFile:eu.current,overrideSkills:null!==(c=ep.current)&&void 0!==c?c:void 0,overrideProvider:null===(i=em.current)||void 0===i?void 0:i.provider,overrideModelId:null===(d=em.current)||void 0===d?void 0:d.modelId,images:null==t?void 0:t.map(e=>({data:e.data,mimeType:e.mimeType}))})});if(!r.ok||!r.body)throw Error("HTTP ".concat(r.status));let s=r.body.getReader(),u=new TextDecoder,p="";for(;;){let{done:t,value:r}=await s.read();if(t)break;let a=(p+=u.decode(r,{stream:!0})).split("\n");for(let t of(p=null!==(x=a.pop())&&void 0!==x?x:"",a))if(t.startsWith("data: "))try{let r=JSON.parse(t.slice(6));!function(e,t,r,a,s){switch(e.type){case"message_update":k(r=>r.map(r=>r.id===t?{...r,content:r.content+e.delta}:r));break;case"thinking_delta":k(r=>r.map(r=>{var a;return r.id===t?{...r,thinking:(null!==(a=r.thinking)&&void 0!==a?a:"")+e.delta}:r}));break;case"tool_start":{let a={id:e.toolCallId,name:e.toolName,isLoading:!0};r.set(e.toolCallId,a),k(e=>e.map(e=>{var r;return e.id===t?{...e,toolCalls:[...null!==(r=e.toolCalls)&&void 0!==r?r:[],a]}:e}));break}case"tool_update":{let a=r.get(e.toolCallId);if(a){let s={...a,input:e.content};r.set(e.toolCallId,s),k(r=>r.map(r=>{var a;return r.id===t?{...r,toolCalls:null===(a=r.toolCalls)||void 0===a?void 0:a.map(t=>t.id===e.toolCallId?s:t)}:r}))}break}case"tool_end":{let a=r.get(e.toolCallId);if(a){let s={...a,isLoading:!1,isError:e.isError,output:e.output,fullOutputPath:e.fullOutputPath,truncated:e.truncated};r.set(e.toolCallId,s),k(r=>r.map(r=>{var a;return r.id===t?{...r,toolCalls:null===(a=r.toolCalls)||void 0===a?void 0:a.map(t=>t.id===e.toolCallId?s:t)}:r}))}break}case"compaction_start":F(!0);break;case"compaction_end":F(!1);break;case"error":(0,q.oR)({title:"对话出错",description:e.message,variant:"destructive"}),k(r=>r.map(r=>r.id!==t||r.content?r:{...r,content:"⚠️ ".concat(e.message)}));break;case"aborted":case"done":T(!1);break;case"session_file":{let t=e.path;D(t);let r=a.slice(0,60)||"新对话";C(e=>e.find(e=>e.session_file===t)?e:[{id:(0,H.A)(),title:r,session_file:t,created_at:Date.now()},...e]);break}case"session_stats":$(e.stats)}}(r,l,n,e,0)}catch(e){}}}catch(t){if("AbortError"===t.name)return;let e=String(t);k(t=>t.map(t=>t.id===l?{...t,content:"⚠️ ".concat(e)}:t)),(0,q.oR)({title:"发送失败",description:e,variant:"destructive"})}finally{ei.current=null,T(!1)}},[]);(0,s.useEffect)(()=>{if(!R){if(ed.current){let e=ed.current;ed.current=null,ef(e)}else X&&(Z(null),ef(X))}},[R]);let ev=(0,s.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal",r=arguments.length>2?arguments[2]:void 0;if("steer"===t){R?(ed.current=e,eg()):ef(e,r);return}if("followup"===t){R?(Z(e),(0,q.oR)({title:"消息已排队",description:"当前回复完成后自动发送"})):ef(e,r);return}R||ef(e,r)},[R,ef,eg]),ey=()=>{D(void 0),k([]),et(null),$(null),el(null)},ej=async e=>{D(e),k([]),B(!1),$(null);try{let{messages:t}=await fetch("/api/sessions/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionFile:e})}).then(e=>e.json());k(t.map(e=>{var t;return{id:e.id,role:e.role,content:e.content,thinking:e.thinking,toolCalls:null!==(t=e.toolCalls)&&void 0!==t?t:[],createdAt:new Date(e.createdAt)}}))}catch(e){(0,q.oR)({title:"加载历史失败",description:String(e),variant:"destructive"})}},ew=(0,s.useCallback)(e=>{if(R)return;let t=N.findIndex(t=>t.id===e.id);for(let e=t-1;e>=0;e--)if("user"===N[e].role){k(t=>t.slice(0,e+1)),ef(N[e].content);return}},[N,R,ef]),eN=(0,s.useCallback)(e=>{let t=N.findIndex(t=>t.id===e.id);D(void 0),k(t>=0?N.slice(0,t):[]),et(null),$(null),(0,q.oR)({title:"会话已分叉",description:"从所选消息之前创建了新分支",variant:"success"})},[N]),ek=async(e,t,r)=>{e.stopPropagation(),await fetch("/api/sessions/".concat(v,"/").concat(t),{method:"DELETE"}),C(e=>e.filter(e=>e.id!==t)),E===r&&(D(void 0),k([]))},eS=async()=>{if(!Q){Y(!0),setTimeout(()=>Y(!1),3e3);return}await fetch("/api/sessions/".concat(v),{method:"DELETE"}),C([]),D(void 0),k([]),Y(!1)},eC=e=>{var t;let r=null!=ee?ee:null!==(t=null==j?void 0:j.enabledSkills)&&void 0!==t?t:[];et(r.includes(e)?r.filter(t=>t!==e):[...r,e])};if(!j)return(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:"Loading…"});let eA=e=>0===e||new Date(N[e].createdAt).getTime()-new Date(N[e-1].createdAt).getTime()>3e5,eE=null!==(h=null==W?void 0:null===(t=W.contextUsage)||void 0===t?void 0:t.percent)&&void 0!==h?h:0,eD=eE>80?"bg-red-500":eE>60?"bg-yellow-500":"bg-[#57BE6B]";return(0,a.jsxs)("div",{className:"flex h-full bg-gradient-to-br from-gray-50 to-gray-100 dark:from-slate-900 dark:via-purple-900/10 dark:to-slate-900",children:[(0,a.jsxs)("div",{className:(0,A.cn)("shrink-0 transition-all duration-300 overflow-hidden","bg-[hsl(var(--neo-bg))] backdrop-blur-xl border-r border-gray-200 dark:bg-slate-900/95 dark:backdrop-blur-2xl dark:border-slate-700/50",I?"w-[280px]":"w-0"),children:[(0,a.jsxs)("div",{className:"p-4 space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("span",{className:"text-[14px] font-bold text-gray-800 dark:text-white",children:"会话历史"}),(0,a.jsx)("button",{onClick:()=>B(!1),className:"h-8 w-8 rounded-xl neo-button hover:text-blue-600 dark:hover:bg-cyan-500/20 dark:border-transparent dark:hover:border-cyan-500/50 flex items-center justify-center transition-all duration-200 hover:scale-110",title:"关闭侧边栏",children:(0,a.jsx)(n.A,{className:"h-4 w-4 text-gray-500 dark:text-gray-400 dark:group-hover:text-cyan-400 transition-colors"})})]}),(0,a.jsxs)("button",{onClick:ey,className:"group w-full h-10 rounded-xl neo-button bg-gradient-to-r from-blue-500 to-indigo-500 hover:from-blue-600 hover:to-indigo-600 dark:from-cyan-600 dark:to-blue-600 dark:hover:from-cyan-500 dark:hover:to-blue-500 text-white text-[13px] font-semibold shadow-lg hover:shadow-blue-500/30 dark:hover:shadow-cyan-500/50 transition-all duration-200 hover:scale-[1.02] hover:-translate-y-0.5 flex items-center justify-center gap-2",children:[(0,a.jsx)(o.A,{className:"h-4 w-4 transition-transform duration-200 group-hover:rotate-90"}),(0,a.jsx)("span",{children:g("newSession")})]}),S.length>0&&(0,a.jsxs)("button",{onClick:eS,className:(0,A.cn)("w-full h-8 rounded-xl text-[12px] font-medium transition-all duration-200 flex items-center justify-center gap-2 border hover:scale-[1.02]",Q?"bg-red-100 text-red-600 border-red-300 hover:bg-red-200 dark:bg-red-500/20 dark:text-red-400 dark:border-red-500/50 dark:hover:bg-red-500/30":"neo-button text-gray-600 hover:text-red-600 dark:hover:bg-slate-800 dark:text-gray-400 dark:hover:text-red-400 border-transparent dark:hover:border-red-500/30"),children:[(0,a.jsx)(i.A,{className:"h-3.5 w-3.5 transition-transform duration-200 hover:rotate-12"}),(0,a.jsx)("span",{children:Q?"再次点击确认清空":"清空全部历史"})]})]}),(0,a.jsx)(K.F,{className:"h-[calc(100vh-10rem)]",children:(0,a.jsx)("div",{className:"px-3 pb-3 space-y-2",children:0===S.length?(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)("div",{className:"w-16 h-16 mx-auto mb-4 rounded-2xl neo-card bg-white dark:bg-slate-800 border-gray-200 dark:border-slate-700 flex items-center justify-center",children:(0,a.jsx)(d.A,{className:"h-7 w-7 text-gray-400 dark:text-slate-500"})}),(0,a.jsx)("p",{className:"text-[13px] text-gray-500",children:g("noSessions")})]}):S.map(e=>(0,a.jsxs)("div",{className:"relative group",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>ej(e.session_file),className:(0,A.cn)("w-full text-left px-3 py-3 rounded-xl transition-all duration-200 border hover:scale-[1.02] hover:-translate-y-0.5",e.session_file===E?"neo-card-inset bg-blue-50 text-blue-700 border-blue-200 dark:bg-gradient-to-r dark:from-cyan-600/20 dark:to-blue-600/20 dark:border-cyan-500/50 dark:shadow-lg dark:shadow-cyan-500/20":"neo-button text-gray-700 dark:border-slate-700/50 dark:hover:border-cyan-500/30 dark:hover:bg-slate-800/50"),children:[e.session_file===E&&(0,a.jsx)("div",{className:"absolute left-0 top-1/2 -translate-y-1/2 w-1 h-8 bg-gradient-to-b from-blue-500 to-indigo-500 dark:from-cyan-400 dark:to-blue-500 rounded-r-full shadow-lg dark:shadow-cyan-500/50"}),(0,a.jsx)("p",{className:(0,A.cn)("text-[13px] truncate leading-snug transition-colors",e.session_file===E?"font-bold text-cyan-400":"font-medium text-gray-300 group-hover:text-white"),children:e.title}),(0,a.jsxs)("p",{className:"text-[11px] text-gray-500 mt-1 flex items-center gap-1.5 group-hover:text-gray-400 transition-colors",children:[(0,a.jsx)("span",{className:"w-1 h-1 rounded-full bg-cyan-500"}),new Date(e.created_at).toLocaleDateString(f)]})]}),(0,a.jsx)("button",{type:"button",onClick:t=>ek(t,e.id,e.session_file),className:"absolute right-2 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-100 h-7 w-7 rounded-lg hover:bg-red-500/20 text-gray-500 hover:text-red-400 flex items-center justify-center transition-all duration-200 border border-transparent hover:border-red-500/50 hover:scale-110",children:(0,a.jsx)(i.A,{className:"h-3.5 w-3.5"})})]},e.id))})})]}),(0,a.jsxs)("div",{className:"flex flex-1 flex-col min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center h-[56px] px-4 shrink-0 glass-effect border-b border-purple-500/20",children:[(0,a.jsx)("button",{onClick:()=>{B(!0),O(!1)},className:"h-9 w-9 rounded-lg hover:bg-white/10 flex items-center justify-center transition-all hover:scale-110 border border-transparent hover:border-purple-500/30",title:"打开历史记录",children:(0,a.jsx)(d.A,{className:"h-4 w-4 text-cyan-400"})}),(0,a.jsxs)("div",{className:"flex-1 flex items-center justify-center gap-3",children:[(0,a.jsx)("div",{className:"h-10 w-10 rounded-xl bg-gradient-to-br from-purple-600/30 to-cyan-500/30 flex items-center justify-center text-2xl shadow-lg neon-glow-purple border border-purple-500/30",children:j.avatar}),(0,a.jsx)("span",{className:"text-[16px] font-bold bg-gradient-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent",children:j.name})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[M&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-full glass-effect border border-cyan-500/30",children:[(0,a.jsx)("div",{className:"w-2 h-2 rounded-full bg-cyan-400 animate-pulse neon-glow"}),(0,a.jsx)("span",{className:"text-[11px] font-semibold text-cyan-400",children:"压缩中"})]}),(null==W?void 0:W.contextUsage)&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-full glass-effect border border-purple-500/30",title:"Context: ".concat(eE,"%"),children:[(0,a.jsx)("div",{className:"h-1.5 w-16 rounded-full bg-white/10 overflow-hidden",children:(0,a.jsx)("div",{className:(0,A.cn)("h-full rounded-full transition-all duration-500",eD),style:{width:"".concat(eE,"%")}})}),(0,a.jsxs)("span",{className:"text-[11px] font-semibold text-gray-300",children:[eE,"%"]})]}),R&&(0,a.jsx)("button",{onClick:eg,className:"h-9 w-9 rounded-lg hover:bg-red-500/20 text-red-400 flex items-center justify-center transition-all hover:scale-110 border border-transparent hover:border-red-500/50",title:"停止生成",children:(0,a.jsx)(c.A,{className:"h-4 w-4 fill-current"})}),(0,a.jsx)("button",{onClick:()=>{O(!_),B(!1)},className:(0,A.cn)("h-9 w-9 rounded-lg flex items-center justify-center transition-all hover:scale-110 border",_?"bg-purple-500/20 text-purple-400 border-purple-500/50 neon-glow-purple":"hover:bg-white/10 text-gray-400 border-transparent hover:border-purple-500/30"),title:"数字人信息 & Skills",children:(0,a.jsx)(x.A,{className:"h-4 w-4"})})]})]}),W&&(0,a.jsxs)("div",{className:"flex items-center justify-center gap-3 px-4 py-2 glass-effect border-b border-purple-500/20 text-[11px] shrink-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-cyan-500/10 border border-cyan-500/30",children:[(0,a.jsx)("span",{className:"text-cyan-400 font-semibold",children:"↑"}),(0,a.jsx)("span",{className:"font-bold text-cyan-300",children:W.tokens.input.toLocaleString()})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-purple-500/10 border border-purple-500/30",children:[(0,a.jsx)("span",{className:"text-purple-400 font-semibold",children:"↓"}),(0,a.jsx)("span",{className:"font-bold text-purple-300",children:W.tokens.output.toLocaleString()})]}),W.cost>0&&(0,a.jsx)("div",{className:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-green-500/10 border border-green-500/30",children:(0,a.jsxs)("span",{className:"font-bold text-green-300",children:["≈ $",W.cost.toFixed(4)]})}),W.contextUsage&&(0,a.jsx)("div",{className:(0,A.cn)("flex items-center gap-1.5 px-2.5 py-1 rounded-lg border",eE>80?"bg-red-500/10 border-red-500/30 text-red-400":"bg-white/5 border-white/10 text-gray-300"),children:(0,a.jsxs)("span",{className:"font-bold",children:["context ",eE,"% / ",W.contextUsage.contextWindow.toLocaleString()]})})]}),(0,a.jsxs)("div",{className:"flex flex-1 min-h-0",children:[(0,a.jsxs)("div",{className:"flex flex-col flex-1 min-w-0 relative",children:[(0,a.jsx)("div",{ref:eo,onScroll:eh,className:"flex-1 overflow-y-auto bg-white dark:bg-slate-900/50",children:(0,a.jsxs)("div",{className:"py-4 space-y-1",children:[0===N.length&&(0,a.jsx)("div",{className:"flex justify-center mt-20 mb-4 text-center",children:(0,a.jsxs)("div",{className:"max-w-sm",children:[(0,a.jsxs)("div",{className:"relative w-24 h-24 mx-auto mb-6",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-gradient-to-r from-blue-400/20 to-indigo-400/20 dark:from-purple-600/30 dark:to-cyan-500/30 blur-2xl animate-pulse"}),(0,a.jsx)("div",{className:"relative w-24 h-24 rounded-2xl neo-card bg-gradient-to-br from-blue-100 to-indigo-100 dark:from-purple-600/20 dark:to-cyan-500/20 border-2 border-blue-200 dark:border-purple-500/30 flex items-center justify-center text-5xl neon-glow-purple",children:j.avatar})]}),(0,a.jsx)("p",{className:"text-[18px] font-bold text-gray-800 dark:bg-gradient-to-r dark:from-cyan-400 dark:to-purple-400 dark:bg-clip-text dark:text-transparent mb-3",children:j.name}),(0,a.jsx)("p",{className:"text-[13px] text-gray-600 dark:text-gray-400 leading-relaxed px-4",children:j.description||g("welcomeTitle")}),eb.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap justify-center gap-2 mt-4",children:eb.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-[11px] px-3 py-1.5 rounded-lg glass-effect border border-purple-500/30 text-purple-300 font-medium",children:[(0,a.jsx)(u.A,{className:"h-3 w-3 text-cyan-400"}),e]},e))})]})}),N.map((e,t)=>{var r;return!R||t!==N.length-1||"assistant"!==e.role||""!==e.content||(null===(r=e.toolCalls)||void 0===r?void 0:r.length)?(0,a.jsx)(L,{message:e,agentName:j.name,agentAvatar:j.avatar,showTimestamp:eA(t),onRetry:"assistant"===e.role?ew:void 0,onFork:"assistant"===e.role?eN:void 0,onSpeak:"assistant"===e.role?e=>U(e):void 0},e.id):(0,a.jsx)(z,{agentAvatar:j.avatar},e.id)}),(0,a.jsx)("div",{ref:en,className:"h-2"})]})}),J&&(0,a.jsx)("button",{type:"button",onClick:()=>{var e;null===(e=en.current)||void 0===e||e.scrollIntoView({behavior:"smooth"}),G(!1)},className:"absolute bottom-24 right-6 z-10 h-11 w-11 rounded-full glass-effect border border-cyan-500/50 flex items-center justify-center hover:scale-110 transition-all neon-glow shadow-xl",children:(0,a.jsx)(p.A,{className:"h-5 w-5 text-cyan-400"})}),(0,a.jsx)(V,{onSend:ev,disabled:R,isStreaming:R,voiceEnabled:j.voice.enabled,voiceSpeed:j.voice.speed,agentLanguage:j.persona.language,ttsProvider:j.voice.ttsProvider,ttsModel:j.voice.ttsModel,voiceId:j.voice.voiceId,pendingReply:P,onSpeakDone:()=>U(void 0),installedSkills:er,onNewSession:ey,onClearMessages:()=>k([]),currentModel:null!=es?es:{provider:j.model.provider,modelId:j.model.modelId},onModelChange:(e,t)=>el({provider:e,modelId:t})})]}),_&&(0,a.jsxs)("div",{className:"w-[320px] shrink-0 border-l border-purple-500/20 glass-effect flex flex-col overflow-hidden",children:[(0,a.jsxs)("div",{className:"px-4 py-3 border-b border-purple-500/20 flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-[14px] font-bold bg-gradient-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent",children:"数字人信息"}),(0,a.jsx)("button",{onClick:()=>O(!1),className:"h-8 w-8 rounded-lg hover:bg-white/10 flex items-center justify-center transition-all hover:scale-110",children:(0,a.jsx)(n.A,{className:"h-4 w-4 text-cyan-400"})})]}),(0,a.jsx)(K.F,{className:"flex-1",children:(0,a.jsxs)("div",{className:"p-4 space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 rounded-xl glass-effect border border-purple-500/30 neon-glow-purple",children:[(0,a.jsx)("div",{className:"h-12 w-12 rounded-xl bg-gradient-to-br from-purple-600/30 to-cyan-500/30 flex items-center justify-center text-2xl shrink-0 border border-purple-500/30",children:j.avatar}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-bold text-[13px] bg-gradient-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent",children:j.name}),(0,a.jsx)("p",{className:"text-[11px] text-gray-400 mt-1 leading-relaxed",children:j.description||"暂无描述"})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] font-bold text-cyan-400 uppercase tracking-wide",children:"当前模型"}),(0,a.jsxs)("div",{className:"rounded-xl glass-effect border border-cyan-500/30 p-3",children:[(0,a.jsxs)("p",{className:"text-[12px] font-mono font-bold text-cyan-300",children:[j.model.provider," / ",j.model.modelId]}),(0,a.jsxs)("div",{className:"flex gap-2 mt-2 flex-wrap",children:["off"!==j.model.thinkingLevel&&(0,a.jsxs)("span",{className:"text-[10px] px-2 py-1 rounded-md glass-effect border border-purple-500/30 text-purple-300 font-medium",children:["\uD83E\uDDE0 ",j.model.thinkingLevel]}),(0,a.jsxs)("span",{className:"text-[10px] px-2 py-1 rounded-md glass-effect border border-cyan-500/30 text-cyan-300 font-medium",children:["temp ",j.model.temperature]})]})]})]}),W&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] font-bold text-purple-400 uppercase tracking-wide",children:"本次会话用量"}),(0,a.jsxs)("div",{className:"rounded-xl glass-effect border border-purple-500/30 p-3 space-y-2",children:[(0,a.jsxs)("div",{className:"flex justify-between text-[11px] items-center",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"输入 tokens"}),(0,a.jsx)("span",{className:"font-mono font-bold text-cyan-300",children:W.tokens.input.toLocaleString()})]}),(0,a.jsxs)("div",{className:"flex justify-between text-[11px] items-center",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"输出 tokens"}),(0,a.jsx)("span",{className:"font-mono font-bold text-purple-300",children:W.tokens.output.toLocaleString()})]}),W.cost>0&&(0,a.jsxs)("div",{className:"flex justify-between text-[11px] items-center pt-2 border-t border-white/10",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"费用"}),(0,a.jsxs)("span",{className:"font-mono font-bold text-green-300",children:["$",W.cost.toFixed(4)]})]}),W.contextUsage&&(0,a.jsxs)("div",{className:"space-y-1.5 pt-2 border-t border-white/10",children:[(0,a.jsxs)("div",{className:"flex justify-between text-[11px] items-center",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"Context 用量"}),(0,a.jsxs)("span",{className:(0,A.cn)("font-mono font-bold",eE>80?"text-red-400":"text-cyan-300"),children:[eE,"%"]})]}),(0,a.jsx)("div",{className:"h-1.5 w-full rounded-full bg-white/10 overflow-hidden",children:(0,a.jsx)("div",{className:(0,A.cn)("h-full rounded-full transition-all duration-500",eD),style:{width:"".concat(eE,"%")}})})]})]})]}),Object.entries(j.tools).some(e=>{let[,t]=e;return t})&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] font-bold text-green-400 uppercase tracking-wide",children:"已开启工具"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(j.tools).filter(e=>{let[,t]=e;return t}).map(e=>{let[t]=e;return(0,a.jsx)("span",{className:"text-[11px] px-3 py-1 rounded-lg glass-effect border border-green-500/30 text-green-300 font-medium",children:t},t)})})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("p",{className:"text-[11px] font-bold text-cyan-400 uppercase tracking-wide",children:["Skills ",(0,a.jsx)("span",{className:"normal-case font-normal text-[10px] text-gray-500",children:"(本次会话)"})]}),null!==ee&&(0,a.jsx)("button",{type:"button",onClick:()=>et(null),className:"text-[10px] text-purple-400 hover:text-purple-300 font-medium transition-colors",children:"重置"})]}),0===er.length?(0,a.jsxs)("div",{className:"text-center py-8 px-4 rounded-xl glass-effect border border-dashed border-purple-500/30",children:[(0,a.jsx)(u.A,{className:"h-8 w-8 mx-auto mb-2 text-purple-400"}),(0,a.jsx)("p",{className:"text-[11px] text-gray-400",children:"还没有安装任何 Skill"})]}):(0,a.jsx)("div",{className:"space-y-2",children:er.map(e=>{let t=eb.includes(e.name);return(0,a.jsxs)("button",{type:"button",onClick:()=>eC(e.name),className:(0,A.cn)("w-full flex items-center gap-2.5 rounded-xl px-3 py-2.5 text-left transition-all border",t?"glass-effect border-purple-500/50 neon-glow-purple":"border-white/10 hover:border-purple-500/30 hover:bg-white/5"),children:[(0,a.jsx)("div",{className:(0,A.cn)("h-5 w-5 rounded-lg shrink-0 flex items-center justify-center transition-all border",t?"bg-gradient-to-br from-purple-600 to-cyan-500 border-purple-500/50":"bg-white/10 border-white/20"),children:t&&(0,a.jsx)(m.A,{className:"h-3 w-3 text-white stroke-[3]"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:(0,A.cn)("text-[11px] font-mono font-bold truncate",t?"text-cyan-400":"text-gray-300"),children:e.name}),e.description&&(0,a.jsx)("p",{className:"text-[10px] text-gray-500 truncate mt-0.5",children:e.description})]})]},e.name)})})]}),j.systemPrompt&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] font-bold text-purple-400 uppercase tracking-wide",children:"人设提示词"}),(0,a.jsx)("div",{className:"rounded-xl glass-effect border border-purple-500/30 p-3",children:(0,a.jsx)("p",{className:"text-[11px] text-gray-400 leading-relaxed line-clamp-6 whitespace-pre-wrap",children:j.systemPrompt})})]})]})})]})]})]})]})}},7995:(e,t,r)=>{"use strict";r.d(t,{F:()=>o});var a=r(5155),s=r(2115),l=r(1868),n=r(1567);let o=s.forwardRef((e,t)=>{let{className:r,children:s,...o}=e;return(0,a.jsxs)(l.bL,{ref:t,className:(0,n.cn)("relative overflow-hidden",r),...o,children:[(0,a.jsx)(l.LM,{className:"h-full w-full rounded-[inherit]",children:s}),(0,a.jsx)(i,{}),(0,a.jsx)(l.OK,{})]})});o.displayName=l.bL.displayName;let i=s.forwardRef((e,t)=>{let{className:r,orientation:s="vertical",...o}=e;return(0,a.jsx)(l.VM,{ref:t,orientation:s,className:(0,n.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r),...o,children:(0,a.jsx)(l.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=l.VM.displayName},5564:(e,t,r)=>{"use strict";r.d(t,{GY:()=>d,UW:()=>i,oR:()=>o});var a=r(2115);let s=[],l=[];function n(e){l=e,s.forEach(e=>e(l))}function o(e){let t=Math.random().toString(36).slice(2);return n([...l,{...e,id:t}]),setTimeout(()=>n(l.filter(e=>e.id!==t)),4e3),t}function i(e){n(l.filter(t=>t.id!==e))}function d(){let[e,t]=(0,a.useState)(l);return(0,a.useEffect)(()=>(s.push(t),()=>{s=s.filter(e=>e!==t)}),[]),e}},1567:(e,t,r)=>{"use strict";r.d(t,{cn:()=>l});var a=r(3463),s=r(9795);function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,s.QP)((0,a.$)(t))}}},e=>{var t=t=>e(e.s=t);e.O(0,[8313,1868,5663,8441,1517,7358],()=>t(5341)),_N_E=e.O()}]);
|
package/.next/static/chunks/app/[locale]/{layout-bca0349ba5d79253.js → layout-5c05e64401a6d048.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8450],{8271:(e,t,r)=>{Promise.resolve().then(r.bind(r,9981)),Promise.resolve().then(r.t.bind(r,3127,23)),Promise.resolve().then(r.bind(r,4988)),Promise.resolve().then(r.bind(r,1724))},4988:(e,t,r)=>{"use strict";r.d(t,{Sidebar:()=>z});var a=r(5155),s=r(2115),n=r(8173),l=r.n(n),o=r(6046),i=r(7266),d=r(7410),c=r(3467),x=r(8236),h=r(7257),u=r(6323),m=r(4081),p=r(6659),b=r(1719),g=r(6967),f=r(1773),k=r(767),v=r(6308),y=r(8867),j=r(3920),N=r(7725),w=r(2104),A=r(6122),C=r(7113),P=r(1567),D=r(7995);function z(){var e;let t=(0,i.useTranslations)("nav"),r=(0,o.usePathname)(),n=(0,i.useLocale)(),{resolvedTheme:z,setTheme:S}=(0,C.D)(),[E,I]=(0,s.useState)(!1),[T,_]=(0,s.useState)(!0),[R,L]=(0,s.useState)(null),[M,O]=(0,s.useState)(!1),[U,W]=(0,s.useState)(""),[F,G]=(0,s.useState)(null);(0,s.useEffect)(()=>I(!0),[]);let K="dark"===z,V=null===(e=r.match(/\/agents\/([^/]+)/))||void 0===e?void 0:e[1];(0,s.useEffect)(()=>{if(!V){L(null);return}let e=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&O(!0);try{let e="/api/workspace-files?agentId=".concat(V).concat(U?"&path=".concat(encodeURIComponent(U)):""),t=await fetch(e);if(t.ok){let e=await t.json();L(e)}else L(null)}catch(e){L(null)}finally{e&&O(!1)}};e(!0);let t=setInterval(()=>e(!1),3e3);return()=>clearInterval(t)},[V,U]);let Y=[{group:"主菜单",items:[{href:"/".concat(n,"/agents"),icon:d.A,label:t("agents"),tooltip:"管理并对话数字人"},{href:"/".concat(n,"/knowledge"),icon:c.A,label:t("knowledge"),tooltip:"上传文档,构建知识库"}]},{group:"系统",items:[{href:"/".concat(n,"/settings"),icon:x.A,label:t("settings"),tooltip:"配置模型和 API Keys"}]}];function B(e){let{icon:t,isDir:r}=e;return r?(0,a.jsx)(h.A,{className:"h-3.5 w-3.5 text-yellow-500 shrink-0"}):"file-ts"===t||"file-js"===t?(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-blue-400 shrink-0"}):"file-md"===t?(0,a.jsx)(m.A,{className:"h-3.5 w-3.5 text-zinc-400 shrink-0"}):"file-json"===t?(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-yellow-400 shrink-0"}):"file-py"===t?(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-green-400 shrink-0"}):"file-code"===t?(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-purple-400 shrink-0"}):"file-img"===t?(0,a.jsx)(p.A,{className:"h-3.5 w-3.5 text-pink-400 shrink-0"}):(0,a.jsx)(p.A,{className:"h-3.5 w-3.5 text-zinc-400 shrink-0"})}let H=e=>{e.isDir&&W(e.relativePath)},Q=e=>{navigator.clipboard.writeText(e).then(()=>{G(e),setTimeout(()=>G(null),1500)})};return(0,a.jsxs)("aside",{className:"flex h-screen w-[var(--sidebar-width)] flex-col border-r border-gray-200 bg-[hsl(var(--neo-bg))] dark:border-slate-700/50 dark:bg-slate-900/95 dark:backdrop-blur-sm",children:[(0,a.jsxs)("div",{className:"flex h-14 items-center border-b border-gray-200 px-4 shrink-0 bg-white/50 dark:border-slate-700/50 dark:bg-slate-800/50",children:[(0,a.jsx)("div",{className:"flex items-center justify-center w-8 h-8 rounded-xl neo-card dark:bg-gradient-to-br dark:from-cyan-600 dark:to-blue-600 mr-2 dark:shadow-lg",children:(0,a.jsx)(d.A,{className:"h-4 w-4 text-blue-600 dark:text-white"})}),(0,a.jsx)("span",{className:"font-bold text-sm text-gray-800 dark:bg-gradient-to-r dark:from-cyan-400 dark:to-blue-400 dark:bg-clip-text dark:text-transparent",children:"Agent Platform"})]}),(0,a.jsx)("nav",{className:"shrink-0 p-2 space-y-3",children:Y.map(e=>(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"px-3 mb-1 text-[10px] font-semibold uppercase tracking-widest text-gray-500",children:e.group}),(0,a.jsx)("div",{className:"space-y-1",children:e.items.map(e=>{let t=r.startsWith(e.href);return(0,a.jsx)(l(),{href:e.href,title:e.tooltip,children:(0,a.jsxs)("span",{className:(0,P.cn)("flex items-center gap-2.5 rounded-xl px-3 py-2 text-sm font-medium transition-all duration-200 border",t?"neo-card-inset text-blue-600 border-transparent dark:bg-gradient-to-r dark:from-cyan-600/20 dark:to-blue-600/20 dark:text-cyan-400 dark:border-cyan-500/50 dark:shadow-lg dark:shadow-cyan-500/20":"text-gray-600 hover:text-gray-900 border-transparent neo-button dark:text-gray-400 dark:hover:text-white dark:hover:border-slate-700 dark:hover:bg-slate-800 hover:scale-[1.02]"),children:[(0,a.jsx)(e.icon,{className:(0,P.cn)("h-4 w-4 shrink-0 transition-transform duration-200",t&&"text-blue-600 dark:text-cyan-400",!t&&"group-hover:scale-110")}),(0,a.jsx)("span",{className:"truncate",children:e.label}),t&&(0,a.jsx)("span",{className:"ml-auto w-2 h-2 rounded-full bg-cyan-400 shadow-lg shadow-cyan-400/50 animate-pulse"})]})},e.href)})})]},e.group))}),(0,a.jsx)("div",{className:"mx-3 border-t border-slate-700/50"}),(0,a.jsxs)("div",{className:"flex flex-col flex-1 min-h-0 overflow-hidden",children:[(0,a.jsxs)("div",{onClick:()=>_(!T),className:"flex items-center gap-2 px-3 py-2 text-[10px] font-semibold uppercase tracking-widest text-gray-500 hover:text-blue-600 dark:hover:text-cyan-400 transition-all duration-200 w-full text-left shrink-0 hover:bg-gray-50 dark:hover:bg-slate-800/50 cursor-pointer",children:[T?(0,a.jsx)(b.A,{className:"h-3 w-3 transition-transform duration-200"}):(0,a.jsx)(g.A,{className:"h-3 w-3 transition-transform duration-200"}),"工作区",M&&(0,a.jsx)("span",{className:"ml-auto text-[9px] normal-case tracking-normal animate-pulse text-blue-600 dark:text-cyan-400",children:"加载中…"}),!M&&V&&(0,a.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),O(!0),fetch("/api/workspace-files?agentId=".concat(V).concat(U?"&path=".concat(encodeURIComponent(U)):"")).then(e=>e.ok?e.json():null).then(e=>L(e)).catch(()=>{}).finally(()=>O(!1))},title:"刷新工作区",className:"ml-auto p-0.5 rounded-lg neo-button hover:text-blue-600 dark:hover:bg-cyan-500/20 text-gray-500 dark:text-gray-500 dark:hover:text-cyan-400 transition-all duration-200 normal-case hover:scale-110 dark:border-transparent dark:hover:border-cyan-500/50",children:(0,a.jsx)(f.A,{className:"h-3 w-3"})})]}),T&&(0,a.jsx)("div",{className:"flex flex-col flex-1 min-h-0",children:V?R?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"px-3 pb-1 flex items-center gap-1 shrink-0",children:[U&&(0,a.jsx)("button",{type:"button",onClick:()=>{let e=U.split("/").filter(Boolean);e.pop(),W(e.join("/"))},title:"返回上级目录",className:"p-0.5 rounded-lg neo-button text-gray-500 hover:text-blue-600 dark:hover:bg-cyan-500/20 dark:text-gray-400 dark:hover:text-cyan-400 transition-all duration-200 shrink-0 dark:border-transparent dark:hover:border-cyan-500/50",children:(0,a.jsx)(g.A,{className:"h-3 w-3 rotate-180"})}),(0,a.jsx)("span",{className:"text-[10px] text-gray-500 font-mono truncate",title:R.currentDisplay,children:U?"…/".concat(U.split("/").slice(-2).join("/")):R.currentDisplay.split("/").slice(-2).join("/")}),U&&(0,a.jsx)("button",{type:"button",onClick:()=>W(""),title:"回到工作区根目录",className:"ml-auto p-0.5 rounded-lg neo-button text-gray-700 hover:text-red-600 dark:hover:bg-red-500/20 dark:text-gray-400 dark:hover:text-red-400 transition-all duration-200 shrink-0 dark:border-transparent dark:hover:border-red-500/50",children:(0,a.jsx)(k.A,{className:"h-3 w-3"})})]}),(0,a.jsx)(D.F,{className:"flex-1",children:(0,a.jsx)("div",{className:"px-2 pb-2 space-y-0.5",children:0===R.entries.length?(0,a.jsx)("p",{className:"px-2 py-2 text-[11px] text-gray-500 italic",children:"目录为空"}):R.entries.map(e=>(0,a.jsxs)("div",{className:"group relative flex items-center rounded-xl transition-all duration-200 neo-button hover:bg-gray-100 dark:hover:bg-slate-800/50 border-transparent dark:hover:border-slate-700",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>H(e),title:e.isDir?"打开 ".concat(e.name,"/"):e.path,className:(0,P.cn)("flex items-center gap-2 px-2 py-1.5 text-left flex-1 min-w-0",e.isDir?"cursor-pointer":"cursor-default"),children:[e.isDir?(0,a.jsx)(v.A,{className:"h-3.5 w-3.5 text-yellow-500 shrink-0"}):(0,a.jsx)(B,{icon:e.icon,isDir:!1}),(0,a.jsx)("span",{className:"text-[12px] truncate flex-1 text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white transition-colors",children:e.name}),e.sizeDisplay&&!e.isDir&&(0,a.jsx)("span",{className:"text-[10px] text-gray-500 shrink-0 font-mono mr-1",children:e.sizeDisplay}),e.isDir&&(0,a.jsx)(g.A,{className:"h-3 w-3 text-gray-400 dark:text-gray-500 shrink-0 mr-1"})]}),(0,a.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),Q(e.path)},title:"复制路径:".concat(e.path),className:"absolute right-1 opacity-0 group-hover:opacity-100 transition-all duration-200 p-1 rounded-lg neo-button hover:text-blue-600 dark:hover:bg-cyan-500/20 text-gray-500 dark:hover:text-cyan-400 border-transparent dark:hover:border-cyan-500/50",children:F===e.path?(0,a.jsx)(y.A,{className:"h-3 w-3 text-blue-600 dark:text-cyan-400"}):(0,a.jsx)(j.A,{className:"h-3 w-3"})})]},e.relativePath))})})]}):(0,a.jsx)("p",{className:"px-4 text-[11px] text-muted-foreground/50 italic",children:M?"加载中…":"工作区为空或无法访问"}):(0,a.jsx)("p",{className:"px-4 text-[11px] text-muted-foreground/50 italic",children:"进入数字人对话后显示工作区"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1 border-t border-gray-200 dark:border-slate-700/50 p-2 shrink-0 bg-white/50 dark:bg-slate-800/30",children:[(0,a.jsx)("button",{onClick:()=>S(K?"light":"dark"),title:E?K?"切换浅色模式":"切换深色模式":"切换主题",className:"h-9 w-9 rounded-xl neo-button hover:text-blue-600 dark:hover:bg-cyan-500/20 text-gray-500 dark:text-gray-400 dark:hover:text-cyan-400 flex items-center justify-center transition-all duration-200 hover:scale-110 dark:border-transparent dark:hover:border-cyan-500/50",suppressHydrationWarning:!0,children:E?K?(0,a.jsx)(N.A,{className:"h-4 w-4 transition-transform duration-200 hover:rotate-180"}):(0,a.jsx)(w.A,{className:"h-4 w-4 transition-transform duration-200 hover:rotate-12"}):(0,a.jsx)(w.A,{className:"h-4 w-4"})}),(0,a.jsx)(l(),{href:"/".concat("zh"===n?"en":"zh").concat(r.replace(/^\/(zh|en)/,"")),children:(0,a.jsx)("button",{title:"zh"===n?"Switch to English":"切换为中文",className:"h-9 w-9 rounded-xl neo-button hover:text-purple-600 dark:hover:bg-purple-500/20 text-gray-500 dark:text-gray-400 dark:hover:text-purple-400 flex items-center justify-center transition-all duration-200 hover:scale-110 dark:border-transparent dark:hover:border-purple-500/50",children:(0,a.jsx)(A.A,{className:"h-4 w-4 transition-transform duration-200 hover:rotate-12"})})})]})]})}},1724:(e,t,r)=>{"use strict";r.d(t,{Providers:()=>h});var a=r(5155);r(2115);var s=r(7113),n=r(5564),l=r(1567),o=r(9213),i=r(3239),d=r(8617),c=r(767);function x(){let e=(0,n.GY)();return e.length?(0,a.jsx)("div",{className:"fixed bottom-4 right-4 z-[100] flex flex-col gap-2 max-w-sm w-full pointer-events-none",children:e.map(e=>(0,a.jsxs)("div",{className:(0,l.cn)("pointer-events-auto flex items-start gap-3 rounded-xl border px-4 py-3 shadow-lg","destructive"===e.variant?"bg-red-50 border-red-200 dark:bg-red-900/30 dark:border-red-800":"success"===e.variant?"bg-green-50 border-green-200 dark:bg-green-900/30 dark:border-green-800":"bg-white border-border dark:bg-zinc-800"),children:["destructive"===e.variant&&(0,a.jsx)(o.A,{className:"h-4 w-4 text-red-500 shrink-0 mt-0.5"}),"success"===e.variant&&(0,a.jsx)(i.A,{className:"h-4 w-4 text-green-500 shrink-0 mt-0.5"}),(!e.variant||"default"===e.variant)&&(0,a.jsx)(d.A,{className:"h-4 w-4 text-blue-500 shrink-0 mt-0.5"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium leading-none",children:e.title}),e.description&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:e.description})]}),(0,a.jsx)("button",{type:"button",onClick:()=>(0,n.UW)(e.id),className:"shrink-0 text-muted-foreground hover:text-foreground transition-colors",children:(0,a.jsx)(c.A,{className:"h-3.5 w-3.5"})})]},e.id))}):null}function h(e){let{children:t}=e;return(0,a.jsxs)(s.N,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,children:[t,(0,a.jsx)(x,{})]})}},7995:(e,t,r)=>{"use strict";r.d(t,{F:()=>o});var a=r(5155),s=r(2115),n=r(1868),l=r(1567);let o=s.forwardRef((e,t)=>{let{className:r,children:s,...o}=e;return(0,a.jsxs)(n.bL,{ref:t,className:(0,l.cn)("relative overflow-hidden",r),...o,children:[(0,a.jsx)(n.LM,{className:"h-full w-full rounded-[inherit]",children:s}),(0,a.jsx)(i,{}),(0,a.jsx)(n.OK,{})]})});o.displayName=n.bL.displayName;let i=s.forwardRef((e,t)=>{let{className:r,orientation:s="vertical",...o}=e;return(0,a.jsx)(n.VM,{ref:t,orientation:s,className:(0,l.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r),...o,children:(0,a.jsx)(n.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=n.VM.displayName},5564:(e,t,r)=>{"use strict";r.d(t,{GY:()=>d,UW:()=>i,oR:()=>o});var a=r(2115);let s=[],n=[];function l(e){n=e,s.forEach(e=>e(n))}function o(e){let t=Math.random().toString(36).slice(2);return l([...n,{...e,id:t}]),setTimeout(()=>l(n.filter(e=>e.id!==t)),4e3),t}function i(e){l(n.filter(t=>t.id!==e))}function d(){let[e,t]=(0,a.useState)(n);return(0,a.useEffect)(()=>(s.push(t),()=>{s=s.filter(e=>e!==t)}),[]),e}},1567:(e,t,r)=>{"use strict";r.d(t,{cn:()=>n});var a=r(3463),s=r(9795);function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,s.QP)((0,a.$)(t))}}},e=>{var t=t=>e(e.s=t);e.O(0,[714,8313,1868,8173,7200,8441,1517,7358],()=>t(8271)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8450],{8271:(e,t,r)=>{Promise.resolve().then(r.bind(r,9981)),Promise.resolve().then(r.t.bind(r,3127,23)),Promise.resolve().then(r.bind(r,4988)),Promise.resolve().then(r.bind(r,1724))},4988:(e,t,r)=>{"use strict";r.d(t,{Sidebar:()=>z});var a=r(5155),s=r(2115),n=r(8173),l=r.n(n),o=r(6046),i=r(7266),d=r(7410),c=r(3467),x=r(8236),h=r(7257),u=r(6323),m=r(4081),p=r(6659),b=r(1719),g=r(6967),f=r(1773),k=r(767),v=r(3927),y=r(8867),j=r(3920),N=r(7725),w=r(2104),A=r(6122),C=r(7113),P=r(1567),D=r(7995);function z(){var e;let t=(0,i.useTranslations)("nav"),r=(0,o.usePathname)(),n=(0,i.useLocale)(),{resolvedTheme:z,setTheme:S}=(0,C.D)(),[E,I]=(0,s.useState)(!1),[T,_]=(0,s.useState)(!0),[R,L]=(0,s.useState)(null),[M,O]=(0,s.useState)(!1),[U,W]=(0,s.useState)(""),[F,G]=(0,s.useState)(null);(0,s.useEffect)(()=>I(!0),[]);let K="dark"===z,V=null===(e=r.match(/\/agents\/([^/]+)/))||void 0===e?void 0:e[1];(0,s.useEffect)(()=>{if(!V){L(null);return}let e=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&O(!0);try{let e="/api/workspace-files?agentId=".concat(V).concat(U?"&path=".concat(encodeURIComponent(U)):""),t=await fetch(e);if(t.ok){let e=await t.json();L(e)}else L(null)}catch(e){L(null)}finally{e&&O(!1)}};e(!0);let t=setInterval(()=>e(!1),3e3);return()=>clearInterval(t)},[V,U]);let Y=[{group:"主菜单",items:[{href:"/".concat(n,"/agents"),icon:d.A,label:t("agents"),tooltip:"管理并对话数字人"},{href:"/".concat(n,"/knowledge"),icon:c.A,label:t("knowledge"),tooltip:"上传文档,构建知识库"}]},{group:"系统",items:[{href:"/".concat(n,"/settings"),icon:x.A,label:t("settings"),tooltip:"配置模型和 API Keys"}]}];function B(e){let{icon:t,isDir:r}=e;return r?(0,a.jsx)(h.A,{className:"h-3.5 w-3.5 text-yellow-500 shrink-0"}):"file-ts"===t||"file-js"===t?(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-blue-400 shrink-0"}):"file-md"===t?(0,a.jsx)(m.A,{className:"h-3.5 w-3.5 text-zinc-400 shrink-0"}):"file-json"===t?(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-yellow-400 shrink-0"}):"file-py"===t?(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-green-400 shrink-0"}):"file-code"===t?(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-purple-400 shrink-0"}):"file-img"===t?(0,a.jsx)(p.A,{className:"h-3.5 w-3.5 text-pink-400 shrink-0"}):(0,a.jsx)(p.A,{className:"h-3.5 w-3.5 text-zinc-400 shrink-0"})}let H=e=>{e.isDir&&W(e.relativePath)},Q=e=>{navigator.clipboard.writeText(e).then(()=>{G(e),setTimeout(()=>G(null),1500)})};return(0,a.jsxs)("aside",{className:"flex h-screen w-[var(--sidebar-width)] flex-col border-r border-gray-200 bg-[hsl(var(--neo-bg))] dark:border-slate-700/50 dark:bg-slate-900/95 dark:backdrop-blur-sm",children:[(0,a.jsxs)("div",{className:"flex h-14 items-center border-b border-gray-200 px-4 shrink-0 bg-white/50 dark:border-slate-700/50 dark:bg-slate-800/50",children:[(0,a.jsx)("div",{className:"flex items-center justify-center w-8 h-8 rounded-xl neo-card dark:bg-gradient-to-br dark:from-cyan-600 dark:to-blue-600 mr-2 dark:shadow-lg",children:(0,a.jsx)(d.A,{className:"h-4 w-4 text-blue-600 dark:text-white"})}),(0,a.jsx)("span",{className:"font-bold text-sm text-gray-800 dark:bg-gradient-to-r dark:from-cyan-400 dark:to-blue-400 dark:bg-clip-text dark:text-transparent",children:"Agent Platform"})]}),(0,a.jsx)("nav",{className:"shrink-0 p-2 space-y-3",children:Y.map(e=>(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"px-3 mb-1 text-[10px] font-semibold uppercase tracking-widest text-gray-500",children:e.group}),(0,a.jsx)("div",{className:"space-y-1",children:e.items.map(e=>{let t=r.startsWith(e.href);return(0,a.jsx)(l(),{href:e.href,title:e.tooltip,children:(0,a.jsxs)("span",{className:(0,P.cn)("flex items-center gap-2.5 rounded-xl px-3 py-2 text-sm font-medium transition-all duration-200 border",t?"neo-card-inset text-blue-600 border-transparent dark:bg-gradient-to-r dark:from-cyan-600/20 dark:to-blue-600/20 dark:text-cyan-400 dark:border-cyan-500/50 dark:shadow-lg dark:shadow-cyan-500/20":"text-gray-600 hover:text-gray-900 border-transparent neo-button dark:text-gray-400 dark:hover:text-white dark:hover:border-slate-700 dark:hover:bg-slate-800 hover:scale-[1.02]"),children:[(0,a.jsx)(e.icon,{className:(0,P.cn)("h-4 w-4 shrink-0 transition-transform duration-200",t&&"text-blue-600 dark:text-cyan-400",!t&&"group-hover:scale-110")}),(0,a.jsx)("span",{className:"truncate",children:e.label}),t&&(0,a.jsx)("span",{className:"ml-auto w-2 h-2 rounded-full bg-cyan-400 shadow-lg shadow-cyan-400/50 animate-pulse"})]})},e.href)})})]},e.group))}),(0,a.jsx)("div",{className:"mx-3 border-t border-slate-700/50"}),(0,a.jsxs)("div",{className:"flex flex-col flex-1 min-h-0 overflow-hidden",children:[(0,a.jsxs)("div",{onClick:()=>_(!T),className:"flex items-center gap-2 px-3 py-2 text-[10px] font-semibold uppercase tracking-widest text-gray-500 hover:text-blue-600 dark:hover:text-cyan-400 transition-all duration-200 w-full text-left shrink-0 hover:bg-gray-50 dark:hover:bg-slate-800/50 cursor-pointer",children:[T?(0,a.jsx)(b.A,{className:"h-3 w-3 transition-transform duration-200"}):(0,a.jsx)(g.A,{className:"h-3 w-3 transition-transform duration-200"}),"工作区",M&&(0,a.jsx)("span",{className:"ml-auto text-[9px] normal-case tracking-normal animate-pulse text-blue-600 dark:text-cyan-400",children:"加载中…"}),!M&&V&&(0,a.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),O(!0),fetch("/api/workspace-files?agentId=".concat(V).concat(U?"&path=".concat(encodeURIComponent(U)):"")).then(e=>e.ok?e.json():null).then(e=>L(e)).catch(()=>{}).finally(()=>O(!1))},title:"刷新工作区",className:"ml-auto p-0.5 rounded-lg neo-button hover:text-blue-600 dark:hover:bg-cyan-500/20 text-gray-500 dark:text-gray-500 dark:hover:text-cyan-400 transition-all duration-200 normal-case hover:scale-110 dark:border-transparent dark:hover:border-cyan-500/50",children:(0,a.jsx)(f.A,{className:"h-3 w-3"})})]}),T&&(0,a.jsx)("div",{className:"flex flex-col flex-1 min-h-0",children:V?R?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"px-3 pb-1 flex items-center gap-1 shrink-0",children:[U&&(0,a.jsx)("button",{type:"button",onClick:()=>{let e=U.split("/").filter(Boolean);e.pop(),W(e.join("/"))},title:"返回上级目录",className:"p-0.5 rounded-lg neo-button text-gray-500 hover:text-blue-600 dark:hover:bg-cyan-500/20 dark:text-gray-400 dark:hover:text-cyan-400 transition-all duration-200 shrink-0 dark:border-transparent dark:hover:border-cyan-500/50",children:(0,a.jsx)(g.A,{className:"h-3 w-3 rotate-180"})}),(0,a.jsx)("span",{className:"text-[10px] text-gray-500 font-mono truncate",title:R.currentDisplay,children:U?"…/".concat(U.split("/").slice(-2).join("/")):R.currentDisplay.split("/").slice(-2).join("/")}),U&&(0,a.jsx)("button",{type:"button",onClick:()=>W(""),title:"回到工作区根目录",className:"ml-auto p-0.5 rounded-lg neo-button text-gray-700 hover:text-red-600 dark:hover:bg-red-500/20 dark:text-gray-400 dark:hover:text-red-400 transition-all duration-200 shrink-0 dark:border-transparent dark:hover:border-red-500/50",children:(0,a.jsx)(k.A,{className:"h-3 w-3"})})]}),(0,a.jsx)(D.F,{className:"flex-1",children:(0,a.jsx)("div",{className:"px-2 pb-2 space-y-0.5",children:0===R.entries.length?(0,a.jsx)("p",{className:"px-2 py-2 text-[11px] text-gray-500 italic",children:"目录为空"}):R.entries.map(e=>(0,a.jsxs)("div",{className:"group relative flex items-center rounded-xl transition-all duration-200 neo-button hover:bg-gray-100 dark:hover:bg-slate-800/50 border-transparent dark:hover:border-slate-700",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>H(e),title:e.isDir?"打开 ".concat(e.name,"/"):e.path,className:(0,P.cn)("flex items-center gap-2 px-2 py-1.5 text-left flex-1 min-w-0",e.isDir?"cursor-pointer":"cursor-default"),children:[e.isDir?(0,a.jsx)(v.A,{className:"h-3.5 w-3.5 text-yellow-500 shrink-0"}):(0,a.jsx)(B,{icon:e.icon,isDir:!1}),(0,a.jsx)("span",{className:"text-[12px] truncate flex-1 text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white transition-colors",children:e.name}),e.sizeDisplay&&!e.isDir&&(0,a.jsx)("span",{className:"text-[10px] text-gray-500 shrink-0 font-mono mr-1",children:e.sizeDisplay}),e.isDir&&(0,a.jsx)(g.A,{className:"h-3 w-3 text-gray-400 dark:text-gray-500 shrink-0 mr-1"})]}),(0,a.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),Q(e.path)},title:"复制路径:".concat(e.path),className:"absolute right-1 opacity-0 group-hover:opacity-100 transition-all duration-200 p-1 rounded-lg neo-button hover:text-blue-600 dark:hover:bg-cyan-500/20 text-gray-500 dark:hover:text-cyan-400 border-transparent dark:hover:border-cyan-500/50",children:F===e.path?(0,a.jsx)(y.A,{className:"h-3 w-3 text-blue-600 dark:text-cyan-400"}):(0,a.jsx)(j.A,{className:"h-3 w-3"})})]},e.relativePath))})})]}):(0,a.jsx)("p",{className:"px-4 text-[11px] text-muted-foreground/50 italic",children:M?"加载中…":"工作区为空或无法访问"}):(0,a.jsx)("p",{className:"px-4 text-[11px] text-muted-foreground/50 italic",children:"进入数字人对话后显示工作区"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1 border-t border-gray-200 dark:border-slate-700/50 p-2 shrink-0 bg-white/50 dark:bg-slate-800/30",children:[(0,a.jsx)("button",{onClick:()=>S(K?"light":"dark"),title:E?K?"切换浅色模式":"切换深色模式":"切换主题",className:"h-9 w-9 rounded-xl neo-button hover:text-blue-600 dark:hover:bg-cyan-500/20 text-gray-500 dark:text-gray-400 dark:hover:text-cyan-400 flex items-center justify-center transition-all duration-200 hover:scale-110 dark:border-transparent dark:hover:border-cyan-500/50",suppressHydrationWarning:!0,children:E?K?(0,a.jsx)(N.A,{className:"h-4 w-4 transition-transform duration-200 hover:rotate-180"}):(0,a.jsx)(w.A,{className:"h-4 w-4 transition-transform duration-200 hover:rotate-12"}):(0,a.jsx)(w.A,{className:"h-4 w-4"})}),(0,a.jsx)(l(),{href:"/".concat("zh"===n?"en":"zh").concat(r.replace(/^\/(zh|en)/,"")),children:(0,a.jsx)("button",{title:"zh"===n?"Switch to English":"切换为中文",className:"h-9 w-9 rounded-xl neo-button hover:text-purple-600 dark:hover:bg-purple-500/20 text-gray-500 dark:text-gray-400 dark:hover:text-purple-400 flex items-center justify-center transition-all duration-200 hover:scale-110 dark:border-transparent dark:hover:border-purple-500/50",children:(0,a.jsx)(A.A,{className:"h-4 w-4 transition-transform duration-200 hover:rotate-12"})})})]})]})}},1724:(e,t,r)=>{"use strict";r.d(t,{Providers:()=>h});var a=r(5155);r(2115);var s=r(7113),n=r(5564),l=r(1567),o=r(9213),i=r(3239),d=r(8617),c=r(767);function x(){let e=(0,n.GY)();return e.length?(0,a.jsx)("div",{className:"fixed bottom-4 right-4 z-[100] flex flex-col gap-2 max-w-sm w-full pointer-events-none",children:e.map(e=>(0,a.jsxs)("div",{className:(0,l.cn)("pointer-events-auto flex items-start gap-3 rounded-xl border px-4 py-3 shadow-lg","destructive"===e.variant?"bg-red-50 border-red-200 dark:bg-red-900/30 dark:border-red-800":"success"===e.variant?"bg-green-50 border-green-200 dark:bg-green-900/30 dark:border-green-800":"bg-white border-border dark:bg-zinc-800"),children:["destructive"===e.variant&&(0,a.jsx)(o.A,{className:"h-4 w-4 text-red-500 shrink-0 mt-0.5"}),"success"===e.variant&&(0,a.jsx)(i.A,{className:"h-4 w-4 text-green-500 shrink-0 mt-0.5"}),(!e.variant||"default"===e.variant)&&(0,a.jsx)(d.A,{className:"h-4 w-4 text-blue-500 shrink-0 mt-0.5"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium leading-none",children:e.title}),e.description&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:e.description})]}),(0,a.jsx)("button",{type:"button",onClick:()=>(0,n.UW)(e.id),className:"shrink-0 text-muted-foreground hover:text-foreground transition-colors",children:(0,a.jsx)(c.A,{className:"h-3.5 w-3.5"})})]},e.id))}):null}function h(e){let{children:t}=e;return(0,a.jsxs)(s.N,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,children:[t,(0,a.jsx)(x,{})]})}},7995:(e,t,r)=>{"use strict";r.d(t,{F:()=>o});var a=r(5155),s=r(2115),n=r(1868),l=r(1567);let o=s.forwardRef((e,t)=>{let{className:r,children:s,...o}=e;return(0,a.jsxs)(n.bL,{ref:t,className:(0,l.cn)("relative overflow-hidden",r),...o,children:[(0,a.jsx)(n.LM,{className:"h-full w-full rounded-[inherit]",children:s}),(0,a.jsx)(i,{}),(0,a.jsx)(n.OK,{})]})});o.displayName=n.bL.displayName;let i=s.forwardRef((e,t)=>{let{className:r,orientation:s="vertical",...o}=e;return(0,a.jsx)(n.VM,{ref:t,orientation:s,className:(0,l.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r),...o,children:(0,a.jsx)(n.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=n.VM.displayName},5564:(e,t,r)=>{"use strict";r.d(t,{GY:()=>d,UW:()=>i,oR:()=>o});var a=r(2115);let s=[],n=[];function l(e){n=e,s.forEach(e=>e(n))}function o(e){let t=Math.random().toString(36).slice(2);return l([...n,{...e,id:t}]),setTimeout(()=>l(n.filter(e=>e.id!==t)),4e3),t}function i(e){l(n.filter(t=>t.id!==e))}function d(){let[e,t]=(0,a.useState)(n);return(0,a.useEffect)(()=>(s.push(t),()=>{s=s.filter(e=>e!==t)}),[]),e}},1567:(e,t,r)=>{"use strict";r.d(t,{cn:()=>n});var a=r(3463),s=r(9795);function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,s.QP)((0,a.$)(t))}}},e=>{var t=t=>e(e.s=t);e.O(0,[714,8313,1868,8173,7200,8441,1517,7358],()=>t(8271)),_N_E=e.O()}]);
|