@markus-global/cli 0.9.0-rc.7 → 0.9.0-rc.8

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 (61) hide show
  1. package/dist/markus.mjs +55 -20
  2. package/dist/web-ui/assets/{CommentInput-TaVC_Fip.js → CommentInput-BJmv0Rha.js} +1 -1
  3. package/dist/web-ui/assets/{ContentRenderer-DtcL0FZI.js → ContentRenderer-DJQo68Rq.js} +2 -2
  4. package/dist/web-ui/assets/{Deliverables-C8pzzt4r.js → Deliverables-DCXoaQpj.js} +1 -1
  5. package/dist/web-ui/assets/{Notifications-BqOlKcov.js → Notifications-BTkCe_FT.js} +1 -1
  6. package/dist/web-ui/assets/{Search-MQIbxh2k.js → Search-DJMnvmW4.js} +1 -1
  7. package/dist/web-ui/assets/{Settings-DXRyCb9R.js → Settings-Bo7g6_tg.js} +1 -1
  8. package/dist/web-ui/assets/{Store-Csz6HWC-.js → Store-B_9bFi_v.js} +1 -1
  9. package/dist/web-ui/assets/{Team-Jgmy2XLK.js → Team-Bp5j4tGQ.js} +4 -4
  10. package/dist/web-ui/assets/{Work-D1xxd9Cj.js → Work-CBpfr_rN.js} +1 -1
  11. package/dist/web-ui/assets/{arc-CvlRbL1f.js → arc-FGZKJEo5.js} +1 -1
  12. package/dist/web-ui/assets/{architectureDiagram-3BPJPVTR-tI_qyItI.js → architectureDiagram-3BPJPVTR-DrHriKKt.js} +1 -1
  13. package/dist/web-ui/assets/{blockDiagram-GPEHLZMM-DPlp1wAS.js → blockDiagram-GPEHLZMM-B1KrBMG4.js} +1 -1
  14. package/dist/web-ui/assets/{c4Diagram-AAUBKEIU-B4HY_088.js → c4Diagram-AAUBKEIU-CB3d18fE.js} +1 -1
  15. package/dist/web-ui/assets/channel-Dn6ohvAA.js +1 -0
  16. package/dist/web-ui/assets/{chunk-2J33WTMH-CLfRhfYo.js → chunk-2J33WTMH-yhAAZF8B.js} +1 -1
  17. package/dist/web-ui/assets/{chunk-4BX2VUAB-CDx25iZK.js → chunk-4BX2VUAB-DhGfeR_u.js} +1 -1
  18. package/dist/web-ui/assets/{chunk-55IACEB6-BENXIwET.js → chunk-55IACEB6-B4ZyaFdf.js} +1 -1
  19. package/dist/web-ui/assets/{chunk-727SXJPM-CwIpvaPE.js → chunk-727SXJPM-DiEJq1Wh.js} +1 -1
  20. package/dist/web-ui/assets/{chunk-AQP2D5EJ-D-YRf-Fg.js → chunk-AQP2D5EJ-DJgXMRvd.js} +1 -1
  21. package/dist/web-ui/assets/{chunk-FMBD7UC4-Dp_h4d6j.js → chunk-FMBD7UC4-DLzapSRw.js} +1 -1
  22. package/dist/web-ui/assets/{chunk-ND2GUHAM-CUBDxwHR.js → chunk-ND2GUHAM-KaWi6H4E.js} +1 -1
  23. package/dist/web-ui/assets/{chunk-QZHKN3VN-CVAgDt5p.js → chunk-QZHKN3VN-CedM3HE_.js} +1 -1
  24. package/dist/web-ui/assets/classDiagram-4FO5ZUOK-BNcvQTsC.js +1 -0
  25. package/dist/web-ui/assets/classDiagram-v2-Q7XG4LA2-BNcvQTsC.js +1 -0
  26. package/dist/web-ui/assets/{cose-bilkent-S5V4N54A-DDrJZ_Lt.js → cose-bilkent-S5V4N54A-DGOMWPFW.js} +1 -1
  27. package/dist/web-ui/assets/{dagre-BM42HDAG-LX7QV3G0.js → dagre-BM42HDAG-CsB6PNx2.js} +1 -1
  28. package/dist/web-ui/assets/{diagram-2AECGRRQ-CK0Esb13.js → diagram-2AECGRRQ-dsKr5CnT.js} +1 -1
  29. package/dist/web-ui/assets/{diagram-5GNKFQAL-Ba2o4U6S.js → diagram-5GNKFQAL-CfKFUiA0.js} +1 -1
  30. package/dist/web-ui/assets/{diagram-KO2AKTUF-DhYIvmyJ.js → diagram-KO2AKTUF-C-iYqWwv.js} +1 -1
  31. package/dist/web-ui/assets/{diagram-LMA3HP47-Cy62pgA6.js → diagram-LMA3HP47-VrnDGieS.js} +1 -1
  32. package/dist/web-ui/assets/{diagram-OG6HWLK6-YVinWnza.js → diagram-OG6HWLK6-2CPw94I0.js} +1 -1
  33. package/dist/web-ui/assets/{erDiagram-TEJ5UH35-DZ72-TSc.js → erDiagram-TEJ5UH35-B2CXjopz.js} +1 -1
  34. package/dist/web-ui/assets/{flowDiagram-I6XJVG4X-CMllMvlP.js → flowDiagram-I6XJVG4X-uYZBII8i.js} +1 -1
  35. package/dist/web-ui/assets/{ganttDiagram-6RSMTGT7-DsjTLEpK.js → ganttDiagram-6RSMTGT7-DX__je4a.js} +1 -1
  36. package/dist/web-ui/assets/{gitGraphDiagram-PVQCEYII-Xl_METoZ.js → gitGraphDiagram-PVQCEYII-ClWVZgy5.js} +1 -1
  37. package/dist/web-ui/assets/{index-DO8_O8Vw.js → index-Dgg0L65t.js} +4 -4
  38. package/dist/web-ui/assets/{infoDiagram-5YYISTIA-BxKfEOlz.js → infoDiagram-5YYISTIA-0bE4Z9ff.js} +1 -1
  39. package/dist/web-ui/assets/{ishikawaDiagram-YF4QCWOH-ZpSC4-IS.js → ishikawaDiagram-YF4QCWOH-nCIQcUlM.js} +1 -1
  40. package/dist/web-ui/assets/{journeyDiagram-JHISSGLW-DlHtkZv8.js → journeyDiagram-JHISSGLW-Bc1umCm3.js} +1 -1
  41. package/dist/web-ui/assets/{kanban-definition-UN3LZRKU-BreNG-31.js → kanban-definition-UN3LZRKU-BqkpB1pF.js} +1 -1
  42. package/dist/web-ui/assets/{mermaid.core-DvatjXnq.js → mermaid.core-CSfwY1-0.js} +5 -5
  43. package/dist/web-ui/assets/{mindmap-definition-RKZ34NQL-qveAmQec.js → mindmap-definition-RKZ34NQL-nQyDFxhc.js} +1 -1
  44. package/dist/web-ui/assets/{pieDiagram-4H26LBE5-DX62E3l6.js → pieDiagram-4H26LBE5-5HVdrqjx.js} +1 -1
  45. package/dist/web-ui/assets/{quadrantDiagram-W4KKPZXB-C5dKRXCq.js → quadrantDiagram-W4KKPZXB-NuRh23Sl.js} +1 -1
  46. package/dist/web-ui/assets/{requirementDiagram-4Y6WPE33-a084_Ugq.js → requirementDiagram-4Y6WPE33-BGztYPcI.js} +1 -1
  47. package/dist/web-ui/assets/{sankeyDiagram-5OEKKPKP-DthKmaYC.js → sankeyDiagram-5OEKKPKP-bjpwDt_z.js} +1 -1
  48. package/dist/web-ui/assets/{sequenceDiagram-3UESZ5HK-DdyLG-Lx.js → sequenceDiagram-3UESZ5HK-DyTeuxtF.js} +1 -1
  49. package/dist/web-ui/assets/{stateDiagram-AJRCARHV-9M6azc5R.js → stateDiagram-AJRCARHV-BHPWZwpF.js} +1 -1
  50. package/dist/web-ui/assets/stateDiagram-v2-BHNVJYJU-56cdLVMt.js +1 -0
  51. package/dist/web-ui/assets/{timeline-definition-PNZ67QCA-CAZ1B9ki.js → timeline-definition-PNZ67QCA-LPx8DOxK.js} +1 -1
  52. package/dist/web-ui/assets/{vennDiagram-CIIHVFJN-C1q-T-PV.js → vennDiagram-CIIHVFJN-Dy6cnqv-.js} +1 -1
  53. package/dist/web-ui/assets/{wardley-L42UT6IY-BUHmrj16.js → wardley-L42UT6IY-BtpmXexA.js} +1 -1
  54. package/dist/web-ui/assets/{wardleyDiagram-YWT4CUSO-C0Y_McWW.js → wardleyDiagram-YWT4CUSO-BsyOd3d4.js} +1 -1
  55. package/dist/web-ui/assets/{xychartDiagram-2RQKCTM6-Bh5mmFGf.js → xychartDiagram-2RQKCTM6-BcIF0Smp.js} +1 -1
  56. package/dist/web-ui/index.html +1 -1
  57. package/package.json +1 -1
  58. package/dist/web-ui/assets/channel-CTTzbind.js +0 -1
  59. package/dist/web-ui/assets/classDiagram-4FO5ZUOK-BOpo-nB5.js +0 -1
  60. package/dist/web-ui/assets/classDiagram-v2-Q7XG4LA2-BOpo-nB5.js +0 -1
  61. package/dist/web-ui/assets/stateDiagram-v2-BHNVJYJU-DmZSwAmU.js +0 -1
@@ -1,4 +1,4 @@
1
- import{u as me,r as l,j as e,C as bn,s as ta,f as F,a as sa,af as kr,n as ss,P as rs,ag as ra,ah as Cr,h as Fe,ai as yn,w as na,aj as ns,ak as Rs,_ as aa}from"./index-DO8_O8Vw.js";function oa(s,r){for(var o=0;o<r.length;o++){const n=r[o];if(typeof n!="string"&&!Array.isArray(n)){for(const a in n)if(a!=="default"&&!(a in s)){const t=Object.getOwnPropertyDescriptor(n,a);t&&Object.defineProperty(s,a,t.get?t:{enumerable:!0,get:()=>n[a]})}}}return Object.freeze(Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}))}function ia(s){return s>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:s>=1e3?`${(s/1e3).toFixed((s%1e3===0,0))}K`:String(s)}function la(s){return s.maxInputTokens>0||s.inputCostPer1MTokens>0||s.outputCostPer1MTokens>0}function as(s){if(s.tier)return s.tier;const r=s.id.toLowerCase(),o=/opus|5\.4|o3-(?!mini)|o1-(?!mini)|gemini.*ultra|sonnet-4-20/,n=/haiku|flash|nano|lite|small|fast|free|8b|7b|1b|3b/;return/o4-mini|o3-mini|o1-mini|gpt-4o-mini/.test(r)?"pro":o.test(r)?"max":n.test(r)?"base":"pro"}const Sr={max:"bg-purple-500/20 text-purple-400 border-purple-500/30",pro:"bg-blue-500/20 text-blue-400 border-blue-500/30",base:"bg-gray-500/20 text-gray-400 border-gray-500/30"};function vn({models:s,selectedModel:r,onSelect:o,loading:n,compact:a,maxVisible:t,showTiers:d}){const{t:c}=me("settings"),[u,p]=l.useState(""),[y,T]=l.useState(!1),[x,v]=l.useState(""),w=l.useMemo(()=>{let g=s;if(u){const h=u.toLowerCase();g=g.filter(N=>N.id.toLowerCase().includes(h))}return x&&(g=g.filter(h=>as(h)===x)),g},[s,u,x]),A=l.useMemo(()=>{const g={max:0,pro:0,base:0};for(const h of s)g[as(h)]++;return g},[s]),K=t??(a?5:10),j=y?w:w.slice(0,K),S=w.length>K;return n?e.jsxs("div",{className:"flex items-center gap-2 py-4 text-sm text-fg-tertiary",children:[e.jsx("div",{className:"w-4 h-4 border-2 border-brand-500 border-t-transparent rounded-full animate-spin"}),c("modelPicker.loading")]}):s.length===0?e.jsx("div",{className:"py-3 text-sm text-fg-tertiary",children:c("modelPicker.empty")}):e.jsxs("div",{className:"space-y-2",children:[d&&s.length>3&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("button",{onClick:()=>v(""),className:`px-2 py-0.5 rounded text-[10px] transition-colors ${x?"bg-surface-overlay text-fg-tertiary hover:text-fg-secondary":"bg-brand-500/20 text-brand-500"}`,children:c("modelPicker.allCount",{count:s.length})}),["max","pro","base"].filter(g=>A[g]>0).map(g=>e.jsx("button",{onClick:()=>v(x===g?"":g),className:`px-2 py-0.5 rounded text-[10px] font-medium uppercase transition-colors border ${x===g?Sr[g]:"border-transparent bg-surface-overlay text-fg-tertiary hover:text-fg-secondary"}`,children:c("modelPicker.tierCount",{tier:c(`modelRouting.tier.${g}`),count:A[g]})},g))]}),s.length>5&&e.jsx("input",{type:"text",value:u,onChange:g=>{p(g.target.value),T(!1)},placeholder:c("modelPicker.filterPlaceholder"),className:"w-full px-3 py-1.5 bg-surface-overlay border border-border-default rounded-lg text-xs text-fg-primary placeholder:text-fg-tertiary focus:outline-none focus:border-brand-500"}),e.jsx("div",{className:`space-y-1 ${a?"max-h-[280px] overflow-y-auto":""}`,children:j.map(g=>{const h=g.id===r,N=as(g);return e.jsxs("button",{type:"button",onClick:()=>o(g.id),className:`w-full text-left px-3 py-2 rounded-lg transition-colors ${h?"bg-brand-500/10 border border-brand-500/30":"hover:bg-surface-overlay border border-transparent"}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-3 h-3 rounded-full border-2 flex items-center justify-center ${h?"border-brand-500":"border-border-default"}`,children:h&&e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-brand-500"})}),e.jsx("span",{className:`text-xs font-medium ${h?"text-brand-500":"text-fg-primary"}`,children:g.id}),d&&e.jsx("span",{className:`px-1.5 py-0.5 rounded text-[9px] font-semibold uppercase border ${Sr[N]}`,children:c(`modelRouting.tier.${N}`)})]}),e.jsx("div",{className:"flex items-center gap-2",children:h&&e.jsx("span",{className:"text-[10px] text-brand-500 font-medium",children:c("modelPicker.active")})})]}),la(g)&&g.maxInputTokens>0&&e.jsx("div",{className:"ml-5 mt-0.5 flex items-center gap-2 text-[10px] text-fg-tertiary flex-wrap",children:e.jsxs("span",{children:[ia(g.maxInputTokens)," ",c("modelPicker.ctx")]})}),!a&&e.jsxs("div",{className:"ml-5 mt-1 flex items-center gap-1.5 flex-wrap",children:[g.capabilities.functionCalling&&e.jsx(nt,{label:c("modelPicker.capabilities.tools")}),g.capabilities.vision&&e.jsx(nt,{label:c("modelPicker.capabilities.vision")}),g.capabilities.reasoning&&e.jsx(nt,{label:c("modelPicker.capabilities.reasoning")}),g.capabilities.promptCaching&&e.jsx(nt,{label:c("modelPicker.capabilities.caching")}),g.capabilities.webSearch&&e.jsx(nt,{label:c("modelPicker.capabilities.search")})]})]},g.id)})}),S&&!y&&e.jsx("button",{type:"button",onClick:()=>T(!0),className:"text-xs text-brand-500 hover:text-brand-400 px-3",children:c("modelPicker.showAll",{count:w.length})}),y&&S&&e.jsx("button",{type:"button",onClick:()=>T(!1),className:"text-xs text-fg-tertiary hover:text-fg-secondary px-3",children:c("modelPicker.showLess")})]})}function nt({label:s}){return e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[9px] bg-surface-overlay text-fg-tertiary border border-border-default",children:s})}function Os({value:s,options:r,placeholder:o,onChange:n}){const{t:a}=me("settings"),[t,d]=l.useState(!1),[c,u]=l.useState(""),p=l.useRef(null),y=l.useRef(null),T=l.useRef(null),[x,v]=l.useState(-1);l.useEffect(()=>{function g(h){p.current&&!p.current.contains(h.target)&&d(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]),l.useEffect(()=>{t&&y.current&&y.current.focus()},[t]);const w=l.useMemo(()=>{if(!c.trim())return r;const g=c.toLowerCase();return r.filter(h=>h.modelId.toLowerCase().includes(g)||h.modelName.toLowerCase().includes(g)||h.provider.toLowerCase().includes(g)||h.providerLabel.toLowerCase().includes(g)||h.tier&&h.tier.toLowerCase().includes(g))},[r,c]),A=l.useMemo(()=>{const g=new Map;for(const N of w){const E=N.providerLabel;g.has(E)||g.set(E,[]),g.get(E).push(N)}const h={max:0,pro:1,base:2};for(const N of g.values())N.sort((E,O)=>(h[E.tier??"base"]??9)-(h[O.tier??"base"]??9));return g},[w]),K=l.useMemo(()=>{const g=[];for(const h of A.values())g.push(...h);return g},[A]),j=l.useMemo(()=>{if(!s)return o??a("modelRouting.auto");const g=r.find(h=>`${h.provider}/${h.modelId}`===s);return g?`${g.providerLabel}/${g.modelName}`:s},[s,r,o,a]);function S(g){if(!t){(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),d(!0));return}switch(g.key){case"ArrowDown":g.preventDefault(),v(h=>Math.min(h+1,K.length-1));break;case"ArrowUp":g.preventDefault(),v(h=>Math.max(h-1,-1));break;case"Enter":g.preventDefault(),x===-1?n(""):K[x]&&n(`${K[x].provider}/${K[x].modelId}`),d(!1),u("");break;case"Escape":d(!1),u("");break}}return l.useEffect(()=>{T.current&&x>=0&&T.current.querySelector(`[data-focus-index="${x}"]`)?.scrollIntoView({block:"nearest"})},[x]),e.jsxs("div",{ref:p,className:"relative",onKeyDown:S,children:[e.jsx("button",{type:"button",onClick:()=>{d(!t),u(""),v(-1)},className:"w-full px-2 py-1 bg-surface-overlay border border-border-default rounded text-xs text-fg-primary text-left truncate focus:outline-none focus:border-brand-500",children:j}),t&&e.jsxs("div",{className:"absolute z-50 mt-1 w-full min-w-[240px] max-h-[280px] bg-surface-elevated border border-border-default rounded-lg shadow-xl overflow-hidden flex flex-col",children:[e.jsx("div",{className:"p-1.5 border-b border-border-default",children:e.jsx("input",{ref:y,type:"text",value:c,onChange:g=>{u(g.target.value),v(-1)},placeholder:a("modelPicker.searchPlaceholder")||"Search models...",className:"w-full px-2 py-1 bg-surface-overlay border border-border-default rounded text-xs text-fg-primary focus:outline-none focus:border-brand-500"})}),e.jsxs("div",{ref:T,className:"overflow-y-auto flex-1",children:[e.jsx("div",{className:`px-3 py-1.5 text-xs cursor-pointer ${x===-1?"bg-brand-500/20 text-brand-500":"text-fg-secondary hover:bg-surface-overlay"}`,onClick:()=>{n(""),d(!1),u("")},children:o??a("modelRouting.auto")}),[...A.entries()].map(([g,h])=>e.jsxs("div",{children:[e.jsx("div",{className:"px-3 py-1 text-[10px] font-semibold text-fg-tertiary uppercase tracking-wider bg-surface-overlay/50 sticky top-0",children:g}),h.map(N=>{const E=K.indexOf(N),O=`${N.provider}/${N.modelId}`===s;return e.jsxs("div",{"data-focus-index":E,className:`px-3 py-1.5 text-xs cursor-pointer flex items-center gap-2 ${E===x?"bg-brand-500/20":O?"bg-surface-overlay":"hover:bg-surface-overlay/50"}`,onClick:()=>{n(`${N.provider}/${N.modelId}`),d(!1),u("")},children:[e.jsx("span",{className:"flex-1 truncate text-fg-primary",children:N.modelName}),N.tier&&e.jsx(da,{tier:N.tier}),N.costTier&&e.jsx("span",{className:"text-[9px] text-fg-tertiary",children:N.costTier})]},`${N.provider}/${N.modelId}`)})]},g)),K.length===0&&e.jsx("div",{className:"px-3 py-3 text-xs text-fg-tertiary text-center",children:a("modelPicker.empty")})]})]})]})}function da({tier:s}){const r={max:"bg-purple-500/20 text-purple-400",pro:"bg-blue-500/20 text-blue-400",base:"bg-gray-500/20 text-gray-400"};return e.jsx("span",{className:`px-1 py-0.5 rounded text-[8px] font-bold uppercase ${r[s]??r.base}`,children:s})}const ca=500,Pr=[{groupKey:"image",capabilities:["image_recognition","image_generation"]},{groupKey:"audio",capabilities:["audio_tts","audio_stt"]},{groupKey:"video",capabilities:["video_generation"]}];function ua({onSave:s,configuredProviders:r}){const{t:o}=me(["settings","common"]),[n,a]=l.useState({}),[t,d]=l.useState(null),[c,u]=l.useState(!1),[p,y]=l.useState(null),[T,x]=l.useState("idle"),[v,w]=l.useState(null),[A,K]=l.useState({}),[j,S]=l.useState(!1),[g,h]=l.useState("idle"),[N,E]=l.useState(null),[O,U]=l.useState(!1),_=l.useRef(null),D=l.useRef(null),R=l.useMemo(()=>r.map(I=>I.name).sort().join(","),[r]);l.useEffect(()=>{fetch("/api/settings/llm/routing",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{a(I.capabilityRouting?.assignments??{}),d(I.routingDefaultModel??null),u(!0)}).catch(I=>{y(String(I)),u(!0)})},[R]),l.useEffect(()=>{fetch("/api/models/routing-candidates",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{const H=[];for(const q of I.providers)for(const m of q.models)H.push({provider:q.provider,providerLabel:q.displayName,modelId:m.id,modelName:m.name,mode:m.mode,tier:m.tier,costTier:m.costTier,capabilities:m.capabilities});w(H)}).catch(()=>w(null))},[R]),l.useEffect(()=>{fetch("/api/models/suggested-assignments",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{K(I.suggestions),S(!0)}).catch(()=>S(!0))},[R]);const P=l.useCallback(I=>{x("saving"),s(I).then(()=>{x("saved"),setTimeout(()=>x(H=>H==="saved"?"idle":H),2e3)}).catch(()=>{x("error"),setTimeout(()=>x(H=>H==="error"?"idle":H),3e3)})},[s]),f=l.useCallback((I,H)=>{D.current={capabilityRouting:I!==void 0?{assignments:I}:D.current?.capabilityRouting,routingDefaultModel:H!==void 0?H:D.current?.routingDefaultModel},_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{const q=D.current;D.current=null,q&&P(q)},ca)},[P]),k=l.useMemo(()=>r.flatMap(I=>(I.models??[{id:I.model,name:I.model}]).map(H=>({provider:I.name,providerLabel:I.displayName??I.name,modelId:H.id,modelName:H.name}))),[r]),$=v??k,J=l.useMemo(()=>Object.entries(n).map(([I,H])=>`${I}:${H?.provider??""}/${H?.model??""}`).sort().join("|"),[n]);l.useEffect(()=>{!c||!v||v.length===0||v.some(I=>!!I.modelId)&&a(I=>{let H=!1;const q={...I};for(const m of Pr)for(const L of m.capabilities){const V=q[L];if(!V?.model)continue;const X=jn(v,L);if(X.length===0)continue;X.some(Q=>Q.provider===V.provider&&Q.modelId===V.model)||(delete q[L],H=!0)}return H?(f(q),q):I})},[c,v,R,f,J]);const Z=l.useCallback(()=>{fetch("/api/settings/llm/routing",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{a(I.capabilityRouting?.assignments??{}),d(I.routingDefaultModel??null)}).catch(()=>{}),fetch("/api/models/routing-candidates",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{const H=[];for(const q of I.providers)for(const m of q.models)H.push({provider:q.provider,providerLabel:q.displayName,modelId:m.id,modelName:m.name,mode:m.mode,tier:m.tier,costTier:m.costTier,capabilities:m.capabilities});w(H)}).catch(()=>{})},[]),ne=l.useCallback(async()=>{if(g!=="working"){h("working"),E(null);try{const I=await fetch("/api/settings/llm/restore-recommended",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),H=await I.json().catch(()=>({}));if(!I.ok||!H.ok)throw new Error(H.error??`HTTP ${I.status}`);H.capabilityRouting&&a(H.capabilityRouting.assignments??{}),H.routingDefaultModel!==void 0&&d(H.routingDefaultModel),Z(),h("idle"),x("saved"),setTimeout(()=>x(q=>q==="saved"?"idle":q),2e3)}catch(I){h("error"),E(I instanceof Error?I.message:String(I)),setTimeout(()=>h("idle"),4e3)}}},[g,Z]);return c?p?e.jsx("div",{className:"bg-red-500/10 border border-red-500/30 rounded-xl p-4 text-xs text-red-400",children:o("modelRouting.loadError",{error:p})}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(ga,{status:T,t:o}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx("button",{type:"button",onClick:()=>U(!0),disabled:g==="working",className:"text-xs px-3 py-1.5 rounded-lg border border-border-default text-fg-secondary hover:text-fg-primary hover:border-brand-500/40 disabled:opacity-50 transition-colors",children:o(g==="working"?"modelRouting.restoreWorking":"modelRouting.restoreRecommended")}),N&&e.jsx("span",{className:"text-[10px] text-red-400 max-w-xs text-right",children:N})]})]}),e.jsxs("div",{className:"bg-surface-elevated rounded-xl p-5 space-y-3",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold text-fg-primary",children:o("modelRouting.defaultModelTitle")}),e.jsx("p",{className:"text-xs text-fg-tertiary mt-1",children:o("modelRouting.defaultModelDesc")})]}),e.jsx("div",{className:"max-w-md",children:e.jsx(Os,{value:t?`${t.provider}/${t.model}`:"",options:$,placeholder:o("modelRouting.defaultModelPlaceholder"),onChange:I=>{if(!I)d(null),f(void 0,null);else{const[H,...q]=I.split("/"),m={provider:H,model:q.join("/")};if(d(m),n.text){const L={...n};delete L.text,a(L),f(L,m)}else f(void 0,m)}}})})]}),e.jsxs("div",{className:"bg-surface-elevated rounded-xl p-5 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold text-fg-primary",children:o("modelRouting.capabilityAssignTitle")}),e.jsx("p",{className:"text-xs text-fg-tertiary mt-1",children:o("modelRouting.capabilityAssignDesc")})]}),r.length===0&&e.jsx("div",{className:"p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg text-xs text-yellow-400",children:o("modelRouting.noProvidersHint")}),r.length>0&&e.jsx("div",{className:"space-y-4",children:Pr.map(I=>e.jsx(xa,{groupKey:I.groupKey,capabilities:I.capabilities,assignments:n,suggestions:A,allModels:$,configuredProviderNames:new Set(r.map(H=>H.name)),t:o,onAssign:(H,q)=>{const m={...n};q?m[H]=q:delete m[H],a(m),f(m)}},I.groupKey))})]}),O&&e.jsx(bn,{variant:"primary",title:o("modelRouting.restoreRecommended"),message:o("modelRouting.restoreConfirm"),confirmLabel:o("common:confirm"),onConfirm:()=>{U(!1),ne()},onCancel:()=>U(!1)})]}):e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"bg-surface-elevated rounded-xl p-5 animate-pulse",children:[e.jsx("div",{className:"h-4 bg-surface-overlay rounded w-1/3 mb-3"}),e.jsx("div",{className:"h-3 bg-surface-overlay rounded w-2/3 mb-4"}),e.jsx("div",{className:"space-y-2",children:[1,2,3,4,5].map(I=>e.jsx("div",{className:"h-10 bg-surface-overlay rounded-lg"},I))})]})})}function xa({groupKey:s,capabilities:r,assignments:o,suggestions:n,allModels:a,configuredProviderNames:t,t:d,onAssign:c}){return e.jsxs("div",{children:[e.jsx("div",{className:"text-[10px] font-semibold text-fg-tertiary uppercase tracking-wider mb-2 px-1",children:d(`modelRouting.capabilityGroups.${s}`)}),e.jsx("div",{className:"space-y-1",children:r.map(u=>{const p=o[u],y=n[u],T=p?`${p.provider}/${p.model}`:"",x=jn(a,u),v=y?x.find(S=>S.provider===y.provider&&S.modelId===y.model)?.modelName??y.model:void 0,w=x.length>0,A=p?ma(a,p.provider,p.model):void 0,K=p&&!t.has(p.provider),j=!!(p&&w&&u!=="text"&&!x.some(S=>S.provider===p.provider&&S.modelId===p.model));return e.jsxs("div",{className:`flex items-center gap-3 px-3 py-2 rounded-lg ${j?"bg-red-500/10 border border-red-500/30":K?"bg-yellow-500/10 border border-yellow-500/30":!w&&!p?"bg-amber-500/5 border border-amber-500/20":"bg-surface-overlay/40"}`,children:[e.jsx("div",{className:"w-28 shrink-0",children:e.jsx("span",{className:"text-xs text-fg-primary",children:d(`modelRouting.capabilities.${u}`)})}),e.jsx("div",{className:"flex-1 min-w-0",children:j?e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("span",{className:"text-xs text-red-400",children:["⚠ ",p.model]}),e.jsx("span",{className:"text-[10px] text-red-400/70",children:d("modelRouting.mismatchHint")})]}),e.jsx(Os,{value:"",options:x,placeholder:d("modelRouting.selectModel"),onChange:S=>{if(!S)c(u,null);else{const[g,...h]=S.split("/");c(u,{provider:g,model:h.join("/")})}}})]}):w?e.jsx(Os,{value:T,options:x,placeholder:v?`${v} (${d("modelRouting.suggested")})`:d("modelRouting.selectModel"),onChange:S=>{if(!S)c(u,null);else{const[g,...h]=S.split("/");c(u,{provider:g,model:h.join("/")})}}}):e.jsxs("span",{className:"text-xs text-amber-400",children:[d("modelRouting.noModelAvailable"),e.jsxs("span",{className:"text-fg-tertiary ml-1",children:["— ",d("modelRouting.addProviderHint")]})]})}),e.jsxs("div",{className:"w-14 shrink-0 flex justify-end",children:[j&&e.jsx("span",{className:"text-[10px] text-red-400 font-medium",title:d("modelRouting.mismatchHint"),children:"⚠"}),!j&&K&&e.jsx("span",{className:"text-[10px] text-yellow-400 font-medium",title:d("modelRouting.staleProvider"),children:"⚠"}),!j&&!K&&A&&e.jsx(Ar,{tier:A}),!j&&!K&&!A&&p&&e.jsx(Ar,{tier:"unknown"})]}),e.jsx("div",{className:"w-8 shrink-0 flex justify-end",children:p&&e.jsx("button",{onClick:()=>c(u,null),className:"text-fg-tertiary hover:text-red-400 transition-colors",title:d("modelRouting.clear"),children:e.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})})]},u)})})]})}function ma(s,r,o){return s.find(a=>a.provider===r&&a.modelId===o)?.tier}function ga({status:s,t:r}){if(s==="idle")return null;const o={idle:"",saving:"text-fg-tertiary",saved:"text-green-400",error:"text-red-400"},n={idle:"",saving:r("modelRouting.saving"),saved:r("modelRouting.saved"),error:r("modelRouting.saveError")};return e.jsx("div",{className:`text-xs font-medium transition-opacity ${o[s]}`,children:n[s]})}function Ar({tier:s}){const r={max:"bg-purple-500/20 text-purple-400 border-purple-500/30",pro:"bg-blue-500/20 text-blue-400 border-blue-500/30",base:"bg-gray-500/20 text-gray-400 border-gray-500/30",unknown:"bg-gray-500/10 text-fg-tertiary border-border-default"};return e.jsx("span",{className:`px-1.5 py-0.5 text-[9px] rounded font-semibold uppercase border ${r[s]??r.unknown}`,children:s==="unknown"?"—":s})}const fa=new Set(["imageGeneration","tts","stt","videoGeneration","audioOutput","audioInput"]);function jn(s,r){if(r==="text")return s.filter(d=>!(d.capabilities&&d.capabilities.some(c=>fa.has(c))||d.mode&&d.mode!=="chat"));const o={image_generation:["image_generation"],audio_tts:["audio_speech"],audio_stt:["audio_transcription"],video_generation:["video_generation"]},n={image_recognition:["vision"],image_generation:["imageGeneration"],audio_tts:["tts"],audio_stt:["stt"],video_generation:["videoGeneration"]},a=o[r],t=n[r];return s.filter(d=>!!(d.capabilities&&d.capabilities.length>0&&t&&t.some(c=>d.capabilities.includes(c))||a&&d.mode&&a.includes(d.mode)))}const Ct=[{id:"markus",label:"Markus Cloud AI",envKey:"MARKUS_SUBSCRIPTION_KEY",defaultModel:""},{id:"anthropic",label:"Anthropic",envKey:"ANTHROPIC_API_KEY",defaultModel:"claude-opus-4-6"},{id:"openai",label:"OpenAI",envKey:"OPENAI_API_KEY",defaultModel:"gpt-5.4"},{id:"google",label:"Google Gemini",envKey:"GOOGLE_API_KEY",defaultModel:"gemini-3-1-pro"},{id:"deepseek",label:"DeepSeek",envKey:"DEEPSEEK_API_KEY",baseUrl:"https://api.deepseek.com",defaultModel:"deepseek-v4-flash"},{id:"siliconflow",label:"SiliconFlow (中国)",envKey:"SILICONFLOW_API_KEY",baseUrl:"https://api.siliconflow.cn/v1",defaultModel:"Qwen/Qwen3.5-35B-A3B"},{id:"siliconflow-intl",label:"SiliconFlow (Global)",envKey:"SILICONFLOW_INTL_API_KEY",baseUrl:"https://api-st.siliconflow.cn/v1",defaultModel:"Qwen/Qwen3.5-35B-A3B"},{id:"minimax",label:"MiniMax (Global)",envKey:"MINIMAX_API_KEY",baseUrl:"https://api.minimax.io/v1",defaultModel:"MiniMax-M3"},{id:"minimax-cn",label:"MiniMax (中国)",envKey:"MINIMAX_CN_API_KEY",baseUrl:"https://api.minimaxi.com/v1",defaultModel:"MiniMax-M3"},{id:"openrouter",label:"OpenRouter",envKey:"OPENROUTER_API_KEY",baseUrl:"https://openrouter.ai/api/v1",defaultModel:"xiaomi/mimo-v2-pro:free"},{id:"zai",label:"ZAI (GLM)",envKey:"ZAI_API_KEY",baseUrl:"https://api.z.ai/api/paas/v4",defaultModel:"glm-5.1"},{id:"xai",label:"xAI (Grok)",envKey:"XAI_API_KEY",baseUrl:"https://api.x.ai/v1",defaultModel:"grok-3"},{id:"mistral",label:"Mistral AI",envKey:"MISTRAL_API_KEY",baseUrl:"https://api.mistral.ai/v1",defaultModel:"mistral-large-latest"},{id:"groq",label:"Groq",envKey:"GROQ_API_KEY",baseUrl:"https://api.groq.com/openai/v1",defaultModel:"llama-3.3-70b-versatile"},{id:"perplexity",label:"Perplexity",envKey:"PERPLEXITY_API_KEY",baseUrl:"https://api.perplexity.ai",defaultModel:"sonar-pro"},{id:"cohere",label:"Cohere",envKey:"COHERE_API_KEY",baseUrl:"https://api.cohere.ai/compatibility/v1",defaultModel:"command-r-plus"},{id:"together_ai",label:"Together AI",envKey:"TOGETHER_API_KEY",baseUrl:"https://api.together.xyz/v1",defaultModel:"meta-llama/Llama-3.3-70B-Instruct-Turbo"},{id:"fireworks_ai",label:"Fireworks AI",envKey:"FIREWORKS_API_KEY",baseUrl:"https://api.fireworks.ai/inference/v1",defaultModel:"accounts/fireworks/models/llama-v3p3-70b-instruct"},{id:"moonshot",label:"Moonshot (Kimi)",envKey:"MOONSHOT_API_KEY",baseUrl:"https://api.moonshot.cn/v1",defaultModel:"moonshot-v1-auto"},{id:"volcengine",label:"Volcengine (Doubao)",envKey:"VOLCENGINE_API_KEY",baseUrl:"https://ark.cn-beijing.volces.com/api/v3",defaultModel:"doubao-1.5-pro-32k"},{id:"dashscope",label:"DashScope (Qwen)",envKey:"DASHSCOPE_API_KEY",baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",defaultModel:"qwen-max"},{id:"ollama",label:"Ollama (Local)",envKey:"OLLAMA_BASE_URL",baseUrl:"http://localhost:11434/v1",defaultModel:"llama3"},{id:"atlascloud",label:"Atlas Cloud (Full-Modal)",envKey:"ATLASCLOUD_API_KEY",baseUrl:"https://api.atlascloud.ai/v1",defaultModel:"claude-sonnet-4-6"},{id:"strongly",label:"Strongly.AI (Full-Modal)",envKey:"STRONGLY_API_KEY",baseUrl:"https://api.strongly.ai/v1",defaultModel:"claude-sonnet-4-6"}];var Ye={},os,Mr;function pa(){return Mr||(Mr=1,os=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),os}var is={},De={},Tr;function $e(){if(Tr)return De;Tr=1;let s;const r=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return De.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},De.getSymbolTotalCodewords=function(n){return r[n]},De.getBCHDigit=function(o){let n=0;for(;o!==0;)n++,o>>>=1;return n},De.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');s=n},De.isKanjiModeEnabled=function(){return typeof s<"u"},De.toSJIS=function(n){return s(n)},De}var ls={},Er;function _s(){return Er||(Er=1,(function(s){s.L={bit:1},s.M={bit:0},s.Q={bit:3},s.H={bit:2};function r(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.toLowerCase()){case"l":case"low":return s.L;case"m":case"medium":return s.M;case"q":case"quartile":return s.Q;case"h":case"high":return s.H;default:throw new Error("Unknown EC Level: "+o)}}s.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},s.from=function(n,a){if(s.isValid(n))return n;try{return r(n)}catch{return a}}})(ls)),ls}var ds,Ir;function ha(){if(Ir)return ds;Ir=1;function s(){this.buffer=[],this.length=0}return s.prototype={get:function(r){const o=Math.floor(r/8);return(this.buffer[o]>>>7-r%8&1)===1},put:function(r,o){for(let n=0;n<o;n++)this.putBit((r>>>o-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){const o=Math.floor(this.length/8);this.buffer.length<=o&&this.buffer.push(0),r&&(this.buffer[o]|=128>>>this.length%8),this.length++}},ds=s,ds}var cs,Lr;function ba(){if(Lr)return cs;Lr=1;function s(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}return s.prototype.set=function(r,o,n,a){const t=r*this.size+o;this.data[t]=n,a&&(this.reservedBit[t]=!0)},s.prototype.get=function(r,o){return this.data[r*this.size+o]},s.prototype.xor=function(r,o,n){this.data[r*this.size+o]^=n},s.prototype.isReserved=function(r,o){return this.reservedBit[r*this.size+o]},cs=s,cs}var us={},Rr;function ya(){return Rr||(Rr=1,(function(s){const r=$e().getSymbolSize;s.getRowColCoords=function(n){if(n===1)return[];const a=Math.floor(n/7)+2,t=r(n),d=t===145?26:Math.ceil((t-13)/(2*a-2))*2,c=[t-7];for(let u=1;u<a-1;u++)c[u]=c[u-1]-d;return c.push(6),c.reverse()},s.getPositions=function(n){const a=[],t=s.getRowColCoords(n),d=t.length;for(let c=0;c<d;c++)for(let u=0;u<d;u++)c===0&&u===0||c===0&&u===d-1||c===d-1&&u===0||a.push([t[c],t[u]]);return a}})(us)),us}var xs={},Or;function va(){if(Or)return xs;Or=1;const s=$e().getSymbolSize,r=7;return xs.getPositions=function(n){const a=s(n);return[[0,0],[a-r,0],[0,a-r]]},xs}var ms={},Br;function ja(){return Br||(Br=1,(function(s){s.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const r={N1:3,N2:3,N3:40,N4:10};s.isValid=function(a){return a!=null&&a!==""&&!isNaN(a)&&a>=0&&a<=7},s.from=function(a){return s.isValid(a)?parseInt(a,10):void 0},s.getPenaltyN1=function(a){const t=a.size;let d=0,c=0,u=0,p=null,y=null;for(let T=0;T<t;T++){c=u=0,p=y=null;for(let x=0;x<t;x++){let v=a.get(T,x);v===p?c++:(c>=5&&(d+=r.N1+(c-5)),p=v,c=1),v=a.get(x,T),v===y?u++:(u>=5&&(d+=r.N1+(u-5)),y=v,u=1)}c>=5&&(d+=r.N1+(c-5)),u>=5&&(d+=r.N1+(u-5))}return d},s.getPenaltyN2=function(a){const t=a.size;let d=0;for(let c=0;c<t-1;c++)for(let u=0;u<t-1;u++){const p=a.get(c,u)+a.get(c,u+1)+a.get(c+1,u)+a.get(c+1,u+1);(p===4||p===0)&&d++}return d*r.N2},s.getPenaltyN3=function(a){const t=a.size;let d=0,c=0,u=0;for(let p=0;p<t;p++){c=u=0;for(let y=0;y<t;y++)c=c<<1&2047|a.get(p,y),y>=10&&(c===1488||c===93)&&d++,u=u<<1&2047|a.get(y,p),y>=10&&(u===1488||u===93)&&d++}return d*r.N3},s.getPenaltyN4=function(a){let t=0;const d=a.data.length;for(let u=0;u<d;u++)t+=a.data[u];return Math.abs(Math.ceil(t*100/d/5)-10)*r.N4};function o(n,a,t){switch(n){case s.Patterns.PATTERN000:return(a+t)%2===0;case s.Patterns.PATTERN001:return a%2===0;case s.Patterns.PATTERN010:return t%3===0;case s.Patterns.PATTERN011:return(a+t)%3===0;case s.Patterns.PATTERN100:return(Math.floor(a/2)+Math.floor(t/3))%2===0;case s.Patterns.PATTERN101:return a*t%2+a*t%3===0;case s.Patterns.PATTERN110:return(a*t%2+a*t%3)%2===0;case s.Patterns.PATTERN111:return(a*t%3+(a+t)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}s.applyMask=function(a,t){const d=t.size;for(let c=0;c<d;c++)for(let u=0;u<d;u++)t.isReserved(u,c)||t.xor(u,c,o(a,u,c))},s.getBestMask=function(a,t){const d=Object.keys(s.Patterns).length;let c=0,u=1/0;for(let p=0;p<d;p++){t(p),s.applyMask(p,a);const y=s.getPenaltyN1(a)+s.getPenaltyN2(a)+s.getPenaltyN3(a)+s.getPenaltyN4(a);s.applyMask(p,a),y<u&&(u=y,c=p)}return c}})(ms)),ms}var St={},_r;function Nn(){if(_r)return St;_r=1;const s=_s(),r=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],o=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return St.getBlocksCount=function(a,t){switch(t){case s.L:return r[(a-1)*4+0];case s.M:return r[(a-1)*4+1];case s.Q:return r[(a-1)*4+2];case s.H:return r[(a-1)*4+3];default:return}},St.getTotalCodewordsCount=function(a,t){switch(t){case s.L:return o[(a-1)*4+0];case s.M:return o[(a-1)*4+1];case s.Q:return o[(a-1)*4+2];case s.H:return o[(a-1)*4+3];default:return}},St}var gs={},at={},Dr;function Na(){if(Dr)return at;Dr=1;const s=new Uint8Array(512),r=new Uint8Array(256);return(function(){let n=1;for(let a=0;a<255;a++)s[a]=n,r[n]=a,n<<=1,n&256&&(n^=285);for(let a=255;a<512;a++)s[a]=s[a-255]})(),at.log=function(n){if(n<1)throw new Error("log("+n+")");return r[n]},at.exp=function(n){return s[n]},at.mul=function(n,a){return n===0||a===0?0:s[r[n]+r[a]]},at}var Kr;function wa(){return Kr||(Kr=1,(function(s){const r=Na();s.mul=function(n,a){const t=new Uint8Array(n.length+a.length-1);for(let d=0;d<n.length;d++)for(let c=0;c<a.length;c++)t[d+c]^=r.mul(n[d],a[c]);return t},s.mod=function(n,a){let t=new Uint8Array(n);for(;t.length-a.length>=0;){const d=t[0];for(let u=0;u<a.length;u++)t[u]^=r.mul(a[u],d);let c=0;for(;c<t.length&&t[c]===0;)c++;t=t.slice(c)}return t},s.generateECPolynomial=function(n){let a=new Uint8Array([1]);for(let t=0;t<n;t++)a=s.mul(a,new Uint8Array([1,r.exp(t)]));return a}})(gs)),gs}var fs,Ur;function ka(){if(Ur)return fs;Ur=1;const s=wa();function r(o){this.genPoly=void 0,this.degree=o,this.degree&&this.initialize(this.degree)}return r.prototype.initialize=function(n){this.degree=n,this.genPoly=s.generateECPolynomial(this.degree)},r.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const a=new Uint8Array(n.length+this.degree);a.set(n);const t=s.mod(a,this.genPoly),d=this.degree-t.length;if(d>0){const c=new Uint8Array(this.degree);return c.set(t,d),c}return t},fs=r,fs}var ps={},hs={},bs={},Fr;function wn(){return Fr||(Fr=1,bs.isValid=function(r){return!isNaN(r)&&r>=1&&r<=40}),bs}var Pe={},$r;function kn(){if($r)return Pe;$r=1;const s="[0-9]+",r="[A-Z $%*+\\-./:]+";let o="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";o=o.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+o+`)(?:.|[\r
1
+ import{u as me,r as l,j as e,C as bn,s as ta,f as F,a as sa,af as kr,n as ss,P as rs,ag as ra,ah as Cr,h as Fe,ai as yn,w as na,aj as ns,ak as Rs,_ as aa}from"./index-Dgg0L65t.js";function oa(s,r){for(var o=0;o<r.length;o++){const n=r[o];if(typeof n!="string"&&!Array.isArray(n)){for(const a in n)if(a!=="default"&&!(a in s)){const t=Object.getOwnPropertyDescriptor(n,a);t&&Object.defineProperty(s,a,t.get?t:{enumerable:!0,get:()=>n[a]})}}}return Object.freeze(Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}))}function ia(s){return s>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:s>=1e3?`${(s/1e3).toFixed((s%1e3===0,0))}K`:String(s)}function la(s){return s.maxInputTokens>0||s.inputCostPer1MTokens>0||s.outputCostPer1MTokens>0}function as(s){if(s.tier)return s.tier;const r=s.id.toLowerCase(),o=/opus|5\.4|o3-(?!mini)|o1-(?!mini)|gemini.*ultra|sonnet-4-20/,n=/haiku|flash|nano|lite|small|fast|free|8b|7b|1b|3b/;return/o4-mini|o3-mini|o1-mini|gpt-4o-mini/.test(r)?"pro":o.test(r)?"max":n.test(r)?"base":"pro"}const Sr={max:"bg-purple-500/20 text-purple-400 border-purple-500/30",pro:"bg-blue-500/20 text-blue-400 border-blue-500/30",base:"bg-gray-500/20 text-gray-400 border-gray-500/30"};function vn({models:s,selectedModel:r,onSelect:o,loading:n,compact:a,maxVisible:t,showTiers:d}){const{t:c}=me("settings"),[u,p]=l.useState(""),[y,T]=l.useState(!1),[x,v]=l.useState(""),w=l.useMemo(()=>{let g=s;if(u){const h=u.toLowerCase();g=g.filter(N=>N.id.toLowerCase().includes(h))}return x&&(g=g.filter(h=>as(h)===x)),g},[s,u,x]),A=l.useMemo(()=>{const g={max:0,pro:0,base:0};for(const h of s)g[as(h)]++;return g},[s]),K=t??(a?5:10),j=y?w:w.slice(0,K),S=w.length>K;return n?e.jsxs("div",{className:"flex items-center gap-2 py-4 text-sm text-fg-tertiary",children:[e.jsx("div",{className:"w-4 h-4 border-2 border-brand-500 border-t-transparent rounded-full animate-spin"}),c("modelPicker.loading")]}):s.length===0?e.jsx("div",{className:"py-3 text-sm text-fg-tertiary",children:c("modelPicker.empty")}):e.jsxs("div",{className:"space-y-2",children:[d&&s.length>3&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("button",{onClick:()=>v(""),className:`px-2 py-0.5 rounded text-[10px] transition-colors ${x?"bg-surface-overlay text-fg-tertiary hover:text-fg-secondary":"bg-brand-500/20 text-brand-500"}`,children:c("modelPicker.allCount",{count:s.length})}),["max","pro","base"].filter(g=>A[g]>0).map(g=>e.jsx("button",{onClick:()=>v(x===g?"":g),className:`px-2 py-0.5 rounded text-[10px] font-medium uppercase transition-colors border ${x===g?Sr[g]:"border-transparent bg-surface-overlay text-fg-tertiary hover:text-fg-secondary"}`,children:c("modelPicker.tierCount",{tier:c(`modelRouting.tier.${g}`),count:A[g]})},g))]}),s.length>5&&e.jsx("input",{type:"text",value:u,onChange:g=>{p(g.target.value),T(!1)},placeholder:c("modelPicker.filterPlaceholder"),className:"w-full px-3 py-1.5 bg-surface-overlay border border-border-default rounded-lg text-xs text-fg-primary placeholder:text-fg-tertiary focus:outline-none focus:border-brand-500"}),e.jsx("div",{className:`space-y-1 ${a?"max-h-[280px] overflow-y-auto":""}`,children:j.map(g=>{const h=g.id===r,N=as(g);return e.jsxs("button",{type:"button",onClick:()=>o(g.id),className:`w-full text-left px-3 py-2 rounded-lg transition-colors ${h?"bg-brand-500/10 border border-brand-500/30":"hover:bg-surface-overlay border border-transparent"}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-3 h-3 rounded-full border-2 flex items-center justify-center ${h?"border-brand-500":"border-border-default"}`,children:h&&e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-brand-500"})}),e.jsx("span",{className:`text-xs font-medium ${h?"text-brand-500":"text-fg-primary"}`,children:g.id}),d&&e.jsx("span",{className:`px-1.5 py-0.5 rounded text-[9px] font-semibold uppercase border ${Sr[N]}`,children:c(`modelRouting.tier.${N}`)})]}),e.jsx("div",{className:"flex items-center gap-2",children:h&&e.jsx("span",{className:"text-[10px] text-brand-500 font-medium",children:c("modelPicker.active")})})]}),la(g)&&g.maxInputTokens>0&&e.jsx("div",{className:"ml-5 mt-0.5 flex items-center gap-2 text-[10px] text-fg-tertiary flex-wrap",children:e.jsxs("span",{children:[ia(g.maxInputTokens)," ",c("modelPicker.ctx")]})}),!a&&e.jsxs("div",{className:"ml-5 mt-1 flex items-center gap-1.5 flex-wrap",children:[g.capabilities.functionCalling&&e.jsx(nt,{label:c("modelPicker.capabilities.tools")}),g.capabilities.vision&&e.jsx(nt,{label:c("modelPicker.capabilities.vision")}),g.capabilities.reasoning&&e.jsx(nt,{label:c("modelPicker.capabilities.reasoning")}),g.capabilities.promptCaching&&e.jsx(nt,{label:c("modelPicker.capabilities.caching")}),g.capabilities.webSearch&&e.jsx(nt,{label:c("modelPicker.capabilities.search")})]})]},g.id)})}),S&&!y&&e.jsx("button",{type:"button",onClick:()=>T(!0),className:"text-xs text-brand-500 hover:text-brand-400 px-3",children:c("modelPicker.showAll",{count:w.length})}),y&&S&&e.jsx("button",{type:"button",onClick:()=>T(!1),className:"text-xs text-fg-tertiary hover:text-fg-secondary px-3",children:c("modelPicker.showLess")})]})}function nt({label:s}){return e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[9px] bg-surface-overlay text-fg-tertiary border border-border-default",children:s})}function Os({value:s,options:r,placeholder:o,onChange:n}){const{t:a}=me("settings"),[t,d]=l.useState(!1),[c,u]=l.useState(""),p=l.useRef(null),y=l.useRef(null),T=l.useRef(null),[x,v]=l.useState(-1);l.useEffect(()=>{function g(h){p.current&&!p.current.contains(h.target)&&d(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]),l.useEffect(()=>{t&&y.current&&y.current.focus()},[t]);const w=l.useMemo(()=>{if(!c.trim())return r;const g=c.toLowerCase();return r.filter(h=>h.modelId.toLowerCase().includes(g)||h.modelName.toLowerCase().includes(g)||h.provider.toLowerCase().includes(g)||h.providerLabel.toLowerCase().includes(g)||h.tier&&h.tier.toLowerCase().includes(g))},[r,c]),A=l.useMemo(()=>{const g=new Map;for(const N of w){const E=N.providerLabel;g.has(E)||g.set(E,[]),g.get(E).push(N)}const h={max:0,pro:1,base:2};for(const N of g.values())N.sort((E,O)=>(h[E.tier??"base"]??9)-(h[O.tier??"base"]??9));return g},[w]),K=l.useMemo(()=>{const g=[];for(const h of A.values())g.push(...h);return g},[A]),j=l.useMemo(()=>{if(!s)return o??a("modelRouting.auto");const g=r.find(h=>`${h.provider}/${h.modelId}`===s);return g?`${g.providerLabel}/${g.modelName}`:s},[s,r,o,a]);function S(g){if(!t){(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),d(!0));return}switch(g.key){case"ArrowDown":g.preventDefault(),v(h=>Math.min(h+1,K.length-1));break;case"ArrowUp":g.preventDefault(),v(h=>Math.max(h-1,-1));break;case"Enter":g.preventDefault(),x===-1?n(""):K[x]&&n(`${K[x].provider}/${K[x].modelId}`),d(!1),u("");break;case"Escape":d(!1),u("");break}}return l.useEffect(()=>{T.current&&x>=0&&T.current.querySelector(`[data-focus-index="${x}"]`)?.scrollIntoView({block:"nearest"})},[x]),e.jsxs("div",{ref:p,className:"relative",onKeyDown:S,children:[e.jsx("button",{type:"button",onClick:()=>{d(!t),u(""),v(-1)},className:"w-full px-2 py-1 bg-surface-overlay border border-border-default rounded text-xs text-fg-primary text-left truncate focus:outline-none focus:border-brand-500",children:j}),t&&e.jsxs("div",{className:"absolute z-50 mt-1 w-full min-w-[240px] max-h-[280px] bg-surface-elevated border border-border-default rounded-lg shadow-xl overflow-hidden flex flex-col",children:[e.jsx("div",{className:"p-1.5 border-b border-border-default",children:e.jsx("input",{ref:y,type:"text",value:c,onChange:g=>{u(g.target.value),v(-1)},placeholder:a("modelPicker.searchPlaceholder")||"Search models...",className:"w-full px-2 py-1 bg-surface-overlay border border-border-default rounded text-xs text-fg-primary focus:outline-none focus:border-brand-500"})}),e.jsxs("div",{ref:T,className:"overflow-y-auto flex-1",children:[e.jsx("div",{className:`px-3 py-1.5 text-xs cursor-pointer ${x===-1?"bg-brand-500/20 text-brand-500":"text-fg-secondary hover:bg-surface-overlay"}`,onClick:()=>{n(""),d(!1),u("")},children:o??a("modelRouting.auto")}),[...A.entries()].map(([g,h])=>e.jsxs("div",{children:[e.jsx("div",{className:"px-3 py-1 text-[10px] font-semibold text-fg-tertiary uppercase tracking-wider bg-surface-overlay/50 sticky top-0",children:g}),h.map(N=>{const E=K.indexOf(N),O=`${N.provider}/${N.modelId}`===s;return e.jsxs("div",{"data-focus-index":E,className:`px-3 py-1.5 text-xs cursor-pointer flex items-center gap-2 ${E===x?"bg-brand-500/20":O?"bg-surface-overlay":"hover:bg-surface-overlay/50"}`,onClick:()=>{n(`${N.provider}/${N.modelId}`),d(!1),u("")},children:[e.jsx("span",{className:"flex-1 truncate text-fg-primary",children:N.modelName}),N.tier&&e.jsx(da,{tier:N.tier}),N.costTier&&e.jsx("span",{className:"text-[9px] text-fg-tertiary",children:N.costTier})]},`${N.provider}/${N.modelId}`)})]},g)),K.length===0&&e.jsx("div",{className:"px-3 py-3 text-xs text-fg-tertiary text-center",children:a("modelPicker.empty")})]})]})]})}function da({tier:s}){const r={max:"bg-purple-500/20 text-purple-400",pro:"bg-blue-500/20 text-blue-400",base:"bg-gray-500/20 text-gray-400"};return e.jsx("span",{className:`px-1 py-0.5 rounded text-[8px] font-bold uppercase ${r[s]??r.base}`,children:s})}const ca=500,Pr=[{groupKey:"image",capabilities:["image_recognition","image_generation"]},{groupKey:"audio",capabilities:["audio_tts","audio_stt"]},{groupKey:"video",capabilities:["video_generation"]}];function ua({onSave:s,configuredProviders:r}){const{t:o}=me(["settings","common"]),[n,a]=l.useState({}),[t,d]=l.useState(null),[c,u]=l.useState(!1),[p,y]=l.useState(null),[T,x]=l.useState("idle"),[v,w]=l.useState(null),[A,K]=l.useState({}),[j,S]=l.useState(!1),[g,h]=l.useState("idle"),[N,E]=l.useState(null),[O,U]=l.useState(!1),_=l.useRef(null),D=l.useRef(null),R=l.useMemo(()=>r.map(I=>I.name).sort().join(","),[r]);l.useEffect(()=>{fetch("/api/settings/llm/routing",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{a(I.capabilityRouting?.assignments??{}),d(I.routingDefaultModel??null),u(!0)}).catch(I=>{y(String(I)),u(!0)})},[R]),l.useEffect(()=>{fetch("/api/models/routing-candidates",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{const H=[];for(const q of I.providers)for(const m of q.models)H.push({provider:q.provider,providerLabel:q.displayName,modelId:m.id,modelName:m.name,mode:m.mode,tier:m.tier,costTier:m.costTier,capabilities:m.capabilities});w(H)}).catch(()=>w(null))},[R]),l.useEffect(()=>{fetch("/api/models/suggested-assignments",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{K(I.suggestions),S(!0)}).catch(()=>S(!0))},[R]);const P=l.useCallback(I=>{x("saving"),s(I).then(()=>{x("saved"),setTimeout(()=>x(H=>H==="saved"?"idle":H),2e3)}).catch(()=>{x("error"),setTimeout(()=>x(H=>H==="error"?"idle":H),3e3)})},[s]),f=l.useCallback((I,H)=>{D.current={capabilityRouting:I!==void 0?{assignments:I}:D.current?.capabilityRouting,routingDefaultModel:H!==void 0?H:D.current?.routingDefaultModel},_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{const q=D.current;D.current=null,q&&P(q)},ca)},[P]),k=l.useMemo(()=>r.flatMap(I=>(I.models??[{id:I.model,name:I.model}]).map(H=>({provider:I.name,providerLabel:I.displayName??I.name,modelId:H.id,modelName:H.name}))),[r]),$=v??k,J=l.useMemo(()=>Object.entries(n).map(([I,H])=>`${I}:${H?.provider??""}/${H?.model??""}`).sort().join("|"),[n]);l.useEffect(()=>{!c||!v||v.length===0||v.some(I=>!!I.modelId)&&a(I=>{let H=!1;const q={...I};for(const m of Pr)for(const L of m.capabilities){const V=q[L];if(!V?.model)continue;const X=jn(v,L);if(X.length===0)continue;X.some(Q=>Q.provider===V.provider&&Q.modelId===V.model)||(delete q[L],H=!0)}return H?(f(q),q):I})},[c,v,R,f,J]);const Z=l.useCallback(()=>{fetch("/api/settings/llm/routing",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{a(I.capabilityRouting?.assignments??{}),d(I.routingDefaultModel??null)}).catch(()=>{}),fetch("/api/models/routing-candidates",{credentials:"include"}).then(I=>{if(!I.ok)throw new Error(`HTTP ${I.status}`);return I.json()}).then(I=>{const H=[];for(const q of I.providers)for(const m of q.models)H.push({provider:q.provider,providerLabel:q.displayName,modelId:m.id,modelName:m.name,mode:m.mode,tier:m.tier,costTier:m.costTier,capabilities:m.capabilities});w(H)}).catch(()=>{})},[]),ne=l.useCallback(async()=>{if(g!=="working"){h("working"),E(null);try{const I=await fetch("/api/settings/llm/restore-recommended",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),H=await I.json().catch(()=>({}));if(!I.ok||!H.ok)throw new Error(H.error??`HTTP ${I.status}`);H.capabilityRouting&&a(H.capabilityRouting.assignments??{}),H.routingDefaultModel!==void 0&&d(H.routingDefaultModel),Z(),h("idle"),x("saved"),setTimeout(()=>x(q=>q==="saved"?"idle":q),2e3)}catch(I){h("error"),E(I instanceof Error?I.message:String(I)),setTimeout(()=>h("idle"),4e3)}}},[g,Z]);return c?p?e.jsx("div",{className:"bg-red-500/10 border border-red-500/30 rounded-xl p-4 text-xs text-red-400",children:o("modelRouting.loadError",{error:p})}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(ga,{status:T,t:o}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx("button",{type:"button",onClick:()=>U(!0),disabled:g==="working",className:"text-xs px-3 py-1.5 rounded-lg border border-border-default text-fg-secondary hover:text-fg-primary hover:border-brand-500/40 disabled:opacity-50 transition-colors",children:o(g==="working"?"modelRouting.restoreWorking":"modelRouting.restoreRecommended")}),N&&e.jsx("span",{className:"text-[10px] text-red-400 max-w-xs text-right",children:N})]})]}),e.jsxs("div",{className:"bg-surface-elevated rounded-xl p-5 space-y-3",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold text-fg-primary",children:o("modelRouting.defaultModelTitle")}),e.jsx("p",{className:"text-xs text-fg-tertiary mt-1",children:o("modelRouting.defaultModelDesc")})]}),e.jsx("div",{className:"max-w-md",children:e.jsx(Os,{value:t?`${t.provider}/${t.model}`:"",options:$,placeholder:o("modelRouting.defaultModelPlaceholder"),onChange:I=>{if(!I)d(null),f(void 0,null);else{const[H,...q]=I.split("/"),m={provider:H,model:q.join("/")};if(d(m),n.text){const L={...n};delete L.text,a(L),f(L,m)}else f(void 0,m)}}})})]}),e.jsxs("div",{className:"bg-surface-elevated rounded-xl p-5 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold text-fg-primary",children:o("modelRouting.capabilityAssignTitle")}),e.jsx("p",{className:"text-xs text-fg-tertiary mt-1",children:o("modelRouting.capabilityAssignDesc")})]}),r.length===0&&e.jsx("div",{className:"p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg text-xs text-yellow-400",children:o("modelRouting.noProvidersHint")}),r.length>0&&e.jsx("div",{className:"space-y-4",children:Pr.map(I=>e.jsx(xa,{groupKey:I.groupKey,capabilities:I.capabilities,assignments:n,suggestions:A,allModels:$,configuredProviderNames:new Set(r.map(H=>H.name)),t:o,onAssign:(H,q)=>{const m={...n};q?m[H]=q:delete m[H],a(m),f(m)}},I.groupKey))})]}),O&&e.jsx(bn,{variant:"primary",title:o("modelRouting.restoreRecommended"),message:o("modelRouting.restoreConfirm"),confirmLabel:o("common:confirm"),onConfirm:()=>{U(!1),ne()},onCancel:()=>U(!1)})]}):e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"bg-surface-elevated rounded-xl p-5 animate-pulse",children:[e.jsx("div",{className:"h-4 bg-surface-overlay rounded w-1/3 mb-3"}),e.jsx("div",{className:"h-3 bg-surface-overlay rounded w-2/3 mb-4"}),e.jsx("div",{className:"space-y-2",children:[1,2,3,4,5].map(I=>e.jsx("div",{className:"h-10 bg-surface-overlay rounded-lg"},I))})]})})}function xa({groupKey:s,capabilities:r,assignments:o,suggestions:n,allModels:a,configuredProviderNames:t,t:d,onAssign:c}){return e.jsxs("div",{children:[e.jsx("div",{className:"text-[10px] font-semibold text-fg-tertiary uppercase tracking-wider mb-2 px-1",children:d(`modelRouting.capabilityGroups.${s}`)}),e.jsx("div",{className:"space-y-1",children:r.map(u=>{const p=o[u],y=n[u],T=p?`${p.provider}/${p.model}`:"",x=jn(a,u),v=y?x.find(S=>S.provider===y.provider&&S.modelId===y.model)?.modelName??y.model:void 0,w=x.length>0,A=p?ma(a,p.provider,p.model):void 0,K=p&&!t.has(p.provider),j=!!(p&&w&&u!=="text"&&!x.some(S=>S.provider===p.provider&&S.modelId===p.model));return e.jsxs("div",{className:`flex items-center gap-3 px-3 py-2 rounded-lg ${j?"bg-red-500/10 border border-red-500/30":K?"bg-yellow-500/10 border border-yellow-500/30":!w&&!p?"bg-amber-500/5 border border-amber-500/20":"bg-surface-overlay/40"}`,children:[e.jsx("div",{className:"w-28 shrink-0",children:e.jsx("span",{className:"text-xs text-fg-primary",children:d(`modelRouting.capabilities.${u}`)})}),e.jsx("div",{className:"flex-1 min-w-0",children:j?e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("span",{className:"text-xs text-red-400",children:["⚠ ",p.model]}),e.jsx("span",{className:"text-[10px] text-red-400/70",children:d("modelRouting.mismatchHint")})]}),e.jsx(Os,{value:"",options:x,placeholder:d("modelRouting.selectModel"),onChange:S=>{if(!S)c(u,null);else{const[g,...h]=S.split("/");c(u,{provider:g,model:h.join("/")})}}})]}):w?e.jsx(Os,{value:T,options:x,placeholder:v?`${v} (${d("modelRouting.suggested")})`:d("modelRouting.selectModel"),onChange:S=>{if(!S)c(u,null);else{const[g,...h]=S.split("/");c(u,{provider:g,model:h.join("/")})}}}):e.jsxs("span",{className:"text-xs text-amber-400",children:[d("modelRouting.noModelAvailable"),e.jsxs("span",{className:"text-fg-tertiary ml-1",children:["— ",d("modelRouting.addProviderHint")]})]})}),e.jsxs("div",{className:"w-14 shrink-0 flex justify-end",children:[j&&e.jsx("span",{className:"text-[10px] text-red-400 font-medium",title:d("modelRouting.mismatchHint"),children:"⚠"}),!j&&K&&e.jsx("span",{className:"text-[10px] text-yellow-400 font-medium",title:d("modelRouting.staleProvider"),children:"⚠"}),!j&&!K&&A&&e.jsx(Ar,{tier:A}),!j&&!K&&!A&&p&&e.jsx(Ar,{tier:"unknown"})]}),e.jsx("div",{className:"w-8 shrink-0 flex justify-end",children:p&&e.jsx("button",{onClick:()=>c(u,null),className:"text-fg-tertiary hover:text-red-400 transition-colors",title:d("modelRouting.clear"),children:e.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})})]},u)})})]})}function ma(s,r,o){return s.find(a=>a.provider===r&&a.modelId===o)?.tier}function ga({status:s,t:r}){if(s==="idle")return null;const o={idle:"",saving:"text-fg-tertiary",saved:"text-green-400",error:"text-red-400"},n={idle:"",saving:r("modelRouting.saving"),saved:r("modelRouting.saved"),error:r("modelRouting.saveError")};return e.jsx("div",{className:`text-xs font-medium transition-opacity ${o[s]}`,children:n[s]})}function Ar({tier:s}){const r={max:"bg-purple-500/20 text-purple-400 border-purple-500/30",pro:"bg-blue-500/20 text-blue-400 border-blue-500/30",base:"bg-gray-500/20 text-gray-400 border-gray-500/30",unknown:"bg-gray-500/10 text-fg-tertiary border-border-default"};return e.jsx("span",{className:`px-1.5 py-0.5 text-[9px] rounded font-semibold uppercase border ${r[s]??r.unknown}`,children:s==="unknown"?"—":s})}const fa=new Set(["imageGeneration","tts","stt","videoGeneration","audioOutput","audioInput"]);function jn(s,r){if(r==="text")return s.filter(d=>!(d.capabilities&&d.capabilities.some(c=>fa.has(c))||d.mode&&d.mode!=="chat"));const o={image_generation:["image_generation"],audio_tts:["audio_speech"],audio_stt:["audio_transcription"],video_generation:["video_generation"]},n={image_recognition:["vision"],image_generation:["imageGeneration"],audio_tts:["tts"],audio_stt:["stt"],video_generation:["videoGeneration"]},a=o[r],t=n[r];return s.filter(d=>!!(d.capabilities&&d.capabilities.length>0&&t&&t.some(c=>d.capabilities.includes(c))||a&&d.mode&&a.includes(d.mode)))}const Ct=[{id:"markus",label:"Markus Cloud AI",envKey:"MARKUS_SUBSCRIPTION_KEY",defaultModel:""},{id:"anthropic",label:"Anthropic",envKey:"ANTHROPIC_API_KEY",defaultModel:"claude-opus-4-6"},{id:"openai",label:"OpenAI",envKey:"OPENAI_API_KEY",defaultModel:"gpt-5.4"},{id:"google",label:"Google Gemini",envKey:"GOOGLE_API_KEY",defaultModel:"gemini-3-1-pro"},{id:"deepseek",label:"DeepSeek",envKey:"DEEPSEEK_API_KEY",baseUrl:"https://api.deepseek.com",defaultModel:"deepseek-v4-flash"},{id:"siliconflow",label:"SiliconFlow (中国)",envKey:"SILICONFLOW_API_KEY",baseUrl:"https://api.siliconflow.cn/v1",defaultModel:"Qwen/Qwen3.5-35B-A3B"},{id:"siliconflow-intl",label:"SiliconFlow (Global)",envKey:"SILICONFLOW_INTL_API_KEY",baseUrl:"https://api-st.siliconflow.cn/v1",defaultModel:"Qwen/Qwen3.5-35B-A3B"},{id:"minimax",label:"MiniMax (Global)",envKey:"MINIMAX_API_KEY",baseUrl:"https://api.minimax.io/v1",defaultModel:"MiniMax-M3"},{id:"minimax-cn",label:"MiniMax (中国)",envKey:"MINIMAX_CN_API_KEY",baseUrl:"https://api.minimaxi.com/v1",defaultModel:"MiniMax-M3"},{id:"openrouter",label:"OpenRouter",envKey:"OPENROUTER_API_KEY",baseUrl:"https://openrouter.ai/api/v1",defaultModel:"xiaomi/mimo-v2-pro:free"},{id:"zai",label:"ZAI (GLM)",envKey:"ZAI_API_KEY",baseUrl:"https://api.z.ai/api/paas/v4",defaultModel:"glm-5.1"},{id:"xai",label:"xAI (Grok)",envKey:"XAI_API_KEY",baseUrl:"https://api.x.ai/v1",defaultModel:"grok-3"},{id:"mistral",label:"Mistral AI",envKey:"MISTRAL_API_KEY",baseUrl:"https://api.mistral.ai/v1",defaultModel:"mistral-large-latest"},{id:"groq",label:"Groq",envKey:"GROQ_API_KEY",baseUrl:"https://api.groq.com/openai/v1",defaultModel:"llama-3.3-70b-versatile"},{id:"perplexity",label:"Perplexity",envKey:"PERPLEXITY_API_KEY",baseUrl:"https://api.perplexity.ai",defaultModel:"sonar-pro"},{id:"cohere",label:"Cohere",envKey:"COHERE_API_KEY",baseUrl:"https://api.cohere.ai/compatibility/v1",defaultModel:"command-r-plus"},{id:"together_ai",label:"Together AI",envKey:"TOGETHER_API_KEY",baseUrl:"https://api.together.xyz/v1",defaultModel:"meta-llama/Llama-3.3-70B-Instruct-Turbo"},{id:"fireworks_ai",label:"Fireworks AI",envKey:"FIREWORKS_API_KEY",baseUrl:"https://api.fireworks.ai/inference/v1",defaultModel:"accounts/fireworks/models/llama-v3p3-70b-instruct"},{id:"moonshot",label:"Moonshot (Kimi)",envKey:"MOONSHOT_API_KEY",baseUrl:"https://api.moonshot.cn/v1",defaultModel:"moonshot-v1-auto"},{id:"volcengine",label:"Volcengine (Doubao)",envKey:"VOLCENGINE_API_KEY",baseUrl:"https://ark.cn-beijing.volces.com/api/v3",defaultModel:"doubao-1.5-pro-32k"},{id:"dashscope",label:"DashScope (Qwen)",envKey:"DASHSCOPE_API_KEY",baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",defaultModel:"qwen-max"},{id:"ollama",label:"Ollama (Local)",envKey:"OLLAMA_BASE_URL",baseUrl:"http://localhost:11434/v1",defaultModel:"llama3"},{id:"atlascloud",label:"Atlas Cloud (Full-Modal)",envKey:"ATLASCLOUD_API_KEY",baseUrl:"https://api.atlascloud.ai/v1",defaultModel:"claude-sonnet-4-6"},{id:"strongly",label:"Strongly.AI (Full-Modal)",envKey:"STRONGLY_API_KEY",baseUrl:"https://api.strongly.ai/v1",defaultModel:"claude-sonnet-4-6"}];var Ye={},os,Mr;function pa(){return Mr||(Mr=1,os=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),os}var is={},De={},Tr;function $e(){if(Tr)return De;Tr=1;let s;const r=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return De.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},De.getSymbolTotalCodewords=function(n){return r[n]},De.getBCHDigit=function(o){let n=0;for(;o!==0;)n++,o>>>=1;return n},De.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');s=n},De.isKanjiModeEnabled=function(){return typeof s<"u"},De.toSJIS=function(n){return s(n)},De}var ls={},Er;function _s(){return Er||(Er=1,(function(s){s.L={bit:1},s.M={bit:0},s.Q={bit:3},s.H={bit:2};function r(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.toLowerCase()){case"l":case"low":return s.L;case"m":case"medium":return s.M;case"q":case"quartile":return s.Q;case"h":case"high":return s.H;default:throw new Error("Unknown EC Level: "+o)}}s.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},s.from=function(n,a){if(s.isValid(n))return n;try{return r(n)}catch{return a}}})(ls)),ls}var ds,Ir;function ha(){if(Ir)return ds;Ir=1;function s(){this.buffer=[],this.length=0}return s.prototype={get:function(r){const o=Math.floor(r/8);return(this.buffer[o]>>>7-r%8&1)===1},put:function(r,o){for(let n=0;n<o;n++)this.putBit((r>>>o-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){const o=Math.floor(this.length/8);this.buffer.length<=o&&this.buffer.push(0),r&&(this.buffer[o]|=128>>>this.length%8),this.length++}},ds=s,ds}var cs,Lr;function ba(){if(Lr)return cs;Lr=1;function s(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}return s.prototype.set=function(r,o,n,a){const t=r*this.size+o;this.data[t]=n,a&&(this.reservedBit[t]=!0)},s.prototype.get=function(r,o){return this.data[r*this.size+o]},s.prototype.xor=function(r,o,n){this.data[r*this.size+o]^=n},s.prototype.isReserved=function(r,o){return this.reservedBit[r*this.size+o]},cs=s,cs}var us={},Rr;function ya(){return Rr||(Rr=1,(function(s){const r=$e().getSymbolSize;s.getRowColCoords=function(n){if(n===1)return[];const a=Math.floor(n/7)+2,t=r(n),d=t===145?26:Math.ceil((t-13)/(2*a-2))*2,c=[t-7];for(let u=1;u<a-1;u++)c[u]=c[u-1]-d;return c.push(6),c.reverse()},s.getPositions=function(n){const a=[],t=s.getRowColCoords(n),d=t.length;for(let c=0;c<d;c++)for(let u=0;u<d;u++)c===0&&u===0||c===0&&u===d-1||c===d-1&&u===0||a.push([t[c],t[u]]);return a}})(us)),us}var xs={},Or;function va(){if(Or)return xs;Or=1;const s=$e().getSymbolSize,r=7;return xs.getPositions=function(n){const a=s(n);return[[0,0],[a-r,0],[0,a-r]]},xs}var ms={},Br;function ja(){return Br||(Br=1,(function(s){s.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const r={N1:3,N2:3,N3:40,N4:10};s.isValid=function(a){return a!=null&&a!==""&&!isNaN(a)&&a>=0&&a<=7},s.from=function(a){return s.isValid(a)?parseInt(a,10):void 0},s.getPenaltyN1=function(a){const t=a.size;let d=0,c=0,u=0,p=null,y=null;for(let T=0;T<t;T++){c=u=0,p=y=null;for(let x=0;x<t;x++){let v=a.get(T,x);v===p?c++:(c>=5&&(d+=r.N1+(c-5)),p=v,c=1),v=a.get(x,T),v===y?u++:(u>=5&&(d+=r.N1+(u-5)),y=v,u=1)}c>=5&&(d+=r.N1+(c-5)),u>=5&&(d+=r.N1+(u-5))}return d},s.getPenaltyN2=function(a){const t=a.size;let d=0;for(let c=0;c<t-1;c++)for(let u=0;u<t-1;u++){const p=a.get(c,u)+a.get(c,u+1)+a.get(c+1,u)+a.get(c+1,u+1);(p===4||p===0)&&d++}return d*r.N2},s.getPenaltyN3=function(a){const t=a.size;let d=0,c=0,u=0;for(let p=0;p<t;p++){c=u=0;for(let y=0;y<t;y++)c=c<<1&2047|a.get(p,y),y>=10&&(c===1488||c===93)&&d++,u=u<<1&2047|a.get(y,p),y>=10&&(u===1488||u===93)&&d++}return d*r.N3},s.getPenaltyN4=function(a){let t=0;const d=a.data.length;for(let u=0;u<d;u++)t+=a.data[u];return Math.abs(Math.ceil(t*100/d/5)-10)*r.N4};function o(n,a,t){switch(n){case s.Patterns.PATTERN000:return(a+t)%2===0;case s.Patterns.PATTERN001:return a%2===0;case s.Patterns.PATTERN010:return t%3===0;case s.Patterns.PATTERN011:return(a+t)%3===0;case s.Patterns.PATTERN100:return(Math.floor(a/2)+Math.floor(t/3))%2===0;case s.Patterns.PATTERN101:return a*t%2+a*t%3===0;case s.Patterns.PATTERN110:return(a*t%2+a*t%3)%2===0;case s.Patterns.PATTERN111:return(a*t%3+(a+t)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}s.applyMask=function(a,t){const d=t.size;for(let c=0;c<d;c++)for(let u=0;u<d;u++)t.isReserved(u,c)||t.xor(u,c,o(a,u,c))},s.getBestMask=function(a,t){const d=Object.keys(s.Patterns).length;let c=0,u=1/0;for(let p=0;p<d;p++){t(p),s.applyMask(p,a);const y=s.getPenaltyN1(a)+s.getPenaltyN2(a)+s.getPenaltyN3(a)+s.getPenaltyN4(a);s.applyMask(p,a),y<u&&(u=y,c=p)}return c}})(ms)),ms}var St={},_r;function Nn(){if(_r)return St;_r=1;const s=_s(),r=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],o=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return St.getBlocksCount=function(a,t){switch(t){case s.L:return r[(a-1)*4+0];case s.M:return r[(a-1)*4+1];case s.Q:return r[(a-1)*4+2];case s.H:return r[(a-1)*4+3];default:return}},St.getTotalCodewordsCount=function(a,t){switch(t){case s.L:return o[(a-1)*4+0];case s.M:return o[(a-1)*4+1];case s.Q:return o[(a-1)*4+2];case s.H:return o[(a-1)*4+3];default:return}},St}var gs={},at={},Dr;function Na(){if(Dr)return at;Dr=1;const s=new Uint8Array(512),r=new Uint8Array(256);return(function(){let n=1;for(let a=0;a<255;a++)s[a]=n,r[n]=a,n<<=1,n&256&&(n^=285);for(let a=255;a<512;a++)s[a]=s[a-255]})(),at.log=function(n){if(n<1)throw new Error("log("+n+")");return r[n]},at.exp=function(n){return s[n]},at.mul=function(n,a){return n===0||a===0?0:s[r[n]+r[a]]},at}var Kr;function wa(){return Kr||(Kr=1,(function(s){const r=Na();s.mul=function(n,a){const t=new Uint8Array(n.length+a.length-1);for(let d=0;d<n.length;d++)for(let c=0;c<a.length;c++)t[d+c]^=r.mul(n[d],a[c]);return t},s.mod=function(n,a){let t=new Uint8Array(n);for(;t.length-a.length>=0;){const d=t[0];for(let u=0;u<a.length;u++)t[u]^=r.mul(a[u],d);let c=0;for(;c<t.length&&t[c]===0;)c++;t=t.slice(c)}return t},s.generateECPolynomial=function(n){let a=new Uint8Array([1]);for(let t=0;t<n;t++)a=s.mul(a,new Uint8Array([1,r.exp(t)]));return a}})(gs)),gs}var fs,Ur;function ka(){if(Ur)return fs;Ur=1;const s=wa();function r(o){this.genPoly=void 0,this.degree=o,this.degree&&this.initialize(this.degree)}return r.prototype.initialize=function(n){this.degree=n,this.genPoly=s.generateECPolynomial(this.degree)},r.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const a=new Uint8Array(n.length+this.degree);a.set(n);const t=s.mod(a,this.genPoly),d=this.degree-t.length;if(d>0){const c=new Uint8Array(this.degree);return c.set(t,d),c}return t},fs=r,fs}var ps={},hs={},bs={},Fr;function wn(){return Fr||(Fr=1,bs.isValid=function(r){return!isNaN(r)&&r>=1&&r<=40}),bs}var Pe={},$r;function kn(){if($r)return Pe;$r=1;const s="[0-9]+",r="[A-Z $%*+\\-./:]+";let o="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";o=o.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+o+`)(?:.|[\r
2
2
  ]))+`;Pe.KANJI=new RegExp(o,"g"),Pe.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),Pe.BYTE=new RegExp(n,"g"),Pe.NUMERIC=new RegExp(s,"g"),Pe.ALPHANUMERIC=new RegExp(r,"g");const a=new RegExp("^"+o+"$"),t=new RegExp("^"+s+"$"),d=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return Pe.testKanji=function(u){return a.test(u)},Pe.testNumeric=function(u){return t.test(u)},Pe.testAlphanumeric=function(u){return d.test(u)},Pe}var Vr;function Ve(){return Vr||(Vr=1,(function(s){const r=wn(),o=kn();s.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},s.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},s.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},s.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},s.MIXED={bit:-1},s.getCharCountIndicator=function(t,d){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!r.isValid(d))throw new Error("Invalid version: "+d);return d>=1&&d<10?t.ccBits[0]:d<27?t.ccBits[1]:t.ccBits[2]},s.getBestModeForData=function(t){return o.testNumeric(t)?s.NUMERIC:o.testAlphanumeric(t)?s.ALPHANUMERIC:o.testKanji(t)?s.KANJI:s.BYTE},s.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},s.isValid=function(t){return t&&t.bit&&t.ccBits};function n(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"numeric":return s.NUMERIC;case"alphanumeric":return s.ALPHANUMERIC;case"kanji":return s.KANJI;case"byte":return s.BYTE;default:throw new Error("Unknown mode: "+a)}}s.from=function(t,d){if(s.isValid(t))return t;try{return n(t)}catch{return d}}})(hs)),hs}var Hr;function Ca(){return Hr||(Hr=1,(function(s){const r=$e(),o=Nn(),n=_s(),a=Ve(),t=wn(),d=7973,c=r.getBCHDigit(d);function u(x,v,w){for(let A=1;A<=40;A++)if(v<=s.getCapacity(A,w,x))return A}function p(x,v){return a.getCharCountIndicator(x,v)+4}function y(x,v){let w=0;return x.forEach(function(A){const K=p(A.mode,v);w+=K+A.getBitsLength()}),w}function T(x,v){for(let w=1;w<=40;w++)if(y(x,w)<=s.getCapacity(w,v,a.MIXED))return w}s.from=function(v,w){return t.isValid(v)?parseInt(v,10):w},s.getCapacity=function(v,w,A){if(!t.isValid(v))throw new Error("Invalid QR Code version");typeof A>"u"&&(A=a.BYTE);const K=r.getSymbolTotalCodewords(v),j=o.getTotalCodewordsCount(v,w),S=(K-j)*8;if(A===a.MIXED)return S;const g=S-p(A,v);switch(A){case a.NUMERIC:return Math.floor(g/10*3);case a.ALPHANUMERIC:return Math.floor(g/11*2);case a.KANJI:return Math.floor(g/13);case a.BYTE:default:return Math.floor(g/8)}},s.getBestVersionForData=function(v,w){let A;const K=n.from(w,n.M);if(Array.isArray(v)){if(v.length>1)return T(v,K);if(v.length===0)return 1;A=v[0]}else A=v;return u(A.mode,A.getLength(),K)},s.getEncodedBits=function(v){if(!t.isValid(v)||v<7)throw new Error("Invalid QR Code version");let w=v<<12;for(;r.getBCHDigit(w)-c>=0;)w^=d<<r.getBCHDigit(w)-c;return v<<12|w}})(ps)),ps}var ys={},qr;function Sa(){if(qr)return ys;qr=1;const s=$e(),r=1335,o=21522,n=s.getBCHDigit(r);return ys.getEncodedBits=function(t,d){const c=t.bit<<3|d;let u=c<<10;for(;s.getBCHDigit(u)-n>=0;)u^=r<<s.getBCHDigit(u)-n;return(c<<10|u)^o},ys}var vs={},js,zr;function Pa(){if(zr)return js;zr=1;const s=Ve();function r(o){this.mode=s.NUMERIC,this.data=o.toString()}return r.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let a,t,d;for(a=0;a+3<=this.data.length;a+=3)t=this.data.substr(a,3),d=parseInt(t,10),n.put(d,10);const c=this.data.length-a;c>0&&(t=this.data.substr(a),d=parseInt(t,10),n.put(d,c*3+1))},js=r,js}var Ns,Wr;function Aa(){if(Wr)return Ns;Wr=1;const s=Ve(),r=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function o(n){this.mode=s.ALPHANUMERIC,this.data=n}return o.getBitsLength=function(a){return 11*Math.floor(a/2)+6*(a%2)},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(a){let t;for(t=0;t+2<=this.data.length;t+=2){let d=r.indexOf(this.data[t])*45;d+=r.indexOf(this.data[t+1]),a.put(d,11)}this.data.length%2&&a.put(r.indexOf(this.data[t]),6)},Ns=o,Ns}var ws,Gr;function Ma(){if(Gr)return ws;Gr=1;const s=Ve();function r(o){this.mode=s.BYTE,typeof o=="string"?this.data=new TextEncoder().encode(o):this.data=new Uint8Array(o)}return r.getBitsLength=function(n){return n*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(o){for(let n=0,a=this.data.length;n<a;n++)o.put(this.data[n],8)},ws=r,ws}var ks,Yr;function Ta(){if(Yr)return ks;Yr=1;const s=Ve(),r=$e();function o(n){this.mode=s.KANJI,this.data=n}return o.getBitsLength=function(a){return a*13},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(n){let a;for(a=0;a<this.data.length;a++){let t=r.toSJIS(this.data[a]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[a]+`
3
3
  Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),n.put(t,13)}},ks=o,ks}var Cs={exports:{}},Jr;function Ea(){return Jr||(Jr=1,(function(s){var r={single_source_shortest_paths:function(o,n,a){var t={},d={};d[n]=0;var c=r.PriorityQueue.make();c.push(n,0);for(var u,p,y,T,x,v,w,A,K;!c.empty();){u=c.pop(),p=u.value,T=u.cost,x=o[p]||{};for(y in x)x.hasOwnProperty(y)&&(v=x[y],w=T+v,A=d[y],K=typeof d[y]>"u",(K||A>w)&&(d[y]=w,c.push(y,w),t[y]=p))}if(typeof a<"u"&&typeof d[a]>"u"){var j=["Could not find a path from ",n," to ",a,"."].join("");throw new Error(j)}return t},extract_shortest_path_from_predecessor_list:function(o,n){for(var a=[],t=n;t;)a.push(t),o[t],t=o[t];return a.reverse(),a},find_path:function(o,n,a){var t=r.single_source_shortest_paths(o,n,a);return r.extract_shortest_path_from_predecessor_list(t,a)},PriorityQueue:{make:function(o){var n=r.PriorityQueue,a={},t;o=o||{};for(t in n)n.hasOwnProperty(t)&&(a[t]=n[t]);return a.queue=[],a.sorter=o.sorter||n.default_sorter,a},default_sorter:function(o,n){return o.cost-n.cost},push:function(o,n){var a={value:o,cost:n};this.queue.push(a),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};s.exports=r})(Cs)),Cs.exports}var Qr;function Ia(){return Qr||(Qr=1,(function(s){const r=Ve(),o=Pa(),n=Aa(),a=Ma(),t=Ta(),d=kn(),c=$e(),u=Ea();function p(j){return unescape(encodeURIComponent(j)).length}function y(j,S,g){const h=[];let N;for(;(N=j.exec(g))!==null;)h.push({data:N[0],index:N.index,mode:S,length:N[0].length});return h}function T(j){const S=y(d.NUMERIC,r.NUMERIC,j),g=y(d.ALPHANUMERIC,r.ALPHANUMERIC,j);let h,N;return c.isKanjiModeEnabled()?(h=y(d.BYTE,r.BYTE,j),N=y(d.KANJI,r.KANJI,j)):(h=y(d.BYTE_KANJI,r.BYTE,j),N=[]),S.concat(g,h,N).sort(function(O,U){return O.index-U.index}).map(function(O){return{data:O.data,mode:O.mode,length:O.length}})}function x(j,S){switch(S){case r.NUMERIC:return o.getBitsLength(j);case r.ALPHANUMERIC:return n.getBitsLength(j);case r.KANJI:return t.getBitsLength(j);case r.BYTE:return a.getBitsLength(j)}}function v(j){return j.reduce(function(S,g){const h=S.length-1>=0?S[S.length-1]:null;return h&&h.mode===g.mode?(S[S.length-1].data+=g.data,S):(S.push(g),S)},[])}function w(j){const S=[];for(let g=0;g<j.length;g++){const h=j[g];switch(h.mode){case r.NUMERIC:S.push([h,{data:h.data,mode:r.ALPHANUMERIC,length:h.length},{data:h.data,mode:r.BYTE,length:h.length}]);break;case r.ALPHANUMERIC:S.push([h,{data:h.data,mode:r.BYTE,length:h.length}]);break;case r.KANJI:S.push([h,{data:h.data,mode:r.BYTE,length:p(h.data)}]);break;case r.BYTE:S.push([{data:h.data,mode:r.BYTE,length:p(h.data)}])}}return S}function A(j,S){const g={},h={start:{}};let N=["start"];for(let E=0;E<j.length;E++){const O=j[E],U=[];for(let _=0;_<O.length;_++){const D=O[_],R=""+E+_;U.push(R),g[R]={node:D,lastCount:0},h[R]={};for(let P=0;P<N.length;P++){const f=N[P];g[f]&&g[f].node.mode===D.mode?(h[f][R]=x(g[f].lastCount+D.length,D.mode)-x(g[f].lastCount,D.mode),g[f].lastCount+=D.length):(g[f]&&(g[f].lastCount=D.length),h[f][R]=x(D.length,D.mode)+4+r.getCharCountIndicator(D.mode,S))}}N=U}for(let E=0;E<N.length;E++)h[N[E]].end=0;return{map:h,table:g}}function K(j,S){let g;const h=r.getBestModeForData(j);if(g=r.from(S,h),g!==r.BYTE&&g.bit<h.bit)throw new Error('"'+j+'" cannot be encoded with mode '+r.toString(g)+`.
4
4
  Suggested mode is: `+r.toString(h));switch(g===r.KANJI&&!c.isKanjiModeEnabled()&&(g=r.BYTE),g){case r.NUMERIC:return new o(j);case r.ALPHANUMERIC:return new n(j);case r.KANJI:return new t(j);case r.BYTE:return new a(j)}}s.fromArray=function(S){return S.reduce(function(g,h){return typeof h=="string"?g.push(K(h,null)):h.data&&g.push(K(h.data,h.mode)),g},[])},s.fromString=function(S,g){const h=T(S,c.isKanjiModeEnabled()),N=w(h),E=A(N,g),O=u.find_path(E.map,"start","end"),U=[];for(let _=1;_<O.length-1;_++)U.push(E.table[O[_]].node);return s.fromArray(v(U))},s.rawSplit=function(S){return s.fromArray(T(S,c.isKanjiModeEnabled()))}})(vs)),vs}var Xr;function La(){if(Xr)return is;Xr=1;const s=$e(),r=_s(),o=ha(),n=ba(),a=ya(),t=va(),d=ja(),c=Nn(),u=ka(),p=Ca(),y=Sa(),T=Ve(),x=Ia();function v(E,O){const U=E.size,_=t.getPositions(O);for(let D=0;D<_.length;D++){const R=_[D][0],P=_[D][1];for(let f=-1;f<=7;f++)if(!(R+f<=-1||U<=R+f))for(let k=-1;k<=7;k++)P+k<=-1||U<=P+k||(f>=0&&f<=6&&(k===0||k===6)||k>=0&&k<=6&&(f===0||f===6)||f>=2&&f<=4&&k>=2&&k<=4?E.set(R+f,P+k,!0,!0):E.set(R+f,P+k,!1,!0))}}function w(E){const O=E.size;for(let U=8;U<O-8;U++){const _=U%2===0;E.set(U,6,_,!0),E.set(6,U,_,!0)}}function A(E,O){const U=a.getPositions(O);for(let _=0;_<U.length;_++){const D=U[_][0],R=U[_][1];for(let P=-2;P<=2;P++)for(let f=-2;f<=2;f++)P===-2||P===2||f===-2||f===2||P===0&&f===0?E.set(D+P,R+f,!0,!0):E.set(D+P,R+f,!1,!0)}}function K(E,O){const U=E.size,_=p.getEncodedBits(O);let D,R,P;for(let f=0;f<18;f++)D=Math.floor(f/3),R=f%3+U-8-3,P=(_>>f&1)===1,E.set(D,R,P,!0),E.set(R,D,P,!0)}function j(E,O,U){const _=E.size,D=y.getEncodedBits(O,U);let R,P;for(R=0;R<15;R++)P=(D>>R&1)===1,R<6?E.set(R,8,P,!0):R<8?E.set(R+1,8,P,!0):E.set(_-15+R,8,P,!0),R<8?E.set(8,_-R-1,P,!0):R<9?E.set(8,15-R-1+1,P,!0):E.set(8,15-R-1,P,!0);E.set(_-8,8,1,!0)}function S(E,O){const U=E.size;let _=-1,D=U-1,R=7,P=0;for(let f=U-1;f>0;f-=2)for(f===6&&f--;;){for(let k=0;k<2;k++)if(!E.isReserved(D,f-k)){let $=!1;P<O.length&&($=(O[P]>>>R&1)===1),E.set(D,f-k,$),R--,R===-1&&(P++,R=7)}if(D+=_,D<0||U<=D){D-=_,_=-_;break}}}function g(E,O,U){const _=new o;U.forEach(function(k){_.put(k.mode.bit,4),_.put(k.getLength(),T.getCharCountIndicator(k.mode,E)),k.write(_)});const D=s.getSymbolTotalCodewords(E),R=c.getTotalCodewordsCount(E,O),P=(D-R)*8;for(_.getLengthInBits()+4<=P&&_.put(0,4);_.getLengthInBits()%8!==0;)_.putBit(0);const f=(P-_.getLengthInBits())/8;for(let k=0;k<f;k++)_.put(k%2?17:236,8);return h(_,E,O)}function h(E,O,U){const _=s.getSymbolTotalCodewords(O),D=c.getTotalCodewordsCount(O,U),R=_-D,P=c.getBlocksCount(O,U),f=_%P,k=P-f,$=Math.floor(_/P),J=Math.floor(R/P),Z=J+1,ne=$-J,I=new u(ne);let H=0;const q=new Array(P),m=new Array(P);let L=0;const V=new Uint8Array(E.buffer);for(let le=0;le<P;le++){const Ee=le<k?J:Z;q[le]=V.slice(H,H+Ee),m[le]=I.encode(q[le]),H+=Ee,L=Math.max(L,Ee)}const X=new Uint8Array(_);let ee=0,Q,Y;for(Q=0;Q<L;Q++)for(Y=0;Y<P;Y++)Q<q[Y].length&&(X[ee++]=q[Y][Q]);for(Q=0;Q<ne;Q++)for(Y=0;Y<P;Y++)X[ee++]=m[Y][Q];return X}function N(E,O,U,_){let D;if(Array.isArray(E))D=x.fromArray(E);else if(typeof E=="string"){let $=O;if(!$){const J=x.rawSplit(E);$=p.getBestVersionForData(J,U)}D=x.fromString(E,$||40)}else throw new Error("Invalid data");const R=p.getBestVersionForData(D,U);if(!R)throw new Error("The amount of data is too big to be stored in a QR Code");if(!O)O=R;else if(O<R)throw new Error(`
@@ -1 +1 @@
1
- import{u as y,r as d,a as S,b as T,j as e,S as N,T as L,c as _,d as M,I as E,h as z,i as D}from"./index-DO8_O8Vw.js";const k=[{id:"discover"},{id:"agents"},{id:"teams"},{id:"skills"},{id:"installed"}],I={agent:"agents",team:"teams",skill:"skills",connector:"skills"},C={discover:"M12 2l2.4 6.9L21 9l-5.4 4 2 7-5.6-4.1L6.4 20l2-7L3 9l6.6-.1z",agents:"M12 2a5 5 0 015 5v1a5 5 0 01-10 0V7a5 5 0 015-5zM4 21a8 8 0 0116 0z",teams:"M16 11a4 4 0 10-4-4 4 4 0 004 4zM8 13a3 3 0 10-3-3 3 3 0 003 3zm0 2c-2.7 0-5 1.3-5 3v2h7v-2c0-.7.2-1.3.6-1.9A7.6 7.6 0 008 15zm8 0c-3 0-6 1.5-6 3.5V21h12v-2.5c0-2-3-3.5-6-3.5z",skills:"M13 2L3 14h7l-1 8 10-12h-7z",installed:"M12 3v12m0 0l-4-4m4 4l4-4M5 21h14"};function b(a){return a==="discover"||a==="agents"||a==="teams"||a==="skills"||a==="installed"}function w(){const a=localStorage.getItem("markus_nav_installItem"),i=localStorage.getItem("markus_nav_storeTab");if(a)return{tab:b(i)?i:"agents",installId:a};const x=new URLSearchParams(window.location.search),s=x.get("install");if(s){const n=x.get("type");return{tab:n&&I[n]||"agents",installId:s}}return{tab:b(i)?i:"discover",installId:null}}function j(){localStorage.removeItem("markus_nav_installItem"),localStorage.removeItem("markus_nav_storeTab");const a=new URLSearchParams(window.location.search);if(a.has("install")||a.has("type")){a.delete("install"),a.delete("type");const i=a.toString();window.history.replaceState(null,"",window.location.pathname+(i?`?${i}`:"")+window.location.hash)}}function H({itemId:a,onDismiss:i,onInstalled:x}){const{t:s}=y(["store","common"]),[n,g]=d.useState(null),[h,o]=d.useState("loading"),[c,p]=d.useState(!1),[m,u]=d.useState("");d.useEffect(()=>{let r=!1;return o("loading"),g(null),u(""),z.getItem(a).then(({item:l})=>{r||(l?(g(l),o("ready")):o("missing"))}).catch(()=>{r||o("missing")}),()=>{r=!0}},[a]);const t=async()=>{if(!(!n||c)){p(!0),u("");try{await D(n),u(s("deepLink.installed")),x()}catch(r){const l=r instanceof Error?r.message:"";u(l.includes("402")||l.includes("Purchase")?s("deepLink.purchaseRequired"):s("deepLink.failed"))}finally{p(!1)}}};return e.jsxs("div",{className:"shrink-0 mx-3 mt-3 mb-1 rounded-xl border border-brand-500/30 bg-brand-600/10 px-4 py-3 flex flex-col sm:flex-row sm:items-center gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"text-[11px] font-semibold uppercase tracking-wider text-brand-400/90 mb-0.5",children:s("deepLink.fromHub")}),h==="loading"&&e.jsx("p",{className:"text-sm text-fg-secondary",children:s("deepLink.loading")}),h==="missing"&&e.jsx("p",{className:"text-sm text-rose-300",children:s("deepLink.missing")}),h==="ready"&&n&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm font-semibold text-fg-primary truncate",children:n.name}),n.description&&e.jsx("p",{className:"text-xs text-fg-tertiary line-clamp-2 mt-0.5",children:n.description}),m&&e.jsx("p",{className:"text-xs mt-1 text-brand-300",children:m})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[h==="ready"&&n&&e.jsx("button",{type:"button",disabled:c,onClick:()=>{t()},className:"px-3.5 py-2 rounded-lg text-xs font-semibold bg-brand-600 hover:bg-brand-500 text-white disabled:opacity-60",children:s(c?"deepLink.installing":"deepLink.install")}),e.jsx("button",{type:"button",onClick:i,className:"px-2.5 py-2 rounded-lg text-xs text-fg-tertiary hover:text-fg-secondary hover:bg-surface-elevated/60",children:s("deepLink.dismiss")})]})]})}function P({authUser:a}){const{t:i}=y(["store","common"]),[x]=d.useState(w),[s,n]=d.useState(x.tab),g=S(),h=T(k,s,n),[o,c]=d.useState(x.installId);d.useEffect(()=>{const t=w();t.installId&&(c(t.installId),b(t.tab)&&n(t.tab),j())},[]),d.useEffect(()=>{const t=r=>{const l=r.detail;if(l.page==="store"||l.page==="explore"){const f=l.params?.storeTab??localStorage.getItem("markus_nav_storeTab"),v=l.params?.installItem??localStorage.getItem("markus_nav_installItem");f&&b(f)&&n(f),v&&c(v),(f||v)&&j()}};return window.addEventListener("markus:navigate",t),()=>window.removeEventListener("markus:navigate",t)},[]);const p=(t,r)=>{const l=I[t]??"agents";r&&c(r),n(l)},m=()=>c(null),u=()=>e.jsxs(e.Fragment,{children:[o&&e.jsx(H,{itemId:o,onDismiss:m,onInstalled:m}),s==="discover"&&e.jsx(N,{onOpenType:p}),s==="agents"&&e.jsx(L,{authUser:a,highlightItemId:o,onHighlightDone:m}),s==="teams"&&e.jsx(_,{highlightItemId:o,onHighlightDone:m}),s==="skills"&&e.jsx(M,{highlightItemId:o,onHighlightDone:m}),s==="installed"&&e.jsx(E,{})]});return g?e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-col",onTouchStart:h.onTouchStart,onTouchEnd:h.onTouchEnd,children:[e.jsx("div",{className:"flex shrink-0 overflow-x-auto scrollbar-hide",children:k.map(t=>e.jsx("button",{onClick:()=>n(t.id),className:`flex-1 min-w-fit px-4 py-3 text-sm font-medium text-center whitespace-nowrap transition-colors border-b-2 ${s===t.id?"border-brand-500 text-brand-500":"border-transparent text-fg-tertiary hover:text-fg-secondary"}`,children:i(`tabs.${t.id}`)},t.id))}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col",children:u()})]}):e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-row",children:[e.jsxs("nav",{className:"w-36 shrink-0 bg-surface-secondary rounded-xl m-1 mr-0 flex flex-col py-4 px-2 gap-1",children:[e.jsx("div",{className:"px-3 pb-3 mb-1",children:e.jsx("h2",{className:"text-xs font-semibold text-fg-tertiary uppercase tracking-wider",children:i("title")})}),k.map(t=>e.jsxs("button",{onClick:()=>n(t.id),className:`flex items-center gap-2.5 px-3 py-2.5 rounded-lg text-sm font-medium transition-all ${s===t.id?"bg-brand-600/15 text-brand-400 shadow-sm shadow-brand-500/10":"text-fg-tertiary hover:text-fg-secondary hover:bg-surface-elevated/50"}`,children:[e.jsx("svg",{className:"w-4 h-4 shrink-0",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:e.jsx("path",{d:C[t.id]})}),i(`tabs.${t.id}`)]},t.id))]}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col",children:u()})]})}export{P as StorePage};
1
+ import{u as y,r as d,a as S,b as T,j as e,S as N,T as L,c as _,d as M,I as E,h as z,i as D}from"./index-Dgg0L65t.js";const k=[{id:"discover"},{id:"agents"},{id:"teams"},{id:"skills"},{id:"installed"}],I={agent:"agents",team:"teams",skill:"skills",connector:"skills"},C={discover:"M12 2l2.4 6.9L21 9l-5.4 4 2 7-5.6-4.1L6.4 20l2-7L3 9l6.6-.1z",agents:"M12 2a5 5 0 015 5v1a5 5 0 01-10 0V7a5 5 0 015-5zM4 21a8 8 0 0116 0z",teams:"M16 11a4 4 0 10-4-4 4 4 0 004 4zM8 13a3 3 0 10-3-3 3 3 0 003 3zm0 2c-2.7 0-5 1.3-5 3v2h7v-2c0-.7.2-1.3.6-1.9A7.6 7.6 0 008 15zm8 0c-3 0-6 1.5-6 3.5V21h12v-2.5c0-2-3-3.5-6-3.5z",skills:"M13 2L3 14h7l-1 8 10-12h-7z",installed:"M12 3v12m0 0l-4-4m4 4l4-4M5 21h14"};function b(a){return a==="discover"||a==="agents"||a==="teams"||a==="skills"||a==="installed"}function w(){const a=localStorage.getItem("markus_nav_installItem"),i=localStorage.getItem("markus_nav_storeTab");if(a)return{tab:b(i)?i:"agents",installId:a};const x=new URLSearchParams(window.location.search),s=x.get("install");if(s){const n=x.get("type");return{tab:n&&I[n]||"agents",installId:s}}return{tab:b(i)?i:"discover",installId:null}}function j(){localStorage.removeItem("markus_nav_installItem"),localStorage.removeItem("markus_nav_storeTab");const a=new URLSearchParams(window.location.search);if(a.has("install")||a.has("type")){a.delete("install"),a.delete("type");const i=a.toString();window.history.replaceState(null,"",window.location.pathname+(i?`?${i}`:"")+window.location.hash)}}function H({itemId:a,onDismiss:i,onInstalled:x}){const{t:s}=y(["store","common"]),[n,g]=d.useState(null),[h,o]=d.useState("loading"),[c,p]=d.useState(!1),[m,u]=d.useState("");d.useEffect(()=>{let r=!1;return o("loading"),g(null),u(""),z.getItem(a).then(({item:l})=>{r||(l?(g(l),o("ready")):o("missing"))}).catch(()=>{r||o("missing")}),()=>{r=!0}},[a]);const t=async()=>{if(!(!n||c)){p(!0),u("");try{await D(n),u(s("deepLink.installed")),x()}catch(r){const l=r instanceof Error?r.message:"";u(l.includes("402")||l.includes("Purchase")?s("deepLink.purchaseRequired"):s("deepLink.failed"))}finally{p(!1)}}};return e.jsxs("div",{className:"shrink-0 mx-3 mt-3 mb-1 rounded-xl border border-brand-500/30 bg-brand-600/10 px-4 py-3 flex flex-col sm:flex-row sm:items-center gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"text-[11px] font-semibold uppercase tracking-wider text-brand-400/90 mb-0.5",children:s("deepLink.fromHub")}),h==="loading"&&e.jsx("p",{className:"text-sm text-fg-secondary",children:s("deepLink.loading")}),h==="missing"&&e.jsx("p",{className:"text-sm text-rose-300",children:s("deepLink.missing")}),h==="ready"&&n&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm font-semibold text-fg-primary truncate",children:n.name}),n.description&&e.jsx("p",{className:"text-xs text-fg-tertiary line-clamp-2 mt-0.5",children:n.description}),m&&e.jsx("p",{className:"text-xs mt-1 text-brand-300",children:m})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[h==="ready"&&n&&e.jsx("button",{type:"button",disabled:c,onClick:()=>{t()},className:"px-3.5 py-2 rounded-lg text-xs font-semibold bg-brand-600 hover:bg-brand-500 text-white disabled:opacity-60",children:s(c?"deepLink.installing":"deepLink.install")}),e.jsx("button",{type:"button",onClick:i,className:"px-2.5 py-2 rounded-lg text-xs text-fg-tertiary hover:text-fg-secondary hover:bg-surface-elevated/60",children:s("deepLink.dismiss")})]})]})}function P({authUser:a}){const{t:i}=y(["store","common"]),[x]=d.useState(w),[s,n]=d.useState(x.tab),g=S(),h=T(k,s,n),[o,c]=d.useState(x.installId);d.useEffect(()=>{const t=w();t.installId&&(c(t.installId),b(t.tab)&&n(t.tab),j())},[]),d.useEffect(()=>{const t=r=>{const l=r.detail;if(l.page==="store"||l.page==="explore"){const f=l.params?.storeTab??localStorage.getItem("markus_nav_storeTab"),v=l.params?.installItem??localStorage.getItem("markus_nav_installItem");f&&b(f)&&n(f),v&&c(v),(f||v)&&j()}};return window.addEventListener("markus:navigate",t),()=>window.removeEventListener("markus:navigate",t)},[]);const p=(t,r)=>{const l=I[t]??"agents";r&&c(r),n(l)},m=()=>c(null),u=()=>e.jsxs(e.Fragment,{children:[o&&e.jsx(H,{itemId:o,onDismiss:m,onInstalled:m}),s==="discover"&&e.jsx(N,{onOpenType:p}),s==="agents"&&e.jsx(L,{authUser:a,highlightItemId:o,onHighlightDone:m}),s==="teams"&&e.jsx(_,{highlightItemId:o,onHighlightDone:m}),s==="skills"&&e.jsx(M,{highlightItemId:o,onHighlightDone:m}),s==="installed"&&e.jsx(E,{})]});return g?e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-col",onTouchStart:h.onTouchStart,onTouchEnd:h.onTouchEnd,children:[e.jsx("div",{className:"flex shrink-0 overflow-x-auto scrollbar-hide",children:k.map(t=>e.jsx("button",{onClick:()=>n(t.id),className:`flex-1 min-w-fit px-4 py-3 text-sm font-medium text-center whitespace-nowrap transition-colors border-b-2 ${s===t.id?"border-brand-500 text-brand-500":"border-transparent text-fg-tertiary hover:text-fg-secondary"}`,children:i(`tabs.${t.id}`)},t.id))}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col",children:u()})]}):e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-row",children:[e.jsxs("nav",{className:"w-36 shrink-0 bg-surface-secondary rounded-xl m-1 mr-0 flex flex-col py-4 px-2 gap-1",children:[e.jsx("div",{className:"px-3 pb-3 mb-1",children:e.jsx("h2",{className:"text-xs font-semibold text-fg-tertiary uppercase tracking-wider",children:i("title")})}),k.map(t=>e.jsxs("button",{onClick:()=>n(t.id),className:`flex items-center gap-2.5 px-3 py-2.5 rounded-lg text-sm font-medium transition-all ${s===t.id?"bg-brand-600/15 text-brand-400 shadow-sm shadow-brand-500/10":"text-fg-tertiary hover:text-fg-secondary hover:bg-surface-elevated/50"}`,children:[e.jsx("svg",{className:"w-4 h-4 shrink-0",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:e.jsx("path",{d:C[t.id]})}),i(`tabs.${t.id}`)]},t.id))]}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col",children:u()})]})}export{P as StorePage};