1import{r as t,j as s}from"./react-vendor-DbzdS4FP.js";import{u as D,f as R,l as M}from"./index-kSfDswZP.js";import{h as $}from"./harness-B4JVY2Eg.js";import{u as B}from"./i18n-vendor-BrUIoOSg.js";import{cJ as C,cv as y,h3 as L,cw as O,d$ as P,h4 as T,dW as U}from"./ui-vendor-DCtmHMLE.js";import"./dnd-vendor-DdAwup11.js";import"./markdown-vendor-DonjKQI4.js";const q="HarnessModelSelector-module__trigger__EC9px",F="HarnessModelSelector-module__panel__mjXAU",J="HarnessModelSelector-module__heading__CAM2-",K="HarnessModelSelector-module__footer__HaZUq",m={trigger:q,panel:F,heading:J,footer:K};function I({providerId:o}){var x;const{t:l}=B(),{message:f}=D(),{selectedAgent:d,agents:A,updateAgent:_}=R(),i=A.find(e=>e.id===d),[u,j]=t.useState(null),[h,b]=t.useState(!1),[S,v]=t.useState(!1),[w,E]=t.useState(!1),k=t.useRef(null),r=t.useMemo(()=>(u==null?void 0:u.providerId)===o?u.models:[],[u,o]),g=(i==null?void 0:i.backend_model)??void 0,n=t.useMemo(()=>r.find(e=>e.id===g),[g,r]),H=(i==null?void 0:i.backend_reasoning_effort)??void 0;t.useEffect(()=>{let e=!1;return b(!0),$.listModels(o).then(a=>{e||(j({providerId:o,models:a.models}),a.message&&f.warning(a.message))}).catch(a=>{e||(j({providerId:o,models:[]}),f.error(a instanceof Error?a.message:String(a)))}).finally(()=>{e||b(!1)}),()=>{e=!0}},[f,o]);const p=t.useCallback(async(e,a)=>{v(!0);try{await M.updateBackendSettings(d,{model:(e==null?void 0:e.id)??null,reasoning_effort:a??null}),_(d,{backend_model:(e==null?void 0:e.id)??null,backend_reasoning_effort:a??null})}catch(c){f.error(c instanceof Error?c.message:String(c))}finally{v(!1)}},[f,d,_]);t.useEffect(()=>{if(!i||g||h||r.length===0)return;const e=`${d}:${o}`;if(k.current===e)return;const a=r.find(c=>c.is_default)??r[0];k.current=e,p(a,a.default_reasoning_effort??void 0)},[i,h,g,r,o,p,d]);const z=(n==null?void 0:n.name)??((x=r.find(e=>e.is_default))==null?void 0:x.name)??l("agent.backend.modelDefault"),N=s.jsxs("div",{className:m.panel,children:[s.jsxs("div",{className:m.heading,children:[s.jsx("span",{children:o}),s.jsx("small",{children:l("agent.backend.chatModelHint")})]}),s.jsxs("label",{children:[s.jsxs("span",{children:[s.jsx(C,{size:14}),l("agent.backend.model")]}),s.jsx(y,{value:g,allowClear:!0,showSearch:!0,loading:h,optionFilterProp:"label",placeholder:l("agent.backend.modelDefault"),options:r.map(e=>({value:e.id,label:e.name})),onChange:e=>{const a=r.find(c=>c.id===e);p(a,(a==null?void 0:a.default_reasoning_effort)??void 0)}})]}),s.jsxs("label",{children:[s.jsxs("span",{children:[s.jsx(L,{size:14}),l("agent.backend.reasoningEffort")]}),s.jsx(y,{value:H,allowClear:!0,disabled:!(n!=null&&n.reasoning_efforts.length),placeholder:l("agent.backend.reasoningDefault"),options:((n==null?void 0:n.reasoning_efforts)??[]).map(e=>({value:e,label:e})),onChange:e=>void p(n,e)})]}),s.jsxs("div",{className:m.footer,children:[S?s.jsx(O,{size:"small"}):s.jsx(P,{size:13}),l(S?"common.saving":"agent.backend.appliesNextTurn")]})]});return s.jsx(T,{content:N,trigger:"click",open:w,onOpenChange:E,placement:"bottomRight",overlayClassName:m.overlay,children:s.jsxs("button",{type:"button",className:m.trigger,children:[s.jsx(C,{size:15}),s.jsx("span",{children:h?l("common.loading"):z}),s.jsx(U,{size:14})]})})}export{I as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.