@tablestore/tablestore-agent-cli 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dashboard-runtime/dashboard/.next/BUILD_ID +1 -1
- package/dist/dashboard-runtime/dashboard/.next/build-manifest.json +3 -3
- package/dist/dashboard-runtime/dashboard/.next/prerender-manifest.json +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/custom-policy/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/custom-policy/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/effective-permissions/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/effective-permissions/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/policies/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/policies/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/filter-by-permission/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/filter-by-permission/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/status/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/status/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/token/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/token/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/token/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/token/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/use/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/use/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/chunks/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/chunks/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/chunks/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/chunks/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/upload/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/upload/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/retrieve/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/retrieve/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/chat/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/chat/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/models/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/models/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/test/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/test/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/logs/client/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/logs/client/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/actions/apply/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/actions/apply/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/actions/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/actions/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/cancel/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/cancel/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/messages/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/messages/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/requests/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/requests/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/scopes/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/scopes/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/search/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/search/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/tasks/[requestId]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/tasks/[requestId]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/tasks/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/tasks/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/[memoryId]/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/[memoryId]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/runtime/context/route.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/runtime/context/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_full.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0.y01v.._.js +40 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0wa~r66._.js +40 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/{[root-of-the-server]__0cfc26g._.js → [root-of-the-server]__10k~3sa._.js} +10 -10
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__07fra.0._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0st_2qm._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0odjvc.._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/middleware-build-manifest.js +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/pages/404.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/pages/500.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0ayu19bfberc6.js → 0-0n226yihtlx.js} +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{1080w.jlkizc-.js → 09fuq3fiw1zq8.js} +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{06qgro8gk178k.js → 12ju37ebul3bw.js} +1 -1
- package/dist/dashboard-runtime/dashboard/src/components/qa/qa-message.tsx +2 -3
- package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-result-card.tsx +2 -1
- package/dist/dashboard-runtime/dashboard/src/lib/utils.ts +4 -0
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/package.json +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/package.json +1 -1
- package/package.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0pfdi-.._.js +0 -40
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0qi223x._.js +0 -40
- /package/dist/dashboard-runtime/dashboard/.next/static/{w-aME93lY9vOGA0PZdBaI → pE-cQCmJ7b5_xgwqBJ7J3}/_buildManifest.js +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{w-aME93lY9vOGA0PZdBaI → pE-cQCmJ7b5_xgwqBJ7J3}/_clientMiddlewareManifest.js +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{w-aME93lY9vOGA0PZdBaI → pE-cQCmJ7b5_xgwqBJ7J3}/_ssgManifest.js +0 -0
package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__07fra.0._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[898018,a=>{"use strict";let b=(0,a.i(750053).default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);a.s(["Send",0,b],898018)},431710,a=>{"use strict";let b=(0,a.i(750053).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);a.s(["Square",0,b],431710)},531687,a=>{"use strict";let b=(0,a.i(750053).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",0,b],531687)},542216,a=>a.a(async(b,c)=>{try{let b=await a.y("shiki-2963fa3a20578463");a.n(b),c()}catch(a){c(a)}},!0),23195,a=>a.a(async(b,c)=>{try{let b=await a.y("shiki-2963fa3a20578463/engine/javascript");a.n(b),c()}catch(a){c(a)}},!0),828778,a=>a.a(async(b,c)=>{try{var d=a.i(542216),e=a.i(23195),f=b([d,e]);[d,e]=f.then?(await f)():f;var g=(0,e.createJavaScriptRegexEngine)({forgiving:!0}),h=Object.fromEntries(d.bundledLanguagesInfo.flatMap(a=>{var b;return(null!=(b=a.aliases)?b:[]).map(b=>[b,a.id])})),i=new Set(Object.keys(d.bundledLanguages)),j=a=>{let b=a.trim().toLowerCase();return h[b]||(i.has(b),b)},k=new Map,l=new Map,m=new Map,n=a=>{var b;return"string"==typeof a?a:null!=(b=a.name)?b:"custom"},o=function(a={}){var b;let c=null!=(b=a.themes)?b:["github-light","github-dark"];return{name:"shiki",type:"code-highlighter",supportsLanguage(a){let b=j(a);return i.has(b)},getSupportedLanguages:()=>Array.from(i),getThemes:()=>c,highlight({code:a,language:b,themes:c},e){let f,h,o=j(b),p=[n(c[0]),n(c[1])],q=(f=a.slice(0,100),h=a.length>100?a.slice(-100):"",`${o}:${p[0]}:${p[1]}:${a.length}:${f}:${h}`);if(l.has(q))return l.get(q);e&&(m.has(q)||m.set(q,new Set),m.get(q).add(e));let r=i.has(o)?o:"text";return((a,b)=>{let c=`${a}-${n(b[0])}-${n(b[1])}`;if(k.has(c))return k.get(c);let e=(0,d.createHighlighter)({themes:b,langs:[a],engine:g});return k.set(c,e),e})(r,c).then(b=>{let c=b.getLoadedLanguages().includes(o)?o:"text",d=b.codeToTokens(a,{lang:c,themes:{light:p[0],dark:p[1]}});l.set(q,d);let e=m.get(q);if(e){for(let a of e)a(d);m.delete(q)}}).catch(a=>{console.error("[Streamdown Code] Failed to highlight code:",a),m.delete(q)}),null}}}();a.s(["code",0,o]),c()}catch(a){c(a)}},!1),626925,a=>{"use strict";a.i(702617),a.s([])},946400,a=>{"use strict";var b=a.i(702617);a.s(["Streamdown",()=>b.C])},693280,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(53520),e=a.i(16772),f=a.i(364565);a.s(["CodeBlock",0,function({className:a,children:g,node:h,...i}){let j=(0,c.useRef)(null),[k,l]=(0,c.useState)(!1),m=function(a){for(let b of c.Children.toArray(a)){if(!(0,c.isValidElement)(b))continue;let a=b.props;if("string"!=typeof a?.className)continue;let d=a.className.match(/language-([a-z0-9+#-]+)/i);if(d)return d[1]}}(g)??"",n=(0,c.useCallback)(async()=>{let a=j.current?.innerText??"";if(a)try{await navigator.clipboard.writeText(a),l(!0),window.setTimeout(()=>l(!1),2e3)}catch{}},[]);return(0,b.jsxs)("div",{className:"group relative my-2 overflow-hidden rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.5)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.8)] px-3 py-1.5",children:[(0,b.jsx)("span",{className:"font-mono text-[11px] uppercase tracking-wide text-muted-foreground",children:m||"text"}),(0,b.jsx)("button",{type:"button",onClick:n,className:(0,f.cn)("inline-flex items-center gap-1 rounded px-2 py-0.5 text-[11px] text-muted-foreground","opacity-0 transition-opacity hover:bg-[hsl(var(--accent))] hover:text-foreground","group-hover:opacity-100 focus-visible:opacity-100",k&&"opacity-100 text-primary"),"aria-label":"复制代码",children:k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),"已复制"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.Copy,{className:"h-3 w-3"}),"复制"]})})]}),(0,b.jsx)("pre",{ref:j,className:(0,f.cn)("overflow-x-auto p-3 text-xs leading-relaxed","[&_code]:bg-transparent [&_code]:p-0",a),...i,children:g})]})}])},613562,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(828778);a.i(626925);var f=a.i(946400),g=a.i(364565),h=a.i(693280),i=b([e]);[e]=i.then?(await i)():i;let j=["https://","http://","mailto:","#","/"],k=["https://","data:image/"],l=(a,b)=>{let c=a.toLowerCase();return("src"===b?k:j).some(a=>c.startsWith(a))?a:""};a.s(["Markdown",0,function({children:a,className:b}){return(0,d.jsx)("div",{className:(0,g.cn)("text-sm leading-relaxed text-foreground/90","[&_p]:my-2 [&_ul]:my-2 [&_ol]:my-2 [&_li]:my-0.5","[&_ul]:list-disc [&_ul]:pl-5 [&_ol]:list-decimal [&_ol]:pl-5","[&_h1]:mt-4 [&_h1]:mb-2 [&_h1]:text-lg [&_h1]:font-semibold","[&_h2]:mt-3 [&_h2]:mb-2 [&_h2]:text-base [&_h2]:font-semibold","[&_h3]:mt-3 [&_h3]:mb-1.5 [&_h3]:text-sm [&_h3]:font-semibold","[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2","[&_:not(pre)>code]:rounded [&_:not(pre)>code]:bg-[hsl(var(--muted))] [&_:not(pre)>code]:px-1 [&_:not(pre)>code]:py-0.5 [&_:not(pre)>code]:text-[0.85em]","[&_table]:my-2 [&_table]:w-full [&_table]:border-collapse","[&_th]:border [&_th]:border-[hsl(var(--border))] [&_th]:px-2 [&_th]:py-1 [&_th]:text-left [&_th]:font-semibold","[&_td]:border [&_td]:border-[hsl(var(--border))] [&_td]:px-2 [&_td]:py-1","[&_blockquote]:my-2 [&_blockquote]:border-l-2 [&_blockquote]:border-[hsl(var(--border))] [&_blockquote]:pl-3 [&_blockquote]:text-muted-foreground","[&_hr]:my-3 [&_hr]:border-[hsl(var(--border))]",b),children:(0,d.jsx)(f.Streamdown,{parseIncompleteMarkdown:!0,skipHtml:!0,urlTransform:l,plugins:{code:e.code},components:{pre:h.CodeBlock},controls:{code:!1,table:!1,mermaid:!1},children:a})})}]),c()}catch(a){c(a)}},!1),973570,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(971938),f=a.i(531687),g=a.i(637102),h=a.i(342210),i=a.i(147845),j=a.i(201927),k=a.i(16772),l=a.i(112537),m=a.i(616106),n=a.i(160318),o=a.i(898018),p=a.i(655295),q=a.i(263265),r=a.i(776192),s=a.i(36890),t=a.i(27692),u=a.i(470535),v=a.i(843836),w=a.i(324567),x=a.i(364565),y=a.i(867558),z=a.i(613562),A=b([z]);function B(a){try{let b=document.createElement("textarea");b.value=a,b.style.position="fixed",b.style.opacity="0",document.body.appendChild(b),b.select(),document.execCommand("copy"),document.body.removeChild(b),q.toast.success("已复制")}catch{q.toast.error("复制失败")}}[z]=A.then?(await A)():A;let O=(0,e.memo)(function({message:a,busy:b,onDelete:c,onResend:e,onRegenerate:f,onEditSave:g}){return"user"===a.role?(0,d.jsx)(G,{message:a,busy:b,onDelete:c,onResend:e,onEditSave:g}):(0,d.jsx)(H,{message:a,busy:b,onDelete:c,onRegenerate:f})},(a,b)=>a.message===b.message&&a.busy===b.busy);function C({align:a,disabled:b,onCopy:c,onDelete:e,onEdit:f,onResend:g,onRegenerate:h}){return(0,d.jsxs)("div",{className:(0,x.cn)("mt-1 flex items-center gap-0.5 opacity-0 transition-opacity duration-150","group-hover:opacity-100 group-focus-within:opacity-100","group-data-[touched=true]:opacity-100","right"===a?"justify-end":"justify-start"),children:[(0,d.jsx)(D,{title:"复制",disabled:b,onClick:c,children:(0,d.jsx)(k.Copy,{className:"h-3.5 w-3.5"})}),f&&(0,d.jsx)(D,{title:"编辑",disabled:b,onClick:f,children:(0,d.jsx)(l.Pencil,{className:"h-3.5 w-3.5"})}),g&&(0,d.jsx)(D,{title:"重新发送",disabled:b,onClick:g,children:(0,d.jsx)(o.Send,{className:"h-3.5 w-3.5"})}),h&&(0,d.jsx)(D,{title:"重新生成",disabled:b,onClick:h,children:(0,d.jsx)(m.RotateCcw,{className:"h-3.5 w-3.5"})}),(0,d.jsx)(D,{title:"删除",disabled:b,onClick:e,destructive:!0,children:(0,d.jsx)(p.Trash2,{className:"h-3.5 w-3.5"})})]})}function D({title:a,disabled:b,destructive:c,onClick:e,children:f}){return(0,d.jsx)(r.Button,{type:"button",variant:"ghost",size:"icon",title:a,"aria-label":a,disabled:b,onClick:e,className:(0,x.cn)("h-7 w-7 text-muted-foreground hover:text-foreground",c&&"hover:text-[hsl(var(--destructive))] hover:bg-[hsl(var(--destructive))]/10"),children:f})}function E({rewriteFailed:a,rewriteError:b,failedKbCount:c,failedKbDetails:e}){let f=!!a,g=(c??0)>0;return f||g?(0,d.jsxs)("div",{className:"space-y-1.5",children:[f&&(0,d.jsx)(F,{label:"意图重写失败 · 已回退到原问题",detail:b??"rewriter 返回空结果或抛错"}),g&&e&&(0,d.jsx)(F,{label:`${c} 个知识库检索失败`,detail:e.map(a=>`• ${a.name}: ${a.reason}`).join("\n")})]}):null}function F({label:a,detail:b}){let[c,f]=(0,e.useState)(!1);return(0,d.jsxs)("div",{className:"rounded-md border border-amber-500/30 bg-amber-500/5",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>f(a=>!a),className:(0,x.cn)("flex w-full items-center gap-1.5 px-2 py-1 text-xs","text-amber-700 hover:bg-amber-500/10 dark:text-amber-300"),children:[(0,d.jsx)(g.AlertTriangle,{className:"h-3.5 w-3.5 shrink-0"}),(0,d.jsx)("span",{className:"flex-1 text-left",children:a}),(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 opacity-60 transition-transform duration-150",c&&"rotate-180")})]}),c&&(0,d.jsx)("pre",{className:"border-t border-amber-500/20 px-2 py-1.5 text-[11px] leading-relaxed text-amber-700/80 dark:text-amber-300/80 whitespace-pre-wrap font-mono",children:b})]})}function G({message:a,busy:b,onDelete:c,onResend:f,onEditSave:g}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(a.content),[n,o]=(0,e.useState)(!1),[p,t]=(0,e.useState)(!1),[v,x]=(0,e.useState)(!0),y=(0,e.useCallback)(()=>{if(a.content)try{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a.content).then(()=>q.toast.success("已复制"),()=>{B(a.content)}):B(a.content)}catch{B(a.content)}},[a.content]),z=(0,e.useCallback)(()=>{let b=l.trim();if(!b||b===a.content){k(!1),m(a.content);return}k(!1),g(a.id,b)},[l,a.content,a.id,g]),A=(0,e.useCallback)(()=>{m(a.content),k(!1)},[a.content]),D=(0,e.useCallback)(a=>{"Escape"===a.key?(a.preventDefault(),A()):"Enter"===a.key&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),z())},[z,A]);return(0,d.jsxs)("div",{className:"group flex justify-end","data-touched":h?"true":void 0,onClickCapture:()=>i(!0),children:[(0,d.jsxs)("div",{className:"flex max-w-[85%] flex-col items-end",children:[j?(0,d.jsxs)("div",{className:"w-full max-w-2xl rounded-2xl border border-[hsl(var(--primary))] bg-[hsl(var(--background))] p-2",children:[(0,d.jsx)(u.Textarea,{autoFocus:!0,value:l,onChange:a=>m(a.target.value),onKeyDown:D,className:"min-h-[80px] resize-y border-0 p-2 text-sm shadow-none focus-visible:ring-0"}),(0,d.jsxs)("div",{className:"mt-1 flex justify-end gap-2",children:[(0,d.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:A,children:"取消"}),(0,d.jsx)(r.Button,{type:"button",size:"sm",disabled:!l.trim()||l.trim()===a.content,onClick:z,children:"保存并重发"})]})]}):(0,d.jsx)("div",{className:"rounded-2xl rounded-tr-sm bg-[hsl(var(--muted)/0.7)] px-4 py-2.5 text-sm leading-relaxed text-foreground whitespace-pre-wrap",children:a.content}),!j&&(0,d.jsx)(C,{align:"right",disabled:b,onCopy:y,onEdit:()=>{m(a.content),k(!0)},onResend:()=>t(!0),onDelete:()=>o(!0)})]}),(0,d.jsx)(w.ConfirmDialog,{open:n,onOpenChange:o,title:"删除此消息?",description:"该操作不可撤销。",confirmText:"删除",variant:"danger",onConfirm:()=>{c(a.id,{withNextAssistant:v}),o(!1)},children:(0,d.jsxs)("label",{className:"flex items-center gap-2 text-sm text-foreground",children:[(0,d.jsx)(s.Checkbox,{checked:v,onCheckedChange:a=>x(!0===a)}),"同时删除下方的 AI 回复"]})}),(0,d.jsx)(w.ConfirmDialog,{open:p,onOpenChange:t,title:"重新发送此消息?",description:"将丢弃下方所有消息并重新生成回答。",confirmText:"重新发送",onConfirm:()=>{t(!1),f(a.id)}})]})}function H({message:a,busy:b,onDelete:c,onRegenerate:g}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(!1),o="streaming"===a.status,p="error"===a.status,r=(a.reasoning?.length??0)>0,s=(a.content?.length??0)>0,t=r||o&&!s,u=!!a.usingRag&&!a.retrievalQuery,v=!!a.retrievalQuery&&!a.retrievedChunks,x=(a.retrievalGroups??[]).filter(a=>a.error).map(a=>({name:a.knowledgeBaseName,reason:a.error??""})),y=(0,e.useCallback)(()=>{if(a.content)try{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a.content).then(()=>q.toast.success("已复制"),()=>{B(a.content)}):B(a.content)}catch{B(a.content)}},[a.content]);return(0,d.jsxs)("div",{className:"group space-y-3 text-sm leading-relaxed","data-touched":h?"true":void 0,onClickCapture:()=>i(!0),children:[t?(0,d.jsx)(I,{reasoning:a.reasoning??"",streaming:o,startedAt:a.reasoningStartedAt,completedAt:a.reasoningCompletedAt,intentExtracting:u,retrievalInFlight:v}):null,(0,d.jsx)(E,{rewriteFailed:a.queryRewriteFailed,rewriteError:a.queryRewriteError,failedKbCount:x.length,failedKbDetails:x}),a.retrievalQueryRewritten&&a.retrievalQuery?(0,d.jsxs)("div",{className:"inline-flex max-w-full items-center gap-1.5 rounded-md bg-[hsl(var(--muted)/0.4)] px-2 py-1 text-xs text-muted-foreground",children:[(0,d.jsx)(n.Search,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"font-medium shrink-0",children:"检索关键词:"}),(0,d.jsx)("span",{className:"truncate font-mono text-foreground/80",children:a.retrievalQuery})]}):null,a.retrievedChunks&&a.retrievedChunks.length>0?(0,d.jsx)(J,{chunks:a.retrievedChunks,groups:a.retrievalGroups}):null,a.memoryHits&&a.memoryHits.length>0?(0,d.jsx)(M,{hits:a.memoryHits,query:a.memoryQuery}):null,p?(0,d.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--destructive))/0.3] bg-[hsl(var(--destructive))/0.05] px-3 py-2 text-[hsl(var(--destructive))]",children:[(0,d.jsx)(f.AlertCircle,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,d.jsx)("span",{className:"text-xs",children:a.errorMessage??"生成失败"})]}):(0,d.jsxs)("div",{className:"text-foreground/90",children:[(0,d.jsx)(z.Markdown,{children:a.content}),o?(0,d.jsx)("span",{className:"ml-0.5 inline-block h-3.5 w-1.5 animate-pulse bg-foreground align-baseline"}):null]}),(0,d.jsx)(C,{align:"left",disabled:b||o,onCopy:y,onRegenerate:()=>m(!0),onDelete:()=>k(!0)}),(0,d.jsx)(w.ConfirmDialog,{open:j,onOpenChange:k,title:"删除此回复?",description:"该操作不可撤销。",confirmText:"删除",variant:"danger",onConfirm:()=>{c(a.id),k(!1)}}),(0,d.jsx)(w.ConfirmDialog,{open:l,onOpenChange:m,title:"重新生成此回复?",description:"将丢弃下方所有消息并重新生成。",confirmText:"重新生成",onConfirm:()=>{m(!1),g(a.id)}})]})}function I({reasoning:a,streaming:b,startedAt:c,completedAt:f,intentExtracting:g,retrievalInFlight:h}){var k,l;let m,n,o,[p,q]=(0,e.useState)(!1),r=function(a,b){let[c,d]=(0,e.useState)(()=>Date.now());return((0,e.useEffect)(()=>{if(!a||b)return;let c=window.setInterval(()=>d(Date.now()),250);return()=>window.clearInterval(c)},[a,b]),a)?Math.max(0,(b??c)-a):null}(c,f),s=null!=r?(k=r,l=!b||!!f,m=Math.floor(k/1e3),n=Math.floor(m/60),o=m%60,l?0===n?`用时 ${o} 秒`:`用时 ${n} 分 ${o} 秒`:`${n}:${String(o).padStart(2,"0")}`):null,u=b&&!f,v=a.length>0,w="正在思考";return v?w="深度思考中":h?w="正在检索知识库":g&&(w="检索意图提取"),(0,d.jsxs)(t.Collapsible,{open:p,onOpenChange:q,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",disabled:!v,className:(0,x.cn)("group inline-flex items-center gap-2 rounded-full pl-1.5 pr-2.5 py-1 text-xs font-medium transition-all duration-200",u?"bg-[hsl(var(--primary)/0.08)] text-[hsl(var(--primary))] ring-1 ring-[hsl(var(--primary)/0.25)] shadow-[0_0_0_4px_hsl(var(--primary)/0.06)]":"bg-[hsl(var(--muted)/0.6)] text-muted-foreground hover:bg-[hsl(var(--accent))] hover:text-foreground",!v&&"cursor-default"),"aria-live":u?"polite":"off",children:[(0,d.jsxs)("span",{className:"relative inline-flex h-5 w-5 items-center justify-center",children:[u&&(0,d.jsx)("span",{"aria-hidden":!0,className:"absolute inset-0 rounded-full bg-[hsl(var(--primary))] opacity-40 blur-[6px] animate-thinking-aurora"}),(0,d.jsx)(i.Brain,{className:(0,x.cn)("relative h-3.5 w-3.5",u&&"animate-thinking-icon text-[hsl(var(--primary))]")})]}),u?(0,d.jsx)("span",{className:"animate-text-shimmer bg-[linear-gradient(90deg,hsl(var(--primary)/0.55)_0%,hsl(var(--primary))_50%,hsl(var(--primary)/0.55)_100%)] bg-[length:200%_100%] bg-clip-text text-transparent",children:w}):(0,d.jsx)("span",{children:"已深度思考"}),s&&(0,d.jsxs)("span",{className:(0,x.cn)("tabular-nums text-[11px]",u?"text-[hsl(var(--primary)/0.75)]":"text-muted-foreground/80"),children:["· ",s]}),v&&(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 opacity-60 transition-transform duration-200",p&&"rotate-180",u&&"text-[hsl(var(--primary))]")})]})}),v&&(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 border-l-2 border-[hsl(var(--border))] pl-3 text-xs leading-relaxed text-muted-foreground whitespace-pre-wrap",children:a})})]})}function J({chunks:a,groups:b}){let[c,f]=(0,e.useState)(!1),g=new Map;a.forEach((a,b)=>{g.set(`${a.docId}#${a.chunkId}`,b+1)});let i=(b??[]).filter(a=>!a.error),k=(b??[]).filter(a=>a.error),l=i.length>=2||k.length>0;return(0,d.jsxs)(t.Collapsible,{open:c,onOpenChange:f,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-[hsl(var(--accent))] hover:text-foreground",children:[(0,d.jsx)(h.BookOpen,{className:"h-3.5 w-3.5"}),"查看 ",a.length," 个引用",l?(0,d.jsxs)("span",{className:"text-muted-foreground/70",children:["· ",i.length," 个知识库",k.length>0?`(${k.length} 失败)`:""]}):null,(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 transition-transform duration-200",c&&"rotate-180")})]})}),(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 space-y-3",children:l?(0,d.jsxs)(d.Fragment,{children:[i.map(a=>(0,d.jsx)(K,{group:a,indexByKey:g},`ok-${a.knowledgeBaseName}`)),k.map(a=>(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--destructive))/0.3] bg-[hsl(var(--destructive))/0.05] px-3 py-2 text-xs text-[hsl(var(--destructive))]",children:[(0,d.jsx)("span",{className:"font-medium",children:a.knowledgeBaseName}),(0,d.jsxs)("span",{className:"ml-2 text-[hsl(var(--destructive))/0.8]",children:["检索失败:",a.error]})]},`err-${a.knowledgeBaseName}`))]}):(0,d.jsx)("div",{className:"space-y-2",children:a.map((a,b)=>(0,d.jsx)(L,{chunk:a,index:b+1},`${a.docId}-${a.chunkId}`))})})})]})}function K({group:a,indexByKey:b}){return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs font-medium text-muted-foreground",children:[(0,d.jsx)("span",{className:"text-foreground/80",children:a.knowledgeBaseName}),(0,d.jsxs)("span",{children:["· ",a.chunks.length," 条"]})]}),(0,d.jsx)("div",{className:"space-y-2 border-l-2 border-[hsl(var(--border))] pl-3",children:a.chunks.map(a=>{let c=`${a.docId}#${a.chunkId}`,e=b.get(c)??0;return(0,d.jsx)(L,{chunk:a,index:e},`${a.docId}-${a.chunkId}`)})})]})}function L({chunk:a,index:b}){let[c,f]=(0,e.useState)(null),[g,h]=(0,e.useState)(!1),i=a.ossKey?.split("/").pop()||a.ossKey||"未知文件",j=a.chunkType?.toLowerCase()==="image",k=a.imageBase64?a.imageBase64.startsWith("data:")?a.imageBase64:`${y.IMAGE_FALLBACK_DATA_PREFIX}${a.imageBase64}`:void 0;return(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.3)] p-3",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] font-semibold text-primary",children:b>0?b:"–"}),(0,d.jsx)("span",{className:"font-medium text-foreground/80",children:i}),(0,d.jsxs)("span",{children:["Chunk #",a.chunkId]}),j&&(0,d.jsx)("span",{className:"rounded bg-primary/10 px-1 py-0.5 text-[10px] font-medium text-primary",children:"IMAGE"}),(0,d.jsx)("span",{className:"ml-auto font-mono",children:a.score.toFixed(4)})]}),j&&k&&(0,d.jsx)("img",{src:k,alt:`Image chunk #${a.chunkId}`,className:"mt-2 max-w-[180px] max-h-[180px] object-contain rounded border border-border cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>f(k)}),a.content&&(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("p",{className:(0,x.cn)("whitespace-pre-wrap text-xs text-foreground/80 cursor-pointer",!g&&"line-clamp-4",j&&"mt-2"),onClick:()=>h(a=>!a),children:a.content}),!g&&(0,d.jsx)("div",{className:"pointer-events-none absolute bottom-0 left-0 right-0 h-8 bg-gradient-to-t from-[hsl(var(--muted)/0.3)] to-transparent"}),(0,d.jsx)("button",{type:"button",className:"mt-1 text-[10px] text-muted-foreground hover:text-foreground",onClick:()=>h(a=>!a),children:g?"点击收起":"点击展开"})]}),(0,d.jsx)(v.Dialog,{open:!!c,onOpenChange:()=>f(null),children:(0,d.jsxs)(v.DialogContent,{className:"max-w-[90vw] max-h-[90vh] p-2 flex items-center justify-center border-none bg-black/90 data-[state=open]:animate-none data-[state=closed]:animate-none duration-0",children:[(0,d.jsx)(v.DialogTitle,{className:"sr-only",children:"图片放大预览"}),c&&(0,d.jsx)("img",{src:c,alt:"放大预览",className:"max-w-full max-h-[85vh] object-contain"})]})})]})}function M({hits:a,query:b}){let[c,f]=(0,e.useState)(!1);return(0,d.jsxs)(t.Collapsible,{open:c,onOpenChange:f,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-[hsl(var(--accent))] hover:text-foreground",children:[(0,d.jsx)(i.Brain,{className:"h-3.5 w-3.5"}),"参考 ",a.length," 条记忆",b?(0,d.jsxs)("span",{className:"max-w-[200px] truncate text-muted-foreground/70",children:["· ",b]}):null,(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 transition-transform duration-200",c&&"rotate-180")})]})}),(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 space-y-2",children:a.map((a,b)=>(0,d.jsx)(N,{hit:a,index:b+1},a.unit.memcell_id??`${b}-${(a.unit.text??"").slice(0,16)}`))})})]})}function N({hit:a,index:b}){let c=a.unit.memcell_id,e="number"==typeof a.score?a.score:void 0;return(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.3)] p-3",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] font-semibold text-primary",children:b}),c?(0,d.jsx)("span",{className:"min-w-0 truncate font-mono text-foreground/80",title:c,children:c}):(0,d.jsx)("span",{className:"text-muted-foreground/70",children:"未命名记忆"}),a.source?(0,d.jsx)("span",{className:"rounded bg-[hsl(var(--muted))] px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:a.source}):null,(0,d.jsx)("span",{className:"ml-auto shrink-0 font-mono",children:void 0!==e?e.toFixed(4):"—"})]}),(0,d.jsx)("p",{className:"line-clamp-4 whitespace-pre-wrap text-xs text-foreground/80",children:a.unit.text})]})}O.displayName="QaMessage",a.s(["QaMessage",0,O]),c()}catch(a){c(a)}},!1),957900,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(971938),f=a.i(688189),g=a.i(898018),h=a.i(431710),i=a.i(776192),j=a.i(470535),k=a.i(310215),l=a.i(364565),m=a.i(973570),n=b([m]);[m]=n.then?(await n)():n,a.s(["QaChatPanel",0,function({messages:a,isStreaming:b,canSend:c,error:n,onSend:o,onStop:p,onDelete:q,onResend:r,onRegenerate:s,onEditSave:t,emptyState:u,disabledPlaceholder:v}){let[w,x]=(0,e.useState)(""),y=(0,e.useRef)(null),z=(0,e.useRef)(a.length);(0,e.useEffect)(()=>{let b=y.current;if(!b)return;let c=a.length>z.current;(z.current=a.length,c)?requestAnimationFrame(()=>{b.scrollTo({top:b.scrollHeight,behavior:"smooth"})}):b.scrollHeight-b.scrollTop-b.clientHeight<120&&b.scrollTo({top:b.scrollHeight,behavior:"smooth"})},[a]);let A=()=>{let a=w.trim();a&&c&&!b&&(o(a),x(""))};return(0,d.jsxs)("div",{className:"flex h-full min-h-0 flex-1 flex-col bg-[hsl(var(--card))]",children:[(0,d.jsx)("div",{ref:y,role:"log","aria-live":"polite","aria-relevant":"additions text","aria-busy":b,className:"flex-1 space-y-6 overflow-y-auto px-6 py-5",children:0===a.length?(0,d.jsx)("div",{className:"flex h-full min-h-[320px] items-center justify-center",children:(0,d.jsx)(k.EmptyState,{icon:f.MessageSquare,title:u?.title??"开始对话",description:u?.description??"输入问题,系统会先从知识库检索相关内容,再让大模型基于检索结果回答",action:u?.actionLabel&&u?.onAction?(0,d.jsx)(i.Button,{type:"button",onClick:u.onAction,children:u.actionLabel}):void 0})}):a.map(a=>(0,d.jsx)(m.QaMessage,{message:a,busy:b,onDelete:q,onResend:r,onRegenerate:s,onEditSave:t},a.id))}),(0,d.jsxs)("div",{className:"border-t border-[hsl(var(--border))] bg-[hsl(var(--surface)/0.6)] px-4 py-3",children:[n&&(0,d.jsx)("p",{className:"mb-2 text-xs text-[hsl(var(--destructive))]",children:n}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsx)(j.Textarea,{value:w,onChange:a=>x(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),A())},placeholder:c?"输入问题,Enter 发送,Shift+Enter 换行":v??"请先在左侧选择模型...",disabled:!c,className:(0,l.cn)("min-h-[44px] max-h-40 resize-none text-sm"),rows:1}),b?(0,d.jsx)(i.Button,{type:"button",variant:"outline",size:"icon",onClick:p,title:"停止",children:(0,d.jsx)(h.Square,{className:"h-4 w-4 fill-current"})}):(0,d.jsx)(i.Button,{type:"button",size:"icon",disabled:!c||!w.trim(),onClick:A,title:"发送",children:(0,d.jsx)(g.Send,{className:"h-4 w-4"})})]})]})]})}]),c()}catch(a){c(a)}},!1),464363,832191,987951,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(53520),e=a.i(882725),f=a.i(881619),g=a.i(25825),h=a.i(968826),i=a.i(776192),j=a.i(455553),k=a.i(962491),l=a.i(84252),m=a.i(663525),n=a.i(664209),o=a.i(983366),p=a.i(883917),q=a.i(225377),r=a.i(739096),s=a.i(364565);function t({value:a,options:f,onChange:h,disabled:k,fetching:m}){let[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(""),r=p.trim(),u=(0,c.useMemo)(()=>{if(!r)return f;let a=r.toLowerCase();return f.filter(b=>b.toLowerCase().includes(a))},[f,r]),v=f.some(a=>a.toLowerCase()===r.toLowerCase()),w=r.length>0&&!v,x=a=>{h(a),q(""),o(!1)};return(0,b.jsxs)(l.Popover,{open:n,onOpenChange:o,children:[(0,b.jsx)(l.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(i.Button,{type:"button",variant:"outline",role:"combobox","aria-expanded":n,disabled:k,className:"w-full justify-between font-normal",children:[(0,b.jsx)("span",{className:(0,s.cn)("truncate text-left",!a&&"text-[hsl(var(--subtle))]"),children:a||"选择或输入模型名"}),(0,b.jsx)(e.ChevronsUpDown,{className:"h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(l.PopoverContent,{align:"start",className:"w-[var(--radix-popover-trigger-width)] p-0",children:(0,b.jsxs)(j.Command,{shouldFilter:!1,children:[(0,b.jsx)(j.CommandInput,{placeholder:"搜索或输入模型名",value:p,onValueChange:q}),(0,b.jsxs)(j.CommandList,{children:[0!==u.length||w?null:(0,b.jsx)(j.CommandEmpty,{children:m?"正在拉取模型列表...":0===f.length?"点击「刷新列表」拉取可用模型":"无匹配结果"}),u.length>0&&(0,b.jsx)(j.CommandGroup,{heading:w?"可选模型":void 0,children:u.map(c=>(0,b.jsxs)(j.CommandItem,{value:c,onSelect:()=>x(c),children:[(0,b.jsx)(d.Check,{className:(0,s.cn)("h-4 w-4",a===c?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"truncate",children:c})]},c))}),w&&(0,b.jsx)(j.CommandGroup,{heading:"使用自定义",children:(0,b.jsxs)(j.CommandItem,{value:`__custom__${r}`,onSelect:()=>x(r),children:[(0,b.jsx)(g.Plus,{className:"h-4 w-4 text-[hsl(var(--primary))]"}),(0,b.jsxs)("span",{className:"truncate",children:['使用 "',r,'"']})]})})]})]})})]})}a.s(["LLMModelSelector",0,function({providerId:a,model:d,onProviderChange:e,onModelChange:g,autoSelectFirst:j=!1,providerLabel:l="Provider",modelLabel:s="Model"}){let{data:u=[],isLoading:v}=(0,n.useLLMProviders)(),{data:w,isFetching:x,refetch:y}=function(a,b={}){let{context:c,ready:d}=(0,r.useRuntimeContext)();return(0,o.useQuery)({queryKey:q.queryKeys.llmProviderModels(c.dataScopeKey,a),queryFn:()=>(0,p.fetchProviderModels)(a),enabled:d&&!!a&&(b.enabled??!0),staleTime:3e5,retry:!1})}(a||void 0,{enabled:!!a});(0,c.useEffect)(()=>{if(!j||a||0===u.length)return;let b=u[0];e(b.id,b.defaultModel??"")},[j,a,u]);let z=(0,c.useMemo)(()=>{let b=new Set;for(let a of(d&&b.add(d),w??[]))b.add(a.id);let c=u.find(b=>b.id===a);return c?.defaultModel&&b.add(c.defaultModel),Array.from(b)},[d,w,u,a]);return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:l}),(0,b.jsxs)(m.Select,{value:a,onValueChange:a=>{let b=u.find(b=>b.id===a);e(a,b?.defaultModel??"")},disabled:v||0===u.length,children:[(0,b.jsx)(m.SelectTrigger,{children:(0,b.jsx)(m.SelectValue,{placeholder:v?"加载中...":0===u.length?"请先在「模型提供商」中创建配置":"选择 Provider"})}),(0,b.jsx)(m.SelectContent,{children:u.map(a=>(0,b.jsx)(m.SelectItem,{value:a.id,children:a.name},a.id))})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:s}),(0,b.jsxs)(i.Button,{type:"button",variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",disabled:!a||x,onClick:()=>y(),children:[x?(0,b.jsx)(f.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}):(0,b.jsx)(h.RefreshCw,{className:"mr-1 h-3 w-3"}),"刷新列表"]})]}),(0,b.jsx)(t,{value:d,options:z,onChange:g,disabled:!a,fetching:x})]})]})}],464363);var u=a.i(470535);a.s(["SystemPromptInput",0,function({value:a,onChange:c,placeholder:d,helperText:e,rows:f=3,label:g="系统提示词"}){return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:g}),(0,b.jsx)(u.Textarea,{rows:f,value:a,onChange:a=>c(a.target.value),placeholder:d,className:"text-sm"}),e&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:e})]})}],832191);var v=a.i(350681);a.s(["TemperatureSlider",0,function({value:a,onChange:c,min:d=0,max:e=2,step:f=.05,fallback:g=.7,label:h="温度"}){let i=(a??g).toFixed(2);return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:h}),(0,b.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:i})]}),(0,b.jsx)(v.Slider,{value:[a??g],min:d,max:e,step:f,onValueChange:a=>c(a[0]??g)})]})}],987951)},582424,a=>{"use strict";var b=a.i(739096);a.s(["useActiveInstance",0,function(){let{context:a,ready:c}=(0,b.useRuntimeContext)();return{activeInstance:a.activeInstance,ready:c,dataScopeKey:a.dataScopeKey,configRevision:a.configRevision}}])},383643,a=>{"use strict";a.s(["newId",0,function(a="id"){return"u">typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():`${a}_${Date.now()}_${Math.random().toString(36).slice(2)}`}])},776446,a=>{"use strict";a.s(["findUserAnchorAbove",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return null;for(let b=c-1;b>=0;b-=1)if("user"===a[b].role)return a[b];return null},"removeAt",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return a;let d=a.slice();return d.splice(c,1),d},"removePair",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return a;let d=a.slice(),e=a[c+1]&&"assistant"===a[c+1].role?2:1;return d.splice(c,e),d},"truncateUpToAndIncluding",0,function(a,b){let c=a.findIndex(a=>a.id===b);return c<0?a:a.slice(0,c+1)}])},409135,a=>{"use strict";var b=a.i(971938);async function*c(a,b){let c=await fetch("/api/v1/llm/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:b});if(!c.ok||!c.body){let a=`Chat request failed with status ${c.status}`,b="STREAM_ERROR";try{let d=await c.json();a=d.message??a,b=d.code??b}catch{}yield{type:"error",code:b,message:a};return}let e=c.body.getReader(),f=new TextDecoder("utf-8"),g="";for(;;){let{value:a,done:b}=await e.read();if(b)break;let c=(g+=f.decode(a,{stream:!0})).indexOf("\n\n");for(;-1!==c;){let a=g.slice(0,c);g=g.slice(c+2);let b=d(a);b&&(yield b),c=g.indexOf("\n\n")}}if(g.trim()){let a=d(g);a&&(yield a)}}function d(a){let b=a.split("\n"),c=[];for(let a of b)!(!a||a.startsWith(":"))&&a.startsWith("data:")&&c.push(a.slice(5).trimStart());if(0===c.length)return null;try{return JSON.parse(c.join("\n"))}catch{return null}}var e=a.i(383643),f=a.i(776446);a.s(["useQaChat",0,function(a){let[d,g]=(0,b.useState)([]),[h,i]=(0,b.useState)(!1),[j,k]=(0,b.useState)(null),l=(0,b.useRef)(null),m=(0,b.useRef)(a.onPersist);m.current=a.onPersist;let n=(0,b.useRef)(d);n.current=d;let o=(0,b.useRef)(a);o.current=a;let p=(0,b.useRef)(h);p.current=h;let q=(0,b.useRef)(new Map),r=(0,b.useRef)(null),s=(0,b.useCallback)(()=>{r.current=null;let a=q.current;if(0===a.size)return;let b=new Map(a);a.clear(),g(a=>a.map(a=>{let c=b.get(a.id);return c?{...a,...c.content?{content:a.content+c.content}:null,...c.reasoning?{reasoning:(a.reasoning??"")+c.reasoning}:null}:a}))},[]),t=(0,b.useCallback)(()=>{if(null===r.current){if("u"<typeof requestAnimationFrame)return void s();r.current=requestAnimationFrame(s)}},[s]),u=(0,b.useCallback)(()=>{null!==r.current&&"u">typeof cancelAnimationFrame&&cancelAnimationFrame(r.current),r.current=null},[]);(0,b.useEffect)(()=>u,[u]);let v=(0,b.useCallback)(()=>{l.current?.abort()},[]),w=(0,b.useCallback)(()=>{l.current?.abort(),n.current=[],g([]),k(null)},[]),x=(0,b.useCallback)(a=>{l.current?.abort(),n.current=a,g(a),k(null)},[]),y=(0,b.useCallback)(async(a,b,d)=>{let e=o.current,f=new AbortController;l.current=f;let h={current:!1},j={current:!1},p=b=>{g(c=>c.map(c=>c.id===a?{...c,...b}:c))};try{let g={activeInstance:e.activeInstance,providerId:e.providerId,model:e.model,messages:b,systemPrompt:e.systemPrompt,temperature:e.temperature,rag:e.rag,...e.memory?{memory:{...e.memory,turnId:d}}:{}};for await(let b of c(g,f.signal))if("query.rewritten"===b.type)p({retrievalQuery:b.query,retrievalQueryRewritten:b.query!==b.original});else if("query.fallback"===b.type)p({retrievalQuery:b.original,retrievalQueryRewritten:!1,queryRewriteFailed:!0,queryRewriteError:b.reason});else if("retrieval.done"===b.type)p({retrievedChunks:b.chunks,retrievalGroups:b.byKnowledgeBase});else if("memory.start"===b.type)p({memoryQuery:b.query});else if("memory.done"===b.type)p({memoryHits:b.hits});else if("memory.save.skipped"===b.type)console.warn("[chat] memory.save.skipped:",b.reason);else if("reasoning.delta"===b.type){let c=q.current.get(a)??{};c.reasoning=(c.reasoning??"")+b.delta,q.current.set(a,c),h.current||(h.current=!0,p({reasoningStartedAt:Date.now()})),t()}else if("content.delta"===b.type){let c=q.current.get(a)??{};c.content=(c.content??"")+b.delta,q.current.set(a,c),h.current&&!j.current&&(j.current=!0,p({reasoningCompletedAt:Date.now()})),t()}else if("error"===b.type){u(),s();let a={status:"error",errorMessage:`${b.code}: ${b.message}`};h.current&&!j.current&&(a.reasoningCompletedAt=Date.now()),p(a),k(b.message);break}else if("done"===b.type){u(),s();let a={status:"done"};h.current&&!j.current&&(a.reasoningCompletedAt=Date.now()),p(a);break}}catch(c){u(),s();let a=c instanceof DOMException&&"AbortError"===c.name,b=h.current&&!j.current?{reasoningCompletedAt:Date.now()}:void 0;if(a)p({status:"done",...b});else{let a=c instanceof Error?c.message:String(c);p({status:"error",errorMessage:a,...b}),k(a)}}finally{i(!1),l.current=null;let a=m.current;a&&a(n.current)}},[t,s,u]),z=(0,b.useCallback)(async a=>{let b=a.trim();if(!b||p.current)return;let c=o.current;if(!c.providerId||!c.model)return void k("请先选择模型与 Provider");k(null);let d=(0,e.newId)("turn"),f={id:(0,e.newId)(),role:"user",content:b,createdAt:Date.now(),status:"done",turnId:d},h=(0,e.newId)(),j=(c.rag?.knowledgeBases?.length??0)>0,l={id:h,role:"assistant",content:"",reasoning:"",createdAt:Date.now(),status:"streaming",usingRag:j},m=[...n.current,f].map(a=>({role:a.role,content:a.content})),q=[...n.current,f,l];n.current=q,g(q),i(!0),await y(h,m,d)},[y]),A=(0,b.useCallback)(async a=>{if(p.current)return;let b=o.current;if(!b.providerId||!b.model)return void k("请先选择模型与 Provider");let c=(0,f.truncateUpToAndIncluding)(n.current,a),d=c[c.length-1];if(!d||"user"!==d.role)return;let h=d.turnId??(0,e.newId)("turn");if(!d.turnId){let a=c.length-1;c[a]={...d,turnId:h}}k(null);let j=(0,e.newId)(),l=(b.rag?.knowledgeBases?.length??0)>0,m={id:j,role:"assistant",content:"",reasoning:"",createdAt:Date.now(),status:"streaming",usingRag:l},q=c.map(a=>({role:a.role,content:a.content})),r=[...c,m];n.current=r,g(r),i(!0),await y(j,q,h)},[y]);return{messages:d,isStreaming:h,error:j,send:z,reissueTurn:A,deleteMessage:(0,b.useCallback)((a,b)=>{if(p.current)return;let c=n.current,d=c.find(b=>b.id===a);if(!d)return;let e="user"===d.role&&b?.withNextAssistant?(0,f.removePair)(c,a):(0,f.removeAt)(c,a);n.current=e,g(e),m.current?.(e)},[]),editUserMessage:(0,b.useCallback)((a,b)=>{let c=n.current,d=c.findIndex(b=>b.id===a);if(d<0||"user"!==c[d].role)return null;let e=c.slice();return e[d]={...c[d],content:b},n.current=e,g(e),a},[]),stop:v,clear:w,setMessages:x}}],409135)}];
|
|
1
|
+
module.exports=[898018,a=>{"use strict";let b=(0,a.i(750053).default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);a.s(["Send",0,b],898018)},431710,a=>{"use strict";let b=(0,a.i(750053).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);a.s(["Square",0,b],431710)},531687,a=>{"use strict";let b=(0,a.i(750053).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",0,b],531687)},542216,a=>a.a(async(b,c)=>{try{let b=await a.y("shiki-2963fa3a20578463");a.n(b),c()}catch(a){c(a)}},!0),23195,a=>a.a(async(b,c)=>{try{let b=await a.y("shiki-2963fa3a20578463/engine/javascript");a.n(b),c()}catch(a){c(a)}},!0),828778,a=>a.a(async(b,c)=>{try{var d=a.i(542216),e=a.i(23195),f=b([d,e]);[d,e]=f.then?(await f)():f;var g=(0,e.createJavaScriptRegexEngine)({forgiving:!0}),h=Object.fromEntries(d.bundledLanguagesInfo.flatMap(a=>{var b;return(null!=(b=a.aliases)?b:[]).map(b=>[b,a.id])})),i=new Set(Object.keys(d.bundledLanguages)),j=a=>{let b=a.trim().toLowerCase();return h[b]||(i.has(b),b)},k=new Map,l=new Map,m=new Map,n=a=>{var b;return"string"==typeof a?a:null!=(b=a.name)?b:"custom"},o=function(a={}){var b;let c=null!=(b=a.themes)?b:["github-light","github-dark"];return{name:"shiki",type:"code-highlighter",supportsLanguage(a){let b=j(a);return i.has(b)},getSupportedLanguages:()=>Array.from(i),getThemes:()=>c,highlight({code:a,language:b,themes:c},e){let f,h,o=j(b),p=[n(c[0]),n(c[1])],q=(f=a.slice(0,100),h=a.length>100?a.slice(-100):"",`${o}:${p[0]}:${p[1]}:${a.length}:${f}:${h}`);if(l.has(q))return l.get(q);e&&(m.has(q)||m.set(q,new Set),m.get(q).add(e));let r=i.has(o)?o:"text";return((a,b)=>{let c=`${a}-${n(b[0])}-${n(b[1])}`;if(k.has(c))return k.get(c);let e=(0,d.createHighlighter)({themes:b,langs:[a],engine:g});return k.set(c,e),e})(r,c).then(b=>{let c=b.getLoadedLanguages().includes(o)?o:"text",d=b.codeToTokens(a,{lang:c,themes:{light:p[0],dark:p[1]}});l.set(q,d);let e=m.get(q);if(e){for(let a of e)a(d);m.delete(q)}}).catch(a=>{console.error("[Streamdown Code] Failed to highlight code:",a),m.delete(q)}),null}}}();a.s(["code",0,o]),c()}catch(a){c(a)}},!1),626925,a=>{"use strict";a.i(702617),a.s([])},946400,a=>{"use strict";var b=a.i(702617);a.s(["Streamdown",()=>b.C])},693280,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(53520),e=a.i(16772),f=a.i(364565);a.s(["CodeBlock",0,function({className:a,children:g,node:h,...i}){let j=(0,c.useRef)(null),[k,l]=(0,c.useState)(!1),m=function(a){for(let b of c.Children.toArray(a)){if(!(0,c.isValidElement)(b))continue;let a=b.props;if("string"!=typeof a?.className)continue;let d=a.className.match(/language-([a-z0-9+#-]+)/i);if(d)return d[1]}}(g)??"",n=(0,c.useCallback)(async()=>{let a=j.current?.innerText??"";if(a)try{await navigator.clipboard.writeText(a),l(!0),window.setTimeout(()=>l(!1),2e3)}catch{}},[]);return(0,b.jsxs)("div",{className:"group relative my-2 overflow-hidden rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.5)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.8)] px-3 py-1.5",children:[(0,b.jsx)("span",{className:"font-mono text-[11px] uppercase tracking-wide text-muted-foreground",children:m||"text"}),(0,b.jsx)("button",{type:"button",onClick:n,className:(0,f.cn)("inline-flex items-center gap-1 rounded px-2 py-0.5 text-[11px] text-muted-foreground","opacity-0 transition-opacity hover:bg-[hsl(var(--accent))] hover:text-foreground","group-hover:opacity-100 focus-visible:opacity-100",k&&"opacity-100 text-primary"),"aria-label":"复制代码",children:k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),"已复制"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.Copy,{className:"h-3 w-3"}),"复制"]})})]}),(0,b.jsx)("pre",{ref:j,className:(0,f.cn)("overflow-x-auto p-3 text-xs leading-relaxed","[&_code]:bg-transparent [&_code]:p-0",a),...i,children:g})]})}])},613562,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(828778);a.i(626925);var f=a.i(946400),g=a.i(364565),h=a.i(693280),i=b([e]);[e]=i.then?(await i)():i;let j=["https://","http://","mailto:","#","/"],k=["https://","data:image/"],l=(a,b)=>{let c=a.toLowerCase();return("src"===b?k:j).some(a=>c.startsWith(a))?a:""};a.s(["Markdown",0,function({children:a,className:b}){return(0,d.jsx)("div",{className:(0,g.cn)("text-sm leading-relaxed text-foreground/90","[&_p]:my-2 [&_ul]:my-2 [&_ol]:my-2 [&_li]:my-0.5","[&_ul]:list-disc [&_ul]:pl-5 [&_ol]:list-decimal [&_ol]:pl-5","[&_h1]:mt-4 [&_h1]:mb-2 [&_h1]:text-lg [&_h1]:font-semibold","[&_h2]:mt-3 [&_h2]:mb-2 [&_h2]:text-base [&_h2]:font-semibold","[&_h3]:mt-3 [&_h3]:mb-1.5 [&_h3]:text-sm [&_h3]:font-semibold","[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2","[&_:not(pre)>code]:rounded [&_:not(pre)>code]:bg-[hsl(var(--muted))] [&_:not(pre)>code]:px-1 [&_:not(pre)>code]:py-0.5 [&_:not(pre)>code]:text-[0.85em]","[&_table]:my-2 [&_table]:w-full [&_table]:border-collapse","[&_th]:border [&_th]:border-[hsl(var(--border))] [&_th]:px-2 [&_th]:py-1 [&_th]:text-left [&_th]:font-semibold","[&_td]:border [&_td]:border-[hsl(var(--border))] [&_td]:px-2 [&_td]:py-1","[&_blockquote]:my-2 [&_blockquote]:border-l-2 [&_blockquote]:border-[hsl(var(--border))] [&_blockquote]:pl-3 [&_blockquote]:text-muted-foreground","[&_hr]:my-3 [&_hr]:border-[hsl(var(--border))]",b),children:(0,d.jsx)(f.Streamdown,{parseIncompleteMarkdown:!0,skipHtml:!0,urlTransform:l,plugins:{code:e.code},components:{pre:h.CodeBlock},controls:{code:!1,table:!1,mermaid:!1},children:a})})}]),c()}catch(a){c(a)}},!1),973570,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(971938),f=a.i(531687),g=a.i(637102),h=a.i(342210),i=a.i(147845),j=a.i(201927),k=a.i(16772),l=a.i(112537),m=a.i(616106),n=a.i(160318),o=a.i(898018),p=a.i(655295),q=a.i(263265),r=a.i(776192),s=a.i(36890),t=a.i(27692),u=a.i(470535),v=a.i(843836),w=a.i(324567),x=a.i(364565),y=a.i(867558),z=a.i(613562),A=b([z]);function B(a){try{let b=document.createElement("textarea");b.value=a,b.style.position="fixed",b.style.opacity="0",document.body.appendChild(b),b.select(),document.execCommand("copy"),document.body.removeChild(b),q.toast.success("已复制")}catch{q.toast.error("复制失败")}}[z]=A.then?(await A)():A;let O=(0,e.memo)(function({message:a,busy:b,onDelete:c,onResend:e,onRegenerate:f,onEditSave:g}){return"user"===a.role?(0,d.jsx)(G,{message:a,busy:b,onDelete:c,onResend:e,onEditSave:g}):(0,d.jsx)(H,{message:a,busy:b,onDelete:c,onRegenerate:f})},(a,b)=>a.message===b.message&&a.busy===b.busy);function C({align:a,disabled:b,onCopy:c,onDelete:e,onEdit:f,onResend:g,onRegenerate:h}){return(0,d.jsxs)("div",{className:(0,x.cn)("mt-1 flex items-center gap-0.5 opacity-0 transition-opacity duration-150","group-hover:opacity-100 group-focus-within:opacity-100","group-data-[touched=true]:opacity-100","right"===a?"justify-end":"justify-start"),children:[(0,d.jsx)(D,{title:"复制",disabled:b,onClick:c,children:(0,d.jsx)(k.Copy,{className:"h-3.5 w-3.5"})}),f&&(0,d.jsx)(D,{title:"编辑",disabled:b,onClick:f,children:(0,d.jsx)(l.Pencil,{className:"h-3.5 w-3.5"})}),g&&(0,d.jsx)(D,{title:"重新发送",disabled:b,onClick:g,children:(0,d.jsx)(o.Send,{className:"h-3.5 w-3.5"})}),h&&(0,d.jsx)(D,{title:"重新生成",disabled:b,onClick:h,children:(0,d.jsx)(m.RotateCcw,{className:"h-3.5 w-3.5"})}),(0,d.jsx)(D,{title:"删除",disabled:b,onClick:e,destructive:!0,children:(0,d.jsx)(p.Trash2,{className:"h-3.5 w-3.5"})})]})}function D({title:a,disabled:b,destructive:c,onClick:e,children:f}){return(0,d.jsx)(r.Button,{type:"button",variant:"ghost",size:"icon",title:a,"aria-label":a,disabled:b,onClick:e,className:(0,x.cn)("h-7 w-7 text-muted-foreground hover:text-foreground",c&&"hover:text-[hsl(var(--destructive))] hover:bg-[hsl(var(--destructive))]/10"),children:f})}function E({rewriteFailed:a,rewriteError:b,failedKbCount:c,failedKbDetails:e}){let f=!!a,g=(c??0)>0;return f||g?(0,d.jsxs)("div",{className:"space-y-1.5",children:[f&&(0,d.jsx)(F,{label:"意图重写失败 · 已回退到原问题",detail:b??"rewriter 返回空结果或抛错"}),g&&e&&(0,d.jsx)(F,{label:`${c} 个知识库检索失败`,detail:e.map(a=>`• ${a.name}: ${a.reason}`).join("\n")})]}):null}function F({label:a,detail:b}){let[c,f]=(0,e.useState)(!1);return(0,d.jsxs)("div",{className:"rounded-md border border-amber-500/30 bg-amber-500/5",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>f(a=>!a),className:(0,x.cn)("flex w-full items-center gap-1.5 px-2 py-1 text-xs","text-amber-700 hover:bg-amber-500/10 dark:text-amber-300"),children:[(0,d.jsx)(g.AlertTriangle,{className:"h-3.5 w-3.5 shrink-0"}),(0,d.jsx)("span",{className:"flex-1 text-left",children:a}),(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 opacity-60 transition-transform duration-150",c&&"rotate-180")})]}),c&&(0,d.jsx)("pre",{className:"border-t border-amber-500/20 px-2 py-1.5 text-[11px] leading-relaxed text-amber-700/80 dark:text-amber-300/80 whitespace-pre-wrap font-mono",children:b})]})}function G({message:a,busy:b,onDelete:c,onResend:f,onEditSave:g}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(a.content),[n,o]=(0,e.useState)(!1),[p,t]=(0,e.useState)(!1),[v,x]=(0,e.useState)(!0),y=(0,e.useCallback)(()=>{if(a.content)try{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a.content).then(()=>q.toast.success("已复制"),()=>{B(a.content)}):B(a.content)}catch{B(a.content)}},[a.content]),z=(0,e.useCallback)(()=>{let b=l.trim();if(!b||b===a.content){k(!1),m(a.content);return}k(!1),g(a.id,b)},[l,a.content,a.id,g]),A=(0,e.useCallback)(()=>{m(a.content),k(!1)},[a.content]),D=(0,e.useCallback)(a=>{"Escape"===a.key?(a.preventDefault(),A()):"Enter"===a.key&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),z())},[z,A]);return(0,d.jsxs)("div",{className:"group flex justify-end","data-touched":h?"true":void 0,onClickCapture:()=>i(!0),children:[(0,d.jsxs)("div",{className:"flex max-w-[85%] flex-col items-end",children:[j?(0,d.jsxs)("div",{className:"w-full max-w-2xl rounded-2xl border border-[hsl(var(--primary))] bg-[hsl(var(--background))] p-2",children:[(0,d.jsx)(u.Textarea,{autoFocus:!0,value:l,onChange:a=>m(a.target.value),onKeyDown:D,className:"min-h-[80px] resize-y border-0 p-2 text-sm shadow-none focus-visible:ring-0"}),(0,d.jsxs)("div",{className:"mt-1 flex justify-end gap-2",children:[(0,d.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:A,children:"取消"}),(0,d.jsx)(r.Button,{type:"button",size:"sm",disabled:!l.trim()||l.trim()===a.content,onClick:z,children:"保存并重发"})]})]}):(0,d.jsx)("div",{className:"rounded-2xl rounded-tr-sm bg-[hsl(var(--muted)/0.7)] px-4 py-2.5 text-sm leading-relaxed text-foreground whitespace-pre-wrap",children:a.content}),!j&&(0,d.jsx)(C,{align:"right",disabled:b,onCopy:y,onEdit:()=>{m(a.content),k(!0)},onResend:()=>t(!0),onDelete:()=>o(!0)})]}),(0,d.jsx)(w.ConfirmDialog,{open:n,onOpenChange:o,title:"删除此消息?",description:"该操作不可撤销。",confirmText:"删除",variant:"danger",onConfirm:()=>{c(a.id,{withNextAssistant:v}),o(!1)},children:(0,d.jsxs)("label",{className:"flex items-center gap-2 text-sm text-foreground",children:[(0,d.jsx)(s.Checkbox,{checked:v,onCheckedChange:a=>x(!0===a)}),"同时删除下方的 AI 回复"]})}),(0,d.jsx)(w.ConfirmDialog,{open:p,onOpenChange:t,title:"重新发送此消息?",description:"将丢弃下方所有消息并重新生成回答。",confirmText:"重新发送",onConfirm:()=>{t(!1),f(a.id)}})]})}function H({message:a,busy:b,onDelete:c,onRegenerate:g}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(!1),o="streaming"===a.status,p="error"===a.status,r=(a.reasoning?.length??0)>0,s=(a.content?.length??0)>0,t=r||o&&!s,u=!!a.usingRag&&!a.retrievalQuery,v=!!a.retrievalQuery&&!a.retrievedChunks,x=(a.retrievalGroups??[]).filter(a=>a.error).map(a=>({name:a.knowledgeBaseName,reason:a.error??""})),y=(0,e.useCallback)(()=>{if(a.content)try{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a.content).then(()=>q.toast.success("已复制"),()=>{B(a.content)}):B(a.content)}catch{B(a.content)}},[a.content]);return(0,d.jsxs)("div",{className:"group space-y-3 text-sm leading-relaxed","data-touched":h?"true":void 0,onClickCapture:()=>i(!0),children:[t?(0,d.jsx)(I,{reasoning:a.reasoning??"",streaming:o,startedAt:a.reasoningStartedAt,completedAt:a.reasoningCompletedAt,intentExtracting:u,retrievalInFlight:v}):null,(0,d.jsx)(E,{rewriteFailed:a.queryRewriteFailed,rewriteError:a.queryRewriteError,failedKbCount:x.length,failedKbDetails:x}),a.retrievalQueryRewritten&&a.retrievalQuery?(0,d.jsxs)("div",{className:"inline-flex max-w-full items-center gap-1.5 rounded-md bg-[hsl(var(--muted)/0.4)] px-2 py-1 text-xs text-muted-foreground",children:[(0,d.jsx)(n.Search,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"font-medium shrink-0",children:"检索关键词:"}),(0,d.jsx)("span",{className:"truncate font-mono text-foreground/80",children:a.retrievalQuery})]}):null,a.retrievedChunks&&a.retrievedChunks.length>0?(0,d.jsx)(J,{chunks:a.retrievedChunks,groups:a.retrievalGroups}):null,a.memoryHits&&a.memoryHits.length>0?(0,d.jsx)(M,{hits:a.memoryHits,query:a.memoryQuery}):null,p?(0,d.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--destructive))/0.3] bg-[hsl(var(--destructive))/0.05] px-3 py-2 text-[hsl(var(--destructive))]",children:[(0,d.jsx)(f.AlertCircle,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,d.jsx)("span",{className:"text-xs",children:a.errorMessage??"生成失败"})]}):(0,d.jsxs)("div",{className:"text-foreground/90",children:[(0,d.jsx)(z.Markdown,{children:a.content}),o?(0,d.jsx)("span",{className:"ml-0.5 inline-block h-3.5 w-1.5 animate-pulse bg-foreground align-baseline"}):null]}),(0,d.jsx)(C,{align:"left",disabled:b||o,onCopy:y,onRegenerate:()=>m(!0),onDelete:()=>k(!0)}),(0,d.jsx)(w.ConfirmDialog,{open:j,onOpenChange:k,title:"删除此回复?",description:"该操作不可撤销。",confirmText:"删除",variant:"danger",onConfirm:()=>{c(a.id),k(!1)}}),(0,d.jsx)(w.ConfirmDialog,{open:l,onOpenChange:m,title:"重新生成此回复?",description:"将丢弃下方所有消息并重新生成。",confirmText:"重新生成",onConfirm:()=>{m(!1),g(a.id)}})]})}function I({reasoning:a,streaming:b,startedAt:c,completedAt:f,intentExtracting:g,retrievalInFlight:h}){var k,l;let m,n,o,[p,q]=(0,e.useState)(!1),r=function(a,b){let[c,d]=(0,e.useState)(()=>Date.now());return((0,e.useEffect)(()=>{if(!a||b)return;let c=window.setInterval(()=>d(Date.now()),250);return()=>window.clearInterval(c)},[a,b]),a)?Math.max(0,(b??c)-a):null}(c,f),s=null!=r?(k=r,l=!b||!!f,m=Math.floor(k/1e3),n=Math.floor(m/60),o=m%60,l?0===n?`用时 ${o} 秒`:`用时 ${n} 分 ${o} 秒`:`${n}:${String(o).padStart(2,"0")}`):null,u=b&&!f,v=a.length>0,w="正在思考";return v?w="深度思考中":h?w="正在检索知识库":g&&(w="检索意图提取"),(0,d.jsxs)(t.Collapsible,{open:p,onOpenChange:q,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",disabled:!v,className:(0,x.cn)("group inline-flex items-center gap-2 rounded-full pl-1.5 pr-2.5 py-1 text-xs font-medium transition-all duration-200",u?"bg-[hsl(var(--primary)/0.08)] text-[hsl(var(--primary))] ring-1 ring-[hsl(var(--primary)/0.25)] shadow-[0_0_0_4px_hsl(var(--primary)/0.06)]":"bg-[hsl(var(--muted)/0.6)] text-muted-foreground hover:bg-[hsl(var(--accent))] hover:text-foreground",!v&&"cursor-default"),"aria-live":u?"polite":"off",children:[(0,d.jsxs)("span",{className:"relative inline-flex h-5 w-5 items-center justify-center",children:[u&&(0,d.jsx)("span",{"aria-hidden":!0,className:"absolute inset-0 rounded-full bg-[hsl(var(--primary))] opacity-40 blur-[6px] animate-thinking-aurora"}),(0,d.jsx)(i.Brain,{className:(0,x.cn)("relative h-3.5 w-3.5",u&&"animate-thinking-icon text-[hsl(var(--primary))]")})]}),u?(0,d.jsx)("span",{className:"animate-text-shimmer bg-[linear-gradient(90deg,hsl(var(--primary)/0.55)_0%,hsl(var(--primary))_50%,hsl(var(--primary)/0.55)_100%)] bg-[length:200%_100%] bg-clip-text text-transparent",children:w}):(0,d.jsx)("span",{children:"已深度思考"}),s&&(0,d.jsxs)("span",{className:(0,x.cn)("tabular-nums text-[11px]",u?"text-[hsl(var(--primary)/0.75)]":"text-muted-foreground/80"),children:["· ",s]}),v&&(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 opacity-60 transition-transform duration-200",p&&"rotate-180",u&&"text-[hsl(var(--primary))]")})]})}),v&&(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 border-l-2 border-[hsl(var(--border))] pl-3 text-xs leading-relaxed text-muted-foreground whitespace-pre-wrap",children:a})})]})}function J({chunks:a,groups:b}){let[c,f]=(0,e.useState)(!1),g=new Map;a.forEach((a,b)=>{g.set(`${a.docId}#${a.chunkId}`,b+1)});let i=(b??[]).filter(a=>!a.error),k=(b??[]).filter(a=>a.error),l=i.length>=2||k.length>0;return(0,d.jsxs)(t.Collapsible,{open:c,onOpenChange:f,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-[hsl(var(--accent))] hover:text-foreground",children:[(0,d.jsx)(h.BookOpen,{className:"h-3.5 w-3.5"}),"查看 ",a.length," 个引用",l?(0,d.jsxs)("span",{className:"text-muted-foreground/70",children:["· ",i.length," 个知识库",k.length>0?`(${k.length} 失败)`:""]}):null,(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 transition-transform duration-200",c&&"rotate-180")})]})}),(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 space-y-3",children:l?(0,d.jsxs)(d.Fragment,{children:[i.map(a=>(0,d.jsx)(K,{group:a,indexByKey:g},`ok-${a.knowledgeBaseName}`)),k.map(a=>(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--destructive))/0.3] bg-[hsl(var(--destructive))/0.05] px-3 py-2 text-xs text-[hsl(var(--destructive))]",children:[(0,d.jsx)("span",{className:"font-medium",children:a.knowledgeBaseName}),(0,d.jsxs)("span",{className:"ml-2 text-[hsl(var(--destructive))/0.8]",children:["检索失败:",a.error]})]},`err-${a.knowledgeBaseName}`))]}):(0,d.jsx)("div",{className:"space-y-2",children:a.map((a,b)=>(0,d.jsx)(L,{chunk:a,index:b+1},`${a.docId}-${a.chunkId}`))})})})]})}function K({group:a,indexByKey:b}){return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs font-medium text-muted-foreground",children:[(0,d.jsx)("span",{className:"text-foreground/80",children:a.knowledgeBaseName}),(0,d.jsxs)("span",{children:["· ",a.chunks.length," 条"]})]}),(0,d.jsx)("div",{className:"space-y-2 border-l-2 border-[hsl(var(--border))] pl-3",children:a.chunks.map(a=>{let c=`${a.docId}#${a.chunkId}`,e=b.get(c)??0;return(0,d.jsx)(L,{chunk:a,index:e},`${a.docId}-${a.chunkId}`)})})]})}function L({chunk:a,index:b}){let[c,f]=(0,e.useState)(null),[g,h]=(0,e.useState)(!1),i=a.ossKey?(0,x.extractFileName)(a.ossKey):"未知文件",j=a.chunkType?.toLowerCase()==="image",k=a.imageBase64?a.imageBase64.startsWith("data:")?a.imageBase64:`${y.IMAGE_FALLBACK_DATA_PREFIX}${a.imageBase64}`:void 0;return(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.3)] p-3",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] font-semibold text-primary",children:b>0?b:"–"}),(0,d.jsx)("span",{className:"font-medium text-foreground/80",children:i}),(0,d.jsxs)("span",{children:["Chunk #",a.chunkId]}),j&&(0,d.jsx)("span",{className:"rounded bg-primary/10 px-1 py-0.5 text-[10px] font-medium text-primary",children:"IMAGE"}),(0,d.jsx)("span",{className:"ml-auto font-mono",children:a.score.toFixed(4)})]}),j&&k&&(0,d.jsx)("img",{src:k,alt:`Image chunk #${a.chunkId}`,className:"mt-2 max-w-[180px] max-h-[180px] object-contain rounded border border-border cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>f(k)}),a.content&&(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("p",{className:(0,x.cn)("whitespace-pre-wrap text-xs text-foreground/80 cursor-pointer",!g&&"line-clamp-4",j&&"mt-2"),onClick:()=>h(a=>!a),children:a.content}),!g&&(0,d.jsx)("div",{className:"pointer-events-none absolute bottom-0 left-0 right-0 h-8 bg-gradient-to-t from-[hsl(var(--muted)/0.3)] to-transparent"}),(0,d.jsx)("button",{type:"button",className:"mt-1 text-[10px] text-muted-foreground hover:text-foreground",onClick:()=>h(a=>!a),children:g?"点击收起":"点击展开"})]}),(0,d.jsx)(v.Dialog,{open:!!c,onOpenChange:()=>f(null),children:(0,d.jsxs)(v.DialogContent,{className:"max-w-[90vw] max-h-[90vh] p-2 flex items-center justify-center border-none bg-black/90 data-[state=open]:animate-none data-[state=closed]:animate-none duration-0",children:[(0,d.jsx)(v.DialogTitle,{className:"sr-only",children:"图片放大预览"}),c&&(0,d.jsx)("img",{src:c,alt:"放大预览",className:"max-w-full max-h-[85vh] object-contain"})]})})]})}function M({hits:a,query:b}){let[c,f]=(0,e.useState)(!1);return(0,d.jsxs)(t.Collapsible,{open:c,onOpenChange:f,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-[hsl(var(--accent))] hover:text-foreground",children:[(0,d.jsx)(i.Brain,{className:"h-3.5 w-3.5"}),"参考 ",a.length," 条记忆",b?(0,d.jsxs)("span",{className:"max-w-[200px] truncate text-muted-foreground/70",children:["· ",b]}):null,(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 transition-transform duration-200",c&&"rotate-180")})]})}),(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 space-y-2",children:a.map((a,b)=>(0,d.jsx)(N,{hit:a,index:b+1},a.unit.memcell_id??`${b}-${(a.unit.text??"").slice(0,16)}`))})})]})}function N({hit:a,index:b}){let c=a.unit.memcell_id,e="number"==typeof a.score?a.score:void 0;return(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.3)] p-3",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] font-semibold text-primary",children:b}),c?(0,d.jsx)("span",{className:"min-w-0 truncate font-mono text-foreground/80",title:c,children:c}):(0,d.jsx)("span",{className:"text-muted-foreground/70",children:"未命名记忆"}),a.source?(0,d.jsx)("span",{className:"rounded bg-[hsl(var(--muted))] px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:a.source}):null,(0,d.jsx)("span",{className:"ml-auto shrink-0 font-mono",children:void 0!==e?e.toFixed(4):"—"})]}),(0,d.jsx)("p",{className:"line-clamp-4 whitespace-pre-wrap text-xs text-foreground/80",children:a.unit.text})]})}O.displayName="QaMessage",a.s(["QaMessage",0,O]),c()}catch(a){c(a)}},!1),957900,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(971938),f=a.i(688189),g=a.i(898018),h=a.i(431710),i=a.i(776192),j=a.i(470535),k=a.i(310215),l=a.i(364565),m=a.i(973570),n=b([m]);[m]=n.then?(await n)():n,a.s(["QaChatPanel",0,function({messages:a,isStreaming:b,canSend:c,error:n,onSend:o,onStop:p,onDelete:q,onResend:r,onRegenerate:s,onEditSave:t,emptyState:u,disabledPlaceholder:v}){let[w,x]=(0,e.useState)(""),y=(0,e.useRef)(null),z=(0,e.useRef)(a.length);(0,e.useEffect)(()=>{let b=y.current;if(!b)return;let c=a.length>z.current;(z.current=a.length,c)?requestAnimationFrame(()=>{b.scrollTo({top:b.scrollHeight,behavior:"smooth"})}):b.scrollHeight-b.scrollTop-b.clientHeight<120&&b.scrollTo({top:b.scrollHeight,behavior:"smooth"})},[a]);let A=()=>{let a=w.trim();a&&c&&!b&&(o(a),x(""))};return(0,d.jsxs)("div",{className:"flex h-full min-h-0 flex-1 flex-col bg-[hsl(var(--card))]",children:[(0,d.jsx)("div",{ref:y,role:"log","aria-live":"polite","aria-relevant":"additions text","aria-busy":b,className:"flex-1 space-y-6 overflow-y-auto px-6 py-5",children:0===a.length?(0,d.jsx)("div",{className:"flex h-full min-h-[320px] items-center justify-center",children:(0,d.jsx)(k.EmptyState,{icon:f.MessageSquare,title:u?.title??"开始对话",description:u?.description??"输入问题,系统会先从知识库检索相关内容,再让大模型基于检索结果回答",action:u?.actionLabel&&u?.onAction?(0,d.jsx)(i.Button,{type:"button",onClick:u.onAction,children:u.actionLabel}):void 0})}):a.map(a=>(0,d.jsx)(m.QaMessage,{message:a,busy:b,onDelete:q,onResend:r,onRegenerate:s,onEditSave:t},a.id))}),(0,d.jsxs)("div",{className:"border-t border-[hsl(var(--border))] bg-[hsl(var(--surface)/0.6)] px-4 py-3",children:[n&&(0,d.jsx)("p",{className:"mb-2 text-xs text-[hsl(var(--destructive))]",children:n}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsx)(j.Textarea,{value:w,onChange:a=>x(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),A())},placeholder:c?"输入问题,Enter 发送,Shift+Enter 换行":v??"请先在左侧选择模型...",disabled:!c,className:(0,l.cn)("min-h-[44px] max-h-40 resize-none text-sm"),rows:1}),b?(0,d.jsx)(i.Button,{type:"button",variant:"outline",size:"icon",onClick:p,title:"停止",children:(0,d.jsx)(h.Square,{className:"h-4 w-4 fill-current"})}):(0,d.jsx)(i.Button,{type:"button",size:"icon",disabled:!c||!w.trim(),onClick:A,title:"发送",children:(0,d.jsx)(g.Send,{className:"h-4 w-4"})})]})]})]})}]),c()}catch(a){c(a)}},!1),464363,832191,987951,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(53520),e=a.i(882725),f=a.i(881619),g=a.i(25825),h=a.i(968826),i=a.i(776192),j=a.i(455553),k=a.i(962491),l=a.i(84252),m=a.i(663525),n=a.i(664209),o=a.i(983366),p=a.i(883917),q=a.i(225377),r=a.i(739096),s=a.i(364565);function t({value:a,options:f,onChange:h,disabled:k,fetching:m}){let[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(""),r=p.trim(),u=(0,c.useMemo)(()=>{if(!r)return f;let a=r.toLowerCase();return f.filter(b=>b.toLowerCase().includes(a))},[f,r]),v=f.some(a=>a.toLowerCase()===r.toLowerCase()),w=r.length>0&&!v,x=a=>{h(a),q(""),o(!1)};return(0,b.jsxs)(l.Popover,{open:n,onOpenChange:o,children:[(0,b.jsx)(l.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(i.Button,{type:"button",variant:"outline",role:"combobox","aria-expanded":n,disabled:k,className:"w-full justify-between font-normal",children:[(0,b.jsx)("span",{className:(0,s.cn)("truncate text-left",!a&&"text-[hsl(var(--subtle))]"),children:a||"选择或输入模型名"}),(0,b.jsx)(e.ChevronsUpDown,{className:"h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(l.PopoverContent,{align:"start",className:"w-[var(--radix-popover-trigger-width)] p-0",children:(0,b.jsxs)(j.Command,{shouldFilter:!1,children:[(0,b.jsx)(j.CommandInput,{placeholder:"搜索或输入模型名",value:p,onValueChange:q}),(0,b.jsxs)(j.CommandList,{children:[0!==u.length||w?null:(0,b.jsx)(j.CommandEmpty,{children:m?"正在拉取模型列表...":0===f.length?"点击「刷新列表」拉取可用模型":"无匹配结果"}),u.length>0&&(0,b.jsx)(j.CommandGroup,{heading:w?"可选模型":void 0,children:u.map(c=>(0,b.jsxs)(j.CommandItem,{value:c,onSelect:()=>x(c),children:[(0,b.jsx)(d.Check,{className:(0,s.cn)("h-4 w-4",a===c?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"truncate",children:c})]},c))}),w&&(0,b.jsx)(j.CommandGroup,{heading:"使用自定义",children:(0,b.jsxs)(j.CommandItem,{value:`__custom__${r}`,onSelect:()=>x(r),children:[(0,b.jsx)(g.Plus,{className:"h-4 w-4 text-[hsl(var(--primary))]"}),(0,b.jsxs)("span",{className:"truncate",children:['使用 "',r,'"']})]})})]})]})})]})}a.s(["LLMModelSelector",0,function({providerId:a,model:d,onProviderChange:e,onModelChange:g,autoSelectFirst:j=!1,providerLabel:l="Provider",modelLabel:s="Model"}){let{data:u=[],isLoading:v}=(0,n.useLLMProviders)(),{data:w,isFetching:x,refetch:y}=function(a,b={}){let{context:c,ready:d}=(0,r.useRuntimeContext)();return(0,o.useQuery)({queryKey:q.queryKeys.llmProviderModels(c.dataScopeKey,a),queryFn:()=>(0,p.fetchProviderModels)(a),enabled:d&&!!a&&(b.enabled??!0),staleTime:3e5,retry:!1})}(a||void 0,{enabled:!!a});(0,c.useEffect)(()=>{if(!j||a||0===u.length)return;let b=u[0];e(b.id,b.defaultModel??"")},[j,a,u]);let z=(0,c.useMemo)(()=>{let b=new Set;for(let a of(d&&b.add(d),w??[]))b.add(a.id);let c=u.find(b=>b.id===a);return c?.defaultModel&&b.add(c.defaultModel),Array.from(b)},[d,w,u,a]);return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:l}),(0,b.jsxs)(m.Select,{value:a,onValueChange:a=>{let b=u.find(b=>b.id===a);e(a,b?.defaultModel??"")},disabled:v||0===u.length,children:[(0,b.jsx)(m.SelectTrigger,{children:(0,b.jsx)(m.SelectValue,{placeholder:v?"加载中...":0===u.length?"请先在「模型提供商」中创建配置":"选择 Provider"})}),(0,b.jsx)(m.SelectContent,{children:u.map(a=>(0,b.jsx)(m.SelectItem,{value:a.id,children:a.name},a.id))})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:s}),(0,b.jsxs)(i.Button,{type:"button",variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",disabled:!a||x,onClick:()=>y(),children:[x?(0,b.jsx)(f.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}):(0,b.jsx)(h.RefreshCw,{className:"mr-1 h-3 w-3"}),"刷新列表"]})]}),(0,b.jsx)(t,{value:d,options:z,onChange:g,disabled:!a,fetching:x})]})]})}],464363);var u=a.i(470535);a.s(["SystemPromptInput",0,function({value:a,onChange:c,placeholder:d,helperText:e,rows:f=3,label:g="系统提示词"}){return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:g}),(0,b.jsx)(u.Textarea,{rows:f,value:a,onChange:a=>c(a.target.value),placeholder:d,className:"text-sm"}),e&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:e})]})}],832191);var v=a.i(350681);a.s(["TemperatureSlider",0,function({value:a,onChange:c,min:d=0,max:e=2,step:f=.05,fallback:g=.7,label:h="温度"}){let i=(a??g).toFixed(2);return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:h}),(0,b.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:i})]}),(0,b.jsx)(v.Slider,{value:[a??g],min:d,max:e,step:f,onValueChange:a=>c(a[0]??g)})]})}],987951)},582424,a=>{"use strict";var b=a.i(739096);a.s(["useActiveInstance",0,function(){let{context:a,ready:c}=(0,b.useRuntimeContext)();return{activeInstance:a.activeInstance,ready:c,dataScopeKey:a.dataScopeKey,configRevision:a.configRevision}}])},383643,a=>{"use strict";a.s(["newId",0,function(a="id"){return"u">typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():`${a}_${Date.now()}_${Math.random().toString(36).slice(2)}`}])},776446,a=>{"use strict";a.s(["findUserAnchorAbove",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return null;for(let b=c-1;b>=0;b-=1)if("user"===a[b].role)return a[b];return null},"removeAt",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return a;let d=a.slice();return d.splice(c,1),d},"removePair",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return a;let d=a.slice(),e=a[c+1]&&"assistant"===a[c+1].role?2:1;return d.splice(c,e),d},"truncateUpToAndIncluding",0,function(a,b){let c=a.findIndex(a=>a.id===b);return c<0?a:a.slice(0,c+1)}])},409135,a=>{"use strict";var b=a.i(971938);async function*c(a,b){let c=await fetch("/api/v1/llm/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:b});if(!c.ok||!c.body){let a=`Chat request failed with status ${c.status}`,b="STREAM_ERROR";try{let d=await c.json();a=d.message??a,b=d.code??b}catch{}yield{type:"error",code:b,message:a};return}let e=c.body.getReader(),f=new TextDecoder("utf-8"),g="";for(;;){let{value:a,done:b}=await e.read();if(b)break;let c=(g+=f.decode(a,{stream:!0})).indexOf("\n\n");for(;-1!==c;){let a=g.slice(0,c);g=g.slice(c+2);let b=d(a);b&&(yield b),c=g.indexOf("\n\n")}}if(g.trim()){let a=d(g);a&&(yield a)}}function d(a){let b=a.split("\n"),c=[];for(let a of b)!(!a||a.startsWith(":"))&&a.startsWith("data:")&&c.push(a.slice(5).trimStart());if(0===c.length)return null;try{return JSON.parse(c.join("\n"))}catch{return null}}var e=a.i(383643),f=a.i(776446);a.s(["useQaChat",0,function(a){let[d,g]=(0,b.useState)([]),[h,i]=(0,b.useState)(!1),[j,k]=(0,b.useState)(null),l=(0,b.useRef)(null),m=(0,b.useRef)(a.onPersist);m.current=a.onPersist;let n=(0,b.useRef)(d);n.current=d;let o=(0,b.useRef)(a);o.current=a;let p=(0,b.useRef)(h);p.current=h;let q=(0,b.useRef)(new Map),r=(0,b.useRef)(null),s=(0,b.useCallback)(()=>{r.current=null;let a=q.current;if(0===a.size)return;let b=new Map(a);a.clear(),g(a=>a.map(a=>{let c=b.get(a.id);return c?{...a,...c.content?{content:a.content+c.content}:null,...c.reasoning?{reasoning:(a.reasoning??"")+c.reasoning}:null}:a}))},[]),t=(0,b.useCallback)(()=>{if(null===r.current){if("u"<typeof requestAnimationFrame)return void s();r.current=requestAnimationFrame(s)}},[s]),u=(0,b.useCallback)(()=>{null!==r.current&&"u">typeof cancelAnimationFrame&&cancelAnimationFrame(r.current),r.current=null},[]);(0,b.useEffect)(()=>u,[u]);let v=(0,b.useCallback)(()=>{l.current?.abort()},[]),w=(0,b.useCallback)(()=>{l.current?.abort(),n.current=[],g([]),k(null)},[]),x=(0,b.useCallback)(a=>{l.current?.abort(),n.current=a,g(a),k(null)},[]),y=(0,b.useCallback)(async(a,b,d)=>{let e=o.current,f=new AbortController;l.current=f;let h={current:!1},j={current:!1},p=b=>{g(c=>c.map(c=>c.id===a?{...c,...b}:c))};try{let g={activeInstance:e.activeInstance,providerId:e.providerId,model:e.model,messages:b,systemPrompt:e.systemPrompt,temperature:e.temperature,rag:e.rag,...e.memory?{memory:{...e.memory,turnId:d}}:{}};for await(let b of c(g,f.signal))if("query.rewritten"===b.type)p({retrievalQuery:b.query,retrievalQueryRewritten:b.query!==b.original});else if("query.fallback"===b.type)p({retrievalQuery:b.original,retrievalQueryRewritten:!1,queryRewriteFailed:!0,queryRewriteError:b.reason});else if("retrieval.done"===b.type)p({retrievedChunks:b.chunks,retrievalGroups:b.byKnowledgeBase});else if("memory.start"===b.type)p({memoryQuery:b.query});else if("memory.done"===b.type)p({memoryHits:b.hits});else if("memory.save.skipped"===b.type)console.warn("[chat] memory.save.skipped:",b.reason);else if("reasoning.delta"===b.type){let c=q.current.get(a)??{};c.reasoning=(c.reasoning??"")+b.delta,q.current.set(a,c),h.current||(h.current=!0,p({reasoningStartedAt:Date.now()})),t()}else if("content.delta"===b.type){let c=q.current.get(a)??{};c.content=(c.content??"")+b.delta,q.current.set(a,c),h.current&&!j.current&&(j.current=!0,p({reasoningCompletedAt:Date.now()})),t()}else if("error"===b.type){u(),s();let a={status:"error",errorMessage:`${b.code}: ${b.message}`};h.current&&!j.current&&(a.reasoningCompletedAt=Date.now()),p(a),k(b.message);break}else if("done"===b.type){u(),s();let a={status:"done"};h.current&&!j.current&&(a.reasoningCompletedAt=Date.now()),p(a);break}}catch(c){u(),s();let a=c instanceof DOMException&&"AbortError"===c.name,b=h.current&&!j.current?{reasoningCompletedAt:Date.now()}:void 0;if(a)p({status:"done",...b});else{let a=c instanceof Error?c.message:String(c);p({status:"error",errorMessage:a,...b}),k(a)}}finally{i(!1),l.current=null;let a=m.current;a&&a(n.current)}},[t,s,u]),z=(0,b.useCallback)(async a=>{let b=a.trim();if(!b||p.current)return;let c=o.current;if(!c.providerId||!c.model)return void k("请先选择模型与 Provider");k(null);let d=(0,e.newId)("turn"),f={id:(0,e.newId)(),role:"user",content:b,createdAt:Date.now(),status:"done",turnId:d},h=(0,e.newId)(),j=(c.rag?.knowledgeBases?.length??0)>0,l={id:h,role:"assistant",content:"",reasoning:"",createdAt:Date.now(),status:"streaming",usingRag:j},m=[...n.current,f].map(a=>({role:a.role,content:a.content})),q=[...n.current,f,l];n.current=q,g(q),i(!0),await y(h,m,d)},[y]),A=(0,b.useCallback)(async a=>{if(p.current)return;let b=o.current;if(!b.providerId||!b.model)return void k("请先选择模型与 Provider");let c=(0,f.truncateUpToAndIncluding)(n.current,a),d=c[c.length-1];if(!d||"user"!==d.role)return;let h=d.turnId??(0,e.newId)("turn");if(!d.turnId){let a=c.length-1;c[a]={...d,turnId:h}}k(null);let j=(0,e.newId)(),l=(b.rag?.knowledgeBases?.length??0)>0,m={id:j,role:"assistant",content:"",reasoning:"",createdAt:Date.now(),status:"streaming",usingRag:l},q=c.map(a=>({role:a.role,content:a.content})),r=[...c,m];n.current=r,g(r),i(!0),await y(j,q,h)},[y]);return{messages:d,isStreaming:h,error:j,send:z,reissueTurn:A,deleteMessage:(0,b.useCallback)((a,b)=>{if(p.current)return;let c=n.current,d=c.find(b=>b.id===a);if(!d)return;let e="user"===d.role&&b?.withNextAssistant?(0,f.removePair)(c,a):(0,f.removeAt)(c,a);n.current=e,g(e),m.current?.(e)},[]),editUserMessage:(0,b.useCallback)((a,b)=>{let c=n.current,d=c.findIndex(b=>b.id===a);if(d<0||"user"!==c[d].role)return null;let e=c.slice();return e[d]={...c[d],content:b},n.current=e,g(e),a},[]),stop:v,clear:w,setMessages:x}}],409135)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__07fra.0._.js.map
|
package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0st_2qm._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[898018,a=>{"use strict";let b=(0,a.i(750053).default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);a.s(["Send",0,b],898018)},431710,a=>{"use strict";let b=(0,a.i(750053).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);a.s(["Square",0,b],431710)},531687,a=>{"use strict";let b=(0,a.i(750053).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",0,b],531687)},542216,a=>a.a(async(b,c)=>{try{let b=await a.y("shiki-2963fa3a20578463");a.n(b),c()}catch(a){c(a)}},!0),23195,a=>a.a(async(b,c)=>{try{let b=await a.y("shiki-2963fa3a20578463/engine/javascript");a.n(b),c()}catch(a){c(a)}},!0),828778,a=>a.a(async(b,c)=>{try{var d=a.i(542216),e=a.i(23195),f=b([d,e]);[d,e]=f.then?(await f)():f;var g=(0,e.createJavaScriptRegexEngine)({forgiving:!0}),h=Object.fromEntries(d.bundledLanguagesInfo.flatMap(a=>{var b;return(null!=(b=a.aliases)?b:[]).map(b=>[b,a.id])})),i=new Set(Object.keys(d.bundledLanguages)),j=a=>{let b=a.trim().toLowerCase();return h[b]||(i.has(b),b)},k=new Map,l=new Map,m=new Map,n=a=>{var b;return"string"==typeof a?a:null!=(b=a.name)?b:"custom"},o=function(a={}){var b;let c=null!=(b=a.themes)?b:["github-light","github-dark"];return{name:"shiki",type:"code-highlighter",supportsLanguage(a){let b=j(a);return i.has(b)},getSupportedLanguages:()=>Array.from(i),getThemes:()=>c,highlight({code:a,language:b,themes:c},e){let f,h,o=j(b),p=[n(c[0]),n(c[1])],q=(f=a.slice(0,100),h=a.length>100?a.slice(-100):"",`${o}:${p[0]}:${p[1]}:${a.length}:${f}:${h}`);if(l.has(q))return l.get(q);e&&(m.has(q)||m.set(q,new Set),m.get(q).add(e));let r=i.has(o)?o:"text";return((a,b)=>{let c=`${a}-${n(b[0])}-${n(b[1])}`;if(k.has(c))return k.get(c);let e=(0,d.createHighlighter)({themes:b,langs:[a],engine:g});return k.set(c,e),e})(r,c).then(b=>{let c=b.getLoadedLanguages().includes(o)?o:"text",d=b.codeToTokens(a,{lang:c,themes:{light:p[0],dark:p[1]}});l.set(q,d);let e=m.get(q);if(e){for(let a of e)a(d);m.delete(q)}}).catch(a=>{console.error("[Streamdown Code] Failed to highlight code:",a),m.delete(q)}),null}}}();a.s(["code",0,o]),c()}catch(a){c(a)}},!1),626925,a=>{"use strict";a.i(702617),a.s([])},946400,a=>{"use strict";var b=a.i(702617);a.s(["Streamdown",()=>b.C])},693280,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(53520),e=a.i(16772),f=a.i(364565);a.s(["CodeBlock",0,function({className:a,children:g,node:h,...i}){let j=(0,c.useRef)(null),[k,l]=(0,c.useState)(!1),m=function(a){for(let b of c.Children.toArray(a)){if(!(0,c.isValidElement)(b))continue;let a=b.props;if("string"!=typeof a?.className)continue;let d=a.className.match(/language-([a-z0-9+#-]+)/i);if(d)return d[1]}}(g)??"",n=(0,c.useCallback)(async()=>{let a=j.current?.innerText??"";if(a)try{await navigator.clipboard.writeText(a),l(!0),window.setTimeout(()=>l(!1),2e3)}catch{}},[]);return(0,b.jsxs)("div",{className:"group relative my-2 overflow-hidden rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.5)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.8)] px-3 py-1.5",children:[(0,b.jsx)("span",{className:"font-mono text-[11px] uppercase tracking-wide text-muted-foreground",children:m||"text"}),(0,b.jsx)("button",{type:"button",onClick:n,className:(0,f.cn)("inline-flex items-center gap-1 rounded px-2 py-0.5 text-[11px] text-muted-foreground","opacity-0 transition-opacity hover:bg-[hsl(var(--accent))] hover:text-foreground","group-hover:opacity-100 focus-visible:opacity-100",k&&"opacity-100 text-primary"),"aria-label":"复制代码",children:k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),"已复制"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.Copy,{className:"h-3 w-3"}),"复制"]})})]}),(0,b.jsx)("pre",{ref:j,className:(0,f.cn)("overflow-x-auto p-3 text-xs leading-relaxed","[&_code]:bg-transparent [&_code]:p-0",a),...i,children:g})]})}])},613562,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(828778);a.i(626925);var f=a.i(946400),g=a.i(364565),h=a.i(693280),i=b([e]);[e]=i.then?(await i)():i;let j=["https://","http://","mailto:","#","/"],k=["https://","data:image/"],l=(a,b)=>{let c=a.toLowerCase();return("src"===b?k:j).some(a=>c.startsWith(a))?a:""};a.s(["Markdown",0,function({children:a,className:b}){return(0,d.jsx)("div",{className:(0,g.cn)("text-sm leading-relaxed text-foreground/90","[&_p]:my-2 [&_ul]:my-2 [&_ol]:my-2 [&_li]:my-0.5","[&_ul]:list-disc [&_ul]:pl-5 [&_ol]:list-decimal [&_ol]:pl-5","[&_h1]:mt-4 [&_h1]:mb-2 [&_h1]:text-lg [&_h1]:font-semibold","[&_h2]:mt-3 [&_h2]:mb-2 [&_h2]:text-base [&_h2]:font-semibold","[&_h3]:mt-3 [&_h3]:mb-1.5 [&_h3]:text-sm [&_h3]:font-semibold","[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2","[&_:not(pre)>code]:rounded [&_:not(pre)>code]:bg-[hsl(var(--muted))] [&_:not(pre)>code]:px-1 [&_:not(pre)>code]:py-0.5 [&_:not(pre)>code]:text-[0.85em]","[&_table]:my-2 [&_table]:w-full [&_table]:border-collapse","[&_th]:border [&_th]:border-[hsl(var(--border))] [&_th]:px-2 [&_th]:py-1 [&_th]:text-left [&_th]:font-semibold","[&_td]:border [&_td]:border-[hsl(var(--border))] [&_td]:px-2 [&_td]:py-1","[&_blockquote]:my-2 [&_blockquote]:border-l-2 [&_blockquote]:border-[hsl(var(--border))] [&_blockquote]:pl-3 [&_blockquote]:text-muted-foreground","[&_hr]:my-3 [&_hr]:border-[hsl(var(--border))]",b),children:(0,d.jsx)(f.Streamdown,{parseIncompleteMarkdown:!0,skipHtml:!0,urlTransform:l,plugins:{code:e.code},components:{pre:h.CodeBlock},controls:{code:!1,table:!1,mermaid:!1},children:a})})}]),c()}catch(a){c(a)}},!1),973570,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(971938),f=a.i(531687),g=a.i(637102),h=a.i(342210),i=a.i(147845),j=a.i(201927),k=a.i(16772),l=a.i(112537),m=a.i(616106),n=a.i(160318),o=a.i(898018),p=a.i(655295),q=a.i(263265),r=a.i(776192),s=a.i(36890),t=a.i(27692),u=a.i(470535),v=a.i(843836),w=a.i(324567),x=a.i(364565),y=a.i(867558),z=a.i(613562),A=b([z]);function B(a){try{let b=document.createElement("textarea");b.value=a,b.style.position="fixed",b.style.opacity="0",document.body.appendChild(b),b.select(),document.execCommand("copy"),document.body.removeChild(b),q.toast.success("已复制")}catch{q.toast.error("复制失败")}}[z]=A.then?(await A)():A;let O=(0,e.memo)(function({message:a,busy:b,onDelete:c,onResend:e,onRegenerate:f,onEditSave:g}){return"user"===a.role?(0,d.jsx)(G,{message:a,busy:b,onDelete:c,onResend:e,onEditSave:g}):(0,d.jsx)(H,{message:a,busy:b,onDelete:c,onRegenerate:f})},(a,b)=>a.message===b.message&&a.busy===b.busy);function C({align:a,disabled:b,onCopy:c,onDelete:e,onEdit:f,onResend:g,onRegenerate:h}){return(0,d.jsxs)("div",{className:(0,x.cn)("mt-1 flex items-center gap-0.5 opacity-0 transition-opacity duration-150","group-hover:opacity-100 group-focus-within:opacity-100","group-data-[touched=true]:opacity-100","right"===a?"justify-end":"justify-start"),children:[(0,d.jsx)(D,{title:"复制",disabled:b,onClick:c,children:(0,d.jsx)(k.Copy,{className:"h-3.5 w-3.5"})}),f&&(0,d.jsx)(D,{title:"编辑",disabled:b,onClick:f,children:(0,d.jsx)(l.Pencil,{className:"h-3.5 w-3.5"})}),g&&(0,d.jsx)(D,{title:"重新发送",disabled:b,onClick:g,children:(0,d.jsx)(o.Send,{className:"h-3.5 w-3.5"})}),h&&(0,d.jsx)(D,{title:"重新生成",disabled:b,onClick:h,children:(0,d.jsx)(m.RotateCcw,{className:"h-3.5 w-3.5"})}),(0,d.jsx)(D,{title:"删除",disabled:b,onClick:e,destructive:!0,children:(0,d.jsx)(p.Trash2,{className:"h-3.5 w-3.5"})})]})}function D({title:a,disabled:b,destructive:c,onClick:e,children:f}){return(0,d.jsx)(r.Button,{type:"button",variant:"ghost",size:"icon",title:a,"aria-label":a,disabled:b,onClick:e,className:(0,x.cn)("h-7 w-7 text-muted-foreground hover:text-foreground",c&&"hover:text-[hsl(var(--destructive))] hover:bg-[hsl(var(--destructive))]/10"),children:f})}function E({rewriteFailed:a,rewriteError:b,failedKbCount:c,failedKbDetails:e}){let f=!!a,g=(c??0)>0;return f||g?(0,d.jsxs)("div",{className:"space-y-1.5",children:[f&&(0,d.jsx)(F,{label:"意图重写失败 · 已回退到原问题",detail:b??"rewriter 返回空结果或抛错"}),g&&e&&(0,d.jsx)(F,{label:`${c} 个知识库检索失败`,detail:e.map(a=>`• ${a.name}: ${a.reason}`).join("\n")})]}):null}function F({label:a,detail:b}){let[c,f]=(0,e.useState)(!1);return(0,d.jsxs)("div",{className:"rounded-md border border-amber-500/30 bg-amber-500/5",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>f(a=>!a),className:(0,x.cn)("flex w-full items-center gap-1.5 px-2 py-1 text-xs","text-amber-700 hover:bg-amber-500/10 dark:text-amber-300"),children:[(0,d.jsx)(g.AlertTriangle,{className:"h-3.5 w-3.5 shrink-0"}),(0,d.jsx)("span",{className:"flex-1 text-left",children:a}),(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 opacity-60 transition-transform duration-150",c&&"rotate-180")})]}),c&&(0,d.jsx)("pre",{className:"border-t border-amber-500/20 px-2 py-1.5 text-[11px] leading-relaxed text-amber-700/80 dark:text-amber-300/80 whitespace-pre-wrap font-mono",children:b})]})}function G({message:a,busy:b,onDelete:c,onResend:f,onEditSave:g}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(a.content),[n,o]=(0,e.useState)(!1),[p,t]=(0,e.useState)(!1),[v,x]=(0,e.useState)(!0),y=(0,e.useCallback)(()=>{if(a.content)try{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a.content).then(()=>q.toast.success("已复制"),()=>{B(a.content)}):B(a.content)}catch{B(a.content)}},[a.content]),z=(0,e.useCallback)(()=>{let b=l.trim();if(!b||b===a.content){k(!1),m(a.content);return}k(!1),g(a.id,b)},[l,a.content,a.id,g]),A=(0,e.useCallback)(()=>{m(a.content),k(!1)},[a.content]),D=(0,e.useCallback)(a=>{"Escape"===a.key?(a.preventDefault(),A()):"Enter"===a.key&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),z())},[z,A]);return(0,d.jsxs)("div",{className:"group flex justify-end","data-touched":h?"true":void 0,onClickCapture:()=>i(!0),children:[(0,d.jsxs)("div",{className:"flex max-w-[85%] flex-col items-end",children:[j?(0,d.jsxs)("div",{className:"w-full max-w-2xl rounded-2xl border border-[hsl(var(--primary))] bg-[hsl(var(--background))] p-2",children:[(0,d.jsx)(u.Textarea,{autoFocus:!0,value:l,onChange:a=>m(a.target.value),onKeyDown:D,className:"min-h-[80px] resize-y border-0 p-2 text-sm shadow-none focus-visible:ring-0"}),(0,d.jsxs)("div",{className:"mt-1 flex justify-end gap-2",children:[(0,d.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:A,children:"取消"}),(0,d.jsx)(r.Button,{type:"button",size:"sm",disabled:!l.trim()||l.trim()===a.content,onClick:z,children:"保存并重发"})]})]}):(0,d.jsx)("div",{className:"rounded-2xl rounded-tr-sm bg-[hsl(var(--muted)/0.7)] px-4 py-2.5 text-sm leading-relaxed text-foreground whitespace-pre-wrap",children:a.content}),!j&&(0,d.jsx)(C,{align:"right",disabled:b,onCopy:y,onEdit:()=>{m(a.content),k(!0)},onResend:()=>t(!0),onDelete:()=>o(!0)})]}),(0,d.jsx)(w.ConfirmDialog,{open:n,onOpenChange:o,title:"删除此消息?",description:"该操作不可撤销。",confirmText:"删除",variant:"danger",onConfirm:()=>{c(a.id,{withNextAssistant:v}),o(!1)},children:(0,d.jsxs)("label",{className:"flex items-center gap-2 text-sm text-foreground",children:[(0,d.jsx)(s.Checkbox,{checked:v,onCheckedChange:a=>x(!0===a)}),"同时删除下方的 AI 回复"]})}),(0,d.jsx)(w.ConfirmDialog,{open:p,onOpenChange:t,title:"重新发送此消息?",description:"将丢弃下方所有消息并重新生成回答。",confirmText:"重新发送",onConfirm:()=>{t(!1),f(a.id)}})]})}function H({message:a,busy:b,onDelete:c,onRegenerate:g}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(!1),o="streaming"===a.status,p="error"===a.status,r=(a.reasoning?.length??0)>0,s=(a.content?.length??0)>0,t=r||o&&!s,u=!!a.usingRag&&!a.retrievalQuery,v=!!a.retrievalQuery&&!a.retrievedChunks,x=(a.retrievalGroups??[]).filter(a=>a.error).map(a=>({name:a.knowledgeBaseName,reason:a.error??""})),y=(0,e.useCallback)(()=>{if(a.content)try{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a.content).then(()=>q.toast.success("已复制"),()=>{B(a.content)}):B(a.content)}catch{B(a.content)}},[a.content]);return(0,d.jsxs)("div",{className:"group space-y-3 text-sm leading-relaxed","data-touched":h?"true":void 0,onClickCapture:()=>i(!0),children:[t?(0,d.jsx)(I,{reasoning:a.reasoning??"",streaming:o,startedAt:a.reasoningStartedAt,completedAt:a.reasoningCompletedAt,intentExtracting:u,retrievalInFlight:v}):null,(0,d.jsx)(E,{rewriteFailed:a.queryRewriteFailed,rewriteError:a.queryRewriteError,failedKbCount:x.length,failedKbDetails:x}),a.retrievalQueryRewritten&&a.retrievalQuery?(0,d.jsxs)("div",{className:"inline-flex max-w-full items-center gap-1.5 rounded-md bg-[hsl(var(--muted)/0.4)] px-2 py-1 text-xs text-muted-foreground",children:[(0,d.jsx)(n.Search,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"font-medium shrink-0",children:"检索关键词:"}),(0,d.jsx)("span",{className:"truncate font-mono text-foreground/80",children:a.retrievalQuery})]}):null,a.retrievedChunks&&a.retrievedChunks.length>0?(0,d.jsx)(J,{chunks:a.retrievedChunks,groups:a.retrievalGroups}):null,a.memoryHits&&a.memoryHits.length>0?(0,d.jsx)(M,{hits:a.memoryHits,query:a.memoryQuery}):null,p?(0,d.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--destructive))/0.3] bg-[hsl(var(--destructive))/0.05] px-3 py-2 text-[hsl(var(--destructive))]",children:[(0,d.jsx)(f.AlertCircle,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,d.jsx)("span",{className:"text-xs",children:a.errorMessage??"生成失败"})]}):(0,d.jsxs)("div",{className:"text-foreground/90",children:[(0,d.jsx)(z.Markdown,{children:a.content}),o?(0,d.jsx)("span",{className:"ml-0.5 inline-block h-3.5 w-1.5 animate-pulse bg-foreground align-baseline"}):null]}),(0,d.jsx)(C,{align:"left",disabled:b||o,onCopy:y,onRegenerate:()=>m(!0),onDelete:()=>k(!0)}),(0,d.jsx)(w.ConfirmDialog,{open:j,onOpenChange:k,title:"删除此回复?",description:"该操作不可撤销。",confirmText:"删除",variant:"danger",onConfirm:()=>{c(a.id),k(!1)}}),(0,d.jsx)(w.ConfirmDialog,{open:l,onOpenChange:m,title:"重新生成此回复?",description:"将丢弃下方所有消息并重新生成。",confirmText:"重新生成",onConfirm:()=>{m(!1),g(a.id)}})]})}function I({reasoning:a,streaming:b,startedAt:c,completedAt:f,intentExtracting:g,retrievalInFlight:h}){var k,l;let m,n,o,[p,q]=(0,e.useState)(!1),r=function(a,b){let[c,d]=(0,e.useState)(()=>Date.now());return((0,e.useEffect)(()=>{if(!a||b)return;let c=window.setInterval(()=>d(Date.now()),250);return()=>window.clearInterval(c)},[a,b]),a)?Math.max(0,(b??c)-a):null}(c,f),s=null!=r?(k=r,l=!b||!!f,m=Math.floor(k/1e3),n=Math.floor(m/60),o=m%60,l?0===n?`用时 ${o} 秒`:`用时 ${n} 分 ${o} 秒`:`${n}:${String(o).padStart(2,"0")}`):null,u=b&&!f,v=a.length>0,w="正在思考";return v?w="深度思考中":h?w="正在检索知识库":g&&(w="检索意图提取"),(0,d.jsxs)(t.Collapsible,{open:p,onOpenChange:q,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",disabled:!v,className:(0,x.cn)("group inline-flex items-center gap-2 rounded-full pl-1.5 pr-2.5 py-1 text-xs font-medium transition-all duration-200",u?"bg-[hsl(var(--primary)/0.08)] text-[hsl(var(--primary))] ring-1 ring-[hsl(var(--primary)/0.25)] shadow-[0_0_0_4px_hsl(var(--primary)/0.06)]":"bg-[hsl(var(--muted)/0.6)] text-muted-foreground hover:bg-[hsl(var(--accent))] hover:text-foreground",!v&&"cursor-default"),"aria-live":u?"polite":"off",children:[(0,d.jsxs)("span",{className:"relative inline-flex h-5 w-5 items-center justify-center",children:[u&&(0,d.jsx)("span",{"aria-hidden":!0,className:"absolute inset-0 rounded-full bg-[hsl(var(--primary))] opacity-40 blur-[6px] animate-thinking-aurora"}),(0,d.jsx)(i.Brain,{className:(0,x.cn)("relative h-3.5 w-3.5",u&&"animate-thinking-icon text-[hsl(var(--primary))]")})]}),u?(0,d.jsx)("span",{className:"animate-text-shimmer bg-[linear-gradient(90deg,hsl(var(--primary)/0.55)_0%,hsl(var(--primary))_50%,hsl(var(--primary)/0.55)_100%)] bg-[length:200%_100%] bg-clip-text text-transparent",children:w}):(0,d.jsx)("span",{children:"已深度思考"}),s&&(0,d.jsxs)("span",{className:(0,x.cn)("tabular-nums text-[11px]",u?"text-[hsl(var(--primary)/0.75)]":"text-muted-foreground/80"),children:["· ",s]}),v&&(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 opacity-60 transition-transform duration-200",p&&"rotate-180",u&&"text-[hsl(var(--primary))]")})]})}),v&&(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 border-l-2 border-[hsl(var(--border))] pl-3 text-xs leading-relaxed text-muted-foreground whitespace-pre-wrap",children:a})})]})}function J({chunks:a,groups:b}){let[c,f]=(0,e.useState)(!1),g=new Map;a.forEach((a,b)=>{g.set(`${a.docId}#${a.chunkId}`,b+1)});let i=(b??[]).filter(a=>!a.error),k=(b??[]).filter(a=>a.error),l=i.length>=2||k.length>0;return(0,d.jsxs)(t.Collapsible,{open:c,onOpenChange:f,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-[hsl(var(--accent))] hover:text-foreground",children:[(0,d.jsx)(h.BookOpen,{className:"h-3.5 w-3.5"}),"查看 ",a.length," 个引用",l?(0,d.jsxs)("span",{className:"text-muted-foreground/70",children:["· ",i.length," 个知识库",k.length>0?`(${k.length} 失败)`:""]}):null,(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 transition-transform duration-200",c&&"rotate-180")})]})}),(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 space-y-3",children:l?(0,d.jsxs)(d.Fragment,{children:[i.map(a=>(0,d.jsx)(K,{group:a,indexByKey:g},`ok-${a.knowledgeBaseName}`)),k.map(a=>(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--destructive))/0.3] bg-[hsl(var(--destructive))/0.05] px-3 py-2 text-xs text-[hsl(var(--destructive))]",children:[(0,d.jsx)("span",{className:"font-medium",children:a.knowledgeBaseName}),(0,d.jsxs)("span",{className:"ml-2 text-[hsl(var(--destructive))/0.8]",children:["检索失败:",a.error]})]},`err-${a.knowledgeBaseName}`))]}):(0,d.jsx)("div",{className:"space-y-2",children:a.map((a,b)=>(0,d.jsx)(L,{chunk:a,index:b+1},`${a.docId}-${a.chunkId}`))})})})]})}function K({group:a,indexByKey:b}){return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs font-medium text-muted-foreground",children:[(0,d.jsx)("span",{className:"text-foreground/80",children:a.knowledgeBaseName}),(0,d.jsxs)("span",{children:["· ",a.chunks.length," 条"]})]}),(0,d.jsx)("div",{className:"space-y-2 border-l-2 border-[hsl(var(--border))] pl-3",children:a.chunks.map(a=>{let c=`${a.docId}#${a.chunkId}`,e=b.get(c)??0;return(0,d.jsx)(L,{chunk:a,index:e},`${a.docId}-${a.chunkId}`)})})]})}function L({chunk:a,index:b}){let[c,f]=(0,e.useState)(null),[g,h]=(0,e.useState)(!1),i=a.ossKey?.split("/").pop()||a.ossKey||"未知文件",j=a.chunkType?.toLowerCase()==="image",k=a.imageBase64?a.imageBase64.startsWith("data:")?a.imageBase64:`${y.IMAGE_FALLBACK_DATA_PREFIX}${a.imageBase64}`:void 0;return(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.3)] p-3",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] font-semibold text-primary",children:b>0?b:"–"}),(0,d.jsx)("span",{className:"font-medium text-foreground/80",children:i}),(0,d.jsxs)("span",{children:["Chunk #",a.chunkId]}),j&&(0,d.jsx)("span",{className:"rounded bg-primary/10 px-1 py-0.5 text-[10px] font-medium text-primary",children:"IMAGE"}),(0,d.jsx)("span",{className:"ml-auto font-mono",children:a.score.toFixed(4)})]}),j&&k&&(0,d.jsx)("img",{src:k,alt:`Image chunk #${a.chunkId}`,className:"mt-2 max-w-[180px] max-h-[180px] object-contain rounded border border-border cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>f(k)}),a.content&&(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("p",{className:(0,x.cn)("whitespace-pre-wrap text-xs text-foreground/80 cursor-pointer",!g&&"line-clamp-4",j&&"mt-2"),onClick:()=>h(a=>!a),children:a.content}),!g&&(0,d.jsx)("div",{className:"pointer-events-none absolute bottom-0 left-0 right-0 h-8 bg-gradient-to-t from-[hsl(var(--muted)/0.3)] to-transparent"}),(0,d.jsx)("button",{type:"button",className:"mt-1 text-[10px] text-muted-foreground hover:text-foreground",onClick:()=>h(a=>!a),children:g?"点击收起":"点击展开"})]}),(0,d.jsx)(v.Dialog,{open:!!c,onOpenChange:()=>f(null),children:(0,d.jsxs)(v.DialogContent,{className:"max-w-[90vw] max-h-[90vh] p-2 flex items-center justify-center border-none bg-black/90 data-[state=open]:animate-none data-[state=closed]:animate-none duration-0",children:[(0,d.jsx)(v.DialogTitle,{className:"sr-only",children:"图片放大预览"}),c&&(0,d.jsx)("img",{src:c,alt:"放大预览",className:"max-w-full max-h-[85vh] object-contain"})]})})]})}function M({hits:a,query:b}){let[c,f]=(0,e.useState)(!1);return(0,d.jsxs)(t.Collapsible,{open:c,onOpenChange:f,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-[hsl(var(--accent))] hover:text-foreground",children:[(0,d.jsx)(i.Brain,{className:"h-3.5 w-3.5"}),"参考 ",a.length," 条记忆",b?(0,d.jsxs)("span",{className:"max-w-[200px] truncate text-muted-foreground/70",children:["· ",b]}):null,(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 transition-transform duration-200",c&&"rotate-180")})]})}),(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 space-y-2",children:a.map((a,b)=>(0,d.jsx)(N,{hit:a,index:b+1},a.unit.memcell_id??`${b}-${(a.unit.text??"").slice(0,16)}`))})})]})}function N({hit:a,index:b}){let c=a.unit.memcell_id,e="number"==typeof a.score?a.score:void 0;return(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.3)] p-3",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] font-semibold text-primary",children:b}),c?(0,d.jsx)("span",{className:"min-w-0 truncate font-mono text-foreground/80",title:c,children:c}):(0,d.jsx)("span",{className:"text-muted-foreground/70",children:"未命名记忆"}),a.source?(0,d.jsx)("span",{className:"rounded bg-[hsl(var(--muted))] px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:a.source}):null,(0,d.jsx)("span",{className:"ml-auto shrink-0 font-mono",children:void 0!==e?e.toFixed(4):"—"})]}),(0,d.jsx)("p",{className:"line-clamp-4 whitespace-pre-wrap text-xs text-foreground/80",children:a.unit.text})]})}O.displayName="QaMessage",a.s(["QaMessage",0,O]),c()}catch(a){c(a)}},!1),957900,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(971938),f=a.i(688189),g=a.i(898018),h=a.i(431710),i=a.i(776192),j=a.i(470535),k=a.i(310215),l=a.i(364565),m=a.i(973570),n=b([m]);[m]=n.then?(await n)():n,a.s(["QaChatPanel",0,function({messages:a,isStreaming:b,canSend:c,error:n,onSend:o,onStop:p,onDelete:q,onResend:r,onRegenerate:s,onEditSave:t,emptyState:u,disabledPlaceholder:v}){let[w,x]=(0,e.useState)(""),y=(0,e.useRef)(null),z=(0,e.useRef)(a.length);(0,e.useEffect)(()=>{let b=y.current;if(!b)return;let c=a.length>z.current;(z.current=a.length,c)?requestAnimationFrame(()=>{b.scrollTo({top:b.scrollHeight,behavior:"smooth"})}):b.scrollHeight-b.scrollTop-b.clientHeight<120&&b.scrollTo({top:b.scrollHeight,behavior:"smooth"})},[a]);let A=()=>{let a=w.trim();a&&c&&!b&&(o(a),x(""))};return(0,d.jsxs)("div",{className:"flex h-full min-h-0 flex-1 flex-col bg-[hsl(var(--card))]",children:[(0,d.jsx)("div",{ref:y,role:"log","aria-live":"polite","aria-relevant":"additions text","aria-busy":b,className:"flex-1 space-y-6 overflow-y-auto px-6 py-5",children:0===a.length?(0,d.jsx)("div",{className:"flex h-full min-h-[320px] items-center justify-center",children:(0,d.jsx)(k.EmptyState,{icon:f.MessageSquare,title:u?.title??"开始对话",description:u?.description??"输入问题,系统会先从知识库检索相关内容,再让大模型基于检索结果回答",action:u?.actionLabel&&u?.onAction?(0,d.jsx)(i.Button,{type:"button",onClick:u.onAction,children:u.actionLabel}):void 0})}):a.map(a=>(0,d.jsx)(m.QaMessage,{message:a,busy:b,onDelete:q,onResend:r,onRegenerate:s,onEditSave:t},a.id))}),(0,d.jsxs)("div",{className:"border-t border-[hsl(var(--border))] bg-[hsl(var(--surface)/0.6)] px-4 py-3",children:[n&&(0,d.jsx)("p",{className:"mb-2 text-xs text-[hsl(var(--destructive))]",children:n}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsx)(j.Textarea,{value:w,onChange:a=>x(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),A())},placeholder:c?"输入问题,Enter 发送,Shift+Enter 换行":v??"请先在左侧选择模型...",disabled:!c,className:(0,l.cn)("min-h-[44px] max-h-40 resize-none text-sm"),rows:1}),b?(0,d.jsx)(i.Button,{type:"button",variant:"outline",size:"icon",onClick:p,title:"停止",children:(0,d.jsx)(h.Square,{className:"h-4 w-4 fill-current"})}):(0,d.jsx)(i.Button,{type:"button",size:"icon",disabled:!c||!w.trim(),onClick:A,title:"发送",children:(0,d.jsx)(g.Send,{className:"h-4 w-4"})})]})]})]})}]),c()}catch(a){c(a)}},!1),383643,a=>{"use strict";a.s(["newId",0,function(a="id"){return"u">typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():`${a}_${Date.now()}_${Math.random().toString(36).slice(2)}`}])},464363,832191,987951,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(53520),e=a.i(882725),f=a.i(881619),g=a.i(25825),h=a.i(968826),i=a.i(776192),j=a.i(455553),k=a.i(962491),l=a.i(84252),m=a.i(663525),n=a.i(664209),o=a.i(983366),p=a.i(883917),q=a.i(225377),r=a.i(739096),s=a.i(364565);function t({value:a,options:f,onChange:h,disabled:k,fetching:m}){let[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(""),r=p.trim(),u=(0,c.useMemo)(()=>{if(!r)return f;let a=r.toLowerCase();return f.filter(b=>b.toLowerCase().includes(a))},[f,r]),v=f.some(a=>a.toLowerCase()===r.toLowerCase()),w=r.length>0&&!v,x=a=>{h(a),q(""),o(!1)};return(0,b.jsxs)(l.Popover,{open:n,onOpenChange:o,children:[(0,b.jsx)(l.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(i.Button,{type:"button",variant:"outline",role:"combobox","aria-expanded":n,disabled:k,className:"w-full justify-between font-normal",children:[(0,b.jsx)("span",{className:(0,s.cn)("truncate text-left",!a&&"text-[hsl(var(--subtle))]"),children:a||"选择或输入模型名"}),(0,b.jsx)(e.ChevronsUpDown,{className:"h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(l.PopoverContent,{align:"start",className:"w-[var(--radix-popover-trigger-width)] p-0",children:(0,b.jsxs)(j.Command,{shouldFilter:!1,children:[(0,b.jsx)(j.CommandInput,{placeholder:"搜索或输入模型名",value:p,onValueChange:q}),(0,b.jsxs)(j.CommandList,{children:[0!==u.length||w?null:(0,b.jsx)(j.CommandEmpty,{children:m?"正在拉取模型列表...":0===f.length?"点击「刷新列表」拉取可用模型":"无匹配结果"}),u.length>0&&(0,b.jsx)(j.CommandGroup,{heading:w?"可选模型":void 0,children:u.map(c=>(0,b.jsxs)(j.CommandItem,{value:c,onSelect:()=>x(c),children:[(0,b.jsx)(d.Check,{className:(0,s.cn)("h-4 w-4",a===c?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"truncate",children:c})]},c))}),w&&(0,b.jsx)(j.CommandGroup,{heading:"使用自定义",children:(0,b.jsxs)(j.CommandItem,{value:`__custom__${r}`,onSelect:()=>x(r),children:[(0,b.jsx)(g.Plus,{className:"h-4 w-4 text-[hsl(var(--primary))]"}),(0,b.jsxs)("span",{className:"truncate",children:['使用 "',r,'"']})]})})]})]})})]})}a.s(["LLMModelSelector",0,function({providerId:a,model:d,onProviderChange:e,onModelChange:g,autoSelectFirst:j=!1,providerLabel:l="Provider",modelLabel:s="Model"}){let{data:u=[],isLoading:v}=(0,n.useLLMProviders)(),{data:w,isFetching:x,refetch:y}=function(a,b={}){let{context:c,ready:d}=(0,r.useRuntimeContext)();return(0,o.useQuery)({queryKey:q.queryKeys.llmProviderModels(c.dataScopeKey,a),queryFn:()=>(0,p.fetchProviderModels)(a),enabled:d&&!!a&&(b.enabled??!0),staleTime:3e5,retry:!1})}(a||void 0,{enabled:!!a});(0,c.useEffect)(()=>{if(!j||a||0===u.length)return;let b=u[0];e(b.id,b.defaultModel??"")},[j,a,u]);let z=(0,c.useMemo)(()=>{let b=new Set;for(let a of(d&&b.add(d),w??[]))b.add(a.id);let c=u.find(b=>b.id===a);return c?.defaultModel&&b.add(c.defaultModel),Array.from(b)},[d,w,u,a]);return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:l}),(0,b.jsxs)(m.Select,{value:a,onValueChange:a=>{let b=u.find(b=>b.id===a);e(a,b?.defaultModel??"")},disabled:v||0===u.length,children:[(0,b.jsx)(m.SelectTrigger,{children:(0,b.jsx)(m.SelectValue,{placeholder:v?"加载中...":0===u.length?"请先在「模型提供商」中创建配置":"选择 Provider"})}),(0,b.jsx)(m.SelectContent,{children:u.map(a=>(0,b.jsx)(m.SelectItem,{value:a.id,children:a.name},a.id))})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:s}),(0,b.jsxs)(i.Button,{type:"button",variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",disabled:!a||x,onClick:()=>y(),children:[x?(0,b.jsx)(f.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}):(0,b.jsx)(h.RefreshCw,{className:"mr-1 h-3 w-3"}),"刷新列表"]})]}),(0,b.jsx)(t,{value:d,options:z,onChange:g,disabled:!a,fetching:x})]})]})}],464363);var u=a.i(470535);a.s(["SystemPromptInput",0,function({value:a,onChange:c,placeholder:d,helperText:e,rows:f=3,label:g="系统提示词"}){return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:g}),(0,b.jsx)(u.Textarea,{rows:f,value:a,onChange:a=>c(a.target.value),placeholder:d,className:"text-sm"}),e&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:e})]})}],832191);var v=a.i(350681);a.s(["TemperatureSlider",0,function({value:a,onChange:c,min:d=0,max:e=2,step:f=.05,fallback:g=.7,label:h="温度"}){let i=(a??g).toFixed(2);return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:h}),(0,b.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:i})]}),(0,b.jsx)(v.Slider,{value:[a??g],min:d,max:e,step:f,onValueChange:a=>c(a[0]??g)})]})}],987951)},776446,a=>{"use strict";a.s(["findUserAnchorAbove",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return null;for(let b=c-1;b>=0;b-=1)if("user"===a[b].role)return a[b];return null},"removeAt",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return a;let d=a.slice();return d.splice(c,1),d},"removePair",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return a;let d=a.slice(),e=a[c+1]&&"assistant"===a[c+1].role?2:1;return d.splice(c,e),d},"truncateUpToAndIncluding",0,function(a,b){let c=a.findIndex(a=>a.id===b);return c<0?a:a.slice(0,c+1)}])},409135,a=>{"use strict";var b=a.i(971938);async function*c(a,b){let c=await fetch("/api/v1/llm/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:b});if(!c.ok||!c.body){let a=`Chat request failed with status ${c.status}`,b="STREAM_ERROR";try{let d=await c.json();a=d.message??a,b=d.code??b}catch{}yield{type:"error",code:b,message:a};return}let e=c.body.getReader(),f=new TextDecoder("utf-8"),g="";for(;;){let{value:a,done:b}=await e.read();if(b)break;let c=(g+=f.decode(a,{stream:!0})).indexOf("\n\n");for(;-1!==c;){let a=g.slice(0,c);g=g.slice(c+2);let b=d(a);b&&(yield b),c=g.indexOf("\n\n")}}if(g.trim()){let a=d(g);a&&(yield a)}}function d(a){let b=a.split("\n"),c=[];for(let a of b)!(!a||a.startsWith(":"))&&a.startsWith("data:")&&c.push(a.slice(5).trimStart());if(0===c.length)return null;try{return JSON.parse(c.join("\n"))}catch{return null}}var e=a.i(383643),f=a.i(776446);a.s(["useQaChat",0,function(a){let[d,g]=(0,b.useState)([]),[h,i]=(0,b.useState)(!1),[j,k]=(0,b.useState)(null),l=(0,b.useRef)(null),m=(0,b.useRef)(a.onPersist);m.current=a.onPersist;let n=(0,b.useRef)(d);n.current=d;let o=(0,b.useRef)(a);o.current=a;let p=(0,b.useRef)(h);p.current=h;let q=(0,b.useRef)(new Map),r=(0,b.useRef)(null),s=(0,b.useCallback)(()=>{r.current=null;let a=q.current;if(0===a.size)return;let b=new Map(a);a.clear(),g(a=>a.map(a=>{let c=b.get(a.id);return c?{...a,...c.content?{content:a.content+c.content}:null,...c.reasoning?{reasoning:(a.reasoning??"")+c.reasoning}:null}:a}))},[]),t=(0,b.useCallback)(()=>{if(null===r.current){if("u"<typeof requestAnimationFrame)return void s();r.current=requestAnimationFrame(s)}},[s]),u=(0,b.useCallback)(()=>{null!==r.current&&"u">typeof cancelAnimationFrame&&cancelAnimationFrame(r.current),r.current=null},[]);(0,b.useEffect)(()=>u,[u]);let v=(0,b.useCallback)(()=>{l.current?.abort()},[]),w=(0,b.useCallback)(()=>{l.current?.abort(),n.current=[],g([]),k(null)},[]),x=(0,b.useCallback)(a=>{l.current?.abort(),n.current=a,g(a),k(null)},[]),y=(0,b.useCallback)(async(a,b,d)=>{let e=o.current,f=new AbortController;l.current=f;let h={current:!1},j={current:!1},p=b=>{g(c=>c.map(c=>c.id===a?{...c,...b}:c))};try{let g={activeInstance:e.activeInstance,providerId:e.providerId,model:e.model,messages:b,systemPrompt:e.systemPrompt,temperature:e.temperature,rag:e.rag,...e.memory?{memory:{...e.memory,turnId:d}}:{}};for await(let b of c(g,f.signal))if("query.rewritten"===b.type)p({retrievalQuery:b.query,retrievalQueryRewritten:b.query!==b.original});else if("query.fallback"===b.type)p({retrievalQuery:b.original,retrievalQueryRewritten:!1,queryRewriteFailed:!0,queryRewriteError:b.reason});else if("retrieval.done"===b.type)p({retrievedChunks:b.chunks,retrievalGroups:b.byKnowledgeBase});else if("memory.start"===b.type)p({memoryQuery:b.query});else if("memory.done"===b.type)p({memoryHits:b.hits});else if("memory.save.skipped"===b.type)console.warn("[chat] memory.save.skipped:",b.reason);else if("reasoning.delta"===b.type){let c=q.current.get(a)??{};c.reasoning=(c.reasoning??"")+b.delta,q.current.set(a,c),h.current||(h.current=!0,p({reasoningStartedAt:Date.now()})),t()}else if("content.delta"===b.type){let c=q.current.get(a)??{};c.content=(c.content??"")+b.delta,q.current.set(a,c),h.current&&!j.current&&(j.current=!0,p({reasoningCompletedAt:Date.now()})),t()}else if("error"===b.type){u(),s();let a={status:"error",errorMessage:`${b.code}: ${b.message}`};h.current&&!j.current&&(a.reasoningCompletedAt=Date.now()),p(a),k(b.message);break}else if("done"===b.type){u(),s();let a={status:"done"};h.current&&!j.current&&(a.reasoningCompletedAt=Date.now()),p(a);break}}catch(c){u(),s();let a=c instanceof DOMException&&"AbortError"===c.name,b=h.current&&!j.current?{reasoningCompletedAt:Date.now()}:void 0;if(a)p({status:"done",...b});else{let a=c instanceof Error?c.message:String(c);p({status:"error",errorMessage:a,...b}),k(a)}}finally{i(!1),l.current=null;let a=m.current;a&&a(n.current)}},[t,s,u]),z=(0,b.useCallback)(async a=>{let b=a.trim();if(!b||p.current)return;let c=o.current;if(!c.providerId||!c.model)return void k("请先选择模型与 Provider");k(null);let d=(0,e.newId)("turn"),f={id:(0,e.newId)(),role:"user",content:b,createdAt:Date.now(),status:"done",turnId:d},h=(0,e.newId)(),j=(c.rag?.knowledgeBases?.length??0)>0,l={id:h,role:"assistant",content:"",reasoning:"",createdAt:Date.now(),status:"streaming",usingRag:j},m=[...n.current,f].map(a=>({role:a.role,content:a.content})),q=[...n.current,f,l];n.current=q,g(q),i(!0),await y(h,m,d)},[y]),A=(0,b.useCallback)(async a=>{if(p.current)return;let b=o.current;if(!b.providerId||!b.model)return void k("请先选择模型与 Provider");let c=(0,f.truncateUpToAndIncluding)(n.current,a),d=c[c.length-1];if(!d||"user"!==d.role)return;let h=d.turnId??(0,e.newId)("turn");if(!d.turnId){let a=c.length-1;c[a]={...d,turnId:h}}k(null);let j=(0,e.newId)(),l=(b.rag?.knowledgeBases?.length??0)>0,m={id:j,role:"assistant",content:"",reasoning:"",createdAt:Date.now(),status:"streaming",usingRag:l},q=c.map(a=>({role:a.role,content:a.content})),r=[...c,m];n.current=r,g(r),i(!0),await y(j,q,h)},[y]);return{messages:d,isStreaming:h,error:j,send:z,reissueTurn:A,deleteMessage:(0,b.useCallback)((a,b)=>{if(p.current)return;let c=n.current,d=c.find(b=>b.id===a);if(!d)return;let e="user"===d.role&&b?.withNextAssistant?(0,f.removePair)(c,a):(0,f.removeAt)(c,a);n.current=e,g(e),m.current?.(e)},[]),editUserMessage:(0,b.useCallback)((a,b)=>{let c=n.current,d=c.findIndex(b=>b.id===a);if(d<0||"user"!==c[d].role)return null;let e=c.slice();return e[d]={...c[d],content:b},n.current=e,g(e),a},[]),stop:v,clear:w,setMessages:x}}],409135)},582424,a=>{"use strict";var b=a.i(739096);a.s(["useActiveInstance",0,function(){let{context:a,ready:c}=(0,b.useRuntimeContext)();return{activeInstance:a.activeInstance,ready:c,dataScopeKey:a.dataScopeKey,configRevision:a.configRevision}}])}];
|
|
1
|
+
module.exports=[898018,a=>{"use strict";let b=(0,a.i(750053).default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);a.s(["Send",0,b],898018)},431710,a=>{"use strict";let b=(0,a.i(750053).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);a.s(["Square",0,b],431710)},531687,a=>{"use strict";let b=(0,a.i(750053).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",0,b],531687)},542216,a=>a.a(async(b,c)=>{try{let b=await a.y("shiki-2963fa3a20578463");a.n(b),c()}catch(a){c(a)}},!0),23195,a=>a.a(async(b,c)=>{try{let b=await a.y("shiki-2963fa3a20578463/engine/javascript");a.n(b),c()}catch(a){c(a)}},!0),828778,a=>a.a(async(b,c)=>{try{var d=a.i(542216),e=a.i(23195),f=b([d,e]);[d,e]=f.then?(await f)():f;var g=(0,e.createJavaScriptRegexEngine)({forgiving:!0}),h=Object.fromEntries(d.bundledLanguagesInfo.flatMap(a=>{var b;return(null!=(b=a.aliases)?b:[]).map(b=>[b,a.id])})),i=new Set(Object.keys(d.bundledLanguages)),j=a=>{let b=a.trim().toLowerCase();return h[b]||(i.has(b),b)},k=new Map,l=new Map,m=new Map,n=a=>{var b;return"string"==typeof a?a:null!=(b=a.name)?b:"custom"},o=function(a={}){var b;let c=null!=(b=a.themes)?b:["github-light","github-dark"];return{name:"shiki",type:"code-highlighter",supportsLanguage(a){let b=j(a);return i.has(b)},getSupportedLanguages:()=>Array.from(i),getThemes:()=>c,highlight({code:a,language:b,themes:c},e){let f,h,o=j(b),p=[n(c[0]),n(c[1])],q=(f=a.slice(0,100),h=a.length>100?a.slice(-100):"",`${o}:${p[0]}:${p[1]}:${a.length}:${f}:${h}`);if(l.has(q))return l.get(q);e&&(m.has(q)||m.set(q,new Set),m.get(q).add(e));let r=i.has(o)?o:"text";return((a,b)=>{let c=`${a}-${n(b[0])}-${n(b[1])}`;if(k.has(c))return k.get(c);let e=(0,d.createHighlighter)({themes:b,langs:[a],engine:g});return k.set(c,e),e})(r,c).then(b=>{let c=b.getLoadedLanguages().includes(o)?o:"text",d=b.codeToTokens(a,{lang:c,themes:{light:p[0],dark:p[1]}});l.set(q,d);let e=m.get(q);if(e){for(let a of e)a(d);m.delete(q)}}).catch(a=>{console.error("[Streamdown Code] Failed to highlight code:",a),m.delete(q)}),null}}}();a.s(["code",0,o]),c()}catch(a){c(a)}},!1),626925,a=>{"use strict";a.i(702617),a.s([])},946400,a=>{"use strict";var b=a.i(702617);a.s(["Streamdown",()=>b.C])},693280,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(53520),e=a.i(16772),f=a.i(364565);a.s(["CodeBlock",0,function({className:a,children:g,node:h,...i}){let j=(0,c.useRef)(null),[k,l]=(0,c.useState)(!1),m=function(a){for(let b of c.Children.toArray(a)){if(!(0,c.isValidElement)(b))continue;let a=b.props;if("string"!=typeof a?.className)continue;let d=a.className.match(/language-([a-z0-9+#-]+)/i);if(d)return d[1]}}(g)??"",n=(0,c.useCallback)(async()=>{let a=j.current?.innerText??"";if(a)try{await navigator.clipboard.writeText(a),l(!0),window.setTimeout(()=>l(!1),2e3)}catch{}},[]);return(0,b.jsxs)("div",{className:"group relative my-2 overflow-hidden rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.5)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.8)] px-3 py-1.5",children:[(0,b.jsx)("span",{className:"font-mono text-[11px] uppercase tracking-wide text-muted-foreground",children:m||"text"}),(0,b.jsx)("button",{type:"button",onClick:n,className:(0,f.cn)("inline-flex items-center gap-1 rounded px-2 py-0.5 text-[11px] text-muted-foreground","opacity-0 transition-opacity hover:bg-[hsl(var(--accent))] hover:text-foreground","group-hover:opacity-100 focus-visible:opacity-100",k&&"opacity-100 text-primary"),"aria-label":"复制代码",children:k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),"已复制"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.Copy,{className:"h-3 w-3"}),"复制"]})})]}),(0,b.jsx)("pre",{ref:j,className:(0,f.cn)("overflow-x-auto p-3 text-xs leading-relaxed","[&_code]:bg-transparent [&_code]:p-0",a),...i,children:g})]})}])},613562,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(828778);a.i(626925);var f=a.i(946400),g=a.i(364565),h=a.i(693280),i=b([e]);[e]=i.then?(await i)():i;let j=["https://","http://","mailto:","#","/"],k=["https://","data:image/"],l=(a,b)=>{let c=a.toLowerCase();return("src"===b?k:j).some(a=>c.startsWith(a))?a:""};a.s(["Markdown",0,function({children:a,className:b}){return(0,d.jsx)("div",{className:(0,g.cn)("text-sm leading-relaxed text-foreground/90","[&_p]:my-2 [&_ul]:my-2 [&_ol]:my-2 [&_li]:my-0.5","[&_ul]:list-disc [&_ul]:pl-5 [&_ol]:list-decimal [&_ol]:pl-5","[&_h1]:mt-4 [&_h1]:mb-2 [&_h1]:text-lg [&_h1]:font-semibold","[&_h2]:mt-3 [&_h2]:mb-2 [&_h2]:text-base [&_h2]:font-semibold","[&_h3]:mt-3 [&_h3]:mb-1.5 [&_h3]:text-sm [&_h3]:font-semibold","[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2","[&_:not(pre)>code]:rounded [&_:not(pre)>code]:bg-[hsl(var(--muted))] [&_:not(pre)>code]:px-1 [&_:not(pre)>code]:py-0.5 [&_:not(pre)>code]:text-[0.85em]","[&_table]:my-2 [&_table]:w-full [&_table]:border-collapse","[&_th]:border [&_th]:border-[hsl(var(--border))] [&_th]:px-2 [&_th]:py-1 [&_th]:text-left [&_th]:font-semibold","[&_td]:border [&_td]:border-[hsl(var(--border))] [&_td]:px-2 [&_td]:py-1","[&_blockquote]:my-2 [&_blockquote]:border-l-2 [&_blockquote]:border-[hsl(var(--border))] [&_blockquote]:pl-3 [&_blockquote]:text-muted-foreground","[&_hr]:my-3 [&_hr]:border-[hsl(var(--border))]",b),children:(0,d.jsx)(f.Streamdown,{parseIncompleteMarkdown:!0,skipHtml:!0,urlTransform:l,plugins:{code:e.code},components:{pre:h.CodeBlock},controls:{code:!1,table:!1,mermaid:!1},children:a})})}]),c()}catch(a){c(a)}},!1),973570,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(971938),f=a.i(531687),g=a.i(637102),h=a.i(342210),i=a.i(147845),j=a.i(201927),k=a.i(16772),l=a.i(112537),m=a.i(616106),n=a.i(160318),o=a.i(898018),p=a.i(655295),q=a.i(263265),r=a.i(776192),s=a.i(36890),t=a.i(27692),u=a.i(470535),v=a.i(843836),w=a.i(324567),x=a.i(364565),y=a.i(867558),z=a.i(613562),A=b([z]);function B(a){try{let b=document.createElement("textarea");b.value=a,b.style.position="fixed",b.style.opacity="0",document.body.appendChild(b),b.select(),document.execCommand("copy"),document.body.removeChild(b),q.toast.success("已复制")}catch{q.toast.error("复制失败")}}[z]=A.then?(await A)():A;let O=(0,e.memo)(function({message:a,busy:b,onDelete:c,onResend:e,onRegenerate:f,onEditSave:g}){return"user"===a.role?(0,d.jsx)(G,{message:a,busy:b,onDelete:c,onResend:e,onEditSave:g}):(0,d.jsx)(H,{message:a,busy:b,onDelete:c,onRegenerate:f})},(a,b)=>a.message===b.message&&a.busy===b.busy);function C({align:a,disabled:b,onCopy:c,onDelete:e,onEdit:f,onResend:g,onRegenerate:h}){return(0,d.jsxs)("div",{className:(0,x.cn)("mt-1 flex items-center gap-0.5 opacity-0 transition-opacity duration-150","group-hover:opacity-100 group-focus-within:opacity-100","group-data-[touched=true]:opacity-100","right"===a?"justify-end":"justify-start"),children:[(0,d.jsx)(D,{title:"复制",disabled:b,onClick:c,children:(0,d.jsx)(k.Copy,{className:"h-3.5 w-3.5"})}),f&&(0,d.jsx)(D,{title:"编辑",disabled:b,onClick:f,children:(0,d.jsx)(l.Pencil,{className:"h-3.5 w-3.5"})}),g&&(0,d.jsx)(D,{title:"重新发送",disabled:b,onClick:g,children:(0,d.jsx)(o.Send,{className:"h-3.5 w-3.5"})}),h&&(0,d.jsx)(D,{title:"重新生成",disabled:b,onClick:h,children:(0,d.jsx)(m.RotateCcw,{className:"h-3.5 w-3.5"})}),(0,d.jsx)(D,{title:"删除",disabled:b,onClick:e,destructive:!0,children:(0,d.jsx)(p.Trash2,{className:"h-3.5 w-3.5"})})]})}function D({title:a,disabled:b,destructive:c,onClick:e,children:f}){return(0,d.jsx)(r.Button,{type:"button",variant:"ghost",size:"icon",title:a,"aria-label":a,disabled:b,onClick:e,className:(0,x.cn)("h-7 w-7 text-muted-foreground hover:text-foreground",c&&"hover:text-[hsl(var(--destructive))] hover:bg-[hsl(var(--destructive))]/10"),children:f})}function E({rewriteFailed:a,rewriteError:b,failedKbCount:c,failedKbDetails:e}){let f=!!a,g=(c??0)>0;return f||g?(0,d.jsxs)("div",{className:"space-y-1.5",children:[f&&(0,d.jsx)(F,{label:"意图重写失败 · 已回退到原问题",detail:b??"rewriter 返回空结果或抛错"}),g&&e&&(0,d.jsx)(F,{label:`${c} 个知识库检索失败`,detail:e.map(a=>`• ${a.name}: ${a.reason}`).join("\n")})]}):null}function F({label:a,detail:b}){let[c,f]=(0,e.useState)(!1);return(0,d.jsxs)("div",{className:"rounded-md border border-amber-500/30 bg-amber-500/5",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>f(a=>!a),className:(0,x.cn)("flex w-full items-center gap-1.5 px-2 py-1 text-xs","text-amber-700 hover:bg-amber-500/10 dark:text-amber-300"),children:[(0,d.jsx)(g.AlertTriangle,{className:"h-3.5 w-3.5 shrink-0"}),(0,d.jsx)("span",{className:"flex-1 text-left",children:a}),(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 opacity-60 transition-transform duration-150",c&&"rotate-180")})]}),c&&(0,d.jsx)("pre",{className:"border-t border-amber-500/20 px-2 py-1.5 text-[11px] leading-relaxed text-amber-700/80 dark:text-amber-300/80 whitespace-pre-wrap font-mono",children:b})]})}function G({message:a,busy:b,onDelete:c,onResend:f,onEditSave:g}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(a.content),[n,o]=(0,e.useState)(!1),[p,t]=(0,e.useState)(!1),[v,x]=(0,e.useState)(!0),y=(0,e.useCallback)(()=>{if(a.content)try{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a.content).then(()=>q.toast.success("已复制"),()=>{B(a.content)}):B(a.content)}catch{B(a.content)}},[a.content]),z=(0,e.useCallback)(()=>{let b=l.trim();if(!b||b===a.content){k(!1),m(a.content);return}k(!1),g(a.id,b)},[l,a.content,a.id,g]),A=(0,e.useCallback)(()=>{m(a.content),k(!1)},[a.content]),D=(0,e.useCallback)(a=>{"Escape"===a.key?(a.preventDefault(),A()):"Enter"===a.key&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),z())},[z,A]);return(0,d.jsxs)("div",{className:"group flex justify-end","data-touched":h?"true":void 0,onClickCapture:()=>i(!0),children:[(0,d.jsxs)("div",{className:"flex max-w-[85%] flex-col items-end",children:[j?(0,d.jsxs)("div",{className:"w-full max-w-2xl rounded-2xl border border-[hsl(var(--primary))] bg-[hsl(var(--background))] p-2",children:[(0,d.jsx)(u.Textarea,{autoFocus:!0,value:l,onChange:a=>m(a.target.value),onKeyDown:D,className:"min-h-[80px] resize-y border-0 p-2 text-sm shadow-none focus-visible:ring-0"}),(0,d.jsxs)("div",{className:"mt-1 flex justify-end gap-2",children:[(0,d.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:A,children:"取消"}),(0,d.jsx)(r.Button,{type:"button",size:"sm",disabled:!l.trim()||l.trim()===a.content,onClick:z,children:"保存并重发"})]})]}):(0,d.jsx)("div",{className:"rounded-2xl rounded-tr-sm bg-[hsl(var(--muted)/0.7)] px-4 py-2.5 text-sm leading-relaxed text-foreground whitespace-pre-wrap",children:a.content}),!j&&(0,d.jsx)(C,{align:"right",disabled:b,onCopy:y,onEdit:()=>{m(a.content),k(!0)},onResend:()=>t(!0),onDelete:()=>o(!0)})]}),(0,d.jsx)(w.ConfirmDialog,{open:n,onOpenChange:o,title:"删除此消息?",description:"该操作不可撤销。",confirmText:"删除",variant:"danger",onConfirm:()=>{c(a.id,{withNextAssistant:v}),o(!1)},children:(0,d.jsxs)("label",{className:"flex items-center gap-2 text-sm text-foreground",children:[(0,d.jsx)(s.Checkbox,{checked:v,onCheckedChange:a=>x(!0===a)}),"同时删除下方的 AI 回复"]})}),(0,d.jsx)(w.ConfirmDialog,{open:p,onOpenChange:t,title:"重新发送此消息?",description:"将丢弃下方所有消息并重新生成回答。",confirmText:"重新发送",onConfirm:()=>{t(!1),f(a.id)}})]})}function H({message:a,busy:b,onDelete:c,onRegenerate:g}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(!1),o="streaming"===a.status,p="error"===a.status,r=(a.reasoning?.length??0)>0,s=(a.content?.length??0)>0,t=r||o&&!s,u=!!a.usingRag&&!a.retrievalQuery,v=!!a.retrievalQuery&&!a.retrievedChunks,x=(a.retrievalGroups??[]).filter(a=>a.error).map(a=>({name:a.knowledgeBaseName,reason:a.error??""})),y=(0,e.useCallback)(()=>{if(a.content)try{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a.content).then(()=>q.toast.success("已复制"),()=>{B(a.content)}):B(a.content)}catch{B(a.content)}},[a.content]);return(0,d.jsxs)("div",{className:"group space-y-3 text-sm leading-relaxed","data-touched":h?"true":void 0,onClickCapture:()=>i(!0),children:[t?(0,d.jsx)(I,{reasoning:a.reasoning??"",streaming:o,startedAt:a.reasoningStartedAt,completedAt:a.reasoningCompletedAt,intentExtracting:u,retrievalInFlight:v}):null,(0,d.jsx)(E,{rewriteFailed:a.queryRewriteFailed,rewriteError:a.queryRewriteError,failedKbCount:x.length,failedKbDetails:x}),a.retrievalQueryRewritten&&a.retrievalQuery?(0,d.jsxs)("div",{className:"inline-flex max-w-full items-center gap-1.5 rounded-md bg-[hsl(var(--muted)/0.4)] px-2 py-1 text-xs text-muted-foreground",children:[(0,d.jsx)(n.Search,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"font-medium shrink-0",children:"检索关键词:"}),(0,d.jsx)("span",{className:"truncate font-mono text-foreground/80",children:a.retrievalQuery})]}):null,a.retrievedChunks&&a.retrievedChunks.length>0?(0,d.jsx)(J,{chunks:a.retrievedChunks,groups:a.retrievalGroups}):null,a.memoryHits&&a.memoryHits.length>0?(0,d.jsx)(M,{hits:a.memoryHits,query:a.memoryQuery}):null,p?(0,d.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--destructive))/0.3] bg-[hsl(var(--destructive))/0.05] px-3 py-2 text-[hsl(var(--destructive))]",children:[(0,d.jsx)(f.AlertCircle,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,d.jsx)("span",{className:"text-xs",children:a.errorMessage??"生成失败"})]}):(0,d.jsxs)("div",{className:"text-foreground/90",children:[(0,d.jsx)(z.Markdown,{children:a.content}),o?(0,d.jsx)("span",{className:"ml-0.5 inline-block h-3.5 w-1.5 animate-pulse bg-foreground align-baseline"}):null]}),(0,d.jsx)(C,{align:"left",disabled:b||o,onCopy:y,onRegenerate:()=>m(!0),onDelete:()=>k(!0)}),(0,d.jsx)(w.ConfirmDialog,{open:j,onOpenChange:k,title:"删除此回复?",description:"该操作不可撤销。",confirmText:"删除",variant:"danger",onConfirm:()=>{c(a.id),k(!1)}}),(0,d.jsx)(w.ConfirmDialog,{open:l,onOpenChange:m,title:"重新生成此回复?",description:"将丢弃下方所有消息并重新生成。",confirmText:"重新生成",onConfirm:()=>{m(!1),g(a.id)}})]})}function I({reasoning:a,streaming:b,startedAt:c,completedAt:f,intentExtracting:g,retrievalInFlight:h}){var k,l;let m,n,o,[p,q]=(0,e.useState)(!1),r=function(a,b){let[c,d]=(0,e.useState)(()=>Date.now());return((0,e.useEffect)(()=>{if(!a||b)return;let c=window.setInterval(()=>d(Date.now()),250);return()=>window.clearInterval(c)},[a,b]),a)?Math.max(0,(b??c)-a):null}(c,f),s=null!=r?(k=r,l=!b||!!f,m=Math.floor(k/1e3),n=Math.floor(m/60),o=m%60,l?0===n?`用时 ${o} 秒`:`用时 ${n} 分 ${o} 秒`:`${n}:${String(o).padStart(2,"0")}`):null,u=b&&!f,v=a.length>0,w="正在思考";return v?w="深度思考中":h?w="正在检索知识库":g&&(w="检索意图提取"),(0,d.jsxs)(t.Collapsible,{open:p,onOpenChange:q,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",disabled:!v,className:(0,x.cn)("group inline-flex items-center gap-2 rounded-full pl-1.5 pr-2.5 py-1 text-xs font-medium transition-all duration-200",u?"bg-[hsl(var(--primary)/0.08)] text-[hsl(var(--primary))] ring-1 ring-[hsl(var(--primary)/0.25)] shadow-[0_0_0_4px_hsl(var(--primary)/0.06)]":"bg-[hsl(var(--muted)/0.6)] text-muted-foreground hover:bg-[hsl(var(--accent))] hover:text-foreground",!v&&"cursor-default"),"aria-live":u?"polite":"off",children:[(0,d.jsxs)("span",{className:"relative inline-flex h-5 w-5 items-center justify-center",children:[u&&(0,d.jsx)("span",{"aria-hidden":!0,className:"absolute inset-0 rounded-full bg-[hsl(var(--primary))] opacity-40 blur-[6px] animate-thinking-aurora"}),(0,d.jsx)(i.Brain,{className:(0,x.cn)("relative h-3.5 w-3.5",u&&"animate-thinking-icon text-[hsl(var(--primary))]")})]}),u?(0,d.jsx)("span",{className:"animate-text-shimmer bg-[linear-gradient(90deg,hsl(var(--primary)/0.55)_0%,hsl(var(--primary))_50%,hsl(var(--primary)/0.55)_100%)] bg-[length:200%_100%] bg-clip-text text-transparent",children:w}):(0,d.jsx)("span",{children:"已深度思考"}),s&&(0,d.jsxs)("span",{className:(0,x.cn)("tabular-nums text-[11px]",u?"text-[hsl(var(--primary)/0.75)]":"text-muted-foreground/80"),children:["· ",s]}),v&&(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 opacity-60 transition-transform duration-200",p&&"rotate-180",u&&"text-[hsl(var(--primary))]")})]})}),v&&(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 border-l-2 border-[hsl(var(--border))] pl-3 text-xs leading-relaxed text-muted-foreground whitespace-pre-wrap",children:a})})]})}function J({chunks:a,groups:b}){let[c,f]=(0,e.useState)(!1),g=new Map;a.forEach((a,b)=>{g.set(`${a.docId}#${a.chunkId}`,b+1)});let i=(b??[]).filter(a=>!a.error),k=(b??[]).filter(a=>a.error),l=i.length>=2||k.length>0;return(0,d.jsxs)(t.Collapsible,{open:c,onOpenChange:f,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-[hsl(var(--accent))] hover:text-foreground",children:[(0,d.jsx)(h.BookOpen,{className:"h-3.5 w-3.5"}),"查看 ",a.length," 个引用",l?(0,d.jsxs)("span",{className:"text-muted-foreground/70",children:["· ",i.length," 个知识库",k.length>0?`(${k.length} 失败)`:""]}):null,(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 transition-transform duration-200",c&&"rotate-180")})]})}),(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 space-y-3",children:l?(0,d.jsxs)(d.Fragment,{children:[i.map(a=>(0,d.jsx)(K,{group:a,indexByKey:g},`ok-${a.knowledgeBaseName}`)),k.map(a=>(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--destructive))/0.3] bg-[hsl(var(--destructive))/0.05] px-3 py-2 text-xs text-[hsl(var(--destructive))]",children:[(0,d.jsx)("span",{className:"font-medium",children:a.knowledgeBaseName}),(0,d.jsxs)("span",{className:"ml-2 text-[hsl(var(--destructive))/0.8]",children:["检索失败:",a.error]})]},`err-${a.knowledgeBaseName}`))]}):(0,d.jsx)("div",{className:"space-y-2",children:a.map((a,b)=>(0,d.jsx)(L,{chunk:a,index:b+1},`${a.docId}-${a.chunkId}`))})})})]})}function K({group:a,indexByKey:b}){return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs font-medium text-muted-foreground",children:[(0,d.jsx)("span",{className:"text-foreground/80",children:a.knowledgeBaseName}),(0,d.jsxs)("span",{children:["· ",a.chunks.length," 条"]})]}),(0,d.jsx)("div",{className:"space-y-2 border-l-2 border-[hsl(var(--border))] pl-3",children:a.chunks.map(a=>{let c=`${a.docId}#${a.chunkId}`,e=b.get(c)??0;return(0,d.jsx)(L,{chunk:a,index:e},`${a.docId}-${a.chunkId}`)})})]})}function L({chunk:a,index:b}){let[c,f]=(0,e.useState)(null),[g,h]=(0,e.useState)(!1),i=a.ossKey?(0,x.extractFileName)(a.ossKey):"未知文件",j=a.chunkType?.toLowerCase()==="image",k=a.imageBase64?a.imageBase64.startsWith("data:")?a.imageBase64:`${y.IMAGE_FALLBACK_DATA_PREFIX}${a.imageBase64}`:void 0;return(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.3)] p-3",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] font-semibold text-primary",children:b>0?b:"–"}),(0,d.jsx)("span",{className:"font-medium text-foreground/80",children:i}),(0,d.jsxs)("span",{children:["Chunk #",a.chunkId]}),j&&(0,d.jsx)("span",{className:"rounded bg-primary/10 px-1 py-0.5 text-[10px] font-medium text-primary",children:"IMAGE"}),(0,d.jsx)("span",{className:"ml-auto font-mono",children:a.score.toFixed(4)})]}),j&&k&&(0,d.jsx)("img",{src:k,alt:`Image chunk #${a.chunkId}`,className:"mt-2 max-w-[180px] max-h-[180px] object-contain rounded border border-border cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>f(k)}),a.content&&(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("p",{className:(0,x.cn)("whitespace-pre-wrap text-xs text-foreground/80 cursor-pointer",!g&&"line-clamp-4",j&&"mt-2"),onClick:()=>h(a=>!a),children:a.content}),!g&&(0,d.jsx)("div",{className:"pointer-events-none absolute bottom-0 left-0 right-0 h-8 bg-gradient-to-t from-[hsl(var(--muted)/0.3)] to-transparent"}),(0,d.jsx)("button",{type:"button",className:"mt-1 text-[10px] text-muted-foreground hover:text-foreground",onClick:()=>h(a=>!a),children:g?"点击收起":"点击展开"})]}),(0,d.jsx)(v.Dialog,{open:!!c,onOpenChange:()=>f(null),children:(0,d.jsxs)(v.DialogContent,{className:"max-w-[90vw] max-h-[90vh] p-2 flex items-center justify-center border-none bg-black/90 data-[state=open]:animate-none data-[state=closed]:animate-none duration-0",children:[(0,d.jsx)(v.DialogTitle,{className:"sr-only",children:"图片放大预览"}),c&&(0,d.jsx)("img",{src:c,alt:"放大预览",className:"max-w-full max-h-[85vh] object-contain"})]})})]})}function M({hits:a,query:b}){let[c,f]=(0,e.useState)(!1);return(0,d.jsxs)(t.Collapsible,{open:c,onOpenChange:f,children:[(0,d.jsx)(t.CollapsibleTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-[hsl(var(--accent))] hover:text-foreground",children:[(0,d.jsx)(i.Brain,{className:"h-3.5 w-3.5"}),"参考 ",a.length," 条记忆",b?(0,d.jsxs)("span",{className:"max-w-[200px] truncate text-muted-foreground/70",children:["· ",b]}):null,(0,d.jsx)(j.ChevronDown,{className:(0,x.cn)("h-3 w-3 transition-transform duration-200",c&&"rotate-180")})]})}),(0,d.jsx)(t.CollapsibleContent,{children:(0,d.jsx)("div",{className:"mt-2 space-y-2",children:a.map((a,b)=>(0,d.jsx)(N,{hit:a,index:b+1},a.unit.memcell_id??`${b}-${(a.unit.text??"").slice(0,16)}`))})})]})}function N({hit:a,index:b}){let c=a.unit.memcell_id,e="number"==typeof a.score?a.score:void 0;return(0,d.jsxs)("div",{className:"rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.3)] p-3",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] font-semibold text-primary",children:b}),c?(0,d.jsx)("span",{className:"min-w-0 truncate font-mono text-foreground/80",title:c,children:c}):(0,d.jsx)("span",{className:"text-muted-foreground/70",children:"未命名记忆"}),a.source?(0,d.jsx)("span",{className:"rounded bg-[hsl(var(--muted))] px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:a.source}):null,(0,d.jsx)("span",{className:"ml-auto shrink-0 font-mono",children:void 0!==e?e.toFixed(4):"—"})]}),(0,d.jsx)("p",{className:"line-clamp-4 whitespace-pre-wrap text-xs text-foreground/80",children:a.unit.text})]})}O.displayName="QaMessage",a.s(["QaMessage",0,O]),c()}catch(a){c(a)}},!1),957900,a=>a.a(async(b,c)=>{try{var d=a.i(634020),e=a.i(971938),f=a.i(688189),g=a.i(898018),h=a.i(431710),i=a.i(776192),j=a.i(470535),k=a.i(310215),l=a.i(364565),m=a.i(973570),n=b([m]);[m]=n.then?(await n)():n,a.s(["QaChatPanel",0,function({messages:a,isStreaming:b,canSend:c,error:n,onSend:o,onStop:p,onDelete:q,onResend:r,onRegenerate:s,onEditSave:t,emptyState:u,disabledPlaceholder:v}){let[w,x]=(0,e.useState)(""),y=(0,e.useRef)(null),z=(0,e.useRef)(a.length);(0,e.useEffect)(()=>{let b=y.current;if(!b)return;let c=a.length>z.current;(z.current=a.length,c)?requestAnimationFrame(()=>{b.scrollTo({top:b.scrollHeight,behavior:"smooth"})}):b.scrollHeight-b.scrollTop-b.clientHeight<120&&b.scrollTo({top:b.scrollHeight,behavior:"smooth"})},[a]);let A=()=>{let a=w.trim();a&&c&&!b&&(o(a),x(""))};return(0,d.jsxs)("div",{className:"flex h-full min-h-0 flex-1 flex-col bg-[hsl(var(--card))]",children:[(0,d.jsx)("div",{ref:y,role:"log","aria-live":"polite","aria-relevant":"additions text","aria-busy":b,className:"flex-1 space-y-6 overflow-y-auto px-6 py-5",children:0===a.length?(0,d.jsx)("div",{className:"flex h-full min-h-[320px] items-center justify-center",children:(0,d.jsx)(k.EmptyState,{icon:f.MessageSquare,title:u?.title??"开始对话",description:u?.description??"输入问题,系统会先从知识库检索相关内容,再让大模型基于检索结果回答",action:u?.actionLabel&&u?.onAction?(0,d.jsx)(i.Button,{type:"button",onClick:u.onAction,children:u.actionLabel}):void 0})}):a.map(a=>(0,d.jsx)(m.QaMessage,{message:a,busy:b,onDelete:q,onResend:r,onRegenerate:s,onEditSave:t},a.id))}),(0,d.jsxs)("div",{className:"border-t border-[hsl(var(--border))] bg-[hsl(var(--surface)/0.6)] px-4 py-3",children:[n&&(0,d.jsx)("p",{className:"mb-2 text-xs text-[hsl(var(--destructive))]",children:n}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsx)(j.Textarea,{value:w,onChange:a=>x(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),A())},placeholder:c?"输入问题,Enter 发送,Shift+Enter 换行":v??"请先在左侧选择模型...",disabled:!c,className:(0,l.cn)("min-h-[44px] max-h-40 resize-none text-sm"),rows:1}),b?(0,d.jsx)(i.Button,{type:"button",variant:"outline",size:"icon",onClick:p,title:"停止",children:(0,d.jsx)(h.Square,{className:"h-4 w-4 fill-current"})}):(0,d.jsx)(i.Button,{type:"button",size:"icon",disabled:!c||!w.trim(),onClick:A,title:"发送",children:(0,d.jsx)(g.Send,{className:"h-4 w-4"})})]})]})]})}]),c()}catch(a){c(a)}},!1),383643,a=>{"use strict";a.s(["newId",0,function(a="id"){return"u">typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():`${a}_${Date.now()}_${Math.random().toString(36).slice(2)}`}])},464363,832191,987951,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(53520),e=a.i(882725),f=a.i(881619),g=a.i(25825),h=a.i(968826),i=a.i(776192),j=a.i(455553),k=a.i(962491),l=a.i(84252),m=a.i(663525),n=a.i(664209),o=a.i(983366),p=a.i(883917),q=a.i(225377),r=a.i(739096),s=a.i(364565);function t({value:a,options:f,onChange:h,disabled:k,fetching:m}){let[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(""),r=p.trim(),u=(0,c.useMemo)(()=>{if(!r)return f;let a=r.toLowerCase();return f.filter(b=>b.toLowerCase().includes(a))},[f,r]),v=f.some(a=>a.toLowerCase()===r.toLowerCase()),w=r.length>0&&!v,x=a=>{h(a),q(""),o(!1)};return(0,b.jsxs)(l.Popover,{open:n,onOpenChange:o,children:[(0,b.jsx)(l.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(i.Button,{type:"button",variant:"outline",role:"combobox","aria-expanded":n,disabled:k,className:"w-full justify-between font-normal",children:[(0,b.jsx)("span",{className:(0,s.cn)("truncate text-left",!a&&"text-[hsl(var(--subtle))]"),children:a||"选择或输入模型名"}),(0,b.jsx)(e.ChevronsUpDown,{className:"h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(l.PopoverContent,{align:"start",className:"w-[var(--radix-popover-trigger-width)] p-0",children:(0,b.jsxs)(j.Command,{shouldFilter:!1,children:[(0,b.jsx)(j.CommandInput,{placeholder:"搜索或输入模型名",value:p,onValueChange:q}),(0,b.jsxs)(j.CommandList,{children:[0!==u.length||w?null:(0,b.jsx)(j.CommandEmpty,{children:m?"正在拉取模型列表...":0===f.length?"点击「刷新列表」拉取可用模型":"无匹配结果"}),u.length>0&&(0,b.jsx)(j.CommandGroup,{heading:w?"可选模型":void 0,children:u.map(c=>(0,b.jsxs)(j.CommandItem,{value:c,onSelect:()=>x(c),children:[(0,b.jsx)(d.Check,{className:(0,s.cn)("h-4 w-4",a===c?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"truncate",children:c})]},c))}),w&&(0,b.jsx)(j.CommandGroup,{heading:"使用自定义",children:(0,b.jsxs)(j.CommandItem,{value:`__custom__${r}`,onSelect:()=>x(r),children:[(0,b.jsx)(g.Plus,{className:"h-4 w-4 text-[hsl(var(--primary))]"}),(0,b.jsxs)("span",{className:"truncate",children:['使用 "',r,'"']})]})})]})]})})]})}a.s(["LLMModelSelector",0,function({providerId:a,model:d,onProviderChange:e,onModelChange:g,autoSelectFirst:j=!1,providerLabel:l="Provider",modelLabel:s="Model"}){let{data:u=[],isLoading:v}=(0,n.useLLMProviders)(),{data:w,isFetching:x,refetch:y}=function(a,b={}){let{context:c,ready:d}=(0,r.useRuntimeContext)();return(0,o.useQuery)({queryKey:q.queryKeys.llmProviderModels(c.dataScopeKey,a),queryFn:()=>(0,p.fetchProviderModels)(a),enabled:d&&!!a&&(b.enabled??!0),staleTime:3e5,retry:!1})}(a||void 0,{enabled:!!a});(0,c.useEffect)(()=>{if(!j||a||0===u.length)return;let b=u[0];e(b.id,b.defaultModel??"")},[j,a,u]);let z=(0,c.useMemo)(()=>{let b=new Set;for(let a of(d&&b.add(d),w??[]))b.add(a.id);let c=u.find(b=>b.id===a);return c?.defaultModel&&b.add(c.defaultModel),Array.from(b)},[d,w,u,a]);return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:l}),(0,b.jsxs)(m.Select,{value:a,onValueChange:a=>{let b=u.find(b=>b.id===a);e(a,b?.defaultModel??"")},disabled:v||0===u.length,children:[(0,b.jsx)(m.SelectTrigger,{children:(0,b.jsx)(m.SelectValue,{placeholder:v?"加载中...":0===u.length?"请先在「模型提供商」中创建配置":"选择 Provider"})}),(0,b.jsx)(m.SelectContent,{children:u.map(a=>(0,b.jsx)(m.SelectItem,{value:a.id,children:a.name},a.id))})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:s}),(0,b.jsxs)(i.Button,{type:"button",variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",disabled:!a||x,onClick:()=>y(),children:[x?(0,b.jsx)(f.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}):(0,b.jsx)(h.RefreshCw,{className:"mr-1 h-3 w-3"}),"刷新列表"]})]}),(0,b.jsx)(t,{value:d,options:z,onChange:g,disabled:!a,fetching:x})]})]})}],464363);var u=a.i(470535);a.s(["SystemPromptInput",0,function({value:a,onChange:c,placeholder:d,helperText:e,rows:f=3,label:g="系统提示词"}){return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(k.Label,{className:"text-sm font-medium",children:g}),(0,b.jsx)(u.Textarea,{rows:f,value:a,onChange:a=>c(a.target.value),placeholder:d,className:"text-sm"}),e&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:e})]})}],832191);var v=a.i(350681);a.s(["TemperatureSlider",0,function({value:a,onChange:c,min:d=0,max:e=2,step:f=.05,fallback:g=.7,label:h="温度"}){let i=(a??g).toFixed(2);return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:h}),(0,b.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:i})]}),(0,b.jsx)(v.Slider,{value:[a??g],min:d,max:e,step:f,onValueChange:a=>c(a[0]??g)})]})}],987951)},776446,a=>{"use strict";a.s(["findUserAnchorAbove",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return null;for(let b=c-1;b>=0;b-=1)if("user"===a[b].role)return a[b];return null},"removeAt",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return a;let d=a.slice();return d.splice(c,1),d},"removePair",0,function(a,b){let c=a.findIndex(a=>a.id===b);if(c<0)return a;let d=a.slice(),e=a[c+1]&&"assistant"===a[c+1].role?2:1;return d.splice(c,e),d},"truncateUpToAndIncluding",0,function(a,b){let c=a.findIndex(a=>a.id===b);return c<0?a:a.slice(0,c+1)}])},409135,a=>{"use strict";var b=a.i(971938);async function*c(a,b){let c=await fetch("/api/v1/llm/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:b});if(!c.ok||!c.body){let a=`Chat request failed with status ${c.status}`,b="STREAM_ERROR";try{let d=await c.json();a=d.message??a,b=d.code??b}catch{}yield{type:"error",code:b,message:a};return}let e=c.body.getReader(),f=new TextDecoder("utf-8"),g="";for(;;){let{value:a,done:b}=await e.read();if(b)break;let c=(g+=f.decode(a,{stream:!0})).indexOf("\n\n");for(;-1!==c;){let a=g.slice(0,c);g=g.slice(c+2);let b=d(a);b&&(yield b),c=g.indexOf("\n\n")}}if(g.trim()){let a=d(g);a&&(yield a)}}function d(a){let b=a.split("\n"),c=[];for(let a of b)!(!a||a.startsWith(":"))&&a.startsWith("data:")&&c.push(a.slice(5).trimStart());if(0===c.length)return null;try{return JSON.parse(c.join("\n"))}catch{return null}}var e=a.i(383643),f=a.i(776446);a.s(["useQaChat",0,function(a){let[d,g]=(0,b.useState)([]),[h,i]=(0,b.useState)(!1),[j,k]=(0,b.useState)(null),l=(0,b.useRef)(null),m=(0,b.useRef)(a.onPersist);m.current=a.onPersist;let n=(0,b.useRef)(d);n.current=d;let o=(0,b.useRef)(a);o.current=a;let p=(0,b.useRef)(h);p.current=h;let q=(0,b.useRef)(new Map),r=(0,b.useRef)(null),s=(0,b.useCallback)(()=>{r.current=null;let a=q.current;if(0===a.size)return;let b=new Map(a);a.clear(),g(a=>a.map(a=>{let c=b.get(a.id);return c?{...a,...c.content?{content:a.content+c.content}:null,...c.reasoning?{reasoning:(a.reasoning??"")+c.reasoning}:null}:a}))},[]),t=(0,b.useCallback)(()=>{if(null===r.current){if("u"<typeof requestAnimationFrame)return void s();r.current=requestAnimationFrame(s)}},[s]),u=(0,b.useCallback)(()=>{null!==r.current&&"u">typeof cancelAnimationFrame&&cancelAnimationFrame(r.current),r.current=null},[]);(0,b.useEffect)(()=>u,[u]);let v=(0,b.useCallback)(()=>{l.current?.abort()},[]),w=(0,b.useCallback)(()=>{l.current?.abort(),n.current=[],g([]),k(null)},[]),x=(0,b.useCallback)(a=>{l.current?.abort(),n.current=a,g(a),k(null)},[]),y=(0,b.useCallback)(async(a,b,d)=>{let e=o.current,f=new AbortController;l.current=f;let h={current:!1},j={current:!1},p=b=>{g(c=>c.map(c=>c.id===a?{...c,...b}:c))};try{let g={activeInstance:e.activeInstance,providerId:e.providerId,model:e.model,messages:b,systemPrompt:e.systemPrompt,temperature:e.temperature,rag:e.rag,...e.memory?{memory:{...e.memory,turnId:d}}:{}};for await(let b of c(g,f.signal))if("query.rewritten"===b.type)p({retrievalQuery:b.query,retrievalQueryRewritten:b.query!==b.original});else if("query.fallback"===b.type)p({retrievalQuery:b.original,retrievalQueryRewritten:!1,queryRewriteFailed:!0,queryRewriteError:b.reason});else if("retrieval.done"===b.type)p({retrievedChunks:b.chunks,retrievalGroups:b.byKnowledgeBase});else if("memory.start"===b.type)p({memoryQuery:b.query});else if("memory.done"===b.type)p({memoryHits:b.hits});else if("memory.save.skipped"===b.type)console.warn("[chat] memory.save.skipped:",b.reason);else if("reasoning.delta"===b.type){let c=q.current.get(a)??{};c.reasoning=(c.reasoning??"")+b.delta,q.current.set(a,c),h.current||(h.current=!0,p({reasoningStartedAt:Date.now()})),t()}else if("content.delta"===b.type){let c=q.current.get(a)??{};c.content=(c.content??"")+b.delta,q.current.set(a,c),h.current&&!j.current&&(j.current=!0,p({reasoningCompletedAt:Date.now()})),t()}else if("error"===b.type){u(),s();let a={status:"error",errorMessage:`${b.code}: ${b.message}`};h.current&&!j.current&&(a.reasoningCompletedAt=Date.now()),p(a),k(b.message);break}else if("done"===b.type){u(),s();let a={status:"done"};h.current&&!j.current&&(a.reasoningCompletedAt=Date.now()),p(a);break}}catch(c){u(),s();let a=c instanceof DOMException&&"AbortError"===c.name,b=h.current&&!j.current?{reasoningCompletedAt:Date.now()}:void 0;if(a)p({status:"done",...b});else{let a=c instanceof Error?c.message:String(c);p({status:"error",errorMessage:a,...b}),k(a)}}finally{i(!1),l.current=null;let a=m.current;a&&a(n.current)}},[t,s,u]),z=(0,b.useCallback)(async a=>{let b=a.trim();if(!b||p.current)return;let c=o.current;if(!c.providerId||!c.model)return void k("请先选择模型与 Provider");k(null);let d=(0,e.newId)("turn"),f={id:(0,e.newId)(),role:"user",content:b,createdAt:Date.now(),status:"done",turnId:d},h=(0,e.newId)(),j=(c.rag?.knowledgeBases?.length??0)>0,l={id:h,role:"assistant",content:"",reasoning:"",createdAt:Date.now(),status:"streaming",usingRag:j},m=[...n.current,f].map(a=>({role:a.role,content:a.content})),q=[...n.current,f,l];n.current=q,g(q),i(!0),await y(h,m,d)},[y]),A=(0,b.useCallback)(async a=>{if(p.current)return;let b=o.current;if(!b.providerId||!b.model)return void k("请先选择模型与 Provider");let c=(0,f.truncateUpToAndIncluding)(n.current,a),d=c[c.length-1];if(!d||"user"!==d.role)return;let h=d.turnId??(0,e.newId)("turn");if(!d.turnId){let a=c.length-1;c[a]={...d,turnId:h}}k(null);let j=(0,e.newId)(),l=(b.rag?.knowledgeBases?.length??0)>0,m={id:j,role:"assistant",content:"",reasoning:"",createdAt:Date.now(),status:"streaming",usingRag:l},q=c.map(a=>({role:a.role,content:a.content})),r=[...c,m];n.current=r,g(r),i(!0),await y(j,q,h)},[y]);return{messages:d,isStreaming:h,error:j,send:z,reissueTurn:A,deleteMessage:(0,b.useCallback)((a,b)=>{if(p.current)return;let c=n.current,d=c.find(b=>b.id===a);if(!d)return;let e="user"===d.role&&b?.withNextAssistant?(0,f.removePair)(c,a):(0,f.removeAt)(c,a);n.current=e,g(e),m.current?.(e)},[]),editUserMessage:(0,b.useCallback)((a,b)=>{let c=n.current,d=c.findIndex(b=>b.id===a);if(d<0||"user"!==c[d].role)return null;let e=c.slice();return e[d]={...c[d],content:b},n.current=e,g(e),a},[]),stop:v,clear:w,setMessages:x}}],409135)},582424,a=>{"use strict";var b=a.i(739096);a.s(["useActiveInstance",0,function(){let{context:a,ready:c}=(0,b.useRuntimeContext)();return{activeInstance:a.activeInstance,ready:c,dataScopeKey:a.dataScopeKey,configRevision:a.configRevision}}])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0st_2qm._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[310215,a=>{"use strict";var b=a.i(634020);a.s(["EmptyState",0,function({icon:a,title:c,description:d,action:e,illustration:f}){return(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 px-4 text-center",children:[f??(0,b.jsx)("div",{className:"mb-5 flex h-20 w-20 items-center justify-center rounded-full bg-[hsl(var(--primary)/0.08)] ring-8 ring-[hsl(var(--primary)/0.04)]",children:(0,b.jsx)(a,{className:"text-primary",size:36,strokeWidth:1.75})}),(0,b.jsx)("h3",{className:"mb-2 text-base font-semibold text-foreground",children:c}),(0,b.jsx)("p",{className:"mb-6 max-w-sm text-sm text-muted-foreground",children:d}),e&&(0,b.jsx)("div",{children:e})]})}])},473524,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(364565);let e=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))] shadow-sm",a),...c}));e.displayName="Card",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex flex-col space-y-1 px-5 pt-5 pb-3 border-b border-[hsl(var(--border-light))]",a),...c})).displayName="CardHeader",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-base font-semibold leading-tight",a),...c})).displayName="CardTitle",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-sm text-[hsl(var(--muted-foreground))]",a),...c})).displayName="CardDescription";let f=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("px-5 py-4",a),...c}));f.displayName="CardContent",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex items-center px-5 py-3 border-t border-[hsl(var(--border-light))]",a),...c})).displayName="CardFooter";let g=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))] shadow-sm","transition-[transform,box-shadow,border-color] duration-200 ease-[cubic-bezier(0.34,1.56,0.64,1)]","hover:border-[hsl(var(--primary))] hover:shadow-primary-soft",a),...c}));g.displayName="CardInteractive",a.s(["Card",0,e,"CardContent",0,f,"CardInteractive",0,g])},16772,a=>{"use strict";let b=(0,a.i(750053).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",0,b],16772)},350681,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(48972),e=a.i(559653),f=a.i(268189),g=a.i(484694),h=a.i(483370),i=a.i(274974),j=a.i(420251),k=a.i(866394),l=a.i(558036),m=a.i(917021),n=["PageUp","PageDown"],o=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],p={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},q="Slider",[r,s,t]=(0,m.createCollection)(q),[u,v]=(0,g.createContextScope)(q,[t]),[w,x]=u(q),y=c.forwardRef((a,f)=>{let{name:g,min:i=0,max:j=100,step:k=1,orientation:l="horizontal",disabled:m=!1,minStepsBetweenThumbs:p=0,defaultValue:q=[i],value:s,onValueChange:t=()=>{},onValueCommit:u=()=>{},inverted:v=!1,form:x,...y}=a,z=c.useRef(new Set),A=c.useRef(0),D="horizontal"===l,[E=[],F]=(0,h.useControllableState)({prop:s,defaultProp:q,onChange:a=>{let b=[...z.current];b[A.current]?.focus(),t(a)}}),G=c.useRef(E);function H(a,b,{commit:c}={commit:!1}){let e,f=(String(k).split(".")[1]||"").length,g=Math.round((Math.round((a-i)/k)*k+i)*(e=Math.pow(10,f)))/e,h=(0,d.clamp)(g,[i,j]);F((a=[])=>{let d=function(a=[],b,c){let d=[...a];return d[c]=b,d.sort((a,b)=>a-b)}(a,h,b);if(!function(a,b){if(b>0)return Math.min(...a.slice(0,-1).map((b,c)=>a[c+1]-b))>=b;return!0}(d,p*k))return a;{A.current=d.indexOf(h);let b=String(d)!==String(a);return b&&c&&u(d),b?d:a}})}return(0,b.jsx)(w,{scope:a.__scopeSlider,name:g,disabled:m,min:i,max:j,valueIndexToChangeRef:A,thumbs:z.current,values:E,orientation:l,form:x,children:(0,b.jsx)(r.Provider,{scope:a.__scopeSlider,children:(0,b.jsx)(r.Slot,{scope:a.__scopeSlider,children:(0,b.jsx)(D?B:C,{"aria-disabled":m,"data-disabled":m?"":void 0,...y,ref:f,onPointerDown:(0,e.composeEventHandlers)(y.onPointerDown,()=>{m||(G.current=E)}),min:i,max:j,inverted:v,onSlideStart:m?void 0:function(a){let b=function(a,b){if(1===a.length)return 0;let c=a.map(a=>Math.abs(a-b)),d=Math.min(...c);return c.indexOf(d)}(E,a);H(a,b)},onSlideMove:m?void 0:function(a){H(a,A.current)},onSlideEnd:m?void 0:function(){let a=G.current[A.current];E[A.current]!==a&&u(E)},onHomeKeyDown:()=>!m&&H(i,0,{commit:!0}),onEndKeyDown:()=>!m&&H(j,E.length-1,{commit:!0}),onStepKeyDown:({event:a,direction:b})=>{if(!m){let c=n.includes(a.key)||a.shiftKey&&o.includes(a.key),d=A.current;H(E[d]+k*(c?10:1)*b,d,{commit:!0})}}})})})})});y.displayName=q;var[z,A]=u(q,{startEdge:"left",endEdge:"right",size:"width",direction:1}),B=c.forwardRef((a,d)=>{let{min:e,max:g,dir:h,inverted:j,onSlideStart:k,onSlideMove:l,onSlideEnd:m,onStepKeyDown:n,...o}=a,[q,r]=c.useState(null),s=(0,f.useComposedRefs)(d,a=>r(a)),t=c.useRef(void 0),u=(0,i.useDirection)(h),v="ltr"===u,w=v&&!j||!v&&j;function x(a){let b=t.current||q.getBoundingClientRect(),c=N([0,b.width],w?[e,g]:[g,e]);return t.current=b,c(a-b.left)}return(0,b.jsx)(z,{scope:a.__scopeSlider,startEdge:w?"left":"right",endEdge:w?"right":"left",direction:w?1:-1,size:"width",children:(0,b.jsx)(D,{dir:u,"data-orientation":"horizontal",...o,ref:s,style:{...o.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:a=>{let b=x(a.clientX);k?.(b)},onSlideMove:a=>{let b=x(a.clientX);l?.(b)},onSlideEnd:()=>{t.current=void 0,m?.()},onStepKeyDown:a=>{let b=p[w?"from-left":"from-right"].includes(a.key);n?.({event:a,direction:b?-1:1})}})})}),C=c.forwardRef((a,d)=>{let{min:e,max:g,inverted:h,onSlideStart:i,onSlideMove:j,onSlideEnd:k,onStepKeyDown:l,...m}=a,n=c.useRef(null),o=(0,f.useComposedRefs)(d,n),q=c.useRef(void 0),r=!h;function s(a){let b=q.current||n.current.getBoundingClientRect(),c=N([0,b.height],r?[g,e]:[e,g]);return q.current=b,c(a-b.top)}return(0,b.jsx)(z,{scope:a.__scopeSlider,startEdge:r?"bottom":"top",endEdge:r?"top":"bottom",size:"height",direction:r?1:-1,children:(0,b.jsx)(D,{"data-orientation":"vertical",...m,ref:o,style:{...m.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:a=>{let b=s(a.clientY);i?.(b)},onSlideMove:a=>{let b=s(a.clientY);j?.(b)},onSlideEnd:()=>{q.current=void 0,k?.()},onStepKeyDown:a=>{let b=p[r?"from-bottom":"from-top"].includes(a.key);l?.({event:a,direction:b?-1:1})}})})}),D=c.forwardRef((a,c)=>{let{__scopeSlider:d,onSlideStart:f,onSlideMove:g,onSlideEnd:h,onHomeKeyDown:i,onEndKeyDown:j,onStepKeyDown:k,...m}=a,p=x(q,d);return(0,b.jsx)(l.Primitive.span,{...m,ref:c,onKeyDown:(0,e.composeEventHandlers)(a.onKeyDown,a=>{"Home"===a.key?(i(a),a.preventDefault()):"End"===a.key?(j(a),a.preventDefault()):n.concat(o).includes(a.key)&&(k(a),a.preventDefault())}),onPointerDown:(0,e.composeEventHandlers)(a.onPointerDown,a=>{let b=a.target;b.setPointerCapture(a.pointerId),a.preventDefault(),p.thumbs.has(b)?b.focus():f(a)}),onPointerMove:(0,e.composeEventHandlers)(a.onPointerMove,a=>{a.target.hasPointerCapture(a.pointerId)&&g(a)}),onPointerUp:(0,e.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&(b.releasePointerCapture(a.pointerId),h(a))})})}),E="SliderTrack",F=c.forwardRef((a,c)=>{let{__scopeSlider:d,...e}=a,f=x(E,d);return(0,b.jsx)(l.Primitive.span,{"data-disabled":f.disabled?"":void 0,"data-orientation":f.orientation,...e,ref:c})});F.displayName=E;var G="SliderRange",H=c.forwardRef((a,d)=>{let{__scopeSlider:e,...g}=a,h=x(G,e),i=A(G,e),j=c.useRef(null),k=(0,f.useComposedRefs)(d,j),m=h.values.length,n=h.values.map(a=>M(a,h.min,h.max)),o=m>1?Math.min(...n):0,p=100-Math.max(...n);return(0,b.jsx)(l.Primitive.span,{"data-orientation":h.orientation,"data-disabled":h.disabled?"":void 0,...g,ref:k,style:{...a.style,[i.startEdge]:o+"%",[i.endEdge]:p+"%"}})});H.displayName=G;var I="SliderThumb",J=c.forwardRef((a,d)=>{let e=s(a.__scopeSlider),[g,h]=c.useState(null),i=(0,f.useComposedRefs)(d,a=>h(a)),j=c.useMemo(()=>g?e().findIndex(a=>a.ref.current===g):-1,[e,g]);return(0,b.jsx)(K,{...a,ref:i,index:j})}),K=c.forwardRef((a,d)=>{var g,h,i,j,m;let n,o,{__scopeSlider:p,index:q,name:s,...t}=a,u=x(I,p),v=A(I,p),[w,y]=c.useState(null),z=(0,f.useComposedRefs)(d,a=>y(a)),B=!w||u.form||!!w.closest("form"),C=(0,k.useSize)(w),D=u.values[q],E=void 0===D?0:M(D,u.min,u.max),F=(g=q,(h=u.values.length)>2?`Value ${g+1} of ${h}`:2===h?["Minimum","Maximum"][g]:void 0),G=C?.[v.size],H=G?(i=G,j=E,m=v.direction,o=N([0,50],[0,n=i/2]),(n-o(j)*m)*m):0;return c.useEffect(()=>{if(w)return u.thumbs.add(w),()=>{u.thumbs.delete(w)}},[w,u.thumbs]),(0,b.jsxs)("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[v.startEdge]:`calc(${E}% + ${H}px)`},children:[(0,b.jsx)(r.ItemSlot,{scope:a.__scopeSlider,children:(0,b.jsx)(l.Primitive.span,{role:"slider","aria-label":a["aria-label"]||F,"aria-valuemin":u.min,"aria-valuenow":D,"aria-valuemax":u.max,"aria-orientation":u.orientation,"data-orientation":u.orientation,"data-disabled":u.disabled?"":void 0,tabIndex:u.disabled?void 0:0,...t,ref:z,style:void 0===D?{display:"none"}:a.style,onFocus:(0,e.composeEventHandlers)(a.onFocus,()=>{u.valueIndexToChangeRef.current=q})})}),B&&(0,b.jsx)(L,{name:s??(u.name?u.name+(u.values.length>1?"[]":""):void 0),form:u.form,value:D},q)]})});J.displayName=I;var L=c.forwardRef(({__scopeSlider:a,value:d,...e},g)=>{let h=c.useRef(null),i=(0,f.useComposedRefs)(h,g),k=(0,j.usePrevious)(d);return c.useEffect(()=>{let a=h.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;if(k!==d&&b){let c=new Event("input",{bubbles:!0});b.call(a,d),a.dispatchEvent(c)}},[k,d]),(0,b.jsx)(l.Primitive.input,{style:{display:"none"},...e,ref:i,defaultValue:d})});function M(a,b,c){return(0,d.clamp)(100/(c-b)*(a-b),[0,100])}function N(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}L.displayName="RadioBubbleInput";var O=a.i(364565);let P=c.forwardRef(({className:a,...c},d)=>(0,b.jsxs)(y,{ref:d,className:(0,O.cn)("relative flex w-full touch-none select-none items-center",a),...c,children:[(0,b.jsx)(F,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-[hsl(var(--muted))]",children:(0,b.jsx)(H,{className:"absolute h-full bg-[hsl(var(--primary))]"})}),(0,b.jsx)(J,{className:"block h-4 w-4 rounded-full border border-[hsl(var(--primary))] bg-[hsl(var(--background))] shadow-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"})]}));P.displayName=y.displayName,a.s(["Slider",0,P],350681)},99947,a=>{"use strict";let b=(0,a.i(750053).default)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]);a.s(["Upload",0,b],99947)},199016,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(71562),e=a.i(771071),f=a.i(53520),g=a.i(750053);let h=(0,g.default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);var i=a.i(16772);let j=(0,g.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);var k=a.i(160318),l=a.i(99947),m=a.i(414151),n=a.i(263265),o=a.i(776192),p=a.i(172518),q=a.i(692942),r=a.i(84252),s=a.i(434841),t=a.i(436965),u=a.i(418236),v=a.i(493078),w=a.i(15325);function x(a,b,c){let d=(0,v.assembleRetrievalConfiguration)(b,void 0)??{};c&&(d.filter=c);let e={knowledgeBaseName:a,retrievalQuery:"IMAGE"===b.queryType&&b.imageInput?{type:"IMAGE",imageBase64:b.imageInput,...b.query?{text:b.query}:{}}:{type:"TEXT",text:b.query??""}};return b.subspace?.length&&(e.subspace=b.subspace),Object.keys(d).length>0&&(e.retrievalConfiguration=d),e}function y(a,b){let c=b?.retrievalConfiguration?.searchType??["DENSE_VECTOR"],d=b?.retrievalConfiguration?.rerankingConfiguration,e=b?.retrievalConfiguration?.denseVectorSearchConfiguration,f=b?.retrievalConfiguration?.fullTextSearchConfiguration,g=d?.rrfConfiguration,h=d?.weightConfiguration,i=d?.modelConfiguration,j=c.includes("DENSE_VECTOR")&&c.includes("FULL_TEXT"),k=d?.type==="RRF"||d?.type==="WEIGHT"?j?d.type:"MODEL":d?.type==="MODEL"?"MODEL":"WEIGHT",l=e?.numberOfResults??d?.numberOfResults??20,m=f?.numberOfResults??d?.numberOfResults??20,n=d?.numberOfResults??20;return{knowledgeBaseName:a,queryType:"TEXT",query:"",imageInput:"",subspace:[],topK:n,denseTopK:l,fullTextTopK:m,rerankTopK:n,searchType:c,rerankType:k,rrfK:g?.k??60,rrfDenseWeight:g?.denseVectorSearchWeight??.5,rrfFullTextWeight:g?.fullTextSearchWeight??.5,weightDense:h?.denseVectorSearchWeight??.5,weightFullText:h?.fullTextSearchWeight??.5,modelProvider:i?.provider??"bailian",modelName:i?.model??"gte-rerank-v2"}}function z({buildRequestJson:a}){let[d,e]=(0,c.useState)(!1),[g,j]=(0,c.useState)(!1),k=d?JSON.stringify(a(),null,2):"",l=async()=>{try{await navigator.clipboard.writeText(k),j(!0),n.toast.success("已复制请求体"),setTimeout(()=>j(!1),1500)}catch{n.toast.error("复制失败,请手动选择")}};return(0,b.jsxs)(r.Popover,{open:d,onOpenChange:e,children:[(0,b.jsx)(s.TooltipProvider,{delayDuration:200,children:(0,b.jsxs)(s.Tooltip,{children:[(0,b.jsx)(s.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(r.PopoverTrigger,{asChild:!0,children:(0,b.jsx)(o.Button,{type:"button",variant:"ghost",size:"icon",className:"h-7 w-7 text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))]","aria-label":"查看请求体",children:(0,b.jsx)(h,{className:"h-3.5 w-3.5"})})})}),(0,b.jsx)(s.TooltipContent,{side:"left",children:"查看 / 复制请求体 JSON"})]})}),(0,b.jsxs)(r.PopoverContent,{align:"end",sideOffset:6,className:"w-[420px] max-w-[90vw] p-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[hsl(var(--border-light))] px-3 py-2",children:[(0,b.jsx)("span",{className:"text-xs font-semibold text-[hsl(var(--foreground))]",children:"请求体(实时预览)"}),(0,b.jsx)(o.Button,{type:"button",variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-xs",onClick:l,children:g?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Check,{className:"h-3 w-3"})," 已复制"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.Copy,{className:"h-3 w-3"})," 复制"]})})]}),(0,b.jsx)("pre",{className:"max-h-80 overflow-auto px-3 py-2 font-mono text-[11px] leading-snug text-[hsl(var(--foreground))]",children:k})]})]})}a.s(["RetrievalForm",0,function({knowledgeBaseName:a,knowledgeBase:f,onSubmit:g,isLoading:h}){let i=(0,c.useRef)(null),r=(0,c.useRef)(null),[s,v]=(0,c.useState)(""),[A,B]=(0,c.useState)(!1),C=(0,d.useForm)({resolver:(0,e.zodResolver)(w.retrievalSchema),defaultValues:y(a,f)}),D=f?.multimodal===!0,E=C.watch("queryType")??"TEXT",F=D?E:"TEXT";return(0,b.jsx)(q.Form,{...C,children:(0,b.jsxs)("form",{onSubmit:C.handleSubmit(function(b){g(x(a,b,i.current?.getFilter()))}),className:"space-y-5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsx)("h3",{className:"text-base font-semibold",children:"检索测试"}),(0,b.jsx)(z,{buildRequestJson:()=>x(a,C.getValues(),i.current?.getFilter())})]}),D&&(0,b.jsx)(q.FormField,{control:C.control,name:"queryType",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"查询类型"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsxs)(t.ToggleGroup,{type:"single",value:a.value??"TEXT",onValueChange:b=>{b&&b!==a.value&&(a.onChange(b),C.setValue("query",""),C.setValue("imageInput",""))},className:"grid w-full grid-cols-2 gap-0 overflow-hidden rounded-lg border border-border bg-[hsl(var(--muted)/0.4)] p-0 sm:max-w-md",children:[(0,b.jsx)(t.ToggleGroupItem,{value:"TEXT",className:"h-9",children:"TEXT"}),(0,b.jsx)(t.ToggleGroupItem,{value:"IMAGE",className:"h-9",children:"IMAGE"})]})})]})}),"TEXT"===F?(0,b.jsx)(q.FormField,{control:C.control,name:"query",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"查询内容"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(k.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[hsl(var(--muted-foreground))]"}),(0,b.jsx)(p.Input,{placeholder:"输入检索查询...",className:"pl-9",maxLength:128,...a})]})}),(0,b.jsx)(q.FormMessage,{})]})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(q.FormField,{control:C.control,name:"imageInput",render:({field:a})=>{let c=["image/jpeg","image/png","image/webp","image/bmp","image/tiff"],d=b=>{if(!c.includes(b.type))return void n.toast.error("不支持的图片格式,请选择 JPG/PNG/WebP/BMP/TIFF 格式");let d=new FileReader;d.onload=()=>{a.onChange(d.result),v(b.name||"pasted-image")},d.onerror=()=>{n.toast.error("图片读取失败,请重试")},d.readAsDataURL(b)};return(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"图片输入"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsxs)("div",{onPaste:a=>{let b=a.clipboardData?.items;if(b){for(let c of Array.from(b))if(c.type.startsWith("image/")){a.preventDefault();let b=c.getAsFile();b&&d(b);return}}},tabIndex:0,className:"outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md",children:[(0,b.jsx)("input",{ref:r,type:"file",accept:"image/jpeg,image/png,image/webp,image/bmp,image/tiff",className:"hidden",onChange:a=>{let b=a.target.files?.[0];b&&d(b)}}),a.value?(0,b.jsxs)("div",{className:"group border border-border rounded-md overflow-hidden",children:[(0,b.jsxs)("div",{className:"relative flex justify-center bg-muted/30 p-3",children:[(0,b.jsx)("img",{src:a.value,alt:"已选择的图片预览",className:"max-h-[200px] max-w-full rounded object-contain"}),(0,b.jsxs)("div",{className:"absolute inset-0 bg-black/40 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-3",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>r.current?.click(),className:"px-3 py-1.5 rounded bg-white/90 text-sm font-medium text-foreground hover:bg-white flex items-center gap-1.5",children:[(0,b.jsx)(l.Upload,{className:"w-3.5 h-3.5"}),"重新选择"]}),(0,b.jsxs)("button",{type:"button",onClick:()=>{a.onChange(""),v(""),r.current&&(r.current.value="")},className:"px-3 py-1.5 rounded bg-white/90 text-sm font-medium text-destructive hover:bg-white flex items-center gap-1.5",children:[(0,b.jsx)(m.X,{className:"w-3.5 h-3.5"}),"删除"]})]})]}),(0,b.jsxs)("div",{className:"px-3 py-2 border-t border-border flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(j,{className:"w-3.5 h-3.5"}),(0,b.jsx)("span",{className:"truncate",children:s})]})]}):(0,b.jsxs)("div",{onClick:()=>r.current?.click(),onDragOver:a=>{a.preventDefault(),B(!0)},onDragLeave:()=>B(!1),onDrop:a=>{a.preventDefault(),B(!1);let b=a.dataTransfer.files[0];b&&d(b)},className:`border-2 border-dashed rounded-lg p-8 flex flex-col items-center gap-3 cursor-pointer transition-colors ${A?"border-primary bg-accent/50":"border-border hover:border-primary/50 hover:bg-accent/50"}`,children:[(0,b.jsx)(l.Upload,{className:"w-8 h-8 text-muted-foreground"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"点击、拖拽或粘贴图片到此处"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground/70",children:"支持 JPG/PNG/WebP/BMP/TIFF"})]})]},E)}),(0,b.jsx)(q.FormMessage,{})]})}}),(0,b.jsx)(q.FormField,{control:C.control,name:"query",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"补充文本(可选)"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(p.Input,{placeholder:"补充文本描述...",maxLength:128,...a})}),(0,b.jsx)(q.FormMessage,{})]})})]}),(0,b.jsx)(u.RetrievalParamsFields,{form:C,knowledgeBase:f,filterRef:i}),(0,b.jsxs)(o.Button,{type:"submit",disabled:h,className:"w-full",children:[(0,b.jsx)(k.Search,{className:"mr-2 h-4 w-4"}),h?"检索中...":"执行检索"]})]})})},"assembleRetrievalRequest",0,x,"retrievalDefaultsFromKB",0,y],199016)},325535,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(263265),f=a.i(604395),g=a.i(99443),h=a.i(133280),i=a.i(933596),j=a.i(353141);async function k(a){let{knowledgeBaseName:b,...c}=a;return(0,j.apiPost)(`/api/v1/knowledge-bases/${encodeURIComponent(b)}/retrieve`,c)}var l=a.i(199016);let m=(0,a.i(750053).default)("file-search",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]]);var n=a.i(310215),o=a.i(473524),p=a.i(521989),q=a.i(843836),r=a.i(867558);function s({result:a,rank:d}){let[e,f]=(0,c.useState)(null),g=a.ossKey?.split("/").pop()||a.ossKey||"未知文件",h=a.chunkType?.toLowerCase()==="image",i=a.imageBase64?a.imageBase64.startsWith("data:")?a.imageBase64:`${r.IMAGE_FALLBACK_DATA_PREFIX}${a.imageBase64}`:void 0;return(0,b.jsxs)(o.Card,{className:"transition-shadow hover:shadow-sm",children:[(0,b.jsxs)(o.CardContent,{className:"p-4 space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"flex h-6 w-6 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] text-xs font-semibold text-primary",children:d}),(0,b.jsx)(p.Badge,{variant:"outline",className:"font-mono text-xs",children:a.score.toFixed(4)}),a.chunkType&&(0,b.jsx)(p.Badge,{variant:h?"default":"secondary",className:"text-xs",children:a.chunkType.toUpperCase()})]}),a.subspace&&(0,b.jsx)(p.Badge,{variant:"secondary",className:"text-xs",children:a.subspace})]}),(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:g}),(0,b.jsxs)("span",{children:["Chunk #",a.chunkId]})]}),h&&a.imageBase64&&i&&(0,b.jsx)("img",{src:i,alt:"检索结果图片",className:"max-w-[200px] rounded-md cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>f(i)}),a.content&&(0,b.jsx)("p",{className:`leading-relaxed text-foreground/90 whitespace-pre-wrap ${h?"text-xs":"text-sm line-clamp-6"}`,children:a.content}),a.metadata&&Object.keys(a.metadata).length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:Object.entries(a.metadata).map(([a,c])=>(0,b.jsxs)(p.Badge,{variant:"secondary",className:"text-xs font-normal",children:[a,": ",String(c)]},a))})]}),(0,b.jsx)(q.Dialog,{open:!!e,onOpenChange:()=>f(null),children:(0,b.jsxs)(q.DialogContent,{className:"max-w-[90vw] max-h-[90vh] p-2 flex items-center justify-center border-none bg-black/90 data-[state=open]:animate-none data-[state=closed]:animate-none duration-0",children:[(0,b.jsx)(q.DialogTitle,{className:"sr-only",children:"图片放大预览"}),e&&(0,b.jsx)("img",{src:e,alt:"放大预览",className:"max-w-full max-h-[85vh] object-contain"})]})})]})}function t({results:a,elapsedMs:c}){return null===a?null:0===a.length?(0,b.jsx)(n.EmptyState,{icon:m,title:"没有检索到结果",description:"尝试调整查询内容或检索参数"}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsxs)("span",{children:["共 ",(0,b.jsx)("strong",{className:"text-foreground",children:a.length})," 条结果"]}),void 0!==c&&(0,b.jsxs)("span",{children:["· 耗时 ",c,"ms"]})]}),(0,b.jsx)("div",{className:"space-y-3",children:a.map((a,c)=>(0,b.jsx)(s,{result:a,rank:c+1},`${a.docId}-${a.chunkId}`))})]})}a.s(["default",0,function(){let a=decodeURIComponent((0,d.useParams)().name),{data:j,isLoading:m}=(0,h.useKnowledgeBase)(a),n=(0,i.useMutation)({mutationFn:a=>k(a)}),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(),s=(0,c.useCallback)(async a=>{let b=Date.now();try{let c=await n.mutateAsync(a);p(c.retrievalResults),r(Date.now()-b)}catch(b){let a=b instanceof Error?b.message:"检索失败";e.toast.error(a)}},[n]);return m?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(f.Skeleton,{className:"h-8 w-48"}),(0,b.jsx)(f.Skeleton,{className:"h-64 w-full"})]}):(0,b.jsx)(g.WorkbenchLayout,{asideWidth:400,aside:(0,b.jsx)(l.RetrievalForm,{knowledgeBaseName:a,knowledgeBase:j??void 0,onSubmit:s,isLoading:n.isPending}),children:(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-7 py-5 max-md:px-4",children:(0,b.jsx)(t,{results:o,elapsedMs:q})})})}],325535)}];
|
|
1
|
+
module.exports=[310215,a=>{"use strict";var b=a.i(634020);a.s(["EmptyState",0,function({icon:a,title:c,description:d,action:e,illustration:f}){return(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 px-4 text-center",children:[f??(0,b.jsx)("div",{className:"mb-5 flex h-20 w-20 items-center justify-center rounded-full bg-[hsl(var(--primary)/0.08)] ring-8 ring-[hsl(var(--primary)/0.04)]",children:(0,b.jsx)(a,{className:"text-primary",size:36,strokeWidth:1.75})}),(0,b.jsx)("h3",{className:"mb-2 text-base font-semibold text-foreground",children:c}),(0,b.jsx)("p",{className:"mb-6 max-w-sm text-sm text-muted-foreground",children:d}),e&&(0,b.jsx)("div",{children:e})]})}])},473524,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(364565);let e=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))] shadow-sm",a),...c}));e.displayName="Card",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex flex-col space-y-1 px-5 pt-5 pb-3 border-b border-[hsl(var(--border-light))]",a),...c})).displayName="CardHeader",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-base font-semibold leading-tight",a),...c})).displayName="CardTitle",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-sm text-[hsl(var(--muted-foreground))]",a),...c})).displayName="CardDescription";let f=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("px-5 py-4",a),...c}));f.displayName="CardContent",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex items-center px-5 py-3 border-t border-[hsl(var(--border-light))]",a),...c})).displayName="CardFooter";let g=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))] shadow-sm","transition-[transform,box-shadow,border-color] duration-200 ease-[cubic-bezier(0.34,1.56,0.64,1)]","hover:border-[hsl(var(--primary))] hover:shadow-primary-soft",a),...c}));g.displayName="CardInteractive",a.s(["Card",0,e,"CardContent",0,f,"CardInteractive",0,g])},16772,a=>{"use strict";let b=(0,a.i(750053).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",0,b],16772)},350681,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(48972),e=a.i(559653),f=a.i(268189),g=a.i(484694),h=a.i(483370),i=a.i(274974),j=a.i(420251),k=a.i(866394),l=a.i(558036),m=a.i(917021),n=["PageUp","PageDown"],o=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],p={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},q="Slider",[r,s,t]=(0,m.createCollection)(q),[u,v]=(0,g.createContextScope)(q,[t]),[w,x]=u(q),y=c.forwardRef((a,f)=>{let{name:g,min:i=0,max:j=100,step:k=1,orientation:l="horizontal",disabled:m=!1,minStepsBetweenThumbs:p=0,defaultValue:q=[i],value:s,onValueChange:t=()=>{},onValueCommit:u=()=>{},inverted:v=!1,form:x,...y}=a,z=c.useRef(new Set),A=c.useRef(0),D="horizontal"===l,[E=[],F]=(0,h.useControllableState)({prop:s,defaultProp:q,onChange:a=>{let b=[...z.current];b[A.current]?.focus(),t(a)}}),G=c.useRef(E);function H(a,b,{commit:c}={commit:!1}){let e,f=(String(k).split(".")[1]||"").length,g=Math.round((Math.round((a-i)/k)*k+i)*(e=Math.pow(10,f)))/e,h=(0,d.clamp)(g,[i,j]);F((a=[])=>{let d=function(a=[],b,c){let d=[...a];return d[c]=b,d.sort((a,b)=>a-b)}(a,h,b);if(!function(a,b){if(b>0)return Math.min(...a.slice(0,-1).map((b,c)=>a[c+1]-b))>=b;return!0}(d,p*k))return a;{A.current=d.indexOf(h);let b=String(d)!==String(a);return b&&c&&u(d),b?d:a}})}return(0,b.jsx)(w,{scope:a.__scopeSlider,name:g,disabled:m,min:i,max:j,valueIndexToChangeRef:A,thumbs:z.current,values:E,orientation:l,form:x,children:(0,b.jsx)(r.Provider,{scope:a.__scopeSlider,children:(0,b.jsx)(r.Slot,{scope:a.__scopeSlider,children:(0,b.jsx)(D?B:C,{"aria-disabled":m,"data-disabled":m?"":void 0,...y,ref:f,onPointerDown:(0,e.composeEventHandlers)(y.onPointerDown,()=>{m||(G.current=E)}),min:i,max:j,inverted:v,onSlideStart:m?void 0:function(a){let b=function(a,b){if(1===a.length)return 0;let c=a.map(a=>Math.abs(a-b)),d=Math.min(...c);return c.indexOf(d)}(E,a);H(a,b)},onSlideMove:m?void 0:function(a){H(a,A.current)},onSlideEnd:m?void 0:function(){let a=G.current[A.current];E[A.current]!==a&&u(E)},onHomeKeyDown:()=>!m&&H(i,0,{commit:!0}),onEndKeyDown:()=>!m&&H(j,E.length-1,{commit:!0}),onStepKeyDown:({event:a,direction:b})=>{if(!m){let c=n.includes(a.key)||a.shiftKey&&o.includes(a.key),d=A.current;H(E[d]+k*(c?10:1)*b,d,{commit:!0})}}})})})})});y.displayName=q;var[z,A]=u(q,{startEdge:"left",endEdge:"right",size:"width",direction:1}),B=c.forwardRef((a,d)=>{let{min:e,max:g,dir:h,inverted:j,onSlideStart:k,onSlideMove:l,onSlideEnd:m,onStepKeyDown:n,...o}=a,[q,r]=c.useState(null),s=(0,f.useComposedRefs)(d,a=>r(a)),t=c.useRef(void 0),u=(0,i.useDirection)(h),v="ltr"===u,w=v&&!j||!v&&j;function x(a){let b=t.current||q.getBoundingClientRect(),c=N([0,b.width],w?[e,g]:[g,e]);return t.current=b,c(a-b.left)}return(0,b.jsx)(z,{scope:a.__scopeSlider,startEdge:w?"left":"right",endEdge:w?"right":"left",direction:w?1:-1,size:"width",children:(0,b.jsx)(D,{dir:u,"data-orientation":"horizontal",...o,ref:s,style:{...o.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:a=>{let b=x(a.clientX);k?.(b)},onSlideMove:a=>{let b=x(a.clientX);l?.(b)},onSlideEnd:()=>{t.current=void 0,m?.()},onStepKeyDown:a=>{let b=p[w?"from-left":"from-right"].includes(a.key);n?.({event:a,direction:b?-1:1})}})})}),C=c.forwardRef((a,d)=>{let{min:e,max:g,inverted:h,onSlideStart:i,onSlideMove:j,onSlideEnd:k,onStepKeyDown:l,...m}=a,n=c.useRef(null),o=(0,f.useComposedRefs)(d,n),q=c.useRef(void 0),r=!h;function s(a){let b=q.current||n.current.getBoundingClientRect(),c=N([0,b.height],r?[g,e]:[e,g]);return q.current=b,c(a-b.top)}return(0,b.jsx)(z,{scope:a.__scopeSlider,startEdge:r?"bottom":"top",endEdge:r?"top":"bottom",size:"height",direction:r?1:-1,children:(0,b.jsx)(D,{"data-orientation":"vertical",...m,ref:o,style:{...m.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:a=>{let b=s(a.clientY);i?.(b)},onSlideMove:a=>{let b=s(a.clientY);j?.(b)},onSlideEnd:()=>{q.current=void 0,k?.()},onStepKeyDown:a=>{let b=p[r?"from-bottom":"from-top"].includes(a.key);l?.({event:a,direction:b?-1:1})}})})}),D=c.forwardRef((a,c)=>{let{__scopeSlider:d,onSlideStart:f,onSlideMove:g,onSlideEnd:h,onHomeKeyDown:i,onEndKeyDown:j,onStepKeyDown:k,...m}=a,p=x(q,d);return(0,b.jsx)(l.Primitive.span,{...m,ref:c,onKeyDown:(0,e.composeEventHandlers)(a.onKeyDown,a=>{"Home"===a.key?(i(a),a.preventDefault()):"End"===a.key?(j(a),a.preventDefault()):n.concat(o).includes(a.key)&&(k(a),a.preventDefault())}),onPointerDown:(0,e.composeEventHandlers)(a.onPointerDown,a=>{let b=a.target;b.setPointerCapture(a.pointerId),a.preventDefault(),p.thumbs.has(b)?b.focus():f(a)}),onPointerMove:(0,e.composeEventHandlers)(a.onPointerMove,a=>{a.target.hasPointerCapture(a.pointerId)&&g(a)}),onPointerUp:(0,e.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&(b.releasePointerCapture(a.pointerId),h(a))})})}),E="SliderTrack",F=c.forwardRef((a,c)=>{let{__scopeSlider:d,...e}=a,f=x(E,d);return(0,b.jsx)(l.Primitive.span,{"data-disabled":f.disabled?"":void 0,"data-orientation":f.orientation,...e,ref:c})});F.displayName=E;var G="SliderRange",H=c.forwardRef((a,d)=>{let{__scopeSlider:e,...g}=a,h=x(G,e),i=A(G,e),j=c.useRef(null),k=(0,f.useComposedRefs)(d,j),m=h.values.length,n=h.values.map(a=>M(a,h.min,h.max)),o=m>1?Math.min(...n):0,p=100-Math.max(...n);return(0,b.jsx)(l.Primitive.span,{"data-orientation":h.orientation,"data-disabled":h.disabled?"":void 0,...g,ref:k,style:{...a.style,[i.startEdge]:o+"%",[i.endEdge]:p+"%"}})});H.displayName=G;var I="SliderThumb",J=c.forwardRef((a,d)=>{let e=s(a.__scopeSlider),[g,h]=c.useState(null),i=(0,f.useComposedRefs)(d,a=>h(a)),j=c.useMemo(()=>g?e().findIndex(a=>a.ref.current===g):-1,[e,g]);return(0,b.jsx)(K,{...a,ref:i,index:j})}),K=c.forwardRef((a,d)=>{var g,h,i,j,m;let n,o,{__scopeSlider:p,index:q,name:s,...t}=a,u=x(I,p),v=A(I,p),[w,y]=c.useState(null),z=(0,f.useComposedRefs)(d,a=>y(a)),B=!w||u.form||!!w.closest("form"),C=(0,k.useSize)(w),D=u.values[q],E=void 0===D?0:M(D,u.min,u.max),F=(g=q,(h=u.values.length)>2?`Value ${g+1} of ${h}`:2===h?["Minimum","Maximum"][g]:void 0),G=C?.[v.size],H=G?(i=G,j=E,m=v.direction,o=N([0,50],[0,n=i/2]),(n-o(j)*m)*m):0;return c.useEffect(()=>{if(w)return u.thumbs.add(w),()=>{u.thumbs.delete(w)}},[w,u.thumbs]),(0,b.jsxs)("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[v.startEdge]:`calc(${E}% + ${H}px)`},children:[(0,b.jsx)(r.ItemSlot,{scope:a.__scopeSlider,children:(0,b.jsx)(l.Primitive.span,{role:"slider","aria-label":a["aria-label"]||F,"aria-valuemin":u.min,"aria-valuenow":D,"aria-valuemax":u.max,"aria-orientation":u.orientation,"data-orientation":u.orientation,"data-disabled":u.disabled?"":void 0,tabIndex:u.disabled?void 0:0,...t,ref:z,style:void 0===D?{display:"none"}:a.style,onFocus:(0,e.composeEventHandlers)(a.onFocus,()=>{u.valueIndexToChangeRef.current=q})})}),B&&(0,b.jsx)(L,{name:s??(u.name?u.name+(u.values.length>1?"[]":""):void 0),form:u.form,value:D},q)]})});J.displayName=I;var L=c.forwardRef(({__scopeSlider:a,value:d,...e},g)=>{let h=c.useRef(null),i=(0,f.useComposedRefs)(h,g),k=(0,j.usePrevious)(d);return c.useEffect(()=>{let a=h.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;if(k!==d&&b){let c=new Event("input",{bubbles:!0});b.call(a,d),a.dispatchEvent(c)}},[k,d]),(0,b.jsx)(l.Primitive.input,{style:{display:"none"},...e,ref:i,defaultValue:d})});function M(a,b,c){return(0,d.clamp)(100/(c-b)*(a-b),[0,100])}function N(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}L.displayName="RadioBubbleInput";var O=a.i(364565);let P=c.forwardRef(({className:a,...c},d)=>(0,b.jsxs)(y,{ref:d,className:(0,O.cn)("relative flex w-full touch-none select-none items-center",a),...c,children:[(0,b.jsx)(F,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-[hsl(var(--muted))]",children:(0,b.jsx)(H,{className:"absolute h-full bg-[hsl(var(--primary))]"})}),(0,b.jsx)(J,{className:"block h-4 w-4 rounded-full border border-[hsl(var(--primary))] bg-[hsl(var(--background))] shadow-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"})]}));P.displayName=y.displayName,a.s(["Slider",0,P],350681)},99947,a=>{"use strict";let b=(0,a.i(750053).default)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]);a.s(["Upload",0,b],99947)},199016,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(71562),e=a.i(771071),f=a.i(53520),g=a.i(750053);let h=(0,g.default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);var i=a.i(16772);let j=(0,g.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);var k=a.i(160318),l=a.i(99947),m=a.i(414151),n=a.i(263265),o=a.i(776192),p=a.i(172518),q=a.i(692942),r=a.i(84252),s=a.i(434841),t=a.i(436965),u=a.i(418236),v=a.i(493078),w=a.i(15325);function x(a,b,c){let d=(0,v.assembleRetrievalConfiguration)(b,void 0)??{};c&&(d.filter=c);let e={knowledgeBaseName:a,retrievalQuery:"IMAGE"===b.queryType&&b.imageInput?{type:"IMAGE",imageBase64:b.imageInput,...b.query?{text:b.query}:{}}:{type:"TEXT",text:b.query??""}};return b.subspace?.length&&(e.subspace=b.subspace),Object.keys(d).length>0&&(e.retrievalConfiguration=d),e}function y(a,b){let c=b?.retrievalConfiguration?.searchType??["DENSE_VECTOR"],d=b?.retrievalConfiguration?.rerankingConfiguration,e=b?.retrievalConfiguration?.denseVectorSearchConfiguration,f=b?.retrievalConfiguration?.fullTextSearchConfiguration,g=d?.rrfConfiguration,h=d?.weightConfiguration,i=d?.modelConfiguration,j=c.includes("DENSE_VECTOR")&&c.includes("FULL_TEXT"),k=d?.type==="RRF"||d?.type==="WEIGHT"?j?d.type:"MODEL":d?.type==="MODEL"?"MODEL":"WEIGHT",l=e?.numberOfResults??d?.numberOfResults??20,m=f?.numberOfResults??d?.numberOfResults??20,n=d?.numberOfResults??20;return{knowledgeBaseName:a,queryType:"TEXT",query:"",imageInput:"",subspace:[],topK:n,denseTopK:l,fullTextTopK:m,rerankTopK:n,searchType:c,rerankType:k,rrfK:g?.k??60,rrfDenseWeight:g?.denseVectorSearchWeight??.5,rrfFullTextWeight:g?.fullTextSearchWeight??.5,weightDense:h?.denseVectorSearchWeight??.5,weightFullText:h?.fullTextSearchWeight??.5,modelProvider:i?.provider??"bailian",modelName:i?.model??"gte-rerank-v2"}}function z({buildRequestJson:a}){let[d,e]=(0,c.useState)(!1),[g,j]=(0,c.useState)(!1),k=d?JSON.stringify(a(),null,2):"",l=async()=>{try{await navigator.clipboard.writeText(k),j(!0),n.toast.success("已复制请求体"),setTimeout(()=>j(!1),1500)}catch{n.toast.error("复制失败,请手动选择")}};return(0,b.jsxs)(r.Popover,{open:d,onOpenChange:e,children:[(0,b.jsx)(s.TooltipProvider,{delayDuration:200,children:(0,b.jsxs)(s.Tooltip,{children:[(0,b.jsx)(s.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(r.PopoverTrigger,{asChild:!0,children:(0,b.jsx)(o.Button,{type:"button",variant:"ghost",size:"icon",className:"h-7 w-7 text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))]","aria-label":"查看请求体",children:(0,b.jsx)(h,{className:"h-3.5 w-3.5"})})})}),(0,b.jsx)(s.TooltipContent,{side:"left",children:"查看 / 复制请求体 JSON"})]})}),(0,b.jsxs)(r.PopoverContent,{align:"end",sideOffset:6,className:"w-[420px] max-w-[90vw] p-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[hsl(var(--border-light))] px-3 py-2",children:[(0,b.jsx)("span",{className:"text-xs font-semibold text-[hsl(var(--foreground))]",children:"请求体(实时预览)"}),(0,b.jsx)(o.Button,{type:"button",variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-xs",onClick:l,children:g?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Check,{className:"h-3 w-3"})," 已复制"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.Copy,{className:"h-3 w-3"})," 复制"]})})]}),(0,b.jsx)("pre",{className:"max-h-80 overflow-auto px-3 py-2 font-mono text-[11px] leading-snug text-[hsl(var(--foreground))]",children:k})]})]})}a.s(["RetrievalForm",0,function({knowledgeBaseName:a,knowledgeBase:f,onSubmit:g,isLoading:h}){let i=(0,c.useRef)(null),r=(0,c.useRef)(null),[s,v]=(0,c.useState)(""),[A,B]=(0,c.useState)(!1),C=(0,d.useForm)({resolver:(0,e.zodResolver)(w.retrievalSchema),defaultValues:y(a,f)}),D=f?.multimodal===!0,E=C.watch("queryType")??"TEXT",F=D?E:"TEXT";return(0,b.jsx)(q.Form,{...C,children:(0,b.jsxs)("form",{onSubmit:C.handleSubmit(function(b){g(x(a,b,i.current?.getFilter()))}),className:"space-y-5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsx)("h3",{className:"text-base font-semibold",children:"检索测试"}),(0,b.jsx)(z,{buildRequestJson:()=>x(a,C.getValues(),i.current?.getFilter())})]}),D&&(0,b.jsx)(q.FormField,{control:C.control,name:"queryType",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"查询类型"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsxs)(t.ToggleGroup,{type:"single",value:a.value??"TEXT",onValueChange:b=>{b&&b!==a.value&&(a.onChange(b),C.setValue("query",""),C.setValue("imageInput",""))},className:"grid w-full grid-cols-2 gap-0 overflow-hidden rounded-lg border border-border bg-[hsl(var(--muted)/0.4)] p-0 sm:max-w-md",children:[(0,b.jsx)(t.ToggleGroupItem,{value:"TEXT",className:"h-9",children:"TEXT"}),(0,b.jsx)(t.ToggleGroupItem,{value:"IMAGE",className:"h-9",children:"IMAGE"})]})})]})}),"TEXT"===F?(0,b.jsx)(q.FormField,{control:C.control,name:"query",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"查询内容"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(k.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[hsl(var(--muted-foreground))]"}),(0,b.jsx)(p.Input,{placeholder:"输入检索查询...",className:"pl-9",maxLength:128,...a})]})}),(0,b.jsx)(q.FormMessage,{})]})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(q.FormField,{control:C.control,name:"imageInput",render:({field:a})=>{let c=["image/jpeg","image/png","image/webp","image/bmp","image/tiff"],d=b=>{if(!c.includes(b.type))return void n.toast.error("不支持的图片格式,请选择 JPG/PNG/WebP/BMP/TIFF 格式");let d=new FileReader;d.onload=()=>{a.onChange(d.result),v(b.name||"pasted-image")},d.onerror=()=>{n.toast.error("图片读取失败,请重试")},d.readAsDataURL(b)};return(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"图片输入"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsxs)("div",{onPaste:a=>{let b=a.clipboardData?.items;if(b){for(let c of Array.from(b))if(c.type.startsWith("image/")){a.preventDefault();let b=c.getAsFile();b&&d(b);return}}},tabIndex:0,className:"outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md",children:[(0,b.jsx)("input",{ref:r,type:"file",accept:"image/jpeg,image/png,image/webp,image/bmp,image/tiff",className:"hidden",onChange:a=>{let b=a.target.files?.[0];b&&d(b)}}),a.value?(0,b.jsxs)("div",{className:"group border border-border rounded-md overflow-hidden",children:[(0,b.jsxs)("div",{className:"relative flex justify-center bg-muted/30 p-3",children:[(0,b.jsx)("img",{src:a.value,alt:"已选择的图片预览",className:"max-h-[200px] max-w-full rounded object-contain"}),(0,b.jsxs)("div",{className:"absolute inset-0 bg-black/40 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-3",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>r.current?.click(),className:"px-3 py-1.5 rounded bg-white/90 text-sm font-medium text-foreground hover:bg-white flex items-center gap-1.5",children:[(0,b.jsx)(l.Upload,{className:"w-3.5 h-3.5"}),"重新选择"]}),(0,b.jsxs)("button",{type:"button",onClick:()=>{a.onChange(""),v(""),r.current&&(r.current.value="")},className:"px-3 py-1.5 rounded bg-white/90 text-sm font-medium text-destructive hover:bg-white flex items-center gap-1.5",children:[(0,b.jsx)(m.X,{className:"w-3.5 h-3.5"}),"删除"]})]})]}),(0,b.jsxs)("div",{className:"px-3 py-2 border-t border-border flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(j,{className:"w-3.5 h-3.5"}),(0,b.jsx)("span",{className:"truncate",children:s})]})]}):(0,b.jsxs)("div",{onClick:()=>r.current?.click(),onDragOver:a=>{a.preventDefault(),B(!0)},onDragLeave:()=>B(!1),onDrop:a=>{a.preventDefault(),B(!1);let b=a.dataTransfer.files[0];b&&d(b)},className:`border-2 border-dashed rounded-lg p-8 flex flex-col items-center gap-3 cursor-pointer transition-colors ${A?"border-primary bg-accent/50":"border-border hover:border-primary/50 hover:bg-accent/50"}`,children:[(0,b.jsx)(l.Upload,{className:"w-8 h-8 text-muted-foreground"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"点击、拖拽或粘贴图片到此处"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground/70",children:"支持 JPG/PNG/WebP/BMP/TIFF"})]})]},E)}),(0,b.jsx)(q.FormMessage,{})]})}}),(0,b.jsx)(q.FormField,{control:C.control,name:"query",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"补充文本(可选)"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(p.Input,{placeholder:"补充文本描述...",maxLength:128,...a})}),(0,b.jsx)(q.FormMessage,{})]})})]}),(0,b.jsx)(u.RetrievalParamsFields,{form:C,knowledgeBase:f,filterRef:i}),(0,b.jsxs)(o.Button,{type:"submit",disabled:h,className:"w-full",children:[(0,b.jsx)(k.Search,{className:"mr-2 h-4 w-4"}),h?"检索中...":"执行检索"]})]})})},"assembleRetrievalRequest",0,x,"retrievalDefaultsFromKB",0,y],199016)},325535,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(263265),f=a.i(604395),g=a.i(99443),h=a.i(133280),i=a.i(933596),j=a.i(353141);async function k(a){let{knowledgeBaseName:b,...c}=a;return(0,j.apiPost)(`/api/v1/knowledge-bases/${encodeURIComponent(b)}/retrieve`,c)}var l=a.i(199016);let m=(0,a.i(750053).default)("file-search",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]]);var n=a.i(310215),o=a.i(473524),p=a.i(521989),q=a.i(843836),r=a.i(867558),s=a.i(364565);function t({result:a,rank:d}){let[e,f]=(0,c.useState)(null),g=a.ossKey?(0,s.extractFileName)(a.ossKey):"未知文件",h=a.chunkType?.toLowerCase()==="image",i=a.imageBase64?a.imageBase64.startsWith("data:")?a.imageBase64:`${r.IMAGE_FALLBACK_DATA_PREFIX}${a.imageBase64}`:void 0;return(0,b.jsxs)(o.Card,{className:"transition-shadow hover:shadow-sm",children:[(0,b.jsxs)(o.CardContent,{className:"p-4 space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"flex h-6 w-6 items-center justify-center rounded-full bg-[hsl(var(--primary-50))] text-xs font-semibold text-primary",children:d}),(0,b.jsx)(p.Badge,{variant:"outline",className:"font-mono text-xs",children:a.score.toFixed(4)}),a.chunkType&&(0,b.jsx)(p.Badge,{variant:h?"default":"secondary",className:"text-xs",children:a.chunkType.toUpperCase()})]}),a.subspace&&(0,b.jsx)(p.Badge,{variant:"secondary",className:"text-xs",children:a.subspace})]}),(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:g}),(0,b.jsxs)("span",{children:["Chunk #",a.chunkId]})]}),h&&a.imageBase64&&i&&(0,b.jsx)("img",{src:i,alt:"检索结果图片",className:"max-w-[200px] rounded-md cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>f(i)}),a.content&&(0,b.jsx)("p",{className:`leading-relaxed text-foreground/90 whitespace-pre-wrap ${h?"text-xs":"text-sm line-clamp-6"}`,children:a.content}),a.metadata&&Object.keys(a.metadata).length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:Object.entries(a.metadata).map(([a,c])=>(0,b.jsxs)(p.Badge,{variant:"secondary",className:"text-xs font-normal",children:[a,": ",String(c)]},a))})]}),(0,b.jsx)(q.Dialog,{open:!!e,onOpenChange:()=>f(null),children:(0,b.jsxs)(q.DialogContent,{className:"max-w-[90vw] max-h-[90vh] p-2 flex items-center justify-center border-none bg-black/90 data-[state=open]:animate-none data-[state=closed]:animate-none duration-0",children:[(0,b.jsx)(q.DialogTitle,{className:"sr-only",children:"图片放大预览"}),e&&(0,b.jsx)("img",{src:e,alt:"放大预览",className:"max-w-full max-h-[85vh] object-contain"})]})})]})}function u({results:a,elapsedMs:c}){return null===a?null:0===a.length?(0,b.jsx)(n.EmptyState,{icon:m,title:"没有检索到结果",description:"尝试调整查询内容或检索参数"}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsxs)("span",{children:["共 ",(0,b.jsx)("strong",{className:"text-foreground",children:a.length})," 条结果"]}),void 0!==c&&(0,b.jsxs)("span",{children:["· 耗时 ",c,"ms"]})]}),(0,b.jsx)("div",{className:"space-y-3",children:a.map((a,c)=>(0,b.jsx)(t,{result:a,rank:c+1},`${a.docId}-${a.chunkId}`))})]})}a.s(["default",0,function(){let a=decodeURIComponent((0,d.useParams)().name),{data:j,isLoading:m}=(0,h.useKnowledgeBase)(a),n=(0,i.useMutation)({mutationFn:a=>k(a)}),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(),s=(0,c.useCallback)(async a=>{let b=Date.now();try{let c=await n.mutateAsync(a);p(c.retrievalResults),r(Date.now()-b)}catch(b){let a=b instanceof Error?b.message:"检索失败";e.toast.error(a)}},[n]);return m?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(f.Skeleton,{className:"h-8 w-48"}),(0,b.jsx)(f.Skeleton,{className:"h-64 w-full"})]}):(0,b.jsx)(g.WorkbenchLayout,{asideWidth:400,aside:(0,b.jsx)(l.RetrievalForm,{knowledgeBaseName:a,knowledgeBase:j??void 0,onSubmit:s,isLoading:n.isPending}),children:(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-7 py-5 max-md:px-4",children:(0,b.jsx)(u,{results:o,elapsedMs:q})})})}],325535)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0odjvc.._.js.map
|
|
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
7
7
|
"static/chunks/03~yq9q893hmn.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/pE-cQCmJ7b5_xgwqBJ7J3/_buildManifest.js",
|
|
11
|
+
"static/pE-cQCmJ7b5_xgwqBJ7J3/_ssgManifest.js",
|
|
12
|
+
"static/pE-cQCmJ7b5_xgwqBJ7J3/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/0fn_vxxgj3hl1.js",
|