@markus-global/cli 0.9.7 → 0.9.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.
- package/dist/markus.mjs +8 -5
- package/dist/web-ui/assets/{CommentInput-JPZATTdP.js → CommentInput-CcU4x-2w.js} +1 -1
- package/dist/web-ui/assets/{ContentRenderer-gaxBn1N9.js → ContentRenderer-C28LBAOD.js} +2 -2
- package/dist/web-ui/assets/DeliverableShareModal-DAR6-GIg.js +1 -0
- package/dist/web-ui/assets/Deliverables-BuFmzt8Q.js +3 -0
- package/dist/web-ui/assets/{Notifications-W-Mx_v6q.js → Notifications-DfEPEYXi.js} +1 -1
- package/dist/web-ui/assets/{Search-Cxtd9r1S.js → Search-DVngYDXA.js} +1 -1
- package/dist/web-ui/assets/{Settings-Q87nTBy5.js → Settings-DL8i8fbx.js} +1 -1
- package/dist/web-ui/assets/{Store-BK54Nx60.js → Store-C5bIowl-.js} +1 -1
- package/dist/web-ui/assets/{Team-CWRLD5sM.js → Team-BPirIx0q.js} +30 -30
- package/dist/web-ui/assets/{Work-xejZ7HCT.js → Work-CjgHtG8z.js} +5 -5
- package/dist/web-ui/assets/{arc-BqhlYS08.js → arc-BT_F7CX9.js} +1 -1
- package/dist/web-ui/assets/{architectureDiagram-3BPJPVTR-C8fUeKGJ.js → architectureDiagram-3BPJPVTR-BgRvj0-5.js} +1 -1
- package/dist/web-ui/assets/{blockDiagram-GPEHLZMM-eILAtQzQ.js → blockDiagram-GPEHLZMM-BHGe_N_M.js} +1 -1
- package/dist/web-ui/assets/{c4Diagram-AAUBKEIU-DdV7TyX_.js → c4Diagram-AAUBKEIU-Bf3z_oHk.js} +1 -1
- package/dist/web-ui/assets/channel-BDoV60FN.js +1 -0
- package/dist/web-ui/assets/{chunk-2J33WTMH-BwuewEg2.js → chunk-2J33WTMH-DUOJv34F.js} +1 -1
- package/dist/web-ui/assets/{chunk-4BX2VUAB-Bv26FANh.js → chunk-4BX2VUAB-BnGMN5aR.js} +1 -1
- package/dist/web-ui/assets/{chunk-55IACEB6-DFTeZroI.js → chunk-55IACEB6-cUvrWf3P.js} +1 -1
- package/dist/web-ui/assets/{chunk-727SXJPM-i7IiTNSf.js → chunk-727SXJPM-DAIeVGil.js} +1 -1
- package/dist/web-ui/assets/{chunk-AQP2D5EJ-BoPcIU1Z.js → chunk-AQP2D5EJ-CvHiJGw_.js} +1 -1
- package/dist/web-ui/assets/{chunk-FMBD7UC4-DTXl3WfT.js → chunk-FMBD7UC4-CuFNK3C8.js} +1 -1
- package/dist/web-ui/assets/{chunk-ND2GUHAM-DdzR-Jnl.js → chunk-ND2GUHAM-DvQAnLZh.js} +1 -1
- package/dist/web-ui/assets/{chunk-QZHKN3VN-DqSW43I1.js → chunk-QZHKN3VN-Aoa5sIU7.js} +1 -1
- package/dist/web-ui/assets/classDiagram-4FO5ZUOK-CsLOGMTv.js +1 -0
- package/dist/web-ui/assets/classDiagram-v2-Q7XG4LA2-CsLOGMTv.js +1 -0
- package/dist/web-ui/assets/{cose-bilkent-S5V4N54A-C-UFRPSb.js → cose-bilkent-S5V4N54A-Uuy7nGWb.js} +1 -1
- package/dist/web-ui/assets/{dagre-BM42HDAG-92ucBloh.js → dagre-BM42HDAG-CF97s255.js} +1 -1
- package/dist/web-ui/assets/{diagram-2AECGRRQ-B8zRoWWP.js → diagram-2AECGRRQ-Cf3bRRU7.js} +1 -1
- package/dist/web-ui/assets/{diagram-5GNKFQAL-CM3pWtYN.js → diagram-5GNKFQAL-DeWiUo-B.js} +1 -1
- package/dist/web-ui/assets/{diagram-KO2AKTUF-V7UmwGTe.js → diagram-KO2AKTUF-g2SF4uuK.js} +1 -1
- package/dist/web-ui/assets/{diagram-LMA3HP47-DG1RtUeD.js → diagram-LMA3HP47-jfceMN5q.js} +1 -1
- package/dist/web-ui/assets/{diagram-OG6HWLK6-BTwLdZJw.js → diagram-OG6HWLK6-CRN8tK4z.js} +1 -1
- package/dist/web-ui/assets/{erDiagram-TEJ5UH35-BNXeXKHH.js → erDiagram-TEJ5UH35-DUTClqO1.js} +1 -1
- package/dist/web-ui/assets/{flowDiagram-I6XJVG4X-VP_sRWgd.js → flowDiagram-I6XJVG4X-miwyCuKa.js} +1 -1
- package/dist/web-ui/assets/{ganttDiagram-6RSMTGT7-CvnpoufX.js → ganttDiagram-6RSMTGT7-Co8Oe3L4.js} +1 -1
- package/dist/web-ui/assets/{gitGraphDiagram-PVQCEYII-zO7DNQqQ.js → gitGraphDiagram-PVQCEYII-VmIpxXAL.js} +1 -1
- package/dist/web-ui/assets/index-DegyOQC4.css +1 -0
- package/dist/web-ui/assets/{index-B1VN5yM1.js → index-sjnbPgLJ.js} +67 -67
- package/dist/web-ui/assets/{infoDiagram-5YYISTIA-BSGbaVLq.js → infoDiagram-5YYISTIA-C4omrfgp.js} +1 -1
- package/dist/web-ui/assets/{ishikawaDiagram-YF4QCWOH-BatvAQOH.js → ishikawaDiagram-YF4QCWOH-Ty2P769k.js} +1 -1
- package/dist/web-ui/assets/{journeyDiagram-JHISSGLW-Cajy4fZr.js → journeyDiagram-JHISSGLW-BKjERdBC.js} +1 -1
- package/dist/web-ui/assets/{kanban-definition-UN3LZRKU-DLpKR4E5.js → kanban-definition-UN3LZRKU-CKepooo8.js} +1 -1
- package/dist/web-ui/assets/{mermaid.core-B4fv65oQ.js → mermaid.core-86q0lHkP.js} +5 -5
- package/dist/web-ui/assets/{mindmap-definition-RKZ34NQL-C2HVqxfu.js → mindmap-definition-RKZ34NQL-DHWtWZRN.js} +1 -1
- package/dist/web-ui/assets/{pieDiagram-4H26LBE5-Bswg7SQl.js → pieDiagram-4H26LBE5-DkU1SDIf.js} +1 -1
- package/dist/web-ui/assets/{quadrantDiagram-W4KKPZXB-CyYiDqNE.js → quadrantDiagram-W4KKPZXB-DJHQgFEW.js} +1 -1
- package/dist/web-ui/assets/{requirementDiagram-4Y6WPE33-BWZmKUo8.js → requirementDiagram-4Y6WPE33-D0PXuzjM.js} +1 -1
- package/dist/web-ui/assets/{sankeyDiagram-5OEKKPKP-C3imZVxk.js → sankeyDiagram-5OEKKPKP-D8ZU245D.js} +1 -1
- package/dist/web-ui/assets/{sequenceDiagram-3UESZ5HK-BrySebCt.js → sequenceDiagram-3UESZ5HK-BKUzkb7M.js} +1 -1
- package/dist/web-ui/assets/{stateDiagram-AJRCARHV-0Lp5CycE.js → stateDiagram-AJRCARHV-hRMrLG3O.js} +1 -1
- package/dist/web-ui/assets/stateDiagram-v2-BHNVJYJU-CS0Tx8JL.js +1 -0
- package/dist/web-ui/assets/{timeline-definition-PNZ67QCA-BIGJbkoS.js → timeline-definition-PNZ67QCA-CDok_Xbq.js} +1 -1
- package/dist/web-ui/assets/{vennDiagram-CIIHVFJN-CS9GEvPk.js → vennDiagram-CIIHVFJN-BYWGyJ9q.js} +1 -1
- package/dist/web-ui/assets/{wardley-L42UT6IY-BSNtMxtd.js → wardley-L42UT6IY-DnhUtsUo.js} +1 -1
- package/dist/web-ui/assets/{wardleyDiagram-YWT4CUSO-CaEGOjwH.js → wardleyDiagram-YWT4CUSO-B--QBlgZ.js} +1 -1
- package/dist/web-ui/assets/{xychartDiagram-2RQKCTM6-Cr_pwOHb.js → xychartDiagram-2RQKCTM6-CgFIWd7_.js} +1 -1
- package/dist/web-ui/index.html +2 -2
- package/package.json +1 -1
- package/dist/web-ui/assets/DeliverableShareModal-B6qqZgFc.js +0 -1
- package/dist/web-ui/assets/Deliverables-BUi9KGwf.js +0 -3
- package/dist/web-ui/assets/channel-C-TW97LX.js +0 -1
- package/dist/web-ui/assets/classDiagram-4FO5ZUOK-C92nY4nN.js +0 -1
- package/dist/web-ui/assets/classDiagram-v2-Q7XG4LA2-C92nY4nN.js +0 -1
- package/dist/web-ui/assets/index-BbQpGkiM.css +0 -1
- package/dist/web-ui/assets/stateDiagram-v2-BHNVJYJU-QVZbqffU.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as pe,r as i,j as e,D as Pn,v as xa,l as V,a as ma,b as ga,c as fa,W as Lr,n as ns,X as pa,Y as Rr,P as Br,h as Ve,i as ha,Z as An,w as ba,o as as,t as Os,_ as ya}from"./index-B1VN5yM1.js";function va(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 ja(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 Na(s){return s.maxInputTokens>0||s.inputCostPer1MTokens>0||s.outputCostPer1MTokens>0}function os(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 Or={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 Mn({models:s,selectedModel:r,onSelect:o,loading:n,compact:a,maxVisible:t,showTiers:d}){const{t:u}=pe("settings"),[x,f]=i.useState(""),[v,T]=i.useState(!1),[m,C]=i.useState(""),w=i.useMemo(()=>{let g=s;if(x){const j=x.toLowerCase();g=g.filter(S=>S.id.toLowerCase().includes(j))}return m&&(g=g.filter(j=>os(j)===m)),g},[s,x,m]),h=i.useMemo(()=>{const g={max:0,pro:0,base:0};for(const j of s)g[os(j)]++;return g},[s]),U=t??(a?5:10),y=v?w:w.slice(0,U),A=w.length>U;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"}),u("modelPicker.loading")]}):s.length===0?e.jsx("div",{className:"py-3 text-sm text-fg-tertiary",children:u("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:()=>C(""),className:`px-2 py-0.5 rounded text-[10px] transition-colors ${m?"bg-surface-overlay text-fg-tertiary hover:text-fg-secondary":"bg-brand-500/20 text-brand-500"}`,children:u("modelPicker.allCount",{count:s.length})}),["max","pro","base"].filter(g=>h[g]>0).map(g=>e.jsx("button",{onClick:()=>C(m===g?"":g),className:`px-2 py-0.5 rounded text-[10px] font-medium uppercase transition-colors border ${m===g?Or[g]:"border-transparent bg-surface-overlay text-fg-tertiary hover:text-fg-secondary"}`,children:u("modelPicker.tierCount",{tier:u(`modelRouting.tier.${g}`),count:h[g]})},g))]}),s.length>5&&e.jsx("input",{type:"text",value:x,onChange:g=>{f(g.target.value),T(!1)},placeholder:u("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:y.map(g=>{const j=g.id===r,S=os(g);return e.jsxs("button",{type:"button",onClick:()=>o(g.id),className:`w-full text-left px-3 py-2 rounded-lg transition-colors ${j?"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 ${j?"border-brand-500":"border-border-default"}`,children:j&&e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-brand-500"})}),e.jsx("span",{className:`text-xs font-medium ${j?"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 ${Or[S]}`,children:u(`modelRouting.tier.${S}`)})]}),e.jsx("div",{className:"flex items-center gap-2",children:j&&e.jsx("span",{className:"text-[10px] text-brand-500 font-medium",children:u("modelPicker.active")})})]}),Na(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:[ja(g.maxInputTokens)," ",u("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(lt,{label:u("modelPicker.capabilities.tools")}),g.capabilities.vision&&e.jsx(lt,{label:u("modelPicker.capabilities.vision")}),g.capabilities.reasoning&&e.jsx(lt,{label:u("modelPicker.capabilities.reasoning")}),g.capabilities.promptCaching&&e.jsx(lt,{label:u("modelPicker.capabilities.caching")}),g.capabilities.webSearch&&e.jsx(lt,{label:u("modelPicker.capabilities.search")})]})]},g.id)})}),A&&!v&&e.jsx("button",{type:"button",onClick:()=>T(!0),className:"text-xs text-brand-500 hover:text-brand-400 px-3",children:u("modelPicker.showAll",{count:w.length})}),v&&A&&e.jsx("button",{type:"button",onClick:()=>T(!1),className:"text-xs text-fg-tertiary hover:text-fg-secondary px-3",children:u("modelPicker.showLess")})]})}function lt({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 _s({value:s,options:r,placeholder:o,onChange:n}){const{t:a}=pe("settings"),[t,d]=i.useState(!1),[u,x]=i.useState(""),f=i.useRef(null),v=i.useRef(null),T=i.useRef(null),[m,C]=i.useState(-1);i.useEffect(()=>{function g(j){f.current&&!f.current.contains(j.target)&&d(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]),i.useEffect(()=>{t&&v.current&&v.current.focus()},[t]);const w=i.useMemo(()=>{if(!u.trim())return r;const g=u.toLowerCase();return r.filter(j=>j.modelId.toLowerCase().includes(g)||j.modelName.toLowerCase().includes(g)||j.provider.toLowerCase().includes(g)||j.providerLabel.toLowerCase().includes(g)||j.tier&&j.tier.toLowerCase().includes(g))},[r,u]),h=i.useMemo(()=>{const g=new Map;for(const S of w){const R=S.providerLabel;g.has(R)||g.set(R,[]),g.get(R).push(S)}const j={max:0,pro:1,base:2};for(const S of g.values())S.sort((R,E)=>(j[R.tier??"base"]??9)-(j[E.tier??"base"]??9));return g},[w]),U=i.useMemo(()=>{const g=[];for(const j of h.values())g.push(...j);return g},[h]),y=i.useMemo(()=>{if(!s)return o??a("modelRouting.auto");const g=r.find(j=>`${j.provider}/${j.modelId}`===s);return g?`${g.providerLabel}/${g.modelName}`:s},[s,r,o,a]);function A(g){if(!t){(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),d(!0));return}switch(g.key){case"ArrowDown":g.preventDefault(),C(j=>Math.min(j+1,U.length-1));break;case"ArrowUp":g.preventDefault(),C(j=>Math.max(j-1,-1));break;case"Enter":g.preventDefault(),m===-1?n(""):U[m]&&n(`${U[m].provider}/${U[m].modelId}`),d(!1),x("");break;case"Escape":d(!1),x("");break}}return i.useEffect(()=>{T.current&&m>=0&&T.current.querySelector(`[data-focus-index="${m}"]`)?.scrollIntoView({block:"nearest"})},[m]),e.jsxs("div",{ref:f,className:"relative",onKeyDown:A,children:[e.jsx("button",{type:"button",onClick:()=>{d(!t),x(""),C(-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:y}),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:v,type:"text",value:u,onChange:g=>{x(g.target.value),C(-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 ${m===-1?"bg-brand-500/20 text-brand-500":"text-fg-secondary hover:bg-surface-overlay"}`,onClick:()=>{n(""),d(!1),x("")},children:o??a("modelRouting.auto")}),[...h.entries()].map(([g,j])=>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}),j.map(S=>{const R=U.indexOf(S),E=`${S.provider}/${S.modelId}`===s;return e.jsxs("div",{"data-focus-index":R,className:`px-3 py-1.5 text-xs cursor-pointer flex items-center gap-2 ${R===m?"bg-brand-500/20":E?"bg-surface-overlay":"hover:bg-surface-overlay/50"}`,onClick:()=>{n(`${S.provider}/${S.modelId}`),d(!1),x("")},children:[e.jsx("span",{className:"flex-1 truncate text-fg-primary",children:S.modelName}),S.tier&&e.jsx(wa,{tier:S.tier}),S.costTier&&e.jsx("span",{className:"text-[9px] text-fg-tertiary",children:S.costTier})]},`${S.provider}/${S.modelId}`)})]},g)),U.length===0&&e.jsx("div",{className:"px-3 py-3 text-xs text-fg-tertiary text-center",children:a("modelPicker.empty")})]})]})]})}function wa({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 ka=500,_r=[{groupKey:"image",capabilities:["image_recognition","image_generation"]},{groupKey:"audio",capabilities:["audio_tts","audio_stt"]},{groupKey:"video",capabilities:["video_generation"]}];function Ca({onSave:s,configuredProviders:r}){const{t:o}=pe(["settings","common"]),[n,a]=i.useState({}),[t,d]=i.useState(null),[u,x]=i.useState(!1),[f,v]=i.useState(null),[T,m]=i.useState(!0),[C,w]=i.useState("idle"),[h,U]=i.useState(null),[y,A]=i.useState({}),[g,j]=i.useState(!1),[S,R]=i.useState("idle"),[E,B]=i.useState(null),[K,_]=i.useState(!1),O=i.useRef(null),F=i.useRef(null),b=i.useMemo(()=>r.map(c=>c.name).sort().join(","),[r]);i.useEffect(()=>{fetch("/api/settings/llm/routing",{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`HTTP ${c.status}`);return c.json()}).then(c=>{a(c.capabilityRouting?.assignments??{}),d(c.routingDefaultModel??null),x(!0)}).catch(c=>{v(String(c)),x(!0)})},[b]),i.useEffect(()=>{let c=!1;return m(!0),fetch("/api/models/routing-candidates",{credentials:"include"}).then(k=>{if(!k.ok)throw new Error(`HTTP ${k.status}`);return k.json()}).then(k=>{if(c)return;const D=[];for(const $ of k.providers)for(const W of $.models)D.push({provider:$.provider,providerLabel:$.displayName,modelId:W.id,modelName:W.name,mode:W.mode,tier:W.tier,costTier:W.costTier,capabilities:W.capabilities});U(D)}).catch(()=>{c||U(null)}).finally(()=>{c||m(!1)}),()=>{c=!0}},[b]),i.useEffect(()=>{fetch("/api/models/suggested-assignments",{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`HTTP ${c.status}`);return c.json()}).then(c=>{A(c.suggestions),j(!0)}).catch(()=>j(!0))},[b]);const P=i.useCallback(c=>{w("saving"),s(c).then(()=>{w("saved"),setTimeout(()=>w(k=>k==="saved"?"idle":k),2e3)}).catch(()=>{w("error"),setTimeout(()=>w(k=>k==="error"?"idle":k),3e3)})},[s]),M=i.useCallback((c,k)=>{F.current={capabilityRouting:c!==void 0?{assignments:c}:F.current?.capabilityRouting,routingDefaultModel:k!==void 0?k:F.current?.routingDefaultModel},O.current&&clearTimeout(O.current),O.current=setTimeout(()=>{const D=F.current;F.current=null,D&&P(D)},ka)},[P]),q=i.useMemo(()=>r.flatMap(c=>(c.models??[{id:c.model,name:c.model}]).map(k=>({provider:c.name,providerLabel:c.displayName??c.name,modelId:k.id,modelName:k.name}))),[r]),Q=h??q,re=i.useMemo(()=>Object.entries(n).map(([c,k])=>`${c}:${k?.provider??""}/${k?.model??""}`).sort().join("|"),[n]);i.useEffect(()=>{!u||!h||h.length===0||h.some(c=>!!c.modelId)&&(a(c=>{let k=!1;const D={...c};for(const $ of _r)for(const W of $.capabilities){const Z=D[W];if(!Z?.model)continue;const X=Tn(h,W);if(X.length===0)continue;X.some(ce=>ce.provider===Z.provider&&ce.modelId===Z.model)||(delete D[W],k=!0)}return k?(M(D),D):c}),d(c=>{if(!c?.model||h.some(W=>W.provider===c.provider&&W.modelId===c.model))return c;const D=h.find(W=>W.provider==="markus"),$=D?{provider:D.provider,model:D.modelId}:{provider:h[0].provider,model:h[0].modelId};return s({routingDefaultModel:$}),$}))},[u,h,b,M,re]);const oe=i.useCallback(()=>{fetch("/api/settings/llm/routing",{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`HTTP ${c.status}`);return c.json()}).then(c=>{a(c.capabilityRouting?.assignments??{}),d(c.routingDefaultModel??null)}).catch(()=>{}),m(!0),fetch("/api/models/routing-candidates",{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`HTTP ${c.status}`);return c.json()}).then(c=>{const k=[];for(const D of c.providers)for(const $ of D.models)k.push({provider:D.provider,providerLabel:D.displayName,modelId:$.id,modelName:$.name,mode:$.mode,tier:$.tier,costTier:$.costTier,capabilities:$.capabilities});U(k)}).catch(()=>{}).finally(()=>m(!1))},[]),xe=i.useCallback(async()=>{if(S!=="working"){R("working"),B(null);try{const c=await fetch("/api/settings/llm/restore-recommended",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),k=await c.json().catch(()=>({}));if(!c.ok||!k.ok)throw new Error(k.error??`HTTP ${c.status}`);k.capabilityRouting&&a(k.capabilityRouting.assignments??{}),k.routingDefaultModel!==void 0&&d(k.routingDefaultModel),oe(),R("idle"),w("saved"),setTimeout(()=>w(D=>D==="saved"?"idle":D),2e3)}catch(c){R("error"),B(c instanceof Error?c.message:String(c)),setTimeout(()=>R("idle"),4e3)}}},[S,oe]),ee=Q.length>0;return u?f?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:f})}):T&&!ee?e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"bg-surface-elevated rounded-xl p-5",children:e.jsxs("div",{className:"flex items-center gap-2 text-xs text-fg-secondary",children:[e.jsxs("svg",{className:"w-4 h-4 animate-spin text-brand-500",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"})]}),e.jsx("span",{children:o("modelRouting.loadingModels")})]})})}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(Aa,{status:C,t:o}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx("button",{type:"button",onClick:()=>_(!0),disabled:S==="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(S==="working"?"modelRouting.restoreWorking":"modelRouting.restoreRecommended")}),E&&e.jsx("span",{className:"text-[10px] text-red-400 max-w-xs text-right",children:E})]})]}),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(_s,{value:t?`${t.provider}/${t.model}`:"",options:Q,placeholder:o("modelRouting.defaultModelPlaceholder"),onChange:c=>{if(!c)d(null),M(void 0,null);else{const[k,...D]=c.split("/"),$={provider:k,model:D.join("/")};if(d($),n.text){const W={...n};delete W.text,a(W),M(W,$)}else M(void 0,$)}}})})]}),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:_r.map(c=>e.jsx(Sa,{groupKey:c.groupKey,capabilities:c.capabilities,assignments:n,suggestions:y,allModels:Q,configuredProviderNames:new Set(r.map(k=>k.name)),t:o,onAssign:(k,D)=>{const $={...n};D?$[k]=D:delete $[k],a($),M($)}},c.groupKey))})]}),K&&e.jsx(Pn,{variant:"primary",title:o("modelRouting.restoreRecommended"),message:o("modelRouting.restoreConfirm"),confirmLabel:o("common:confirm"),onConfirm:()=>{_(!1),xe()},onCancel:()=>_(!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(c=>e.jsx("div",{className:"h-10 bg-surface-overlay rounded-lg"},c))})]})})}function Sa({groupKey:s,capabilities:r,assignments:o,suggestions:n,allModels:a,configuredProviderNames:t,t:d,onAssign:u}){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(x=>{const f=o[x],v=n[x],T=f?`${f.provider}/${f.model}`:"",m=Tn(a,x),C=v?m.find(A=>A.provider===v.provider&&A.modelId===v.model)?.modelName??v.model:void 0,w=m.length>0,h=f?Pa(a,f.provider,f.model):void 0,U=f&&!t.has(f.provider),y=!!(f&&w&&x!=="text"&&!m.some(A=>A.provider===f.provider&&A.modelId===f.model));return e.jsxs("div",{className:`flex items-center gap-3 px-3 py-2 rounded-lg ${y?"bg-red-500/10 border border-red-500/30":U?"bg-yellow-500/10 border border-yellow-500/30":!w&&!f?"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.${x}`)})}),e.jsx("div",{className:"flex-1 min-w-0",children:y?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:["⚠ ",f.model]}),e.jsx("span",{className:"text-[10px] text-red-400/70",children:d("modelRouting.mismatchHint")})]}),e.jsx(_s,{value:"",options:m,placeholder:d("modelRouting.selectModel"),onChange:A=>{if(!A)u(x,null);else{const[g,...j]=A.split("/");u(x,{provider:g,model:j.join("/")})}}})]}):w?e.jsx(_s,{value:T,options:m,placeholder:C?`${C} (${d("modelRouting.suggested")})`:d("modelRouting.selectModel"),onChange:A=>{if(!A)u(x,null);else{const[g,...j]=A.split("/");u(x,{provider:g,model:j.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:[y&&e.jsx("span",{className:"text-[10px] text-red-400 font-medium",title:d("modelRouting.mismatchHint"),children:"⚠"}),!y&&U&&e.jsx("span",{className:"text-[10px] text-yellow-400 font-medium",title:d("modelRouting.staleProvider"),children:"⚠"}),!y&&!U&&h&&e.jsx(Dr,{tier:h}),!y&&!U&&!h&&f&&e.jsx(Dr,{tier:"unknown"})]}),e.jsx("div",{className:"w-8 shrink-0 flex justify-end",children:f&&e.jsx("button",{onClick:()=>u(x,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"})})})})]},x)})})]})}function Pa(s,r,o){return s.find(a=>a.provider===r&&a.modelId===o)?.tier}function Aa({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 Dr({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 Ma=new Set(["imageGeneration","tts","stt","videoGeneration","audioOutput","audioInput"]);function Tn(s,r){if(r==="text")return s.filter(d=>!(d.capabilities&&d.capabilities.some(u=>Ma.has(u))||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(u=>d.capabilities.includes(u))||a&&d.mode&&a.includes(d.mode)))}const At=[{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 Je={},is,Kr;function Ta(){return Kr||(Kr=1,is=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),is}var ls={},Ke={},Ur;function He(){if(Ur)return Ke;Ur=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 Ke.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},Ke.getSymbolTotalCodewords=function(n){return r[n]},Ke.getBCHDigit=function(o){let n=0;for(;o!==0;)n++,o>>>=1;return n},Ke.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');s=n},Ke.isKanjiModeEnabled=function(){return typeof s<"u"},Ke.toSJIS=function(n){return s(n)},Ke}var ds={},Fr;function Ks(){return Fr||(Fr=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}}})(ds)),ds}var cs,$r;function Ea(){if($r)return cs;$r=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++}},cs=s,cs}var us,Vr;function Ia(){if(Vr)return us;Vr=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]},us=s,us}var xs={},Hr;function La(){return Hr||(Hr=1,(function(s){const r=He().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,u=[t-7];for(let x=1;x<a-1;x++)u[x]=u[x-1]-d;return u.push(6),u.reverse()},s.getPositions=function(n){const a=[],t=s.getRowColCoords(n),d=t.length;for(let u=0;u<d;u++)for(let x=0;x<d;x++)u===0&&x===0||u===0&&x===d-1||u===d-1&&x===0||a.push([t[u],t[x]]);return a}})(xs)),xs}var ms={},qr;function Ra(){if(qr)return ms;qr=1;const s=He().getSymbolSize,r=7;return ms.getPositions=function(n){const a=s(n);return[[0,0],[a-r,0],[0,a-r]]},ms}var gs={},zr;function Ba(){return zr||(zr=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,u=0,x=0,f=null,v=null;for(let T=0;T<t;T++){u=x=0,f=v=null;for(let m=0;m<t;m++){let C=a.get(T,m);C===f?u++:(u>=5&&(d+=r.N1+(u-5)),f=C,u=1),C=a.get(m,T),C===v?x++:(x>=5&&(d+=r.N1+(x-5)),v=C,x=1)}u>=5&&(d+=r.N1+(u-5)),x>=5&&(d+=r.N1+(x-5))}return d},s.getPenaltyN2=function(a){const t=a.size;let d=0;for(let u=0;u<t-1;u++)for(let x=0;x<t-1;x++){const f=a.get(u,x)+a.get(u,x+1)+a.get(u+1,x)+a.get(u+1,x+1);(f===4||f===0)&&d++}return d*r.N2},s.getPenaltyN3=function(a){const t=a.size;let d=0,u=0,x=0;for(let f=0;f<t;f++){u=x=0;for(let v=0;v<t;v++)u=u<<1&2047|a.get(f,v),v>=10&&(u===1488||u===93)&&d++,x=x<<1&2047|a.get(v,f),v>=10&&(x===1488||x===93)&&d++}return d*r.N3},s.getPenaltyN4=function(a){let t=0;const d=a.data.length;for(let x=0;x<d;x++)t+=a.data[x];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 u=0;u<d;u++)for(let x=0;x<d;x++)t.isReserved(x,u)||t.xor(x,u,o(a,x,u))},s.getBestMask=function(a,t){const d=Object.keys(s.Patterns).length;let u=0,x=1/0;for(let f=0;f<d;f++){t(f),s.applyMask(f,a);const v=s.getPenaltyN1(a)+s.getPenaltyN2(a)+s.getPenaltyN3(a)+s.getPenaltyN4(a);s.applyMask(f,a),v<x&&(x=v,u=f)}return u}})(gs)),gs}var Mt={},Wr;function En(){if(Wr)return Mt;Wr=1;const s=Ks(),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 Mt.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}},Mt.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}},Mt}var fs={},dt={},Gr;function Oa(){if(Gr)return dt;Gr=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]})(),dt.log=function(n){if(n<1)throw new Error("log("+n+")");return r[n]},dt.exp=function(n){return s[n]},dt.mul=function(n,a){return n===0||a===0?0:s[r[n]+r[a]]},dt}var Yr;function _a(){return Yr||(Yr=1,(function(s){const r=Oa();s.mul=function(n,a){const t=new Uint8Array(n.length+a.length-1);for(let d=0;d<n.length;d++)for(let u=0;u<a.length;u++)t[d+u]^=r.mul(n[d],a[u]);return t},s.mod=function(n,a){let t=new Uint8Array(n);for(;t.length-a.length>=0;){const d=t[0];for(let x=0;x<a.length;x++)t[x]^=r.mul(a[x],d);let u=0;for(;u<t.length&&t[u]===0;)u++;t=t.slice(u)}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}})(fs)),fs}var ps,Jr;function Da(){if(Jr)return ps;Jr=1;const s=_a();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 u=new Uint8Array(this.degree);return u.set(t,d),u}return t},ps=r,ps}var hs={},bs={},ys={},Qr;function In(){return Qr||(Qr=1,ys.isValid=function(r){return!isNaN(r)&&r>=1&&r<=40}),ys}var Me={},Xr;function Ln(){if(Xr)return Me;Xr=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 pe,r as i,j as e,D as Pn,v as xa,l as V,a as ma,b as ga,c as fa,W as Lr,n as ns,X as pa,Y as Rr,P as Br,h as Ve,i as ha,Z as An,w as ba,o as as,t as Os,_ as ya}from"./index-sjnbPgLJ.js";function va(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 ja(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 Na(s){return s.maxInputTokens>0||s.inputCostPer1MTokens>0||s.outputCostPer1MTokens>0}function os(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 Or={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 Mn({models:s,selectedModel:r,onSelect:o,loading:n,compact:a,maxVisible:t,showTiers:d}){const{t:u}=pe("settings"),[x,f]=i.useState(""),[v,T]=i.useState(!1),[m,C]=i.useState(""),w=i.useMemo(()=>{let g=s;if(x){const j=x.toLowerCase();g=g.filter(S=>S.id.toLowerCase().includes(j))}return m&&(g=g.filter(j=>os(j)===m)),g},[s,x,m]),h=i.useMemo(()=>{const g={max:0,pro:0,base:0};for(const j of s)g[os(j)]++;return g},[s]),U=t??(a?5:10),y=v?w:w.slice(0,U),A=w.length>U;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"}),u("modelPicker.loading")]}):s.length===0?e.jsx("div",{className:"py-3 text-sm text-fg-tertiary",children:u("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:()=>C(""),className:`px-2 py-0.5 rounded text-[10px] transition-colors ${m?"bg-surface-overlay text-fg-tertiary hover:text-fg-secondary":"bg-brand-500/20 text-brand-500"}`,children:u("modelPicker.allCount",{count:s.length})}),["max","pro","base"].filter(g=>h[g]>0).map(g=>e.jsx("button",{onClick:()=>C(m===g?"":g),className:`px-2 py-0.5 rounded text-[10px] font-medium uppercase transition-colors border ${m===g?Or[g]:"border-transparent bg-surface-overlay text-fg-tertiary hover:text-fg-secondary"}`,children:u("modelPicker.tierCount",{tier:u(`modelRouting.tier.${g}`),count:h[g]})},g))]}),s.length>5&&e.jsx("input",{type:"text",value:x,onChange:g=>{f(g.target.value),T(!1)},placeholder:u("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:y.map(g=>{const j=g.id===r,S=os(g);return e.jsxs("button",{type:"button",onClick:()=>o(g.id),className:`w-full text-left px-3 py-2 rounded-lg transition-colors ${j?"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 ${j?"border-brand-500":"border-border-default"}`,children:j&&e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-brand-500"})}),e.jsx("span",{className:`text-xs font-medium ${j?"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 ${Or[S]}`,children:u(`modelRouting.tier.${S}`)})]}),e.jsx("div",{className:"flex items-center gap-2",children:j&&e.jsx("span",{className:"text-[10px] text-brand-500 font-medium",children:u("modelPicker.active")})})]}),Na(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:[ja(g.maxInputTokens)," ",u("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(lt,{label:u("modelPicker.capabilities.tools")}),g.capabilities.vision&&e.jsx(lt,{label:u("modelPicker.capabilities.vision")}),g.capabilities.reasoning&&e.jsx(lt,{label:u("modelPicker.capabilities.reasoning")}),g.capabilities.promptCaching&&e.jsx(lt,{label:u("modelPicker.capabilities.caching")}),g.capabilities.webSearch&&e.jsx(lt,{label:u("modelPicker.capabilities.search")})]})]},g.id)})}),A&&!v&&e.jsx("button",{type:"button",onClick:()=>T(!0),className:"text-xs text-brand-500 hover:text-brand-400 px-3",children:u("modelPicker.showAll",{count:w.length})}),v&&A&&e.jsx("button",{type:"button",onClick:()=>T(!1),className:"text-xs text-fg-tertiary hover:text-fg-secondary px-3",children:u("modelPicker.showLess")})]})}function lt({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 _s({value:s,options:r,placeholder:o,onChange:n}){const{t:a}=pe("settings"),[t,d]=i.useState(!1),[u,x]=i.useState(""),f=i.useRef(null),v=i.useRef(null),T=i.useRef(null),[m,C]=i.useState(-1);i.useEffect(()=>{function g(j){f.current&&!f.current.contains(j.target)&&d(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]),i.useEffect(()=>{t&&v.current&&v.current.focus()},[t]);const w=i.useMemo(()=>{if(!u.trim())return r;const g=u.toLowerCase();return r.filter(j=>j.modelId.toLowerCase().includes(g)||j.modelName.toLowerCase().includes(g)||j.provider.toLowerCase().includes(g)||j.providerLabel.toLowerCase().includes(g)||j.tier&&j.tier.toLowerCase().includes(g))},[r,u]),h=i.useMemo(()=>{const g=new Map;for(const S of w){const R=S.providerLabel;g.has(R)||g.set(R,[]),g.get(R).push(S)}const j={max:0,pro:1,base:2};for(const S of g.values())S.sort((R,E)=>(j[R.tier??"base"]??9)-(j[E.tier??"base"]??9));return g},[w]),U=i.useMemo(()=>{const g=[];for(const j of h.values())g.push(...j);return g},[h]),y=i.useMemo(()=>{if(!s)return o??a("modelRouting.auto");const g=r.find(j=>`${j.provider}/${j.modelId}`===s);return g?`${g.providerLabel}/${g.modelName}`:s},[s,r,o,a]);function A(g){if(!t){(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),d(!0));return}switch(g.key){case"ArrowDown":g.preventDefault(),C(j=>Math.min(j+1,U.length-1));break;case"ArrowUp":g.preventDefault(),C(j=>Math.max(j-1,-1));break;case"Enter":g.preventDefault(),m===-1?n(""):U[m]&&n(`${U[m].provider}/${U[m].modelId}`),d(!1),x("");break;case"Escape":d(!1),x("");break}}return i.useEffect(()=>{T.current&&m>=0&&T.current.querySelector(`[data-focus-index="${m}"]`)?.scrollIntoView({block:"nearest"})},[m]),e.jsxs("div",{ref:f,className:"relative",onKeyDown:A,children:[e.jsx("button",{type:"button",onClick:()=>{d(!t),x(""),C(-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:y}),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:v,type:"text",value:u,onChange:g=>{x(g.target.value),C(-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 ${m===-1?"bg-brand-500/20 text-brand-500":"text-fg-secondary hover:bg-surface-overlay"}`,onClick:()=>{n(""),d(!1),x("")},children:o??a("modelRouting.auto")}),[...h.entries()].map(([g,j])=>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}),j.map(S=>{const R=U.indexOf(S),E=`${S.provider}/${S.modelId}`===s;return e.jsxs("div",{"data-focus-index":R,className:`px-3 py-1.5 text-xs cursor-pointer flex items-center gap-2 ${R===m?"bg-brand-500/20":E?"bg-surface-overlay":"hover:bg-surface-overlay/50"}`,onClick:()=>{n(`${S.provider}/${S.modelId}`),d(!1),x("")},children:[e.jsx("span",{className:"flex-1 truncate text-fg-primary",children:S.modelName}),S.tier&&e.jsx(wa,{tier:S.tier}),S.costTier&&e.jsx("span",{className:"text-[9px] text-fg-tertiary",children:S.costTier})]},`${S.provider}/${S.modelId}`)})]},g)),U.length===0&&e.jsx("div",{className:"px-3 py-3 text-xs text-fg-tertiary text-center",children:a("modelPicker.empty")})]})]})]})}function wa({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 ka=500,_r=[{groupKey:"image",capabilities:["image_recognition","image_generation"]},{groupKey:"audio",capabilities:["audio_tts","audio_stt"]},{groupKey:"video",capabilities:["video_generation"]}];function Ca({onSave:s,configuredProviders:r}){const{t:o}=pe(["settings","common"]),[n,a]=i.useState({}),[t,d]=i.useState(null),[u,x]=i.useState(!1),[f,v]=i.useState(null),[T,m]=i.useState(!0),[C,w]=i.useState("idle"),[h,U]=i.useState(null),[y,A]=i.useState({}),[g,j]=i.useState(!1),[S,R]=i.useState("idle"),[E,B]=i.useState(null),[K,_]=i.useState(!1),O=i.useRef(null),F=i.useRef(null),b=i.useMemo(()=>r.map(c=>c.name).sort().join(","),[r]);i.useEffect(()=>{fetch("/api/settings/llm/routing",{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`HTTP ${c.status}`);return c.json()}).then(c=>{a(c.capabilityRouting?.assignments??{}),d(c.routingDefaultModel??null),x(!0)}).catch(c=>{v(String(c)),x(!0)})},[b]),i.useEffect(()=>{let c=!1;return m(!0),fetch("/api/models/routing-candidates",{credentials:"include"}).then(k=>{if(!k.ok)throw new Error(`HTTP ${k.status}`);return k.json()}).then(k=>{if(c)return;const D=[];for(const $ of k.providers)for(const W of $.models)D.push({provider:$.provider,providerLabel:$.displayName,modelId:W.id,modelName:W.name,mode:W.mode,tier:W.tier,costTier:W.costTier,capabilities:W.capabilities});U(D)}).catch(()=>{c||U(null)}).finally(()=>{c||m(!1)}),()=>{c=!0}},[b]),i.useEffect(()=>{fetch("/api/models/suggested-assignments",{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`HTTP ${c.status}`);return c.json()}).then(c=>{A(c.suggestions),j(!0)}).catch(()=>j(!0))},[b]);const P=i.useCallback(c=>{w("saving"),s(c).then(()=>{w("saved"),setTimeout(()=>w(k=>k==="saved"?"idle":k),2e3)}).catch(()=>{w("error"),setTimeout(()=>w(k=>k==="error"?"idle":k),3e3)})},[s]),M=i.useCallback((c,k)=>{F.current={capabilityRouting:c!==void 0?{assignments:c}:F.current?.capabilityRouting,routingDefaultModel:k!==void 0?k:F.current?.routingDefaultModel},O.current&&clearTimeout(O.current),O.current=setTimeout(()=>{const D=F.current;F.current=null,D&&P(D)},ka)},[P]),q=i.useMemo(()=>r.flatMap(c=>(c.models??[{id:c.model,name:c.model}]).map(k=>({provider:c.name,providerLabel:c.displayName??c.name,modelId:k.id,modelName:k.name}))),[r]),Q=h??q,re=i.useMemo(()=>Object.entries(n).map(([c,k])=>`${c}:${k?.provider??""}/${k?.model??""}`).sort().join("|"),[n]);i.useEffect(()=>{!u||!h||h.length===0||h.some(c=>!!c.modelId)&&(a(c=>{let k=!1;const D={...c};for(const $ of _r)for(const W of $.capabilities){const Z=D[W];if(!Z?.model)continue;const X=Tn(h,W);if(X.length===0)continue;X.some(ce=>ce.provider===Z.provider&&ce.modelId===Z.model)||(delete D[W],k=!0)}return k?(M(D),D):c}),d(c=>{if(!c?.model||h.some(W=>W.provider===c.provider&&W.modelId===c.model))return c;const D=h.find(W=>W.provider==="markus"),$=D?{provider:D.provider,model:D.modelId}:{provider:h[0].provider,model:h[0].modelId};return s({routingDefaultModel:$}),$}))},[u,h,b,M,re]);const oe=i.useCallback(()=>{fetch("/api/settings/llm/routing",{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`HTTP ${c.status}`);return c.json()}).then(c=>{a(c.capabilityRouting?.assignments??{}),d(c.routingDefaultModel??null)}).catch(()=>{}),m(!0),fetch("/api/models/routing-candidates",{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`HTTP ${c.status}`);return c.json()}).then(c=>{const k=[];for(const D of c.providers)for(const $ of D.models)k.push({provider:D.provider,providerLabel:D.displayName,modelId:$.id,modelName:$.name,mode:$.mode,tier:$.tier,costTier:$.costTier,capabilities:$.capabilities});U(k)}).catch(()=>{}).finally(()=>m(!1))},[]),xe=i.useCallback(async()=>{if(S!=="working"){R("working"),B(null);try{const c=await fetch("/api/settings/llm/restore-recommended",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),k=await c.json().catch(()=>({}));if(!c.ok||!k.ok)throw new Error(k.error??`HTTP ${c.status}`);k.capabilityRouting&&a(k.capabilityRouting.assignments??{}),k.routingDefaultModel!==void 0&&d(k.routingDefaultModel),oe(),R("idle"),w("saved"),setTimeout(()=>w(D=>D==="saved"?"idle":D),2e3)}catch(c){R("error"),B(c instanceof Error?c.message:String(c)),setTimeout(()=>R("idle"),4e3)}}},[S,oe]),ee=Q.length>0;return u?f?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:f})}):T&&!ee?e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"bg-surface-elevated rounded-xl p-5",children:e.jsxs("div",{className:"flex items-center gap-2 text-xs text-fg-secondary",children:[e.jsxs("svg",{className:"w-4 h-4 animate-spin text-brand-500",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"})]}),e.jsx("span",{children:o("modelRouting.loadingModels")})]})})}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(Aa,{status:C,t:o}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx("button",{type:"button",onClick:()=>_(!0),disabled:S==="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(S==="working"?"modelRouting.restoreWorking":"modelRouting.restoreRecommended")}),E&&e.jsx("span",{className:"text-[10px] text-red-400 max-w-xs text-right",children:E})]})]}),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(_s,{value:t?`${t.provider}/${t.model}`:"",options:Q,placeholder:o("modelRouting.defaultModelPlaceholder"),onChange:c=>{if(!c)d(null),M(void 0,null);else{const[k,...D]=c.split("/"),$={provider:k,model:D.join("/")};if(d($),n.text){const W={...n};delete W.text,a(W),M(W,$)}else M(void 0,$)}}})})]}),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:_r.map(c=>e.jsx(Sa,{groupKey:c.groupKey,capabilities:c.capabilities,assignments:n,suggestions:y,allModels:Q,configuredProviderNames:new Set(r.map(k=>k.name)),t:o,onAssign:(k,D)=>{const $={...n};D?$[k]=D:delete $[k],a($),M($)}},c.groupKey))})]}),K&&e.jsx(Pn,{variant:"primary",title:o("modelRouting.restoreRecommended"),message:o("modelRouting.restoreConfirm"),confirmLabel:o("common:confirm"),onConfirm:()=>{_(!1),xe()},onCancel:()=>_(!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(c=>e.jsx("div",{className:"h-10 bg-surface-overlay rounded-lg"},c))})]})})}function Sa({groupKey:s,capabilities:r,assignments:o,suggestions:n,allModels:a,configuredProviderNames:t,t:d,onAssign:u}){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(x=>{const f=o[x],v=n[x],T=f?`${f.provider}/${f.model}`:"",m=Tn(a,x),C=v?m.find(A=>A.provider===v.provider&&A.modelId===v.model)?.modelName??v.model:void 0,w=m.length>0,h=f?Pa(a,f.provider,f.model):void 0,U=f&&!t.has(f.provider),y=!!(f&&w&&x!=="text"&&!m.some(A=>A.provider===f.provider&&A.modelId===f.model));return e.jsxs("div",{className:`flex items-center gap-3 px-3 py-2 rounded-lg ${y?"bg-red-500/10 border border-red-500/30":U?"bg-yellow-500/10 border border-yellow-500/30":!w&&!f?"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.${x}`)})}),e.jsx("div",{className:"flex-1 min-w-0",children:y?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:["⚠ ",f.model]}),e.jsx("span",{className:"text-[10px] text-red-400/70",children:d("modelRouting.mismatchHint")})]}),e.jsx(_s,{value:"",options:m,placeholder:d("modelRouting.selectModel"),onChange:A=>{if(!A)u(x,null);else{const[g,...j]=A.split("/");u(x,{provider:g,model:j.join("/")})}}})]}):w?e.jsx(_s,{value:T,options:m,placeholder:C?`${C} (${d("modelRouting.suggested")})`:d("modelRouting.selectModel"),onChange:A=>{if(!A)u(x,null);else{const[g,...j]=A.split("/");u(x,{provider:g,model:j.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:[y&&e.jsx("span",{className:"text-[10px] text-red-400 font-medium",title:d("modelRouting.mismatchHint"),children:"⚠"}),!y&&U&&e.jsx("span",{className:"text-[10px] text-yellow-400 font-medium",title:d("modelRouting.staleProvider"),children:"⚠"}),!y&&!U&&h&&e.jsx(Dr,{tier:h}),!y&&!U&&!h&&f&&e.jsx(Dr,{tier:"unknown"})]}),e.jsx("div",{className:"w-8 shrink-0 flex justify-end",children:f&&e.jsx("button",{onClick:()=>u(x,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"})})})})]},x)})})]})}function Pa(s,r,o){return s.find(a=>a.provider===r&&a.modelId===o)?.tier}function Aa({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 Dr({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 Ma=new Set(["imageGeneration","tts","stt","videoGeneration","audioOutput","audioInput"]);function Tn(s,r){if(r==="text")return s.filter(d=>!(d.capabilities&&d.capabilities.some(u=>Ma.has(u))||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(u=>d.capabilities.includes(u))||a&&d.mode&&a.includes(d.mode)))}const At=[{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 Je={},is,Kr;function Ta(){return Kr||(Kr=1,is=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),is}var ls={},Ke={},Ur;function He(){if(Ur)return Ke;Ur=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 Ke.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},Ke.getSymbolTotalCodewords=function(n){return r[n]},Ke.getBCHDigit=function(o){let n=0;for(;o!==0;)n++,o>>>=1;return n},Ke.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');s=n},Ke.isKanjiModeEnabled=function(){return typeof s<"u"},Ke.toSJIS=function(n){return s(n)},Ke}var ds={},Fr;function Ks(){return Fr||(Fr=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}}})(ds)),ds}var cs,$r;function Ea(){if($r)return cs;$r=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++}},cs=s,cs}var us,Vr;function Ia(){if(Vr)return us;Vr=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]},us=s,us}var xs={},Hr;function La(){return Hr||(Hr=1,(function(s){const r=He().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,u=[t-7];for(let x=1;x<a-1;x++)u[x]=u[x-1]-d;return u.push(6),u.reverse()},s.getPositions=function(n){const a=[],t=s.getRowColCoords(n),d=t.length;for(let u=0;u<d;u++)for(let x=0;x<d;x++)u===0&&x===0||u===0&&x===d-1||u===d-1&&x===0||a.push([t[u],t[x]]);return a}})(xs)),xs}var ms={},qr;function Ra(){if(qr)return ms;qr=1;const s=He().getSymbolSize,r=7;return ms.getPositions=function(n){const a=s(n);return[[0,0],[a-r,0],[0,a-r]]},ms}var gs={},zr;function Ba(){return zr||(zr=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,u=0,x=0,f=null,v=null;for(let T=0;T<t;T++){u=x=0,f=v=null;for(let m=0;m<t;m++){let C=a.get(T,m);C===f?u++:(u>=5&&(d+=r.N1+(u-5)),f=C,u=1),C=a.get(m,T),C===v?x++:(x>=5&&(d+=r.N1+(x-5)),v=C,x=1)}u>=5&&(d+=r.N1+(u-5)),x>=5&&(d+=r.N1+(x-5))}return d},s.getPenaltyN2=function(a){const t=a.size;let d=0;for(let u=0;u<t-1;u++)for(let x=0;x<t-1;x++){const f=a.get(u,x)+a.get(u,x+1)+a.get(u+1,x)+a.get(u+1,x+1);(f===4||f===0)&&d++}return d*r.N2},s.getPenaltyN3=function(a){const t=a.size;let d=0,u=0,x=0;for(let f=0;f<t;f++){u=x=0;for(let v=0;v<t;v++)u=u<<1&2047|a.get(f,v),v>=10&&(u===1488||u===93)&&d++,x=x<<1&2047|a.get(v,f),v>=10&&(x===1488||x===93)&&d++}return d*r.N3},s.getPenaltyN4=function(a){let t=0;const d=a.data.length;for(let x=0;x<d;x++)t+=a.data[x];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 u=0;u<d;u++)for(let x=0;x<d;x++)t.isReserved(x,u)||t.xor(x,u,o(a,x,u))},s.getBestMask=function(a,t){const d=Object.keys(s.Patterns).length;let u=0,x=1/0;for(let f=0;f<d;f++){t(f),s.applyMask(f,a);const v=s.getPenaltyN1(a)+s.getPenaltyN2(a)+s.getPenaltyN3(a)+s.getPenaltyN4(a);s.applyMask(f,a),v<x&&(x=v,u=f)}return u}})(gs)),gs}var Mt={},Wr;function En(){if(Wr)return Mt;Wr=1;const s=Ks(),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 Mt.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}},Mt.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}},Mt}var fs={},dt={},Gr;function Oa(){if(Gr)return dt;Gr=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]})(),dt.log=function(n){if(n<1)throw new Error("log("+n+")");return r[n]},dt.exp=function(n){return s[n]},dt.mul=function(n,a){return n===0||a===0?0:s[r[n]+r[a]]},dt}var Yr;function _a(){return Yr||(Yr=1,(function(s){const r=Oa();s.mul=function(n,a){const t=new Uint8Array(n.length+a.length-1);for(let d=0;d<n.length;d++)for(let u=0;u<a.length;u++)t[d+u]^=r.mul(n[d],a[u]);return t},s.mod=function(n,a){let t=new Uint8Array(n);for(;t.length-a.length>=0;){const d=t[0];for(let x=0;x<a.length;x++)t[x]^=r.mul(a[x],d);let u=0;for(;u<t.length&&t[u]===0;)u++;t=t.slice(u)}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}})(fs)),fs}var ps,Jr;function Da(){if(Jr)return ps;Jr=1;const s=_a();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 u=new Uint8Array(this.degree);return u.set(t,d),u}return t},ps=r,ps}var hs={},bs={},ys={},Qr;function In(){return Qr||(Qr=1,ys.isValid=function(r){return!isNaN(r)&&r>=1&&r<=40}),ys}var Me={},Xr;function Ln(){if(Xr)return Me;Xr=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
|
]))+`;Me.KANJI=new RegExp(o,"g"),Me.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),Me.BYTE=new RegExp(n,"g"),Me.NUMERIC=new RegExp(s,"g"),Me.ALPHANUMERIC=new RegExp(r,"g");const a=new RegExp("^"+o+"$"),t=new RegExp("^"+s+"$"),d=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return Me.testKanji=function(x){return a.test(x)},Me.testNumeric=function(x){return t.test(x)},Me.testAlphanumeric=function(x){return d.test(x)},Me}var Zr;function qe(){return Zr||(Zr=1,(function(s){const r=In(),o=Ln();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}}})(bs)),bs}var en;function Ka(){return en||(en=1,(function(s){const r=He(),o=En(),n=Ks(),a=qe(),t=In(),d=7973,u=r.getBCHDigit(d);function x(m,C,w){for(let h=1;h<=40;h++)if(C<=s.getCapacity(h,w,m))return h}function f(m,C){return a.getCharCountIndicator(m,C)+4}function v(m,C){let w=0;return m.forEach(function(h){const U=f(h.mode,C);w+=U+h.getBitsLength()}),w}function T(m,C){for(let w=1;w<=40;w++)if(v(m,w)<=s.getCapacity(w,C,a.MIXED))return w}s.from=function(C,w){return t.isValid(C)?parseInt(C,10):w},s.getCapacity=function(C,w,h){if(!t.isValid(C))throw new Error("Invalid QR Code version");typeof h>"u"&&(h=a.BYTE);const U=r.getSymbolTotalCodewords(C),y=o.getTotalCodewordsCount(C,w),A=(U-y)*8;if(h===a.MIXED)return A;const g=A-f(h,C);switch(h){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(C,w){let h;const U=n.from(w,n.M);if(Array.isArray(C)){if(C.length>1)return T(C,U);if(C.length===0)return 1;h=C[0]}else h=C;return x(h.mode,h.getLength(),U)},s.getEncodedBits=function(C){if(!t.isValid(C)||C<7)throw new Error("Invalid QR Code version");let w=C<<12;for(;r.getBCHDigit(w)-u>=0;)w^=d<<r.getBCHDigit(w)-u;return C<<12|w}})(hs)),hs}var vs={},tn;function Ua(){if(tn)return vs;tn=1;const s=He(),r=1335,o=21522,n=s.getBCHDigit(r);return vs.getEncodedBits=function(t,d){const u=t.bit<<3|d;let x=u<<10;for(;s.getBCHDigit(x)-n>=0;)x^=r<<s.getBCHDigit(x)-n;return(u<<10|x)^o},vs}var js={},Ns,sn;function Fa(){if(sn)return Ns;sn=1;const s=qe();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 u=this.data.length-a;u>0&&(t=this.data.substr(a),d=parseInt(t,10),n.put(d,u*3+1))},Ns=r,Ns}var ws,rn;function $a(){if(rn)return ws;rn=1;const s=qe(),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)},ws=o,ws}var ks,nn;function Va(){if(nn)return ks;nn=1;const s=qe();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)},ks=r,ks}var Cs,an;function Ha(){if(an)return Cs;an=1;const s=qe(),r=He();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)}},Cs=o,Cs}var Ss={exports:{}},on;function qa(){return on||(on=1,(function(s){var r={single_source_shortest_paths:function(o,n,a){var t={},d={};d[n]=0;var u=r.PriorityQueue.make();u.push(n,0);for(var x,f,v,T,m,C,w,h,U;!u.empty();){x=u.pop(),f=x.value,T=x.cost,m=o[f]||{};for(v in m)m.hasOwnProperty(v)&&(C=m[v],w=T+C,h=d[v],U=typeof d[v]>"u",(U||h>w)&&(d[v]=w,u.push(v,w),t[v]=f))}if(typeof a<"u"&&typeof d[a]>"u"){var y=["Could not find a path from ",n," to ",a,"."].join("");throw new Error(y)}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})(Ss)),Ss.exports}var ln;function za(){return ln||(ln=1,(function(s){const r=qe(),o=Fa(),n=$a(),a=Va(),t=Ha(),d=Ln(),u=He(),x=qa();function f(y){return unescape(encodeURIComponent(y)).length}function v(y,A,g){const j=[];let S;for(;(S=y.exec(g))!==null;)j.push({data:S[0],index:S.index,mode:A,length:S[0].length});return j}function T(y){const A=v(d.NUMERIC,r.NUMERIC,y),g=v(d.ALPHANUMERIC,r.ALPHANUMERIC,y);let j,S;return u.isKanjiModeEnabled()?(j=v(d.BYTE,r.BYTE,y),S=v(d.KANJI,r.KANJI,y)):(j=v(d.BYTE_KANJI,r.BYTE,y),S=[]),A.concat(g,j,S).sort(function(E,B){return E.index-B.index}).map(function(E){return{data:E.data,mode:E.mode,length:E.length}})}function m(y,A){switch(A){case r.NUMERIC:return o.getBitsLength(y);case r.ALPHANUMERIC:return n.getBitsLength(y);case r.KANJI:return t.getBitsLength(y);case r.BYTE:return a.getBitsLength(y)}}function C(y){return y.reduce(function(A,g){const j=A.length-1>=0?A[A.length-1]:null;return j&&j.mode===g.mode?(A[A.length-1].data+=g.data,A):(A.push(g),A)},[])}function w(y){const A=[];for(let g=0;g<y.length;g++){const j=y[g];switch(j.mode){case r.NUMERIC:A.push([j,{data:j.data,mode:r.ALPHANUMERIC,length:j.length},{data:j.data,mode:r.BYTE,length:j.length}]);break;case r.ALPHANUMERIC:A.push([j,{data:j.data,mode:r.BYTE,length:j.length}]);break;case r.KANJI:A.push([j,{data:j.data,mode:r.BYTE,length:f(j.data)}]);break;case r.BYTE:A.push([{data:j.data,mode:r.BYTE,length:f(j.data)}])}}return A}function h(y,A){const g={},j={start:{}};let S=["start"];for(let R=0;R<y.length;R++){const E=y[R],B=[];for(let K=0;K<E.length;K++){const _=E[K],O=""+R+K;B.push(O),g[O]={node:_,lastCount:0},j[O]={};for(let F=0;F<S.length;F++){const b=S[F];g[b]&&g[b].node.mode===_.mode?(j[b][O]=m(g[b].lastCount+_.length,_.mode)-m(g[b].lastCount,_.mode),g[b].lastCount+=_.length):(g[b]&&(g[b].lastCount=_.length),j[b][O]=m(_.length,_.mode)+4+r.getCharCountIndicator(_.mode,A))}}S=B}for(let R=0;R<S.length;R++)j[S[R]].end=0;return{map:j,table:g}}function U(y,A){let g;const j=r.getBestModeForData(y);if(g=r.from(A,j),g!==r.BYTE&&g.bit<j.bit)throw new Error('"'+y+'" cannot be encoded with mode '+r.toString(g)+`.
|
|
4
4
|
Suggested mode is: `+r.toString(j));switch(g===r.KANJI&&!u.isKanjiModeEnabled()&&(g=r.BYTE),g){case r.NUMERIC:return new o(y);case r.ALPHANUMERIC:return new n(y);case r.KANJI:return new t(y);case r.BYTE:return new a(y)}}s.fromArray=function(A){return A.reduce(function(g,j){return typeof j=="string"?g.push(U(j,null)):j.data&&g.push(U(j.data,j.mode)),g},[])},s.fromString=function(A,g){const j=T(A,u.isKanjiModeEnabled()),S=w(j),R=h(S,g),E=x.find_path(R.map,"start","end"),B=[];for(let K=1;K<E.length-1;K++)B.push(R.table[E[K]].node);return s.fromArray(C(B))},s.rawSplit=function(A){return s.fromArray(T(A,u.isKanjiModeEnabled()))}})(js)),js}var dn;function Wa(){if(dn)return ls;dn=1;const s=He(),r=Ks(),o=Ea(),n=Ia(),a=La(),t=Ra(),d=Ba(),u=En(),x=Da(),f=Ka(),v=Ua(),T=qe(),m=za();function C(R,E){const B=R.size,K=t.getPositions(E);for(let _=0;_<K.length;_++){const O=K[_][0],F=K[_][1];for(let b=-1;b<=7;b++)if(!(O+b<=-1||B<=O+b))for(let P=-1;P<=7;P++)F+P<=-1||B<=F+P||(b>=0&&b<=6&&(P===0||P===6)||P>=0&&P<=6&&(b===0||b===6)||b>=2&&b<=4&&P>=2&&P<=4?R.set(O+b,F+P,!0,!0):R.set(O+b,F+P,!1,!0))}}function w(R){const E=R.size;for(let B=8;B<E-8;B++){const K=B%2===0;R.set(B,6,K,!0),R.set(6,B,K,!0)}}function h(R,E){const B=a.getPositions(E);for(let K=0;K<B.length;K++){const _=B[K][0],O=B[K][1];for(let F=-2;F<=2;F++)for(let b=-2;b<=2;b++)F===-2||F===2||b===-2||b===2||F===0&&b===0?R.set(_+F,O+b,!0,!0):R.set(_+F,O+b,!1,!0)}}function U(R,E){const B=R.size,K=f.getEncodedBits(E);let _,O,F;for(let b=0;b<18;b++)_=Math.floor(b/3),O=b%3+B-8-3,F=(K>>b&1)===1,R.set(_,O,F,!0),R.set(O,_,F,!0)}function y(R,E,B){const K=R.size,_=v.getEncodedBits(E,B);let O,F;for(O=0;O<15;O++)F=(_>>O&1)===1,O<6?R.set(O,8,F,!0):O<8?R.set(O+1,8,F,!0):R.set(K-15+O,8,F,!0),O<8?R.set(8,K-O-1,F,!0):O<9?R.set(8,15-O-1+1,F,!0):R.set(8,15-O-1,F,!0);R.set(K-8,8,1,!0)}function A(R,E){const B=R.size;let K=-1,_=B-1,O=7,F=0;for(let b=B-1;b>0;b-=2)for(b===6&&b--;;){for(let P=0;P<2;P++)if(!R.isReserved(_,b-P)){let M=!1;F<E.length&&(M=(E[F]>>>O&1)===1),R.set(_,b-P,M),O--,O===-1&&(F++,O=7)}if(_+=K,_<0||B<=_){_-=K,K=-K;break}}}function g(R,E,B){const K=new o;B.forEach(function(P){K.put(P.mode.bit,4),K.put(P.getLength(),T.getCharCountIndicator(P.mode,R)),P.write(K)});const _=s.getSymbolTotalCodewords(R),O=u.getTotalCodewordsCount(R,E),F=(_-O)*8;for(K.getLengthInBits()+4<=F&&K.put(0,4);K.getLengthInBits()%8!==0;)K.putBit(0);const b=(F-K.getLengthInBits())/8;for(let P=0;P<b;P++)K.put(P%2?17:236,8);return j(K,R,E)}function j(R,E,B){const K=s.getSymbolTotalCodewords(E),_=u.getTotalCodewordsCount(E,B),O=K-_,F=u.getBlocksCount(E,B),b=K%F,P=F-b,M=Math.floor(K/F),q=Math.floor(O/F),Q=q+1,re=M-q,oe=new x(re);let xe=0;const ee=new Array(F),c=new Array(F);let k=0;const D=new Uint8Array(R.buffer);for(let ie=0;ie<F;ie++){const ce=ie<P?q:Q;ee[ie]=D.slice(xe,xe+ce),c[ie]=oe.encode(ee[ie]),xe+=ce,k=Math.max(k,ce)}const $=new Uint8Array(K);let W=0,Z,X;for(Z=0;Z<k;Z++)for(X=0;X<F;X++)Z<ee[X].length&&($[W++]=ee[X][Z]);for(Z=0;Z<re;Z++)for(X=0;X<F;X++)$[W++]=c[X][Z];return $}function S(R,E,B,K){let _;if(Array.isArray(R))_=m.fromArray(R);else if(typeof R=="string"){let M=E;if(!M){const q=m.rawSplit(R);M=f.getBestVersionForData(q,B)}_=m.fromString(R,M||40)}else throw new Error("Invalid data");const O=f.getBestVersionForData(_,B);if(!O)throw new Error("The amount of data is too big to be stored in a QR Code");if(!E)E=O;else if(E<O)throw new Error(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as E,r as d,a as M,b as A,c as D,d as C,j as e,P as L,i as R,S as z,T as H,e as K,f as $,I as O,h as q,g as B}from"./index-
|
|
1
|
+
import{u as E,r as d,a as M,b as A,c as D,d as C,j as e,P as L,i as R,S as z,T as H,e as K,f as $,I as O,h as q,g as B}from"./index-sjnbPgLJ.js";const v=[{id:"discover"},{id:"agents"},{id:"teams"},{id:"skills"},{id:"installed"}],P={agent:"agents",team:"teams",skill:"skills",connector:"skills"},F={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 I(n){return n==="discover"||n==="agents"||n==="teams"||n==="skills"||n==="installed"}function T(){const n=localStorage.getItem("markus_nav_installItem"),o=localStorage.getItem("markus_nav_storeTab");if(n)return{tab:I(o)?o:"agents",installId:n};const f=new URLSearchParams(window.location.search),s=f.get("install");if(s){const a=f.get("type");return{tab:a&&P[a]||"agents",installId:s}}return{tab:I(o)?o:"discover",installId:null}}function N(){localStorage.removeItem("markus_nav_installItem"),localStorage.removeItem("markus_nav_storeTab");const n=new URLSearchParams(window.location.search);if(n.has("install")||n.has("type")){n.delete("install"),n.delete("type");const o=n.toString();window.history.replaceState(null,"",window.location.pathname+(o?`?${o}`:"")+window.location.hash)}}function V({itemId:n,onDismiss:o,onInstalled:f}){const{t:s}=E(["store","common"]),[a,p]=d.useState(null),[g,l]=d.useState("loading"),[b,k]=d.useState(!1),[u,m]=d.useState("");d.useEffect(()=>{let x=!1;return l("loading"),p(null),m(""),q.getItem(n).then(({item:c})=>{x||(c?(p(c),l("ready")):l("missing"))}).catch(()=>{x||l("missing")}),()=>{x=!0}},[n]);const w=async()=>{if(!(!a||b)){k(!0),m("");try{await B(a),m(s("deepLink.installed")),f()}catch(x){const c=x instanceof Error?x.message:"";m(c.includes("402")||c.includes("Purchase")?s("deepLink.purchaseRequired"):s("deepLink.failed"))}finally{k(!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")}),g==="loading"&&e.jsx("p",{className:"text-sm text-fg-secondary",children:s("deepLink.loading")}),g==="missing"&&e.jsx("p",{className:"text-sm text-rose-300",children:s("deepLink.missing")}),g==="ready"&&a&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm font-semibold text-fg-primary truncate",children:a.name}),a.description&&e.jsx("p",{className:"text-xs text-fg-tertiary line-clamp-2 mt-0.5",children:a.description}),u&&e.jsx("p",{className:"text-xs mt-1 text-brand-300",children:u})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[g==="ready"&&a&&e.jsx("button",{type:"button",disabled:b,onClick:()=>{w()},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(b?"deepLink.installing":"deepLink.install")}),e.jsx("button",{type:"button",onClick:o,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 G({authUser:n}){const{t:o}=E(["store","common"]),[f]=d.useState(T),[s,a]=d.useState(f.tab),p=M(),g=A(L.STORE),l=D(),b=l?.keyboardPane??"content",k=C(v,s,a),[u,m]=d.useState(f.installId),w=d.useRef(s);w.current=s,d.useEffect(()=>{if(p||!g)return;const t=r=>{if(l?.keyboardPane==="l0"||r.metaKey||r.ctrlKey||r.altKey||R(r.target))return;const i=r.key.length===1?r.key.toLowerCase():r.key;if(i==="h"||i==="ArrowLeft"){r.preventDefault(),l?.setL0FocusPageId(L.STORE),l?.setLeftCollapsed(!1),l?.setKeyboardPane("l0");return}if(i==="l"||i==="ArrowRight"){r.preventDefault(),l?.keyboardPane!=="l1"&&l?.setKeyboardPane("l1");return}const h=i==="j"||i==="ArrowDown"?1:i==="k"||i==="ArrowUp"?-1:0;if(!h)return;r.preventDefault(),l?.setKeyboardPane("l1");const y=v.findIndex(_=>_.id===w.current),S=v[Math.max(0,Math.min(v.length-1,y+h))];a(S.id),requestAnimationFrame(()=>{document.querySelector(`[data-store-tab-id="${S.id}"]`)?.scrollIntoView({block:"nearest"})})};return document.addEventListener("keydown",t,!0),()=>document.removeEventListener("keydown",t,!0)},[p,g,l]),d.useEffect(()=>{const t=T();t.installId&&(m(t.installId),I(t.tab)&&a(t.tab),N())},[]),d.useEffect(()=>{const t=r=>{const i=r.detail;if(i.page==="store"||i.page==="explore"){const h=i.params?.storeTab??localStorage.getItem("markus_nav_storeTab"),y=i.params?.installItem??localStorage.getItem("markus_nav_installItem");h&&I(h)&&a(h),y&&m(y),(h||y)&&N()}};return window.addEventListener("markus:navigate",t),()=>window.removeEventListener("markus:navigate",t)},[]);const x=(t,r)=>{const i=P[t]??"agents";r&&m(r),a(i)},c=()=>m(null),j=()=>e.jsxs(e.Fragment,{children:[u&&e.jsx(V,{itemId:u,onDismiss:c,onInstalled:c}),s==="discover"&&e.jsx(z,{onOpenType:x}),s==="agents"&&e.jsx(H,{authUser:n,highlightItemId:u,onHighlightDone:c}),s==="teams"&&e.jsx(K,{highlightItemId:u,onHighlightDone:c}),s==="skills"&&e.jsx($,{highlightItemId:u,onHighlightDone:c}),s==="installed"&&e.jsx(O,{})]});return p?e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-col",onTouchStart:k.onTouchStart,onTouchEnd:k.onTouchEnd,children:[e.jsx("div",{className:"flex shrink-0 overflow-x-auto scrollbar-hide",children:v.map(t=>e.jsx("button",{onClick:()=>a(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:o(`tabs.${t.id}`)},t.id))}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col",children:j()})]}):e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-row",children:[e.jsxs("nav",{"data-keyboard-pane":"l1",className:`w-36 shrink-0 bg-surface-secondary rounded-xl m-1 mr-0 flex flex-col py-4 px-2 gap-1 ${b==="l1"?"ring-1 ring-inset ring-brand-500/30":""}`,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:o("title")})}),v.map(t=>e.jsxs("button",{"data-store-tab-id":t.id,onClick:()=>a(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?b==="l1"?"bg-brand-500/25 text-brand-400 ring-1 ring-inset ring-brand-500/40":"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:F[t.id]})}),o(`tabs.${t.id}`)]},t.id))]}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col",children:j()})]})}export{G as StorePage};
|