@kafca/agentdock 0.1.57 → 0.1.61
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/renderer/assets/{Badge-CDTbmw1h.js → Badge-BLI4LHse.js} +1 -1
- package/dist/renderer/assets/{Card-DayUo35w.js → Card-DJeLDdL3.js} +1 -1
- package/dist/renderer/assets/{Config-ByGMQuzR.js → Config-D1awc81A.js} +1 -1
- package/dist/renderer/assets/{CronList-XqHdVlgu.js → CronList-CupZoNwW.js} +1 -1
- package/dist/renderer/assets/{Dashboard-CZj-oANw.js → Dashboard-nLZnOtcs.js} +2 -2
- package/dist/renderer/assets/{EmptyState-EFMkOjZO.js → EmptyState-CkI1RwPX.js} +1 -1
- package/dist/renderer/assets/{HighlightedMarkdown-DyvF3DHK.js → HighlightedMarkdown-BUhDlhgW.js} +1 -1
- package/dist/renderer/assets/{Input-DxoWVc9d.js → Input-DHYrn-Ne.js} +1 -1
- package/dist/renderer/assets/{KnowledgeDetail-CbUb2tG7.js → KnowledgeDetail-Bij-Xo90.js} +1 -1
- package/dist/renderer/assets/{KnowledgeHome-BWV1gz4f.js → KnowledgeHome-DmPZ2IlI.js} +1 -1
- package/dist/renderer/assets/{Logs-DqnanQTc.js → Logs-ISY99heA.js} +1 -1
- package/dist/renderer/assets/{Modal-yY7TzR0x.js → Modal-DAQfz0ot.js} +1 -1
- package/dist/renderer/assets/{MonitorList-CIjGQkFs.js → MonitorList-BlX82rXF.js} +1 -1
- package/dist/renderer/assets/{Page-vwHNUdoj.js → Page-Dw43UYDT.js} +1 -1
- package/dist/renderer/assets/{Select-CmbK36pN.js → Select-DzmN5OGQ.js} +1 -1
- package/dist/renderer/assets/{ThreadChat-4OceMgM4.js → ThreadChat-B5CWqqMK.js} +3 -3
- package/dist/renderer/assets/{Workspace-DplPJOjJ.js → Workspace-C5g9LBj9.js} +1 -1
- package/dist/renderer/assets/{arrow-left-C8HfBt2K.js → arrow-left-BLXh56Ip.js} +1 -1
- package/dist/renderer/assets/{book-open-BCdZWncQ.js → book-open-DhPGbc-7.js} +1 -1
- package/dist/renderer/assets/{channels-hgO3cAIx.js → channels-DfQrmuYO.js} +1 -1
- package/dist/renderer/assets/{chevron-down-BPk77tqY.js → chevron-down-CEFtpPDc.js} +1 -1
- package/dist/renderer/assets/{index-BlA4xPdd.js → index-CYhDUAR_.js} +1 -1
- package/dist/renderer/assets/{index-wYpjqVqC.js → index-Dd00oqgY.js} +2 -2
- package/dist/renderer/assets/{knowledge-7pl06KuH.js → knowledge-uHRQ80sR.js} +1 -1
- package/dist/renderer/assets/{pencil-CB1SWZ9A.js → pencil-BD2Y31YC.js} +1 -1
- package/dist/renderer/assets/{play-BvsoXUrM.js → play-DBJ8wsSy.js} +1 -1
- package/dist/renderer/assets/{plus-CokBDnaL.js → plus-DDcldp_c.js} +1 -1
- package/dist/renderer/assets/{save-D-w4kATO.js → save-CMW_cZI9.js} +1 -1
- package/dist/renderer/assets/{search-Cnsn6i4Q.js → search-BM-0CvJr.js} +1 -1
- package/dist/renderer/assets/{shield-check-Cjja2Gh6.js → shield-check-DaMB0FKG.js} +1 -1
- package/dist/renderer/assets/{threads-BCm6j4eI.js → threads-DZgt9tWj.js} +1 -1
- package/dist/renderer/assets/{trash-2-CIxz9qYY.js → trash-2-DTXVbC5y.js} +1 -1
- package/dist/renderer/index.html +1 -1
- package/dist-electron/services/local-ai-core/src/automation/automation-conversation-executor.js +6 -47
- package/dist-electron/services/local-ai-core/src/automation/automation-monitor-service.js +2 -5
- package/dist-electron/services/local-ai-core/src/channel/lark/local-core-lark-gateway.js +6 -53
- package/dist-electron/services/local-ai-core/src/channel/lark/outbound-transport.js +25 -37
- package/dist-electron/services/local-ai-core/src/channel/lark/runtime-state.js +5 -20
- package/dist-electron/services/local-ai-core/src/channel/shared/base-channel-gateway.js +37 -0
- package/dist-electron/services/local-ai-core/src/channel/shared/bridge-event-helpers.js +23 -0
- package/dist-electron/services/local-ai-core/src/channel/shared/channel-keys.js +6 -0
- package/dist-electron/services/local-ai-core/src/channel/weixin/inbound-poller.js +2 -2
- package/dist-electron/services/local-ai-core/src/channel/weixin/local-core-weixin-gateway.js +6 -44
- package/dist-electron/services/local-ai-core/src/channel/weixin/runtime-state.js +4 -11
- package/dist-electron/services/local-ai-core/src/channel/weixin/text-utils.js +0 -8
- package/dist-electron/services/local-ai-core/src/cli/lac.js +3 -5
- package/dist-electron/services/local-ai-core/src/kernel/local-core-errors.js +8 -0
- package/dist-electron/services/local-ai-core/src/sandbox/opensandbox-client.js +3 -2
- package/dist-electron/services/local-ai-core/src/scheduler/base-channel-schedule-adapter.js +77 -0
- package/dist-electron/services/local-ai-core/src/scheduler/lark-schedule-adapter.js +13 -79
- package/dist-electron/services/local-ai-core/src/scheduler/local-schedule-adapter.js +2 -10
- package/dist-electron/services/local-ai-core/src/scheduler/run-polling.js +19 -0
- package/dist-electron/services/local-ai-core/src/scheduler/scheduled-conversation-executor.js +3 -37
- package/dist-electron/services/local-ai-core/src/scheduler/scheduled-job-route.js +20 -0
- package/dist-electron/services/local-ai-core/src/scheduler/scheduler-service.js +15 -28
- package/dist-electron/services/local-ai-core/src/scheduler/thread-resolution.js +12 -0
- package/dist-electron/services/local-ai-core/src/scheduler/weixin-schedule-adapter.js +13 -79
- package/dist-electron/tests/integration/local-core-refactor.test.js +15 -8
- package/package.json +2 -4
- package/dist-electron/services/local-ai-core/src/scheduler/lark-execution-policies.js +0 -13
- package/dist-electron/services/local-ai-core/src/scheduler/weixin-execution-policies.js +0 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./HighlightedMarkdown-
|
|
2
|
-
import{c as Ee,h as Or,j as g,g as pe,r as T,_ as gl,B as ce,W as xl,C as Bn,i as bl,t as kl,k as yl,o as wl,s as Sl,m as Cl}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./HighlightedMarkdown-BUhDlhgW.js","./index-Dd00oqgY.js","./index-BIKL3fTP.css","./chevron-down-CEFtpPDc.js","./channels-DfQrmuYO.js","./shield-check-DaMB0FKG.js","./Input-DHYrn-Ne.js","./Modal-DAQfz0ot.js","./index-CYhDUAR_.js","./search-BM-0CvJr.js","./pencil-BD2Y31YC.js","./trash-2-DTXVbC5y.js","./knowledge-uHRQ80sR.js","./threads-DZgt9tWj.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as Ee,h as Or,j as g,g as pe,r as T,_ as gl,B as ce,W as xl,C as Bn,i as bl,t as kl,k as yl,o as wl,s as Sl,m as Cl}from"./index-Dd00oqgY.js";import{n as vl,i as El,B as Il,a as $n,b as jl,s as Al,o as Nl}from"./channels-DfQrmuYO.js";import{C as Br,a as _l}from"./chevron-down-CEFtpPDc.js";import{S as Tl}from"./shield-check-DaMB0FKG.js";import{I as xn,T as zl}from"./Input-DHYrn-Ne.js";import{X as $r,M as Un}from"./Modal-DAQfz0ot.js";import{S as Pl}from"./search-BM-0CvJr.js";import{P as Ll}from"./pencil-BD2Y31YC.js";import{T as Dl}from"./trash-2-DTXVbC5y.js";import{l as Fl}from"./knowledge-uHRQ80sR.js";import{a as Ml,g as Rl,l as Ol,c as Ur,u as bn,b as kn,s as Hr,d as Bl,i as $l,r as Ul,e as Hl}from"./threads-DZgt9tWj.js";/**
|
|
3
3
|
* @license lucide-react v0.487.0 - ISC
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the ISC license.
|
|
@@ -83,4 +83,4 @@ import{c as Ee,h as Or,j as g,g as pe,r as T,_ as gl,B as ce,W as xl,C as Bn,i a
|
|
|
83
83
|
`))+1))}const l="#".repeat(i),o=n.enter("headingAtx"),s=n.enter("phrasing");a.move(l+" ");let u=n.containerPhrasing(e,{before:"# ",after:`
|
|
84
84
|
`,...a.current()});return/^[\t ]/.test(u)&&(u=gt(u.charCodeAt(0))+u.slice(1)),u=u?l+" "+u:l,n.options.closeAtx&&(u+=" "+l),s(),o(),u}Fi.peek=fd;function Fi(e){return e.value||""}function fd(){return"<"}Mi.peek=dd;function Mi(e,t,n,r){const i=Dn(n),a=i==='"'?"Quote":"Apostrophe",l=n.enter("image");let o=n.enter("label");const s=n.createTracker(r);let u=s.move("![");return u+=s.move(n.safe(e.alt,{before:u,after:"]",...s.current()})),u+=s.move("]("),o(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(o=n.enter("destinationLiteral"),u+=s.move("<"),u+=s.move(n.safe(e.url,{before:u,after:">",...s.current()})),u+=s.move(">")):(o=n.enter("destinationRaw"),u+=s.move(n.safe(e.url,{before:u,after:e.title?" ":")",...s.current()}))),o(),e.title&&(o=n.enter(`title${a}`),u+=s.move(" "+i),u+=s.move(n.safe(e.title,{before:u,after:i,...s.current()})),u+=s.move(i),o()),u+=s.move(")"),l(),u}function dd(){return"!"}Ri.peek=pd;function Ri(e,t,n,r){const i=e.referenceType,a=n.enter("imageReference");let l=n.enter("label");const o=n.createTracker(r);let s=o.move("![");const u=n.safe(e.alt,{before:s,after:"]",...o.current()});s+=o.move(u+"]["),l();const f=n.stack;n.stack=[],l=n.enter("reference");const c=n.safe(n.associationId(e),{before:s,after:"]",...o.current()});return l(),n.stack=f,a(),i==="full"||!u||u!==c?s+=o.move(c+"]"):i==="shortcut"?s=s.slice(0,-1):s+=o.move("]"),s}function pd(){return"!"}Oi.peek=hd;function Oi(e,t,n){let r=e.value||"",i="`",a=-1;for(;new RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++a<n.unsafe.length;){const l=n.unsafe[a],o=n.compilePattern(l);let s;if(l.atBreak)for(;s=o.exec(r);){let u=s.index;r.charCodeAt(u)===10&&r.charCodeAt(u-1)===13&&u--,r=r.slice(0,u)+" "+r.slice(s.index+1)}}return i+r+i}function hd(){return"`"}function Bi(e,t){const n=In(e);return!!(!t.options.resourceLink&&e.url&&!e.title&&e.children&&e.children.length===1&&e.children[0].type==="text"&&(n===e.url||"mailto:"+n===e.url)&&/^[a-z][a-z+.-]+:/i.test(e.url)&&!/[\0- <>\u007F]/.test(e.url))}$i.peek=md;function $i(e,t,n,r){const i=Dn(n),a=i==='"'?"Quote":"Apostrophe",l=n.createTracker(r);let o,s;if(Bi(e,n)){const f=n.stack;n.stack=[],o=n.enter("autolink");let c=l.move("<");return c+=l.move(n.containerPhrasing(e,{before:c,after:">",...l.current()})),c+=l.move(">"),o(),n.stack=f,c}o=n.enter("link"),s=n.enter("label");let u=l.move("[");return u+=l.move(n.containerPhrasing(e,{before:u,after:"](",...l.current()})),u+=l.move("]("),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter("destinationLiteral"),u+=l.move("<"),u+=l.move(n.safe(e.url,{before:u,after:">",...l.current()})),u+=l.move(">")):(s=n.enter("destinationRaw"),u+=l.move(n.safe(e.url,{before:u,after:e.title?" ":")",...l.current()}))),s(),e.title&&(s=n.enter(`title${a}`),u+=l.move(" "+i),u+=l.move(n.safe(e.title,{before:u,after:i,...l.current()})),u+=l.move(i),s()),u+=l.move(")"),o(),u}function md(e,t,n){return Bi(e,n)?"<":"["}Ui.peek=gd;function Ui(e,t,n,r){const i=e.referenceType,a=n.enter("linkReference");let l=n.enter("label");const o=n.createTracker(r);let s=o.move("[");const u=n.containerPhrasing(e,{before:s,after:"]",...o.current()});s+=o.move(u+"]["),l();const f=n.stack;n.stack=[],l=n.enter("reference");const c=n.safe(n.associationId(e),{before:s,after:"]",...o.current()});return l(),n.stack=f,a(),i==="full"||!u||u!==c?s+=o.move(c+"]"):i==="shortcut"?s=s.slice(0,-1):s+=o.move("]"),s}function gd(){return"["}function Fn(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function xd(e){const t=Fn(e),n=e.options.bulletOther;if(!n)return t==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function bd(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function Hi(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function kd(e,t,n,r){const i=n.enter("list"),a=n.bulletCurrent;let l=e.ordered?bd(n):Fn(n);const o=e.ordered?l==="."?")":".":xd(n);let s=t&&n.bulletLastUsed?l===n.bulletLastUsed:!1;if(!e.ordered){const f=e.children?e.children[0]:void 0;if((l==="*"||l==="-")&&f&&(!f.children||!f.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(s=!0),Hi(n)===l&&f){let c=-1;for(;++c<e.children.length;){const p=e.children[c];if(p&&p.type==="listItem"&&p.children&&p.children[0]&&p.children[0].type==="thematicBreak"){s=!0;break}}}}s&&(l=o),n.bulletCurrent=l;const u=n.containerFlow(e,r);return n.bulletLastUsed=l,n.bulletCurrent=a,i(),u}function yd(e){const t=e.options.listItemIndent||"one";if(t!=="tab"&&t!=="one"&&t!=="mixed")throw new Error("Cannot serialize items with `"+t+"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`");return t}function wd(e,t,n,r){const i=yd(n);let a=n.bulletCurrent||Fn(n);t&&t.type==="list"&&t.ordered&&(a=(typeof t.start=="number"&&t.start>-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let l=a.length+1;(i==="tab"||i==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(l=Math.ceil(l/4)*4);const o=n.createTracker(r);o.move(a+" ".repeat(l-a.length)),o.shift(l);const s=n.enter("listItem"),u=n.indentLines(n.containerFlow(e,o.current()),f);return s(),u;function f(c,p,d){return p?(d?"":" ".repeat(l))+c:(d?a:a+" ".repeat(l-a.length))+c}}function Sd(e,t,n,r){const i=n.enter("paragraph"),a=n.enter("phrasing"),l=n.containerPhrasing(e,r);return a(),i(),l}const Cd=Rt(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function vd(e,t,n,r){return(e.children.some(function(l){return Cd(l)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function Ed(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Ki.peek=Id;function Ki(e,t,n,r){const i=Ed(n),a=n.enter("strong"),l=n.createTracker(r),o=l.move(i+i);let s=l.move(n.containerPhrasing(e,{after:i,before:o,...l.current()}));const u=s.charCodeAt(0),f=Lt(r.before.charCodeAt(r.before.length-1),u,i);f.inside&&(s=gt(u)+s.slice(1));const c=s.charCodeAt(s.length-1),p=Lt(r.after.charCodeAt(0),c,i);p.inside&&(s=s.slice(0,-1)+gt(c));const d=l.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:p.outside,before:f.outside},o+s+d}function Id(e,t,n){return n.options.strong||"*"}function jd(e,t,n,r){return n.safe(e.value,r)}function Ad(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function Nd(e,t,n){const r=(Hi(n)+(n.options.ruleSpaces?" ":"")).repeat(Ad(n));return n.options.ruleSpaces?r.slice(0,-1):r}const Vi={blockquote:Jf,break:Pr,code:id,definition:ad,emphasis:Di,hardBreak:Pr,heading:cd,html:Fi,image:Mi,imageReference:Ri,inlineCode:Oi,link:$i,linkReference:Ui,list:kd,listItem:wd,paragraph:Sd,root:vd,strong:Ki,text:jd,thematicBreak:Nd};function _d(){return{enter:{table:Td,tableData:Lr,tableHeader:Lr,tableRow:Pd},exit:{codeText:Ld,table:zd,tableData:ln,tableHeader:ln,tableRow:ln}}}function Td(e){const t=e._align;this.enter({type:"table",align:t.map(function(n){return n==="none"?null:n}),children:[]},e),this.data.inTable=!0}function zd(e){this.exit(e),this.data.inTable=void 0}function Pd(e){this.enter({type:"tableRow",children:[]},e)}function ln(e){this.exit(e)}function Lr(e){this.enter({type:"tableCell",children:[]},e)}function Ld(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,Dd));const n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function Dd(e,t){return t==="|"?t:e}function Fd(e){const t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:`
|
|
85
85
|
`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:p,table:l,tableCell:s,tableRow:o}};function l(d,x,S,C){return u(f(d,S,C),d.align)}function o(d,x,S,C){const b=c(d,S,C),E=u([b]);return E.slice(0,E.indexOf(`
|
|
86
|
-
`))}function s(d,x,S,C){const b=S.enter("tableCell"),E=S.enter("phrasing"),v=S.containerPhrasing(d,{...C,before:a,after:a});return E(),b(),v}function u(d,x){return Qf(d,{align:x,alignDelimiters:r,padding:n,stringLength:i})}function f(d,x,S){const C=d.children;let b=-1;const E=[],v=x.enter("table");for(;++b<C.length;)E[b]=c(C[b],x,S);return v(),E}function c(d,x,S){const C=d.children;let b=-1;const E=[],v=x.enter("tableRow");for(;++b<C.length;)E[b]=s(C[b],d,x,S);return v(),E}function p(d,x,S){let C=Vi.inlineCode(d,x,S);return S.stack.includes("tableCell")&&(C=C.replace(/\|/g,"\\$&")),C}}function Md(){return{exit:{taskListCheckValueChecked:Dr,taskListCheckValueUnchecked:Dr,paragraph:Od}}}function Rd(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:Bd}}}function Dr(e){const t=this.stack[this.stack.length-2];t.type,t.checked=e.type==="taskListCheckValueChecked"}function Od(e){const t=this.stack[this.stack.length-2];if(t&&t.type==="listItem"&&typeof t.checked=="boolean"){const n=this.stack[this.stack.length-1];n.type;const r=n.children[0];if(r&&r.type==="text"){const i=t.children;let a=-1,l;for(;++a<i.length;){const o=i[a];if(o.type==="paragraph"){l=o;break}}l===n&&(r.value=r.value.slice(1),r.value.length===0?n.children.shift():n.position&&r.position&&typeof r.position.start.offset=="number"&&(r.position.start.column++,r.position.start.offset++,n.position.start=Object.assign({},r.position.start)))}}this.exit(e)}function Bd(e,t,n,r){const i=e.children[0],a=typeof e.checked=="boolean"&&i&&i.type==="paragraph",l="["+(e.checked?"x":" ")+"] ",o=n.createTracker(r);a&&o.move(l);let s=Vi.listItem(e,t,n,{...r,...o.current()});return a&&(s=s.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,u)),s;function u(f){return f+l}}function $d(){return[kf(),Bf(),Kf(),_d(),Md()]}function Ud(e){return{extensions:[yf(),$f(e),Vf(),Fd(e),Rd()]}}const Hd={tokenize:Xd,partial:!0},qi={tokenize:Qd,partial:!0},Wi={tokenize:Gd,partial:!0},Yi={tokenize:Jd,partial:!0},Kd={tokenize:Zd,partial:!0},Xi={name:"wwwAutolink",tokenize:Wd,previous:Gi},Qi={name:"protocolAutolink",tokenize:Yd,previous:Ji},Le={name:"emailAutolink",tokenize:qd,previous:Zi},Ne={};function Vd(){return{text:Ne}}let We=48;for(;We<123;)Ne[We]=Le,We++,We===58?We=65:We===91&&(We=97);Ne[43]=Le;Ne[45]=Le;Ne[46]=Le;Ne[95]=Le;Ne[72]=[Le,Qi];Ne[104]=[Le,Qi];Ne[87]=[Le,Xi];Ne[119]=[Le,Xi];function qd(e,t,n){const r=this;let i,a;return l;function l(c){return!gn(c)||!Zi.call(r,r.previous)||Mn(r.events)?n(c):(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),o(c))}function o(c){return gn(c)?(e.consume(c),o):c===64?(e.consume(c),s):n(c)}function s(c){return c===46?e.check(Kd,f,u)(c):c===45||c===95||fe(c)?(a=!0,e.consume(c),s):f(c)}function u(c){return e.consume(c),i=!0,s}function f(c){return a&&i&&he(r.previous)?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),t(c)):n(c)}}function Wd(e,t,n){const r=this;return i;function i(l){return l!==87&&l!==119||!Gi.call(r,r.previous)||Mn(r.events)?n(l):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(Hd,e.attempt(qi,e.attempt(Wi,a),n),n)(l))}function a(l){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),t(l)}}function Yd(e,t,n){const r=this;let i="",a=!1;return l;function l(c){return(c===72||c===104)&&Ji.call(r,r.previous)&&!Mn(r.events)?(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),i+=String.fromCodePoint(c),e.consume(c),o):n(c)}function o(c){if(he(c)&&i.length<5)return i+=String.fromCodePoint(c),e.consume(c),o;if(c===58){const p=i.toLowerCase();if(p==="http"||p==="https")return e.consume(c),s}return n(c)}function s(c){return c===47?(e.consume(c),a?u:(a=!0,s)):n(c)}function u(c){return c===null||Tt(c)||ie(c)||Ye(c)||Dt(c)?n(c):e.attempt(qi,e.attempt(Wi,f),n)(c)}function f(c){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),t(c)}}function Xd(e,t,n){let r=0;return i;function i(l){return(l===87||l===119)&&r<3?(r++,e.consume(l),i):l===46&&r===3?(e.consume(l),a):n(l)}function a(l){return l===null?n(l):t(l)}}function Qd(e,t,n){let r,i,a;return l;function l(u){return u===46||u===95?e.check(Yi,s,o)(u):u===null||ie(u)||Ye(u)||u!==45&&Dt(u)?s(u):(a=!0,e.consume(u),l)}function o(u){return u===95?r=!0:(i=r,r=void 0),e.consume(u),l}function s(u){return i||r||!a?n(u):t(u)}}function Gd(e,t){let n=0,r=0;return i;function i(l){return l===40?(n++,e.consume(l),i):l===41&&r<n?a(l):l===33||l===34||l===38||l===39||l===41||l===42||l===44||l===46||l===58||l===59||l===60||l===63||l===93||l===95||l===126?e.check(Yi,t,a)(l):l===null||ie(l)||Ye(l)?t(l):(e.consume(l),i)}function a(l){return l===41&&r++,e.consume(l),i}}function Jd(e,t,n){return r;function r(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(e.consume(o),r):o===38?(e.consume(o),a):o===93?(e.consume(o),i):o===60||o===null||ie(o)||Ye(o)?t(o):n(o)}function i(o){return o===null||o===40||o===91||ie(o)||Ye(o)?t(o):r(o)}function a(o){return he(o)?l(o):n(o)}function l(o){return o===59?(e.consume(o),r):he(o)?(e.consume(o),l):n(o)}}function Zd(e,t,n){return r;function r(a){return e.consume(a),i}function i(a){return fe(a)?n(a):t(a)}}function Gi(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||ie(e)}function Ji(e){return!he(e)}function Zi(e){return!(e===47||gn(e))}function gn(e){return e===43||e===45||e===46||e===95||fe(e)}function Mn(e){let t=e.length,n=!1;for(;t--;){const r=e[t][1];if((r.type==="labelLink"||r.type==="labelImage")&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const ep={tokenize:sp,partial:!0};function tp(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:lp,continuation:{tokenize:ap},exit:op}},text:{91:{name:"gfmFootnoteCall",tokenize:ip},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:np,resolveTo:rp}}}}function np(e,t,n){const r=this;let i=r.events.length;const a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let l;for(;i--;){const s=r.events[i][1];if(s.type==="labelImage"){l=s;break}if(s.type==="gfmFootnoteCall"||s.type==="labelLink"||s.type==="label"||s.type==="image"||s.type==="link")break}return o;function o(s){if(!l||!l._balanced)return n(s);const u=ve(r.sliceSerialize({start:l.end,end:r.now()}));return u.codePointAt(0)!==94||!a.includes(u.slice(1))?n(s):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(s),e.exit("gfmFootnoteCallLabelMarker"),t(s))}}function rp(e,t){let n=e.length;for(;n--;)if(e[n][1].type==="labelImage"&&e[n][0]==="enter"){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;const a={type:"gfmFootnoteCallString",start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},l={type:"chunkString",contentType:"string",start:Object.assign({},a.start),end:Object.assign({},a.end)},o=[e[n+1],e[n+2],["enter",r,t],e[n+3],e[n+4],["enter",i,t],["exit",i,t],["enter",a,t],["enter",l,t],["exit",l,t],["exit",a,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(n,e.length-n+1,...o),e}function ip(e,t,n){const r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a=0,l;return o;function o(c){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(c),e.exit("gfmFootnoteCallLabelMarker"),s}function s(c){return c!==94?n(c):(e.enter("gfmFootnoteCallMarker"),e.consume(c),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",u)}function u(c){if(a>999||c===93&&!l||c===null||c===91||ie(c))return n(c);if(c===93){e.exit("chunkString");const p=e.exit("gfmFootnoteCallString");return i.includes(ve(r.sliceSerialize(p)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(c),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(c)}return ie(c)||(l=!0),a++,e.consume(c),c===92?f:u}function f(c){return c===91||c===92||c===93?(e.consume(c),a++,u):u(c)}}function lp(e,t,n){const r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a,l=0,o;return s;function s(x){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),u}function u(x){return x===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",f):n(x)}function f(x){if(l>999||x===93&&!o||x===null||x===91||ie(x))return n(x);if(x===93){e.exit("chunkString");const S=e.exit("gfmFootnoteDefinitionLabelString");return a=ve(r.sliceSerialize(S)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),p}return ie(x)||(o=!0),l++,e.consume(x),x===92?c:f}function c(x){return x===91||x===92||x===93?(e.consume(x),l++,f):f(x)}function p(x){return x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),i.includes(a)||i.push(a),te(e,d,"gfmFootnoteDefinitionWhitespace")):n(x)}function d(x){return t(x)}}function ap(e,t,n){return e.check(bt,t,e.attempt(ep,t,n))}function op(e){e.exit("gfmFootnoteDefinition")}function sp(e,t,n){const r=this;return te(e,i,"gfmFootnoteDefinitionIndent",5);function i(a){const l=r.events[r.events.length-1];return l&&l[1].type==="gfmFootnoteDefinitionIndent"&&l[2].sliceSerialize(l[1],!0).length===4?t(a):n(a)}}function up(e){let n=(e||{}).singleTilde;const r={name:"strikethrough",tokenize:a,resolveAll:i};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function i(l,o){let s=-1;for(;++s<l.length;)if(l[s][0]==="enter"&&l[s][1].type==="strikethroughSequenceTemporary"&&l[s][1]._close){let u=s;for(;u--;)if(l[u][0]==="exit"&&l[u][1].type==="strikethroughSequenceTemporary"&&l[u][1]._open&&l[s][1].end.offset-l[s][1].start.offset===l[u][1].end.offset-l[u][1].start.offset){l[s][1].type="strikethroughSequence",l[u][1].type="strikethroughSequence";const f={type:"strikethrough",start:Object.assign({},l[u][1].start),end:Object.assign({},l[s][1].end)},c={type:"strikethroughText",start:Object.assign({},l[u][1].end),end:Object.assign({},l[s][1].start)},p=[["enter",f,o],["enter",l[u][1],o],["exit",l[u][1],o],["enter",c,o]],d=o.parser.constructs.insideSpan.null;d&&we(p,p.length,0,Ft(d,l.slice(u+1,s),o)),we(p,p.length,0,[["exit",c,o],["enter",l[s][1],o],["exit",l[s][1],o],["exit",f,o]]),we(l,u-1,s-u+3,p),s=u+p.length-2;break}}for(s=-1;++s<l.length;)l[s][1].type==="strikethroughSequenceTemporary"&&(l[s][1].type="data");return l}function a(l,o,s){const u=this.previous,f=this.events;let c=0;return p;function p(x){return u===126&&f[f.length-1][1].type!=="characterEscape"?s(x):(l.enter("strikethroughSequenceTemporary"),d(x))}function d(x){const S=nt(u);if(x===126)return c>1?s(x):(l.consume(x),c++,d);if(c<2&&!n)return s(x);const C=l.exit("strikethroughSequenceTemporary"),b=nt(x);return C._open=!b||b===2&&!!S,C._close=!S||S===2&&!!b,o(x)}}}class cp{constructor(){this.map=[]}add(t,n,r){fp(this,t,n,r)}consume(t){if(this.map.sort(function(a,l){return a[0]-l[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(t.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),t.length=this.map[n][0];r.push(t.slice()),t.length=0;let i=r.pop();for(;i;){for(const a of i)t.push(a);i=r.pop()}this.map.length=0}}function fp(e,t,n,r){let i=0;if(!(n===0&&r.length===0)){for(;i<e.map.length;){if(e.map[i][0]===t){e.map[i][1]+=n,e.map[i][2].push(...r);return}i+=1}e.map.push([t,n,r])}}function dp(e,t){let n=!1;const r=[];for(;t<e.length;){const i=e[t];if(n){if(i[0]==="enter")i[1].type==="tableContent"&&r.push(e[t+1][1].type==="tableDelimiterMarker"?"left":"none");else if(i[1].type==="tableContent"){if(e[t-1][1].type==="tableDelimiterMarker"){const a=r.length-1;r[a]=r[a]==="left"?"center":"right"}}else if(i[1].type==="tableDelimiterRow")break}else i[0]==="enter"&&i[1].type==="tableDelimiterRow"&&(n=!0);t+=1}return r}function pp(){return{flow:{null:{name:"table",tokenize:hp,resolveAll:mp}}}}function hp(e,t,n){const r=this;let i=0,a=0,l;return o;function o(w){let j=r.events.length-1;for(;j>-1;){const F=r.events[j][1].type;if(F==="lineEnding"||F==="linePrefix")j--;else break}const A=j>-1?r.events[j][1].type:null,$=A==="tableHead"||A==="tableRow"?y:s;return $===y&&r.parser.lazy[r.now().line]?n(w):$(w)}function s(w){return e.enter("tableHead"),e.enter("tableRow"),u(w)}function u(w){return w===124||(l=!0,a+=1),f(w)}function f(w){return w===null?n(w):q(w)?a>1?(a=0,r.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),d):n(w):J(w)?te(e,f,"whitespace")(w):(a+=1,l&&(l=!1,i+=1),w===124?(e.enter("tableCellDivider"),e.consume(w),e.exit("tableCellDivider"),l=!0,f):(e.enter("data"),c(w)))}function c(w){return w===null||w===124||ie(w)?(e.exit("data"),f(w)):(e.consume(w),w===92?p:c)}function p(w){return w===92||w===124?(e.consume(w),c):c(w)}function d(w){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(w):(e.enter("tableDelimiterRow"),l=!1,J(w)?te(e,x,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):x(w))}function x(w){return w===45||w===58?C(w):w===124?(l=!0,e.enter("tableCellDivider"),e.consume(w),e.exit("tableCellDivider"),S):N(w)}function S(w){return J(w)?te(e,C,"whitespace")(w):C(w)}function C(w){return w===58?(a+=1,l=!0,e.enter("tableDelimiterMarker"),e.consume(w),e.exit("tableDelimiterMarker"),b):w===45?(a+=1,b(w)):w===null||q(w)?O(w):N(w)}function b(w){return w===45?(e.enter("tableDelimiterFiller"),E(w)):N(w)}function E(w){return w===45?(e.consume(w),E):w===58?(l=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(w),e.exit("tableDelimiterMarker"),v):(e.exit("tableDelimiterFiller"),v(w))}function v(w){return J(w)?te(e,O,"whitespace")(w):O(w)}function O(w){return w===124?x(w):w===null||q(w)?!l||i!==a?N(w):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(w)):N(w)}function N(w){return n(w)}function y(w){return e.enter("tableRow"),k(w)}function k(w){return w===124?(e.enter("tableCellDivider"),e.consume(w),e.exit("tableCellDivider"),k):w===null||q(w)?(e.exit("tableRow"),t(w)):J(w)?te(e,k,"whitespace")(w):(e.enter("data"),R(w))}function R(w){return w===null||w===124||ie(w)?(e.exit("data"),k(w)):(e.consume(w),w===92?B:R)}function B(w){return w===92||w===124?(e.consume(w),R):R(w)}}function mp(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],l=[0,0,0,0],o=!1,s=0,u,f,c;const p=new cp;for(;++n<e.length;){const d=e[n],x=d[1];d[0]==="enter"?x.type==="tableHead"?(o=!1,s!==0&&(Fr(p,t,s,u,f),f=void 0,s=0),u={type:"table",start:Object.assign({},x.start),end:Object.assign({},x.end)},p.add(n,0,[["enter",u,t]])):x.type==="tableRow"||x.type==="tableDelimiterRow"?(r=!0,c=void 0,a=[0,0,0,0],l=[0,n+1,0,0],o&&(o=!1,f={type:"tableBody",start:Object.assign({},x.start),end:Object.assign({},x.end)},p.add(n,0,[["enter",f,t]])),i=x.type==="tableDelimiterRow"?2:f?3:1):i&&(x.type==="data"||x.type==="tableDelimiterMarker"||x.type==="tableDelimiterFiller")?(r=!1,l[2]===0&&(a[1]!==0&&(l[0]=l[1],c=At(p,t,a,i,void 0,c),a=[0,0,0,0]),l[2]=n)):x.type==="tableCellDivider"&&(r?r=!1:(a[1]!==0&&(l[0]=l[1],c=At(p,t,a,i,void 0,c)),a=l,l=[a[1],n,0,0])):x.type==="tableHead"?(o=!0,s=n):x.type==="tableRow"||x.type==="tableDelimiterRow"?(s=n,a[1]!==0?(l[0]=l[1],c=At(p,t,a,i,n,c)):l[1]!==0&&(c=At(p,t,l,i,n,c)),i=0):i&&(x.type==="data"||x.type==="tableDelimiterMarker"||x.type==="tableDelimiterFiller")&&(l[3]=n)}for(s!==0&&Fr(p,t,s,u,f),p.consume(t.events),n=-1;++n<t.events.length;){const d=t.events[n];d[0]==="enter"&&d[1].type==="table"&&(d[1]._align=dp(t.events,n))}return e}function At(e,t,n,r,i,a){const l=r===1?"tableHeader":r===2?"tableDelimiter":"tableData",o="tableContent";n[0]!==0&&(a.end=Object.assign({},et(t.events,n[0])),e.add(n[0],0,[["exit",a,t]]));const s=et(t.events,n[1]);if(a={type:l,start:Object.assign({},s),end:Object.assign({},s)},e.add(n[1],0,[["enter",a,t]]),n[2]!==0){const u=et(t.events,n[2]),f=et(t.events,n[3]),c={type:o,start:Object.assign({},u),end:Object.assign({},f)};if(e.add(n[2],0,[["enter",c,t]]),r!==2){const p=t.events[n[2]],d=t.events[n[3]];if(p[1].end=Object.assign({},d[1].end),p[1].type="chunkText",p[1].contentType="text",n[3]>n[2]+1){const x=n[2]+1,S=n[3]-n[2]-1;e.add(x,S,[])}}e.add(n[3]+1,0,[["exit",c,t]])}return i!==void 0&&(a.end=Object.assign({},et(t.events,i)),e.add(i,0,[["exit",a,t]]),a=void 0),a}function Fr(e,t,n,r,i){const a=[],l=et(t.events,n);i&&(i.end=Object.assign({},l),a.push(["exit",i,t])),r.end=Object.assign({},l),a.push(["exit",r,t]),e.add(n+1,0,a)}function et(e,t){const n=e[t],r=n[0]==="enter"?"start":"end";return n[1][r]}const gp={name:"tasklistCheck",tokenize:bp};function xp(){return{text:{91:gp}}}function bp(e,t,n){const r=this;return i;function i(s){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(s):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),a)}function a(s){return ie(s)?(e.enter("taskListCheckValueUnchecked"),e.consume(s),e.exit("taskListCheckValueUnchecked"),l):s===88||s===120?(e.enter("taskListCheckValueChecked"),e.consume(s),e.exit("taskListCheckValueChecked"),l):n(s)}function l(s){return s===93?(e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):n(s)}function o(s){return q(s)?t(s):J(s)?e.check({tokenize:kp},t,n)(s):n(s)}}function kp(e,t,n){return te(e,r,"whitespace");function r(i){return i===null?n(i):t(i)}}function yp(e){return ci([Vd(),tp(),up(e),pp(),xp()])}const wp={};function Mr(e){const t=this,n=e||wp,r=t.data(),i=r.micromarkExtensions||(r.micromarkExtensions=[]),a=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),l=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);i.push(yp(n)),a.push($d()),l.push(Ud(n))}const Sp=/(^|\n) {0,3}(?:`{3,}|~{3,})[^\n]*(?:\n|$)/,Cp=/(^|\n)(?: {4}|\t)\S/;function vp(e){return Sp.test(e)||Cp.test(e)}const Ep=T.lazy(()=>gl(()=>import("./HighlightedMarkdown-DyvF3DHK.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url).then(e=>({default:e.HighlightedMarkdown})));function Ip({content:e,isUser:t}){const r=vp(e)?g.jsx(T.Suspense,{fallback:g.jsx(Nr,{remarkPlugins:[Mr],children:e}),children:g.jsx(Ep,{content:e})}):g.jsx(Nr,{remarkPlugins:[Mr],children:e});return t?g.jsx("div",{className:"prose prose-sm max-w-none text-inherit [&_*]:text-inherit [&_a]:underline [&_code]:border [&_code]:border-black/10 [&_code]:bg-black/10 [&_code]:text-inherit dark:[&_code]:border-white/10 dark:[&_code]:bg-white/12 [&>p]:my-0.5 [&_li]:my-0",children:r}):g.jsx("div",{className:pe("prose max-w-none dark:prose-invert","prose-headings:font-semibold prose-headings:tracking-tight","prose-h1:text-xl prose-h1:mt-5 prose-h1:mb-3 prose-h1:pb-1.5 prose-h1:border-b prose-h1:border-gray-200 dark:prose-h1:border-gray-700","prose-h2:text-lg prose-h2:mt-5 prose-h2:mb-2","prose-h3:text-base prose-h3:mt-4 prose-h3:mb-2","prose-p:my-2.5 prose-p:leading-relaxed","prose-li:my-0.5","prose-ul:my-2 prose-ol:my-2","prose-a:text-accent prose-a:no-underline hover:prose-a:underline","prose-strong:text-gray-900 dark:prose-strong:text-white prose-strong:font-semibold","prose-blockquote:border-l-[3px] prose-blockquote:border-accent/40 prose-blockquote:bg-accent/[0.03] prose-blockquote:rounded-r-lg prose-blockquote:py-0.5 prose-blockquote:px-4 prose-blockquote:my-3 prose-blockquote:not-italic prose-blockquote:text-gray-600 dark:prose-blockquote:text-gray-300","prose-hr:my-5 prose-hr:border-gray-200 dark:prose-hr:border-gray-700","prose-table:text-sm prose-th:bg-gray-50 dark:prose-th:bg-gray-800 prose-th:px-3 prose-th:py-2 prose-td:px-3 prose-td:py-2 prose-th:border-gray-200 dark:prose-th:border-gray-700 prose-td:border-gray-200 dark:prose-td:border-gray-700","prose-img:rounded-lg prose-img:shadow-sm"),children:r})}function jp({card:e}){const t=e.status.toLowerCase()==="completed",[n,r]=T.useState(()=>!$a(e)),i=!!e.output.trim();return g.jsxs("div",{className:"overflow-hidden rounded-[18px] border border-slate-200 bg-[#f5f5f7] dark:border-white/[0.08] dark:bg-[#111214]",children:[g.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-slate-200/80 px-4 py-3 dark:border-white/[0.06]",children:[g.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[g.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary dark:text-primary",children:g.jsx(xl,{size:14})}),g.jsxs("div",{className:"min-w-0",children:[g.jsx("p",{className:"truncate text-sm font-semibold text-slate-800 dark:text-slate-100",children:e.title}),g.jsxs("p",{className:"mt-0.5 flex items-center gap-1.5 text-[11px] text-slate-500 dark:text-slate-400",children:[g.jsx(ia,{size:12}),g.jsx("span",{className:"truncate",children:e.subtitle||e.label})]})]})]}),g.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[g.jsx("span",{className:pe("rounded-full px-2.5 py-1 text-[10px] font-medium uppercase tracking-[0.12em]",t?"bg-primary/10 text-primary dark:text-primary":"bg-amber-500/10 text-amber-700 dark:text-amber-300"),children:e.status}),i?g.jsx("button",{type:"button","aria-expanded":n,"aria-label":n?"折叠工具结果":"展开工具结果","data-testid":"desktop-tool-result-toggle",onClick:()=>r(a=>!a),className:"flex h-7 w-7 items-center justify-center rounded-full border border-slate-200 bg-white text-slate-500 transition hover:border-slate-300 hover:text-slate-700 dark:border-white/[0.08] dark:bg-white/[0.05] dark:text-slate-300 dark:hover:bg-white/[0.08]",children:n?g.jsx(_l,{size:14}):g.jsx(Bn,{size:14})}):null]})]}),n?g.jsx("pre",{className:"max-h-72 overflow-auto whitespace-pre-wrap break-words px-4 py-3 font-mono text-[12px] leading-5 text-slate-700 [scrollbar-gutter:stable] dark:text-slate-200",children:e.output||"无输出"}):g.jsxs("button",{type:"button",onClick:()=>r(!0),className:"flex w-full items-center gap-2 px-4 py-3 text-left text-xs text-slate-500 transition hover:bg-slate-100/70 dark:text-slate-400 dark:hover:bg-white/[0.04]",children:[g.jsx(Bn,{size:14}),g.jsx("span",{className:"truncate",children:"工具结果已折叠"})]})]})}function Ap({card:e,className:t,testId:n="desktop-chat-permission-card",loading:r,onAction:i}){const a=Ua(e.content);return g.jsxs("div",{"data-testid":n,className:pe("overflow-hidden rounded-[18px] border border-amber-200 bg-[#fff8eb] dark:border-amber-400/20 dark:bg-amber-500/10",t),children:[g.jsx("div",{className:"flex items-center justify-between gap-3 border-b border-amber-200/80 px-4 py-3 dark:border-amber-400/15",children:g.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[g.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-amber-100 text-amber-700 dark:bg-amber-400/15 dark:text-amber-200",children:g.jsx(Tl,{size:14})}),g.jsxs("div",{className:"min-w-0",children:[g.jsx("p",{className:"truncate text-sm font-semibold text-amber-950 dark:text-amber-50",children:a.title}),g.jsx("p",{className:"mt-0.5 text-[11px] text-amber-700/80 dark:text-amber-100/70",children:"权限响应"})]})]})}),a.bodyLines.length>0?g.jsx("div",{className:"space-y-2 px-4 py-3 text-sm leading-6 text-amber-950 dark:text-amber-50",children:a.bodyLines.map((l,o)=>g.jsx("p",{className:"break-words",children:l},`${e.id}-permission-line-${o}`))}):null,e.actionStatus?g.jsx("p",{className:"border-t border-amber-200/80 px-4 py-3 text-xs text-amber-700 dark:border-amber-400/15 dark:text-amber-100",children:e.actionStatus}):null,e.actions.length>0?g.jsx("div",{className:"flex flex-wrap gap-2 border-t border-amber-200/80 px-4 py-3 dark:border-amber-400/15",children:e.actions.flat().map(l=>g.jsx(ce,{size:"sm",variant:"secondary",onClick:()=>i(l),disabled:!!(e.actionPending||r),loading:r,className:"rounded-full border border-amber-300 bg-white text-amber-900 hover:bg-amber-100 dark:border-amber-400/30 dark:bg-white/[0.08] dark:text-amber-50 dark:hover:bg-white/[0.12]",children:l.text||l.data},`${e.id}-${l.data||l.text}`))}):null]})}function Np({message:e,pendingBridgeActionId:t,onAction:n}){const r=e.role==="user",i=e.role==="system",a=!r&&!i&&e.kind==="progress",l=r?null:Ra(e.toolCall),o=!!l;return g.jsxs("div",{className:pe("flex gap-3 sm:gap-4",r?"justify-end":"justify-start"),children:[r?null:g.jsx("div",{className:pe("mt-1 flex shrink-0 items-center justify-center rounded-full text-slate-400 dark:text-slate-500",i?"h-7 w-7 bg-amber-100 text-amber-600 dark:bg-amber-500/12 dark:text-amber-300":a?"h-6 w-6 bg-[#f0f0f0] dark:bg-white/[0.04]":"h-8 w-8 bg-[#f5f5f7] dark:bg-white/[0.06]"),children:i?g.jsx(Br,{size:14}):a?g.jsx(_t,{size:7,className:"fill-current"}):g.jsx(Il,{size:14})}),g.jsx("div",{"data-testid":"desktop-chat-message","data-role":e.role,"data-kind":e.kind||"final","data-order":String(e.order),"data-timestamp":e.timestamp||"",className:pe("transition-all",r?"max-w-[calc(100%-2.25rem)] sm:max-w-[70%]":o?"max-w-[calc(100%-2.25rem)] sm:max-w-[80%]":a?"max-w-[calc(100%-2.25rem)] sm:max-w-[72%]":"max-w-[calc(100%-2.25rem)] sm:max-w-[78%]"),children:g.jsxs("div",{className:pe("rounded-[20px] px-4 py-3 text-sm",r?"chat-user-glass rounded-br-sm text-slate-950 dark:text-slate-50":i?"rounded-bl-sm border border-amber-200/80 bg-[#fff8eb] text-amber-900 dark:border-amber-400/20 dark:bg-amber-500/10 dark:text-amber-100":a?"rounded-bl-lg bg-[#f5f5f7] text-[13px] leading-6 text-slate-500 dark:bg-white/[0.04] dark:text-slate-400":"rounded-bl-sm border border-slate-200 bg-[#fbfbfd] text-slate-800 dark:border-white/[0.06] dark:bg-white/[0.04] dark:text-slate-100",o&&"bg-transparent p-0 shadow-none dark:bg-transparent"),children:[g.jsxs("div",{className:pe("mb-2 flex items-center gap-2 text-[10px]",r?"justify-end text-slate-500 dark:text-white/55":"text-slate-400 dark:text-slate-500"),children:[i?g.jsx("span",{className:"tracking-[0.14em] text-amber-600 dark:text-amber-300",children:"系统"}):null,a?g.jsx("span",{className:"tracking-[0.14em] text-amber-500 dark:text-amber-300",children:o?"工具":"过程"}):null,qn(e.timestamp)?g.jsx("span",{"data-testid":"desktop-chat-message-timestamp",children:qn(e.timestamp)}):null]}),!r&&e.preview&&e.previewPlainText?g.jsx("div",{className:"whitespace-pre-wrap break-words text-[13px] leading-6 text-inherit",children:e.content}):l?g.jsx(jp,{card:l}):g.jsx(Ip,{content:e.content,isUser:r}),!r&&e.actions&&e.actions.length>0?g.jsx("div",{className:"mt-4 space-y-2",children:e.actions.map((s,u)=>g.jsx("div",{className:"flex flex-wrap gap-2",children:s.map(f=>g.jsx(ce,{size:"sm",variant:String(f.data||"").includes("deny")?"danger":"secondary",onClick:()=>n(e,f),disabled:!!(e.actionPending||t),loading:t===e.id,"data-testid":"desktop-chat-action-button",className:"rounded-full",children:f.text||f.data},`${e.id}-${f.data||f.text}`))},`${e.id}-actions-${u}`))}):null,!r&&e.actionStatus?g.jsx("p",{className:pe("mt-3 text-xs",e.actionInteractive?"text-slate-500 dark:text-slate-400":"text-amber-700 dark:text-amber-200"),"data-testid":"desktop-chat-action-status",children:e.actionStatus}):null,e.preview?g.jsx("p",{className:"mt-2 text-[10px] uppercase tracking-[0.18em] text-primary dark:text-primary",children:"实时预览"}):null]})}),r?g.jsx("div",{className:"mt-1 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-[#f0f0f0] dark:bg-white/[0.08] sm:h-8 sm:w-8",children:g.jsx(aa,{size:14,className:"text-slate-500 dark:text-slate-300"})}):null]})}function _p({activeSessionId:e,branding:t,filteredSessionGroups:n,hasVisibleSessions:r,isRuntimeStarting:i,mobileSessionsOpen:a,projects:l,runtime:o,selectedProject:s,serviceRunning:u,sessionSearch:f,showSessionKey:c,visibleProjects:p,onCreateNew:d,onLoadActiveSession:x,onOpenRenameModal:S,onRefreshRuntime:C,setDeleteTarget:b,setMobileSessionsOpen:E,setSelectedProject:v,setSessionSearch:O}){return g.jsxs("aside",{className:pe("min-h-0 flex-col border-r border-slate-200/80 bg-[#fbfbfd] dark:border-white/[0.06] dark:bg-[#111214]",a?"flex":"hidden md:flex","absolute inset-0 z-30 md:static md:z-auto"),children:[g.jsxs("div",{className:"border-b border-slate-200/80 px-4 py-4 dark:border-white/[0.06]",children:[g.jsxs("div",{className:"flex items-start justify-between gap-3",children:[g.jsxs("div",{className:"min-w-0",children:[g.jsx("p",{className:"text-[11px] font-medium tracking-[0.18em] text-slate-400 dark:text-slate-500",children:"会话导航"}),g.jsx("h2",{className:"mt-2 text-[1.65rem] font-semibold leading-tight text-slate-900 dark:text-white",children:t.chatHeading})]}),g.jsx(ce,{size:"sm",variant:"ghost",onClick:()=>void C(),className:"rounded-full border border-slate-200 bg-white text-slate-500 hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-slate-300 dark:hover:bg-white/[0.08]",children:g.jsx(ea,{size:14})}),g.jsx(ce,{size:"sm",variant:"ghost",onClick:()=>E(!1),className:"rounded-full border border-slate-200 bg-white text-slate-500 hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-slate-300 dark:hover:bg-white/[0.08] md:hidden",children:g.jsx($r,{size:14})})]}),g.jsxs("div",{className:"mt-4 space-y-3",children:[g.jsxs("div",{className:"space-y-2",children:[g.jsx("label",{className:"block text-[11px] font-medium tracking-[0.18em] text-slate-400 dark:text-slate-500",children:t.scopeLabel}),g.jsxs("select",{value:s,onChange:N=>v(N.target.value),"data-testid":"desktop-chat-project-select","aria-label":t.scopeLabel,className:"w-full rounded-[18px] border border-slate-200 bg-white px-3 py-2.5 text-sm text-slate-900 outline-none transition focus:border-primary/40 focus:ring-2 focus:ring-primary/10 dark:border-white/[0.08] dark:bg-[#0b1016] dark:text-white",children:[g.jsx("option",{value:"",children:t.scopeSelectPlaceholder}),p.map(N=>g.jsx("option",{value:N,children:N},N))]})]}),g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsxs(ce,{size:"md",variant:"secondary",onClick:()=>void d(),"data-testid":"desktop-chat-new-chat",className:"h-11 flex-1 rounded-full border border-slate-200 bg-white text-slate-700 hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.05] dark:text-slate-100 dark:hover:bg-white/[0.09]",children:[g.jsx(Kr,{size:15}),t.newThreadLabel]}),!u||i?g.jsx(ce,{size:"md",onClick:()=>void bl().then(C),disabled:i||u,"data-testid":"desktop-chat-start-service",className:"h-11 shrink-0 rounded-2xl px-3.5",children:i?t.startingRuntimeLabel:t.startRuntimeLabel}):null]}),g.jsxs("div",{className:"relative",children:[g.jsx(Pl,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 dark:text-slate-500"}),g.jsx(xn,{value:f,onChange:N=>O(N.target.value),placeholder:t.searchPlaceholder,"aria-label":t.searchPlaceholder,"data-testid":"desktop-chat-session-search",className:"h-11 rounded-[18px] border-slate-200 bg-white pl-9 text-slate-900 placeholder:text-slate-400 dark:border-white/[0.08] dark:bg-[#0b1016] dark:text-white dark:placeholder:text-slate-500"})]}),g.jsx("div",{className:"flex items-center justify-between gap-3 rounded-[18px] border border-slate-200/80 bg-white px-3 py-2 dark:border-white/[0.06] dark:bg-white/[0.03]",children:g.jsxs("span",{className:"inline-flex items-center gap-2 text-xs font-medium text-slate-600 dark:text-slate-300",children:[g.jsx(_t,{size:7,className:pe("fill-current",u?"text-primary":"text-slate-300 dark:text-slate-500")}),u?"服务在线":i?"服务启动中":"服务未启动"]})})]}),o!=null&&o.service.lastError?g.jsx("div",{className:"mt-3 rounded-2xl border border-red-500/20 bg-red-50 px-3 py-2 text-xs text-red-600 dark:bg-red-500/10 dark:text-red-200",children:o.service.lastError}):null,o!=null&&o.pendingRestart?g.jsx("div",{className:"mt-3 rounded-2xl border border-amber-500/20 bg-amber-50 px-3 py-2 text-xs text-amber-700 dark:bg-amber-500/10 dark:text-amber-200",children:t.pendingRestartLabel}):null]}),g.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 pb-24 pt-3 [scrollbar-gutter:stable] md:pb-3",children:!s&&!r?g.jsxs("div",{className:"rounded-2xl border border-dashed border-slate-200/80 bg-white/70 px-4 py-6 text-center dark:border-white/[0.07] dark:bg-white/[0.02]",children:[g.jsx("p",{className:"text-sm font-medium text-slate-700 dark:text-slate-200",children:"先选择一个项目"}),g.jsx("p",{className:"mt-2 text-xs leading-5 text-slate-500 dark:text-slate-400",children:"选择项目后展示对应会话列表。"})]}):r?g.jsx("div",{className:"space-y-4",children:n.map(N=>g.jsxs("section",{className:"space-y-2",children:[!s&&N.sessions.length>0?g.jsxs("div",{"data-testid":"desktop-chat-session-group","data-project":N.project,className:"flex items-center justify-between px-2 pt-1",children:[g.jsx("p",{className:"text-[11px] font-medium tracking-[0.08em] text-slate-400 dark:text-slate-500",children:N.project}),g.jsxs("p",{className:"text-[10px] text-slate-400 dark:text-slate-500",children:[N.sessions.length," ",t.collectionLabel]})]}):null,N.sessions.map(y=>g.jsx("div",{"data-testid":"desktop-chat-session-row","data-session-id":y.id,"data-project":N.project,role:"button",tabIndex:0,onClick:()=>{x(N.project,y.id),E(!1)},onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),x(N.project,y.id),E(!1))},className:pe("group relative overflow-hidden rounded-[18px] border px-4 py-3 text-left transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-primary/15",y.id===e?"border-primary/20 bg-primary/5 shadow-[inset_2px_0_0_0_rgba(0,102,204,0.92)] dark:border-primary/25 dark:bg-primary/10":"border-transparent bg-white hover:border-slate-200 hover:bg-[#fcfcfd] dark:bg-white/[0.03] dark:hover:border-white/[0.08] dark:hover:bg-white/[0.05]"),children:g.jsxs("div",{className:"flex items-start justify-between gap-3",children:[g.jsxs("div",{"data-testid":"desktop-chat-session-open","data-session-id":y.id,"data-project":N.project,className:"min-w-0 flex-1",children:[g.jsx("div",{className:"flex items-center gap-2",children:g.jsx("span",{className:"truncate text-sm font-medium text-slate-900 dark:text-white",children:y.name})}),g.jsx("p",{className:"mt-1 text-[11px] text-slate-400 dark:text-slate-500",children:kl(y.updatedAt||y.createdAt)}),y.excerpt?g.jsx("p",{className:"mt-2 line-clamp-2 text-[11px] leading-5 text-slate-500 dark:text-slate-400",children:y.excerpt.replace(/\n/g," ")}):null,c&&y.bridgeSessionKey?g.jsx("p",{className:"mt-2 truncate text-[11px] text-slate-400 dark:text-slate-500",children:y.bridgeSessionKey}):null]}),g.jsxs("div",{className:"flex items-center gap-1 opacity-0 transition-opacity duration-200 group-hover:opacity-100 focus-within:opacity-100",children:[g.jsx(ce,{size:"sm",variant:"ghost",onClick:k=>{k.stopPropagation(),S(N.project,y)},"data-testid":"desktop-chat-session-rename","data-session-id":y.id,"data-project":N.project,className:"text-slate-400 hover:bg-slate-100 hover:text-slate-900 dark:hover:bg-white/[0.08] dark:hover:text-white",children:g.jsx(Ll,{size:14})}),g.jsx(ce,{size:"sm",variant:"ghost",className:"text-red-400 hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-500/10 dark:hover:text-red-200","data-testid":"desktop-chat-session-delete","data-session-id":y.id,"data-project":N.project,onClick:k=>{k.stopPropagation(),b({project:N.project,id:y.id,name:y.name})},children:g.jsx(Dl,{size:14})})]})]})},y.id))]},N.project))}):g.jsxs("div",{className:"rounded-2xl border border-dashed border-slate-200/80 bg-white/70 px-4 py-6 text-center dark:border-white/[0.07] dark:bg-white/[0.02]",children:[g.jsx("p",{className:"text-sm font-medium text-slate-700 dark:text-slate-200",children:f.trim()?"没有匹配的会话":"当前还没有桌面会话"}),g.jsx("p",{className:"mt-2 text-xs leading-5 text-slate-500 dark:text-slate-400",children:f.trim()?"换个关键词试试。":"发送第一条消息后,这里会出现新的会话记录。"})]})})]})}const Rr=[{value:"default",label:"请求批准",tone:"safe"},{value:"bypassPermissions",label:"完全访问",tone:"open"}];function Tp({activeRunId:e,activeAgentMode:t,activeSessionKey:n,availableKnowledgeBases:r,branding:i,composerPermissionCard:a,draft:l,pendingBridgeActionId:o,permissionModeSaving:s,selectedKnowledgeBaseIds:u,selectedProject:f,sending:c,serviceRunning:p,taskInputLocked:d,taskRunning:x,taskState:S,transportReady:C,onBridgeAction:b,onSend:E,onStopTask:v,setActiveAgentMode:O,setDraft:N,setSelectedKnowledgeBaseIds:y}){const[k,R]=T.useState(!1),B=T.useRef(null),[w,j]=T.useState(""),A=Xr(u,r),$=Ha(r,w),F=Ka($,u),_=u.length,L=Rr.some(P=>P.value===t)?t:"default",M=Qa({serviceRunning:p,transportReady:C,taskState:S,taskInputLocked:d,startFirstPlaceholder:i.startFirstPlaceholder,waitingRuntimePlaceholder:i.waitingRuntimePlaceholder,sendPlaceholder:i.sendPlaceholder}),H=Ga({draft:l,serviceRunning:p,transportReady:C,sending:c,selectedProject:f});return T.useEffect(()=>{const P=h=>{var U;(U=B.current)!=null&&U.contains(h.target)||R(!1)};return k&&document.addEventListener("mousedown",P),()=>{document.removeEventListener("mousedown",P)}},[k]),T.useEffect(()=>{if(!k)return;const P=window.requestAnimationFrame(()=>{var U;const h=(U=B.current)==null?void 0:U.querySelector("input");h instanceof HTMLInputElement&&h.focus()});return()=>window.cancelAnimationFrame(P)},[k]),g.jsx("div",{className:"border-t border-slate-200/80 px-3 py-3 dark:border-white/[0.06] sm:px-6",children:g.jsx("div",{className:"mx-auto max-w-4xl rounded-[24px] border border-slate-200 bg-[#fbfbfd] p-2 dark:border-white/[0.08] dark:bg-[#111214] sm:p-2.5",children:a?g.jsx(Ap,{card:a,loading:o===a.id,onAction:P=>void b(a,P),testId:"desktop-chat-composer-permission-card",className:"border-primary/45 bg-white shadow-[0_14px_34px_rgba(0,122,255,0.12)] dark:border-primary/35 dark:bg-[#090d12]"}):g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"relative",children:[g.jsx(zl,{"data-testid":"desktop-chat-input",value:l,onChange:P=>N(P.target.value),onKeyDown:P=>{P.key==="Enter"&&!P.shiftKey&&!d&&(P.preventDefault(),E())},rows:3,placeholder:M,"aria-label":M,disabled:!p||!C||c||!f||d,className:"min-h-[104px] rounded-[22px] border-slate-200 bg-white px-4 pb-16 pt-3 text-[15px] leading-6 text-slate-900 placeholder:text-slate-400 focus-visible:ring-primary/15 dark:border-white/[0.08] dark:bg-[#090d12] dark:text-white dark:placeholder:text-slate-500 sm:min-h-[116px] sm:px-5 sm:pt-4"}),x?g.jsxs(ce,{variant:"danger",onClick:()=>void v(),disabled:!n&&!e||S==="stopping","data-testid":"desktop-chat-stop-task",className:"absolute bottom-3 right-3 h-11 min-w-11 rounded-full bg-red-50 px-3 text-red-600 shadow-none hover:bg-red-100 dark:bg-red-500/12 dark:text-red-200 dark:hover:bg-red-500/18 sm:h-12 sm:min-w-[118px] sm:px-5",children:[g.jsx(Bt,{size:16,className:"animate-spin"}),g.jsx("span",{className:"hidden sm:inline",children:S==="stopping"?"停止中":"停止任务"})]}):g.jsx(ce,{onClick:()=>void E(),disabled:!H,"data-testid":"desktop-chat-send",className:"absolute bottom-3 right-3 h-11 w-11 rounded-full bg-primary px-0 text-white shadow-none hover:bg-[#0071e3] disabled:bg-slate-300 disabled:text-white disabled:opacity-100 dark:bg-primary dark:text-white dark:hover:bg-[#2997ff] dark:disabled:bg-white/20 dark:disabled:text-white/55 sm:h-12 sm:w-12",children:c?g.jsx(Bt,{size:18,className:"animate-spin"}):g.jsx(Vl,{size:22,strokeWidth:2.2})})]}),g.jsxs("div",{className:"mt-2 flex flex-col gap-2 px-1 pr-0 text-[11px] text-slate-500 dark:text-slate-400 sm:flex-row sm:items-center sm:justify-between sm:pr-[4.5rem]",children:[g.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[g.jsxs("div",{className:"inline-flex h-8 shrink-0 items-center gap-1 rounded-full border border-slate-200 bg-white p-1 shadow-sm dark:border-white/[0.08] dark:bg-white/[0.05]",role:"group","aria-label":"权限模式","data-testid":"desktop-chat-permission-mode",children:[g.jsx(na,{size:13,className:"ml-1 text-amber-500"}),Rr.map(P=>{const h=L===P.value;return g.jsx("button",{type:"button",disabled:!f||s||x,onClick:()=>O(P.value),"data-testid":`desktop-chat-permission-mode-${P.value}`,className:pe("h-6 rounded-full px-2.5 text-xs font-medium transition-colors",h?P.tone==="open"?"bg-amber-100 text-amber-800 dark:bg-amber-500/18 dark:text-amber-100":"bg-slate-900 text-white dark:bg-white dark:text-slate-950":"text-slate-500 hover:bg-slate-100 hover:text-slate-900 dark:text-slate-300 dark:hover:bg-white/[0.08] dark:hover:text-white","disabled:cursor-not-allowed disabled:opacity-50"),children:P.label},P.value)}),s?g.jsx(Bt,{size:12,className:"mr-1 animate-spin text-slate-400"}):null]}),g.jsxs("div",{className:"relative",ref:B,children:[g.jsxs(ce,{size:"sm",variant:"secondary",disabled:!f,onClick:()=>R(P=>!P),"data-testid":"desktop-chat-knowledge-base-toggle",className:"h-8 rounded-full border border-slate-200 bg-white px-2.5 text-xs text-slate-700 shadow-sm hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.05] dark:text-slate-100 dark:hover:bg-white/[0.1]",children:[g.jsx(Yl,{size:13}),_>0?"调整知识库":"选择知识库"]}),k?g.jsxs("div",{className:"animate-float-in absolute bottom-full left-0 z-20 mb-3 w-[min(34rem,calc(100vw-2rem))] max-h-[70dvh] overflow-hidden rounded-[22px] border border-slate-200 bg-white p-3 shadow-[0_18px_45px_rgba(15,23,42,0.12)] dark:border-white/[0.08] dark:bg-[#0c1117]",children:[g.jsxs("div",{className:"flex items-center justify-between gap-3",children:[g.jsxs("div",{children:[g.jsx("p",{className:"text-sm font-semibold text-slate-900 dark:text-white",children:"选择知识库"}),g.jsx("p",{className:"text-[11px] text-slate-400",children:"已选项排在前面,方便快速确认范围。"})]}),_>0?g.jsx("button",{type:"button",onClick:()=>void y([]),className:"text-xs text-slate-400 transition-colors hover:text-slate-900 dark:hover:text-white",children:"清空"}):null]}),g.jsx(xn,{value:w,onChange:P=>j(P.target.value),placeholder:"搜索知识库","aria-label":"搜索知识库",className:"mt-3 rounded-[18px] border-slate-200 bg-white text-slate-900 placeholder:text-slate-400 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-white dark:placeholder:text-slate-500"}),g.jsx("div",{className:"mt-3 max-h-64 space-y-2 overflow-y-auto pr-2 [scrollbar-gutter:stable]",children:F.length===0?g.jsx("div",{className:"rounded-xl border border-dashed border-slate-200 px-3 py-4 text-center text-xs text-slate-500 dark:border-white/[0.08]",children:"没有匹配的知识库"}):F.map(P=>{const h=u.includes(P.id);return g.jsxs("button",{type:"button",onClick:()=>void y(h?u.filter(U=>U!==P.id):[...u,P.id]),"data-testid":"desktop-chat-knowledge-base-select",className:pe("flex w-full items-start gap-3 rounded-[16px] border px-3 py-3 text-left transition-all duration-200",h?"border-primary/25 bg-primary/5 dark:border-primary/30 dark:bg-primary/10":"border-slate-200 bg-white hover:border-slate-300 hover:bg-[#fafafa] dark:border-white/[0.06] dark:bg-white/[0.03] dark:hover:border-white/[0.12] dark:hover:bg-white/[0.05]"),children:[g.jsx("span",{className:pe("mt-0.5 inline-flex h-5 w-5 items-center justify-center rounded-full border text-[10px]",h?"border-primary bg-primary text-white":"border-slate-300 text-transparent dark:border-white/[0.12]"),children:g.jsx(Br,{size:12})}),g.jsxs("span",{className:"min-w-0 flex-1",children:[g.jsx("span",{className:"block truncate text-sm font-medium text-slate-900 dark:text-white",children:P.name}),g.jsxs("span",{className:"mt-1 block text-[11px] text-slate-400",children:[P.fileCount," 文件",P.description?` · ${P.description}`:""]})]})]},P.id)})})]}):null]}),g.jsx("div",{className:"flex min-w-0 items-center gap-2 overflow-x-auto whitespace-nowrap [scrollbar-gutter:stable]",children:A.length===0?g.jsx("span",{className:"text-xs text-slate-400",children:f?"当前未限制知识库范围":"选择项目后可设置知识库范围"}):A.map(P=>g.jsxs("span",{className:"inline-flex shrink-0 items-center gap-2 rounded-full border border-slate-200 bg-white px-2.5 py-1 text-xs text-slate-700 shadow-sm dark:border-white/[0.08] dark:bg-white/[0.05] dark:text-slate-100",children:[g.jsx("span",{className:"max-w-[10rem] truncate",children:P.name}),P.fileCount>0?g.jsxs("span",{className:"text-[10px] text-slate-500",children:[P.fileCount," 文件"]}):null,g.jsx("button",{type:"button",onClick:()=>void y(u.filter(h=>h!==P.id)),className:"text-slate-500 transition-colors hover:text-slate-900 dark:hover:text-white","data-testid":"desktop-chat-knowledge-base-remove","aria-label":`移除 ${P.name}`,children:g.jsx($r,{size:12})})]},P.id))})]}),g.jsxs("div",{className:"hidden shrink-0 items-center gap-3 sm:flex",children:[g.jsx("span",{children:"Enter 发送,Shift + Enter 换行"}),g.jsx("span",{children:f?"范围会随当前线程保存":"请先选择项目"})]})]})]})})})}function zp({deleteTarget:e,pendingSessionAction:t,renameDraft:n,renameTarget:r,onDeleteSession:i,onRenameSession:a,setDeleteTarget:l,setRenameDraft:o,setRenameTarget:s}){return g.jsxs(g.Fragment,{children:[g.jsx(Un,{open:!!r,onClose:()=>s(null),title:"重命名会话",children:g.jsxs("div",{className:"space-y-4",children:[g.jsx(xn,{value:n,onChange:u=>o(u.target.value),onInput:u=>o(u.target.value),placeholder:"输入会话名称","data-testid":"desktop-chat-rename-input"}),g.jsxs("div",{className:"flex justify-end gap-2",children:[g.jsx(ce,{variant:"secondary",onClick:()=>s(null),"data-testid":"desktop-chat-rename-cancel",children:"取消"}),g.jsx(ce,{onClick:()=>void a(),loading:t==="rename",disabled:!n.trim(),"data-testid":"desktop-chat-rename-save",children:"保存名称"})]})]})}),g.jsx(Un,{open:!!e,onClose:()=>l(null),title:"删除会话",children:g.jsxs("div",{className:"space-y-4",children:[g.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-300",children:["确定删除 ",g.jsx("span",{className:"font-medium text-gray-900 dark:text-white",children:e==null?void 0:e.name})," 吗?这会移除该会话的本地保存记录。"]}),g.jsxs("div",{className:"flex justify-end gap-2",children:[g.jsx(ce,{variant:"secondary",onClick:()=>l(null),"data-testid":"desktop-chat-delete-cancel",children:"取消"}),g.jsx(ce,{variant:"danger",onClick:()=>void i(),loading:t==="delete","data-testid":"desktop-chat-delete-confirm",children:"删除会话"})]})]})})]})}function el(){return{chatTitle:"本地对话",chatHeading:"本地对话",chatDescription:"浏览线程、切换工作区,并与本地 AI Core 保持同步。",scopeLabel:"当前工作区",scopeSelectPlaceholder:"选择工作区",searchPlaceholder:"搜索线程、联系人或消息摘要",startRuntimeLabel:"启动运行时",startingRuntimeLabel:"启动中…",newThreadLabel:"新建线程",pendingRestartLabel:"最新配置已经保存,但当前对话仍在使用旧运行时状态。请重启运行时以应用配置。",emptySelectionLabel:"选择工作区后即可开始对话。",emptyThreadsLabel:"当前还没有线程。",emptySearchLabel:"没有匹配的线程。",collectionLabel:"线程",activeScopeLabel:"当前工作区",activeConversationFallback:"新对话",startConversationLabel:"选择工作区后即可开始聊天。",runtimeOnlineLabel:"运行时在线",runtimeOfflineLabel:"运行时离线",emptyConversationLabel:"发送一条消息,即可在当前工作区创建新线程。",startFirstPlaceholder:"请先启动运行时",waitingRuntimePlaceholder:"正在等待运行时通道连接",sendPlaceholder:"输入一条发给当前线程的消息",permissionUnsupportedLabel:"当前代理无法在此对话中继续交互式审批。请切换到支持的代理,或调整运行时权限后重试。",replyTimeoutLabel:"审批回复已发送,但代理没有继续执行。该请求可能暂不支持本地运行时继续处理。"}}function Pp({requestedProject:e,selectedProject:t,setSelectedProject:n,clearReplyTimeout:r,updateTaskState:i,setTyping:a}){const[l,o]=T.useState(null),[s,u]=T.useState(!0),f=!1,c=(l==null?void 0:l.phase)==="api_ready",p=c,d=T.useCallback(async()=>{const x=await yl();o(x),!x.roles.conversation.lastError&&!t&&!e&&x.settings.defaultProject&&n(x.settings.defaultProject)},[e,t,n]);return T.useEffect(()=>{d().finally(()=>u(!1));const x=wl(S=>{o(S),(S.phase==="stopped"||S.phase==="error")&&(a(!1),r(),i("idle"))});return()=>{r(),x()}},[r,d,a,i]),T.useMemo(()=>({loading:s,refreshRuntime:d,runtime:l,serviceRunning:c,showSessionKey:f,transportReady:p}),[s,d,l,c,f,p])}function Lp({current:e,requested:t,runtimeDefault:n,workspaceIds:r}){return e&&r.includes(e)?e:t&&r.includes(t)?t:n&&r.includes(n)?n:r[0]||""}function Dp({activeThreadId:e,requestedWorkspaceId:t,requestedThreadId:n,runtimeDefaultWorkspaceId:r,searchParams:i,serviceRunning:a,selectedWorkspaceId:l,workspaceIds:o,threadGroups:s,threadSearch:u,setSelectedKnowledgeBaseIds:f,setActiveRunId:c,setActiveSessionAgentType:p,setActiveAgentMode:d,setActiveSessionId:x,setActiveSessionKey:S,setActiveSessionName:C,setBridgeError:b,setMessages:E,setPendingPermissionRequest:v,setProjects:O,setSearchParams:N,setSelectedProject:y,setThreadGroups:k,setTyping:R,applyLocalCoreThreadDetail:B,clearReplyTimeout:w,updateTaskState:j,holdBlankComposerRef:A,lastSessionByProjectRef:$,nextMessageOrderRef:F,pendingTurnRef:_,progressSequenceByTurnRef:L}){const M=T.useMemo(()=>{var K;return((K=s.find(m=>m.project===l))==null?void 0:K.sessions)||[]},[l,s]),H=T.useMemo(()=>{const K=u.trim().toLowerCase();return o.map(m=>{var Z;const Y=(((Z=s.find(G=>G.project===m))==null?void 0:Z.sessions)||[]).filter(G=>Sa(G,K));return{project:m,sessions:Y}}).filter(m=>m.sessions.length>0||!K&&m.project===l)},[l,s,u,o]),P=T.useCallback(async K=>{if(!K||!a)return[];const m=Wr((await Ml(K)).threads.map(Z=>qr(Z))),Y=m.find(Z=>Z.id===e);return Y!=null&&Y.agentType&&p(Y.agentType),Y!=null&&Y.agentMode&&d(Y.agentMode),k(Z=>Yr(Z,K,m)),m},[e,a,d,p,k]),h=T.useCallback(async(K,m)=>{if(!K||!m||!a)return;A.current=!1,j("idle"),v(null),R(!1);const Y=await Rl(m);B(Y)},[B,A,F,_,L,a,c,d,p,x,S,C,f,E,v,y,k,R,j]),U=T.useCallback(async()=>{if(!a)return O([]),k([]),f([]),[];const K=(await Ol()).workspaces.map(Z=>Z.id);O(K);const m=Lp({current:l,requested:t,runtimeDefault:r,workspaceIds:K}),Y=(await Promise.all(K.map(async Z=>({project:Z,sessions:await P(Z)})))).sort((Z,G)=>Z.project.localeCompare(G.project));return k(Y),y(m),Y},[P,t,r,l,a,O,f,y,k]);return T.useEffect(()=>{if(a)return Sl(K=>{K.type==="thread.session.activated"&&K.threadId!==e&&P(K.workspaceId).then(()=>h(K.workspaceId,K.threadId))})},[e,h,P,a]),T.useEffect(()=>{if(!a){k([]),E([]),v(null),f([]),p(""),c(""),b(""),_.current=null,F.current=0,L.current={},j("idle"),R(!1),w();return}U()},[w,F,_,L,U,a,c,p,b,E,v,f,k,R,j]),T.useEffect(()=>{if(!l||!a||M.find(G=>G.id===e))return;const m=t===l?n:"",Y=$.current[l];if(!e&&A.current)return;const Z=M.find(G=>G.id===m)||M.find(G=>G.id===Y)||M[0];if(Z){R(!1),j("idle"),b(""),w(),h(l,Z.id);return}R(!1),j("idle"),b(""),w(),x(""),S(""),C(""),p(""),c(""),E([]),_.current=null,F.current=0,L.current={}},[e,w,A,$,h,F,_,L,n,t,l,a,c,p,x,S,C,b,E,R,M,j]),T.useEffect(()=>{if(!l&&!e)return;const K=new URLSearchParams(i);l?K.set("project",l):K.delete("project"),e?K.set("session",e):K.delete("session"),K.toString()!==i.toString()&&N(K,{replace:!0})},[e,i,l,N]),{filteredThreadGroups:H,loadActiveThread:h,refreshThreadsForWorkspace:P,refreshWorkspacesAndThreads:U}}function Fp({activeAgentType:e,activeThreadId:t,armReplyTimeout:n,clearActionStatuses:r,clearReplyTimeout:i,reserveNextMessageOrder:a,selectedWorkspaceId:l,sendAction:o,settlePreviewMessages:s,setActiveRunId:u,setBridgeError:f,setMessages:c,setPendingPermissionRequest:p,setPendingBridgeActionId:d,setTyping:x,updateTaskState:S}){return{handleBridgeAction:T.useCallback(async(b,E)=>{if(!t)return;const v=$n(E.data)||E.data,O=$n(E.data)||E.text||E.data,N=Pa(b),y=!N,k=y?-1:a(),R=`${crypto.randomUUID()}-user-action`;let B=!1,w=!1;d(b.id),c(j=>j.map(A=>A.id===b.id?{...A,actionPending:!0}:A)),p(j=>j&&j.id===b.id?{...j,actionPending:!0}:j);try{N&&(w=!0,c(A=>[...A,{id:R,role:"user",content:O,order:k,timestamp:new Date().toISOString()}]));const j=await o(t,v);u(j.runId),B=!0,f(""),s(b.actionReplyCtx),x(!0),i(),r(),y?(S("permission_submitted","bridge-permission-submitted"),n("permission_continue"),p(null),c(A=>A.map($=>$.id===b.id?Fa($):$))):(S("running","bridge-action-submitted"),n())}catch(j){f(j instanceof Error?j.message:"Failed to send permission response."),w&&c(A=>A.filter($=>$.id!==R)),S(y?"awaiting_permission":"error",y?"bridge-permission-submit-failed":"bridge-action-submit-failed"),x(!1),p(A=>A&&A.id===b.id?{...A,actionPending:!1}:A)}finally{d(null),c(j=>j.map(A=>A.id===b.id?{...A,actionPending:!1,actions:B?A.actions||[]:A.actions}:A))}},[t,n,r,i,a,o,s,u,f,c,p,d,x,S])}}function Mp(e){return e==="awaiting_permission"?"awaiting_permission":"idle"}function Rp(e,t){return t?"awaiting_permission":e?"awaiting_input":"idle"}function Op(e,t){return t?"bridge-buttons-awaiting-permission":e?"bridge-buttons-awaiting-input":"bridge-buttons-idle"}function Bp(e){const t=e||"This agent",n=el();return n.permissionUnsupportedLabel.startsWith("This agent")?n.permissionUnsupportedLabel:`${t} ${n.permissionUnsupportedLabel.replace(/^This agent\s+/i,"")}`}function $p(e){return e.type==="typing_stop"||e.type==="buttons"||e.type==="card"?!0:e.type==="reply"&&!ht(e.bridgeKind)}function Up({activeAgentType:e,activeBridgeSessionKey:t,activeRunId:n,armReplyTimeout:r,clearActionStatuses:i,clearReplyTimeout:a,finalizeTurnMessages:l,nextProgressMessageId:o,pendingTurnRef:s,progressSequenceByTurnRef:u,refreshThreadsForWorkspace:f,reserveAssistantMessageOrder:c,settlePreviewMessages:p,setBridgeError:d,setMessages:x,setPendingPermissionRequest:S,setTyping:C,taskStateRef:b,updateTaskState:E}){const v=jl(e),O=T.useRef(ha());T.useEffect(()=>{O.current.reset()},[t]);const N=T.useCallback(k=>{Ta(b.current)&&E("running",k)},[b,E]),y=T.useCallback(k=>{const R=va(k.sessionKey);if(R&&$p(k)&&f(R),!(!k.sessionKey||k.sessionKey!==t)&&O.current.acceptBridgeEvent(k,{activeRunId:n,pendingTurn:s.current}))switch(k.type){case"preview_start":if($t(k.bridgeStatus)){a(),C(!1),s.current=null,i(),E("awaiting_input","bridge-preview-awaiting-input"),S(null),d(""),x(L=>{const M=vt(L,k.previewHandle,k.replyCtx),H=(M==null?void 0:M.id)||k.previewHandle||`${k.replyCtx||crypto.randomUUID()}-preview`,P=L.filter(h=>h.id!==H);return P.push({id:H,role:"assistant",content:k.content||"",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:(M==null?void 0:M.order)??c(k.sessionKey),timestamp:(M==null?void 0:M.timestamp)||new Date().toISOString(),turnKey:k.replyCtx,preview:!0,previewPlainText:v}),P});break}i(),C(!0),N("bridge-preview-start"),S(null),r(),d(""),x(L=>{const M=vt(L,k.previewHandle,k.replyCtx),H=(M==null?void 0:M.id)||k.previewHandle||`${k.replyCtx||crypto.randomUUID()}-preview`,P=L.filter(h=>h.id!==H);return P.push({id:H,role:"assistant",content:k.content||"",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:(M==null?void 0:M.order)??c(k.sessionKey),timestamp:(M==null?void 0:M.timestamp)||new Date().toISOString(),turnKey:k.replyCtx,preview:!0,previewPlainText:v}),P});break;case"update_message":if($t(k.bridgeStatus)){a(),C(!1),s.current=null,i(),E("awaiting_input","bridge-update-awaiting-input"),S(null),d(""),x(L=>{const M=vt(L,k.previewHandle,k.replyCtx);return M?L.map(H=>H.id===M.id?{...H,content:k.content||"",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,preview:!0,previewPlainText:v}:H):[...L,{id:k.previewHandle||`${k.replyCtx||crypto.randomUUID()}-preview`,role:"assistant",content:k.content||"",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:c(k.sessionKey),timestamp:new Date().toISOString(),turnKey:k.replyCtx,preview:!0,previewPlainText:v}]});break}i(),C(!0),N("bridge-update-message"),S(null),r(),d(""),x(L=>{const M=vt(L,k.previewHandle,k.replyCtx);return M?L.map(H=>H.id===M.id?{...H,content:k.content||"",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,preview:!0,previewPlainText:v}:H):[...L,{id:k.previewHandle||`${k.replyCtx||crypto.randomUUID()}-preview`,role:"assistant",content:k.content||"",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:c(k.sessionKey),timestamp:new Date().toISOString(),turnKey:k.replyCtx,preview:!0,previewPlainText:v}]});break;case"delete_message":x(L=>L.filter(M=>M.id!==k.previewHandle));break;case"typing_start":i(),C(!0),N("bridge-typing-start"),S(null),d(""),r();break;case"typing_stop":C(!1),a(),s.current=null,i(),E(Mp(b.current),b.current==="awaiting_permission"?"bridge-typing-stop-preserve-permission":"bridge-typing-stop"),p(k.replyCtx),l(k.replyCtx);break;case"reply":{const L=$t(k.bridgeStatus);i(),C(!L),L?(a(),s.current=null,E("awaiting_input","bridge-reply-awaiting-input")):(N("bridge-reply"),r()),S(null),d("");const M=k.messageId||o(k.replyCtx);!ht(k.bridgeKind)&&k.replyCtx&&delete u.current[k.replyCtx],d(""),x(H=>{const P=H.find(U=>U.id===M),h=new Date().toISOString();return P?H.map(U=>U.id===M?{...U,content:k.content||"",toolCall:k.toolCall,bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,kind:"progress",timestamp:h,turnKey:k.replyCtx}:U):[...H.filter(U=>!ba(U,k.content,k.replyCtx,k.bridgeKind)),{id:M,role:"assistant",content:k.content||"",toolCall:k.toolCall,bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,kind:"progress",order:c(k.sessionKey),timestamp:h,turnKey:k.replyCtx}]});break}case"buttons":a(),C(!1),s.current=null,d(""),i(),p(k.replyCtx);const B=`${k.replyCtx||crypto.randomUUID()}-buttons`,w=Ea(k.buttonRows||k.buttons),j=ja(w),A=j&&Al(e),$=j&&!A?[]:w,F=$,_=j&&!A?Bp(e):void 0;x(L=>L.find(H=>H.id===B)?L.map(H=>H.id===B?{...H,content:k.content||H.content,actions:F,actionReplyCtx:k.replyCtx,actionPending:!1,actionMode:j?"permission":"generic",actionInteractive:A,bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,actionStatus:_}:H):[...L,{id:B,role:"assistant",content:k.content||"Permission required before continuing.",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:c(k.sessionKey),timestamp:new Date().toISOString(),turnKey:k.replyCtx,actions:F,actionReplyCtx:k.replyCtx,actionPending:!1,actionMode:j?"permission":"generic",actionInteractive:A,actionStatus:_}]),S(L=>{if(!j||!A)return null;const M={id:B,role:"assistant",content:k.content||"Permission required before continuing.",actions:$,actionReplyCtx:k.replyCtx,actionPending:!1,actionMode:"permission",actionStatus:_};return Da(M)||L}),E(Rp(w.length>0,A),Op(w.length>0,A));break;case"card":a(),C(!1),s.current=null,i(),E("idle","bridge-card"),S(null),p(k.replyCtx),l(k.replyCtx),d(""),x(L=>[...L,{id:`${k.replyCtx||crypto.randomUUID()}-card`,role:"assistant",content:"Interactive card received. Open the session in the standard Sessions view for full controls.",order:c(k.sessionKey),timestamp:new Date().toISOString()}]);break}},[v,e,t,n,r,i,a,l,o,s,u,f,c,p,d,x,S,C,N,E]);T.useEffect(()=>{const k=Nl(R=>{y(R)});return()=>{a(),k()}},[a,y])}function Hp(e){Up({activeAgentType:e.activeAgentType,activeBridgeSessionKey:e.activeBridgeSessionKey,activeRunId:e.activeRunId,armReplyTimeout:e.armReplyTimeout,clearActionStatuses:e.clearActionStatuses,clearReplyTimeout:e.clearReplyTimeout,finalizeTurnMessages:e.finalizeTurnMessages,nextProgressMessageId:e.nextProgressMessageId,pendingTurnRef:e.pendingTurnRef,progressSequenceByTurnRef:e.progressSequenceByTurnRef,refreshThreadsForWorkspace:e.refreshThreadsForWorkspace,reserveAssistantMessageOrder:e.reserveAssistantMessageOrder,settlePreviewMessages:e.settlePreviewMessages,setBridgeError:e.setBridgeError,setMessages:e.setMessages,setPendingPermissionRequest:e.setPendingPermissionRequest,setTyping:e.setTyping,taskStateRef:e.taskStateRef,updateTaskState:e.updateTaskState});const{handleBridgeAction:t}=Fp({activeAgentType:e.activeAgentType,activeBridgeSessionKey:e.activeBridgeSessionKey,activeRunId:e.activeRunId,activeThreadId:e.activeThreadId,armReplyTimeout:e.armReplyTimeout,clearActionStatuses:e.clearActionStatuses,clearReplyTimeout:e.clearReplyTimeout,reserveNextMessageOrder:e.reserveNextMessageOrder,selectedWorkspaceId:e.selectedWorkspaceId,sendAction:e.sendAction,settlePreviewMessages:e.settlePreviewMessages,setActiveRunId:e.setActiveRunId,setBridgeError:e.setBridgeError,setMessages:e.setMessages,setPendingPermissionRequest:e.setPendingPermissionRequest,setPendingBridgeActionId:e.setPendingBridgeActionId,setTyping:e.setTyping,updateTaskState:e.updateTaskState,taskStateRef:e.taskStateRef});return{handleBridgeAction:t}}function Kp({activeRunId:e,activeThreadId:t,activeBridgeSessionKey:n,activeAgentMode:r,brandingNewThreadLabel:i,draft:a,loadActiveThread:l,selectedKnowledgeBaseIds:o,selectedProject:s,taskState:u,updateTaskState:f,applyLocalCoreThreadDetail:c,armReplyTimeout:p,clearReplyTimeout:d,refreshSessionsForProject:x,reserveNextMessageOrder:S,settlePreviewMessages:C,setActiveRunId:b,setActiveSessionId:E,setActiveSessionKey:v,setActiveSessionName:O,setBridgeError:N,setDraft:y,setMessages:k,setPendingPermissionRequest:R,setSending:B,setTyping:w,holdBlankComposerRef:j,nextMessageOrderRef:A,pendingTurnRef:$,progressSequenceByTurnRef:F,taskStateRef:_}){const L=T.useCallback(async()=>{if(!s)throw new Error("Choose a project first");if(t)return{id:t,sessionKey:n};let P=await Ur(s,`${i} ${new Date().toLocaleTimeString()}`);return r&&r!=="default"&&(P=await bn(P.id,r)),c(P),await x(s),{id:P.id,sessionKey:P.bridgeSessionKey||""}},[n,r,t,c,i,x,s]),M=T.useCallback(async()=>{if(!a.trim()||!s)return;const P=a.trim(),h=u==="awaiting_input",U=P,K=S();y(""),B(!0);try{const m=await L();if($.current={sessionKey:m.sessionKey,userOrder:K,runId:h?e:void 0,supersededRunId:h?void 0:e},R(null),k(Y=>[...Y,{id:`${crypto.randomUUID()}-user`,role:"user",content:P,order:K,timestamp:new Date().toISOString()}]),f("running","send-started"),w(!0),N(""),m.id&&await kn(m.id,o),p(),m.id){const Y=h?await Hr(m.id,U):await Bl(m.id,U);b(Y.runId),$.current&&$.current.sessionKey===m.sessionKey&&$.current.userOrder===K&&($.current={...$.current,runId:Y.runId})}}catch(m){d(),$.current=null,C(),R(null),w(!1),f("error","send-failed"),N(m instanceof Error?m.message:"Failed to send the message.")}finally{B(!1)}},[e,p,d,a,L,u,$,S,o,s,b,N,y,k,R,B,C,w,f]),H=T.useCallback(async()=>{if(!(!s||u==="stopping")){N(""),d(),C(),R(null),w(!1),f("stopping","stop-requested");try{if(e)await $l(e);else throw new Error("No active run to stop.");window.setTimeout(()=>{_.current==="stopping"&&f("idle","stop-timeout-complete")},1500)}catch(P){f("error","stop-failed"),N(P instanceof Error?P.message:"Failed to stop the current task.")}}},[e,d,N,R,C,w,s,u,_,f]);return{handleSend:M,handleStopTask:H}}function Vp({activeThreadId:e,brandingNewThreadLabel:t,deleteTarget:n,renameDraft:r,renameTarget:i,searchParams:a,selectedKnowledgeBaseIds:l,activeAgentMode:o,selectedProject:s,updateTaskState:u,applyLocalCoreThreadDetail:f,clearReplyTimeout:c,refreshSessionsForProject:p,setActiveRunId:d,setActiveSessionAgentType:x,setActiveSessionId:S,setActiveSessionKey:C,setActiveSessionName:b,setBridgeError:E,setDeleteTarget:v,setMessages:O,setPendingPermissionRequest:N,setPendingSessionAction:y,setRenameDraft:k,setRenameTarget:R,setSearchParams:B,setTyping:w,holdBlankComposerRef:j,nextMessageOrderRef:A,pendingTurnRef:$,progressSequenceByTurnRef:F}){const _=T.useCallback(()=>{j.current=!0,S(""),C(""),b(""),x(""),d(""),O([]),N(null),w(!1),u("idle"),E(""),$.current=null,A.current=0,F.current={},c()},[c,j,A,$,F,d,x,S,C,b,E,O,N,w,u]),L=T.useCallback(async()=>{if(s){y("rename");try{let h=await Ur(s,`${t} ${new Date().toLocaleTimeString()}`);if(o&&o!=="default"&&(h=await bn(h.id,o)),l.length>0){const K=(await kn(h.id,l)).knowledgeBaseIds;h.selectedKnowledgeBaseIds=K}else h.selectedKnowledgeBaseIds=[];await p(s),f(h);const U=new URLSearchParams(a);U.set("project",s),U.set("session",h.id),B(U,{replace:!0})}finally{y(null)}}},[f,o,t,p,a,l,s,y,B]),M=T.useCallback((h,U)=>{R({project:h,id:U.id,name:U.name}),k(U.name)},[k,R]),H=T.useCallback(async()=>{if(i){y("rename");try{const h=r.trim();await Ul(i.id,h),i.id===e&&b(h),await p(i.project),R(null),k("")}finally{y(null)}}},[e,p,r,i,b,y,k,R]),P=T.useCallback(async()=>{if(n){y("delete");try{await Hl(n.id),n.id===e&&_(),await p(n.project),v(null)}finally{y(null)}}},[e,n,p,_,v,y]);return{handleCreateNew:L,handleDeleteSession:P,handleRenameSession:H,openRenameModal:M}}function qp({activeRunId:e,activeThreadId:t,activeBridgeSessionKey:n,brandingNewThreadLabel:r,deleteTarget:i,draft:a,loadActiveThread:l,renameDraft:o,renameTarget:s,searchParams:u,selectedKnowledgeBaseIds:f,activeAgentMode:c,selectedWorkspaceId:p,taskState:d,updateTaskState:x,applyLocalCoreThreadDetail:S,armReplyTimeout:C,clearReplyTimeout:b,refreshSessionsForProject:E,reserveNextMessageOrder:v,settlePreviewMessages:O,setActiveRunId:N,setActiveSessionAgentType:y,setActiveAgentMode:k,setActiveSessionId:R,setActiveSessionKey:B,setActiveSessionName:w,setBridgeError:j,setDeleteTarget:A,setDraft:$,setMessages:F,setPendingPermissionRequest:_,setPendingSessionAction:L,setRenameDraft:M,setRenameTarget:H,setSearchParams:P,setSending:h,setTyping:U,holdBlankComposerRef:K,nextMessageOrderRef:m,pendingTurnRef:Y,progressSequenceByTurnRef:Z,taskStateRef:G}){const ae={selectedProject:p,updateTaskState:x,applyLocalCoreThreadDetail:S,clearReplyTimeout:b,refreshSessionsForProject:E,setBridgeError:j,setMessages:F,setPendingPermissionRequest:_,setTyping:U,holdBlankComposerRef:K,nextMessageOrderRef:m,pendingTurnRef:Y,progressSequenceByTurnRef:Z,taskStateRef:G},V={setActiveRunId:N,setActiveSessionAgentType:y,setActiveAgentMode:k,setActiveSessionId:R,setActiveSessionKey:B,setActiveSessionName:w},ee={setDeleteTarget:A,setPendingSessionAction:L,setRenameDraft:M,setRenameTarget:H},re={holdBlankComposerRef:K,nextMessageOrderRef:m,pendingTurnRef:Y,progressSequenceByTurnRef:Z,taskStateRef:G},me={setBridgeError:j,setMessages:F,setPendingPermissionRequest:_,setTyping:U},{handleSend:_e,handleStopTask:Ie}=Kp({activeRunId:e,activeThreadId:t,activeBridgeSessionKey:n,brandingNewThreadLabel:r,draft:a,loadActiveThread:l,selectedKnowledgeBaseIds:f,activeAgentMode:c,taskState:d,armReplyTimeout:C,reserveNextMessageOrder:v,settlePreviewMessages:O,setDraft:$,setSending:h,...ae,...V,...me,...re}),{handleCreateNew:De,handleDeleteSession:Te,handleRenameSession:ke,openRenameModal:Fe}=Vp({activeThreadId:t,brandingNewThreadLabel:r,deleteTarget:i,renameDraft:o,renameTarget:s,searchParams:u,selectedKnowledgeBaseIds:f,activeAgentMode:c,setSearchParams:P,...ae,...V,...ee,...me});return{handleCreateNew:De,handleDeleteSession:Te,handleRenameSession:ke,handleSend:_e,handleStopTask:Ie,openRenameModal:Fe}}const tl={status:"idle"};function Wp(e,t){switch(t.type){case"activate_started":return{status:"activating"};case"send_started":return{status:"sending"};case"send_accepted":return e.status==="sending"?{status:"waiting"}:e;case"stream_started":return{status:"running"};case"input_requested":return{status:"awaiting_input"};case"permission_requested":return{status:"awaiting_permission"};case"permission_submitted":return{status:"permission_submitted"};case"stop_started":return{status:"stopping"};case"failed":return{status:"failed",error:t.error};case"timed_out":return{status:"timed_out",error:t.error};case"settled":return tl;case"transition":return{status:t.status,error:t.error};default:return e}}function Yp({activeThreadId:e,brandingReplyTimeoutLabel:t,setSelectedKnowledgeBaseIds:n,setActiveRunId:r,setActiveSessionAgentType:i,setActiveAgentMode:a,setActiveSessionId:l,setActiveSessionKey:o,setActiveSessionName:s,setBridgeError:u,setSelectedProject:f,setThreadGroups:c}){const[p,d]=T.useState([]),[x,S]=T.useState(null),[C,b]=T.useState(!1),[E,v]=T.useReducer(Wp,tl),O=xa(E.status),N=T.useRef(null),y=T.useRef("reply"),k=T.useRef({}),R=T.useRef(0),B=T.useRef(null),w=T.useRef(!1),j=T.useRef({}),A=T.useRef("idle"),$=T.useRef(""),F=T.useMemo(()=>Vn(p),[p]),_=Na(O),L=_a(O),M=Aa(O,C);T.useEffect(()=>{$.current=e},[e]);const H=T.useCallback((V,ee="unspecified")=>{const re=A.current;A.current=V,v(ga(V)),re!==V&&console.info("[desktop-chat] task_state",{from:re,to:V,reason:ee,threadId:$.current})},[]),P=T.useCallback(()=>{N.current&&(window.clearTimeout(N.current),N.current=null)},[]),h=T.useCallback((V="reply")=>{P(),y.current=V,N.current=window.setTimeout(()=>{b(!1),B.current=null,S(null),H("idle","reply-timeout"),u(V==="permission_continue"?t:"Agent did not respond in time. Check AgentDock runtime logs or adjust the model/provider.")},ma)},[t,P,u,H]),U=T.useCallback(()=>{d(V=>V.map(ee=>ee.actionStatus||ee.actionPending?{...ee,actionPending:!1,actionStatus:void 0}:ee))},[]),K=T.useCallback(V=>{d(ee=>ka(ee,V))},[]),m=T.useCallback(()=>{const V=R.current;return R.current+=1,V},[]),Y=T.useCallback(V=>{const ee=B.current;if(ee&&V&&ee.sessionKey===V){const re=ee.userOrder+1;R.current<re&&(R.current=re)}return m()},[m]),Z=T.useCallback(V=>{const ee=V||crypto.randomUUID(),re=(j.current[ee]||0)+1;return j.current[ee]=re,`${ee}-progress-${re}`},[]),G=T.useCallback(V=>{d(ee=>ya(ee,V))},[]);return{applyLocalCoreThreadDetail:T.useCallback(V=>{k.current[V.workspaceId]=V.id,f(V.workspaceId),l(V.id),o(V.bridgeSessionKey||""),s(V.title),i(V.agentType||""),a(V.agentMode||"default"),r(V.runId||""),n(V.selectedKnowledgeBaseIds||[]),S(V.pendingPermissionRequest||null),c(re=>Ia(re,V.workspaceId,qr(V))),w.current=!1,j.current={};const ee=wa(V.messages||[]);B.current=null,R.current=ee.reduce((re,me)=>Math.max(re,me.order+1),0),d(Vn(ee))},[r,a,i,l,o,s,n,f,c,S]),armReplyTimeout:h,clearActionStatuses:U,clearReplyTimeout:P,holdBlankComposerRef:w,lastSessionByProjectRef:k,messages:p,nextMessageOrderRef:R,pendingPermissionRequest:x,finalizeTurnMessages:G,nextProgressMessageId:Z,pendingTurnRef:B,progressSequenceByTurnRef:j,renderedMessages:F,reserveAssistantMessageOrder:Y,reserveNextMessageOrder:m,setMessages:d,setPendingPermissionRequest:S,settlePreviewMessages:K,setTyping:b,taskHint:M,taskInputLocked:L,taskRunning:_,taskState:O,taskStateRef:A,typing:C,updateTaskState:H}}function Xp(){const[e,t]=Cl(),[n,r]=T.useState([]),[i,a]=T.useState(""),[l,o]=T.useState([]),[s,u]=T.useState(""),[f,c]=T.useState(""),[p,d]=T.useState(""),[x,S]=T.useState(""),[C,b]=T.useState("default"),[E,v]=T.useState(""),[O,N]=T.useState(""),[y,k]=T.useState(""),[R,B]=T.useState([]),[w,j]=T.useState([]),[A,$]=T.useState(null),[F,_]=T.useState(""),[L,M]=T.useState(null),[H,P]=T.useState(null),[h,U]=T.useState(null),[K,m]=T.useState(!1),[Y,Z]=T.useState(!1),[G,ae]=T.useState(""),V=T.useRef(0),ee=T.useRef(null),re=e.get("project")||"",me=e.get("session")||"",_e=el(),{applyLocalCoreThreadDetail:Ie,armReplyTimeout:De,clearActionStatuses:Te,clearReplyTimeout:ke,finalizeTurnMessages:Fe,holdBlankComposerRef:Qe,lastSessionByProjectRef:He,nextMessageOrderRef:Me,nextProgressMessageId:lt,pendingPermissionRequest:je,pendingTurnRef:Ke,progressSequenceByTurnRef:Ve,renderedMessages:yt,reserveAssistantMessageOrder:I,reserveNextMessageOrder:D,setMessages:W,setPendingPermissionRequest:Q,settlePreviewMessages:ne,setTyping:se,taskHint:ze,taskInputLocked:Ce,taskRunning:qe,taskState:Re,taskStateRef:ue,typing:Oe,updateTaskState:ge}=Yp({activeThreadId:s,brandingReplyTimeoutLabel:_e.replyTimeoutLabel,setSelectedKnowledgeBaseIds:j,setActiveRunId:v,setActiveSessionAgentType:S,setActiveAgentMode:b,setActiveSessionId:u,setActiveSessionKey:c,setActiveSessionName:d,setBridgeError:ae,setSelectedProject:a,setThreadGroups:o}),{loading:nl,refreshRuntime:rl,runtime:wt,serviceRunning:Rn,showSessionKey:il,transportReady:ll}=Pp({requestedProject:re,selectedProject:i,setSelectedProject:a,clearReplyTimeout:ke,updateTaskState:ge,setTyping:se}),{filteredThreadGroups:al,loadActiveThread:St,refreshThreadsForWorkspace:Ct}=Dp({activeThreadId:s,requestedWorkspaceId:re,requestedThreadId:me,runtimeDefaultWorkspaceId:wt==null?void 0:wt.settings.defaultProject,searchParams:e,selectedWorkspaceId:i,serviceRunning:Rn,workspaceIds:n,threadGroups:l,threadSearch:y,setSelectedKnowledgeBaseIds:j,setActiveRunId:v,setActiveSessionAgentType:S,setActiveAgentMode:b,setActiveSessionId:u,setActiveSessionKey:c,setActiveSessionName:d,setBridgeError:ae,setMessages:W,setPendingPermissionRequest:Q,setProjects:r,setSearchParams:t,setSelectedProject:a,setThreadGroups:o,setTyping:se,applyLocalCoreThreadDetail:Ie,clearReplyTimeout:ke,updateTaskState:ge,holdBlankComposerRef:Qe,lastSessionByProjectRef:He,nextMessageOrderRef:Me,pendingTurnRef:Ke,progressSequenceByTurnRef:Ve});T.useEffect(()=>{var Pe;(Pe=ee.current)==null||Pe.scrollIntoView({behavior:"smooth"})},[yt,Oe]);const On=T.useCallback(async()=>{try{const Pe=await Fl();B(Pe.bases||[])}catch{B([])}},[]);T.useEffect(()=>{On()},[On]);const ol=T.useCallback(async Pe=>{const at=Array.from(new Set(Pe.map(Ge=>String(Ge||"").trim()).filter(Boolean))),Be=V.current+1;if(V.current=Be,j(at),!(!i||!s))try{const Ge=(await kn(s,at)).knowledgeBaseIds;V.current===Be&&j(Ge)}catch(Ge){V.current===Be&&ae(Ge instanceof Error?Ge.message:"Failed to save selected knowledge bases.")}},[s,i,ae]),sl=T.useCallback(async Pe=>{const at=["default","bypassPermissions"].includes(Pe)?Pe:"default";if(b(at),!(!i||!s)){Z(!0),ae("");try{const Be=await bn(s,at);Ie(Be),await Ct(i)}catch(Be){ae(Be instanceof Error?Be.message:"Failed to save permission mode."),await St(i,s).catch(()=>null)}finally{Z(!1)}}},[s,Ie,St,Ct,i]),{handleBridgeAction:ul}=Hp({activeAgentType:x,activeThreadId:s,activeRunId:E,activeBridgeSessionKey:f,selectedWorkspaceId:i,clearActionStatuses:Te,clearReplyTimeout:ke,finalizeTurnMessages:Fe,nextProgressMessageId:lt,refreshThreadsForWorkspace:Ct,reserveAssistantMessageOrder:I,reserveNextMessageOrder:D,settlePreviewMessages:ne,setActiveRunId:v,setBridgeError:ae,setMessages:W,setPendingBridgeActionId:U,setTyping:se,setPendingPermissionRequest:Q,updateTaskState:ge,armReplyTimeout:De,pendingTurnRef:Ke,progressSequenceByTurnRef:Ve,sendAction:Hr,taskStateRef:ue}),{handleCreateNew:cl,handleDeleteSession:fl,handleRenameSession:dl,handleSend:pl,handleStopTask:hl,openRenameModal:ml}=qp({activeRunId:E,activeThreadId:s,activeBridgeSessionKey:f,activeAgentMode:C,brandingNewThreadLabel:_e.newThreadLabel,deleteTarget:L,draft:O,loadActiveThread:St,renameDraft:F,renameTarget:A,searchParams:e,selectedKnowledgeBaseIds:w,selectedWorkspaceId:i,taskState:Re,updateTaskState:ge,applyLocalCoreThreadDetail:Ie,armReplyTimeout:De,clearReplyTimeout:ke,refreshSessionsForProject:Ct,reserveNextMessageOrder:D,settlePreviewMessages:ne,setActiveRunId:v,setActiveSessionAgentType:S,setActiveAgentMode:b,setActiveSessionId:u,setActiveSessionKey:c,setActiveSessionName:d,setBridgeError:ae,setDeleteTarget:M,setDraft:N,setMessages:W,setPendingPermissionRequest:Q,setPendingSessionAction:P,setRenameDraft:_,setRenameTarget:$,setSearchParams:t,setSending:m,setTyping:se,holdBlankComposerRef:Qe,nextMessageOrderRef:Me,pendingTurnRef:Ke,progressSequenceByTurnRef:Ve,taskStateRef:ue});return{activeRunId:E,activeAgentMode:C,activeSessionId:s,activeSessionKey:f,activeSessionName:p,bridgeError:G,branding:_e,deleteTarget:L,draft:O,endRef:ee,filteredSessionGroups:al,handleBridgeAction:ul,handleCreateNew:cl,handleDeleteSession:fl,handleRenameSession:dl,handleSend:pl,handleStopTask:hl,availableKnowledgeBases:R,loadActiveSession:St,loading:nl,openRenameModal:ml,pendingBridgeActionId:h,permissionModeSaving:Y,pendingPermissionRequest:je,pendingSessionAction:H,projects:n,refreshRuntime:rl,renameDraft:F,renameTarget:A,renderedMessages:yt,runtime:wt,sending:K,selectedKnowledgeBaseIds:w,serviceRunning:Rn,sessionSearch:y,selectedProject:i,setDeleteTarget:M,setDraft:N,setSelectedKnowledgeBaseIds:ol,setActiveAgentMode:sl,setRenameDraft:_,setRenameTarget:$,setSelectedProject:a,setSessionSearch:k,showSessionKey:il,taskHint:ze,taskInputLocked:Ce,taskRunning:qe,taskState:Re,transportReady:ll}}function Qp(){const[e,t]=T.useState(!1),{activeRunId:n,activeAgentMode:r,activeSessionId:i,activeSessionKey:a,activeSessionName:l,bridgeError:o,branding:s,deleteTarget:u,draft:f,endRef:c,filteredSessionGroups:p,handleBridgeAction:d,handleCreateNew:x,handleDeleteSession:S,handleRenameSession:C,handleSend:b,handleStopTask:E,availableKnowledgeBases:v,loadActiveSession:O,loading:N,openRenameModal:y,pendingBridgeActionId:k,permissionModeSaving:R,pendingPermissionRequest:B,pendingSessionAction:w,projects:j,refreshRuntime:A,renameDraft:$,renameTarget:F,renderedMessages:_,runtime:L,sending:M,selectedKnowledgeBaseIds:H,serviceRunning:P,sessionSearch:h,selectedProject:U,setDeleteTarget:K,setDraft:m,setActiveAgentMode:Y,setSelectedKnowledgeBaseIds:Z,setRenameDraft:G,setRenameTarget:ae,setSelectedProject:V,setSessionSearch:ee,showSessionKey:re,taskHint:me,taskInputLocked:_e,taskRunning:Ie,taskState:De,transportReady:Te}=Xp(),ke=T.useMemo(()=>Va(p,U),[p,U]),Fe=T.useMemo(()=>qa(j,U),[j,U]),Qe=T.useMemo(()=>Wa(ke),[ke]),He=T.useMemo(()=>Xr(H,v),[v,H]),Me=Ya(B),lt=(L==null?void 0:L.phase)==="starting";return N?g.jsx("div",{className:"flex h-64 items-center justify-center text-sm text-slate-500 animate-pulse",children:"正在加载桌面对话…"}):g.jsxs(g.Fragment,{children:[g.jsx("div",{className:"relative h-full min-h-0 overflow-hidden border-slate-200/80 bg-[#f5f5f7] animate-fade-in dark:border-white/[0.06] dark:bg-[#0b0d10] md:rounded-[24px] md:border",children:g.jsxs("div",{className:"grid h-full min-h-0 grid-cols-1 md:grid-cols-[288px_minmax(0,1fr)]",children:[g.jsx(_p,{activeSessionId:i,branding:s,filteredSessionGroups:ke,hasVisibleSessions:Qe,isRuntimeStarting:lt,loading:N,mobileSessionsOpen:e,projects:j,runtime:L,selectedProject:U,serviceRunning:P,sessionSearch:h,showSessionKey:re,visibleProjects:Fe,onCreateNew:()=>void x(),onLoadActiveSession:O,onOpenRenameModal:y,onRefreshRuntime:()=>void A(),setDeleteTarget:K,setMobileSessionsOpen:t,setSelectedProject:V,setSessionSearch:ee}),g.jsxs("section",{className:"flex min-h-0 flex-col bg-white dark:bg-[#0b0d10]",children:[g.jsxs("div",{className:"border-b border-slate-200/80 px-4 py-3 dark:border-white/[0.06] sm:px-6 sm:py-4",children:[g.jsxs("div",{className:"flex items-start gap-3",children:[g.jsx(ce,{size:"sm",variant:"secondary",onClick:()=>t(!0),className:"mt-0.5 h-9 w-9 shrink-0 rounded-xl px-0 md:hidden","aria-label":"Open sessions",children:g.jsx(Jl,{size:16})}),g.jsxs("div",{className:"min-w-0 flex-1",children:[g.jsx("p",{className:"text-[11px] font-medium tracking-[0.16em] text-slate-400 dark:text-slate-500",children:"当前会话"}),g.jsx("h2",{className:"mt-1 truncate text-[1.75rem] font-semibold leading-tight text-slate-900 dark:text-white sm:mt-2 sm:text-[1.95rem] sm:leading-none","data-testid":"desktop-chat-active-title",children:l||s.activeConversationFallback})]})]}),g.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2 text-xs text-slate-500 dark:text-slate-400",children:[U?g.jsx("span",{className:"inline-flex items-center rounded-full bg-slate-100 px-2.5 py-1 text-[11px] text-slate-600 dark:bg-white/[0.05] dark:text-slate-300",children:U}):null,g.jsx("span",{className:"inline-flex items-center gap-1 rounded-full bg-slate-100 px-2.5 py-1 text-[10px] uppercase tracking-[0.18em] text-slate-500 dark:bg-white/[0.05] dark:text-slate-400",children:Ca(L==null?void 0:L.phase)}),Te?g.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-primary/10 px-2.5 py-1 text-primary dark:text-primary",children:[g.jsx(_t,{size:6,className:"fill-current"})," ",s.runtimeOnlineLabel]}):g.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-slate-100 px-2.5 py-1 text-slate-500 dark:bg-white/[0.05] dark:text-slate-400",children:[g.jsx(sa,{size:12})," ",s.runtimeOfflineLabel]}),re&&a?g.jsx("span",{className:"truncate text-[11px] text-slate-400 dark:text-slate-500",children:a}):null]})]}),g.jsxs("div",{className:"flex-1 overflow-y-auto px-3 py-4 [scrollbar-gutter:stable] sm:px-6 sm:py-5",children:[_.length===0?g.jsx("div",{className:"flex h-full min-h-[18rem] items-center justify-center",children:g.jsxs("div",{className:"w-full max-w-2xl rounded-[24px] border border-slate-200 bg-[#fbfbfd] px-5 py-8 text-center dark:border-white/[0.06] dark:bg-white/[0.03] sm:px-8 sm:py-10",children:[g.jsx("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-primary/10 text-primary",children:g.jsx(Kr,{size:22})}),g.jsx("h3",{className:"mt-4 text-lg font-semibold text-slate-900 dark:text-white sm:text-xl",children:"开始一段新的桌面对话"}),g.jsx("p",{className:"mx-auto mt-3 max-w-xl text-sm leading-6 text-slate-500 dark:text-slate-400",children:U?`当前项目是 ${U}。直接提问即可创建会话并开始对话。`:"先在左侧选择项目,然后直接输入你的问题。"}),g.jsx("div",{className:"mt-4 flex flex-wrap justify-center gap-2",children:He.length>0?He.map(je=>g.jsx("span",{className:"rounded-full bg-primary/10 px-3 py-1 text-xs text-primary dark:bg-primary/10 dark:text-primary",children:je.name},je.id)):g.jsx("span",{className:"rounded-full bg-slate-100 px-3 py-1 text-xs text-slate-500 dark:bg-white/[0.05] dark:text-slate-400",children:"当前未限制知识库范围"})})]})}):g.jsx("div",{className:"mx-auto w-full max-w-4xl space-y-5",children:_.map(je=>Xa(je,Me)?g.jsx(Np,{message:je,pendingBridgeActionId:k,onAction:(Ke,Ve)=>void d(Ke,Ve)},je.id):null)}),me?g.jsxs("div",{className:"mt-5 flex items-center gap-2 text-sm text-slate-400","data-testid":"desktop-chat-task-hint",children:[g.jsx(_t,{size:8,className:"fill-current animate-pulse"})," ",me]}):null,o?g.jsx("div",{className:"mt-4 rounded-2xl border border-amber-400/20 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:bg-amber-500/10 dark:text-amber-100","data-testid":"desktop-chat-bridge-error",children:o}):null,g.jsx("div",{ref:c})]}),g.jsx(Tp,{activeRunId:n,activeAgentMode:r,activeSessionKey:a,availableKnowledgeBases:v,branding:s,composerPermissionCard:Me,draft:f,pendingBridgeActionId:k,permissionModeSaving:R,selectedKnowledgeBaseIds:H,selectedProject:U,sending:M,serviceRunning:P,taskInputLocked:_e,taskRunning:Ie,taskState:De,transportReady:Te,onBridgeAction:d,onSend:b,onStopTask:E,setActiveAgentMode:Y,setDraft:m,setSelectedKnowledgeBaseIds:Z})]})]})}),g.jsx(zp,{deleteTarget:u,pendingSessionAction:w,renameDraft:$,renameTarget:F,onDeleteSession:S,onRenameSession:C,setDeleteTarget:K,setRenameDraft:G,setRenameTarget:ae})]})}const sh=Object.freeze(Object.defineProperty({__proto__:null,default:Qp},Symbol.toStringTag,{value:"Module"}));export{Nr as M,sh as T,Rt as c,Mr as r,Pn as v};
|
|
86
|
+
`))}function s(d,x,S,C){const b=S.enter("tableCell"),E=S.enter("phrasing"),v=S.containerPhrasing(d,{...C,before:a,after:a});return E(),b(),v}function u(d,x){return Qf(d,{align:x,alignDelimiters:r,padding:n,stringLength:i})}function f(d,x,S){const C=d.children;let b=-1;const E=[],v=x.enter("table");for(;++b<C.length;)E[b]=c(C[b],x,S);return v(),E}function c(d,x,S){const C=d.children;let b=-1;const E=[],v=x.enter("tableRow");for(;++b<C.length;)E[b]=s(C[b],d,x,S);return v(),E}function p(d,x,S){let C=Vi.inlineCode(d,x,S);return S.stack.includes("tableCell")&&(C=C.replace(/\|/g,"\\$&")),C}}function Md(){return{exit:{taskListCheckValueChecked:Dr,taskListCheckValueUnchecked:Dr,paragraph:Od}}}function Rd(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:Bd}}}function Dr(e){const t=this.stack[this.stack.length-2];t.type,t.checked=e.type==="taskListCheckValueChecked"}function Od(e){const t=this.stack[this.stack.length-2];if(t&&t.type==="listItem"&&typeof t.checked=="boolean"){const n=this.stack[this.stack.length-1];n.type;const r=n.children[0];if(r&&r.type==="text"){const i=t.children;let a=-1,l;for(;++a<i.length;){const o=i[a];if(o.type==="paragraph"){l=o;break}}l===n&&(r.value=r.value.slice(1),r.value.length===0?n.children.shift():n.position&&r.position&&typeof r.position.start.offset=="number"&&(r.position.start.column++,r.position.start.offset++,n.position.start=Object.assign({},r.position.start)))}}this.exit(e)}function Bd(e,t,n,r){const i=e.children[0],a=typeof e.checked=="boolean"&&i&&i.type==="paragraph",l="["+(e.checked?"x":" ")+"] ",o=n.createTracker(r);a&&o.move(l);let s=Vi.listItem(e,t,n,{...r,...o.current()});return a&&(s=s.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,u)),s;function u(f){return f+l}}function $d(){return[kf(),Bf(),Kf(),_d(),Md()]}function Ud(e){return{extensions:[yf(),$f(e),Vf(),Fd(e),Rd()]}}const Hd={tokenize:Xd,partial:!0},qi={tokenize:Qd,partial:!0},Wi={tokenize:Gd,partial:!0},Yi={tokenize:Jd,partial:!0},Kd={tokenize:Zd,partial:!0},Xi={name:"wwwAutolink",tokenize:Wd,previous:Gi},Qi={name:"protocolAutolink",tokenize:Yd,previous:Ji},Le={name:"emailAutolink",tokenize:qd,previous:Zi},Ne={};function Vd(){return{text:Ne}}let We=48;for(;We<123;)Ne[We]=Le,We++,We===58?We=65:We===91&&(We=97);Ne[43]=Le;Ne[45]=Le;Ne[46]=Le;Ne[95]=Le;Ne[72]=[Le,Qi];Ne[104]=[Le,Qi];Ne[87]=[Le,Xi];Ne[119]=[Le,Xi];function qd(e,t,n){const r=this;let i,a;return l;function l(c){return!gn(c)||!Zi.call(r,r.previous)||Mn(r.events)?n(c):(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),o(c))}function o(c){return gn(c)?(e.consume(c),o):c===64?(e.consume(c),s):n(c)}function s(c){return c===46?e.check(Kd,f,u)(c):c===45||c===95||fe(c)?(a=!0,e.consume(c),s):f(c)}function u(c){return e.consume(c),i=!0,s}function f(c){return a&&i&&he(r.previous)?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),t(c)):n(c)}}function Wd(e,t,n){const r=this;return i;function i(l){return l!==87&&l!==119||!Gi.call(r,r.previous)||Mn(r.events)?n(l):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(Hd,e.attempt(qi,e.attempt(Wi,a),n),n)(l))}function a(l){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),t(l)}}function Yd(e,t,n){const r=this;let i="",a=!1;return l;function l(c){return(c===72||c===104)&&Ji.call(r,r.previous)&&!Mn(r.events)?(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),i+=String.fromCodePoint(c),e.consume(c),o):n(c)}function o(c){if(he(c)&&i.length<5)return i+=String.fromCodePoint(c),e.consume(c),o;if(c===58){const p=i.toLowerCase();if(p==="http"||p==="https")return e.consume(c),s}return n(c)}function s(c){return c===47?(e.consume(c),a?u:(a=!0,s)):n(c)}function u(c){return c===null||Tt(c)||ie(c)||Ye(c)||Dt(c)?n(c):e.attempt(qi,e.attempt(Wi,f),n)(c)}function f(c){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),t(c)}}function Xd(e,t,n){let r=0;return i;function i(l){return(l===87||l===119)&&r<3?(r++,e.consume(l),i):l===46&&r===3?(e.consume(l),a):n(l)}function a(l){return l===null?n(l):t(l)}}function Qd(e,t,n){let r,i,a;return l;function l(u){return u===46||u===95?e.check(Yi,s,o)(u):u===null||ie(u)||Ye(u)||u!==45&&Dt(u)?s(u):(a=!0,e.consume(u),l)}function o(u){return u===95?r=!0:(i=r,r=void 0),e.consume(u),l}function s(u){return i||r||!a?n(u):t(u)}}function Gd(e,t){let n=0,r=0;return i;function i(l){return l===40?(n++,e.consume(l),i):l===41&&r<n?a(l):l===33||l===34||l===38||l===39||l===41||l===42||l===44||l===46||l===58||l===59||l===60||l===63||l===93||l===95||l===126?e.check(Yi,t,a)(l):l===null||ie(l)||Ye(l)?t(l):(e.consume(l),i)}function a(l){return l===41&&r++,e.consume(l),i}}function Jd(e,t,n){return r;function r(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(e.consume(o),r):o===38?(e.consume(o),a):o===93?(e.consume(o),i):o===60||o===null||ie(o)||Ye(o)?t(o):n(o)}function i(o){return o===null||o===40||o===91||ie(o)||Ye(o)?t(o):r(o)}function a(o){return he(o)?l(o):n(o)}function l(o){return o===59?(e.consume(o),r):he(o)?(e.consume(o),l):n(o)}}function Zd(e,t,n){return r;function r(a){return e.consume(a),i}function i(a){return fe(a)?n(a):t(a)}}function Gi(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||ie(e)}function Ji(e){return!he(e)}function Zi(e){return!(e===47||gn(e))}function gn(e){return e===43||e===45||e===46||e===95||fe(e)}function Mn(e){let t=e.length,n=!1;for(;t--;){const r=e[t][1];if((r.type==="labelLink"||r.type==="labelImage")&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const ep={tokenize:sp,partial:!0};function tp(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:lp,continuation:{tokenize:ap},exit:op}},text:{91:{name:"gfmFootnoteCall",tokenize:ip},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:np,resolveTo:rp}}}}function np(e,t,n){const r=this;let i=r.events.length;const a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let l;for(;i--;){const s=r.events[i][1];if(s.type==="labelImage"){l=s;break}if(s.type==="gfmFootnoteCall"||s.type==="labelLink"||s.type==="label"||s.type==="image"||s.type==="link")break}return o;function o(s){if(!l||!l._balanced)return n(s);const u=ve(r.sliceSerialize({start:l.end,end:r.now()}));return u.codePointAt(0)!==94||!a.includes(u.slice(1))?n(s):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(s),e.exit("gfmFootnoteCallLabelMarker"),t(s))}}function rp(e,t){let n=e.length;for(;n--;)if(e[n][1].type==="labelImage"&&e[n][0]==="enter"){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;const a={type:"gfmFootnoteCallString",start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},l={type:"chunkString",contentType:"string",start:Object.assign({},a.start),end:Object.assign({},a.end)},o=[e[n+1],e[n+2],["enter",r,t],e[n+3],e[n+4],["enter",i,t],["exit",i,t],["enter",a,t],["enter",l,t],["exit",l,t],["exit",a,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(n,e.length-n+1,...o),e}function ip(e,t,n){const r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a=0,l;return o;function o(c){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(c),e.exit("gfmFootnoteCallLabelMarker"),s}function s(c){return c!==94?n(c):(e.enter("gfmFootnoteCallMarker"),e.consume(c),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",u)}function u(c){if(a>999||c===93&&!l||c===null||c===91||ie(c))return n(c);if(c===93){e.exit("chunkString");const p=e.exit("gfmFootnoteCallString");return i.includes(ve(r.sliceSerialize(p)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(c),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(c)}return ie(c)||(l=!0),a++,e.consume(c),c===92?f:u}function f(c){return c===91||c===92||c===93?(e.consume(c),a++,u):u(c)}}function lp(e,t,n){const r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a,l=0,o;return s;function s(x){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),u}function u(x){return x===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",f):n(x)}function f(x){if(l>999||x===93&&!o||x===null||x===91||ie(x))return n(x);if(x===93){e.exit("chunkString");const S=e.exit("gfmFootnoteDefinitionLabelString");return a=ve(r.sliceSerialize(S)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),p}return ie(x)||(o=!0),l++,e.consume(x),x===92?c:f}function c(x){return x===91||x===92||x===93?(e.consume(x),l++,f):f(x)}function p(x){return x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),i.includes(a)||i.push(a),te(e,d,"gfmFootnoteDefinitionWhitespace")):n(x)}function d(x){return t(x)}}function ap(e,t,n){return e.check(bt,t,e.attempt(ep,t,n))}function op(e){e.exit("gfmFootnoteDefinition")}function sp(e,t,n){const r=this;return te(e,i,"gfmFootnoteDefinitionIndent",5);function i(a){const l=r.events[r.events.length-1];return l&&l[1].type==="gfmFootnoteDefinitionIndent"&&l[2].sliceSerialize(l[1],!0).length===4?t(a):n(a)}}function up(e){let n=(e||{}).singleTilde;const r={name:"strikethrough",tokenize:a,resolveAll:i};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function i(l,o){let s=-1;for(;++s<l.length;)if(l[s][0]==="enter"&&l[s][1].type==="strikethroughSequenceTemporary"&&l[s][1]._close){let u=s;for(;u--;)if(l[u][0]==="exit"&&l[u][1].type==="strikethroughSequenceTemporary"&&l[u][1]._open&&l[s][1].end.offset-l[s][1].start.offset===l[u][1].end.offset-l[u][1].start.offset){l[s][1].type="strikethroughSequence",l[u][1].type="strikethroughSequence";const f={type:"strikethrough",start:Object.assign({},l[u][1].start),end:Object.assign({},l[s][1].end)},c={type:"strikethroughText",start:Object.assign({},l[u][1].end),end:Object.assign({},l[s][1].start)},p=[["enter",f,o],["enter",l[u][1],o],["exit",l[u][1],o],["enter",c,o]],d=o.parser.constructs.insideSpan.null;d&&we(p,p.length,0,Ft(d,l.slice(u+1,s),o)),we(p,p.length,0,[["exit",c,o],["enter",l[s][1],o],["exit",l[s][1],o],["exit",f,o]]),we(l,u-1,s-u+3,p),s=u+p.length-2;break}}for(s=-1;++s<l.length;)l[s][1].type==="strikethroughSequenceTemporary"&&(l[s][1].type="data");return l}function a(l,o,s){const u=this.previous,f=this.events;let c=0;return p;function p(x){return u===126&&f[f.length-1][1].type!=="characterEscape"?s(x):(l.enter("strikethroughSequenceTemporary"),d(x))}function d(x){const S=nt(u);if(x===126)return c>1?s(x):(l.consume(x),c++,d);if(c<2&&!n)return s(x);const C=l.exit("strikethroughSequenceTemporary"),b=nt(x);return C._open=!b||b===2&&!!S,C._close=!S||S===2&&!!b,o(x)}}}class cp{constructor(){this.map=[]}add(t,n,r){fp(this,t,n,r)}consume(t){if(this.map.sort(function(a,l){return a[0]-l[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(t.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),t.length=this.map[n][0];r.push(t.slice()),t.length=0;let i=r.pop();for(;i;){for(const a of i)t.push(a);i=r.pop()}this.map.length=0}}function fp(e,t,n,r){let i=0;if(!(n===0&&r.length===0)){for(;i<e.map.length;){if(e.map[i][0]===t){e.map[i][1]+=n,e.map[i][2].push(...r);return}i+=1}e.map.push([t,n,r])}}function dp(e,t){let n=!1;const r=[];for(;t<e.length;){const i=e[t];if(n){if(i[0]==="enter")i[1].type==="tableContent"&&r.push(e[t+1][1].type==="tableDelimiterMarker"?"left":"none");else if(i[1].type==="tableContent"){if(e[t-1][1].type==="tableDelimiterMarker"){const a=r.length-1;r[a]=r[a]==="left"?"center":"right"}}else if(i[1].type==="tableDelimiterRow")break}else i[0]==="enter"&&i[1].type==="tableDelimiterRow"&&(n=!0);t+=1}return r}function pp(){return{flow:{null:{name:"table",tokenize:hp,resolveAll:mp}}}}function hp(e,t,n){const r=this;let i=0,a=0,l;return o;function o(w){let j=r.events.length-1;for(;j>-1;){const F=r.events[j][1].type;if(F==="lineEnding"||F==="linePrefix")j--;else break}const A=j>-1?r.events[j][1].type:null,$=A==="tableHead"||A==="tableRow"?y:s;return $===y&&r.parser.lazy[r.now().line]?n(w):$(w)}function s(w){return e.enter("tableHead"),e.enter("tableRow"),u(w)}function u(w){return w===124||(l=!0,a+=1),f(w)}function f(w){return w===null?n(w):q(w)?a>1?(a=0,r.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),d):n(w):J(w)?te(e,f,"whitespace")(w):(a+=1,l&&(l=!1,i+=1),w===124?(e.enter("tableCellDivider"),e.consume(w),e.exit("tableCellDivider"),l=!0,f):(e.enter("data"),c(w)))}function c(w){return w===null||w===124||ie(w)?(e.exit("data"),f(w)):(e.consume(w),w===92?p:c)}function p(w){return w===92||w===124?(e.consume(w),c):c(w)}function d(w){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(w):(e.enter("tableDelimiterRow"),l=!1,J(w)?te(e,x,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):x(w))}function x(w){return w===45||w===58?C(w):w===124?(l=!0,e.enter("tableCellDivider"),e.consume(w),e.exit("tableCellDivider"),S):N(w)}function S(w){return J(w)?te(e,C,"whitespace")(w):C(w)}function C(w){return w===58?(a+=1,l=!0,e.enter("tableDelimiterMarker"),e.consume(w),e.exit("tableDelimiterMarker"),b):w===45?(a+=1,b(w)):w===null||q(w)?O(w):N(w)}function b(w){return w===45?(e.enter("tableDelimiterFiller"),E(w)):N(w)}function E(w){return w===45?(e.consume(w),E):w===58?(l=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(w),e.exit("tableDelimiterMarker"),v):(e.exit("tableDelimiterFiller"),v(w))}function v(w){return J(w)?te(e,O,"whitespace")(w):O(w)}function O(w){return w===124?x(w):w===null||q(w)?!l||i!==a?N(w):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(w)):N(w)}function N(w){return n(w)}function y(w){return e.enter("tableRow"),k(w)}function k(w){return w===124?(e.enter("tableCellDivider"),e.consume(w),e.exit("tableCellDivider"),k):w===null||q(w)?(e.exit("tableRow"),t(w)):J(w)?te(e,k,"whitespace")(w):(e.enter("data"),R(w))}function R(w){return w===null||w===124||ie(w)?(e.exit("data"),k(w)):(e.consume(w),w===92?B:R)}function B(w){return w===92||w===124?(e.consume(w),R):R(w)}}function mp(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],l=[0,0,0,0],o=!1,s=0,u,f,c;const p=new cp;for(;++n<e.length;){const d=e[n],x=d[1];d[0]==="enter"?x.type==="tableHead"?(o=!1,s!==0&&(Fr(p,t,s,u,f),f=void 0,s=0),u={type:"table",start:Object.assign({},x.start),end:Object.assign({},x.end)},p.add(n,0,[["enter",u,t]])):x.type==="tableRow"||x.type==="tableDelimiterRow"?(r=!0,c=void 0,a=[0,0,0,0],l=[0,n+1,0,0],o&&(o=!1,f={type:"tableBody",start:Object.assign({},x.start),end:Object.assign({},x.end)},p.add(n,0,[["enter",f,t]])),i=x.type==="tableDelimiterRow"?2:f?3:1):i&&(x.type==="data"||x.type==="tableDelimiterMarker"||x.type==="tableDelimiterFiller")?(r=!1,l[2]===0&&(a[1]!==0&&(l[0]=l[1],c=At(p,t,a,i,void 0,c),a=[0,0,0,0]),l[2]=n)):x.type==="tableCellDivider"&&(r?r=!1:(a[1]!==0&&(l[0]=l[1],c=At(p,t,a,i,void 0,c)),a=l,l=[a[1],n,0,0])):x.type==="tableHead"?(o=!0,s=n):x.type==="tableRow"||x.type==="tableDelimiterRow"?(s=n,a[1]!==0?(l[0]=l[1],c=At(p,t,a,i,n,c)):l[1]!==0&&(c=At(p,t,l,i,n,c)),i=0):i&&(x.type==="data"||x.type==="tableDelimiterMarker"||x.type==="tableDelimiterFiller")&&(l[3]=n)}for(s!==0&&Fr(p,t,s,u,f),p.consume(t.events),n=-1;++n<t.events.length;){const d=t.events[n];d[0]==="enter"&&d[1].type==="table"&&(d[1]._align=dp(t.events,n))}return e}function At(e,t,n,r,i,a){const l=r===1?"tableHeader":r===2?"tableDelimiter":"tableData",o="tableContent";n[0]!==0&&(a.end=Object.assign({},et(t.events,n[0])),e.add(n[0],0,[["exit",a,t]]));const s=et(t.events,n[1]);if(a={type:l,start:Object.assign({},s),end:Object.assign({},s)},e.add(n[1],0,[["enter",a,t]]),n[2]!==0){const u=et(t.events,n[2]),f=et(t.events,n[3]),c={type:o,start:Object.assign({},u),end:Object.assign({},f)};if(e.add(n[2],0,[["enter",c,t]]),r!==2){const p=t.events[n[2]],d=t.events[n[3]];if(p[1].end=Object.assign({},d[1].end),p[1].type="chunkText",p[1].contentType="text",n[3]>n[2]+1){const x=n[2]+1,S=n[3]-n[2]-1;e.add(x,S,[])}}e.add(n[3]+1,0,[["exit",c,t]])}return i!==void 0&&(a.end=Object.assign({},et(t.events,i)),e.add(i,0,[["exit",a,t]]),a=void 0),a}function Fr(e,t,n,r,i){const a=[],l=et(t.events,n);i&&(i.end=Object.assign({},l),a.push(["exit",i,t])),r.end=Object.assign({},l),a.push(["exit",r,t]),e.add(n+1,0,a)}function et(e,t){const n=e[t],r=n[0]==="enter"?"start":"end";return n[1][r]}const gp={name:"tasklistCheck",tokenize:bp};function xp(){return{text:{91:gp}}}function bp(e,t,n){const r=this;return i;function i(s){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(s):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),a)}function a(s){return ie(s)?(e.enter("taskListCheckValueUnchecked"),e.consume(s),e.exit("taskListCheckValueUnchecked"),l):s===88||s===120?(e.enter("taskListCheckValueChecked"),e.consume(s),e.exit("taskListCheckValueChecked"),l):n(s)}function l(s){return s===93?(e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):n(s)}function o(s){return q(s)?t(s):J(s)?e.check({tokenize:kp},t,n)(s):n(s)}}function kp(e,t,n){return te(e,r,"whitespace");function r(i){return i===null?n(i):t(i)}}function yp(e){return ci([Vd(),tp(),up(e),pp(),xp()])}const wp={};function Mr(e){const t=this,n=e||wp,r=t.data(),i=r.micromarkExtensions||(r.micromarkExtensions=[]),a=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),l=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);i.push(yp(n)),a.push($d()),l.push(Ud(n))}const Sp=/(^|\n) {0,3}(?:`{3,}|~{3,})[^\n]*(?:\n|$)/,Cp=/(^|\n)(?: {4}|\t)\S/;function vp(e){return Sp.test(e)||Cp.test(e)}const Ep=T.lazy(()=>gl(()=>import("./HighlightedMarkdown-BUhDlhgW.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url).then(e=>({default:e.HighlightedMarkdown})));function Ip({content:e,isUser:t}){const r=vp(e)?g.jsx(T.Suspense,{fallback:g.jsx(Nr,{remarkPlugins:[Mr],children:e}),children:g.jsx(Ep,{content:e})}):g.jsx(Nr,{remarkPlugins:[Mr],children:e});return t?g.jsx("div",{className:"prose prose-sm max-w-none text-inherit [&_*]:text-inherit [&_a]:underline [&_code]:border [&_code]:border-black/10 [&_code]:bg-black/10 [&_code]:text-inherit dark:[&_code]:border-white/10 dark:[&_code]:bg-white/12 [&>p]:my-0.5 [&_li]:my-0",children:r}):g.jsx("div",{className:pe("prose max-w-none dark:prose-invert","prose-headings:font-semibold prose-headings:tracking-tight","prose-h1:text-xl prose-h1:mt-5 prose-h1:mb-3 prose-h1:pb-1.5 prose-h1:border-b prose-h1:border-gray-200 dark:prose-h1:border-gray-700","prose-h2:text-lg prose-h2:mt-5 prose-h2:mb-2","prose-h3:text-base prose-h3:mt-4 prose-h3:mb-2","prose-p:my-2.5 prose-p:leading-relaxed","prose-li:my-0.5","prose-ul:my-2 prose-ol:my-2","prose-a:text-accent prose-a:no-underline hover:prose-a:underline","prose-strong:text-gray-900 dark:prose-strong:text-white prose-strong:font-semibold","prose-blockquote:border-l-[3px] prose-blockquote:border-accent/40 prose-blockquote:bg-accent/[0.03] prose-blockquote:rounded-r-lg prose-blockquote:py-0.5 prose-blockquote:px-4 prose-blockquote:my-3 prose-blockquote:not-italic prose-blockquote:text-gray-600 dark:prose-blockquote:text-gray-300","prose-hr:my-5 prose-hr:border-gray-200 dark:prose-hr:border-gray-700","prose-table:text-sm prose-th:bg-gray-50 dark:prose-th:bg-gray-800 prose-th:px-3 prose-th:py-2 prose-td:px-3 prose-td:py-2 prose-th:border-gray-200 dark:prose-th:border-gray-700 prose-td:border-gray-200 dark:prose-td:border-gray-700","prose-img:rounded-lg prose-img:shadow-sm"),children:r})}function jp({card:e}){const t=e.status.toLowerCase()==="completed",[n,r]=T.useState(()=>!$a(e)),i=!!e.output.trim();return g.jsxs("div",{className:"overflow-hidden rounded-[18px] border border-slate-200 bg-[#f5f5f7] dark:border-white/[0.08] dark:bg-[#111214]",children:[g.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-slate-200/80 px-4 py-3 dark:border-white/[0.06]",children:[g.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[g.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary dark:text-primary",children:g.jsx(xl,{size:14})}),g.jsxs("div",{className:"min-w-0",children:[g.jsx("p",{className:"truncate text-sm font-semibold text-slate-800 dark:text-slate-100",children:e.title}),g.jsxs("p",{className:"mt-0.5 flex items-center gap-1.5 text-[11px] text-slate-500 dark:text-slate-400",children:[g.jsx(ia,{size:12}),g.jsx("span",{className:"truncate",children:e.subtitle||e.label})]})]})]}),g.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[g.jsx("span",{className:pe("rounded-full px-2.5 py-1 text-[10px] font-medium uppercase tracking-[0.12em]",t?"bg-primary/10 text-primary dark:text-primary":"bg-amber-500/10 text-amber-700 dark:text-amber-300"),children:e.status}),i?g.jsx("button",{type:"button","aria-expanded":n,"aria-label":n?"折叠工具结果":"展开工具结果","data-testid":"desktop-tool-result-toggle",onClick:()=>r(a=>!a),className:"flex h-7 w-7 items-center justify-center rounded-full border border-slate-200 bg-white text-slate-500 transition hover:border-slate-300 hover:text-slate-700 dark:border-white/[0.08] dark:bg-white/[0.05] dark:text-slate-300 dark:hover:bg-white/[0.08]",children:n?g.jsx(_l,{size:14}):g.jsx(Bn,{size:14})}):null]})]}),n?g.jsx("pre",{className:"max-h-72 overflow-auto whitespace-pre-wrap break-words px-4 py-3 font-mono text-[12px] leading-5 text-slate-700 [scrollbar-gutter:stable] dark:text-slate-200",children:e.output||"无输出"}):g.jsxs("button",{type:"button",onClick:()=>r(!0),className:"flex w-full items-center gap-2 px-4 py-3 text-left text-xs text-slate-500 transition hover:bg-slate-100/70 dark:text-slate-400 dark:hover:bg-white/[0.04]",children:[g.jsx(Bn,{size:14}),g.jsx("span",{className:"truncate",children:"工具结果已折叠"})]})]})}function Ap({card:e,className:t,testId:n="desktop-chat-permission-card",loading:r,onAction:i}){const a=Ua(e.content);return g.jsxs("div",{"data-testid":n,className:pe("overflow-hidden rounded-[18px] border border-amber-200 bg-[#fff8eb] dark:border-amber-400/20 dark:bg-amber-500/10",t),children:[g.jsx("div",{className:"flex items-center justify-between gap-3 border-b border-amber-200/80 px-4 py-3 dark:border-amber-400/15",children:g.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[g.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-amber-100 text-amber-700 dark:bg-amber-400/15 dark:text-amber-200",children:g.jsx(Tl,{size:14})}),g.jsxs("div",{className:"min-w-0",children:[g.jsx("p",{className:"truncate text-sm font-semibold text-amber-950 dark:text-amber-50",children:a.title}),g.jsx("p",{className:"mt-0.5 text-[11px] text-amber-700/80 dark:text-amber-100/70",children:"权限响应"})]})]})}),a.bodyLines.length>0?g.jsx("div",{className:"space-y-2 px-4 py-3 text-sm leading-6 text-amber-950 dark:text-amber-50",children:a.bodyLines.map((l,o)=>g.jsx("p",{className:"break-words",children:l},`${e.id}-permission-line-${o}`))}):null,e.actionStatus?g.jsx("p",{className:"border-t border-amber-200/80 px-4 py-3 text-xs text-amber-700 dark:border-amber-400/15 dark:text-amber-100",children:e.actionStatus}):null,e.actions.length>0?g.jsx("div",{className:"flex flex-wrap gap-2 border-t border-amber-200/80 px-4 py-3 dark:border-amber-400/15",children:e.actions.flat().map(l=>g.jsx(ce,{size:"sm",variant:"secondary",onClick:()=>i(l),disabled:!!(e.actionPending||r),loading:r,className:"rounded-full border border-amber-300 bg-white text-amber-900 hover:bg-amber-100 dark:border-amber-400/30 dark:bg-white/[0.08] dark:text-amber-50 dark:hover:bg-white/[0.12]",children:l.text||l.data},`${e.id}-${l.data||l.text}`))}):null]})}function Np({message:e,pendingBridgeActionId:t,onAction:n}){const r=e.role==="user",i=e.role==="system",a=!r&&!i&&e.kind==="progress",l=r?null:Ra(e.toolCall),o=!!l;return g.jsxs("div",{className:pe("flex gap-3 sm:gap-4",r?"justify-end":"justify-start"),children:[r?null:g.jsx("div",{className:pe("mt-1 flex shrink-0 items-center justify-center rounded-full text-slate-400 dark:text-slate-500",i?"h-7 w-7 bg-amber-100 text-amber-600 dark:bg-amber-500/12 dark:text-amber-300":a?"h-6 w-6 bg-[#f0f0f0] dark:bg-white/[0.04]":"h-8 w-8 bg-[#f5f5f7] dark:bg-white/[0.06]"),children:i?g.jsx(Br,{size:14}):a?g.jsx(_t,{size:7,className:"fill-current"}):g.jsx(Il,{size:14})}),g.jsx("div",{"data-testid":"desktop-chat-message","data-role":e.role,"data-kind":e.kind||"final","data-order":String(e.order),"data-timestamp":e.timestamp||"",className:pe("transition-all",r?"max-w-[calc(100%-2.25rem)] sm:max-w-[70%]":o?"max-w-[calc(100%-2.25rem)] sm:max-w-[80%]":a?"max-w-[calc(100%-2.25rem)] sm:max-w-[72%]":"max-w-[calc(100%-2.25rem)] sm:max-w-[78%]"),children:g.jsxs("div",{className:pe("rounded-[20px] px-4 py-3 text-sm",r?"chat-user-glass rounded-br-sm text-slate-950 dark:text-slate-50":i?"rounded-bl-sm border border-amber-200/80 bg-[#fff8eb] text-amber-900 dark:border-amber-400/20 dark:bg-amber-500/10 dark:text-amber-100":a?"rounded-bl-lg bg-[#f5f5f7] text-[13px] leading-6 text-slate-500 dark:bg-white/[0.04] dark:text-slate-400":"rounded-bl-sm border border-slate-200 bg-[#fbfbfd] text-slate-800 dark:border-white/[0.06] dark:bg-white/[0.04] dark:text-slate-100",o&&"bg-transparent p-0 shadow-none dark:bg-transparent"),children:[g.jsxs("div",{className:pe("mb-2 flex items-center gap-2 text-[10px]",r?"justify-end text-slate-500 dark:text-white/55":"text-slate-400 dark:text-slate-500"),children:[i?g.jsx("span",{className:"tracking-[0.14em] text-amber-600 dark:text-amber-300",children:"系统"}):null,a?g.jsx("span",{className:"tracking-[0.14em] text-amber-500 dark:text-amber-300",children:o?"工具":"过程"}):null,qn(e.timestamp)?g.jsx("span",{"data-testid":"desktop-chat-message-timestamp",children:qn(e.timestamp)}):null]}),!r&&e.preview&&e.previewPlainText?g.jsx("div",{className:"whitespace-pre-wrap break-words text-[13px] leading-6 text-inherit",children:e.content}):l?g.jsx(jp,{card:l}):g.jsx(Ip,{content:e.content,isUser:r}),!r&&e.actions&&e.actions.length>0?g.jsx("div",{className:"mt-4 space-y-2",children:e.actions.map((s,u)=>g.jsx("div",{className:"flex flex-wrap gap-2",children:s.map(f=>g.jsx(ce,{size:"sm",variant:String(f.data||"").includes("deny")?"danger":"secondary",onClick:()=>n(e,f),disabled:!!(e.actionPending||t),loading:t===e.id,"data-testid":"desktop-chat-action-button",className:"rounded-full",children:f.text||f.data},`${e.id}-${f.data||f.text}`))},`${e.id}-actions-${u}`))}):null,!r&&e.actionStatus?g.jsx("p",{className:pe("mt-3 text-xs",e.actionInteractive?"text-slate-500 dark:text-slate-400":"text-amber-700 dark:text-amber-200"),"data-testid":"desktop-chat-action-status",children:e.actionStatus}):null,e.preview?g.jsx("p",{className:"mt-2 text-[10px] uppercase tracking-[0.18em] text-primary dark:text-primary",children:"实时预览"}):null]})}),r?g.jsx("div",{className:"mt-1 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-[#f0f0f0] dark:bg-white/[0.08] sm:h-8 sm:w-8",children:g.jsx(aa,{size:14,className:"text-slate-500 dark:text-slate-300"})}):null]})}function _p({activeSessionId:e,branding:t,filteredSessionGroups:n,hasVisibleSessions:r,isRuntimeStarting:i,mobileSessionsOpen:a,projects:l,runtime:o,selectedProject:s,serviceRunning:u,sessionSearch:f,showSessionKey:c,visibleProjects:p,onCreateNew:d,onLoadActiveSession:x,onOpenRenameModal:S,onRefreshRuntime:C,setDeleteTarget:b,setMobileSessionsOpen:E,setSelectedProject:v,setSessionSearch:O}){return g.jsxs("aside",{className:pe("min-h-0 flex-col border-r border-slate-200/80 bg-[#fbfbfd] dark:border-white/[0.06] dark:bg-[#111214]",a?"flex":"hidden md:flex","absolute inset-0 z-30 md:static md:z-auto"),children:[g.jsxs("div",{className:"border-b border-slate-200/80 px-4 py-4 dark:border-white/[0.06]",children:[g.jsxs("div",{className:"flex items-start justify-between gap-3",children:[g.jsxs("div",{className:"min-w-0",children:[g.jsx("p",{className:"text-[11px] font-medium tracking-[0.18em] text-slate-400 dark:text-slate-500",children:"会话导航"}),g.jsx("h2",{className:"mt-2 text-[1.65rem] font-semibold leading-tight text-slate-900 dark:text-white",children:t.chatHeading})]}),g.jsx(ce,{size:"sm",variant:"ghost",onClick:()=>void C(),className:"rounded-full border border-slate-200 bg-white text-slate-500 hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-slate-300 dark:hover:bg-white/[0.08]",children:g.jsx(ea,{size:14})}),g.jsx(ce,{size:"sm",variant:"ghost",onClick:()=>E(!1),className:"rounded-full border border-slate-200 bg-white text-slate-500 hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-slate-300 dark:hover:bg-white/[0.08] md:hidden",children:g.jsx($r,{size:14})})]}),g.jsxs("div",{className:"mt-4 space-y-3",children:[g.jsxs("div",{className:"space-y-2",children:[g.jsx("label",{className:"block text-[11px] font-medium tracking-[0.18em] text-slate-400 dark:text-slate-500",children:t.scopeLabel}),g.jsxs("select",{value:s,onChange:N=>v(N.target.value),"data-testid":"desktop-chat-project-select","aria-label":t.scopeLabel,className:"w-full rounded-[18px] border border-slate-200 bg-white px-3 py-2.5 text-sm text-slate-900 outline-none transition focus:border-primary/40 focus:ring-2 focus:ring-primary/10 dark:border-white/[0.08] dark:bg-[#0b1016] dark:text-white",children:[g.jsx("option",{value:"",children:t.scopeSelectPlaceholder}),p.map(N=>g.jsx("option",{value:N,children:N},N))]})]}),g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsxs(ce,{size:"md",variant:"secondary",onClick:()=>void d(),"data-testid":"desktop-chat-new-chat",className:"h-11 flex-1 rounded-full border border-slate-200 bg-white text-slate-700 hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.05] dark:text-slate-100 dark:hover:bg-white/[0.09]",children:[g.jsx(Kr,{size:15}),t.newThreadLabel]}),!u||i?g.jsx(ce,{size:"md",onClick:()=>void bl().then(C),disabled:i||u,"data-testid":"desktop-chat-start-service",className:"h-11 shrink-0 rounded-2xl px-3.5",children:i?t.startingRuntimeLabel:t.startRuntimeLabel}):null]}),g.jsxs("div",{className:"relative",children:[g.jsx(Pl,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 dark:text-slate-500"}),g.jsx(xn,{value:f,onChange:N=>O(N.target.value),placeholder:t.searchPlaceholder,"aria-label":t.searchPlaceholder,"data-testid":"desktop-chat-session-search",className:"h-11 rounded-[18px] border-slate-200 bg-white pl-9 text-slate-900 placeholder:text-slate-400 dark:border-white/[0.08] dark:bg-[#0b1016] dark:text-white dark:placeholder:text-slate-500"})]}),g.jsx("div",{className:"flex items-center justify-between gap-3 rounded-[18px] border border-slate-200/80 bg-white px-3 py-2 dark:border-white/[0.06] dark:bg-white/[0.03]",children:g.jsxs("span",{className:"inline-flex items-center gap-2 text-xs font-medium text-slate-600 dark:text-slate-300",children:[g.jsx(_t,{size:7,className:pe("fill-current",u?"text-primary":"text-slate-300 dark:text-slate-500")}),u?"服务在线":i?"服务启动中":"服务未启动"]})})]}),o!=null&&o.service.lastError?g.jsx("div",{className:"mt-3 rounded-2xl border border-red-500/20 bg-red-50 px-3 py-2 text-xs text-red-600 dark:bg-red-500/10 dark:text-red-200",children:o.service.lastError}):null,o!=null&&o.pendingRestart?g.jsx("div",{className:"mt-3 rounded-2xl border border-amber-500/20 bg-amber-50 px-3 py-2 text-xs text-amber-700 dark:bg-amber-500/10 dark:text-amber-200",children:t.pendingRestartLabel}):null]}),g.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 pb-24 pt-3 [scrollbar-gutter:stable] md:pb-3",children:!s&&!r?g.jsxs("div",{className:"rounded-2xl border border-dashed border-slate-200/80 bg-white/70 px-4 py-6 text-center dark:border-white/[0.07] dark:bg-white/[0.02]",children:[g.jsx("p",{className:"text-sm font-medium text-slate-700 dark:text-slate-200",children:"先选择一个项目"}),g.jsx("p",{className:"mt-2 text-xs leading-5 text-slate-500 dark:text-slate-400",children:"选择项目后展示对应会话列表。"})]}):r?g.jsx("div",{className:"space-y-4",children:n.map(N=>g.jsxs("section",{className:"space-y-2",children:[!s&&N.sessions.length>0?g.jsxs("div",{"data-testid":"desktop-chat-session-group","data-project":N.project,className:"flex items-center justify-between px-2 pt-1",children:[g.jsx("p",{className:"text-[11px] font-medium tracking-[0.08em] text-slate-400 dark:text-slate-500",children:N.project}),g.jsxs("p",{className:"text-[10px] text-slate-400 dark:text-slate-500",children:[N.sessions.length," ",t.collectionLabel]})]}):null,N.sessions.map(y=>g.jsx("div",{"data-testid":"desktop-chat-session-row","data-session-id":y.id,"data-project":N.project,role:"button",tabIndex:0,onClick:()=>{x(N.project,y.id),E(!1)},onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),x(N.project,y.id),E(!1))},className:pe("group relative overflow-hidden rounded-[18px] border px-4 py-3 text-left transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-primary/15",y.id===e?"border-primary/20 bg-primary/5 shadow-[inset_2px_0_0_0_rgba(0,102,204,0.92)] dark:border-primary/25 dark:bg-primary/10":"border-transparent bg-white hover:border-slate-200 hover:bg-[#fcfcfd] dark:bg-white/[0.03] dark:hover:border-white/[0.08] dark:hover:bg-white/[0.05]"),children:g.jsxs("div",{className:"flex items-start justify-between gap-3",children:[g.jsxs("div",{"data-testid":"desktop-chat-session-open","data-session-id":y.id,"data-project":N.project,className:"min-w-0 flex-1",children:[g.jsx("div",{className:"flex items-center gap-2",children:g.jsx("span",{className:"truncate text-sm font-medium text-slate-900 dark:text-white",children:y.name})}),g.jsx("p",{className:"mt-1 text-[11px] text-slate-400 dark:text-slate-500",children:kl(y.updatedAt||y.createdAt)}),y.excerpt?g.jsx("p",{className:"mt-2 line-clamp-2 text-[11px] leading-5 text-slate-500 dark:text-slate-400",children:y.excerpt.replace(/\n/g," ")}):null,c&&y.bridgeSessionKey?g.jsx("p",{className:"mt-2 truncate text-[11px] text-slate-400 dark:text-slate-500",children:y.bridgeSessionKey}):null]}),g.jsxs("div",{className:"flex items-center gap-1 opacity-0 transition-opacity duration-200 group-hover:opacity-100 focus-within:opacity-100",children:[g.jsx(ce,{size:"sm",variant:"ghost",onClick:k=>{k.stopPropagation(),S(N.project,y)},"data-testid":"desktop-chat-session-rename","data-session-id":y.id,"data-project":N.project,className:"text-slate-400 hover:bg-slate-100 hover:text-slate-900 dark:hover:bg-white/[0.08] dark:hover:text-white",children:g.jsx(Ll,{size:14})}),g.jsx(ce,{size:"sm",variant:"ghost",className:"text-red-400 hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-500/10 dark:hover:text-red-200","data-testid":"desktop-chat-session-delete","data-session-id":y.id,"data-project":N.project,onClick:k=>{k.stopPropagation(),b({project:N.project,id:y.id,name:y.name})},children:g.jsx(Dl,{size:14})})]})]})},y.id))]},N.project))}):g.jsxs("div",{className:"rounded-2xl border border-dashed border-slate-200/80 bg-white/70 px-4 py-6 text-center dark:border-white/[0.07] dark:bg-white/[0.02]",children:[g.jsx("p",{className:"text-sm font-medium text-slate-700 dark:text-slate-200",children:f.trim()?"没有匹配的会话":"当前还没有桌面会话"}),g.jsx("p",{className:"mt-2 text-xs leading-5 text-slate-500 dark:text-slate-400",children:f.trim()?"换个关键词试试。":"发送第一条消息后,这里会出现新的会话记录。"})]})})]})}const Rr=[{value:"default",label:"请求批准",tone:"safe"},{value:"bypassPermissions",label:"完全访问",tone:"open"}];function Tp({activeRunId:e,activeAgentMode:t,activeSessionKey:n,availableKnowledgeBases:r,branding:i,composerPermissionCard:a,draft:l,pendingBridgeActionId:o,permissionModeSaving:s,selectedKnowledgeBaseIds:u,selectedProject:f,sending:c,serviceRunning:p,taskInputLocked:d,taskRunning:x,taskState:S,transportReady:C,onBridgeAction:b,onSend:E,onStopTask:v,setActiveAgentMode:O,setDraft:N,setSelectedKnowledgeBaseIds:y}){const[k,R]=T.useState(!1),B=T.useRef(null),[w,j]=T.useState(""),A=Xr(u,r),$=Ha(r,w),F=Ka($,u),_=u.length,L=Rr.some(P=>P.value===t)?t:"default",M=Qa({serviceRunning:p,transportReady:C,taskState:S,taskInputLocked:d,startFirstPlaceholder:i.startFirstPlaceholder,waitingRuntimePlaceholder:i.waitingRuntimePlaceholder,sendPlaceholder:i.sendPlaceholder}),H=Ga({draft:l,serviceRunning:p,transportReady:C,sending:c,selectedProject:f});return T.useEffect(()=>{const P=h=>{var U;(U=B.current)!=null&&U.contains(h.target)||R(!1)};return k&&document.addEventListener("mousedown",P),()=>{document.removeEventListener("mousedown",P)}},[k]),T.useEffect(()=>{if(!k)return;const P=window.requestAnimationFrame(()=>{var U;const h=(U=B.current)==null?void 0:U.querySelector("input");h instanceof HTMLInputElement&&h.focus()});return()=>window.cancelAnimationFrame(P)},[k]),g.jsx("div",{className:"border-t border-slate-200/80 px-3 py-3 dark:border-white/[0.06] sm:px-6",children:g.jsx("div",{className:"mx-auto max-w-4xl rounded-[24px] border border-slate-200 bg-[#fbfbfd] p-2 dark:border-white/[0.08] dark:bg-[#111214] sm:p-2.5",children:a?g.jsx(Ap,{card:a,loading:o===a.id,onAction:P=>void b(a,P),testId:"desktop-chat-composer-permission-card",className:"border-primary/45 bg-white shadow-[0_14px_34px_rgba(0,122,255,0.12)] dark:border-primary/35 dark:bg-[#090d12]"}):g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"relative",children:[g.jsx(zl,{"data-testid":"desktop-chat-input",value:l,onChange:P=>N(P.target.value),onKeyDown:P=>{P.key==="Enter"&&!P.shiftKey&&!d&&(P.preventDefault(),E())},rows:3,placeholder:M,"aria-label":M,disabled:!p||!C||c||!f||d,className:"min-h-[104px] rounded-[22px] border-slate-200 bg-white px-4 pb-16 pt-3 text-[15px] leading-6 text-slate-900 placeholder:text-slate-400 focus-visible:ring-primary/15 dark:border-white/[0.08] dark:bg-[#090d12] dark:text-white dark:placeholder:text-slate-500 sm:min-h-[116px] sm:px-5 sm:pt-4"}),x?g.jsxs(ce,{variant:"danger",onClick:()=>void v(),disabled:!n&&!e||S==="stopping","data-testid":"desktop-chat-stop-task",className:"absolute bottom-3 right-3 h-11 min-w-11 rounded-full bg-red-50 px-3 text-red-600 shadow-none hover:bg-red-100 dark:bg-red-500/12 dark:text-red-200 dark:hover:bg-red-500/18 sm:h-12 sm:min-w-[118px] sm:px-5",children:[g.jsx(Bt,{size:16,className:"animate-spin"}),g.jsx("span",{className:"hidden sm:inline",children:S==="stopping"?"停止中":"停止任务"})]}):g.jsx(ce,{onClick:()=>void E(),disabled:!H,"data-testid":"desktop-chat-send",className:"absolute bottom-3 right-3 h-11 w-11 rounded-full bg-primary px-0 text-white shadow-none hover:bg-[#0071e3] disabled:bg-slate-300 disabled:text-white disabled:opacity-100 dark:bg-primary dark:text-white dark:hover:bg-[#2997ff] dark:disabled:bg-white/20 dark:disabled:text-white/55 sm:h-12 sm:w-12",children:c?g.jsx(Bt,{size:18,className:"animate-spin"}):g.jsx(Vl,{size:22,strokeWidth:2.2})})]}),g.jsxs("div",{className:"mt-2 flex flex-col gap-2 px-1 pr-0 text-[11px] text-slate-500 dark:text-slate-400 sm:flex-row sm:items-center sm:justify-between sm:pr-[4.5rem]",children:[g.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[g.jsxs("div",{className:"inline-flex h-8 shrink-0 items-center gap-1 rounded-full border border-slate-200 bg-white p-1 shadow-sm dark:border-white/[0.08] dark:bg-white/[0.05]",role:"group","aria-label":"权限模式","data-testid":"desktop-chat-permission-mode",children:[g.jsx(na,{size:13,className:"ml-1 text-amber-500"}),Rr.map(P=>{const h=L===P.value;return g.jsx("button",{type:"button",disabled:!f||s||x,onClick:()=>O(P.value),"data-testid":`desktop-chat-permission-mode-${P.value}`,className:pe("h-6 rounded-full px-2.5 text-xs font-medium transition-colors",h?P.tone==="open"?"bg-amber-100 text-amber-800 dark:bg-amber-500/18 dark:text-amber-100":"bg-slate-900 text-white dark:bg-white dark:text-slate-950":"text-slate-500 hover:bg-slate-100 hover:text-slate-900 dark:text-slate-300 dark:hover:bg-white/[0.08] dark:hover:text-white","disabled:cursor-not-allowed disabled:opacity-50"),children:P.label},P.value)}),s?g.jsx(Bt,{size:12,className:"mr-1 animate-spin text-slate-400"}):null]}),g.jsxs("div",{className:"relative",ref:B,children:[g.jsxs(ce,{size:"sm",variant:"secondary",disabled:!f,onClick:()=>R(P=>!P),"data-testid":"desktop-chat-knowledge-base-toggle",className:"h-8 rounded-full border border-slate-200 bg-white px-2.5 text-xs text-slate-700 shadow-sm hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.05] dark:text-slate-100 dark:hover:bg-white/[0.1]",children:[g.jsx(Yl,{size:13}),_>0?"调整知识库":"选择知识库"]}),k?g.jsxs("div",{className:"animate-float-in absolute bottom-full left-0 z-20 mb-3 w-[min(34rem,calc(100vw-2rem))] max-h-[70dvh] overflow-hidden rounded-[22px] border border-slate-200 bg-white p-3 shadow-[0_18px_45px_rgba(15,23,42,0.12)] dark:border-white/[0.08] dark:bg-[#0c1117]",children:[g.jsxs("div",{className:"flex items-center justify-between gap-3",children:[g.jsxs("div",{children:[g.jsx("p",{className:"text-sm font-semibold text-slate-900 dark:text-white",children:"选择知识库"}),g.jsx("p",{className:"text-[11px] text-slate-400",children:"已选项排在前面,方便快速确认范围。"})]}),_>0?g.jsx("button",{type:"button",onClick:()=>void y([]),className:"text-xs text-slate-400 transition-colors hover:text-slate-900 dark:hover:text-white",children:"清空"}):null]}),g.jsx(xn,{value:w,onChange:P=>j(P.target.value),placeholder:"搜索知识库","aria-label":"搜索知识库",className:"mt-3 rounded-[18px] border-slate-200 bg-white text-slate-900 placeholder:text-slate-400 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-white dark:placeholder:text-slate-500"}),g.jsx("div",{className:"mt-3 max-h-64 space-y-2 overflow-y-auto pr-2 [scrollbar-gutter:stable]",children:F.length===0?g.jsx("div",{className:"rounded-xl border border-dashed border-slate-200 px-3 py-4 text-center text-xs text-slate-500 dark:border-white/[0.08]",children:"没有匹配的知识库"}):F.map(P=>{const h=u.includes(P.id);return g.jsxs("button",{type:"button",onClick:()=>void y(h?u.filter(U=>U!==P.id):[...u,P.id]),"data-testid":"desktop-chat-knowledge-base-select",className:pe("flex w-full items-start gap-3 rounded-[16px] border px-3 py-3 text-left transition-all duration-200",h?"border-primary/25 bg-primary/5 dark:border-primary/30 dark:bg-primary/10":"border-slate-200 bg-white hover:border-slate-300 hover:bg-[#fafafa] dark:border-white/[0.06] dark:bg-white/[0.03] dark:hover:border-white/[0.12] dark:hover:bg-white/[0.05]"),children:[g.jsx("span",{className:pe("mt-0.5 inline-flex h-5 w-5 items-center justify-center rounded-full border text-[10px]",h?"border-primary bg-primary text-white":"border-slate-300 text-transparent dark:border-white/[0.12]"),children:g.jsx(Br,{size:12})}),g.jsxs("span",{className:"min-w-0 flex-1",children:[g.jsx("span",{className:"block truncate text-sm font-medium text-slate-900 dark:text-white",children:P.name}),g.jsxs("span",{className:"mt-1 block text-[11px] text-slate-400",children:[P.fileCount," 文件",P.description?` · ${P.description}`:""]})]})]},P.id)})})]}):null]}),g.jsx("div",{className:"flex min-w-0 items-center gap-2 overflow-x-auto whitespace-nowrap [scrollbar-gutter:stable]",children:A.length===0?g.jsx("span",{className:"text-xs text-slate-400",children:f?"当前未限制知识库范围":"选择项目后可设置知识库范围"}):A.map(P=>g.jsxs("span",{className:"inline-flex shrink-0 items-center gap-2 rounded-full border border-slate-200 bg-white px-2.5 py-1 text-xs text-slate-700 shadow-sm dark:border-white/[0.08] dark:bg-white/[0.05] dark:text-slate-100",children:[g.jsx("span",{className:"max-w-[10rem] truncate",children:P.name}),P.fileCount>0?g.jsxs("span",{className:"text-[10px] text-slate-500",children:[P.fileCount," 文件"]}):null,g.jsx("button",{type:"button",onClick:()=>void y(u.filter(h=>h!==P.id)),className:"text-slate-500 transition-colors hover:text-slate-900 dark:hover:text-white","data-testid":"desktop-chat-knowledge-base-remove","aria-label":`移除 ${P.name}`,children:g.jsx($r,{size:12})})]},P.id))})]}),g.jsxs("div",{className:"hidden shrink-0 items-center gap-3 sm:flex",children:[g.jsx("span",{children:"Enter 发送,Shift + Enter 换行"}),g.jsx("span",{children:f?"范围会随当前线程保存":"请先选择项目"})]})]})]})})})}function zp({deleteTarget:e,pendingSessionAction:t,renameDraft:n,renameTarget:r,onDeleteSession:i,onRenameSession:a,setDeleteTarget:l,setRenameDraft:o,setRenameTarget:s}){return g.jsxs(g.Fragment,{children:[g.jsx(Un,{open:!!r,onClose:()=>s(null),title:"重命名会话",children:g.jsxs("div",{className:"space-y-4",children:[g.jsx(xn,{value:n,onChange:u=>o(u.target.value),onInput:u=>o(u.target.value),placeholder:"输入会话名称","data-testid":"desktop-chat-rename-input"}),g.jsxs("div",{className:"flex justify-end gap-2",children:[g.jsx(ce,{variant:"secondary",onClick:()=>s(null),"data-testid":"desktop-chat-rename-cancel",children:"取消"}),g.jsx(ce,{onClick:()=>void a(),loading:t==="rename",disabled:!n.trim(),"data-testid":"desktop-chat-rename-save",children:"保存名称"})]})]})}),g.jsx(Un,{open:!!e,onClose:()=>l(null),title:"删除会话",children:g.jsxs("div",{className:"space-y-4",children:[g.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-300",children:["确定删除 ",g.jsx("span",{className:"font-medium text-gray-900 dark:text-white",children:e==null?void 0:e.name})," 吗?这会移除该会话的本地保存记录。"]}),g.jsxs("div",{className:"flex justify-end gap-2",children:[g.jsx(ce,{variant:"secondary",onClick:()=>l(null),"data-testid":"desktop-chat-delete-cancel",children:"取消"}),g.jsx(ce,{variant:"danger",onClick:()=>void i(),loading:t==="delete","data-testid":"desktop-chat-delete-confirm",children:"删除会话"})]})]})})]})}function el(){return{chatTitle:"本地对话",chatHeading:"本地对话",chatDescription:"浏览线程、切换工作区,并与本地 AI Core 保持同步。",scopeLabel:"当前工作区",scopeSelectPlaceholder:"选择工作区",searchPlaceholder:"搜索线程、联系人或消息摘要",startRuntimeLabel:"启动运行时",startingRuntimeLabel:"启动中…",newThreadLabel:"新建线程",pendingRestartLabel:"最新配置已经保存,但当前对话仍在使用旧运行时状态。请重启运行时以应用配置。",emptySelectionLabel:"选择工作区后即可开始对话。",emptyThreadsLabel:"当前还没有线程。",emptySearchLabel:"没有匹配的线程。",collectionLabel:"线程",activeScopeLabel:"当前工作区",activeConversationFallback:"新对话",startConversationLabel:"选择工作区后即可开始聊天。",runtimeOnlineLabel:"运行时在线",runtimeOfflineLabel:"运行时离线",emptyConversationLabel:"发送一条消息,即可在当前工作区创建新线程。",startFirstPlaceholder:"请先启动运行时",waitingRuntimePlaceholder:"正在等待运行时通道连接",sendPlaceholder:"输入一条发给当前线程的消息",permissionUnsupportedLabel:"当前代理无法在此对话中继续交互式审批。请切换到支持的代理,或调整运行时权限后重试。",replyTimeoutLabel:"审批回复已发送,但代理没有继续执行。该请求可能暂不支持本地运行时继续处理。"}}function Pp({requestedProject:e,selectedProject:t,setSelectedProject:n,clearReplyTimeout:r,updateTaskState:i,setTyping:a}){const[l,o]=T.useState(null),[s,u]=T.useState(!0),f=!1,c=(l==null?void 0:l.phase)==="api_ready",p=c,d=T.useCallback(async()=>{const x=await yl();o(x),!x.roles.conversation.lastError&&!t&&!e&&x.settings.defaultProject&&n(x.settings.defaultProject)},[e,t,n]);return T.useEffect(()=>{d().finally(()=>u(!1));const x=wl(S=>{o(S),(S.phase==="stopped"||S.phase==="error")&&(a(!1),r(),i("idle"))});return()=>{r(),x()}},[r,d,a,i]),T.useMemo(()=>({loading:s,refreshRuntime:d,runtime:l,serviceRunning:c,showSessionKey:f,transportReady:p}),[s,d,l,c,f,p])}function Lp({current:e,requested:t,runtimeDefault:n,workspaceIds:r}){return e&&r.includes(e)?e:t&&r.includes(t)?t:n&&r.includes(n)?n:r[0]||""}function Dp({activeThreadId:e,requestedWorkspaceId:t,requestedThreadId:n,runtimeDefaultWorkspaceId:r,searchParams:i,serviceRunning:a,selectedWorkspaceId:l,workspaceIds:o,threadGroups:s,threadSearch:u,setSelectedKnowledgeBaseIds:f,setActiveRunId:c,setActiveSessionAgentType:p,setActiveAgentMode:d,setActiveSessionId:x,setActiveSessionKey:S,setActiveSessionName:C,setBridgeError:b,setMessages:E,setPendingPermissionRequest:v,setProjects:O,setSearchParams:N,setSelectedProject:y,setThreadGroups:k,setTyping:R,applyLocalCoreThreadDetail:B,clearReplyTimeout:w,updateTaskState:j,holdBlankComposerRef:A,lastSessionByProjectRef:$,nextMessageOrderRef:F,pendingTurnRef:_,progressSequenceByTurnRef:L}){const M=T.useMemo(()=>{var K;return((K=s.find(m=>m.project===l))==null?void 0:K.sessions)||[]},[l,s]),H=T.useMemo(()=>{const K=u.trim().toLowerCase();return o.map(m=>{var Z;const Y=(((Z=s.find(G=>G.project===m))==null?void 0:Z.sessions)||[]).filter(G=>Sa(G,K));return{project:m,sessions:Y}}).filter(m=>m.sessions.length>0||!K&&m.project===l)},[l,s,u,o]),P=T.useCallback(async K=>{if(!K||!a)return[];const m=Wr((await Ml(K)).threads.map(Z=>qr(Z))),Y=m.find(Z=>Z.id===e);return Y!=null&&Y.agentType&&p(Y.agentType),Y!=null&&Y.agentMode&&d(Y.agentMode),k(Z=>Yr(Z,K,m)),m},[e,a,d,p,k]),h=T.useCallback(async(K,m)=>{if(!K||!m||!a)return;A.current=!1,j("idle"),v(null),R(!1);const Y=await Rl(m);B(Y)},[B,A,F,_,L,a,c,d,p,x,S,C,f,E,v,y,k,R,j]),U=T.useCallback(async()=>{if(!a)return O([]),k([]),f([]),[];const K=(await Ol()).workspaces.map(Z=>Z.id);O(K);const m=Lp({current:l,requested:t,runtimeDefault:r,workspaceIds:K}),Y=(await Promise.all(K.map(async Z=>({project:Z,sessions:await P(Z)})))).sort((Z,G)=>Z.project.localeCompare(G.project));return k(Y),y(m),Y},[P,t,r,l,a,O,f,y,k]);return T.useEffect(()=>{if(a)return Sl(K=>{K.type==="thread.session.activated"&&K.threadId!==e&&P(K.workspaceId).then(()=>h(K.workspaceId,K.threadId))})},[e,h,P,a]),T.useEffect(()=>{if(!a){k([]),E([]),v(null),f([]),p(""),c(""),b(""),_.current=null,F.current=0,L.current={},j("idle"),R(!1),w();return}U()},[w,F,_,L,U,a,c,p,b,E,v,f,k,R,j]),T.useEffect(()=>{if(!l||!a||M.find(G=>G.id===e))return;const m=t===l?n:"",Y=$.current[l];if(!e&&A.current)return;const Z=M.find(G=>G.id===m)||M.find(G=>G.id===Y)||M[0];if(Z){R(!1),j("idle"),b(""),w(),h(l,Z.id);return}R(!1),j("idle"),b(""),w(),x(""),S(""),C(""),p(""),c(""),E([]),_.current=null,F.current=0,L.current={}},[e,w,A,$,h,F,_,L,n,t,l,a,c,p,x,S,C,b,E,R,M,j]),T.useEffect(()=>{if(!l&&!e)return;const K=new URLSearchParams(i);l?K.set("project",l):K.delete("project"),e?K.set("session",e):K.delete("session"),K.toString()!==i.toString()&&N(K,{replace:!0})},[e,i,l,N]),{filteredThreadGroups:H,loadActiveThread:h,refreshThreadsForWorkspace:P,refreshWorkspacesAndThreads:U}}function Fp({activeAgentType:e,activeThreadId:t,armReplyTimeout:n,clearActionStatuses:r,clearReplyTimeout:i,reserveNextMessageOrder:a,selectedWorkspaceId:l,sendAction:o,settlePreviewMessages:s,setActiveRunId:u,setBridgeError:f,setMessages:c,setPendingPermissionRequest:p,setPendingBridgeActionId:d,setTyping:x,updateTaskState:S}){return{handleBridgeAction:T.useCallback(async(b,E)=>{if(!t)return;const v=$n(E.data)||E.data,O=$n(E.data)||E.text||E.data,N=Pa(b),y=!N,k=y?-1:a(),R=`${crypto.randomUUID()}-user-action`;let B=!1,w=!1;d(b.id),c(j=>j.map(A=>A.id===b.id?{...A,actionPending:!0}:A)),p(j=>j&&j.id===b.id?{...j,actionPending:!0}:j);try{N&&(w=!0,c(A=>[...A,{id:R,role:"user",content:O,order:k,timestamp:new Date().toISOString()}]));const j=await o(t,v);u(j.runId),B=!0,f(""),s(b.actionReplyCtx),x(!0),i(),r(),y?(S("permission_submitted","bridge-permission-submitted"),n("permission_continue"),p(null),c(A=>A.map($=>$.id===b.id?Fa($):$))):(S("running","bridge-action-submitted"),n())}catch(j){f(j instanceof Error?j.message:"Failed to send permission response."),w&&c(A=>A.filter($=>$.id!==R)),S(y?"awaiting_permission":"error",y?"bridge-permission-submit-failed":"bridge-action-submit-failed"),x(!1),p(A=>A&&A.id===b.id?{...A,actionPending:!1}:A)}finally{d(null),c(j=>j.map(A=>A.id===b.id?{...A,actionPending:!1,actions:B?A.actions||[]:A.actions}:A))}},[t,n,r,i,a,o,s,u,f,c,p,d,x,S])}}function Mp(e){return e==="awaiting_permission"?"awaiting_permission":"idle"}function Rp(e,t){return t?"awaiting_permission":e?"awaiting_input":"idle"}function Op(e,t){return t?"bridge-buttons-awaiting-permission":e?"bridge-buttons-awaiting-input":"bridge-buttons-idle"}function Bp(e){const t=e||"This agent",n=el();return n.permissionUnsupportedLabel.startsWith("This agent")?n.permissionUnsupportedLabel:`${t} ${n.permissionUnsupportedLabel.replace(/^This agent\s+/i,"")}`}function $p(e){return e.type==="typing_stop"||e.type==="buttons"||e.type==="card"?!0:e.type==="reply"&&!ht(e.bridgeKind)}function Up({activeAgentType:e,activeBridgeSessionKey:t,activeRunId:n,armReplyTimeout:r,clearActionStatuses:i,clearReplyTimeout:a,finalizeTurnMessages:l,nextProgressMessageId:o,pendingTurnRef:s,progressSequenceByTurnRef:u,refreshThreadsForWorkspace:f,reserveAssistantMessageOrder:c,settlePreviewMessages:p,setBridgeError:d,setMessages:x,setPendingPermissionRequest:S,setTyping:C,taskStateRef:b,updateTaskState:E}){const v=jl(e),O=T.useRef(ha());T.useEffect(()=>{O.current.reset()},[t]);const N=T.useCallback(k=>{Ta(b.current)&&E("running",k)},[b,E]),y=T.useCallback(k=>{const R=va(k.sessionKey);if(R&&$p(k)&&f(R),!(!k.sessionKey||k.sessionKey!==t)&&O.current.acceptBridgeEvent(k,{activeRunId:n,pendingTurn:s.current}))switch(k.type){case"preview_start":if($t(k.bridgeStatus)){a(),C(!1),s.current=null,i(),E("awaiting_input","bridge-preview-awaiting-input"),S(null),d(""),x(L=>{const M=vt(L,k.previewHandle,k.replyCtx),H=(M==null?void 0:M.id)||k.previewHandle||`${k.replyCtx||crypto.randomUUID()}-preview`,P=L.filter(h=>h.id!==H);return P.push({id:H,role:"assistant",content:k.content||"",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:(M==null?void 0:M.order)??c(k.sessionKey),timestamp:(M==null?void 0:M.timestamp)||new Date().toISOString(),turnKey:k.replyCtx,preview:!0,previewPlainText:v}),P});break}i(),C(!0),N("bridge-preview-start"),S(null),r(),d(""),x(L=>{const M=vt(L,k.previewHandle,k.replyCtx),H=(M==null?void 0:M.id)||k.previewHandle||`${k.replyCtx||crypto.randomUUID()}-preview`,P=L.filter(h=>h.id!==H);return P.push({id:H,role:"assistant",content:k.content||"",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:(M==null?void 0:M.order)??c(k.sessionKey),timestamp:(M==null?void 0:M.timestamp)||new Date().toISOString(),turnKey:k.replyCtx,preview:!0,previewPlainText:v}),P});break;case"update_message":if($t(k.bridgeStatus)){a(),C(!1),s.current=null,i(),E("awaiting_input","bridge-update-awaiting-input"),S(null),d(""),x(L=>{const M=vt(L,k.previewHandle,k.replyCtx);return M?L.map(H=>H.id===M.id?{...H,content:k.content||"",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,preview:!0,previewPlainText:v}:H):[...L,{id:k.previewHandle||`${k.replyCtx||crypto.randomUUID()}-preview`,role:"assistant",content:k.content||"",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:c(k.sessionKey),timestamp:new Date().toISOString(),turnKey:k.replyCtx,preview:!0,previewPlainText:v}]});break}i(),C(!0),N("bridge-update-message"),S(null),r(),d(""),x(L=>{const M=vt(L,k.previewHandle,k.replyCtx);return M?L.map(H=>H.id===M.id?{...H,content:k.content||"",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,preview:!0,previewPlainText:v}:H):[...L,{id:k.previewHandle||`${k.replyCtx||crypto.randomUUID()}-preview`,role:"assistant",content:k.content||"",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:c(k.sessionKey),timestamp:new Date().toISOString(),turnKey:k.replyCtx,preview:!0,previewPlainText:v}]});break;case"delete_message":x(L=>L.filter(M=>M.id!==k.previewHandle));break;case"typing_start":i(),C(!0),N("bridge-typing-start"),S(null),d(""),r();break;case"typing_stop":C(!1),a(),s.current=null,i(),E(Mp(b.current),b.current==="awaiting_permission"?"bridge-typing-stop-preserve-permission":"bridge-typing-stop"),p(k.replyCtx),l(k.replyCtx);break;case"reply":{const L=$t(k.bridgeStatus);i(),C(!L),L?(a(),s.current=null,E("awaiting_input","bridge-reply-awaiting-input")):(N("bridge-reply"),r()),S(null),d("");const M=k.messageId||o(k.replyCtx);!ht(k.bridgeKind)&&k.replyCtx&&delete u.current[k.replyCtx],d(""),x(H=>{const P=H.find(U=>U.id===M),h=new Date().toISOString();return P?H.map(U=>U.id===M?{...U,content:k.content||"",toolCall:k.toolCall,bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,kind:"progress",timestamp:h,turnKey:k.replyCtx}:U):[...H.filter(U=>!ba(U,k.content,k.replyCtx,k.bridgeKind)),{id:M,role:"assistant",content:k.content||"",toolCall:k.toolCall,bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,kind:"progress",order:c(k.sessionKey),timestamp:h,turnKey:k.replyCtx}]});break}case"buttons":a(),C(!1),s.current=null,d(""),i(),p(k.replyCtx);const B=`${k.replyCtx||crypto.randomUUID()}-buttons`,w=Ea(k.buttonRows||k.buttons),j=ja(w),A=j&&Al(e),$=j&&!A?[]:w,F=$,_=j&&!A?Bp(e):void 0;x(L=>L.find(H=>H.id===B)?L.map(H=>H.id===B?{...H,content:k.content||H.content,actions:F,actionReplyCtx:k.replyCtx,actionPending:!1,actionMode:j?"permission":"generic",actionInteractive:A,bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,actionStatus:_}:H):[...L,{id:B,role:"assistant",content:k.content||"Permission required before continuing.",kind:"progress",bridgeKind:k.bridgeKind,bridgeStatus:k.bridgeStatus,order:c(k.sessionKey),timestamp:new Date().toISOString(),turnKey:k.replyCtx,actions:F,actionReplyCtx:k.replyCtx,actionPending:!1,actionMode:j?"permission":"generic",actionInteractive:A,actionStatus:_}]),S(L=>{if(!j||!A)return null;const M={id:B,role:"assistant",content:k.content||"Permission required before continuing.",actions:$,actionReplyCtx:k.replyCtx,actionPending:!1,actionMode:"permission",actionStatus:_};return Da(M)||L}),E(Rp(w.length>0,A),Op(w.length>0,A));break;case"card":a(),C(!1),s.current=null,i(),E("idle","bridge-card"),S(null),p(k.replyCtx),l(k.replyCtx),d(""),x(L=>[...L,{id:`${k.replyCtx||crypto.randomUUID()}-card`,role:"assistant",content:"Interactive card received. Open the session in the standard Sessions view for full controls.",order:c(k.sessionKey),timestamp:new Date().toISOString()}]);break}},[v,e,t,n,r,i,a,l,o,s,u,f,c,p,d,x,S,C,N,E]);T.useEffect(()=>{const k=Nl(R=>{y(R)});return()=>{a(),k()}},[a,y])}function Hp(e){Up({activeAgentType:e.activeAgentType,activeBridgeSessionKey:e.activeBridgeSessionKey,activeRunId:e.activeRunId,armReplyTimeout:e.armReplyTimeout,clearActionStatuses:e.clearActionStatuses,clearReplyTimeout:e.clearReplyTimeout,finalizeTurnMessages:e.finalizeTurnMessages,nextProgressMessageId:e.nextProgressMessageId,pendingTurnRef:e.pendingTurnRef,progressSequenceByTurnRef:e.progressSequenceByTurnRef,refreshThreadsForWorkspace:e.refreshThreadsForWorkspace,reserveAssistantMessageOrder:e.reserveAssistantMessageOrder,settlePreviewMessages:e.settlePreviewMessages,setBridgeError:e.setBridgeError,setMessages:e.setMessages,setPendingPermissionRequest:e.setPendingPermissionRequest,setTyping:e.setTyping,taskStateRef:e.taskStateRef,updateTaskState:e.updateTaskState});const{handleBridgeAction:t}=Fp({activeAgentType:e.activeAgentType,activeBridgeSessionKey:e.activeBridgeSessionKey,activeRunId:e.activeRunId,activeThreadId:e.activeThreadId,armReplyTimeout:e.armReplyTimeout,clearActionStatuses:e.clearActionStatuses,clearReplyTimeout:e.clearReplyTimeout,reserveNextMessageOrder:e.reserveNextMessageOrder,selectedWorkspaceId:e.selectedWorkspaceId,sendAction:e.sendAction,settlePreviewMessages:e.settlePreviewMessages,setActiveRunId:e.setActiveRunId,setBridgeError:e.setBridgeError,setMessages:e.setMessages,setPendingPermissionRequest:e.setPendingPermissionRequest,setPendingBridgeActionId:e.setPendingBridgeActionId,setTyping:e.setTyping,updateTaskState:e.updateTaskState,taskStateRef:e.taskStateRef});return{handleBridgeAction:t}}function Kp({activeRunId:e,activeThreadId:t,activeBridgeSessionKey:n,activeAgentMode:r,brandingNewThreadLabel:i,draft:a,loadActiveThread:l,selectedKnowledgeBaseIds:o,selectedProject:s,taskState:u,updateTaskState:f,applyLocalCoreThreadDetail:c,armReplyTimeout:p,clearReplyTimeout:d,refreshSessionsForProject:x,reserveNextMessageOrder:S,settlePreviewMessages:C,setActiveRunId:b,setActiveSessionId:E,setActiveSessionKey:v,setActiveSessionName:O,setBridgeError:N,setDraft:y,setMessages:k,setPendingPermissionRequest:R,setSending:B,setTyping:w,holdBlankComposerRef:j,nextMessageOrderRef:A,pendingTurnRef:$,progressSequenceByTurnRef:F,taskStateRef:_}){const L=T.useCallback(async()=>{if(!s)throw new Error("Choose a project first");if(t)return{id:t,sessionKey:n};let P=await Ur(s,`${i} ${new Date().toLocaleTimeString()}`);return r&&r!=="default"&&(P=await bn(P.id,r)),c(P),await x(s),{id:P.id,sessionKey:P.bridgeSessionKey||""}},[n,r,t,c,i,x,s]),M=T.useCallback(async()=>{if(!a.trim()||!s)return;const P=a.trim(),h=u==="awaiting_input",U=P,K=S();y(""),B(!0);try{const m=await L();if($.current={sessionKey:m.sessionKey,userOrder:K,runId:h?e:void 0,supersededRunId:h?void 0:e},R(null),k(Y=>[...Y,{id:`${crypto.randomUUID()}-user`,role:"user",content:P,order:K,timestamp:new Date().toISOString()}]),f("running","send-started"),w(!0),N(""),m.id&&await kn(m.id,o),p(),m.id){const Y=h?await Hr(m.id,U):await Bl(m.id,U);b(Y.runId),$.current&&$.current.sessionKey===m.sessionKey&&$.current.userOrder===K&&($.current={...$.current,runId:Y.runId})}}catch(m){d(),$.current=null,C(),R(null),w(!1),f("error","send-failed"),N(m instanceof Error?m.message:"Failed to send the message.")}finally{B(!1)}},[e,p,d,a,L,u,$,S,o,s,b,N,y,k,R,B,C,w,f]),H=T.useCallback(async()=>{if(!(!s||u==="stopping")){N(""),d(),C(),R(null),w(!1),f("stopping","stop-requested");try{if(e)await $l(e);else throw new Error("No active run to stop.");window.setTimeout(()=>{_.current==="stopping"&&f("idle","stop-timeout-complete")},1500)}catch(P){f("error","stop-failed"),N(P instanceof Error?P.message:"Failed to stop the current task.")}}},[e,d,N,R,C,w,s,u,_,f]);return{handleSend:M,handleStopTask:H}}function Vp({activeThreadId:e,brandingNewThreadLabel:t,deleteTarget:n,renameDraft:r,renameTarget:i,searchParams:a,selectedKnowledgeBaseIds:l,activeAgentMode:o,selectedProject:s,updateTaskState:u,applyLocalCoreThreadDetail:f,clearReplyTimeout:c,refreshSessionsForProject:p,setActiveRunId:d,setActiveSessionAgentType:x,setActiveSessionId:S,setActiveSessionKey:C,setActiveSessionName:b,setBridgeError:E,setDeleteTarget:v,setMessages:O,setPendingPermissionRequest:N,setPendingSessionAction:y,setRenameDraft:k,setRenameTarget:R,setSearchParams:B,setTyping:w,holdBlankComposerRef:j,nextMessageOrderRef:A,pendingTurnRef:$,progressSequenceByTurnRef:F}){const _=T.useCallback(()=>{j.current=!0,S(""),C(""),b(""),x(""),d(""),O([]),N(null),w(!1),u("idle"),E(""),$.current=null,A.current=0,F.current={},c()},[c,j,A,$,F,d,x,S,C,b,E,O,N,w,u]),L=T.useCallback(async()=>{if(s){y("rename");try{let h=await Ur(s,`${t} ${new Date().toLocaleTimeString()}`);if(o&&o!=="default"&&(h=await bn(h.id,o)),l.length>0){const K=(await kn(h.id,l)).knowledgeBaseIds;h.selectedKnowledgeBaseIds=K}else h.selectedKnowledgeBaseIds=[];await p(s),f(h);const U=new URLSearchParams(a);U.set("project",s),U.set("session",h.id),B(U,{replace:!0})}finally{y(null)}}},[f,o,t,p,a,l,s,y,B]),M=T.useCallback((h,U)=>{R({project:h,id:U.id,name:U.name}),k(U.name)},[k,R]),H=T.useCallback(async()=>{if(i){y("rename");try{const h=r.trim();await Ul(i.id,h),i.id===e&&b(h),await p(i.project),R(null),k("")}finally{y(null)}}},[e,p,r,i,b,y,k,R]),P=T.useCallback(async()=>{if(n){y("delete");try{await Hl(n.id),n.id===e&&_(),await p(n.project),v(null)}finally{y(null)}}},[e,n,p,_,v,y]);return{handleCreateNew:L,handleDeleteSession:P,handleRenameSession:H,openRenameModal:M}}function qp({activeRunId:e,activeThreadId:t,activeBridgeSessionKey:n,brandingNewThreadLabel:r,deleteTarget:i,draft:a,loadActiveThread:l,renameDraft:o,renameTarget:s,searchParams:u,selectedKnowledgeBaseIds:f,activeAgentMode:c,selectedWorkspaceId:p,taskState:d,updateTaskState:x,applyLocalCoreThreadDetail:S,armReplyTimeout:C,clearReplyTimeout:b,refreshSessionsForProject:E,reserveNextMessageOrder:v,settlePreviewMessages:O,setActiveRunId:N,setActiveSessionAgentType:y,setActiveAgentMode:k,setActiveSessionId:R,setActiveSessionKey:B,setActiveSessionName:w,setBridgeError:j,setDeleteTarget:A,setDraft:$,setMessages:F,setPendingPermissionRequest:_,setPendingSessionAction:L,setRenameDraft:M,setRenameTarget:H,setSearchParams:P,setSending:h,setTyping:U,holdBlankComposerRef:K,nextMessageOrderRef:m,pendingTurnRef:Y,progressSequenceByTurnRef:Z,taskStateRef:G}){const ae={selectedProject:p,updateTaskState:x,applyLocalCoreThreadDetail:S,clearReplyTimeout:b,refreshSessionsForProject:E,setBridgeError:j,setMessages:F,setPendingPermissionRequest:_,setTyping:U,holdBlankComposerRef:K,nextMessageOrderRef:m,pendingTurnRef:Y,progressSequenceByTurnRef:Z,taskStateRef:G},V={setActiveRunId:N,setActiveSessionAgentType:y,setActiveAgentMode:k,setActiveSessionId:R,setActiveSessionKey:B,setActiveSessionName:w},ee={setDeleteTarget:A,setPendingSessionAction:L,setRenameDraft:M,setRenameTarget:H},re={holdBlankComposerRef:K,nextMessageOrderRef:m,pendingTurnRef:Y,progressSequenceByTurnRef:Z,taskStateRef:G},me={setBridgeError:j,setMessages:F,setPendingPermissionRequest:_,setTyping:U},{handleSend:_e,handleStopTask:Ie}=Kp({activeRunId:e,activeThreadId:t,activeBridgeSessionKey:n,brandingNewThreadLabel:r,draft:a,loadActiveThread:l,selectedKnowledgeBaseIds:f,activeAgentMode:c,taskState:d,armReplyTimeout:C,reserveNextMessageOrder:v,settlePreviewMessages:O,setDraft:$,setSending:h,...ae,...V,...me,...re}),{handleCreateNew:De,handleDeleteSession:Te,handleRenameSession:ke,openRenameModal:Fe}=Vp({activeThreadId:t,brandingNewThreadLabel:r,deleteTarget:i,renameDraft:o,renameTarget:s,searchParams:u,selectedKnowledgeBaseIds:f,activeAgentMode:c,setSearchParams:P,...ae,...V,...ee,...me});return{handleCreateNew:De,handleDeleteSession:Te,handleRenameSession:ke,handleSend:_e,handleStopTask:Ie,openRenameModal:Fe}}const tl={status:"idle"};function Wp(e,t){switch(t.type){case"activate_started":return{status:"activating"};case"send_started":return{status:"sending"};case"send_accepted":return e.status==="sending"?{status:"waiting"}:e;case"stream_started":return{status:"running"};case"input_requested":return{status:"awaiting_input"};case"permission_requested":return{status:"awaiting_permission"};case"permission_submitted":return{status:"permission_submitted"};case"stop_started":return{status:"stopping"};case"failed":return{status:"failed",error:t.error};case"timed_out":return{status:"timed_out",error:t.error};case"settled":return tl;case"transition":return{status:t.status,error:t.error};default:return e}}function Yp({activeThreadId:e,brandingReplyTimeoutLabel:t,setSelectedKnowledgeBaseIds:n,setActiveRunId:r,setActiveSessionAgentType:i,setActiveAgentMode:a,setActiveSessionId:l,setActiveSessionKey:o,setActiveSessionName:s,setBridgeError:u,setSelectedProject:f,setThreadGroups:c}){const[p,d]=T.useState([]),[x,S]=T.useState(null),[C,b]=T.useState(!1),[E,v]=T.useReducer(Wp,tl),O=xa(E.status),N=T.useRef(null),y=T.useRef("reply"),k=T.useRef({}),R=T.useRef(0),B=T.useRef(null),w=T.useRef(!1),j=T.useRef({}),A=T.useRef("idle"),$=T.useRef(""),F=T.useMemo(()=>Vn(p),[p]),_=Na(O),L=_a(O),M=Aa(O,C);T.useEffect(()=>{$.current=e},[e]);const H=T.useCallback((V,ee="unspecified")=>{const re=A.current;A.current=V,v(ga(V)),re!==V&&console.info("[desktop-chat] task_state",{from:re,to:V,reason:ee,threadId:$.current})},[]),P=T.useCallback(()=>{N.current&&(window.clearTimeout(N.current),N.current=null)},[]),h=T.useCallback((V="reply")=>{P(),y.current=V,N.current=window.setTimeout(()=>{b(!1),B.current=null,S(null),H("idle","reply-timeout"),u(V==="permission_continue"?t:"Agent did not respond in time. Check AgentDock runtime logs or adjust the model/provider.")},ma)},[t,P,u,H]),U=T.useCallback(()=>{d(V=>V.map(ee=>ee.actionStatus||ee.actionPending?{...ee,actionPending:!1,actionStatus:void 0}:ee))},[]),K=T.useCallback(V=>{d(ee=>ka(ee,V))},[]),m=T.useCallback(()=>{const V=R.current;return R.current+=1,V},[]),Y=T.useCallback(V=>{const ee=B.current;if(ee&&V&&ee.sessionKey===V){const re=ee.userOrder+1;R.current<re&&(R.current=re)}return m()},[m]),Z=T.useCallback(V=>{const ee=V||crypto.randomUUID(),re=(j.current[ee]||0)+1;return j.current[ee]=re,`${ee}-progress-${re}`},[]),G=T.useCallback(V=>{d(ee=>ya(ee,V))},[]);return{applyLocalCoreThreadDetail:T.useCallback(V=>{k.current[V.workspaceId]=V.id,f(V.workspaceId),l(V.id),o(V.bridgeSessionKey||""),s(V.title),i(V.agentType||""),a(V.agentMode||"default"),r(V.runId||""),n(V.selectedKnowledgeBaseIds||[]),S(V.pendingPermissionRequest||null),c(re=>Ia(re,V.workspaceId,qr(V))),w.current=!1,j.current={};const ee=wa(V.messages||[]);B.current=null,R.current=ee.reduce((re,me)=>Math.max(re,me.order+1),0),d(Vn(ee))},[r,a,i,l,o,s,n,f,c,S]),armReplyTimeout:h,clearActionStatuses:U,clearReplyTimeout:P,holdBlankComposerRef:w,lastSessionByProjectRef:k,messages:p,nextMessageOrderRef:R,pendingPermissionRequest:x,finalizeTurnMessages:G,nextProgressMessageId:Z,pendingTurnRef:B,progressSequenceByTurnRef:j,renderedMessages:F,reserveAssistantMessageOrder:Y,reserveNextMessageOrder:m,setMessages:d,setPendingPermissionRequest:S,settlePreviewMessages:K,setTyping:b,taskHint:M,taskInputLocked:L,taskRunning:_,taskState:O,taskStateRef:A,typing:C,updateTaskState:H}}function Xp(){const[e,t]=Cl(),[n,r]=T.useState([]),[i,a]=T.useState(""),[l,o]=T.useState([]),[s,u]=T.useState(""),[f,c]=T.useState(""),[p,d]=T.useState(""),[x,S]=T.useState(""),[C,b]=T.useState("default"),[E,v]=T.useState(""),[O,N]=T.useState(""),[y,k]=T.useState(""),[R,B]=T.useState([]),[w,j]=T.useState([]),[A,$]=T.useState(null),[F,_]=T.useState(""),[L,M]=T.useState(null),[H,P]=T.useState(null),[h,U]=T.useState(null),[K,m]=T.useState(!1),[Y,Z]=T.useState(!1),[G,ae]=T.useState(""),V=T.useRef(0),ee=T.useRef(null),re=e.get("project")||"",me=e.get("session")||"",_e=el(),{applyLocalCoreThreadDetail:Ie,armReplyTimeout:De,clearActionStatuses:Te,clearReplyTimeout:ke,finalizeTurnMessages:Fe,holdBlankComposerRef:Qe,lastSessionByProjectRef:He,nextMessageOrderRef:Me,nextProgressMessageId:lt,pendingPermissionRequest:je,pendingTurnRef:Ke,progressSequenceByTurnRef:Ve,renderedMessages:yt,reserveAssistantMessageOrder:I,reserveNextMessageOrder:D,setMessages:W,setPendingPermissionRequest:Q,settlePreviewMessages:ne,setTyping:se,taskHint:ze,taskInputLocked:Ce,taskRunning:qe,taskState:Re,taskStateRef:ue,typing:Oe,updateTaskState:ge}=Yp({activeThreadId:s,brandingReplyTimeoutLabel:_e.replyTimeoutLabel,setSelectedKnowledgeBaseIds:j,setActiveRunId:v,setActiveSessionAgentType:S,setActiveAgentMode:b,setActiveSessionId:u,setActiveSessionKey:c,setActiveSessionName:d,setBridgeError:ae,setSelectedProject:a,setThreadGroups:o}),{loading:nl,refreshRuntime:rl,runtime:wt,serviceRunning:Rn,showSessionKey:il,transportReady:ll}=Pp({requestedProject:re,selectedProject:i,setSelectedProject:a,clearReplyTimeout:ke,updateTaskState:ge,setTyping:se}),{filteredThreadGroups:al,loadActiveThread:St,refreshThreadsForWorkspace:Ct}=Dp({activeThreadId:s,requestedWorkspaceId:re,requestedThreadId:me,runtimeDefaultWorkspaceId:wt==null?void 0:wt.settings.defaultProject,searchParams:e,selectedWorkspaceId:i,serviceRunning:Rn,workspaceIds:n,threadGroups:l,threadSearch:y,setSelectedKnowledgeBaseIds:j,setActiveRunId:v,setActiveSessionAgentType:S,setActiveAgentMode:b,setActiveSessionId:u,setActiveSessionKey:c,setActiveSessionName:d,setBridgeError:ae,setMessages:W,setPendingPermissionRequest:Q,setProjects:r,setSearchParams:t,setSelectedProject:a,setThreadGroups:o,setTyping:se,applyLocalCoreThreadDetail:Ie,clearReplyTimeout:ke,updateTaskState:ge,holdBlankComposerRef:Qe,lastSessionByProjectRef:He,nextMessageOrderRef:Me,pendingTurnRef:Ke,progressSequenceByTurnRef:Ve});T.useEffect(()=>{var Pe;(Pe=ee.current)==null||Pe.scrollIntoView({behavior:"smooth"})},[yt,Oe]);const On=T.useCallback(async()=>{try{const Pe=await Fl();B(Pe.bases||[])}catch{B([])}},[]);T.useEffect(()=>{On()},[On]);const ol=T.useCallback(async Pe=>{const at=Array.from(new Set(Pe.map(Ge=>String(Ge||"").trim()).filter(Boolean))),Be=V.current+1;if(V.current=Be,j(at),!(!i||!s))try{const Ge=(await kn(s,at)).knowledgeBaseIds;V.current===Be&&j(Ge)}catch(Ge){V.current===Be&&ae(Ge instanceof Error?Ge.message:"Failed to save selected knowledge bases.")}},[s,i,ae]),sl=T.useCallback(async Pe=>{const at=["default","bypassPermissions"].includes(Pe)?Pe:"default";if(b(at),!(!i||!s)){Z(!0),ae("");try{const Be=await bn(s,at);Ie(Be),await Ct(i)}catch(Be){ae(Be instanceof Error?Be.message:"Failed to save permission mode."),await St(i,s).catch(()=>null)}finally{Z(!1)}}},[s,Ie,St,Ct,i]),{handleBridgeAction:ul}=Hp({activeAgentType:x,activeThreadId:s,activeRunId:E,activeBridgeSessionKey:f,selectedWorkspaceId:i,clearActionStatuses:Te,clearReplyTimeout:ke,finalizeTurnMessages:Fe,nextProgressMessageId:lt,refreshThreadsForWorkspace:Ct,reserveAssistantMessageOrder:I,reserveNextMessageOrder:D,settlePreviewMessages:ne,setActiveRunId:v,setBridgeError:ae,setMessages:W,setPendingBridgeActionId:U,setTyping:se,setPendingPermissionRequest:Q,updateTaskState:ge,armReplyTimeout:De,pendingTurnRef:Ke,progressSequenceByTurnRef:Ve,sendAction:Hr,taskStateRef:ue}),{handleCreateNew:cl,handleDeleteSession:fl,handleRenameSession:dl,handleSend:pl,handleStopTask:hl,openRenameModal:ml}=qp({activeRunId:E,activeThreadId:s,activeBridgeSessionKey:f,activeAgentMode:C,brandingNewThreadLabel:_e.newThreadLabel,deleteTarget:L,draft:O,loadActiveThread:St,renameDraft:F,renameTarget:A,searchParams:e,selectedKnowledgeBaseIds:w,selectedWorkspaceId:i,taskState:Re,updateTaskState:ge,applyLocalCoreThreadDetail:Ie,armReplyTimeout:De,clearReplyTimeout:ke,refreshSessionsForProject:Ct,reserveNextMessageOrder:D,settlePreviewMessages:ne,setActiveRunId:v,setActiveSessionAgentType:S,setActiveAgentMode:b,setActiveSessionId:u,setActiveSessionKey:c,setActiveSessionName:d,setBridgeError:ae,setDeleteTarget:M,setDraft:N,setMessages:W,setPendingPermissionRequest:Q,setPendingSessionAction:P,setRenameDraft:_,setRenameTarget:$,setSearchParams:t,setSending:m,setTyping:se,holdBlankComposerRef:Qe,nextMessageOrderRef:Me,pendingTurnRef:Ke,progressSequenceByTurnRef:Ve,taskStateRef:ue});return{activeRunId:E,activeAgentMode:C,activeSessionId:s,activeSessionKey:f,activeSessionName:p,bridgeError:G,branding:_e,deleteTarget:L,draft:O,endRef:ee,filteredSessionGroups:al,handleBridgeAction:ul,handleCreateNew:cl,handleDeleteSession:fl,handleRenameSession:dl,handleSend:pl,handleStopTask:hl,availableKnowledgeBases:R,loadActiveSession:St,loading:nl,openRenameModal:ml,pendingBridgeActionId:h,permissionModeSaving:Y,pendingPermissionRequest:je,pendingSessionAction:H,projects:n,refreshRuntime:rl,renameDraft:F,renameTarget:A,renderedMessages:yt,runtime:wt,sending:K,selectedKnowledgeBaseIds:w,serviceRunning:Rn,sessionSearch:y,selectedProject:i,setDeleteTarget:M,setDraft:N,setSelectedKnowledgeBaseIds:ol,setActiveAgentMode:sl,setRenameDraft:_,setRenameTarget:$,setSelectedProject:a,setSessionSearch:k,showSessionKey:il,taskHint:ze,taskInputLocked:Ce,taskRunning:qe,taskState:Re,transportReady:ll}}function Qp(){const[e,t]=T.useState(!1),{activeRunId:n,activeAgentMode:r,activeSessionId:i,activeSessionKey:a,activeSessionName:l,bridgeError:o,branding:s,deleteTarget:u,draft:f,endRef:c,filteredSessionGroups:p,handleBridgeAction:d,handleCreateNew:x,handleDeleteSession:S,handleRenameSession:C,handleSend:b,handleStopTask:E,availableKnowledgeBases:v,loadActiveSession:O,loading:N,openRenameModal:y,pendingBridgeActionId:k,permissionModeSaving:R,pendingPermissionRequest:B,pendingSessionAction:w,projects:j,refreshRuntime:A,renameDraft:$,renameTarget:F,renderedMessages:_,runtime:L,sending:M,selectedKnowledgeBaseIds:H,serviceRunning:P,sessionSearch:h,selectedProject:U,setDeleteTarget:K,setDraft:m,setActiveAgentMode:Y,setSelectedKnowledgeBaseIds:Z,setRenameDraft:G,setRenameTarget:ae,setSelectedProject:V,setSessionSearch:ee,showSessionKey:re,taskHint:me,taskInputLocked:_e,taskRunning:Ie,taskState:De,transportReady:Te}=Xp(),ke=T.useMemo(()=>Va(p,U),[p,U]),Fe=T.useMemo(()=>qa(j,U),[j,U]),Qe=T.useMemo(()=>Wa(ke),[ke]),He=T.useMemo(()=>Xr(H,v),[v,H]),Me=Ya(B),lt=(L==null?void 0:L.phase)==="starting";return N?g.jsx("div",{className:"flex h-64 items-center justify-center text-sm text-slate-500 animate-pulse",children:"正在加载桌面对话…"}):g.jsxs(g.Fragment,{children:[g.jsx("div",{className:"relative h-full min-h-0 overflow-hidden border-slate-200/80 bg-[#f5f5f7] animate-fade-in dark:border-white/[0.06] dark:bg-[#0b0d10] md:rounded-[24px] md:border",children:g.jsxs("div",{className:"grid h-full min-h-0 grid-cols-1 md:grid-cols-[288px_minmax(0,1fr)]",children:[g.jsx(_p,{activeSessionId:i,branding:s,filteredSessionGroups:ke,hasVisibleSessions:Qe,isRuntimeStarting:lt,loading:N,mobileSessionsOpen:e,projects:j,runtime:L,selectedProject:U,serviceRunning:P,sessionSearch:h,showSessionKey:re,visibleProjects:Fe,onCreateNew:()=>void x(),onLoadActiveSession:O,onOpenRenameModal:y,onRefreshRuntime:()=>void A(),setDeleteTarget:K,setMobileSessionsOpen:t,setSelectedProject:V,setSessionSearch:ee}),g.jsxs("section",{className:"flex min-h-0 flex-col bg-white dark:bg-[#0b0d10]",children:[g.jsxs("div",{className:"border-b border-slate-200/80 px-4 py-3 dark:border-white/[0.06] sm:px-6 sm:py-4",children:[g.jsxs("div",{className:"flex items-start gap-3",children:[g.jsx(ce,{size:"sm",variant:"secondary",onClick:()=>t(!0),className:"mt-0.5 h-9 w-9 shrink-0 rounded-xl px-0 md:hidden","aria-label":"Open sessions",children:g.jsx(Jl,{size:16})}),g.jsxs("div",{className:"min-w-0 flex-1",children:[g.jsx("p",{className:"text-[11px] font-medium tracking-[0.16em] text-slate-400 dark:text-slate-500",children:"当前会话"}),g.jsx("h2",{className:"mt-1 truncate text-[1.75rem] font-semibold leading-tight text-slate-900 dark:text-white sm:mt-2 sm:text-[1.95rem] sm:leading-none","data-testid":"desktop-chat-active-title",children:l||s.activeConversationFallback})]})]}),g.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2 text-xs text-slate-500 dark:text-slate-400",children:[U?g.jsx("span",{className:"inline-flex items-center rounded-full bg-slate-100 px-2.5 py-1 text-[11px] text-slate-600 dark:bg-white/[0.05] dark:text-slate-300",children:U}):null,g.jsx("span",{className:"inline-flex items-center gap-1 rounded-full bg-slate-100 px-2.5 py-1 text-[10px] uppercase tracking-[0.18em] text-slate-500 dark:bg-white/[0.05] dark:text-slate-400",children:Ca(L==null?void 0:L.phase)}),Te?g.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-primary/10 px-2.5 py-1 text-primary dark:text-primary",children:[g.jsx(_t,{size:6,className:"fill-current"})," ",s.runtimeOnlineLabel]}):g.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-slate-100 px-2.5 py-1 text-slate-500 dark:bg-white/[0.05] dark:text-slate-400",children:[g.jsx(sa,{size:12})," ",s.runtimeOfflineLabel]}),re&&a?g.jsx("span",{className:"truncate text-[11px] text-slate-400 dark:text-slate-500",children:a}):null]})]}),g.jsxs("div",{className:"flex-1 overflow-y-auto px-3 py-4 [scrollbar-gutter:stable] sm:px-6 sm:py-5",children:[_.length===0?g.jsx("div",{className:"flex h-full min-h-[18rem] items-center justify-center",children:g.jsxs("div",{className:"w-full max-w-2xl rounded-[24px] border border-slate-200 bg-[#fbfbfd] px-5 py-8 text-center dark:border-white/[0.06] dark:bg-white/[0.03] sm:px-8 sm:py-10",children:[g.jsx("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-primary/10 text-primary",children:g.jsx(Kr,{size:22})}),g.jsx("h3",{className:"mt-4 text-lg font-semibold text-slate-900 dark:text-white sm:text-xl",children:"开始一段新的桌面对话"}),g.jsx("p",{className:"mx-auto mt-3 max-w-xl text-sm leading-6 text-slate-500 dark:text-slate-400",children:U?`当前项目是 ${U}。直接提问即可创建会话并开始对话。`:"先在左侧选择项目,然后直接输入你的问题。"}),g.jsx("div",{className:"mt-4 flex flex-wrap justify-center gap-2",children:He.length>0?He.map(je=>g.jsx("span",{className:"rounded-full bg-primary/10 px-3 py-1 text-xs text-primary dark:bg-primary/10 dark:text-primary",children:je.name},je.id)):g.jsx("span",{className:"rounded-full bg-slate-100 px-3 py-1 text-xs text-slate-500 dark:bg-white/[0.05] dark:text-slate-400",children:"当前未限制知识库范围"})})]})}):g.jsx("div",{className:"mx-auto w-full max-w-4xl space-y-5",children:_.map(je=>Xa(je,Me)?g.jsx(Np,{message:je,pendingBridgeActionId:k,onAction:(Ke,Ve)=>void d(Ke,Ve)},je.id):null)}),me?g.jsxs("div",{className:"mt-5 flex items-center gap-2 text-sm text-slate-400","data-testid":"desktop-chat-task-hint",children:[g.jsx(_t,{size:8,className:"fill-current animate-pulse"})," ",me]}):null,o?g.jsx("div",{className:"mt-4 rounded-2xl border border-amber-400/20 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:bg-amber-500/10 dark:text-amber-100","data-testid":"desktop-chat-bridge-error",children:o}):null,g.jsx("div",{ref:c})]}),g.jsx(Tp,{activeRunId:n,activeAgentMode:r,activeSessionKey:a,availableKnowledgeBases:v,branding:s,composerPermissionCard:Me,draft:f,pendingBridgeActionId:k,permissionModeSaving:R,selectedKnowledgeBaseIds:H,selectedProject:U,sending:M,serviceRunning:P,taskInputLocked:_e,taskRunning:Ie,taskState:De,transportReady:Te,onBridgeAction:d,onSend:b,onStopTask:E,setActiveAgentMode:Y,setDraft:m,setSelectedKnowledgeBaseIds:Z})]})]})}),g.jsx(zp,{deleteTarget:u,pendingSessionAction:w,renameDraft:$,renameTarget:F,onDeleteSession:S,onRenameSession:C,setDeleteTarget:K,setRenameDraft:G,setRenameTarget:ae})]})}const sh=Object.freeze(Object.defineProperty({__proto__:null,default:Qp},Symbol.toStringTag,{value:"Module"}));export{Nr as M,sh as T,Rt as c,Mr as r,Pn as v};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as gt,n as D,j as t,B as F,F as Kt,S as Xt,m as qt,r as S,p as Jt,q as Zt,v as Ne,w as es,x as ts,y as ss}from"./index-
|
|
1
|
+
import{c as gt,n as D,j as t,B as F,F as Kt,S as Xt,m as qt,r as S,p as Jt,q as Zt,v as Ne,w as es,x as ts,y as ss}from"./index-Dd00oqgY.js";import{M as lt}from"./Modal-DAQfz0ot.js";import{I as L}from"./Input-DHYrn-Ne.js";import{S as ee}from"./Select-DzmN5OGQ.js";import{E as Oe}from"./EmptyState-CkI1RwPX.js";import{S as pt,a as Pe,P as as}from"./Page-Dw43UYDT.js";import{c as xt,D as ze,d as ns,e as De,B as rs,f as Me,g as Ae,h as os,j as ct,k as dt,l as is,t as ls,m as cs,p as ds,q as ms,r as us,u as mt}from"./channels-DfQrmuYO.js";import{T as Te}from"./trash-2-DTXVbC5y.js";import{P as ke}from"./plus-DDcldp_c.js";import{P as hs,S as we}from"./save-CMW_cZI9.js";import"./index-CYhDUAR_.js";import"./chevron-down-CEFtpPDc.js";import"./Card-DJeLDdL3.js";/**
|
|
2
2
|
* @license lucide-react v0.487.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|