@markus-global/cli 0.9.9-rc.0 → 0.9.9-rc.1

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 (63) hide show
  1. package/dist/markus.mjs +1 -1
  2. package/dist/web-ui/assets/{CommentInput-BRkHjDZN.js → CommentInput-CidSogOF.js} +1 -1
  3. package/dist/web-ui/assets/{ContentRenderer-BHf4qoQ8.js → ContentRenderer-BsmttX9l.js} +2 -2
  4. package/dist/web-ui/assets/{DeliverableShareModal-BuGiP0iO.js → DeliverableShareModal-Ck-iPMFP.js} +3 -3
  5. package/dist/web-ui/assets/{Deliverables-CCRw1-G6.js → Deliverables-DhciZGmH.js} +1 -1
  6. package/dist/web-ui/assets/{Notifications-V3K-Jh5R.js → Notifications-kiOr1WLO.js} +1 -1
  7. package/dist/web-ui/assets/{Search-Yq4GtqtT.js → Search-R51lNgNR.js} +1 -1
  8. package/dist/web-ui/assets/{Settings-DSLj6wZd.js → Settings-CEpDPzDi.js} +1 -1
  9. package/dist/web-ui/assets/{Store-C8MuiBYk.js → Store-CdvKtaTQ.js} +1 -1
  10. package/dist/web-ui/assets/{Team-C9CW4uI_.js → Team-CxcNwa5O.js} +4 -4
  11. package/dist/web-ui/assets/{Work-gqXPqaqb.js → Work-C_8_ZUiW.js} +1 -1
  12. package/dist/web-ui/assets/{arc-4Un3epQ-.js → arc-QfptBfyf.js} +1 -1
  13. package/dist/web-ui/assets/{architectureDiagram-3BPJPVTR-P9JLPAFD.js → architectureDiagram-3BPJPVTR-BwaTd39l.js} +1 -1
  14. package/dist/web-ui/assets/{blockDiagram-GPEHLZMM-DMVZw0je.js → blockDiagram-GPEHLZMM-F6uVkCU-.js} +1 -1
  15. package/dist/web-ui/assets/{c4Diagram-AAUBKEIU-CUm_kG8b.js → c4Diagram-AAUBKEIU-CLkZF07J.js} +1 -1
  16. package/dist/web-ui/assets/channel-G3UyRMO9.js +1 -0
  17. package/dist/web-ui/assets/{chunk-2J33WTMH-CO16L8Rv.js → chunk-2J33WTMH-xJTx1LaK.js} +1 -1
  18. package/dist/web-ui/assets/{chunk-4BX2VUAB-CX7Icsih.js → chunk-4BX2VUAB-CgzeJPH6.js} +1 -1
  19. package/dist/web-ui/assets/{chunk-55IACEB6-BXo53Ksk.js → chunk-55IACEB6-CSEwSjbc.js} +1 -1
  20. package/dist/web-ui/assets/{chunk-727SXJPM-l-dLi7wm.js → chunk-727SXJPM-CCP8OjW9.js} +1 -1
  21. package/dist/web-ui/assets/{chunk-AQP2D5EJ-CVn9n6_W.js → chunk-AQP2D5EJ-DYfEEGkD.js} +1 -1
  22. package/dist/web-ui/assets/{chunk-FMBD7UC4-DUmAAOWu.js → chunk-FMBD7UC4-BqyWUvsM.js} +1 -1
  23. package/dist/web-ui/assets/{chunk-ND2GUHAM-DMzyCujK.js → chunk-ND2GUHAM-BE4yiTgV.js} +1 -1
  24. package/dist/web-ui/assets/{chunk-QZHKN3VN-BN56eR92.js → chunk-QZHKN3VN-DRj_Bv-t.js} +1 -1
  25. package/dist/web-ui/assets/classDiagram-4FO5ZUOK-D0EQckXG.js +1 -0
  26. package/dist/web-ui/assets/classDiagram-v2-Q7XG4LA2-D0EQckXG.js +1 -0
  27. package/dist/web-ui/assets/{cose-bilkent-S5V4N54A-Cp0hhUPC.js → cose-bilkent-S5V4N54A-BX2qCzYu.js} +1 -1
  28. package/dist/web-ui/assets/{dagre-BM42HDAG-d7vcGaj6.js → dagre-BM42HDAG-pifgwsOY.js} +1 -1
  29. package/dist/web-ui/assets/{diagram-2AECGRRQ-j-e6bNLc.js → diagram-2AECGRRQ-CuEM3W8S.js} +1 -1
  30. package/dist/web-ui/assets/{diagram-5GNKFQAL-aBO68Kr1.js → diagram-5GNKFQAL-BlbUk4AS.js} +1 -1
  31. package/dist/web-ui/assets/{diagram-KO2AKTUF-JjKTZ0q4.js → diagram-KO2AKTUF-ClaQFeIf.js} +1 -1
  32. package/dist/web-ui/assets/{diagram-LMA3HP47-D8_a-FKC.js → diagram-LMA3HP47-XGsIGJ4b.js} +1 -1
  33. package/dist/web-ui/assets/{diagram-OG6HWLK6-CWlPPlog.js → diagram-OG6HWLK6-BdNtMUBa.js} +1 -1
  34. package/dist/web-ui/assets/{docx-preview-D9tDSXmy.js → docx-preview-B4TYzKVe.js} +1 -1
  35. package/dist/web-ui/assets/{erDiagram-TEJ5UH35-BxU-hkOq.js → erDiagram-TEJ5UH35-DDYsF1UT.js} +1 -1
  36. package/dist/web-ui/assets/{flowDiagram-I6XJVG4X-DiOr2xDD.js → flowDiagram-I6XJVG4X-Ca4Prfb_.js} +1 -1
  37. package/dist/web-ui/assets/{ganttDiagram-6RSMTGT7-Bzzg-s51.js → ganttDiagram-6RSMTGT7-CpAWp7CX.js} +1 -1
  38. package/dist/web-ui/assets/{gitGraphDiagram-PVQCEYII-C4dRhtxr.js → gitGraphDiagram-PVQCEYII-NbgB-War.js} +1 -1
  39. package/dist/web-ui/assets/{index-C-JeUF8o.js → index-ByDm2R2Q.js} +4 -4
  40. package/dist/web-ui/assets/{infoDiagram-5YYISTIA-D7J6SUW3.js → infoDiagram-5YYISTIA-raIYdtwN.js} +1 -1
  41. package/dist/web-ui/assets/{ishikawaDiagram-YF4QCWOH-DLkxtd74.js → ishikawaDiagram-YF4QCWOH-DgldiO9i.js} +1 -1
  42. package/dist/web-ui/assets/{journeyDiagram-JHISSGLW-Du67A9Yw.js → journeyDiagram-JHISSGLW-C0Ggun7y.js} +1 -1
  43. package/dist/web-ui/assets/{kanban-definition-UN3LZRKU-NjM-JWNB.js → kanban-definition-UN3LZRKU-Dv28stos.js} +1 -1
  44. package/dist/web-ui/assets/{mermaid.core-DZ44f5S6.js → mermaid.core-CKl3afmE.js} +5 -5
  45. package/dist/web-ui/assets/{mindmap-definition-RKZ34NQL-jzJVxMGu.js → mindmap-definition-RKZ34NQL-ClLrKr92.js} +1 -1
  46. package/dist/web-ui/assets/{pieDiagram-4H26LBE5-Bji1NMKi.js → pieDiagram-4H26LBE5-B17e_RsX.js} +1 -1
  47. package/dist/web-ui/assets/{quadrantDiagram-W4KKPZXB-CVn-a7Se.js → quadrantDiagram-W4KKPZXB-UsM2h5vg.js} +1 -1
  48. package/dist/web-ui/assets/{requirementDiagram-4Y6WPE33-C0NfgW04.js → requirementDiagram-4Y6WPE33-Bk8JUCl8.js} +1 -1
  49. package/dist/web-ui/assets/{sankeyDiagram-5OEKKPKP-YU6cIInr.js → sankeyDiagram-5OEKKPKP-DJTiJaZJ.js} +1 -1
  50. package/dist/web-ui/assets/{sequenceDiagram-3UESZ5HK-D2tlIr4X.js → sequenceDiagram-3UESZ5HK-CeSW5rTy.js} +1 -1
  51. package/dist/web-ui/assets/{stateDiagram-AJRCARHV-YlXSGJww.js → stateDiagram-AJRCARHV-BZrwgveS.js} +1 -1
  52. package/dist/web-ui/assets/stateDiagram-v2-BHNVJYJU-DhFW_GeR.js +1 -0
  53. package/dist/web-ui/assets/{timeline-definition-PNZ67QCA-vHgUjj7M.js → timeline-definition-PNZ67QCA-CC6erNUi.js} +1 -1
  54. package/dist/web-ui/assets/{vennDiagram-CIIHVFJN-D98-iHMN.js → vennDiagram-CIIHVFJN-Dq3XTEho.js} +1 -1
  55. package/dist/web-ui/assets/{wardley-L42UT6IY-BExY05R5.js → wardley-L42UT6IY-0QJodPho.js} +1 -1
  56. package/dist/web-ui/assets/{wardleyDiagram-YWT4CUSO-hUWvRAhb.js → wardleyDiagram-YWT4CUSO-D8GA1BsQ.js} +1 -1
  57. package/dist/web-ui/assets/{xychartDiagram-2RQKCTM6-B0zLuKau.js → xychartDiagram-2RQKCTM6-D2jxDEwf.js} +1 -1
  58. package/dist/web-ui/index.html +1 -1
  59. package/package.json +1 -1
  60. package/dist/web-ui/assets/channel-CrGHeOxn.js +0 -1
  61. package/dist/web-ui/assets/classDiagram-4FO5ZUOK-h8nFueDV.js +0 -1
  62. package/dist/web-ui/assets/classDiagram-v2-Q7XG4LA2-h8nFueDV.js +0 -1
  63. package/dist/web-ui/assets/stateDiagram-v2-BHNVJYJU-Dk-B40e3.js +0 -1
@@ -1,4 +1,4 @@
1
- import{u as je,r as i,j as e,E as jn,l as $,x as oa,a as ia,b as la,c as da,X as Pr,n as rs,Y as ca,Z as Er,P as Tr,h as Fe,i as ua,$ as Nn,w as xa,o as ns,t as Ls,_ as ma}from"./index-C-JeUF8o.js";function ga(s,r){for(var l=0;l<r.length;l++){const o=r[l];if(typeof o!="string"&&!Array.isArray(o)){for(const a in o)if(a!=="default"&&!(a in s)){const t=Object.getOwnPropertyDescriptor(o,a);t&&Object.defineProperty(s,a,t.get?t:{enumerable:!0,get:()=>o[a]})}}}return Object.freeze(Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}))}function fa(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 pa(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(),l=/opus|5\.4|o3-(?!mini)|o1-(?!mini)|gemini.*ultra|sonnet-4-20/,o=/haiku|flash|nano|lite|small|fast|free|8b|7b|1b|3b/;return/o4-mini|o3-mini|o1-mini|gpt-4o-mini/.test(r)?"pro":l.test(r)?"max":o.test(r)?"base":"pro"}const Ir={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 wn({models:s,selectedModel:r,onSelect:l,loading:o,compact:a,maxVisible:t,showTiers:d}){const{t:u}=je("settings"),[x,h]=i.useState(""),[j,E]=i.useState(!1),[f,w]=i.useState(""),k=i.useMemo(()=>{let m=s;if(x){const N=x.toLowerCase();m=m.filter(T=>T.id.toLowerCase().includes(N))}return f&&(m=m.filter(N=>as(N)===f)),m},[s,x,f]),g=i.useMemo(()=>{const m={max:0,pro:0,base:0};for(const N of s)m[as(N)]++;return m},[s]),S=t??(a?5:10),b=j?k:k.slice(0,S),y=k.length>S;return o?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:()=>w(""),className:`px-2 py-0.5 rounded text-[10px] transition-colors ${f?"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(m=>g[m]>0).map(m=>e.jsx("button",{onClick:()=>w(f===m?"":m),className:`px-2 py-0.5 rounded text-[10px] font-medium uppercase transition-colors border ${f===m?Ir[m]:"border-transparent bg-surface-overlay text-fg-tertiary hover:text-fg-secondary"}`,children:u("modelPicker.tierCount",{tier:u(`modelRouting.tier.${m}`),count:g[m]})},m))]}),s.length>5&&e.jsx("input",{type:"text",value:x,onChange:m=>{h(m.target.value),E(!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:b.map(m=>{const N=m.id===r,T=as(m);return e.jsxs("button",{type:"button",onClick:()=>l(m.id),className:`w-full text-left px-3 py-2 rounded-lg transition-colors ${N?"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 ${N?"border-brand-500":"border-border-default"}`,children:N&&e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-brand-500"})}),e.jsx("span",{className:`text-xs font-medium ${N?"text-brand-500":"text-fg-primary"}`,children:m.id}),d&&e.jsx("span",{className:`px-1.5 py-0.5 rounded text-[9px] font-semibold uppercase border ${Ir[T]}`,children:u(`modelRouting.tier.${T}`)})]}),e.jsx("div",{className:"flex items-center gap-2",children:N&&e.jsx("span",{className:"text-[10px] text-brand-500 font-medium",children:u("modelPicker.active")})})]}),pa(m)&&m.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:[fa(m.maxInputTokens)," ",u("modelPicker.ctx")]})}),!a&&e.jsxs("div",{className:"ml-5 mt-1 flex items-center gap-1.5 flex-wrap",children:[m.capabilities.functionCalling&&e.jsx(ot,{label:u("modelPicker.capabilities.tools")}),m.capabilities.vision&&e.jsx(ot,{label:u("modelPicker.capabilities.vision")}),m.capabilities.reasoning&&e.jsx(ot,{label:u("modelPicker.capabilities.reasoning")}),m.capabilities.promptCaching&&e.jsx(ot,{label:u("modelPicker.capabilities.caching")}),m.capabilities.webSearch&&e.jsx(ot,{label:u("modelPicker.capabilities.search")})]})]},m.id)})}),y&&!j&&e.jsx("button",{type:"button",onClick:()=>E(!0),className:"text-xs text-brand-500 hover:text-brand-400 px-3",children:u("modelPicker.showAll",{count:k.length})}),j&&y&&e.jsx("button",{type:"button",onClick:()=>E(!1),className:"text-xs text-fg-tertiary hover:text-fg-secondary px-3",children:u("modelPicker.showLess")})]})}function ot({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 ct({value:s,options:r,placeholder:l,onChange:o}){const{t:a}=je("settings"),[t,d]=i.useState(!1),[u,x]=i.useState(""),h=i.useRef(null),j=i.useRef(null),E=i.useRef(null),[f,w]=i.useState(-1);i.useEffect(()=>{function m(N){h.current&&!h.current.contains(N.target)&&d(!1)}return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[]),i.useEffect(()=>{t&&j.current&&j.current.focus()},[t]);const k=i.useMemo(()=>{if(!u.trim())return r;const m=u.toLowerCase();return r.filter(N=>N.modelId.toLowerCase().includes(m)||N.modelName.toLowerCase().includes(m)||N.provider.toLowerCase().includes(m)||N.providerLabel.toLowerCase().includes(m)||N.tier&&N.tier.toLowerCase().includes(m))},[r,u]),g=i.useMemo(()=>{const m=new Map;for(const T of k){const I=T.providerLabel;m.has(I)||m.set(I,[]),m.get(I).push(T)}const N={max:0,pro:1,base:2};for(const T of m.values())T.sort((I,P)=>(N[I.tier??"base"]??9)-(N[P.tier??"base"]??9));return m},[k]),S=i.useMemo(()=>{const m=[];for(const N of g.values())m.push(...N);return m},[g]),b=i.useMemo(()=>{if(!s)return l??a("modelRouting.auto");const m=r.find(N=>`${N.provider}/${N.modelId}`===s);return m?`${m.providerLabel}/${m.modelName}`:s},[s,r,l,a]);function y(m){if(!t){(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),d(!0));return}switch(m.key){case"ArrowDown":m.preventDefault(),w(N=>Math.min(N+1,S.length-1));break;case"ArrowUp":m.preventDefault(),w(N=>Math.max(N-1,-1));break;case"Enter":m.preventDefault(),f===-1?o(""):S[f]&&o(`${S[f].provider}/${S[f].modelId}`),d(!1),x("");break;case"Escape":d(!1),x("");break}}return i.useEffect(()=>{E.current&&f>=0&&E.current.querySelector(`[data-focus-index="${f}"]`)?.scrollIntoView({block:"nearest"})},[f]),e.jsxs("div",{ref:h,className:"relative",onKeyDown:y,children:[e.jsx("button",{type:"button",onClick:()=>{d(!t),x(""),w(-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:b}),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:j,type:"text",value:u,onChange:m=>{x(m.target.value),w(-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:E,className:"overflow-y-auto flex-1",children:[e.jsx("div",{className:`px-3 py-1.5 text-xs cursor-pointer ${f===-1?"bg-brand-500/20 text-brand-500":"text-fg-secondary hover:bg-surface-overlay"}`,onClick:()=>{o(""),d(!1),x("")},children:l??a("modelRouting.auto")}),[...g.entries()].map(([m,N])=>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:m}),N.map(T=>{const I=S.indexOf(T),P=`${T.provider}/${T.modelId}`===s;return e.jsxs("div",{"data-focus-index":I,className:`px-3 py-1.5 text-xs cursor-pointer flex items-center gap-2 ${I===f?"bg-brand-500/20":P?"bg-surface-overlay":"hover:bg-surface-overlay/50"}`,onClick:()=>{o(`${T.provider}/${T.modelId}`),d(!1),x("")},children:[e.jsx("span",{className:"flex-1 truncate text-fg-primary",children:T.modelName}),T.tier&&e.jsx(ha,{tier:T.tier}),T.costTier&&e.jsx("span",{className:"text-[9px] text-fg-tertiary",children:T.costTier})]},`${T.provider}/${T.modelId}`)})]},m)),S.length===0&&e.jsx("div",{className:"px-3 py-3 text-xs text-fg-tertiary text-center",children:a("modelPicker.empty")})]})]})]})}function ha({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 ba=500,Lr=[{groupKey:"image",capabilities:["image_recognition","image_generation"]},{groupKey:"audio",capabilities:["audio_tts","audio_stt"]},{groupKey:"video",capabilities:["video_generation"]}];function ya({onSave:s,configuredProviders:r}){const{t:l}=je(["settings","common"]),[o,a]=i.useState({}),[t,d]=i.useState(null),[u,x]=i.useState(!1),[h,j]=i.useState(null),[E,f]=i.useState(!0),[w,k]=i.useState("idle"),[g,S]=i.useState(null),[b,y]=i.useState({}),[m,N]=i.useState(!1),[T,I]=i.useState("idle"),[P,O]=i.useState(null),[B,D]=i.useState(!1),R=i.useRef(null),U=i.useRef(null),_=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=>{j(String(c)),x(!0)})},[_]),i.useEffect(()=>{let c=!1;return f(!0),fetch("/api/models/routing-candidates",{credentials:"include"}).then(C=>{if(!C.ok)throw new Error(`HTTP ${C.status}`);return C.json()}).then(C=>{if(c)return;const L=[];for(const F of C.providers)for(const q of F.models)L.push({provider:F.provider,providerLabel:F.displayName,modelId:q.id,modelName:q.name,mode:q.mode,tier:q.tier,costTier:q.costTier,capabilities:q.capabilities});S(L)}).catch(()=>{c||S(null)}).finally(()=>{c||f(!1)}),()=>{c=!0}},[_]),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=>{y(c.suggestions),N(!0)}).catch(()=>N(!0))},[_]);const V=i.useCallback(c=>{k("saving"),s(c).then(()=>{k("saved"),setTimeout(()=>k(C=>C==="saved"?"idle":C),2e3)}).catch(()=>{k("error"),setTimeout(()=>k(C=>C==="error"?"idle":C),3e3)})},[s]),K=i.useCallback((c,C)=>{U.current={capabilityRouting:c!==void 0?{assignments:c}:U.current?.capabilityRouting,routingDefaultModel:C!==void 0?C:U.current?.routingDefaultModel},R.current&&clearTimeout(R.current),R.current=setTimeout(()=>{const L=U.current;U.current=null,L&&V(L)},ba)},[V]),Q=i.useMemo(()=>r.flatMap(c=>(c.models??[{id:c.model,name:c.model}]).map(C=>({provider:c.name,providerLabel:c.displayName??c.name,modelId:C.id,modelName:C.name}))),[r]),Z=g??Q,le=i.useMemo(()=>Object.entries(o).map(([c,C])=>`${c}:${C?.provider??""}/${C?.model??""}`).sort().join("|"),[o]);i.useEffect(()=>{!u||!g||g.length===0||g.some(c=>!!c.modelId)&&(a(c=>{let C=!1;const L={...c};for(const F of Lr)for(const q of F.capabilities){const ee=L[q];if(!ee?.model)continue;const J=kn(g,q);if(J.length===0)continue;J.some(ue=>ue.provider===ee.provider&&ue.modelId===ee.model)||(delete L[q],C=!0)}return C?(K(L),L):c}),d(c=>{if(!c?.model||g.some(q=>q.provider===c.provider&&q.modelId===c.model))return c;const L=g.find(q=>q.provider==="markus"),F=L?{provider:L.provider,model:L.modelId}:{provider:g[0].provider,model:g[0].modelId};return s({routingDefaultModel:F}),F}))},[u,g,_,K,le]);const de=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(()=>{}),f(!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 C=[];for(const L of c.providers)for(const F of L.models)C.push({provider:L.provider,providerLabel:L.displayName,modelId:F.id,modelName:F.name,mode:F.mode,tier:F.tier,costTier:F.costTier,capabilities:F.capabilities});S(C)}).catch(()=>{}).finally(()=>f(!1))},[]),he=i.useCallback(async()=>{if(T!=="working"){I("working"),O(null);try{const c=await fetch("/api/settings/llm/restore-recommended",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),C=await c.json().catch(()=>({}));if(!c.ok||!C.ok)throw new Error(C.error??`HTTP ${c.status}`);C.capabilityRouting&&a(C.capabilityRouting.assignments??{}),C.routingDefaultModel!==void 0&&d(C.routingDefaultModel),de(),I("idle"),k("saved"),setTimeout(()=>k(L=>L==="saved"?"idle":L),2e3)}catch(c){I("error"),O(c instanceof Error?c.message:String(c)),setTimeout(()=>I("idle"),4e3)}}},[T,de]),se=Z.length>0;return u?h?e.jsx("div",{className:"bg-red-500/10 border border-red-500/30 rounded-xl p-4 text-xs text-red-400",children:l("modelRouting.loadError",{error:h})}):E&&!se?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:l("modelRouting.loadingModels")})]})})}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(Na,{status:w,t:l}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx("button",{type:"button",onClick:()=>D(!0),disabled:T==="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:l(T==="working"?"modelRouting.restoreWorking":"modelRouting.restoreRecommended")}),P&&e.jsx("span",{className:"text-[10px] text-red-400 max-w-xs text-right",children:P})]})]}),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:l("modelRouting.defaultModelTitle")}),e.jsx("p",{className:"text-xs text-fg-tertiary mt-1",children:l("modelRouting.defaultModelDesc")})]}),e.jsx("div",{className:"max-w-md",children:e.jsx(ct,{value:t?`${t.provider}/${t.model}`:"",options:Z,placeholder:l("modelRouting.defaultModelPlaceholder"),onChange:c=>{if(!c)d(null),K(void 0,null);else{const[C,...L]=c.split("/"),F={provider:C,model:L.join("/")};if(d(F),o.text){const q={...o};delete q.text,a(q),K(q,F)}else K(void 0,F)}}})})]}),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:l("modelRouting.capabilityAssignTitle")}),e.jsx("p",{className:"text-xs text-fg-tertiary mt-1",children:l("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:l("modelRouting.noProvidersHint")}),r.length>0&&e.jsx("div",{className:"space-y-4",children:Lr.map(c=>e.jsx(va,{groupKey:c.groupKey,capabilities:c.capabilities,assignments:o,suggestions:b,allModels:Z,configuredProviderNames:new Set(r.map(C=>C.name)),t:l,onAssign:(C,L)=>{const F={...o};L?F[C]=L:delete F[C],a(F),K(F)}},c.groupKey))})]}),B&&e.jsx(jn,{variant:"primary",title:l("modelRouting.restoreRecommended"),message:l("modelRouting.restoreConfirm"),confirmLabel:l("common:confirm"),onConfirm:()=>{D(!1),he()},onCancel:()=>D(!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 va({groupKey:s,capabilities:r,assignments:l,suggestions:o,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 h=l[x],j=o[x],E=h?`${h.provider}/${h.model}`:"",f=kn(a,x),w=j?f.find(y=>y.provider===j.provider&&y.modelId===j.model)?.modelName??j.model:void 0,k=f.length>0,g=h?ja(a,h.provider,h.model):void 0,S=h&&!t.has(h.provider),b=!!(h&&k&&x!=="text"&&!f.some(y=>y.provider===h.provider&&y.modelId===h.model));return e.jsxs("div",{className:`flex items-center gap-3 px-3 py-2 rounded-lg ${b?"bg-red-500/10 border border-red-500/30":S?"bg-yellow-500/10 border border-yellow-500/30":!k&&!h?"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:b?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:["⚠ ",h.model]}),e.jsx("span",{className:"text-[10px] text-red-400/70",children:d("modelRouting.mismatchHint")})]}),e.jsx(ct,{value:"",options:f,placeholder:d("modelRouting.selectModel"),onChange:y=>{if(!y)u(x,null);else{const[m,...N]=y.split("/");u(x,{provider:m,model:N.join("/")})}}})]}):k?e.jsx(ct,{value:E,options:f,placeholder:w?`${w} (${d("modelRouting.suggested")})`:d("modelRouting.selectModel"),onChange:y=>{if(!y)u(x,null);else{const[m,...N]=y.split("/");u(x,{provider:m,model:N.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:[b&&e.jsx("span",{className:"text-[10px] text-red-400 font-medium",title:d("modelRouting.mismatchHint"),children:"⚠"}),!b&&S&&e.jsx("span",{className:"text-[10px] text-yellow-400 font-medium",title:d("modelRouting.staleProvider"),children:"⚠"}),!b&&!S&&g&&e.jsx(Rr,{tier:g}),!b&&!S&&!g&&h&&e.jsx(Rr,{tier:"unknown"})]}),e.jsx("div",{className:"w-8 shrink-0 flex justify-end",children:h&&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 ja(s,r,l){return s.find(a=>a.provider===r&&a.modelId===l)?.tier}function Na({status:s,t:r}){if(s==="idle")return null;const l={idle:"",saving:"text-fg-tertiary",saved:"text-green-400",error:"text-red-400"},o={idle:"",saving:r("modelRouting.saving"),saved:r("modelRouting.saved"),error:r("modelRouting.saveError")};return e.jsx("div",{className:`text-xs font-medium transition-opacity ${l[s]}`,children:o[s]})}function Rr({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 wa=new Set(["imageGeneration","tts","stt","videoGeneration","audioOutput","audioInput"]);function kn(s,r){if(r==="text")return s.filter(d=>!(d.capabilities&&d.capabilities.some(u=>wa.has(u))||d.mode&&d.mode!=="chat"));const l={image_generation:["image_generation"],audio_tts:["audio_speech"],audio_stt:["audio_transcription"],video_generation:["video_generation"]},o={image_recognition:["vision"],image_generation:["imageGeneration"],audio_tts:["tts"],audio_stt:["stt"],video_generation:["videoGeneration"]},a=l[r],t=o[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)))}function ka({configuredProviders:s}){const{t:r}=je("settings"),[l,o]=i.useState(null),[a,t]=i.useState([]),[d,u]=i.useState(null),[x,h]=i.useState(null),j=i.useMemo(()=>s.map(g=>`${g.name}:${g.models?.length??0}`).sort().join(","),[s]),E=i.useCallback(async()=>{u(null);try{const[{agents:g},S]=await Promise.all([$.agents.list(),$.teams.list()]),b=S.teams.map(m=>({id:m.id,name:m.name}));t(b);const y=await Promise.all(g.map(async m=>{try{const T=(await $.agents.get(m.id)).config?.llmConfig;return{id:m.id,name:m.name||m.id,teamId:m.teamId,override:T?.modelMode==="custom"&&T.primary&&T.defaultModel?`${T.primary}/${T.defaultModel}`:null,llmConfig:{modelMode:T?.modelMode,primary:T?.primary??"",defaultModel:T?.defaultModel}}}catch{return{id:m.id,name:m.name||m.id,teamId:m.teamId,override:null,llmConfig:{modelMode:"default",primary:"",defaultModel:void 0}}}}));o(g.length?y:null)}catch(g){u(String(g))}},[j]);i.useEffect(()=>{E()},[E,j]);const f=i.useMemo(()=>{const g=[];for(const S of s)for(const b of S.models??[])g.push({provider:S.name,providerLabel:S.displayName??S.name,modelId:b.id,modelName:b.name??b.id});return g},[s]),w=async(g,S)=>{h(g),u(null);try{if(S){const[b,y]=[S.slice(0,S.lastIndexOf("/")),S.slice(S.lastIndexOf("/")+1)];await $.agents.updateConfig(g,{llmConfig:{modelMode:"custom",primary:b,defaultModel:y}})}else await $.agents.updateConfig(g,{llmConfig:{modelMode:"default",primary:"",defaultModel:void 0}});o(b=>b?.map(y=>y.id===g?{...y,override:S}:y)??b)}catch(b){u(String(b))}finally{h(null)}},k=i.useMemo(()=>{if(!l)return[];const g=new Map,S=[];for(const y of l)if(y.teamId){const m=g.get(y.teamId)??[];m.push(y),g.set(y.teamId,m)}else S.push(y);const b=[];S.length&&b.push({key:"ungrouped",label:r("perAgentModel.ungrouped",{defaultValue:"Ungrouped"}),rows:S});for(const y of a){const m=g.get(y.id);m?.length&&b.push({key:`team:${y.id}`,label:y.name,rows:m})}for(const[y,m]of g)a.some(N=>N.id===y)||b.push({key:`team:${y}`,label:y,rows:m});return b},[l,a,r]);return l===null&&!d?e.jsx("div",{className:"bg-surface-elevated rounded-xl p-5 text-sm text-fg-tertiary",children:r("common:loading",{defaultValue:"Loading…"})}):e.jsxs("div",{className:"bg-surface-elevated rounded-xl p-5 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-medium",children:r("perAgentModel.title",{defaultValue:"Per-agent default model"})}),e.jsx("div",{className:"text-xs text-fg-tertiary mt-0.5",children:r("perAgentModel.desc",{defaultValue:'Bind a specific provider+model to an agent, or leave it following the global default. This is what the composer "Apply to current agent" writes.'})})]})}),d&&e.jsx("div",{className:"text-xs text-red-500",children:d}),(!l||l.length===0)&&!d&&e.jsx("div",{className:"text-xs text-fg-tertiary",children:r("perAgentModel.noAgents",{defaultValue:"No agents available."})}),l&&l.length>0&&e.jsx("div",{className:"space-y-5",children:k.map(g=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-fg-tertiary truncate",children:g.label}),e.jsx("span",{className:"text-[10px] text-fg-tertiary/70 tabular-nums shrink-0",children:g.rows.length})]}),e.jsx("div",{className:"space-y-2",children:g.rows.map(S=>e.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm",children:[e.jsxs("div",{className:"flex-1 truncate",children:[e.jsx("span",{className:"font-medium",children:S.name}),e.jsx("span",{className:"text-xs text-fg-tertiary ml-2 truncate",children:S.id})]}),e.jsxs("div",{className:"flex items-center gap-2 w-[320px]",children:[S.override?e.jsxs(e.Fragment,{children:[e.jsx(ct,{value:S.override,options:f,placeholder:r("perAgentModel.followGlobal",{defaultValue:"Follow global"}),onChange:b=>{w(S.id,b||null)}}),e.jsx("button",{type:"button",disabled:x===S.id,onClick:()=>{w(S.id,null)},className:"shrink-0 px-2.5 py-1.5 text-xs border border-border-default rounded-lg hover:bg-surface-base disabled:opacity-40 transition-colors",children:r("perAgentModel.reset",{defaultValue:"Reset"})})]}):e.jsx(ct,{value:"",options:f,placeholder:r("perAgentModel.followGlobal",{defaultValue:"Follow global"}),onChange:b=>{w(S.id,b||null)}}),x===S.id&&e.jsx("span",{className:"shrink-0 text-[10px] text-fg-tertiary",children:r("common:loading",{defaultValue:"…"})})]})]},S.id))})]},g.key))})]})}const St=[{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,Or;function Ca(){return Or||(Or=1,os=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),os}var is={},De={},Br;function Ve(){if(Br)return De;Br=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(o){if(!o)throw new Error('"version" cannot be null or undefined');if(o<1||o>40)throw new Error('"version" should be in range from 1 to 40');return o*4+17},De.getSymbolTotalCodewords=function(o){return r[o]},De.getBCHDigit=function(l){let o=0;for(;l!==0;)o++,l>>>=1;return o},De.setToSJISFunction=function(o){if(typeof o!="function")throw new Error('"toSJISFunc" is not a valid function.');s=o},De.isKanjiModeEnabled=function(){return typeof s<"u"},De.toSJIS=function(o){return s(o)},De}var ls={},Dr;function Rs(){return Dr||(Dr=1,(function(s){s.L={bit:1},s.M={bit:0},s.Q={bit:3},s.H={bit:2};function r(l){if(typeof l!="string")throw new Error("Param is not a string");switch(l.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: "+l)}}s.isValid=function(o){return o&&typeof o.bit<"u"&&o.bit>=0&&o.bit<4},s.from=function(o,a){if(s.isValid(o))return o;try{return r(o)}catch{return a}}})(ls)),ls}var ds,_r;function Sa(){if(_r)return ds;_r=1;function s(){this.buffer=[],this.length=0}return s.prototype={get:function(r){const l=Math.floor(r/8);return(this.buffer[l]>>>7-r%8&1)===1},put:function(r,l){for(let o=0;o<l;o++)this.putBit((r>>>l-o-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){const l=Math.floor(this.length/8);this.buffer.length<=l&&this.buffer.push(0),r&&(this.buffer[l]|=128>>>this.length%8),this.length++}},ds=s,ds}var cs,Kr;function Ma(){if(Kr)return cs;Kr=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,l,o,a){const t=r*this.size+l;this.data[t]=o,a&&(this.reservedBit[t]=!0)},s.prototype.get=function(r,l){return this.data[r*this.size+l]},s.prototype.xor=function(r,l,o){this.data[r*this.size+l]^=o},s.prototype.isReserved=function(r,l){return this.reservedBit[r*this.size+l]},cs=s,cs}var us={},Ur;function Aa(){return Ur||(Ur=1,(function(s){const r=Ve().getSymbolSize;s.getRowColCoords=function(o){if(o===1)return[];const a=Math.floor(o/7)+2,t=r(o),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(o){const a=[],t=s.getRowColCoords(o),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}})(us)),us}var xs={},Fr;function Pa(){if(Fr)return xs;Fr=1;const s=Ve().getSymbolSize,r=7;return xs.getPositions=function(o){const a=s(o);return[[0,0],[a-r,0],[0,a-r]]},xs}var ms={},Vr;function Ea(){return Vr||(Vr=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,h=null,j=null;for(let E=0;E<t;E++){u=x=0,h=j=null;for(let f=0;f<t;f++){let w=a.get(E,f);w===h?u++:(u>=5&&(d+=r.N1+(u-5)),h=w,u=1),w=a.get(f,E),w===j?x++:(x>=5&&(d+=r.N1+(x-5)),j=w,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 h=a.get(u,x)+a.get(u,x+1)+a.get(u+1,x)+a.get(u+1,x+1);(h===4||h===0)&&d++}return d*r.N2},s.getPenaltyN3=function(a){const t=a.size;let d=0,u=0,x=0;for(let h=0;h<t;h++){u=x=0;for(let j=0;j<t;j++)u=u<<1&2047|a.get(h,j),j>=10&&(u===1488||u===93)&&d++,x=x<<1&2047|a.get(j,h),j>=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 l(o,a,t){switch(o){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:"+o)}}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,l(a,x,u))},s.getBestMask=function(a,t){const d=Object.keys(s.Patterns).length;let u=0,x=1/0;for(let h=0;h<d;h++){t(h),s.applyMask(h,a);const j=s.getPenaltyN1(a)+s.getPenaltyN2(a)+s.getPenaltyN3(a)+s.getPenaltyN4(a);s.applyMask(h,a),j<x&&(x=j,u=h)}return u}})(ms)),ms}var Mt={},$r;function Cn(){if($r)return Mt;$r=1;const s=Rs(),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],l=[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 l[(a-1)*4+0];case s.M:return l[(a-1)*4+1];case s.Q:return l[(a-1)*4+2];case s.H:return l[(a-1)*4+3];default:return}},Mt}var gs={},it={},zr;function Ta(){if(zr)return it;zr=1;const s=new Uint8Array(512),r=new Uint8Array(256);return(function(){let o=1;for(let a=0;a<255;a++)s[a]=o,r[o]=a,o<<=1,o&256&&(o^=285);for(let a=255;a<512;a++)s[a]=s[a-255]})(),it.log=function(o){if(o<1)throw new Error("log("+o+")");return r[o]},it.exp=function(o){return s[o]},it.mul=function(o,a){return o===0||a===0?0:s[r[o]+r[a]]},it}var Hr;function Ia(){return Hr||(Hr=1,(function(s){const r=Ta();s.mul=function(o,a){const t=new Uint8Array(o.length+a.length-1);for(let d=0;d<o.length;d++)for(let u=0;u<a.length;u++)t[d+u]^=r.mul(o[d],a[u]);return t},s.mod=function(o,a){let t=new Uint8Array(o);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(o){let a=new Uint8Array([1]);for(let t=0;t<o;t++)a=s.mul(a,new Uint8Array([1,r.exp(t)]));return a}})(gs)),gs}var fs,qr;function La(){if(qr)return fs;qr=1;const s=Ia();function r(l){this.genPoly=void 0,this.degree=l,this.degree&&this.initialize(this.degree)}return r.prototype.initialize=function(o){this.degree=o,this.genPoly=s.generateECPolynomial(this.degree)},r.prototype.encode=function(o){if(!this.genPoly)throw new Error("Encoder not initialized");const a=new Uint8Array(o.length+this.degree);a.set(o);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},fs=r,fs}var ps={},hs={},bs={},Wr;function Sn(){return Wr||(Wr=1,bs.isValid=function(r){return!isNaN(r)&&r>=1&&r<=40}),bs}var Ae={},Gr;function Mn(){if(Gr)return Ae;Gr=1;const s="[0-9]+",r="[A-Z $%*+\\-./:]+";let l="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";l=l.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+l+`)(?:.|[\r
1
+ import{u as je,r as i,j as e,E as jn,l as $,x as oa,a as ia,b as la,c as da,X as Pr,n as rs,Y as ca,Z as Er,P as Tr,h as Fe,i as ua,$ as Nn,w as xa,o as ns,t as Ls,_ as ma}from"./index-ByDm2R2Q.js";function ga(s,r){for(var l=0;l<r.length;l++){const o=r[l];if(typeof o!="string"&&!Array.isArray(o)){for(const a in o)if(a!=="default"&&!(a in s)){const t=Object.getOwnPropertyDescriptor(o,a);t&&Object.defineProperty(s,a,t.get?t:{enumerable:!0,get:()=>o[a]})}}}return Object.freeze(Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}))}function fa(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 pa(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(),l=/opus|5\.4|o3-(?!mini)|o1-(?!mini)|gemini.*ultra|sonnet-4-20/,o=/haiku|flash|nano|lite|small|fast|free|8b|7b|1b|3b/;return/o4-mini|o3-mini|o1-mini|gpt-4o-mini/.test(r)?"pro":l.test(r)?"max":o.test(r)?"base":"pro"}const Ir={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 wn({models:s,selectedModel:r,onSelect:l,loading:o,compact:a,maxVisible:t,showTiers:d}){const{t:u}=je("settings"),[x,h]=i.useState(""),[j,E]=i.useState(!1),[f,w]=i.useState(""),k=i.useMemo(()=>{let m=s;if(x){const N=x.toLowerCase();m=m.filter(T=>T.id.toLowerCase().includes(N))}return f&&(m=m.filter(N=>as(N)===f)),m},[s,x,f]),g=i.useMemo(()=>{const m={max:0,pro:0,base:0};for(const N of s)m[as(N)]++;return m},[s]),S=t??(a?5:10),b=j?k:k.slice(0,S),y=k.length>S;return o?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:()=>w(""),className:`px-2 py-0.5 rounded text-[10px] transition-colors ${f?"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(m=>g[m]>0).map(m=>e.jsx("button",{onClick:()=>w(f===m?"":m),className:`px-2 py-0.5 rounded text-[10px] font-medium uppercase transition-colors border ${f===m?Ir[m]:"border-transparent bg-surface-overlay text-fg-tertiary hover:text-fg-secondary"}`,children:u("modelPicker.tierCount",{tier:u(`modelRouting.tier.${m}`),count:g[m]})},m))]}),s.length>5&&e.jsx("input",{type:"text",value:x,onChange:m=>{h(m.target.value),E(!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:b.map(m=>{const N=m.id===r,T=as(m);return e.jsxs("button",{type:"button",onClick:()=>l(m.id),className:`w-full text-left px-3 py-2 rounded-lg transition-colors ${N?"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 ${N?"border-brand-500":"border-border-default"}`,children:N&&e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-brand-500"})}),e.jsx("span",{className:`text-xs font-medium ${N?"text-brand-500":"text-fg-primary"}`,children:m.id}),d&&e.jsx("span",{className:`px-1.5 py-0.5 rounded text-[9px] font-semibold uppercase border ${Ir[T]}`,children:u(`modelRouting.tier.${T}`)})]}),e.jsx("div",{className:"flex items-center gap-2",children:N&&e.jsx("span",{className:"text-[10px] text-brand-500 font-medium",children:u("modelPicker.active")})})]}),pa(m)&&m.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:[fa(m.maxInputTokens)," ",u("modelPicker.ctx")]})}),!a&&e.jsxs("div",{className:"ml-5 mt-1 flex items-center gap-1.5 flex-wrap",children:[m.capabilities.functionCalling&&e.jsx(ot,{label:u("modelPicker.capabilities.tools")}),m.capabilities.vision&&e.jsx(ot,{label:u("modelPicker.capabilities.vision")}),m.capabilities.reasoning&&e.jsx(ot,{label:u("modelPicker.capabilities.reasoning")}),m.capabilities.promptCaching&&e.jsx(ot,{label:u("modelPicker.capabilities.caching")}),m.capabilities.webSearch&&e.jsx(ot,{label:u("modelPicker.capabilities.search")})]})]},m.id)})}),y&&!j&&e.jsx("button",{type:"button",onClick:()=>E(!0),className:"text-xs text-brand-500 hover:text-brand-400 px-3",children:u("modelPicker.showAll",{count:k.length})}),j&&y&&e.jsx("button",{type:"button",onClick:()=>E(!1),className:"text-xs text-fg-tertiary hover:text-fg-secondary px-3",children:u("modelPicker.showLess")})]})}function ot({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 ct({value:s,options:r,placeholder:l,onChange:o}){const{t:a}=je("settings"),[t,d]=i.useState(!1),[u,x]=i.useState(""),h=i.useRef(null),j=i.useRef(null),E=i.useRef(null),[f,w]=i.useState(-1);i.useEffect(()=>{function m(N){h.current&&!h.current.contains(N.target)&&d(!1)}return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[]),i.useEffect(()=>{t&&j.current&&j.current.focus()},[t]);const k=i.useMemo(()=>{if(!u.trim())return r;const m=u.toLowerCase();return r.filter(N=>N.modelId.toLowerCase().includes(m)||N.modelName.toLowerCase().includes(m)||N.provider.toLowerCase().includes(m)||N.providerLabel.toLowerCase().includes(m)||N.tier&&N.tier.toLowerCase().includes(m))},[r,u]),g=i.useMemo(()=>{const m=new Map;for(const T of k){const I=T.providerLabel;m.has(I)||m.set(I,[]),m.get(I).push(T)}const N={max:0,pro:1,base:2};for(const T of m.values())T.sort((I,P)=>(N[I.tier??"base"]??9)-(N[P.tier??"base"]??9));return m},[k]),S=i.useMemo(()=>{const m=[];for(const N of g.values())m.push(...N);return m},[g]),b=i.useMemo(()=>{if(!s)return l??a("modelRouting.auto");const m=r.find(N=>`${N.provider}/${N.modelId}`===s);return m?`${m.providerLabel}/${m.modelName}`:s},[s,r,l,a]);function y(m){if(!t){(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),d(!0));return}switch(m.key){case"ArrowDown":m.preventDefault(),w(N=>Math.min(N+1,S.length-1));break;case"ArrowUp":m.preventDefault(),w(N=>Math.max(N-1,-1));break;case"Enter":m.preventDefault(),f===-1?o(""):S[f]&&o(`${S[f].provider}/${S[f].modelId}`),d(!1),x("");break;case"Escape":d(!1),x("");break}}return i.useEffect(()=>{E.current&&f>=0&&E.current.querySelector(`[data-focus-index="${f}"]`)?.scrollIntoView({block:"nearest"})},[f]),e.jsxs("div",{ref:h,className:"relative",onKeyDown:y,children:[e.jsx("button",{type:"button",onClick:()=>{d(!t),x(""),w(-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:b}),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:j,type:"text",value:u,onChange:m=>{x(m.target.value),w(-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:E,className:"overflow-y-auto flex-1",children:[e.jsx("div",{className:`px-3 py-1.5 text-xs cursor-pointer ${f===-1?"bg-brand-500/20 text-brand-500":"text-fg-secondary hover:bg-surface-overlay"}`,onClick:()=>{o(""),d(!1),x("")},children:l??a("modelRouting.auto")}),[...g.entries()].map(([m,N])=>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:m}),N.map(T=>{const I=S.indexOf(T),P=`${T.provider}/${T.modelId}`===s;return e.jsxs("div",{"data-focus-index":I,className:`px-3 py-1.5 text-xs cursor-pointer flex items-center gap-2 ${I===f?"bg-brand-500/20":P?"bg-surface-overlay":"hover:bg-surface-overlay/50"}`,onClick:()=>{o(`${T.provider}/${T.modelId}`),d(!1),x("")},children:[e.jsx("span",{className:"flex-1 truncate text-fg-primary",children:T.modelName}),T.tier&&e.jsx(ha,{tier:T.tier}),T.costTier&&e.jsx("span",{className:"text-[9px] text-fg-tertiary",children:T.costTier})]},`${T.provider}/${T.modelId}`)})]},m)),S.length===0&&e.jsx("div",{className:"px-3 py-3 text-xs text-fg-tertiary text-center",children:a("modelPicker.empty")})]})]})]})}function ha({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 ba=500,Lr=[{groupKey:"image",capabilities:["image_recognition","image_generation"]},{groupKey:"audio",capabilities:["audio_tts","audio_stt"]},{groupKey:"video",capabilities:["video_generation"]}];function ya({onSave:s,configuredProviders:r}){const{t:l}=je(["settings","common"]),[o,a]=i.useState({}),[t,d]=i.useState(null),[u,x]=i.useState(!1),[h,j]=i.useState(null),[E,f]=i.useState(!0),[w,k]=i.useState("idle"),[g,S]=i.useState(null),[b,y]=i.useState({}),[m,N]=i.useState(!1),[T,I]=i.useState("idle"),[P,O]=i.useState(null),[B,D]=i.useState(!1),R=i.useRef(null),U=i.useRef(null),_=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=>{j(String(c)),x(!0)})},[_]),i.useEffect(()=>{let c=!1;return f(!0),fetch("/api/models/routing-candidates",{credentials:"include"}).then(C=>{if(!C.ok)throw new Error(`HTTP ${C.status}`);return C.json()}).then(C=>{if(c)return;const L=[];for(const F of C.providers)for(const q of F.models)L.push({provider:F.provider,providerLabel:F.displayName,modelId:q.id,modelName:q.name,mode:q.mode,tier:q.tier,costTier:q.costTier,capabilities:q.capabilities});S(L)}).catch(()=>{c||S(null)}).finally(()=>{c||f(!1)}),()=>{c=!0}},[_]),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=>{y(c.suggestions),N(!0)}).catch(()=>N(!0))},[_]);const V=i.useCallback(c=>{k("saving"),s(c).then(()=>{k("saved"),setTimeout(()=>k(C=>C==="saved"?"idle":C),2e3)}).catch(()=>{k("error"),setTimeout(()=>k(C=>C==="error"?"idle":C),3e3)})},[s]),K=i.useCallback((c,C)=>{U.current={capabilityRouting:c!==void 0?{assignments:c}:U.current?.capabilityRouting,routingDefaultModel:C!==void 0?C:U.current?.routingDefaultModel},R.current&&clearTimeout(R.current),R.current=setTimeout(()=>{const L=U.current;U.current=null,L&&V(L)},ba)},[V]),Q=i.useMemo(()=>r.flatMap(c=>(c.models??[{id:c.model,name:c.model}]).map(C=>({provider:c.name,providerLabel:c.displayName??c.name,modelId:C.id,modelName:C.name}))),[r]),Z=g??Q,le=i.useMemo(()=>Object.entries(o).map(([c,C])=>`${c}:${C?.provider??""}/${C?.model??""}`).sort().join("|"),[o]);i.useEffect(()=>{!u||!g||g.length===0||g.some(c=>!!c.modelId)&&(a(c=>{let C=!1;const L={...c};for(const F of Lr)for(const q of F.capabilities){const ee=L[q];if(!ee?.model)continue;const J=kn(g,q);if(J.length===0)continue;J.some(ue=>ue.provider===ee.provider&&ue.modelId===ee.model)||(delete L[q],C=!0)}return C?(K(L),L):c}),d(c=>{if(!c?.model||g.some(q=>q.provider===c.provider&&q.modelId===c.model))return c;const L=g.find(q=>q.provider==="markus"),F=L?{provider:L.provider,model:L.modelId}:{provider:g[0].provider,model:g[0].modelId};return s({routingDefaultModel:F}),F}))},[u,g,_,K,le]);const de=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(()=>{}),f(!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 C=[];for(const L of c.providers)for(const F of L.models)C.push({provider:L.provider,providerLabel:L.displayName,modelId:F.id,modelName:F.name,mode:F.mode,tier:F.tier,costTier:F.costTier,capabilities:F.capabilities});S(C)}).catch(()=>{}).finally(()=>f(!1))},[]),he=i.useCallback(async()=>{if(T!=="working"){I("working"),O(null);try{const c=await fetch("/api/settings/llm/restore-recommended",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}}),C=await c.json().catch(()=>({}));if(!c.ok||!C.ok)throw new Error(C.error??`HTTP ${c.status}`);C.capabilityRouting&&a(C.capabilityRouting.assignments??{}),C.routingDefaultModel!==void 0&&d(C.routingDefaultModel),de(),I("idle"),k("saved"),setTimeout(()=>k(L=>L==="saved"?"idle":L),2e3)}catch(c){I("error"),O(c instanceof Error?c.message:String(c)),setTimeout(()=>I("idle"),4e3)}}},[T,de]),se=Z.length>0;return u?h?e.jsx("div",{className:"bg-red-500/10 border border-red-500/30 rounded-xl p-4 text-xs text-red-400",children:l("modelRouting.loadError",{error:h})}):E&&!se?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:l("modelRouting.loadingModels")})]})})}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(Na,{status:w,t:l}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx("button",{type:"button",onClick:()=>D(!0),disabled:T==="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:l(T==="working"?"modelRouting.restoreWorking":"modelRouting.restoreRecommended")}),P&&e.jsx("span",{className:"text-[10px] text-red-400 max-w-xs text-right",children:P})]})]}),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:l("modelRouting.defaultModelTitle")}),e.jsx("p",{className:"text-xs text-fg-tertiary mt-1",children:l("modelRouting.defaultModelDesc")})]}),e.jsx("div",{className:"max-w-md",children:e.jsx(ct,{value:t?`${t.provider}/${t.model}`:"",options:Z,placeholder:l("modelRouting.defaultModelPlaceholder"),onChange:c=>{if(!c)d(null),K(void 0,null);else{const[C,...L]=c.split("/"),F={provider:C,model:L.join("/")};if(d(F),o.text){const q={...o};delete q.text,a(q),K(q,F)}else K(void 0,F)}}})})]}),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:l("modelRouting.capabilityAssignTitle")}),e.jsx("p",{className:"text-xs text-fg-tertiary mt-1",children:l("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:l("modelRouting.noProvidersHint")}),r.length>0&&e.jsx("div",{className:"space-y-4",children:Lr.map(c=>e.jsx(va,{groupKey:c.groupKey,capabilities:c.capabilities,assignments:o,suggestions:b,allModels:Z,configuredProviderNames:new Set(r.map(C=>C.name)),t:l,onAssign:(C,L)=>{const F={...o};L?F[C]=L:delete F[C],a(F),K(F)}},c.groupKey))})]}),B&&e.jsx(jn,{variant:"primary",title:l("modelRouting.restoreRecommended"),message:l("modelRouting.restoreConfirm"),confirmLabel:l("common:confirm"),onConfirm:()=>{D(!1),he()},onCancel:()=>D(!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 va({groupKey:s,capabilities:r,assignments:l,suggestions:o,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 h=l[x],j=o[x],E=h?`${h.provider}/${h.model}`:"",f=kn(a,x),w=j?f.find(y=>y.provider===j.provider&&y.modelId===j.model)?.modelName??j.model:void 0,k=f.length>0,g=h?ja(a,h.provider,h.model):void 0,S=h&&!t.has(h.provider),b=!!(h&&k&&x!=="text"&&!f.some(y=>y.provider===h.provider&&y.modelId===h.model));return e.jsxs("div",{className:`flex items-center gap-3 px-3 py-2 rounded-lg ${b?"bg-red-500/10 border border-red-500/30":S?"bg-yellow-500/10 border border-yellow-500/30":!k&&!h?"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:b?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:["⚠ ",h.model]}),e.jsx("span",{className:"text-[10px] text-red-400/70",children:d("modelRouting.mismatchHint")})]}),e.jsx(ct,{value:"",options:f,placeholder:d("modelRouting.selectModel"),onChange:y=>{if(!y)u(x,null);else{const[m,...N]=y.split("/");u(x,{provider:m,model:N.join("/")})}}})]}):k?e.jsx(ct,{value:E,options:f,placeholder:w?`${w} (${d("modelRouting.suggested")})`:d("modelRouting.selectModel"),onChange:y=>{if(!y)u(x,null);else{const[m,...N]=y.split("/");u(x,{provider:m,model:N.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:[b&&e.jsx("span",{className:"text-[10px] text-red-400 font-medium",title:d("modelRouting.mismatchHint"),children:"⚠"}),!b&&S&&e.jsx("span",{className:"text-[10px] text-yellow-400 font-medium",title:d("modelRouting.staleProvider"),children:"⚠"}),!b&&!S&&g&&e.jsx(Rr,{tier:g}),!b&&!S&&!g&&h&&e.jsx(Rr,{tier:"unknown"})]}),e.jsx("div",{className:"w-8 shrink-0 flex justify-end",children:h&&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 ja(s,r,l){return s.find(a=>a.provider===r&&a.modelId===l)?.tier}function Na({status:s,t:r}){if(s==="idle")return null;const l={idle:"",saving:"text-fg-tertiary",saved:"text-green-400",error:"text-red-400"},o={idle:"",saving:r("modelRouting.saving"),saved:r("modelRouting.saved"),error:r("modelRouting.saveError")};return e.jsx("div",{className:`text-xs font-medium transition-opacity ${l[s]}`,children:o[s]})}function Rr({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 wa=new Set(["imageGeneration","tts","stt","videoGeneration","audioOutput","audioInput"]);function kn(s,r){if(r==="text")return s.filter(d=>!(d.capabilities&&d.capabilities.some(u=>wa.has(u))||d.mode&&d.mode!=="chat"));const l={image_generation:["image_generation"],audio_tts:["audio_speech"],audio_stt:["audio_transcription"],video_generation:["video_generation"]},o={image_recognition:["vision"],image_generation:["imageGeneration"],audio_tts:["tts"],audio_stt:["stt"],video_generation:["videoGeneration"]},a=l[r],t=o[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)))}function ka({configuredProviders:s}){const{t:r}=je("settings"),[l,o]=i.useState(null),[a,t]=i.useState([]),[d,u]=i.useState(null),[x,h]=i.useState(null),j=i.useMemo(()=>s.map(g=>`${g.name}:${g.models?.length??0}`).sort().join(","),[s]),E=i.useCallback(async()=>{u(null);try{const[{agents:g},S]=await Promise.all([$.agents.list(),$.teams.list()]),b=S.teams.map(m=>({id:m.id,name:m.name}));t(b);const y=await Promise.all(g.map(async m=>{try{const T=(await $.agents.get(m.id)).config?.llmConfig;return{id:m.id,name:m.name||m.id,teamId:m.teamId,override:T?.modelMode==="custom"&&T.primary&&T.defaultModel?`${T.primary}/${T.defaultModel}`:null,llmConfig:{modelMode:T?.modelMode,primary:T?.primary??"",defaultModel:T?.defaultModel}}}catch{return{id:m.id,name:m.name||m.id,teamId:m.teamId,override:null,llmConfig:{modelMode:"default",primary:"",defaultModel:void 0}}}}));o(g.length?y:null)}catch(g){u(String(g))}},[j]);i.useEffect(()=>{E()},[E,j]);const f=i.useMemo(()=>{const g=[];for(const S of s)for(const b of S.models??[])g.push({provider:S.name,providerLabel:S.displayName??S.name,modelId:b.id,modelName:b.name??b.id});return g},[s]),w=async(g,S)=>{h(g),u(null);try{if(S){const[b,y]=[S.slice(0,S.lastIndexOf("/")),S.slice(S.lastIndexOf("/")+1)];await $.agents.updateConfig(g,{llmConfig:{modelMode:"custom",primary:b,defaultModel:y}})}else await $.agents.updateConfig(g,{llmConfig:{modelMode:"default",primary:"",defaultModel:void 0}});o(b=>b?.map(y=>y.id===g?{...y,override:S}:y)??b)}catch(b){u(String(b))}finally{h(null)}},k=i.useMemo(()=>{if(!l)return[];const g=new Map,S=[];for(const y of l)if(y.teamId){const m=g.get(y.teamId)??[];m.push(y),g.set(y.teamId,m)}else S.push(y);const b=[];S.length&&b.push({key:"ungrouped",label:r("perAgentModel.ungrouped",{defaultValue:"Ungrouped"}),rows:S});for(const y of a){const m=g.get(y.id);m?.length&&b.push({key:`team:${y.id}`,label:y.name,rows:m})}for(const[y,m]of g)a.some(N=>N.id===y)||b.push({key:`team:${y}`,label:y,rows:m});return b},[l,a,r]);return l===null&&!d?e.jsx("div",{className:"bg-surface-elevated rounded-xl p-5 text-sm text-fg-tertiary",children:r("common:loading",{defaultValue:"Loading…"})}):e.jsxs("div",{className:"bg-surface-elevated rounded-xl p-5 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-medium",children:r("perAgentModel.title",{defaultValue:"Per-agent default model"})}),e.jsx("div",{className:"text-xs text-fg-tertiary mt-0.5",children:r("perAgentModel.desc",{defaultValue:'Bind a specific provider+model to an agent, or leave it following the global default. This is what the composer "Apply to current agent" writes.'})})]})}),d&&e.jsx("div",{className:"text-xs text-red-500",children:d}),(!l||l.length===0)&&!d&&e.jsx("div",{className:"text-xs text-fg-tertiary",children:r("perAgentModel.noAgents",{defaultValue:"No agents available."})}),l&&l.length>0&&e.jsx("div",{className:"space-y-5",children:k.map(g=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-fg-tertiary truncate",children:g.label}),e.jsx("span",{className:"text-[10px] text-fg-tertiary/70 tabular-nums shrink-0",children:g.rows.length})]}),e.jsx("div",{className:"space-y-2",children:g.rows.map(S=>e.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm",children:[e.jsxs("div",{className:"flex-1 truncate",children:[e.jsx("span",{className:"font-medium",children:S.name}),e.jsx("span",{className:"text-xs text-fg-tertiary ml-2 truncate",children:S.id})]}),e.jsxs("div",{className:"flex items-center gap-2 w-[320px]",children:[S.override?e.jsxs(e.Fragment,{children:[e.jsx(ct,{value:S.override,options:f,placeholder:r("perAgentModel.followGlobal",{defaultValue:"Follow global"}),onChange:b=>{w(S.id,b||null)}}),e.jsx("button",{type:"button",disabled:x===S.id,onClick:()=>{w(S.id,null)},className:"shrink-0 px-2.5 py-1.5 text-xs border border-border-default rounded-lg hover:bg-surface-base disabled:opacity-40 transition-colors",children:r("perAgentModel.reset",{defaultValue:"Reset"})})]}):e.jsx(ct,{value:"",options:f,placeholder:r("perAgentModel.followGlobal",{defaultValue:"Follow global"}),onChange:b=>{w(S.id,b||null)}}),x===S.id&&e.jsx("span",{className:"shrink-0 text-[10px] text-fg-tertiary",children:r("common:loading",{defaultValue:"…"})})]})]},S.id))})]},g.key))})]})}const St=[{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,Or;function Ca(){return Or||(Or=1,os=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),os}var is={},De={},Br;function Ve(){if(Br)return De;Br=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(o){if(!o)throw new Error('"version" cannot be null or undefined');if(o<1||o>40)throw new Error('"version" should be in range from 1 to 40');return o*4+17},De.getSymbolTotalCodewords=function(o){return r[o]},De.getBCHDigit=function(l){let o=0;for(;l!==0;)o++,l>>>=1;return o},De.setToSJISFunction=function(o){if(typeof o!="function")throw new Error('"toSJISFunc" is not a valid function.');s=o},De.isKanjiModeEnabled=function(){return typeof s<"u"},De.toSJIS=function(o){return s(o)},De}var ls={},Dr;function Rs(){return Dr||(Dr=1,(function(s){s.L={bit:1},s.M={bit:0},s.Q={bit:3},s.H={bit:2};function r(l){if(typeof l!="string")throw new Error("Param is not a string");switch(l.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: "+l)}}s.isValid=function(o){return o&&typeof o.bit<"u"&&o.bit>=0&&o.bit<4},s.from=function(o,a){if(s.isValid(o))return o;try{return r(o)}catch{return a}}})(ls)),ls}var ds,_r;function Sa(){if(_r)return ds;_r=1;function s(){this.buffer=[],this.length=0}return s.prototype={get:function(r){const l=Math.floor(r/8);return(this.buffer[l]>>>7-r%8&1)===1},put:function(r,l){for(let o=0;o<l;o++)this.putBit((r>>>l-o-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){const l=Math.floor(this.length/8);this.buffer.length<=l&&this.buffer.push(0),r&&(this.buffer[l]|=128>>>this.length%8),this.length++}},ds=s,ds}var cs,Kr;function Ma(){if(Kr)return cs;Kr=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,l,o,a){const t=r*this.size+l;this.data[t]=o,a&&(this.reservedBit[t]=!0)},s.prototype.get=function(r,l){return this.data[r*this.size+l]},s.prototype.xor=function(r,l,o){this.data[r*this.size+l]^=o},s.prototype.isReserved=function(r,l){return this.reservedBit[r*this.size+l]},cs=s,cs}var us={},Ur;function Aa(){return Ur||(Ur=1,(function(s){const r=Ve().getSymbolSize;s.getRowColCoords=function(o){if(o===1)return[];const a=Math.floor(o/7)+2,t=r(o),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(o){const a=[],t=s.getRowColCoords(o),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}})(us)),us}var xs={},Fr;function Pa(){if(Fr)return xs;Fr=1;const s=Ve().getSymbolSize,r=7;return xs.getPositions=function(o){const a=s(o);return[[0,0],[a-r,0],[0,a-r]]},xs}var ms={},Vr;function Ea(){return Vr||(Vr=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,h=null,j=null;for(let E=0;E<t;E++){u=x=0,h=j=null;for(let f=0;f<t;f++){let w=a.get(E,f);w===h?u++:(u>=5&&(d+=r.N1+(u-5)),h=w,u=1),w=a.get(f,E),w===j?x++:(x>=5&&(d+=r.N1+(x-5)),j=w,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 h=a.get(u,x)+a.get(u,x+1)+a.get(u+1,x)+a.get(u+1,x+1);(h===4||h===0)&&d++}return d*r.N2},s.getPenaltyN3=function(a){const t=a.size;let d=0,u=0,x=0;for(let h=0;h<t;h++){u=x=0;for(let j=0;j<t;j++)u=u<<1&2047|a.get(h,j),j>=10&&(u===1488||u===93)&&d++,x=x<<1&2047|a.get(j,h),j>=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 l(o,a,t){switch(o){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:"+o)}}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,l(a,x,u))},s.getBestMask=function(a,t){const d=Object.keys(s.Patterns).length;let u=0,x=1/0;for(let h=0;h<d;h++){t(h),s.applyMask(h,a);const j=s.getPenaltyN1(a)+s.getPenaltyN2(a)+s.getPenaltyN3(a)+s.getPenaltyN4(a);s.applyMask(h,a),j<x&&(x=j,u=h)}return u}})(ms)),ms}var Mt={},$r;function Cn(){if($r)return Mt;$r=1;const s=Rs(),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],l=[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 l[(a-1)*4+0];case s.M:return l[(a-1)*4+1];case s.Q:return l[(a-1)*4+2];case s.H:return l[(a-1)*4+3];default:return}},Mt}var gs={},it={},zr;function Ta(){if(zr)return it;zr=1;const s=new Uint8Array(512),r=new Uint8Array(256);return(function(){let o=1;for(let a=0;a<255;a++)s[a]=o,r[o]=a,o<<=1,o&256&&(o^=285);for(let a=255;a<512;a++)s[a]=s[a-255]})(),it.log=function(o){if(o<1)throw new Error("log("+o+")");return r[o]},it.exp=function(o){return s[o]},it.mul=function(o,a){return o===0||a===0?0:s[r[o]+r[a]]},it}var Hr;function Ia(){return Hr||(Hr=1,(function(s){const r=Ta();s.mul=function(o,a){const t=new Uint8Array(o.length+a.length-1);for(let d=0;d<o.length;d++)for(let u=0;u<a.length;u++)t[d+u]^=r.mul(o[d],a[u]);return t},s.mod=function(o,a){let t=new Uint8Array(o);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(o){let a=new Uint8Array([1]);for(let t=0;t<o;t++)a=s.mul(a,new Uint8Array([1,r.exp(t)]));return a}})(gs)),gs}var fs,qr;function La(){if(qr)return fs;qr=1;const s=Ia();function r(l){this.genPoly=void 0,this.degree=l,this.degree&&this.initialize(this.degree)}return r.prototype.initialize=function(o){this.degree=o,this.genPoly=s.generateECPolynomial(this.degree)},r.prototype.encode=function(o){if(!this.genPoly)throw new Error("Encoder not initialized");const a=new Uint8Array(o.length+this.degree);a.set(o);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},fs=r,fs}var ps={},hs={},bs={},Wr;function Sn(){return Wr||(Wr=1,bs.isValid=function(r){return!isNaN(r)&&r>=1&&r<=40}),bs}var Ae={},Gr;function Mn(){if(Gr)return Ae;Gr=1;const s="[0-9]+",r="[A-Z $%*+\\-./:]+";let l="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";l=l.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+l+`)(?:.|[\r
2
2
  ]))+`;Ae.KANJI=new RegExp(l,"g"),Ae.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),Ae.BYTE=new RegExp(o,"g"),Ae.NUMERIC=new RegExp(s,"g"),Ae.ALPHANUMERIC=new RegExp(r,"g");const a=new RegExp("^"+l+"$"),t=new RegExp("^"+s+"$"),d=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return Ae.testKanji=function(x){return a.test(x)},Ae.testNumeric=function(x){return t.test(x)},Ae.testAlphanumeric=function(x){return d.test(x)},Ae}var Yr;function $e(){return Yr||(Yr=1,(function(s){const r=Sn(),l=Mn();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 l.testNumeric(t)?s.NUMERIC:l.testAlphanumeric(t)?s.ALPHANUMERIC:l.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 o(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 o(t)}catch{return d}}})(hs)),hs}var Jr;function Ra(){return Jr||(Jr=1,(function(s){const r=Ve(),l=Cn(),o=Rs(),a=$e(),t=Sn(),d=7973,u=r.getBCHDigit(d);function x(f,w,k){for(let g=1;g<=40;g++)if(w<=s.getCapacity(g,k,f))return g}function h(f,w){return a.getCharCountIndicator(f,w)+4}function j(f,w){let k=0;return f.forEach(function(g){const S=h(g.mode,w);k+=S+g.getBitsLength()}),k}function E(f,w){for(let k=1;k<=40;k++)if(j(f,k)<=s.getCapacity(k,w,a.MIXED))return k}s.from=function(w,k){return t.isValid(w)?parseInt(w,10):k},s.getCapacity=function(w,k,g){if(!t.isValid(w))throw new Error("Invalid QR Code version");typeof g>"u"&&(g=a.BYTE);const S=r.getSymbolTotalCodewords(w),b=l.getTotalCodewordsCount(w,k),y=(S-b)*8;if(g===a.MIXED)return y;const m=y-h(g,w);switch(g){case a.NUMERIC:return Math.floor(m/10*3);case a.ALPHANUMERIC:return Math.floor(m/11*2);case a.KANJI:return Math.floor(m/13);case a.BYTE:default:return Math.floor(m/8)}},s.getBestVersionForData=function(w,k){let g;const S=o.from(k,o.M);if(Array.isArray(w)){if(w.length>1)return E(w,S);if(w.length===0)return 1;g=w[0]}else g=w;return x(g.mode,g.getLength(),S)},s.getEncodedBits=function(w){if(!t.isValid(w)||w<7)throw new Error("Invalid QR Code version");let k=w<<12;for(;r.getBCHDigit(k)-u>=0;)k^=d<<r.getBCHDigit(k)-u;return w<<12|k}})(ps)),ps}var ys={},Qr;function Oa(){if(Qr)return ys;Qr=1;const s=Ve(),r=1335,l=21522,o=s.getBCHDigit(r);return ys.getEncodedBits=function(t,d){const u=t.bit<<3|d;let x=u<<10;for(;s.getBCHDigit(x)-o>=0;)x^=r<<s.getBCHDigit(x)-o;return(u<<10|x)^l},ys}var vs={},js,Zr;function Ba(){if(Zr)return js;Zr=1;const s=$e();function r(l){this.mode=s.NUMERIC,this.data=l.toString()}return r.getBitsLength=function(o){return 10*Math.floor(o/3)+(o%3?o%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(o){let a,t,d;for(a=0;a+3<=this.data.length;a+=3)t=this.data.substr(a,3),d=parseInt(t,10),o.put(d,10);const u=this.data.length-a;u>0&&(t=this.data.substr(a),d=parseInt(t,10),o.put(d,u*3+1))},js=r,js}var Ns,Xr;function Da(){if(Xr)return Ns;Xr=1;const s=$e(),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 l(o){this.mode=s.ALPHANUMERIC,this.data=o}return l.getBitsLength=function(a){return 11*Math.floor(a/2)+6*(a%2)},l.prototype.getLength=function(){return this.data.length},l.prototype.getBitsLength=function(){return l.getBitsLength(this.data.length)},l.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=l,Ns}var ws,en;function _a(){if(en)return ws;en=1;const s=$e();function r(l){this.mode=s.BYTE,typeof l=="string"?this.data=new TextEncoder().encode(l):this.data=new Uint8Array(l)}return r.getBitsLength=function(o){return o*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(l){for(let o=0,a=this.data.length;o<a;o++)l.put(this.data[o],8)},ws=r,ws}var ks,tn;function Ka(){if(tn)return ks;tn=1;const s=$e(),r=Ve();function l(o){this.mode=s.KANJI,this.data=o}return l.getBitsLength=function(a){return a*13},l.prototype.getLength=function(){return this.data.length},l.prototype.getBitsLength=function(){return l.getBitsLength(this.data.length)},l.prototype.write=function(o){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),o.put(t,13)}},ks=l,ks}var Cs={exports:{}},sn;function Ua(){return sn||(sn=1,(function(s){var r={single_source_shortest_paths:function(l,o,a){var t={},d={};d[o]=0;var u=r.PriorityQueue.make();u.push(o,0);for(var x,h,j,E,f,w,k,g,S;!u.empty();){x=u.pop(),h=x.value,E=x.cost,f=l[h]||{};for(j in f)f.hasOwnProperty(j)&&(w=f[j],k=E+w,g=d[j],S=typeof d[j]>"u",(S||g>k)&&(d[j]=k,u.push(j,k),t[j]=h))}if(typeof a<"u"&&typeof d[a]>"u"){var b=["Could not find a path from ",o," to ",a,"."].join("");throw new Error(b)}return t},extract_shortest_path_from_predecessor_list:function(l,o){for(var a=[],t=o;t;)a.push(t),l[t],t=l[t];return a.reverse(),a},find_path:function(l,o,a){var t=r.single_source_shortest_paths(l,o,a);return r.extract_shortest_path_from_predecessor_list(t,a)},PriorityQueue:{make:function(l){var o=r.PriorityQueue,a={},t;l=l||{};for(t in o)o.hasOwnProperty(t)&&(a[t]=o[t]);return a.queue=[],a.sorter=l.sorter||o.default_sorter,a},default_sorter:function(l,o){return l.cost-o.cost},push:function(l,o){var a={value:l,cost:o};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 rn;function Fa(){return rn||(rn=1,(function(s){const r=$e(),l=Ba(),o=Da(),a=_a(),t=Ka(),d=Mn(),u=Ve(),x=Ua();function h(b){return unescape(encodeURIComponent(b)).length}function j(b,y,m){const N=[];let T;for(;(T=b.exec(m))!==null;)N.push({data:T[0],index:T.index,mode:y,length:T[0].length});return N}function E(b){const y=j(d.NUMERIC,r.NUMERIC,b),m=j(d.ALPHANUMERIC,r.ALPHANUMERIC,b);let N,T;return u.isKanjiModeEnabled()?(N=j(d.BYTE,r.BYTE,b),T=j(d.KANJI,r.KANJI,b)):(N=j(d.BYTE_KANJI,r.BYTE,b),T=[]),y.concat(m,N,T).sort(function(P,O){return P.index-O.index}).map(function(P){return{data:P.data,mode:P.mode,length:P.length}})}function f(b,y){switch(y){case r.NUMERIC:return l.getBitsLength(b);case r.ALPHANUMERIC:return o.getBitsLength(b);case r.KANJI:return t.getBitsLength(b);case r.BYTE:return a.getBitsLength(b)}}function w(b){return b.reduce(function(y,m){const N=y.length-1>=0?y[y.length-1]:null;return N&&N.mode===m.mode?(y[y.length-1].data+=m.data,y):(y.push(m),y)},[])}function k(b){const y=[];for(let m=0;m<b.length;m++){const N=b[m];switch(N.mode){case r.NUMERIC:y.push([N,{data:N.data,mode:r.ALPHANUMERIC,length:N.length},{data:N.data,mode:r.BYTE,length:N.length}]);break;case r.ALPHANUMERIC:y.push([N,{data:N.data,mode:r.BYTE,length:N.length}]);break;case r.KANJI:y.push([N,{data:N.data,mode:r.BYTE,length:h(N.data)}]);break;case r.BYTE:y.push([{data:N.data,mode:r.BYTE,length:h(N.data)}])}}return y}function g(b,y){const m={},N={start:{}};let T=["start"];for(let I=0;I<b.length;I++){const P=b[I],O=[];for(let B=0;B<P.length;B++){const D=P[B],R=""+I+B;O.push(R),m[R]={node:D,lastCount:0},N[R]={};for(let U=0;U<T.length;U++){const _=T[U];m[_]&&m[_].node.mode===D.mode?(N[_][R]=f(m[_].lastCount+D.length,D.mode)-f(m[_].lastCount,D.mode),m[_].lastCount+=D.length):(m[_]&&(m[_].lastCount=D.length),N[_][R]=f(D.length,D.mode)+4+r.getCharCountIndicator(D.mode,y))}}T=O}for(let I=0;I<T.length;I++)N[T[I]].end=0;return{map:N,table:m}}function S(b,y){let m;const N=r.getBestModeForData(b);if(m=r.from(y,N),m!==r.BYTE&&m.bit<N.bit)throw new Error('"'+b+'" cannot be encoded with mode '+r.toString(m)+`.
4
4
  Suggested mode is: `+r.toString(N));switch(m===r.KANJI&&!u.isKanjiModeEnabled()&&(m=r.BYTE),m){case r.NUMERIC:return new l(b);case r.ALPHANUMERIC:return new o(b);case r.KANJI:return new t(b);case r.BYTE:return new a(b)}}s.fromArray=function(y){return y.reduce(function(m,N){return typeof N=="string"?m.push(S(N,null)):N.data&&m.push(S(N.data,N.mode)),m},[])},s.fromString=function(y,m){const N=E(y,u.isKanjiModeEnabled()),T=k(N),I=g(T,m),P=x.find_path(I.map,"start","end"),O=[];for(let B=1;B<P.length-1;B++)O.push(I.table[P[B]].node);return s.fromArray(w(O))},s.rawSplit=function(y){return s.fromArray(E(y,u.isKanjiModeEnabled()))}})(vs)),vs}var nn;function Va(){if(nn)return is;nn=1;const s=Ve(),r=Rs(),l=Sa(),o=Ma(),a=Aa(),t=Pa(),d=Ea(),u=Cn(),x=La(),h=Ra(),j=Oa(),E=$e(),f=Fa();function w(I,P){const O=I.size,B=t.getPositions(P);for(let D=0;D<B.length;D++){const R=B[D][0],U=B[D][1];for(let _=-1;_<=7;_++)if(!(R+_<=-1||O<=R+_))for(let V=-1;V<=7;V++)U+V<=-1||O<=U+V||(_>=0&&_<=6&&(V===0||V===6)||V>=0&&V<=6&&(_===0||_===6)||_>=2&&_<=4&&V>=2&&V<=4?I.set(R+_,U+V,!0,!0):I.set(R+_,U+V,!1,!0))}}function k(I){const P=I.size;for(let O=8;O<P-8;O++){const B=O%2===0;I.set(O,6,B,!0),I.set(6,O,B,!0)}}function g(I,P){const O=a.getPositions(P);for(let B=0;B<O.length;B++){const D=O[B][0],R=O[B][1];for(let U=-2;U<=2;U++)for(let _=-2;_<=2;_++)U===-2||U===2||_===-2||_===2||U===0&&_===0?I.set(D+U,R+_,!0,!0):I.set(D+U,R+_,!1,!0)}}function S(I,P){const O=I.size,B=h.getEncodedBits(P);let D,R,U;for(let _=0;_<18;_++)D=Math.floor(_/3),R=_%3+O-8-3,U=(B>>_&1)===1,I.set(D,R,U,!0),I.set(R,D,U,!0)}function b(I,P,O){const B=I.size,D=j.getEncodedBits(P,O);let R,U;for(R=0;R<15;R++)U=(D>>R&1)===1,R<6?I.set(R,8,U,!0):R<8?I.set(R+1,8,U,!0):I.set(B-15+R,8,U,!0),R<8?I.set(8,B-R-1,U,!0):R<9?I.set(8,15-R-1+1,U,!0):I.set(8,15-R-1,U,!0);I.set(B-8,8,1,!0)}function y(I,P){const O=I.size;let B=-1,D=O-1,R=7,U=0;for(let _=O-1;_>0;_-=2)for(_===6&&_--;;){for(let V=0;V<2;V++)if(!I.isReserved(D,_-V)){let K=!1;U<P.length&&(K=(P[U]>>>R&1)===1),I.set(D,_-V,K),R--,R===-1&&(U++,R=7)}if(D+=B,D<0||O<=D){D-=B,B=-B;break}}}function m(I,P,O){const B=new l;O.forEach(function(V){B.put(V.mode.bit,4),B.put(V.getLength(),E.getCharCountIndicator(V.mode,I)),V.write(B)});const D=s.getSymbolTotalCodewords(I),R=u.getTotalCodewordsCount(I,P),U=(D-R)*8;for(B.getLengthInBits()+4<=U&&B.put(0,4);B.getLengthInBits()%8!==0;)B.putBit(0);const _=(U-B.getLengthInBits())/8;for(let V=0;V<_;V++)B.put(V%2?17:236,8);return N(B,I,P)}function N(I,P,O){const B=s.getSymbolTotalCodewords(P),D=u.getTotalCodewordsCount(P,O),R=B-D,U=u.getBlocksCount(P,O),_=B%U,V=U-_,K=Math.floor(B/U),Q=Math.floor(R/U),Z=Q+1,le=K-Q,de=new x(le);let he=0;const se=new Array(U),c=new Array(U);let C=0;const L=new Uint8Array(I.buffer);for(let oe=0;oe<U;oe++){const ue=oe<V?Q:Z;se[oe]=L.slice(he,he+ue),c[oe]=de.encode(se[oe]),he+=ue,C=Math.max(C,ue)}const F=new Uint8Array(B);let q=0,ee,J;for(ee=0;ee<C;ee++)for(J=0;J<U;J++)ee<se[J].length&&(F[q++]=se[J][ee]);for(ee=0;ee<le;ee++)for(J=0;J<U;J++)F[q++]=c[J][ee];return F}function T(I,P,O,B){let D;if(Array.isArray(I))D=f.fromArray(I);else if(typeof I=="string"){let K=P;if(!K){const Q=f.rawSplit(I);K=h.getBestVersionForData(Q,O)}D=f.fromString(I,K||40)}else throw new Error("Invalid data");const R=h.getBestVersionForData(D,O);if(!R)throw new Error("The amount of data is too big to be stored in a QR Code");if(!P)P=R;else if(P<R)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-C-JeUF8o.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};
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-ByDm2R2Q.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};