@kafca/agentdock 0.1.47 → 0.1.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +6 -0
  2. package/dist/renderer/assets/{Badge-BYREM3t3.js → Badge-DXjx3T4U.js} +1 -1
  3. package/dist/renderer/assets/{Chat-Dtb5X7sB.js → Chat-BdLcSBda.js} +1 -1
  4. package/dist/renderer/assets/{ChatMarkdown-_slLloCh.js → ChatMarkdown-CSc8mfpv.js} +1 -1
  5. package/dist/renderer/assets/{Config-pHichs7H.js → Config-b5NK6ZGX.js} +2 -2
  6. package/dist/renderer/assets/{CronList-CJQMeCjz.js → CronList-B4vdtNHN.js} +1 -1
  7. package/dist/renderer/assets/{Dashboard-CY77Imde.js → Dashboard-BItoWTOa.js} +2 -2
  8. package/dist/renderer/assets/{EmptyState-DCqmct2y.js → EmptyState-DUDyUsLL.js} +1 -1
  9. package/dist/renderer/assets/{KnowledgeDetail-DFrxa-pv.js → KnowledgeDetail-WWH6KxiG.js} +2 -2
  10. package/dist/renderer/assets/{KnowledgeHome-DL-vAfrH.js → KnowledgeHome-Dn-NmRxu.js} +2 -2
  11. package/dist/renderer/assets/{Logs-jw9Uv590.js → Logs-4zMv4FvK.js} +1 -1
  12. package/dist/renderer/assets/{Modal-ChSm7tk6.js → Modal-BYTZpyD2.js} +3 -3
  13. package/dist/renderer/assets/{MonitorList-DrEwyS71.js → MonitorList-DzcwVuQO.js} +1 -1
  14. package/dist/renderer/assets/{Page-DhD-zgMU.js → Page-B0lex3w0.js} +1 -1
  15. package/dist/renderer/assets/{ProjectDetail-BVSjpfpL.js → ProjectDetail-zhmSLySm.js} +2 -2
  16. package/dist/renderer/assets/{ProjectList-CHGbTJjk.js → ProjectList-DZr7agnE.js} +1 -1
  17. package/dist/renderer/assets/{Select-rHs9CSam.js → Select-CybeCWXZ.js} +1 -1
  18. package/dist/renderer/assets/SessionChat-DfsXUkfX.js +1 -0
  19. package/dist/renderer/assets/{SessionList-Mr1uAnRW.js → SessionList-BHzY2T_K.js} +1 -1
  20. package/dist/renderer/assets/ThreadChat-BB_Y2SLO.js +28 -0
  21. package/dist/renderer/assets/{Workspace-MRRg8ndJ.js → Workspace-COip3Zy2.js} +1 -1
  22. package/dist/renderer/assets/{arrow-left-BU2NB2LA.js → arrow-left-SFlZE8SW.js} +1 -1
  23. package/dist/renderer/assets/{book-open-D-TGvWwa.js → book-open-CENFRKvo.js} +1 -1
  24. package/dist/renderer/assets/{bot-IYNh8tH5.js → bot-DeqZUVXX.js} +1 -1
  25. package/dist/renderer/assets/{check-CCZ0JO_S.js → check-BNBksd9W.js} +1 -1
  26. package/dist/renderer/assets/{chevron-down-00bRZi15.js → chevron-down-BOhwopXd.js} +1 -1
  27. package/dist/renderer/assets/{circle-CpQ8x4k_.js → circle-BTT_e1ZT.js} +1 -1
  28. package/dist/renderer/assets/{desktop-D0k2aGSj.js → desktop-D88Gquih.js} +1 -1
  29. package/dist/renderer/assets/{funnel-UbcrCBCp.js → funnel-Btin4gwi.js} +1 -1
  30. package/dist/renderer/assets/{heart-DvLsV7tL.js → heart-BCqqkImr.js} +1 -1
  31. package/dist/renderer/assets/index-CjCuR6DI.css +11 -0
  32. package/dist/renderer/assets/{index-B2L4G-b_.js → index-DvKeLUQ8.js} +2 -2
  33. package/dist/renderer/assets/{index-dy-g2Bh4.js → index-on-scaWG.js} +9 -9
  34. package/dist/renderer/assets/{pencil-qBYOgW5M.js → pencil-BHu_seP7.js} +1 -1
  35. package/dist/renderer/assets/{play-Dn6b4AGj.js → play-BoIfwVcE.js} +1 -1
  36. package/dist/renderer/assets/{plus-CaApUwEm.js → plus-_5sDk2H8.js} +1 -1
  37. package/dist/renderer/assets/projects-BR_Y3Dov.js +1 -0
  38. package/dist/renderer/assets/{save-CN6yvTfD.js → save-Bn9HUt7T.js} +1 -1
  39. package/dist/renderer/assets/{search-Dn2MxYiO.js → search-BOU1rpMw.js} +1 -1
  40. package/dist/renderer/assets/{server-DpcVLHeh.js → server-BKF47usT.js} +1 -1
  41. package/dist/renderer/assets/{session-utils-DnD2Q_y1.js → session-utils-B4vjXX1q.js} +1 -1
  42. package/dist/renderer/assets/{sessions-eK5D4FLt.js → sessions-CtFBPvOB.js} +1 -1
  43. package/dist/renderer/assets/{shield-check-DSSJkacw.js → shield-check-Q1O3wIT4.js} +1 -1
  44. package/dist/renderer/assets/{trash-2-DmYJlEvO.js → trash-2-CANqI4Db.js} +1 -1
  45. package/dist/renderer/assets/{user-Cvf_uiyQ.js → user-DTURDktb.js} +1 -1
  46. package/dist/renderer/assets/{wifi-off-CCTloj-V.js → wifi-off-YfCo8Dbk.js} +1 -1
  47. package/dist/renderer/index.html +2 -2
  48. package/dist-electron/packages/core-sdk/src/index.js +4 -0
  49. package/dist-electron/services/local-ai-core/src/acp/local-core-acp-session-coordinator.js +51 -6
  50. package/dist-electron/services/local-ai-core/src/acp/store/local-core-acp-store.js +3 -0
  51. package/dist-electron/services/local-ai-core/src/acp/store/platform-store.js +13 -5
  52. package/dist-electron/services/local-ai-core/src/acp/store/schema.js +1 -0
  53. package/dist-electron/services/local-ai-core/src/acp/store/thread-store.js +3 -0
  54. package/dist-electron/services/local-ai-core/src/channel/shared/base-channel-gateway.js +4 -1
  55. package/dist-electron/services/local-ai-core/src/channel/shared/session-command-runtime.js +14 -3
  56. package/dist-electron/services/local-ai-core/src/router/workspace-router.js +10 -3
  57. package/dist-electron/services/local-ai-core/src/runtime/handlers/thread-handler.js +4 -0
  58. package/dist-electron/services/local-ai-core/src/runtime/server-routes.js +3 -0
  59. package/dist-electron/services/local-ai-core/src/scheduler/channel-execution-policy.js +3 -1
  60. package/dist-electron/services/local-ai-core/src/scheduler/lark-execution-policies.js +2 -1
  61. package/dist-electron/services/local-ai-core/src/scheduler/lark-schedule-adapter.js +10 -1
  62. package/dist-electron/services/local-ai-core/src/scheduler/weixin-execution-policies.js +2 -1
  63. package/dist-electron/services/local-ai-core/src/scheduler/weixin-schedule-adapter.js +10 -1
  64. package/dist-electron/services/local-ai-core/src/thread/thread-command-service.js +23 -2
  65. package/dist-electron/services/local-ai-core/src/thread/thread-slash-command-dispatcher.js +1 -0
  66. package/dist-electron/src/pages/Threads/thread-chat-model.js +2 -0
  67. package/dist-electron/tests/electron/workspace-task-store.test.js +22 -3
  68. package/dist-electron/tests/integration/local-core-refactor.test.js +253 -0
  69. package/dist-electron/tests/integration/local-core-routes.test.js +45 -0
  70. package/package.json +2 -2
  71. package/dist/renderer/assets/SessionChat-CDc2FNMA.js +0 -1
  72. package/dist/renderer/assets/ThreadChat-Detu5UfN.js +0 -23
  73. package/dist/renderer/assets/index-CO4fGqmv.css +0 -11
  74. package/dist/renderer/assets/projects-BwF5RlNV.js +0 -1
@@ -1,23 +0,0 @@
1
- import{c as be,j as t,g as X,B as J,r as l,W as ft,h as Te,I as Ne,T as bt,i as Oe,k as gt,m as wt,l as kt,s as yt,n as Re,o as Ce,p as Ee,q as jt,t as vt,v as Nt,w as Ct,x as St,y as Kt}from"./index-dy-g2Bh4.js";import{n as Lt,i as Mt,a as Pe,b as At,s as _t,w as je}from"./desktop-JQkhNOF4.js";import{C as It,A as zt}from"./ChatMarkdown-_slLloCh.js";import{C as Fe}from"./check-CCZ0JO_S.js";import{C as fe}from"./circle-CpQ8x4k_.js";import{B as Tt}from"./bot-IYNh8tH5.js";import{U as Pt}from"./user-Cvf_uiyQ.js";import{C as Dt}from"./chevron-down-00bRZi15.js";import{S as $t}from"./shield-check-DSSJkacw.js";import{s as Bt,g as Ut,o as Ot,b as Rt,u as Et}from"./desktop-D0k2aGSj.js";import{t as Ft,L as De}from"./session-utils-DnD2Q_y1.js";import{R as Ht,W as Wt}from"./wifi-off-CCTloj-V.js";import{X as He,M as $e}from"./Modal-ChSm7tk6.js";import{S as Vt}from"./search-Dn2MxYiO.js";import{P as Jt}from"./pencil-qBYOgW5M.js";import{T as Xt}from"./trash-2-DmYJlEvO.js";import"./index-B2L4G-b_.js";/**
2
- * @license lucide-react v0.487.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const Yt=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],Gt=be("database",Yt);/**
7
- * @license lucide-react v0.487.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const Qt=[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M12 7v6",key:"lw1j43"}],["path",{d:"M9 10h6",key:"9gxzsh"}]],We=be("message-square-plus",Qt);/**
12
- * @license lucide-react v0.487.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */const Zt=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]],qt=be("panel-left",Zt);/**
17
- * @license lucide-react v0.487.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */const er=[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]],tr=be("terminal",er),rr=9e4;function ce(e){return e==="thought"||e==="plan"||e==="tool"||e==="status"||e==="permission"}function ve(e){return e==="awaiting_input"}function he(e,r,s){if(r)return e.find(n=>n.id===r);if(s)return e.find(n=>n.preview&&n.turnKey===s)}function ar(e,r,s,n){return!e.preview||e.role!=="assistant"||!s||e.turnKey!==s||ce(n)||ce(e.bridgeKind)?!1:!!(r&&(e.content===r||!e.bridgeKind||e.bridgeKind==="assistant"))}function sr(e){const r=String(e.event.replyCtx||"").trim();if(!r)return!0;const s=String(e.activeRunId||"").trim(),n=e.pendingTurn;if(n&&n.sessionKey===e.event.sessionKey){const i=String(n.runId||"").trim();if(i)return r===i;const d=String(n.supersededRunId||"").trim();if(d&&r===d)return!1}return!s||r===s}function nr(e,r){let s=!1;const n=e.map(i=>!i.preview||r&&i.turnKey!==r?i:(s=!0,{...i,preview:!1,previewPlainText:!1}));return s?n:e}function ir(e,r){if(!r)return e;const s=e.filter(d=>d.turnKey===r&&!d.preview);if(s.length===0)return e;const n=[...s].reverse().find(d=>!ce(d.bridgeKind)),i=n==null?void 0:n.id;return e.map(d=>d.turnKey!==r||d.preview?d:{...d,kind:i&&d.id===i?"final":"progress"})}function Ve(e){if(!e)return"";const r=e.match(/\[User Message\]\s*([\s\S]*?)\s*\[\/User Message\]/);return r?r[1]||"":e}function or(e){return e.map((r,s)=>({id:r.id||`${s}-${r.timestamp||r.role}`,role:r.role==="user"?"user":r.role==="system"?"system":"assistant",content:r.role==="user"?Ve(r.content):r.content,toolCall:r.toolCall,bridgeKind:r.bridgeKind,bridgeStatus:r.bridgeStatus,kind:r.kind==="progress"||r.kind==="system"?"progress":"final",order:s,timestamp:r.timestamp}))}function Je(e){return{id:e.id,project:e.workspaceId,name:e.title,live:e.live,createdAt:e.createdAt,updatedAt:e.updatedAt,excerpt:Ve(e.excerpt),agentType:e.agentType,bridgeSessionKey:e.bridgeSessionKey}}function Xe(e){return[...e].sort((r,s)=>r.live!==s.live?r.live?-1:1:(s.updatedAt||s.createdAt||"").localeCompare(r.updatedAt||r.createdAt||""))}function lr(e,r){return r?[e.name,e.excerpt,e.bridgeSessionKey||""].join(" ").toLowerCase().includes(r):!0}function Be(e){return[...e].sort((r,s)=>{if(r.order!==s.order)return r.order-s.order;const n=r.timestamp?new Date(r.timestamp).getTime():Number.NaN,i=s.timestamp?new Date(s.timestamp).getTime():Number.NaN,d=Number.isFinite(n),u=Number.isFinite(i);return d&&u&&n!==i?n-i:r.id.localeCompare(s.id)})}function Ue(e){if(!e)return"";const r=new Date(e);return Number.isNaN(r.getTime())?"":new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(r)}function dr(e){switch(e){case"starting":return"启动中";case"api_ready":return"服务就绪";case"error":return"运行异常";default:return"未启动"}}function cr(e){if(!(e!=null&&e.startsWith("desktop:")))return"";const[,r=""]=e.split(":");return r}function ur(e){return Array.isArray(e)?e.map(r=>Array.isArray(r)?r.map(s=>Lt(s)).filter(s=>!!s):[]).filter(r=>r.length>0):[]}function Ye(e,r,s){const n=e.filter(i=>i.project!==r);return n.push({project:r,sessions:s}),n.sort((i,d)=>i.project.localeCompare(d.project))}function pr(e,r,s){var d;const n=((d=e.find(u=>u.project===r))==null?void 0:d.sessions)||[],i=Xe([s,...n.filter(u=>u.id!==s.id)]);return Ye(e,r,i)}function mr(e){return e.some(r=>r.some(s=>Mt(s)))}function xr(e,r){return e==="stopping"?"Stopping current task…":e==="error"?"":e==="awaiting_input"?"Agent is waiting for your reply.":e==="permission_submitted"?"Permission sent. Waiting for the agent to continue…":e==="awaiting_permission"?"Waiting for your permission response.":r?"Agent is typing…":e==="running"?"Task is running…":""}function hr(e){return e==="running"||e==="awaiting_permission"||e==="permission_submitted"||e==="stopping"}function fr(e){return e!=="idle"&&e!=="awaiting_input"&&e!=="error"}function br(e){return e!=="awaiting_input"&&e!=="awaiting_permission"&&e!=="permission_submitted"&&e!=="stopping"}const gr="Permission sent. Waiting for the agent to continue…";function wr(e){return!(e.actionMode==="permission"&&e.actionInteractive)}function kr(e,r){return(r==null?void 0:r.id)===e.id?!0:e.role!=="user"&&e.actionMode==="permission"&&!!e.actionInteractive}function yr(e){var s;if(!e.id||e.role!=="assistant"||e.actionMode!=="permission"||!e.content)return null;const r=((s=e.actions)==null?void 0:s.filter(n=>n.length>0))||[];return r.length===0?null:{id:e.id,content:e.content,actions:r,actionReplyCtx:e.actionReplyCtx,actionPending:e.actionPending,actionStatus:e.actionStatus,actionMode:"permission",actionInteractive:!0}}function jr(e){return{...e,actions:[],actionPending:!1,actionStatus:gr}}function vr(e,r){return e.role==="system"?!1:kr({id:e.id,role:e.role,actionMode:e.actionMode,actionInteractive:e.actionInteractive},r)}function Nr(e){var s;if(!e)return null;const r=e.status.trim()||"running";return{title:e.name.trim()||"Tool call",status:r,output:e.output||"",label:e.label||(/^running$/i.test(r)?"工具调用":"工具结果"),subtitle:((s=e.detail)==null?void 0:s.trim())||Cr(e.input)}}function Cr(e){if(!e||typeof e!="object")return typeof e=="string"&&e.trim()?e.trim():void 0;const r=e;for(const n of["command","cmd","path","file","query"]){const i=r[n];if(typeof i=="string"&&i.trim())return i.trim()}const s=Object.entries(r).filter(([,n])=>n!=null&&n!=="").slice(0,2).map(([n,i])=>`${n}: ${typeof i=="string"?i:JSON.stringify(i)}`);return s.length>0?s.join(", "):void 0}function Sr(e){var r;return e.bridgeKind==="tool"&&((r=e.toolCall)==null?void 0:r.status.trim().toLowerCase())==="running"&&!e.toolCall.output.trim()}function Kr(e){return e.label==="工具结果"&&!!e.output.trim()}function Lr(e){const r=e.split(`
22
- `).map(u=>u.trim()).filter(Boolean),s=r.findIndex(u=>u.includes("若按钮没有显示")),n=s>=0?r.slice(0,s):r,i=n[0]||"等待工具确认",d=n.slice(1).filter(u=>!u.includes("请选择一个选项继续执行"));return{title:i,bodyLines:d}}function Ge(e,r){return e.map(s=>{const n=r.find(i=>i.id===s);return{id:s,name:(n==null?void 0:n.name)||s,fileCount:(n==null?void 0:n.fileCount)||0}})}function Mr(e,r){const s=r.trim().toLowerCase();return s?e.filter(n=>[n.name,n.description,n.id].join(" ").toLowerCase().includes(s)):e}function Ar(e,r){const s=new Set(r);return[...e].sort((n,i)=>{const d=s.has(n.id),u=s.has(i.id);return d!==u?d?-1:1:n.name.localeCompare(i.name,"zh-CN")})}function _r(e,r){return r?e.filter(s=>s.project===r):e}function Ir(e,r){return r&&!e.includes(r)?[r,...e]:e}function zr(e){return e.some(r=>r.sessions.length>0)}function Tr(e){return e?{id:e.id,content:e.content,actions:e.actions,actionReplyCtx:e.actionReplyCtx,actionPending:e.actionPending,actionStatus:e.actionStatus,actionMode:"permission",actionInteractive:!0}:null}function Pr(e,r){return e.kind==="progress"&&Sr(e)?!1:!vr(e,r)}function Dr(e){return e.serviceRunning?e.transportReady?e.taskState==="awaiting_input"?"Agent 正在等待你的回复,可直接继续输入。":e.taskInputLocked?"任务正在运行,点击停止可中断当前执行。":e.sendPlaceholder:e.waitingRuntimePlaceholder:e.startFirstPlaceholder}function $r(e){return!!(e.draft.trim()&&e.serviceRunning&&e.transportReady&&!e.sending&&e.selectedProject)}function Br({card:e}){const r=e.status.toLowerCase()==="completed",[s,n]=l.useState(()=>!Kr(e)),i=!!e.output.trim();return t.jsxs("div",{className:"overflow-hidden rounded-[18px] border border-slate-200 bg-[#f5f5f7] dark:border-white/[0.08] dark:bg-[#111214]",children:[t.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:[t.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[t.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:t.jsx(ft,{size:14})}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("p",{className:"truncate text-sm font-semibold text-slate-800 dark:text-slate-100",children:e.title}),t.jsxs("p",{className:"mt-0.5 flex items-center gap-1.5 text-[11px] text-slate-500 dark:text-slate-400",children:[t.jsx(tr,{size:12}),t.jsx("span",{className:"truncate",children:e.subtitle||e.label})]})]})]}),t.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[t.jsx("span",{className:X("rounded-full px-2.5 py-1 text-[10px] font-medium uppercase tracking-[0.12em]",r?"bg-primary/10 text-primary dark:text-primary":"bg-amber-500/10 text-amber-700 dark:text-amber-300"),children:e.status}),i?t.jsx("button",{type:"button","aria-expanded":s,"aria-label":s?"折叠工具结果":"展开工具结果","data-testid":"desktop-tool-result-toggle",onClick:()=>n(d=>!d),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:s?t.jsx(Dt,{size:14}):t.jsx(Te,{size:14})}):null]})]}),s?t.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||"无输出"}):t.jsxs("button",{type:"button",onClick:()=>n(!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:[t.jsx(Te,{size:14}),t.jsx("span",{className:"truncate",children:"工具结果已折叠"})]})]})}function Ur({card:e,className:r,testId:s="desktop-chat-permission-card",loading:n,onAction:i}){const d=Lr(e.content);return t.jsxs("div",{"data-testid":s,className:X("overflow-hidden rounded-[18px] border border-amber-200 bg-[#fff8eb] dark:border-amber-400/20 dark:bg-amber-500/10",r),children:[t.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:t.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[t.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:t.jsx($t,{size:14})}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("p",{className:"truncate text-sm font-semibold text-amber-950 dark:text-amber-50",children:d.title}),t.jsx("p",{className:"mt-0.5 text-[11px] text-amber-700/80 dark:text-amber-100/70",children:"权限响应"})]})]})}),d.bodyLines.length>0?t.jsx("div",{className:"space-y-2 px-4 py-3 text-sm leading-6 text-amber-950 dark:text-amber-50",children:d.bodyLines.map((u,c)=>t.jsx("p",{className:"break-words",children:u},`${e.id}-permission-line-${c}`))}):null,e.actionStatus?t.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?t.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(u=>t.jsx(J,{size:"sm",variant:"secondary",onClick:()=>i(u),disabled:!!(e.actionPending||n),loading:n,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:u.text||u.data},`${e.id}-${u.data||u.text}`))}):null]})}function Or({message:e,pendingBridgeActionId:r,onAction:s}){const n=e.role==="user",i=e.role==="system",d=!n&&!i&&e.kind==="progress",u=n?null:Nr(e.toolCall),c=!!u;return t.jsxs("div",{className:X("flex gap-3 sm:gap-4",n?"justify-end":"justify-start"),children:[n?null:t.jsx("div",{className:X("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":d?"h-6 w-6 bg-[#f0f0f0] dark:bg-white/[0.04]":"h-8 w-8 bg-[#f5f5f7] dark:bg-white/[0.06]"),children:i?t.jsx(Fe,{size:14}):d?t.jsx(fe,{size:7,className:"fill-current"}):t.jsx(Tt,{size:14})}),t.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:X("transition-all",n?"max-w-[calc(100%-2.25rem)] sm:max-w-[70%]":c?"max-w-[calc(100%-2.25rem)] sm:max-w-[80%]":d?"max-w-[calc(100%-2.25rem)] sm:max-w-[72%]":"max-w-[calc(100%-2.25rem)] sm:max-w-[78%]"),children:t.jsxs("div",{className:X("rounded-[20px] px-4 py-3 text-sm",n?"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":d?"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",c&&"bg-transparent p-0 shadow-none dark:bg-transparent"),children:[t.jsxs("div",{className:X("mb-2 flex items-center gap-2 text-[10px]",n?"justify-end text-slate-500 dark:text-white/55":"text-slate-400 dark:text-slate-500"),children:[i?t.jsx("span",{className:"tracking-[0.14em] text-amber-600 dark:text-amber-300",children:"系统"}):null,d?t.jsx("span",{className:"tracking-[0.14em] text-amber-500 dark:text-amber-300",children:c?"工具":"过程"}):null,Ue(e.timestamp)?t.jsx("span",{"data-testid":"desktop-chat-message-timestamp",children:Ue(e.timestamp)}):null]}),!n&&e.preview&&e.previewPlainText?t.jsx("div",{className:"whitespace-pre-wrap break-words text-[13px] leading-6 text-inherit",children:e.content}):u?t.jsx(Br,{card:u}):t.jsx(It,{content:e.content,isUser:n}),!n&&e.actions&&e.actions.length>0?t.jsx("div",{className:"mt-4 space-y-2",children:e.actions.map((h,w)=>t.jsx("div",{className:"flex flex-wrap gap-2",children:h.map(C=>t.jsx(J,{size:"sm",variant:String(C.data||"").includes("deny")?"danger":"secondary",onClick:()=>s(e,C),disabled:!!(e.actionPending||r),loading:r===e.id,"data-testid":"desktop-chat-action-button",className:"rounded-full",children:C.text||C.data},`${e.id}-${C.data||C.text}`))},`${e.id}-actions-${w}`))}):null,!n&&e.actionStatus?t.jsx("p",{className:X("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?t.jsx("p",{className:"mt-2 text-[10px] uppercase tracking-[0.18em] text-primary dark:text-primary",children:"实时预览"}):null]})}),n?t.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:t.jsx(Pt,{size:14,className:"text-slate-500 dark:text-slate-300"})}):null]})}function Rr({activeSessionId:e,branding:r,filteredSessionGroups:s,hasVisibleSessions:n,isRuntimeStarting:i,mobileSessionsOpen:d,projects:u,runtime:c,selectedProject:h,serviceRunning:w,sessionSearch:C,showSessionKey:k,visibleProjects:y,onCreateNew:j,onLoadActiveSession:v,onOpenRenameModal:L,onRefreshRuntime:S,setDeleteTarget:I,setMobileSessionsOpen:z,setSelectedProject:M,setSessionSearch:T}){return t.jsxs("aside",{className:X("min-h-0 flex-col border-r border-slate-200/80 bg-[#fbfbfd] dark:border-white/[0.06] dark:bg-[#111214]",d?"flex":"hidden md:flex","absolute inset-0 z-30 md:static md:z-auto"),children:[t.jsxs("div",{className:"border-b border-slate-200/80 px-4 py-4 dark:border-white/[0.06]",children:[t.jsxs("div",{className:"flex items-start justify-between gap-3",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsx("p",{className:"text-[11px] font-medium tracking-[0.18em] text-slate-400 dark:text-slate-500",children:"会话导航"}),t.jsx("h2",{className:"mt-2 text-[1.65rem] font-semibold leading-tight text-slate-900 dark:text-white",children:r.chatHeading})]}),t.jsx(J,{size:"sm",variant:"ghost",onClick:()=>void S(),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:t.jsx(Ht,{size:14})}),t.jsx(J,{size:"sm",variant:"ghost",onClick:()=>z(!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:t.jsx(He,{size:14})})]}),t.jsxs("div",{className:"mt-4 space-y-3",children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx("label",{className:"block text-[11px] font-medium tracking-[0.18em] text-slate-400 dark:text-slate-500",children:r.scopeLabel}),t.jsxs("select",{value:h,onChange:K=>M(K.target.value),"data-testid":"desktop-chat-project-select","aria-label":r.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:[t.jsx("option",{value:"",children:r.scopeSelectPlaceholder}),y.map(K=>t.jsx("option",{value:K,children:K},K))]})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(J,{size:"md",variant:"secondary",onClick:()=>void j(),"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:[t.jsx(We,{size:15}),r.newThreadLabel]}),!w||i?t.jsx(J,{size:"md",onClick:()=>void Bt().then(S),disabled:i||w,"data-testid":"desktop-chat-start-service",className:"h-11 shrink-0 rounded-2xl px-3.5",children:i?r.startingRuntimeLabel:r.startRuntimeLabel}):null]}),t.jsxs("div",{className:"relative",children:[t.jsx(Vt,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 dark:text-slate-500"}),t.jsx(Ne,{value:C,onChange:K=>T(K.target.value),placeholder:r.searchPlaceholder,"aria-label":r.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"})]}),t.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:t.jsxs("span",{className:"inline-flex items-center gap-2 text-xs font-medium text-slate-600 dark:text-slate-300",children:[t.jsx(fe,{size:7,className:X("fill-current",w?"text-primary":"text-slate-300 dark:text-slate-500")}),w?"服务在线":i?"服务启动中":"服务未启动"]})})]}),c!=null&&c.service.lastError?t.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:c.service.lastError}):null,c!=null&&c.pendingRestart?t.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:r.pendingRestartLabel}):null]}),t.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 pb-24 pt-3 [scrollbar-gutter:stable] md:pb-3",children:!h&&!n?t.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:[t.jsx("p",{className:"text-sm font-medium text-slate-700 dark:text-slate-200",children:"先选择一个项目"}),t.jsx("p",{className:"mt-2 text-xs leading-5 text-slate-500 dark:text-slate-400",children:"选择项目后展示对应会话列表。"})]}):n?t.jsx("div",{className:"space-y-4",children:s.map(K=>t.jsxs("section",{className:"space-y-2",children:[!h&&K.sessions.length>0?t.jsxs("div",{"data-testid":"desktop-chat-session-group","data-project":K.project,className:"flex items-center justify-between px-2 pt-1",children:[t.jsx("p",{className:"text-[11px] font-medium tracking-[0.08em] text-slate-400 dark:text-slate-500",children:K.project}),t.jsxs("p",{className:"text-[10px] text-slate-400 dark:text-slate-500",children:[K.sessions.length," ",r.collectionLabel]})]}):null,K.sessions.map(a=>t.jsx("div",{"data-testid":"desktop-chat-session-row","data-session-id":a.id,"data-project":K.project,role:"button",tabIndex:0,onClick:()=>{v(K.project,a.id),z(!1)},onKeyDown:N=>{(N.key==="Enter"||N.key===" ")&&(N.preventDefault(),v(K.project,a.id),z(!1))},className:X("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",a.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:t.jsxs("div",{className:"flex items-start justify-between gap-3",children:[t.jsxs("div",{"data-testid":"desktop-chat-session-open","data-session-id":a.id,"data-project":K.project,className:"min-w-0 flex-1",children:[t.jsx("div",{className:"flex items-center gap-2",children:t.jsx("span",{className:"truncate text-sm font-medium text-slate-900 dark:text-white",children:a.name})}),t.jsx("p",{className:"mt-1 text-[11px] text-slate-400 dark:text-slate-500",children:Ft(a.updatedAt||a.createdAt)}),a.excerpt?t.jsx("p",{className:"mt-2 line-clamp-2 text-[11px] leading-5 text-slate-500 dark:text-slate-400",children:a.excerpt.replace(/\n/g," ")}):null,k&&a.bridgeSessionKey?t.jsx("p",{className:"mt-2 truncate text-[11px] text-slate-400 dark:text-slate-500",children:a.bridgeSessionKey}):null]}),t.jsxs("div",{className:"flex items-center gap-1 opacity-0 transition-opacity duration-200 group-hover:opacity-100 focus-within:opacity-100",children:[t.jsx(J,{size:"sm",variant:"ghost",onClick:N=>{N.stopPropagation(),L(K.project,a)},"data-testid":"desktop-chat-session-rename","data-session-id":a.id,"data-project":K.project,className:"text-slate-400 hover:bg-slate-100 hover:text-slate-900 dark:hover:bg-white/[0.08] dark:hover:text-white",children:t.jsx(Jt,{size:14})}),t.jsx(J,{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":a.id,"data-project":K.project,onClick:N=>{N.stopPropagation(),I({project:K.project,id:a.id,name:a.name})},children:t.jsx(Xt,{size:14})})]})]})},a.id))]},K.project))}):t.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:[t.jsx("p",{className:"text-sm font-medium text-slate-700 dark:text-slate-200",children:C.trim()?"没有匹配的会话":"当前还没有桌面会话"}),t.jsx("p",{className:"mt-2 text-xs leading-5 text-slate-500 dark:text-slate-400",children:C.trim()?"换个关键词试试。":"发送第一条消息后,这里会出现新的会话记录。"})]})})]})}function Er({activeRunId:e,activeSessionKey:r,availableKnowledgeBases:s,branding:n,composerPermissionCard:i,draft:d,pendingBridgeActionId:u,selectedKnowledgeBaseIds:c,selectedProject:h,sending:w,serviceRunning:C,taskInputLocked:k,taskRunning:y,taskState:j,transportReady:v,onBridgeAction:L,onSend:S,onStopTask:I,setDraft:z,setSelectedKnowledgeBaseIds:M}){const[T,K]=l.useState(!1),a=l.useRef(null),[N,P]=l.useState(""),D=Ge(c,s),B=Mr(s,N),A=Ar(B,c),R=c.length,$=Dr({serviceRunning:C,transportReady:v,taskState:j,taskInputLocked:k,startFirstPlaceholder:n.startFirstPlaceholder,waitingRuntimePlaceholder:n.waitingRuntimePlaceholder,sendPlaceholder:n.sendPlaceholder}),b=$r({draft:d,serviceRunning:C,transportReady:v,sending:w,selectedProject:h});return l.useEffect(()=>{const o=p=>{var g;(g=a.current)!=null&&g.contains(p.target)||K(!1)};return T&&document.addEventListener("mousedown",o),()=>{document.removeEventListener("mousedown",o)}},[T]),l.useEffect(()=>{if(!T)return;const o=window.requestAnimationFrame(()=>{var g;const p=(g=a.current)==null?void 0:g.querySelector("input");p instanceof HTMLInputElement&&p.focus()});return()=>window.cancelAnimationFrame(o)},[T]),t.jsx("div",{className:"border-t border-slate-200/80 px-3 py-3 dark:border-white/[0.06] sm:px-6",children:t.jsxs("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:[t.jsxs("div",{className:"relative",ref:a,children:[t.jsx("div",{className:"rounded-[18px] border border-slate-200 bg-white px-3 py-2 dark:border-white/[0.06] dark:bg-white/[0.03]",children:t.jsxs("div",{className:"flex flex-wrap items-center gap-2 sm:flex-nowrap",children:[t.jsx("p",{className:"shrink-0 text-[11px] font-medium text-slate-500 dark:text-slate-400",children:"知识库范围"}),t.jsxs(J,{size:"sm",variant:"secondary",disabled:!h,onClick:()=>K(o=>!o),"data-testid":"desktop-chat-knowledge-base-toggle",className:"shrink-0 rounded-full border border-slate-200 bg-[#f5f5f7] text-slate-700 hover:bg-slate-100 dark:border-white/[0.08] dark:bg-white/[0.06] dark:text-slate-100 dark:hover:bg-white/[0.1]",children:[t.jsx(Gt,{size:13}),R>0?"调整知识库":"选择知识库"]}),t.jsx("div",{className:"order-3 flex min-w-full flex-1 items-center gap-2 overflow-x-auto whitespace-nowrap [scrollbar-gutter:stable] sm:order-none sm:min-w-0",children:D.length===0?t.jsx("span",{className:"text-xs text-slate-400",children:h?"当前未限制知识库范围":"选择项目后可设置知识库范围"}):D.map(o=>t.jsxs("span",{className:"inline-flex shrink-0 items-center gap-2 rounded-full border border-slate-200 bg-[#f5f5f7] px-2.5 py-1 text-xs text-slate-700 dark:border-white/[0.08] dark:bg-white/[0.06] dark:text-slate-100",children:[t.jsx("span",{className:"max-w-[10rem] truncate",children:o.name}),o.fileCount>0?t.jsxs("span",{className:"text-[10px] text-slate-500",children:[o.fileCount," 文档"]}):null,t.jsx("button",{type:"button",onClick:()=>void M(c.filter(p=>p!==o.id)),className:"text-slate-500 transition-colors hover:text-slate-900 dark:hover:text-white","data-testid":"desktop-chat-knowledge-base-remove",children:t.jsx(He,{size:12})})]},o.id))}),t.jsx("p",{className:"ml-auto shrink-0 text-[11px] text-slate-400 sm:ml-0",children:h?R>0?`已选 ${R} 个`:"未限制":"请先选项目"})]})}),T?t.jsxs("div",{className:"animate-float-in absolute bottom-full left-0 right-0 z-20 mb-3 max-h-[70dvh] overflow-hidden rounded-[22px] border border-slate-200 bg-white p-3 dark:border-white/[0.08] dark:bg-[#0c1117]",children:[t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[t.jsxs("div",{children:[t.jsx("p",{className:"text-sm font-semibold text-slate-900 dark:text-white",children:"选择知识库"}),t.jsx("p",{className:"text-[11px] text-slate-400",children:"已选项排在前面,方便快速确认范围。"})]}),R>0?t.jsx("button",{type:"button",onClick:()=>void M([]),className:"text-xs text-slate-400 transition-colors hover:text-slate-900 dark:hover:text-white",children:"清空"}):null]}),t.jsx(Ne,{value:N,onChange:o=>P(o.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"}),t.jsx("div",{className:"mt-3 max-h-64 space-y-2 overflow-y-auto pr-2 [scrollbar-gutter:stable]",children:A.length===0?t.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:"没有匹配的知识库"}):A.map(o=>{const p=c.includes(o.id);return t.jsxs("button",{type:"button",onClick:()=>void M(p?c.filter(g=>g!==o.id):[...c,o.id]),"data-testid":"desktop-chat-knowledge-base-select",className:X("flex w-full items-start gap-3 rounded-[16px] border px-3 py-3 text-left transition-all duration-200",p?"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:[t.jsx("span",{className:X("mt-0.5 inline-flex h-5 w-5 items-center justify-center rounded-full border text-[10px]",p?"border-primary bg-primary text-white":"border-slate-300 text-transparent dark:border-white/[0.12]"),children:t.jsx(Fe,{size:12})}),t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsx("span",{className:"block truncate text-sm font-medium text-slate-900 dark:text-white",children:o.name}),t.jsxs("span",{className:"mt-1 block text-[11px] text-slate-400",children:[o.fileCount," 文档",o.description?` · ${o.description}`:""]})]})]},o.id)})})]}):null]}),t.jsx("div",{className:"mt-2.5",children:i?t.jsx(Ur,{card:i,loading:u===i.id,onAction:o=>void L(i,o),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]"}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"relative",children:[t.jsx(bt,{"data-testid":"desktop-chat-input",value:d,onChange:o=>z(o.target.value),onKeyDown:o=>{o.key==="Enter"&&!o.shiftKey&&!k&&(o.preventDefault(),S())},rows:3,placeholder:$,"aria-label":$,disabled:!C||!v||w||!h||k,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"}),y?t.jsxs(J,{variant:"danger",onClick:()=>void I(),disabled:!r&&!e||j==="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:[t.jsx(De,{size:16,className:"animate-spin"}),t.jsx("span",{className:"hidden sm:inline",children:j==="stopping"?"停止中":"停止任务"})]}):t.jsx(J,{onClick:()=>void S(),disabled:!b,"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:w?t.jsx(De,{size:18,className:"animate-spin"}):t.jsx(zt,{size:22,strokeWidth:2.2})})]}),t.jsxs("div",{className:"mt-2 hidden items-center justify-between px-1 pr-[4.5rem] text-[11px] text-slate-500 dark:text-slate-400 sm:flex",children:[t.jsx("span",{children:"Enter 发送,Shift + Enter 换行"}),t.jsx("span",{children:h?"范围会随当前线程保存":"请先选择项目"})]})]})})]})})}function Fr({deleteTarget:e,pendingSessionAction:r,renameDraft:s,renameTarget:n,onDeleteSession:i,onRenameSession:d,setDeleteTarget:u,setRenameDraft:c,setRenameTarget:h}){return t.jsxs(t.Fragment,{children:[t.jsx($e,{open:!!n,onClose:()=>h(null),title:"重命名会话",children:t.jsxs("div",{className:"space-y-4",children:[t.jsx(Ne,{value:s,onChange:w=>c(w.target.value),onInput:w=>c(w.target.value),placeholder:"输入会话名称","data-testid":"desktop-chat-rename-input"}),t.jsxs("div",{className:"flex justify-end gap-2",children:[t.jsx(J,{variant:"secondary",onClick:()=>h(null),"data-testid":"desktop-chat-rename-cancel",children:"取消"}),t.jsx(J,{onClick:()=>void d(),loading:r==="rename",disabled:!s.trim(),"data-testid":"desktop-chat-rename-save",children:"保存名称"})]})]})}),t.jsx($e,{open:!!e,onClose:()=>u(null),title:"删除会话",children:t.jsxs("div",{className:"space-y-4",children:[t.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-300",children:["确定删除 ",t.jsx("span",{className:"font-medium text-gray-900 dark:text-white",children:e==null?void 0:e.name})," 吗?这会移除该会话的本地保存记录。"]}),t.jsxs("div",{className:"flex justify-end gap-2",children:[t.jsx(J,{variant:"secondary",onClick:()=>u(null),"data-testid":"desktop-chat-delete-cancel",children:"取消"}),t.jsx(J,{variant:"danger",onClick:()=>void i(),loading:r==="delete","data-testid":"desktop-chat-delete-confirm",children:"删除会话"})]})]})})]})}function Qe(){return Oe()==="local_core"?{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:"审批回复已发送,但代理没有继续执行。该请求可能暂不支持本地运行时继续处理。"}:{chatTitle:"桌面对话",chatHeading:"桌面对话",chatDescription:"",scopeLabel:"当前项目",scopeSelectPlaceholder:"选择项目",searchPlaceholder:"搜索会话、用户或消息摘要",startRuntimeLabel:"启动服务",startingRuntimeLabel:"启动中…",newThreadLabel:"新建会话",pendingRestartLabel:"最新配置已经保存,但当前对话仍在使用旧服务状态。请重启桌面服务以应用配置。",emptySelectionLabel:"选择项目后即可开始对话。",emptyThreadsLabel:"当前还没有桌面会话。",emptySearchLabel:"没有匹配的会话。",collectionLabel:"会话",activeScopeLabel:"当前项目",activeConversationFallback:"新桌面对话",startConversationLabel:"选择项目后即可开始聊天。",runtimeOnlineLabel:"桥接在线",runtimeOfflineLabel:"桥接离线",emptyConversationLabel:"发送一条消息,即可在当前项目中创建桌面会话。",startFirstPlaceholder:"请先启动服务",waitingRuntimePlaceholder:"正在等待桌面桥接连接",sendPlaceholder:"输入一条发给桌面通道的消息",permissionUnsupportedLabel:"当前代理无法在桌面对话中继续交互式审批。请切换到支持的代理,或调整代理权限与 work_dir 后重试。",replyTimeoutLabel:"审批回复已发送,但代理没有继续执行。当前代理或请求可能暂不支持桌面续接。"}}function Hr({requestedProject:e,selectedProject:r,setSelectedProject:s,clearReplyTimeout:n,updateTaskState:i,setTyping:d}){const[u,c]=l.useState(null),[h,w]=l.useState(!0),C=Oe(),k=C==="electron",y=(u==null?void 0:u.phase)==="api_ready",j=y,v=l.useCallback(async()=>{const L=await Ut();c(L),!L.roles.conversation.lastError&&!r&&!e&&L.settings.defaultProject&&s(L.settings.defaultProject)},[e,r,s]);return l.useEffect(()=>{v().finally(()=>w(!1));const L=Ot(S=>{c(S),(S.phase==="stopped"||S.phase==="error")&&(d(!1),n(),i("idle"))});return()=>{n(),L()}},[n,v,d,i]),l.useMemo(()=>({loading:h,refreshRuntime:v,runtime:u,runtimeProvider:C,serviceRunning:y,showSessionKey:k,transportReady:j}),[h,v,u,C,y,k,j])}function Wr({current:e,requested:r,runtimeDefault:s,workspaceIds:n}){return e&&n.includes(e)?e:r&&n.includes(r)?r:s&&n.includes(s)?s:n[0]||""}function Vr({activeThreadId:e,requestedWorkspaceId:r,requestedThreadId:s,runtimeDefaultWorkspaceId:n,runtimeProvider:i,searchParams:d,serviceRunning:u,selectedWorkspaceId:c,workspaceIds:h,threadGroups:w,threadSearch:C,setSelectedKnowledgeBaseIds:k,setActiveRunId:y,setActiveSessionAgentType:j,setActiveSessionId:v,setActiveSessionKey:L,setActiveSessionName:S,setBridgeError:I,setMessages:z,setPendingPermissionRequest:M,setProjects:T,setSearchParams:K,setSelectedProject:a,setThreadGroups:N,setTyping:P,applyLocalCoreThreadDetail:D,clearReplyTimeout:B,updateTaskState:A,holdBlankComposerRef:R,lastSessionByProjectRef:$,nextMessageOrderRef:b,pendingTurnRef:o,progressSequenceByTurnRef:p}){const W=l.useMemo(()=>{var m;return((m=w.find(_=>_.project===c))==null?void 0:m.sessions)||[]},[c,w]),O=l.useMemo(()=>{const m=C.trim().toLowerCase();return h.map(_=>{var x;const U=(((x=w.find(f=>f.project===_))==null?void 0:x.sessions)||[]).filter(f=>lr(f,m));return{project:_,sessions:U}}).filter(_=>_.sessions.length>0||!m&&_.project===c)},[c,w,C,h]),E=l.useCallback(async m=>{if(!m||!u)return[];const _=Xe((await gt(m)).threads.map(x=>Je(x))),U=_.find(x=>x.id===e);return U!=null&&U.agentType&&j(U.agentType),N(x=>Ye(x,m,_)),_},[e,u,j,N,!0]),V=l.useCallback(async(m,_)=>{if(!(!m||!_||!u)){R.current=!1,A("idle"),M(null),P(!1);{const U=await wt(_);D(U);return}}},[D,R,$,b,o,p,u,y,j,v,L,S,k,z,M,a,N,P,A,!0]),H=l.useCallback(async()=>{if(!u)return T([]),N([]),k([]),[];const m=(await kt()).workspaces.map(x=>x.id);T(m);const _=Wr({current:c,requested:r,runtimeDefault:n,workspaceIds:m}),U=(await Promise.all(m.map(async x=>({project:x,sessions:await E(x)})))).sort((x,f)=>x.project.localeCompare(f.project));return N(U),a(_),U},[E,r,n,c,u,T,k,a,N,!0]);return l.useEffect(()=>{if(!(!u||i!=="local_core"))return yt(m=>{m.type==="thread.session.activated"&&m.threadId!==e&&E(m.workspaceId).then(()=>V(m.workspaceId,m.threadId))})},[e,V,E,i,u]),l.useEffect(()=>{if(!u){N([]),z([]),M(null),k([]),j(""),y(""),I(""),o.current=null,b.current=0,p.current={},A("idle"),P(!1),B();return}H()},[B,b,o,p,H,u,y,j,I,z,M,k,N,P,A]),l.useEffect(()=>{if(!c||!u||W.find(f=>f.id===e))return;const _=r===c?s:"",U=$.current[c];if(!e&&R.current)return;const x=W.find(f=>f.id===_)||W.find(f=>f.id===U)||W[0];if(x){P(!1),A("idle"),I(""),B(),V(c,x.id);return}P(!1),A("idle"),I(""),B(),v(""),L(""),S(""),j(""),y(""),z([]),o.current=null,b.current=0,p.current={}},[e,B,R,$,V,b,o,p,s,r,c,u,y,j,v,L,S,I,z,P,W,A]),l.useEffect(()=>{if(!c&&!e)return;const m=new URLSearchParams(d);c?m.set("project",c):m.delete("project"),e?m.set("session",e):m.delete("session"),m.toString()!==d.toString()&&K(m,{replace:!0})},[e,d,c,K]),{filteredThreadGroups:O,loadActiveThread:V,refreshThreadsForWorkspace:E,refreshWorkspacesAndThreads:H}}function Jr({activeAgentType:e,activeThreadId:r,armReplyTimeout:s,clearActionStatuses:n,clearReplyTimeout:i,reserveNextMessageOrder:d,runtimeProvider:u,selectedWorkspaceId:c,sendAction:h,settlePreviewMessages:w,setActiveRunId:C,setBridgeError:k,setMessages:y,setPendingPermissionRequest:j,setPendingBridgeActionId:v,setTyping:L,updateTaskState:S}){return{handleBridgeAction:l.useCallback(async(M,T)=>{if(!r)return;const K=Pe(T.data)||T.data,a=Pe(T.data)||T.text||T.data,N=wr(M),P=!N,D=P?-1:d(),B=`${crypto.randomUUID()}-user-action`;let A=!1,R=!1;v(M.id),y($=>$.map(b=>b.id===M.id?{...b,actionPending:!0}:b)),j($=>$&&$.id===M.id?{...$,actionPending:!0}:$);try{N&&(R=!0,y(b=>[...b,{id:B,role:"user",content:a,order:D,timestamp:new Date().toISOString()}]));const $=await h(r,K);C($.runId),A=!0,k(""),w(M.actionReplyCtx),L(!0),i(),n(),P?(S("permission_submitted","bridge-permission-submitted"),s("permission_continue"),j(null),y(b=>b.map(o=>o.id===M.id?jr(o):o))):(S("running","bridge-action-submitted"),s())}catch($){k($ instanceof Error?$.message:"Failed to send permission response."),R&&y(b=>b.filter(o=>o.id!==B)),S(P?"awaiting_permission":"error",P?"bridge-permission-submit-failed":"bridge-action-submit-failed"),L(!1),j(b=>b&&b.id===M.id?{...b,actionPending:!1}:b)}finally{v(null),y($=>$.map(b=>b.id===M.id?{...b,actionPending:!1,actions:A?b.actions||[]:b.actions}:b))}},[r,s,n,i,d,h,w,C,k,y,j,v,L,S,!0])}}function Xr(e){return e==="awaiting_permission"?"awaiting_permission":"idle"}function Yr(e,r){return r?"awaiting_permission":e?"awaiting_input":"idle"}function Gr(e,r){return r?"bridge-buttons-awaiting-permission":e?"bridge-buttons-awaiting-input":"bridge-buttons-idle"}function Qr(e){const r=e||"This agent",s=Qe();return s.permissionUnsupportedLabel.startsWith("This agent")?s.permissionUnsupportedLabel:`${r} ${s.permissionUnsupportedLabel.replace(/^This agent\s+/i,"")}`}function Zr(e){return e.type==="typing_stop"||e.type==="buttons"||e.type==="card"?!0:e.type==="reply"&&!ce(e.bridgeKind)}function qr({activeAgentType:e,activeBridgeSessionKey:r,activeRunId:s,armReplyTimeout:n,clearActionStatuses:i,clearReplyTimeout:d,finalizeTurnMessages:u,nextProgressMessageId:c,pendingTurnRef:h,progressSequenceByTurnRef:w,refreshThreadsForWorkspace:C,reserveAssistantMessageOrder:k,settlePreviewMessages:y,setBridgeError:j,setMessages:v,setPendingPermissionRequest:L,setTyping:S,taskStateRef:I,updateTaskState:z}){const M=At(e),T=l.useCallback(a=>{br(I.current)&&z("running",a)},[I,z]),K=l.useCallback(a=>{const N=cr(a.sessionKey);if(N&&Zr(a)&&C(N),!(!a.sessionKey||a.sessionKey!==r)&&sr({event:a,activeRunId:s,pendingTurn:h.current}))switch(a.type){case"preview_start":if(ve(a.bridgeStatus)){d(),S(!1),h.current=null,i(),z("awaiting_input","bridge-preview-awaiting-input"),L(null),j(""),v(o=>{const p=he(o,a.previewHandle,a.replyCtx),g=(p==null?void 0:p.id)||a.previewHandle||`${a.replyCtx||crypto.randomUUID()}-preview`,W=o.filter(O=>O.id!==g);return W.push({id:g,role:"assistant",content:a.content||"",kind:"progress",bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,order:(p==null?void 0:p.order)??k(a.sessionKey),timestamp:(p==null?void 0:p.timestamp)||new Date().toISOString(),turnKey:a.replyCtx,preview:!0,previewPlainText:M}),W});break}i(),S(!0),T("bridge-preview-start"),L(null),n(),j(""),v(o=>{const p=he(o,a.previewHandle,a.replyCtx),g=(p==null?void 0:p.id)||a.previewHandle||`${a.replyCtx||crypto.randomUUID()}-preview`,W=o.filter(O=>O.id!==g);return W.push({id:g,role:"assistant",content:a.content||"",kind:"progress",bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,order:(p==null?void 0:p.order)??k(a.sessionKey),timestamp:(p==null?void 0:p.timestamp)||new Date().toISOString(),turnKey:a.replyCtx,preview:!0,previewPlainText:M}),W});break;case"update_message":if(ve(a.bridgeStatus)){d(),S(!1),h.current=null,i(),z("awaiting_input","bridge-update-awaiting-input"),L(null),j(""),v(o=>{const p=he(o,a.previewHandle,a.replyCtx);return p?o.map(g=>g.id===p.id?{...g,content:a.content||"",bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,preview:!0,previewPlainText:M}:g):[...o,{id:a.previewHandle||`${a.replyCtx||crypto.randomUUID()}-preview`,role:"assistant",content:a.content||"",kind:"progress",bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,order:k(a.sessionKey),timestamp:new Date().toISOString(),turnKey:a.replyCtx,preview:!0,previewPlainText:M}]});break}i(),S(!0),T("bridge-update-message"),L(null),n(),j(""),v(o=>{const p=he(o,a.previewHandle,a.replyCtx);return p?o.map(g=>g.id===p.id?{...g,content:a.content||"",bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,preview:!0,previewPlainText:M}:g):[...o,{id:a.previewHandle||`${a.replyCtx||crypto.randomUUID()}-preview`,role:"assistant",content:a.content||"",kind:"progress",bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,order:k(a.sessionKey),timestamp:new Date().toISOString(),turnKey:a.replyCtx,preview:!0,previewPlainText:M}]});break;case"delete_message":v(o=>o.filter(p=>p.id!==a.previewHandle));break;case"typing_start":i(),S(!0),T("bridge-typing-start"),L(null),j(""),n();break;case"typing_stop":S(!1),d(),h.current=null,i(),z(Xr(I.current),I.current==="awaiting_permission"?"bridge-typing-stop-preserve-permission":"bridge-typing-stop"),y(a.replyCtx),u(a.replyCtx);break;case"reply":{const o=ve(a.bridgeStatus);i(),S(!o),o?(d(),h.current=null,z("awaiting_input","bridge-reply-awaiting-input")):(T("bridge-reply"),n()),L(null),j("");const p=a.messageId||c(a.replyCtx);!ce(a.bridgeKind)&&a.replyCtx&&delete w.current[a.replyCtx],j(""),v(g=>{const W=g.find(E=>E.id===p),O=new Date().toISOString();return W?g.map(E=>E.id===p?{...E,content:a.content||"",toolCall:a.toolCall,bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,kind:"progress",timestamp:O,turnKey:a.replyCtx}:E):[...g.filter(E=>!ar(E,a.content,a.replyCtx,a.bridgeKind)),{id:p,role:"assistant",content:a.content||"",toolCall:a.toolCall,bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,kind:"progress",order:k(a.sessionKey),timestamp:O,turnKey:a.replyCtx}]});break}case"buttons":d(),S(!1),h.current=null,j(""),i(),y(a.replyCtx);const P=`${a.replyCtx||crypto.randomUUID()}-buttons`,D=ur(a.buttonRows||a.buttons),B=mr(D),A=B&&_t(e),R=B&&!A?[]:D,$=R,b=B&&!A?Qr(e):void 0;v(o=>o.find(g=>g.id===P)?o.map(g=>g.id===P?{...g,content:a.content||g.content,actions:$,actionReplyCtx:a.replyCtx,actionPending:!1,actionMode:B?"permission":"generic",actionInteractive:A,bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,actionStatus:b}:g):[...o,{id:P,role:"assistant",content:a.content||"Permission required before continuing.",kind:"progress",bridgeKind:a.bridgeKind,bridgeStatus:a.bridgeStatus,order:k(a.sessionKey),timestamp:new Date().toISOString(),turnKey:a.replyCtx,actions:$,actionReplyCtx:a.replyCtx,actionPending:!1,actionMode:B?"permission":"generic",actionInteractive:A,actionStatus:b}]),L(o=>{if(!B||!A)return null;const p={id:P,role:"assistant",content:a.content||"Permission required before continuing.",actions:R,actionReplyCtx:a.replyCtx,actionPending:!1,actionMode:"permission",actionStatus:b};return yr(p)||o}),z(Yr(D.length>0,A),Gr(D.length>0,A));break;case"card":d(),S(!1),h.current=null,i(),z("idle","bridge-card"),L(null),y(a.replyCtx),u(a.replyCtx),j(""),v(o=>[...o,{id:`${a.replyCtx||crypto.randomUUID()}-card`,role:"assistant",content:"Interactive card received. Open the session in the standard Sessions view for full controls.",order:k(a.sessionKey),timestamp:new Date().toISOString()}]);break}},[M,e,r,s,n,i,d,u,c,h,w,C,k,y,j,v,L,S,T,z]);l.useEffect(()=>{const a=Rt(N=>{K(N)});return()=>{d(),a()}},[d,K])}function ea(e){qr({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:r}=Jr({activeAgentType:e.activeAgentType,activeBridgeSessionKey:e.activeBridgeSessionKey,activeRunId:e.activeRunId,activeThreadId:e.activeThreadId,armReplyTimeout:e.armReplyTimeout,clearActionStatuses:e.clearActionStatuses,clearReplyTimeout:e.clearReplyTimeout,reserveNextMessageOrder:e.reserveNextMessageOrder,runtimeProvider:e.runtimeProvider,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:r}}function ta({activeRunId:e,activeThreadId:r,activeBridgeSessionKey:s,availableKnowledgeBases:n,brandingNewThreadLabel:i,draft:d,loadActiveThread:u,selectedKnowledgeBaseIds:c,runtimeProvider:h,selectedProject:w,taskState:C,updateTaskState:k,applyLocalCoreThreadDetail:y,armReplyTimeout:j,clearReplyTimeout:v,refreshSessionsForProject:L,reserveNextMessageOrder:S,settlePreviewMessages:I,setActiveRunId:z,setActiveSessionId:M,setActiveSessionKey:T,setActiveSessionName:K,setBridgeError:a,setDraft:N,setMessages:P,setPendingPermissionRequest:D,setSending:B,setTyping:A,holdBlankComposerRef:R,lastSessionByProjectRef:$,nextMessageOrderRef:b,pendingTurnRef:o,progressSequenceByTurnRef:p,taskStateRef:g}){const O=l.useCallback(m=>{if(m.trim().startsWith("/"))return m;if(c.length===0)return je(m);const _=c.map(U=>n.find(x=>x.id===U)).filter(U=>!!U);return _.length===0?je(m):je(m,[["[Selected Knowledge Bases]",..._.map(U=>`- id: ${U.id} | name: ${U.name}`),"[/Selected Knowledge Bases]"].join(`
23
- `)])},[n,c]),E=l.useCallback(async()=>{if(!w)throw new Error("Choose a project first");if(r)return{id:r,sessionKey:s};const m=await Re(w,`${i} ${new Date().toLocaleTimeString()}`);return y(m),await L(w),{id:m.id,sessionKey:m.bridgeSessionKey||""}},[s,r,y,i,L,w,!0]),V=l.useCallback(async()=>{if(!d.trim()||!w)return;const m=d.trim(),_=C==="awaiting_input",U=_?m:O(m),x=S();N(""),B(!0);try{const f=await E();if(console.info("[desktop-chat] send",{runtimeProvider:h,selectedProject:w,threadId:f.id,sessionKey:f.sessionKey,selectedKnowledgeBaseIds:c}),o.current={sessionKey:f.sessionKey,userOrder:x,runId:_?e:void 0,supersededRunId:_?void 0:e},D(null),P(F=>[...F,{id:`${crypto.randomUUID()}-user`,role:"user",content:m,order:x,timestamp:new Date().toISOString()}]),k("running","send-started"),A(!0),a(""),f.id&&await Ce(f.id,c),j(),f.id){const F=_?await Ee(f.id,U):await jt(f.id,U);z(F.runId),o.current&&o.current.sessionKey===f.sessionKey&&o.current.userOrder===x&&(o.current={...o.current,runId:F.runId})}else throw new Error("Managed desktop thread transport is unavailable.")}catch(f){v(),o.current=null,I(),D(null),A(!1),k("error","send-failed"),a(f instanceof Error?f.message:"Failed to send the message.")}finally{B(!1)}},[e,j,O,v,d,E,C,o,S,c,w,z,a,N,P,D,B,I,A,k,!0]),H=l.useCallback(async()=>{if(!(!w||C==="stopping")){a(""),v(),I(),D(null),A(!1),k("stopping","stop-requested");try{if(e)await vt(e);else throw new Error("No active run to stop.");window.setTimeout(()=>{g.current==="stopping"&&k("idle","stop-timeout-complete")},1500)}catch(m){k("error","stop-failed"),a(m instanceof Error?m.message:"Failed to stop the current task.")}}},[e,v,a,D,I,A,w,C,g,k,!0]);return{handleSend:V,handleStopTask:H}}function ra({activeThreadId:e,brandingNewThreadLabel:r,deleteTarget:s,renameDraft:n,renameTarget:i,runtimeProvider:d,searchParams:u,selectedKnowledgeBaseIds:c,selectedProject:h,updateTaskState:w,applyLocalCoreThreadDetail:C,clearReplyTimeout:k,refreshSessionsForProject:y,setActiveRunId:j,setActiveSessionAgentType:v,setActiveSessionId:L,setActiveSessionKey:S,setActiveSessionName:I,setBridgeError:z,setDeleteTarget:M,setMessages:T,setPendingPermissionRequest:K,setPendingSessionAction:a,setRenameDraft:N,setRenameTarget:P,setSearchParams:D,setTyping:B,holdBlankComposerRef:A,nextMessageOrderRef:R,pendingTurnRef:$,progressSequenceByTurnRef:b}){const p=d==="local_core",g=l.useCallback(()=>{A.current=!0,L(""),S(""),I(""),v(""),j(""),T([]),K(null),B(!1),w("idle"),z(""),$.current=null,R.current=0,b.current={},k()},[k,A,R,$,b,j,v,L,S,I,z,T,K,B,w]),W=l.useCallback(async()=>{if(h){if(p){a("rename");try{const H=await Re(h,`${r} ${new Date().toLocaleTimeString()}`);if(c.length>0){const _=(await Ce(H.id,c)).knowledgeBaseIds;H.selectedKnowledgeBaseIds=_}else H.selectedKnowledgeBaseIds=[];await y(h),C(H);const m=new URLSearchParams(u);m.set("project",h),m.set("session",H.id),D(m,{replace:!0})}finally{a(null)}return}g()}},[C,r,y,g,u,c,h,a,D,p,!0]),O=l.useCallback((H,m)=>{P({project:H,id:m.id,name:m.name}),N(m.name)},[N,P]),E=l.useCallback(async()=>{if(i){a("rename");try{const H=n.trim();await Nt(i.id,H),i.id===e&&I(H),await y(i.project),P(null),N("")}finally{a(null)}}},[e,y,n,i,I,a,N,P,!0]),V=l.useCallback(async()=>{if(s){a("delete");try{await Ct(s.id),s.id===e&&g(),await y(s.project),M(null)}finally{a(null)}}},[e,s,y,g,M,a,!0]);return{handleCreateNew:W,handleDeleteSession:V,handleRenameSession:E,openRenameModal:O}}function aa({activeRunId:e,activeThreadId:r,activeBridgeSessionKey:s,availableKnowledgeBases:n,brandingNewThreadLabel:i,deleteTarget:d,draft:u,loadActiveThread:c,renameDraft:h,renameTarget:w,runtimeProvider:C,searchParams:k,selectedKnowledgeBaseIds:y,selectedWorkspaceId:j,taskState:v,updateTaskState:L,applyLocalCoreThreadDetail:S,armReplyTimeout:I,clearReplyTimeout:z,refreshSessionsForProject:M,reserveNextMessageOrder:T,settlePreviewMessages:K,setActiveRunId:a,setActiveSessionAgentType:N,setActiveSessionId:P,setActiveSessionKey:D,setActiveSessionName:B,setBridgeError:A,setDeleteTarget:R,setDraft:$,setMessages:b,setPendingPermissionRequest:o,setPendingSessionAction:p,setRenameDraft:g,setRenameTarget:W,setSearchParams:O,setSending:E,setTyping:V,holdBlankComposerRef:H,lastSessionByProjectRef:m,nextMessageOrderRef:_,pendingTurnRef:U,progressSequenceByTurnRef:x,taskStateRef:f}){const F={runtimeProvider:C,selectedProject:j,updateTaskState:L,applyLocalCoreThreadDetail:S,clearReplyTimeout:z,refreshSessionsForProject:M,setBridgeError:A,setMessages:b,setPendingPermissionRequest:o,setTyping:V,holdBlankComposerRef:H,nextMessageOrderRef:_,pendingTurnRef:U,progressSequenceByTurnRef:x,taskStateRef:f},Q={setActiveRunId:a,setActiveSessionAgentType:N,setActiveSessionId:P,setActiveSessionKey:D,setActiveSessionName:B},ee={setDeleteTarget:R,setPendingSessionAction:p,setRenameDraft:g,setRenameTarget:W},oe={holdBlankComposerRef:H,lastSessionByProjectRef:m,nextMessageOrderRef:_,pendingTurnRef:U,progressSequenceByTurnRef:x,taskStateRef:f},Y={setBridgeError:A,setMessages:b,setPendingPermissionRequest:o,setTyping:V},{handleSend:Z,handleStopTask:te}=ta({activeRunId:e,activeThreadId:r,activeBridgeSessionKey:s,availableKnowledgeBases:n,brandingNewThreadLabel:i,draft:u,loadActiveThread:c,selectedKnowledgeBaseIds:y,taskState:v,armReplyTimeout:I,reserveNextMessageOrder:T,settlePreviewMessages:K,setDraft:$,setSending:E,...F,...Q,...Y,...oe}),{handleCreateNew:re,handleDeleteSession:q,handleRenameSession:ae,openRenameModal:le}=ra({activeThreadId:r,brandingNewThreadLabel:i,deleteTarget:d,renameDraft:h,renameTarget:w,searchParams:k,selectedKnowledgeBaseIds:y,setSearchParams:O,...F,...Q,...ee,...Y});return{handleCreateNew:re,handleDeleteSession:q,handleRenameSession:ae,handleSend:Z,handleStopTask:te,openRenameModal:le}}function sa({activeThreadId:e,brandingReplyTimeoutLabel:r,setSelectedKnowledgeBaseIds:s,setActiveRunId:n,setActiveSessionAgentType:i,setActiveSessionId:d,setActiveSessionKey:u,setActiveSessionName:c,setBridgeError:h,setSelectedProject:w,setThreadGroups:C}){const[k,y]=l.useState([]),[j,v]=l.useState(null),[L,S]=l.useState(!1),[I,z]=l.useState("idle"),M=l.useRef(null),T=l.useRef("reply"),K=l.useRef({}),a=l.useRef(0),N=l.useRef(null),P=l.useRef(!1),D=l.useRef({}),B=l.useRef("idle"),A=l.useRef(""),R=l.useMemo(()=>Be(k),[k]),$=hr(I),b=fr(I),o=xr(I,L);l.useEffect(()=>{A.current=e},[e]);const p=l.useCallback((x,f="unspecified")=>{const F=B.current;B.current=x,z(x),F!==x&&console.info("[desktop-chat] task_state",{from:F,to:x,reason:f,threadId:A.current})},[]),g=l.useCallback(()=>{M.current&&(window.clearTimeout(M.current),M.current=null)},[]),W=l.useCallback((x="reply")=>{g(),T.current=x,M.current=window.setTimeout(()=>{S(!1),N.current=null,v(null),p("idle","reply-timeout"),h(x==="permission_continue"?r:"Agent did not respond in time. Check AgentDock runtime logs or adjust the model/provider.")},rr)},[r,g,h,p]),O=l.useCallback(()=>{y(x=>x.map(f=>f.actionStatus||f.actionPending?{...f,actionPending:!1,actionStatus:void 0}:f))},[]),E=l.useCallback(x=>{y(f=>nr(f,x))},[]),V=l.useCallback(()=>{const x=a.current;return a.current+=1,x},[]),H=l.useCallback(x=>{const f=N.current;if(f&&x&&f.sessionKey===x){const F=f.userOrder+1;a.current<F&&(a.current=F)}return V()},[V]),m=l.useCallback(x=>{const f=x||crypto.randomUUID(),F=(D.current[f]||0)+1;return D.current[f]=F,`${f}-progress-${F}`},[]),_=l.useCallback(x=>{y(f=>ir(f,x))},[]);return{applyLocalCoreThreadDetail:l.useCallback(x=>{K.current[x.workspaceId]=x.id,w(x.workspaceId),d(x.id),u(x.bridgeSessionKey||""),c(x.title),i(x.agentType||""),n(x.runId||""),s(x.selectedKnowledgeBaseIds||[]),v(x.pendingPermissionRequest||null),C(F=>pr(F,x.workspaceId,Je(x))),P.current=!1,D.current={};const f=or(x.messages||[]);N.current=null,a.current=f.reduce((F,Q)=>Math.max(F,Q.order+1),0),y(Be(f))},[n,i,d,u,c,s,w,C,v]),armReplyTimeout:W,clearActionStatuses:O,clearReplyTimeout:g,holdBlankComposerRef:P,lastSessionByProjectRef:K,messages:k,nextMessageOrderRef:a,pendingPermissionRequest:j,finalizeTurnMessages:_,nextProgressMessageId:m,pendingTurnRef:N,progressSequenceByTurnRef:D,renderedMessages:R,reserveAssistantMessageOrder:H,reserveNextMessageOrder:V,setMessages:y,setPendingPermissionRequest:v,settlePreviewMessages:E,setTyping:S,taskHint:o,taskInputLocked:b,taskRunning:$,taskState:I,taskStateRef:B,typing:L,updateTaskState:p}}function na(){const[e,r]=St(),[s,n]=l.useState([]),[i,d]=l.useState(""),[u,c]=l.useState([]),[h,w]=l.useState(""),[C,k]=l.useState(""),[y,j]=l.useState(""),[v,L]=l.useState(""),[S,I]=l.useState(""),[z,M]=l.useState(""),[T,K]=l.useState(""),[a,N]=l.useState([]),[P,D]=l.useState([]),[B,A]=l.useState(null),[R,$]=l.useState(""),[b,o]=l.useState(null),[p,g]=l.useState(null),[W,O]=l.useState(null),[E,V]=l.useState(!1),[H,m]=l.useState(""),_=l.useRef(0),U=l.useRef(null),x=e.get("project")||"",f=e.get("session")||"",F=Qe(),{applyLocalCoreThreadDetail:Q,armReplyTimeout:ee,clearActionStatuses:oe,clearReplyTimeout:Y,finalizeTurnMessages:Z,holdBlankComposerRef:te,lastSessionByProjectRef:re,nextMessageOrderRef:q,nextProgressMessageId:ae,pendingPermissionRequest:le,pendingTurnRef:G,progressSequenceByTurnRef:de,renderedMessages:ue,reserveAssistantMessageOrder:Ze,reserveNextMessageOrder:Se,setMessages:ge,setPendingPermissionRequest:we,settlePreviewMessages:Ke,setTyping:pe,taskHint:qe,taskInputLocked:et,taskRunning:tt,taskState:Le,taskStateRef:Me,typing:rt,updateTaskState:me}=sa({activeThreadId:h,brandingReplyTimeoutLabel:F.replyTimeoutLabel,setSelectedKnowledgeBaseIds:D,setActiveRunId:I,setActiveSessionAgentType:L,setActiveSessionId:w,setActiveSessionKey:k,setActiveSessionName:j,setBridgeError:m,setSelectedProject:d,setThreadGroups:c}),{loading:at,refreshRuntime:st,runtime:xe,runtimeProvider:se,serviceRunning:Ae,showSessionKey:nt,transportReady:it}=Hr({requestedProject:x,selectedProject:i,setSelectedProject:d,clearReplyTimeout:Y,updateTaskState:me,setTyping:pe}),{filteredThreadGroups:ot,loadActiveThread:_e,refreshThreadsForWorkspace:Ie}=Vr({activeThreadId:h,requestedWorkspaceId:x,requestedThreadId:f,runtimeDefaultWorkspaceId:xe==null?void 0:xe.settings.defaultProject,runtimeProvider:se,searchParams:e,selectedWorkspaceId:i,serviceRunning:Ae,workspaceIds:s,threadGroups:u,threadSearch:T,setSelectedKnowledgeBaseIds:D,setActiveRunId:I,setActiveSessionAgentType:L,setActiveSessionId:w,setActiveSessionKey:k,setActiveSessionName:j,setBridgeError:m,setMessages:ge,setPendingPermissionRequest:we,setProjects:n,setSearchParams:r,setSelectedProject:d,setThreadGroups:c,setTyping:pe,applyLocalCoreThreadDetail:Q,clearReplyTimeout:Y,updateTaskState:me,holdBlankComposerRef:te,lastSessionByProjectRef:re,nextMessageOrderRef:q,pendingTurnRef:G,progressSequenceByTurnRef:de});l.useEffect(()=>{var ne;(ne=U.current)==null||ne.scrollIntoView({behavior:"smooth"})},[ue,rt]);const ze=l.useCallback(async()=>{try{const ne=await Kt();N(ne.bases||[])}catch{N([])}},[se]);l.useEffect(()=>{ze()},[ze]);const lt=l.useCallback(async ne=>{const ke=Array.from(new Set(ne.map(ie=>String(ie||"").trim()).filter(Boolean))),ye=_.current+1;if(_.current=ye,D(ke),!(!i||!h))try{const ie=se==="local_core"?(await Ce(h,ke)).knowledgeBaseIds:await Et(i,h,ke);_.current===ye&&D(ie)}catch(ie){_.current===ye&&m(ie instanceof Error?ie.message:"Failed to save selected knowledge bases.")}},[h,se,i,m]),{handleBridgeAction:dt}=ea({activeAgentType:v,activeThreadId:h,activeRunId:S,activeBridgeSessionKey:C,runtimeProvider:se,selectedWorkspaceId:i,clearActionStatuses:oe,clearReplyTimeout:Y,finalizeTurnMessages:Z,nextProgressMessageId:ae,refreshThreadsForWorkspace:Ie,reserveAssistantMessageOrder:Ze,reserveNextMessageOrder:Se,settlePreviewMessages:Ke,setActiveRunId:I,setBridgeError:m,setMessages:ge,setPendingBridgeActionId:O,setTyping:pe,setPendingPermissionRequest:we,updateTaskState:me,armReplyTimeout:ee,pendingTurnRef:G,progressSequenceByTurnRef:de,sendAction:Ee,taskStateRef:Me}),{handleCreateNew:ct,handleDeleteSession:ut,handleRenameSession:pt,handleSend:mt,handleStopTask:xt,openRenameModal:ht}=aa({activeRunId:S,activeThreadId:h,activeBridgeSessionKey:C,availableKnowledgeBases:a,brandingNewThreadLabel:F.newThreadLabel,deleteTarget:b,draft:z,loadActiveThread:_e,renameDraft:R,renameTarget:B,runtimeProvider:se,searchParams:e,selectedKnowledgeBaseIds:P,selectedWorkspaceId:i,taskState:Le,updateTaskState:me,applyLocalCoreThreadDetail:Q,armReplyTimeout:ee,clearReplyTimeout:Y,refreshSessionsForProject:Ie,reserveNextMessageOrder:Se,settlePreviewMessages:Ke,setActiveRunId:I,setActiveSessionAgentType:L,setActiveSessionId:w,setActiveSessionKey:k,setActiveSessionName:j,setBridgeError:m,setDeleteTarget:o,setDraft:M,setMessages:ge,setPendingPermissionRequest:we,setPendingSessionAction:g,setRenameDraft:$,setRenameTarget:A,setSearchParams:r,setSending:V,setTyping:pe,holdBlankComposerRef:te,lastSessionByProjectRef:re,nextMessageOrderRef:q,pendingTurnRef:G,progressSequenceByTurnRef:de,taskStateRef:Me});return{activeRunId:S,activeSessionId:h,activeSessionKey:C,activeSessionName:y,bridgeError:H,branding:F,deleteTarget:b,draft:z,endRef:U,filteredSessionGroups:ot,handleBridgeAction:dt,handleCreateNew:ct,handleDeleteSession:ut,handleRenameSession:pt,handleSend:mt,handleStopTask:xt,availableKnowledgeBases:a,loadActiveSession:_e,loading:at,openRenameModal:ht,pendingBridgeActionId:W,pendingPermissionRequest:le,pendingSessionAction:p,projects:s,refreshRuntime:st,renameDraft:R,renameTarget:B,renderedMessages:ue,runtime:xe,sending:E,selectedKnowledgeBaseIds:P,serviceRunning:Ae,sessionSearch:T,selectedProject:i,setDeleteTarget:o,setDraft:M,setSelectedKnowledgeBaseIds:lt,setRenameDraft:$,setRenameTarget:A,setSelectedProject:d,setSessionSearch:K,showSessionKey:nt,taskHint:qe,taskInputLocked:et,taskRunning:tt,taskState:Le,transportReady:it}}function va(){const[e,r]=l.useState(!1),{activeRunId:s,activeSessionId:n,activeSessionKey:i,activeSessionName:d,bridgeError:u,branding:c,deleteTarget:h,draft:w,endRef:C,filteredSessionGroups:k,handleBridgeAction:y,handleCreateNew:j,handleDeleteSession:v,handleRenameSession:L,handleSend:S,handleStopTask:I,availableKnowledgeBases:z,loadActiveSession:M,loading:T,openRenameModal:K,pendingBridgeActionId:a,pendingPermissionRequest:N,pendingSessionAction:P,projects:D,refreshRuntime:B,renameDraft:A,renameTarget:R,renderedMessages:$,runtime:b,sending:o,selectedKnowledgeBaseIds:p,serviceRunning:g,sessionSearch:W,selectedProject:O,setDeleteTarget:E,setDraft:V,setSelectedKnowledgeBaseIds:H,setRenameDraft:m,setRenameTarget:_,setSelectedProject:U,setSessionSearch:x,showSessionKey:f,taskHint:F,taskInputLocked:Q,taskRunning:ee,taskState:oe,transportReady:Y}=na(),Z=l.useMemo(()=>_r(k,O),[k,O]),te=l.useMemo(()=>Ir(D,O),[D,O]),re=l.useMemo(()=>zr(Z),[Z]),q=l.useMemo(()=>Ge(p,z),[z,p]),ae=Tr(N),le=(b==null?void 0:b.phase)==="starting";return T?t.jsx("div",{className:"flex h-64 items-center justify-center text-sm text-slate-500 animate-pulse",children:"正在加载桌面对话…"}):t.jsxs(t.Fragment,{children:[t.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:t.jsxs("div",{className:"grid h-full min-h-0 grid-cols-1 md:grid-cols-[288px_minmax(0,1fr)]",children:[t.jsx(Rr,{activeSessionId:n,branding:c,filteredSessionGroups:Z,hasVisibleSessions:re,isRuntimeStarting:le,loading:T,mobileSessionsOpen:e,projects:D,runtime:b,selectedProject:O,serviceRunning:g,sessionSearch:W,showSessionKey:f,visibleProjects:te,onCreateNew:()=>void j(),onLoadActiveSession:M,onOpenRenameModal:K,onRefreshRuntime:()=>void B(),setDeleteTarget:E,setMobileSessionsOpen:r,setSelectedProject:U,setSessionSearch:x}),t.jsxs("section",{className:"flex min-h-0 flex-col bg-white dark:bg-[#0b0d10]",children:[t.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:[t.jsxs("div",{className:"flex items-start gap-3",children:[t.jsx(J,{size:"sm",variant:"secondary",onClick:()=>r(!0),className:"mt-0.5 h-9 w-9 shrink-0 rounded-xl px-0 md:hidden","aria-label":"Open sessions",children:t.jsx(qt,{size:16})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("p",{className:"text-[11px] font-medium tracking-[0.16em] text-slate-400 dark:text-slate-500",children:"当前会话"}),t.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:d||c.activeConversationFallback})]})]}),t.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2 text-xs text-slate-500 dark:text-slate-400",children:[O?t.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:O}):null,t.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:dr(b==null?void 0:b.phase)}),Y?t.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:[t.jsx(fe,{size:6,className:"fill-current"})," ",c.runtimeOnlineLabel]}):t.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:[t.jsx(Wt,{size:12})," ",c.runtimeOfflineLabel]}),f&&i?t.jsx("span",{className:"truncate text-[11px] text-slate-400 dark:text-slate-500",children:i}):null]})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto px-3 py-4 [scrollbar-gutter:stable] sm:px-6 sm:py-5",children:[$.length===0?t.jsx("div",{className:"flex h-full min-h-[18rem] items-center justify-center",children:t.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:[t.jsx("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-primary/10 text-primary",children:t.jsx(We,{size:22})}),t.jsx("h3",{className:"mt-4 text-lg font-semibold text-slate-900 dark:text-white sm:text-xl",children:"开始一段新的桌面对话"}),t.jsx("p",{className:"mx-auto mt-3 max-w-xl text-sm leading-6 text-slate-500 dark:text-slate-400",children:O?`当前项目是 ${O}。直接提问即可创建会话并开始对话。`:"先在左侧选择项目,然后直接输入你的问题。"}),t.jsx("div",{className:"mt-4 flex flex-wrap justify-center gap-2",children:q.length>0?q.map(G=>t.jsx("span",{className:"rounded-full bg-primary/10 px-3 py-1 text-xs text-primary dark:bg-primary/10 dark:text-primary",children:G.name},G.id)):t.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:"当前未限制知识库范围"})})]})}):t.jsx("div",{className:"mx-auto w-full max-w-4xl space-y-5",children:$.map(G=>Pr(G,ae)?t.jsx(Or,{message:G,pendingBridgeActionId:a,onAction:(de,ue)=>void y(de,ue)},G.id):null)}),F?t.jsxs("div",{className:"mt-5 flex items-center gap-2 text-sm text-slate-400","data-testid":"desktop-chat-task-hint",children:[t.jsx(fe,{size:8,className:"fill-current animate-pulse"})," ",F]}):null,u?t.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:u}):null,t.jsx("div",{ref:C})]}),t.jsx(Er,{activeRunId:s,activeSessionKey:i,availableKnowledgeBases:z,branding:c,composerPermissionCard:ae,draft:w,pendingBridgeActionId:a,selectedKnowledgeBaseIds:p,selectedProject:O,sending:o,serviceRunning:g,taskInputLocked:Q,taskRunning:ee,taskState:oe,transportReady:Y,onBridgeAction:y,onSend:S,onStopTask:I,setDraft:V,setSelectedKnowledgeBaseIds:H})]})]})}),t.jsx(Fr,{deleteTarget:h,pendingSessionAction:P,renameDraft:A,renameTarget:R,onDeleteSession:v,onRenameSession:L,setDeleteTarget:E,setRenameDraft:m,setRenameTarget:_})]})}export{va as default};
@@ -1,11 +0,0 @@
1
- pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
2
- Theme: GitHub
3
- Description: Light theme as seen on github.com
4
- Author: github.com
5
- Maintainer: @Hirse
6
- Updated: 2021-05-15
7
-
8
- Outdated base version: https://github.com/primer/github-syntax-light
9
- Current colors taken from GitHub's CSS
10
- */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
11
- */*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 240 20% 97%;--foreground: 240 3% 12%;--card: 0 0% 100%;--card-foreground: 240 3% 12%;--popover: 0 0% 100%;--popover-foreground: 240 3% 12%;--primary: 211 100% 50%;--primary-foreground: 0 0% 100%;--secondary: 240 11% 93%;--secondary-foreground: 240 4% 20%;--muted: 240 10% 94%;--muted-foreground: 240 4% 44%;--accent: 211 100% 50%;--accent-foreground: 0 0% 100%;--accent-dim: 211 92% 43%;--destructive: 0 72% 51%;--destructive-foreground: 0 0% 100%;--border: 240 6% 85%;--input: 240 6% 85%;--ring: 211 100% 50%;--radius: .625rem}.dark{--background: 240 4% 9%;--foreground: 240 20% 96%;--card: 240 4% 12%;--card-foreground: 240 20% 96%;--popover: 240 4% 12%;--popover-foreground: 240 20% 96%;--primary: 211 100% 60%;--primary-foreground: 0 0% 100%;--secondary: 240 4% 16%;--secondary-foreground: 240 20% 96%;--muted: 240 4% 16%;--muted-foreground: 240 5% 68%;--accent: 211 100% 60%;--accent-foreground: 0 0% 100%;--accent-dim: 211 90% 55%;--destructive: 0 63% 31%;--destructive-foreground: 0 0% 98%;--border: 240 4% 22%;--input: 240 4% 22%;--ring: 211 100% 60%}*{border-color:hsl(var(--border))}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Inter,Segoe UI,sans-serif;background:radial-gradient(circle at 16% 0%,rgba(0,122,255,.05),transparent 30%),linear-gradient(180deg,#fffffffa,#f5f5f7fa);color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dark body{background:radial-gradient(circle at 16% 0%,rgba(10,132,255,.08),transparent 32%),linear-gradient(180deg,#121214fa,#0a0a0cfa)}.platform-windows.dark body{background:hsl(var(--background))}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media(min-width:1400px){.container{max-width:1400px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;border-radius:.3125rem;padding-top:.1428571em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.app-surface{border-radius:20px;border-width:1px;border-color:#00000014;background-color:#fffc;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.platform-windows .app-surface,.platform-windows.dark .app-surface{background-color:hsl(var(--card))}.app-surface:is(.dark *){border-color:#ffffff12;background-color:#ffffff0e}.app-panel{border-radius:18px;border-width:1px;border-color:#00000014;--tw-bg-opacity: 1;background-color:rgb(251 251 253 / var(--tw-bg-opacity, 1));--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.app-panel:is(.dark *){border-color:#ffffff12;--tw-bg-opacity: 1;background-color:rgb(17 18 20 / var(--tw-bg-opacity, 1))}.app-list-row{border-radius:16px;border-width:1px;border-color:#00000014;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:.75rem 1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.app-list-row:hover{border-color:#0000001f;--tw-bg-opacity: 1;background-color:rgb(252 252 253 / var(--tw-bg-opacity, 1))}.app-list-row:is(.dark *){border-color:#ffffff12;background-color:#ffffff09}.app-list-row:hover:is(.dark *){border-color:#ffffff1c;background-color:#ffffff0f}.app-list-row-active{border-color:hsl(var(--primary) / .25);background-color:hsl(var(--primary) / .05);--tw-shadow: inset 2px 0 0 0 rgba(0,102,204,.92);--tw-shadow-colored: inset 2px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.app-list-row-active:is(.dark *){border-color:hsl(var(--primary) / .25);background-color:hsl(var(--primary) / .1)}.app-toolbar{border-radius:18px;border-width:1px;border-color:#00000014;--tw-bg-opacity: 1;background-color:rgb(251 251 253 / var(--tw-bg-opacity, 1));padding:.75rem 1rem}.platform-windows.dark .app-toolbar{background-color:hsl(var(--card))}.app-toolbar:is(.dark *){border-color:#ffffff12;background-color:#ffffff0a}.app-icon-button{height:2.25rem;width:2.25rem;border-radius:9999px;padding-left:0;padding-right:0}.app-segment{flex-shrink:0;border-radius:9999px;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.app-segment-active{background-color:hsl(var(--primary));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.app-segment-idle{background-color:#0000000b;color:hsl(var(--muted-foreground))}.platform-windows.dark .app-segment-idle{background-color:hsl(var(--card))}.app-segment-idle:hover{background-color:#00000012;color:hsl(var(--foreground))}.app-segment-idle:is(.dark *){background-color:#ffffff0e}.app-segment-idle:hover:is(.dark *){background-color:#ffffff17}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.bottom-full{bottom:100%}.left-0{left:0}.left-2{left:.5rem}.left-3{left:.75rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.order-3{order:3}.col-span-2{grid-column:span 2 / span 2}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-0\.5{margin-top:-.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[100dvh\]{height:100dvh}.h-\[5\.25rem\]{height:5.25rem}.h-\[calc\(100vh-8rem\)\]{height:calc(100vh - 8rem)}.h-full{height:100%}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.max-h-96{max-height:24rem}.max-h-\[65vh\]{max-height:65vh}.max-h-\[70dvh\]{max-height:70dvh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.min-h-0{min-height:0px}.min-h-20{min-height:5rem}.min-h-64{min-height:16rem}.min-h-\[104px\]{min-height:104px}.min-h-\[112px\]{min-height:112px}.min-h-\[18rem\]{min-height:18rem}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-\[32rem\]{min-height:32rem}.min-h-\[60px\]{min-height:60px}.min-h-\[88px\]{min-height:88px}.min-h-\[calc\(100vh-8rem\)\]{min-height:calc(100vh - 8rem)}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-3\.5{width:.875rem}.w-36{width:9rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-11{min-width:2.75rem}.min-w-48{min-width:12rem}.min-w-\[16rem\]{min-width:16rem}.min-w-\[260px\]{min-width:260px}.min-w-\[4\.5rem\]{min-width:4.5rem}.min-w-\[760px\]{min-width:760px}.min-w-\[8rem\]{min-width:8rem}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[4\.25rem\]{max-width:4.25rem}.max-w-\[70\%\]{max-width:70%}.max-w-\[78\%\]{max-width:78%}.max-w-\[calc\(100\%-2\.25rem\)\]{max-width:calc(100% - 2.25rem)}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-fade-in{animation:fadeIn .4s ease}@keyframes floatIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-float-in{animation:floatIn .4s ease}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[9rem_5rem_minmax\(0\,1fr\)\]{grid-template-columns:9rem 5rem minmax(0,1fr)}.grid-cols-\[minmax\(0\,1\.8fr\)_120px_120px_160px_60px\]{grid-template-columns:minmax(0,1.8fr) 120px 120px 160px 60px}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-black\/\[0\.08\]>:not([hidden])~:not([hidden]){border-color:#00000014}.divide-border>:not([hidden])~:not([hidden]){border-color:hsl(var(--border))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[16px\]{border-radius:16px}.rounded-\[18px\]{border-radius:18px}.rounded-\[20px\]{border-radius:20px}.rounded-\[22px\]{border-radius:22px}.rounded-\[24px\]{border-radius:24px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-bl-lg{border-bottom-left-radius:var(--radius)}.rounded-bl-sm{border-bottom-left-radius:calc(var(--radius) - 4px)}.rounded-br-lg{border-bottom-right-radius:var(--radius)}.rounded-br-sm{border-bottom-right-radius:calc(var(--radius) - 4px)}.rounded-tl-lg{border-top-left-radius:var(--radius)}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-200\/80{border-color:#fde68acc}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-400\/20{border-color:#fbbf2433}.border-amber-500\/20{border-color:#f59e0b33}.border-black\/10{border-color:#0000001a}.border-black\/20{border-color:#0003}.border-black\/\[0\.08\]{border-color:#00000014}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-destructive\/20{border-color:hsl(var(--destructive) / .2)}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-200\/60{border-color:#e5e7eb99}.border-gray-200\/70{border-color:#e5e7ebb3}.border-gray-200\/80{border-color:#e5e7ebcc}.border-gray-300\/90{border-color:#d1d5dbe6}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/25{border-color:hsl(var(--primary) / .25)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/45{border-color:hsl(var(--primary) / .45)}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-500\/20{border-color:#ef444433}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.border-slate-200\/80{border-color:#e2e8f0cc}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-violet-200{--tw-border-opacity: 1;border-color:rgb(221 214 254 / var(--tw-border-opacity, 1))}.border-white\/55{border-color:#ffffff8c}.bg-\[\#f0f0f0\]{--tw-bg-opacity: 1;background-color:rgb(240 240 240 / var(--tw-bg-opacity, 1))}.bg-\[\#f5f5f7\]{--tw-bg-opacity: 1;background-color:rgb(245 245 247 / var(--tw-bg-opacity, 1))}.bg-\[\#fafafa\]{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.bg-\[\#fbfbfd\]{--tw-bg-opacity: 1;background-color:rgb(251 251 253 / var(--tw-bg-opacity, 1))}.bg-\[\#fff8eb\]{--tw-bg-opacity: 1;background-color:rgb(255 248 235 / var(--tw-bg-opacity, 1))}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/45{background-color:hsl(var(--background) / .45)}.bg-background\/60{background-color:hsl(var(--background) / .6)}.bg-black\/50{background-color:#00000080}.bg-black\/\[0\.035\]{background-color:#00000009}.bg-black\/\[0\.03\]{background-color:#00000008}.bg-black\/\[0\.045\]{background-color:#0000000b}.bg-black\/\[0\.05\]{background-color:#0000000d}.bg-black\/\[0\.07\]{background-color:#00000012}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-card\/70{background-color:hsl(var(--card) / .7)}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-emerald-500\/10{background-color:#10b9811a}.bg-foreground\/15{background-color:hsl(var(--foreground) / .15)}.bg-fuchsia-500{--tw-bg-opacity: 1;background-color:rgb(217 70 239 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-200\/80{background-color:#e5e7ebcc}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-50\/80{background-color:#f9fafbcc}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/15{background-color:hsl(var(--primary) / .15)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-50\/80{background-color:#fef2f2cc}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet-50{--tw-bg-opacity: 1;background-color:rgb(245 243 255 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/70{background-color:#ffffffb3}.bg-white\/90{background-color:#ffffffe6}.bg-\[linear-gradient\(180deg\,rgba\(255\,255\,255\,0\.55\)\,rgba\(255\,255\,255\,0\.18\)_48\%\,rgba\(255\,255\,255\,0\.08\)\)\]{background-image:linear-gradient(180deg,#ffffff8c,#ffffff2e 48%,#ffffff14)}.bg-\[radial-gradient\(circle_at_top\,hsl\(var\(--secondary\)\)_0\,hsl\(var\(--background\)\)_42\%\,hsl\(var\(--background\)\)_78\%\)\]{background-image:radial-gradient(circle at top,hsl(var(--secondary)) 0,hsl(var(--background)) 42%,hsl(var(--background)) 78%)}.fill-current{fill:currentColor}.fill-primary{fill:hsl(var(--primary))}.stroke-black\/10{stroke:#0000001a}.stroke-black\/70{stroke:#000000b3}.stroke-white{stroke:#fff}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-14{padding-bottom:3.5rem}.pb-16{padding-bottom:4rem}.pb-24{padding-bottom:6rem}.pb-4{padding-bottom:1rem}.pb-\[max\(env\(safe-area-inset-bottom\)\,0\.5rem\)\]{padding-bottom:max(env(safe-area-inset-bottom),.5rem)}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-8{padding-right:2rem}.pr-\[4\.5rem\]{padding-right:4.5rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.875em\]{font-size:.875em}.text-\[1\.4rem\]{font-size:1.4rem}.text-\[1\.65rem\]{font-size:1.65rem}.text-\[1\.75rem\]{font-size:1.75rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-\[1\.6\]{line-height:1.6}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-\[0\.14em\]{letter-spacing:.14em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-700\/80{color:#b45309cc}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-amber-950{--tw-text-opacity: 1;color:rgb(69 26 3 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-inherit{color:inherit}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/45{color:hsl(var(--muted-foreground) / .45)}.text-muted-foreground\/75{color:hsl(var(--muted-foreground) / .75)}.text-muted-foreground\/80{color:hsl(var(--muted-foreground) / .8)}.text-pink-600{--tw-text-opacity: 1;color:rgb(219 39 119 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-violet-700{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_-12px_32px_rgba\(15\,23\,42\,0\.10\)\]{--tw-shadow: 0 -12px 32px rgba(15,23,42,.1);--tw-shadow-colored: 0 -12px 32px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_20px_-6px_hsl\(var\(--primary\)\/0\.55\)\]{--tw-shadow: 0 0 20px -6px hsl(var(--primary)/.55);--tw-shadow-colored: 0 0 20px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_14px_34px_rgba\(0\,122\,255\,0\.12\)\]{--tw-shadow: 0 14px 34px rgba(0,122,255,.12);--tw-shadow-colored: 0 14px 34px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_18px_40px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow: 0 18px 40px rgba(0,0,0,.12);--tw-shadow-colored: 0 18px 40px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_1px_1px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow: 0 1px 1px rgba(0,0,0,.04);--tw-shadow-colored: 0 1px 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[inset_-1px_0_0_rgba\(255\,255\,255\,0\.36\)\]{--tw-shadow: inset -1px 0 0 rgba(255,255,255,.36);--tw-shadow-colored: inset -1px 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[inset_2px_0_0_0_rgba\(0\,102\,204\,0\.92\)\]{--tw-shadow: inset 2px 0 0 0 rgba(0,102,204,.92);--tw-shadow-colored: inset 2px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-primary\/10{--tw-shadow-color: hsl(var(--primary) / .1);--tw-shadow: var(--tw-shadow-colored) }.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary\/25{--tw-ring-color: hsl(var(--primary) / .25) }.drop-shadow-\[0_14px_28px_rgba\(0\,122\,255\,0\.22\)\]{--tw-drop-shadow: drop-shadow(0 14px 28px rgba(0,122,255,.22));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-2xl{--tw-backdrop-blur: blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\[2px\]{--tw-backdrop-blur: blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\[34px\]{--tw-backdrop-blur: blur(34px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[-webkit-app-region\:drag\]{-webkit-app-region:drag}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[stop-color\:\#E5E5EA\]{stop-color:#e5e5ea}.\[stop-color\:\#F5F5F7\]{stop-color:#f5f5f7}.\[stop-color\:\#FFFFFF\]{stop-color:#fff}.platform-windows [class*=backdrop-blur],.platform-windows [class*="supports-[backdrop-filter]"]{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.platform-windows .bg-background\/60,.platform-windows .bg-background\/45,.platform-windows .bg-background\/72{background-color:hsl(var(--background))!important}.platform-windows .bg-white\/18,.platform-windows .bg-white\/24,.platform-windows .bg-white\/62,.platform-windows .bg-white\/76,.platform-windows .bg-white\/80,.platform-windows .bg-white\/88,.platform-windows .bg-white\/90,.platform-windows.dark .dark\:bg-\[\#1c1c1e\]\/26,.platform-windows.dark .dark\:bg-\[\#1c1c1e\]\/34,.platform-windows.dark .dark\:bg-\[\#111113\]\/88,.platform-windows.dark .dark\:bg-\[\#2c2c2e\]\/90,.platform-windows.dark .dark\:bg-white\/\[0\.04\],.platform-windows.dark .dark\:bg-white\/\[0\.055\],.platform-windows.dark .dark\:bg-white\/\[0\.06\]{background-color:hsl(var(--card))!important}.platform-windows .animate-fade-in,.platform-windows .animate-float-in,.platform-windows .animate-slide-up{animation:none!important}.platform-windows .transition-all{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow!important;transition-duration:.12s!important}.platform-windows .duration-300{transition-duration:.15s!important}pre code.hljs{background:transparent;padding:0}.chat-user-glass{border:1px solid rgba(0,102,204,.16);background:linear-gradient(180deg,#0071e324,#06c3);box-shadow:inset 0 1px #ffffff6b}.chat-user-glass:before{content:none}.dark .chat-user-glass{border-color:#2997ff2e;background:linear-gradient(180deg,#2997ff38,#0066cc3d);box-shadow:inset 0 1px #ffffff29}.dark .chat-user-glass:before{content:none}.dark .hljs{color:#e6edf3}.dark .hljs-keyword,.dark .hljs-selector-tag{color:#ff7b72}.dark .hljs-string,.dark .hljs-attr{color:#a5d6ff}.dark .hljs-comment,.dark .hljs-quote{color:#8b949e;font-style:italic}.dark .hljs-number,.dark .hljs-literal{color:#79c0ff}.dark .hljs-title,.dark .hljs-title\.class_,.dark .hljs-title\.function_{color:#d2a8ff}.dark .hljs-built_in,.dark .hljs-type,.dark .hljs-params,.dark .hljs-variable,.dark .hljs-template-variable{color:#ffa657}.dark .hljs-addition{color:#aff5b4;background-color:#2ea04326}.dark .hljs-deletion{color:#ffdcd7;background-color:#f8514926}.dark .hljs-meta{color:#79c0ff}.dark .hljs-selector-class,.dark .hljs-selector-id{color:#7ee787}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#8080804d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#80808080}.dark\:prose-invert:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders) }.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-slate-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.placeholder\:text-slate-400::placeholder{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.focus-within\:opacity-100:focus-within{opacity:1}.hover\:border-black\/\[0\.12\]:hover{border-color:#0000001f}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-primary\/25:hover{border-color:hsl(var(--primary) / .25)}.hover\:border-slate-200:hover{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.hover\:border-slate-300:hover{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.hover\:bg-\[\#0071e3\]:hover{--tw-bg-opacity: 1;background-color:rgb(0 113 227 / var(--tw-bg-opacity, 1))}.hover\:bg-\[\#fafafa\]:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.hover\:bg-\[\#fcfcfd\]:hover{--tw-bg-opacity: 1;background-color:rgb(252 252 253 / var(--tw-bg-opacity, 1))}.hover\:bg-accent-dim:hover{background-color:hsl(var(--accent-dim))}.hover\:bg-accent\/10:hover{background-color:hsl(var(--accent) / .1)}.hover\:bg-amber-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.hover\:bg-black\/\[0\.025\]:hover{background-color:#00000006}.hover\:bg-black\/\[0\.04\]:hover{background-color:#0000000a}.hover\:bg-black\/\[0\.05\]:hover{background-color:#0000000d}.hover\:bg-black\/\[0\.08\]:hover{background-color:#00000014}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-gray-100\/80:hover{background-color:#f3f4f6cc}.hover\:bg-gray-100\/90:hover{background-color:#f3f4f6e6}.hover\:bg-gray-200\/70:hover{background-color:#e5e7ebb3}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-slate-100:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-100\/70:hover{background-color:#f1f5f9b3}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-slate-700:hover{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.hover\:text-slate-900:hover{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_10px_26px_rgba\(0\,0\,0\,0\.07\)\]:hover{--tw-shadow: 0 10px 26px rgba(0,0,0,.07);--tw-shadow-colored: 0 10px 26px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-primary\/40:focus{border-color:hsl(var(--primary) / .4)}.focus\:bg-accent\/10:focus{background-color:hsl(var(--accent) / .1)}.focus\:text-foreground:focus{color:hsl(var(--foreground))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-primary\/10:focus{--tw-ring-color: hsl(var(--primary) / .1) }.focus\:ring-primary\/15:focus{--tw-ring-color: hsl(var(--primary) / .15) }.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring)) }.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px }.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-primary\/15:focus-visible{--tw-ring-color: hsl(var(--primary) / .15) }.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring)) }.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px }.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background)) }.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-slate-300:disabled{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.disabled\:text-white:disabled{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.disabled\:opacity-100:disabled{opacity:1}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:text-foreground{color:hsl(var(--foreground))}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}@keyframes fadeIn{0%{opacity:0;transform:scale(.96) translateY(20px)}to{opacity:1;transform:scale(1)}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fadeIn .4s ease}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.prose-headings\:font-semibold :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:600}.prose-headings\:tracking-tight :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){letter-spacing:-.025em}.prose-h1\:mb-3 :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:.75rem}.prose-h1\:mt-5 :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:1.25rem}.prose-h1\:border-b :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){border-bottom-width:1px}.prose-h1\:border-gray-200 :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.prose-h1\:pb-1\.5 :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){padding-bottom:.375rem}.prose-h1\:text-xl :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:1.25rem;line-height:1.75rem}.prose-h2\:mb-2 :is(:where(h2):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:.5rem}.prose-h2\:mt-5 :is(:where(h2):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:1.25rem}.prose-h2\:text-lg :is(:where(h2):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:1.125rem;line-height:1.75rem}.prose-h3\:mb-2 :is(:where(h3):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:.5rem}.prose-h3\:mt-4 :is(:where(h3):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:1rem}.prose-h3\:text-base :is(:where(h3):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:1rem;line-height:1.5rem}.prose-p\:my-2\.5 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:.625rem;margin-bottom:.625rem}.prose-p\:leading-relaxed :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){line-height:1.625}.prose-a\:text-accent :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){color:hsl(var(--accent))}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))):hover{text-decoration-line:underline}.prose-blockquote\:my-3 :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:.75rem;margin-bottom:.75rem}.prose-blockquote\:rounded-r-lg :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.prose-blockquote\:border-l-\[3px\] :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){border-left-width:3px}.prose-blockquote\:border-accent\/40 :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){border-color:hsl(var(--accent) / .4)}.prose-blockquote\:bg-accent\/\[0\.03\] :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:hsl(var(--accent) / .03)}.prose-blockquote\:px-4 :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){padding-left:1rem;padding-right:1rem}.prose-blockquote\:py-0\.5 :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){padding-top:.125rem;padding-bottom:.125rem}.prose-blockquote\:not-italic :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){font-style:normal}.prose-blockquote\:text-gray-600 :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.prose-strong\:font-semibold :is(:where(strong):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:600}.prose-strong\:text-gray-900 :is(:where(strong):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.prose-ol\:my-2 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:.5rem;margin-bottom:.5rem}.prose-ul\:my-2 :is(:where(ul):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:.5rem;margin-bottom:.5rem}.prose-li\:my-0\.5 :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:.125rem;margin-bottom:.125rem}.prose-table\:text-sm :is(:where(table):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:.875rem;line-height:1.25rem}.prose-th\:border-gray-200 :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.prose-th\:bg-gray-50 :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.prose-th\:px-3 :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){padding-left:.75rem;padding-right:.75rem}.prose-th\:py-2 :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){padding-top:.5rem;padding-bottom:.5rem}.prose-td\:border-gray-200 :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.prose-td\:px-3 :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){padding-left:.75rem;padding-right:.75rem}.prose-td\:py-2 :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){padding-top:.5rem;padding-bottom:.5rem}.prose-img\:rounded-lg :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:var(--radius)}.prose-img\:shadow-sm :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.prose-hr\:my-5 :is(:where(hr):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:1.25rem;margin-bottom:1.25rem}.prose-hr\:border-gray-200 :is(:where(hr):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.dark\:divide-white\/\[0\.07\]:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#ffffff12}.dark\:border-amber-400\/15:is(.dark *){border-color:#fbbf2426}.dark\:border-amber-400\/20:is(.dark *){border-color:#fbbf2433}.dark\:border-amber-400\/30:is(.dark *){border-color:#fbbf244d}.dark\:border-amber-900\/30:is(.dark *){border-color:#78350f4d}.dark\:border-blue-400\/20:is(.dark *){border-color:#60a5fa33}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-700\/40:is(.dark *){border-color:#37415166}.dark\:border-gray-700\/60:is(.dark *){border-color:#37415199}.dark\:border-primary\/25:is(.dark *){border-color:hsl(var(--primary) / .25)}.dark\:border-primary\/30:is(.dark *){border-color:hsl(var(--primary) / .3)}.dark\:border-primary\/35:is(.dark *){border-color:hsl(var(--primary) / .35)}.dark\:border-red-400\/20:is(.dark *){border-color:#f8717133}.dark\:border-red-900\/30:is(.dark *){border-color:#7f1d1d4d}.dark\:border-red-900\/40:is(.dark *){border-color:#7f1d1d66}.dark\:border-violet-900\/30:is(.dark *){border-color:#4c1d954d}.dark\:border-white\/20:is(.dark *){border-color:#fff3}.dark\:border-white\/\[0\.06\]:is(.dark *){border-color:#ffffff0f}.dark\:border-white\/\[0\.07\]:is(.dark *){border-color:#ffffff12}.dark\:border-white\/\[0\.08\]:is(.dark *){border-color:#ffffff14}.dark\:border-white\/\[0\.10\]:is(.dark *){border-color:#ffffff1a}.dark\:border-white\/\[0\.12\]:is(.dark *){border-color:#ffffff1f}.dark\:border-white\/\[0\.1\]:is(.dark *){border-color:#ffffff1a}.dark\:bg-\[\#090d12\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(9 13 18 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#0b0d10\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(11 13 16 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#0b1016\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(11 16 22 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#0c1117\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(12 17 23 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#0d1117\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(13 17 23 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#111214\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 18 20 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#151516\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(21 21 22 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#2c2c2e\]\/90:is(.dark *){background-color:#2c2c2ee6}.dark\:bg-\[rgba\(0\,0\,0\,0\.45\)\]:is(.dark *){background-color:#00000073}.dark\:bg-\[rgba\(255\,255\,255\,0\.04\)\]:is(.dark *){background-color:#ffffff0a}.dark\:bg-amber-400\/15:is(.dark *){background-color:#fbbf2426}.dark\:bg-amber-500\/10:is(.dark *){background-color:#f59e0b1a}.dark\:bg-amber-500\/15:is(.dark *){background-color:#f59e0b26}.dark\:bg-amber-950\/20:is(.dark *){background-color:#451a0333}.dark\:bg-black\/45:is(.dark *){background-color:#00000073}.dark\:bg-blue-500\/10:is(.dark *){background-color:#3b82f61a}.dark\:bg-blue-500\/15:is(.dark *){background-color:#3b82f626}.dark\:bg-destructive\/20:is(.dark *){background-color:hsl(var(--destructive) / .2)}.dark\:bg-gray-700\/80:is(.dark *){background-color:#374151cc}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950\/40:is(.dark *){background-color:#03071266}.dark\:bg-primary:is(.dark *){background-color:hsl(var(--primary))}.dark\:bg-primary\/10:is(.dark *){background-color:hsl(var(--primary) / .1)}.dark\:bg-primary\/15:is(.dark *){background-color:hsl(var(--primary) / .15)}.dark\:bg-red-500\/10:is(.dark *){background-color:#ef44441a}.dark\:bg-red-950\/20:is(.dark *){background-color:#450a0a33}.dark\:bg-red-950\/40:is(.dark *){background-color:#450a0a66}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:bg-violet-950\/20:is(.dark *){background-color:#2e106533}.dark\:bg-white\/\[0\.02\]:is(.dark *){background-color:#ffffff05}.dark\:bg-white\/\[0\.03\]:is(.dark *){background-color:#ffffff08}.dark\:bg-white\/\[0\.04\]:is(.dark *){background-color:#ffffff0a}.dark\:bg-white\/\[0\.05\]:is(.dark *){background-color:#ffffff0d}.dark\:bg-white\/\[0\.06\]:is(.dark *){background-color:#ffffff0f}.dark\:bg-white\/\[0\.08\]:is(.dark *){background-color:#ffffff14}.dark\:bg-white\/\[0\.10\]:is(.dark *){background-color:#ffffff1a}.dark\:bg-\[linear-gradient\(180deg\,rgba\(255\,255\,255\,0\.08\)\,rgba\(255\,255\,255\,0\.025\)_52\%\,rgba\(255\,255\,255\,0\.015\)\)\]:is(.dark *){background-image:linear-gradient(180deg,#ffffff14,#ffffff06 52%,#ffffff04)}.dark\:stroke-black\/80:is(.dark *){stroke:#000c}.dark\:stroke-white:is(.dark *){stroke:#fff}.dark\:stroke-white\/10:is(.dark *){stroke:#ffffff1a}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-100\/70:is(.dark *){color:#fef3c7b3}.dark\:text-amber-200:is(.dark *){--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-50:is(.dark *){--tw-text-opacity: 1;color:rgb(255 251 235 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-pink-400:is(.dark *){--tw-text-opacity: 1;color:rgb(244 114 182 / var(--tw-text-opacity, 1))}.dark\:text-primary:is(.dark *){color:hsl(var(--primary))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-slate-100:is(.dark *){--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.dark\:text-slate-200:is(.dark *){--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.dark\:text-slate-300:is(.dark *){--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.dark\:text-slate-400:is(.dark *){--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.dark\:text-slate-50:is(.dark *){--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.dark\:text-slate-500:is(.dark *){--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.dark\:text-violet-300:is(.dark *){--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-white\/55:is(.dark *){color:#ffffff8c}.dark\:shadow-\[0_-16px_42px_rgba\(0\,0\,0\,0\.34\)\]:is(.dark *){--tw-shadow: 0 -16px 42px rgba(0,0,0,.34);--tw-shadow-colored: 0 -16px 42px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-\[inset_-1px_0_0_rgba\(255\,255\,255\,0\.08\)\]:is(.dark *){--tw-shadow: inset -1px 0 0 rgba(255,255,255,.08);--tw-shadow-colored: inset -1px 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-none:is(.dark *){--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:\[stop-color\:\#1C1C1E\]:is(.dark *){stop-color:#1c1c1e}.dark\:\[stop-color\:\#2C2C2E\]:is(.dark *){stop-color:#2c2c2e}.dark\:\[stop-color\:\#3A3A3C\]:is(.dark *){stop-color:#3a3a3c}.dark\:placeholder\:text-slate-500:is(.dark *)::-moz-placeholder{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.dark\:placeholder\:text-slate-500:is(.dark *)::placeholder{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.dark\:hover\:border-white\/\[0\.08\]:hover:is(.dark *){border-color:#ffffff14}.dark\:hover\:border-white\/\[0\.10\]:hover:is(.dark *){border-color:#ffffff1a}.dark\:hover\:border-white\/\[0\.12\]:hover:is(.dark *){border-color:#ffffff1f}.dark\:hover\:bg-\[\#2997ff\]:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(41 151 255 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-primary\/15:hover:is(.dark *){background-color:hsl(var(--primary) / .15)}.dark\:hover\:bg-red-500\/10:hover:is(.dark *){background-color:#ef44441a}.dark\:hover\:bg-white\/\[0\.035\]:hover:is(.dark *){background-color:#ffffff09}.dark\:hover\:bg-white\/\[0\.04\]:hover:is(.dark *){background-color:#ffffff0a}.dark\:hover\:bg-white\/\[0\.05\]:hover:is(.dark *){background-color:#ffffff0d}.dark\:hover\:bg-white\/\[0\.06\]:hover:is(.dark *){background-color:#ffffff0f}.dark\:hover\:bg-white\/\[0\.07\]:hover:is(.dark *){background-color:#ffffff12}.dark\:hover\:bg-white\/\[0\.08\]:hover:is(.dark *){background-color:#ffffff14}.dark\:hover\:bg-white\/\[0\.09\]:hover:is(.dark *){background-color:#ffffff17}.dark\:hover\:bg-white\/\[0\.12\]:hover:is(.dark *){background-color:#ffffff1f}.dark\:hover\:bg-white\/\[0\.1\]:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:text-red-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:hover\:shadow-none:hover:is(.dark *){--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:disabled\:bg-white\/20:disabled:is(.dark *){background-color:#fff3}.dark\:disabled\:text-white\/55:disabled:is(.dark *){color:#ffffff8c}.dark\:prose-h1\:border-gray-700 :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))):is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:prose-blockquote\:text-gray-300 :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))):is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:prose-strong\:text-white :is(:where(strong):not(:where([class~=not-prose],[class~=not-prose] *))):is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:prose-th\:border-gray-700 :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))):is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:prose-th\:bg-gray-800 :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))):is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:prose-td\:border-gray-700 :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))):is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:prose-hr\:border-gray-700 :is(:where(hr):not(:where([class~=not-prose],[class~=not-prose] *))):is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}@media(min-width:640px){.sm\:left-1\/2{left:50%}.sm\:right-auto{right:auto}.sm\:order-none{order:0}.sm\:ml-0{margin-left:0}.sm\:mt-2{margin-top:.5rem}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:h-11{height:2.75rem}.sm\:h-12{height:3rem}.sm\:h-8{height:2rem}.sm\:min-h-\[112px\]{min-height:112px}.sm\:min-h-\[116px\]{min-height:116px}.sm\:min-h-\[96px\]{min-height:96px}.sm\:w-11{width:2.75rem}.sm\:w-12{width:3rem}.sm\:w-8{width:2rem}.sm\:w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.sm\:w-auto{width:auto}.sm\:min-w-0{min-width:0px}.sm\:min-w-\[118px\]{min-width:118px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[72\%\]{max-width:72%}.sm\:max-w-\[78\%\]{max-width:78%}.sm\:max-w-\[80\%\]{max-width:80%}.sm\:-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:p-2\.5{padding:.625rem}.sm\:p-6{padding:1.5rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\:py-4{padding-top:1rem;padding-bottom:1rem}.sm\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.sm\:pb-6{padding-bottom:1.5rem}.sm\:pt-4{padding-top:1rem}.sm\:text-\[1\.95rem\]{font-size:1.95rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:leading-none{line-height:1}}@media(min-width:768px){.md\:static{position:static}.md\:z-auto{z-index:auto}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[288px_minmax\(0\,1fr\)\]{grid-template-columns:288px minmax(0,1fr)}.md\:rounded-\[24px\]{border-radius:24px}.md\:border{border-width:1px}.md\:pb-3{padding-bottom:.75rem}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[340px_minmax\(0\,1fr\)\]{grid-template-columns:340px minmax(0,1fr)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}.lg\:self-start{align-self:flex-start}.lg\:pt-0{padding-top:0}}@media(min-width:1280px){.xl\:h-\[calc\(100vh-8rem\)\]{height:calc(100vh - 8rem)}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-\[22rem_minmax\(0\,1fr\)\]{grid-template-columns:22rem minmax(0,1fr)}.xl\:grid-cols-\[300px_minmax\(0\,1fr\)\]{grid-template-columns:300px minmax(0,1fr)}.xl\:grid-cols-\[minmax\(0\,1\.05fr\)_minmax\(0\,0\.95fr\)\]{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}.xl\:overflow-hidden{overflow:hidden}}@media(min-width:1536px){.\32xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.\32xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\>p\]\:my-0\.5>p{margin-top:.125rem;margin-bottom:.125rem}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&_\*\]\:text-inherit *{color:inherit}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_code\]\:border code{border-width:1px}.\[\&_code\]\:border-black\/10 code{border-color:#0000001a}.\[\&_code\]\:bg-black\/10 code{background-color:#0000001a}.\[\&_code\]\:text-inherit code{color:inherit}.dark\:\[\&_code\]\:border-white\/10 code:is(.dark *){border-color:#ffffff1a}.\[\&_li\]\:my-0 li{margin-top:0;margin-bottom:0}
@@ -1 +0,0 @@
1
- import{A as t}from"./index-dy-g2Bh4.js";const e=()=>t.get("/projects"),r=o=>t.get(`/projects/${o}`);export{r as g,e as l};