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