1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2784],{2784:(e,s,t)=>{t.r(s),t.d(s,{AssistantManager:()=>eD});var a=t(95155),i=t(12115),l=t(78862),r=t(91169),n=t(6191),d=t(39347);let o=(0,t(5121).A)("power-off",[["path",{d:"M18.36 6.64A9 9 0 0 1 20.77 15",key:"dxknvb"}],["path",{d:"M6.16 6.16a9 9 0 1 0 12.68 12.68",key:"1x7qb5"}],["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var c=t(85921),u=t(78192),m=t(89559),p=t(17910),x=t(1375),h=t(31166),g=t(18518),f=t(71611),b=t(1559),v=t(94546),w=t(65229),y=t(6132),j=t(57828),N=t(71360),_=t(46046),k=t(5590),S=t(25840),C=t(77979),A=t(43698),z=t(36402);let E=["professional","casual","technical","friendly","expert"],P=[{value:"QUICK",label:"Quick"},{value:"THINKING",label:"Thinking"},{value:"RESEARCH",label:"Research"}],I=JSON.stringify({name:"",purpose:"",systemPrompt:"",tone:"professional",responseLength:"",formattingStyle:"",visibility:"private",description:"",baseAssistantId:"",modelBandAffinity:""}),D=[{value:"concise",label:"Concise"},{value:"detailed",label:"Detailed"},{value:"comprehensive",label:"Comprehensive"}],R=[{value:"bullet_points",label:"Bullet Points"},{value:"narrative",label:"Narrative"},{value:"code_blocks",label:"Code Blocks"},{value:"mixed",label:"Mixed"}],U=e=>{let{personaId:s,onClose:t,onSaved:l,onCreated:r,onDeleted:n}=e,{showToast:d}=(0,b.d)(),[o,c]=(0,i.useState)(""),[m,p]=(0,i.useState)(""),[x,f]=(0,i.useState)("professional"),[U,F]=(0,i.useState)(""),[G,M]=(0,i.useState)(""),[L,W]=(0,i.useState)("private"),[$,T]=(0,i.useState)(""),[B,q]=(0,i.useState)(""),[H,K]=(0,i.useState)(""),[O,J]=(0,i.useState)(""),[Q,V]=(0,i.useState)(!1),[Y,X]=(0,i.useState)([]),[Z,ee]=(0,i.useState)(!1),[es,et]=(0,i.useState)(!1),[ea,ei]=(0,i.useState)(!1),[el,er]=(0,i.useState)(!1),[en,ed]=(0,i.useState)(null),[eo,ec]=(0,i.useState)(!1),[eu,em]=(0,i.useState)(!1),[ep,ex]=(0,i.useState)(""),[eh,eg]=(0,i.useState)(""),ef=(0,i.useRef)(s?"":I),eb=(0,i.useMemo)(()=>JSON.stringify({name:o,purpose:m,systemPrompt:G,tone:x,responseLength:B,formattingStyle:H,visibility:L,description:U,baseAssistantId:$,modelBandAffinity:O})!==ef.current,[o,m,G,x,B,H,L,U,$,O]);(0,i.useEffect)(()=>{v.apiFetch("/v1/assistants").then(e=>e.json()).then(e=>{var s;X((null!=(s=e.assistants)?s:[]).map(e=>{var s;return{id:null!=(s=e.id)?s:e.assistant_id,name:e.name}}))}).catch(()=>{X([]),d("Could not load assistants for selection.","error")})},[d]);let ev=(0,i.useCallback)(()=>{s&&(er(!0),ed(null),v.getPersonas().then(e=>{let t=e.find(e=>e.persona_id===s);if(t){var a,i,l,r,n,d,o,u;c(t.name),p(t.purpose),f(t.tone),F(null!=(a=t.description)?a:""),M(null!=(i=t.system_prompt_augmentation)?i:""),W(t.visibility),V(t.is_published);let e=null!=(l=t.base_assistant_id)?l:"",s=null!=(r=t.response_length)?r:"",m=null!=(n=t.formatting_style)?n:"",x=null!=(d=t.model_band_affinity)?d:"";
1T(e),q(s),K(m),J(x),ef.current=JSON.stringify({name:t.name,purpose:t.purpose,systemPrompt:null!=(o=t.system_prompt_augmentation)?o:"",tone:t.tone,responseLength:s,formattingStyle:m,visibility:t.visibility,description:null!=(u=t.description)?u:"",baseAssistantId:e,modelBandAffinity:x})}else ed("Persona not found. It may have been deleted.")}).catch(()=>ed("Could not load persona. Please try again.")).finally(()=>er(!1)))},[s]);(0,i.useEffect)(()=>{ev()},[ev]);let ew=(0,i.useCallback)(async()=>{let e=!0;if(o.trim()||(ex("Name is required"),e=!1),m.trim()||(eg("Purpose is required"),e=!1),e){et(!0);try{let e={name:o,purpose:m,tone:x,description:U,system_prompt_augmentation:G,visibility:L,base_assistant_id:$||void 0,response_length:B||void 0,formatting_style:H||void 0,model_band_affinity:O||void 0};s?await v.updatePersona(s,e,crypto.randomUUID()):await v.createPersona(e,crypto.randomUUID()),d("Persona saved","success"),s||null==r||r(),l()}catch(e){d("Failed to save persona","error")}finally{et(!1)}}},[o,m,x,U,G,L,$,B,H,O,s,l,r,d]),ey=(0,i.useCallback)(async()=>{if(s){ei(!0);try{await v.publishPersona(s,crypto.randomUUID()),V(!0),d("Persona published","success")}catch(e){d("Failed to publish persona","error")}finally{ei(!1)}}},[s,d]),ej=(0,i.useCallback)(async()=>{if(s)try{await v.deletePersona(s,"persona:delete:".concat(s)),null==n||n(),l()}catch(e){d("Failed to delete persona","error")}},[s,l,n,d]);return el?(0,a.jsx)("div",{role:"status","aria-label":"Loading persona",className:"p-6 flex items-center justify-center",children:(0,a.jsx)(g.y$,{size:"sm"})}):en?(0,a.jsxs)("div",{className:"flex flex-col h-full bg-sw-background",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-sw-border",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(u.A,{size:18,className:"text-sw-primary-text"}),(0,a.jsx)("h3",{className:"text-sw-body font-semibold text-sw-text",children:"Edit Persona"})]}),(0,a.jsx)("button",{onClick:t,className:"p-1.5 hover:bg-sw-surface rounded-sw-sm text-sw-text-muted",title:"Close","aria-label":"Close editor",children:(0,a.jsx)(w.A,{size:14})})]}),(0,a.jsxs)("div",{role:"alert",className:"flex-1 flex flex-col items-center justify-center gap-3 p-6 text-center",children:[(0,a.jsx)(y.A,{size:24,className:"text-sw-error"}),(0,a.jsx)("p",{className:"text-sw-body text-sw-text-muted",children:en}),(0,a.jsx)(h.$,{variant:"ghost",size:"sm",onClick:ev,children:"Retry"})]})]}):(0,a.jsxs)("div",{className:"flex flex-col h-full bg-sw-background",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-sw-border",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(u.A,{size:18,className:"text-sw-primary-text"}),(0,a.jsx)("h3",{className:"text-sw-body font-semibold text-sw-text",children:s?"Edit Persona":"New Persona"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>ee(!Z),className:(0,C.cn)("p-1.5 rounded-sw-sm transition-colors",Z?"bg-sw-primary/10 text-sw-primary":"hover:bg-sw-surface text-sw-text-muted"),title:"Toggle preview",children:(0,a.jsx)(j.A,{size:14})}),s&&(0,a.jsx)("button",{onClick:()=>ec(!0),className:"p-1.5 hover:bg-sw-error-bg rounded-sw-sm text-sw-error",title:"Delete persona","aria-label":"Delete persona",children:(0,a.jsx)(N.A,{size:14})}),(0,a.jsx)("button",{onClick:()=>{eb?em(!0):t()},className:"p-1.5 hover:bg-sw-surface rounded-sw-sm text-sw-text-muted",title:"Close","aria-label":"Close editor",children:(0,a.jsx)(w.A,{size:14})})]})]}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,a.jsxs)("div",{className:(0,C.cn)("flex",Z?"divide-x divide-sw-border":""),children:[(0,a.jsxs)("div",{className:(0,C.cn)("p-4 space-y-4",Z?"w-1/2":"w-full"),children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(k.p,{label:"Name *",value:o,onChange:e=>{c(e.target.value),e.target.value.trim()&&ex("")},placeholder:"e.g., Data Analyst Pro","aria-invalid":!!ep,"aria-describedby":ep?"persona-name-error":void 0}),ep&&(0,a.jsx)("p",{id:"persona-name-error",className:"mt-1 text-sw-caption text-sw-error",children:ep})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(S.T,{label:"Purpose *",textareaSize:"sm",value:m,onChange:e=>{p(e.target.value),e.target.value.trim()&&eg("")},placeholder:"What does this persona do? e.g., Helps analyze data and create visualizations",rows:2,"aria-invalid":!!eh,"aria-describedby":eh?"persona-purpose-error":void 0}),eh&&(0,a.jsx)("p",{id:"persona-purpose-error",className:"mt-1 text-sw-caption text-sw-error",children:eh})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1",children:"Tone"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:E.map(e=>(0,a.jsx)("button",{onClick:()=>f(e),className:(0,C.cn)("px-2.5 py-1 text-sw-caption rounded-sw-full transition-colors capitalize",x===e?"bg-sw-primary/10 text-sw-primary border border-sw-primary/30":"bg-sw-surface text-sw-text-muted border border-transparent hover:border-sw-border hover:border-sw-border"),children:e},e))})]}),(0,a.jsx)(k.p,{label:"Description",value:U,onChange:e=>F(e.target.value),placeholder:"Brief description for listing"}),(0,a.jsx)(S.T,{label:"System Prompt",value:G,onChange:e=>M(e.target.value),placeholder:"Additional behavioral instructions for the assistant...",rows:4,className:"font-mono"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1",children:"Visibility"}),(0,a.jsxs)(A.H5,{value:L,onValueChange:e=>W(e),children:[(0,a.jsx)(A.bq,{className:"w-full text-sw-body",children:(0,a.jsx)(A.yv,{})}),(0,a.jsxs)(A.gC,{children:[(0,a.jsx)(A.eb,{value:"private",children:"Private (only you)"}),(0,a.jsx)(A.eb,{value:"team",children:"Team"}),(0,a.jsx)(A.eb,{value:"org",children:"Organization"}),(0,a.jsx)(A.eb,{value:"public",children:"Public"})]})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1",children:"Base Assistant (optional)"}),(0,a.jsxs)(A.H5,{value:$||"__default__",onValueChange:e=>T("__default__"===e?"":e),children:[(0,a.jsx)(A.bq,{className:"w-full text-sw-body","aria-label":"Select base assistant for this persona","data-testid":"base-assistant-select",children:(0,a.jsx)(A.yv,{})}),(0,a.jsxs)(A.gC,{children:[(0,a.jsx)(A.eb,{value:"__default__",children:"Default (SW Business Assistant)"}),Y.map(e=>(0,a.jsx)(A.eb,{value:e.id,children:e.name},e.id))]})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1",children:"Response Length"}),(0,a.jsx)("div",{className:"flex gap-2",children:D.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>q(B===e.value?"":e.value),className:(0,C.cn)("flex-1 px-2.5 py-1.5 text-sw-caption rounded-sw-md transition-colors border",B===e.value?"bg-sw-primary/10 text-sw-primary border-sw-primary/30":"bg-sw-surface text-sw-text-muted border-sw-border hover:border-sw-border"),"aria-pressed":B===e.value,"data-testid":"response-length-".concat(e.value),children:e.label},e.value))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1",children:"Formatting Style"}),(0,a.jsx)("div",{className:"grid grid-cols-2 gap-1.5",children:R.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>K(H===e.value?"":e.value),className:(0,C.cn)("px-2.5 py-1.5 text-sw-caption rounded-sw-md transition-colors border text-left",H===e.value?"bg-sw-primary/10 text-sw-primary border-sw-primary/30":"bg-sw-surface text-sw-text-muted border-sw-border hover:border-sw-border"),"aria-pressed":H===e.value,"data-testid":"formatting-style-".concat(e.value),children:e.label},e.value))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1",children:"Tier Affinity"}),(0,a.jsx)("div",{className:"flex gap-2",children:P.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>J(O===e.value?"":e.value),className:(0,C.cn)("flex-1 px-2.5 py-1.5 text-sw-caption rounded-sw-md transition-colors border",O===e.value?"bg-sw-primary/10 text-sw-primary border-sw-primary/30":"bg-sw-surface text-sw-text-muted border-sw-border hover:border-sw-border"),"aria-pressed":O===e.value,"data-testid":"tier-affinity-".concat(e.value),children:e.label},e.value))})]})]}),Z&&(0,a.jsxs)("div",{className:"w-1/2 p-4",children:[(0,a.jsx)("h4",{className:"text-sw-caption font-medium text-sw-text-muted mb-3 uppercase tracking-wide",children:"Preview"}),(0,a.jsxs)("div",{className:"rounded-sw-md border border-sw-border bg-sw-surface/50 p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-sw-full bg-sw-primary/10 flex items-center justify-center",children:(0,a.jsx)(u.A,{size:20,className:"text-sw-primary-text"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-sw-body font-semibold text-sw-text",children:o||"Persona Name"}),(0,a.jsxs)("div",{className:"sw-text-caption-muted",children:[x," tone"]})]})]}),(0,a.jsx)("p",{className:"sw-text-caption-muted mb-2",children:m||"Persona purpose will appear here..."}),U&&(0,a.jsx)("p",{className:"sw-text-caption-muted text-sw-text-muted italic",children:U}),G&&(0,a.jsxs)("div",{className:"mt-3 pt-3 border-t border-sw-border",children:[(0,a.jsx)("span",{className:"text-sw-caption font-medium text-sw-text-muted uppercase",children:"System Prompt"}),(0,a.jsx)("p",{className:"sw-text-caption-muted mt-1 font-mono line-clamp-3",children:G})]})]})]})]})}),(0,a.jsx)(z.T,{open:eo,title:"Delete persona?",description:"This persona configuration will be permanently deleted. This action cannot be undone.",confirmLabel:"Delete",cancelLabel:"Keep",variant:"destructive",onConfirm:()=>{ej(),ec(!1)},onCancel:()=>ec(!1)}),(0,a.jsx)(z.T,{open:eu,title:"Discard changes?",description:"You have unsaved changes. Discard them and close?",confirmLabel:"Discard",cancelLabel:"Keep editing",variant:"destructive",onConfirm:()=>{em(!1),t()},onCancel:()=>em(!1)}),(0,a.jsxs)("div",{className:"px-4 py-3 border-t border-sw-border flex items-center justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[s&&!Q&&(0,a.jsxs)(h.$,{variant:"secondary",size:"sm",onClick:ey,loading:ea,disabled:ea,"data-testid":"publish-persona-button",children:[!ea&&(0,a.jsx)(j.A,{size:14}),"Publish"]}),s&&Q&&(0,a.jsx)("span",{className:"text-sw-caption text-sw-success-text flex items-center gap-1",children:"Published"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(h.$,{variant:"ghost",size:"sm",onClick:()=>{eb?em(!0):t()},children:"Cancel"}),(0,a.jsxs)(h.$,{variant:"primary",size:"sm",onClick:ew,loading:es,disabled:es||!o.trim()||!m.trim(),children:[!es&&(0,a.jsx)(_.A,{size:14}),s?"Update":"Create"]})]})]})]})};var F=t(24033),G=t(27937),M=t(5917),L=t(45345),W=t(18514),$=t(88376),T=t(91758),B=t(75444),q=t(52056),H=t(86651),K=t(99708),O=t(39068),J=t(37586),Q=t(15438),V=t(56154);let Y={toxicity:{label:"Content Safety",description:"Detect and block harmful, offensive, or toxic language.",icon:(0,a.jsx)(q.A,{size:14,className:"text-sw-error"}),defaultConfig:{threshold:.7},configFields:[{key:"threshold",label:"Sensitivity threshold (0â1)",type:"number",min:0,max:1,step:.
105}]},allowed_topics:{label:"Allowed Topics",description:"Only permit conversations within specified subject areas.",icon:(0,a.jsx)(H.A,{size:14,className:"text-sw-success-text"}),defaultConfig:{topics:[]},configFields:[{key:"topics",label:"Permitted topics",type:"tags",placeholder:"e.g. HR, Finance, Legal",required:!0}]},restricted_topics:{label:"Restricted Topics",description:"Block conversations that touch on specified subjects.",icon:(0,a.jsx)(K.A,{size:14,className:"text-sw-warning"}),defaultConfig:{topics:[]},configFields:[{key:"topics",label:"Blocked topics",type:"tags",placeholder:"e.g. Politics, Gambling",required:!0}]},correct_language:{label:"Language Enforcement",description:"Require responses to be in one of the specified languages.",icon:(0,a.jsx)(O.A,{size:14,className:"text-sw-info"}),defaultConfig:{language_codes:["en"],filter_mode:"include"},configFields:[{key:"language_codes",label:"Allowed languages",type:"multiselect",options:["en","es","fr","de","it","pt","nl","ja","zh","ko","ar","he"]}]},string_check:{label:"Keyword Filter",description:"Block messages containing specific strings or phrases.",icon:(0,a.jsx)(J.A,{size:14,className:"text-sw-accent-model"}),defaultConfig:{regex_pattern:[]},configFields:[{key:"regex_pattern",label:"Blocked strings",type:"tags",placeholder:"e.g. confidential, secret",required:!0}]},competitor_check:{label:"Competitor Mentions",description:"Detect and manage mentions of competitor products or brands.",icon:(0,a.jsx)(r.A,{size:14,className:"text-orange-500"}),defaultConfig:{competitor_names:[]},configFields:[{key:"competitor_names",label:"Competitor names",type:"tags",placeholder:"e.g. Acme Corp, RivalCo",required:!0}]},pii_detection:{label:"PII Protection",description:"Detect and redact personal identifiable information.",icon:(0,a.jsx)(Q.A,{size:14,className:"text-pink-500"}),defaultConfig:{entities:["email","phone","ssn","credit_card"],action:"redact"},configFields:[{key:"entities",label:"PII entity types",type:"multiselect",options:["email","phone","ssn","credit_card","address","dob","passport","ip_address"]}]},detect_jailbreak:{label:"Jailbreak Detection",description:"Detect attempts to bypass assistant instructions or safety rules.",icon:(0,a.jsx)(V.A,{size:14,className:"text-yellow-500"}),defaultConfig:{sensitivity:"medium"},configFields:[{key:"sensitivity",label:"Detection sensitivity",type:"multiselect",options:["low","medium","high"]}]}};function X(e,s){for(let t of Y[e].configFields){if(!t.required)continue;let e=s[t.key];if(!Array.isArray(e)||0===e.length)return"".concat(t.label," requires at least one entry.")}return null}let Z=[{label:"Customer Support",description:"Blocks harmful content, PII, and jailbreak attempts for customer-facing assistants.",draft:{name:"Customer Support Safety",description:"Content safety for customer-facing assistants.",rules:[{type:"toxicity",name:"Content Safety",severity:"high",config:{threshold:.7}},{type:"pii_detection",name:"PII Shield",severity:"high",config:{entities:["email","phone","ssn","credit_card"]}},{type:"detect_jailbreak",name:"Jailbreak Guard",severity:"medium",config:{sensitivity:"medium"}}]}},{label:"Financial Services",description:"PII protection, competitor filtering, and restricted topic enforcement.",draft:{name:"Financial Services Policy",description:"Compliance guardrail for financial domain assistants.",rules:[{type:"pii_detection",name:"PII Shield",severity:"high",config:{entities:["ssn","credit_card","account_number"]}},{type:"restricted_topics",name:"Investment Advice Block",severity:"high",config:{topics:["investment advice","trading tips","stock picks"]}},{type:"competitor_check",name:"Competitor Filter",severity:"medium",config:{competitor_names:[]}}]}},{label:"HR Policy",description:"Blocks sensitive HR topics and toxic language for internal HR assistants.",draft:{name:"HR Policy Guardrail",description:"Guardrail for internal HR assistants.",rules:[{type:"toxicity",name:"Respectful Tone",severity:"high",config:{threshold:.6}},{type:"restricted_topics",name:"Salary Confidentiality",severity:"high",config:{to
1pics:["salary bands","compensation details","performance ratings"]}}]}},{label:"HIPAA-Safe",description:"Maximum PII protection for healthcare or patient-facing assistants.",draft:{name:"HIPAA-Safe Guardrail",description:"PII and PHI protection for healthcare assistants.",rules:[{type:"pii_detection",name:"PHI Shield",severity:"high",config:{entities:["email","phone","ssn","dob","address","passport","ip_address"]}},{type:"restricted_topics",name:"Medical Records Block",severity:"high",config:{topics:["patient records","diagnoses","prescriptions"]}}]}},{label:"Content Moderation",description:"Strict content filtering for community-facing or public assistants.",draft:{name:"Content Moderation",description:"Strict content safety for public-facing assistants.",rules:[{type:"toxicity",name:"Content Safety",severity:"high",config:{threshold:.5}},{type:"detect_jailbreak",name:"Jailbreak Guard",severity:"high",config:{sensitivity:"high"}},{type:"string_check",name:"Keyword Filter",severity:"medium",config:{regex_pattern:[]}}]}},{label:"Developer Sandbox",description:"Minimal restrictions for internal developer or testing assistants.",draft:{name:"Developer Sandbox",description:"Minimal guardrail for internal developer use.",rules:[{type:"detect_jailbreak",name:"Basic Jailbreak Guard",severity:"low",config:{sensitivity:"low"}}]}}];var ee=t(18085),es=t(48314),et=t(4602),ea=t(90686);let ei={low:"text-sw-info-text bg-sw-info-bg border-sw-info",medium:"text-sw-warning bg-sw-warning-bg border-sw-warning",high:"text-sw-error bg-sw-error-bg border-sw-error"},el=e=>{let{draft:s,nameOverride:t,onNameChange:l,onCreate:r,onEdit:n,creating:d=!1}=e,[o,c]=(0,i.useState)(!1),u=null!=t?t:s.name,m=async()=>{c(!0);try{await r({...s,name:u})}finally{c(!1)}},x=o||d;return(0,a.jsxs)("div",{className:"rounded-sw-lg border border-sw-primary/30 bg-sw-primary/5 p-4 space-y-3","data-testid":"guardrail-draft-card",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("div",{className:"w-7 h-7 rounded-sw-md bg-sw-primary flex items-center justify-center shrink-0",children:(0,a.jsx)(p.A,{size:14,className:"text-white"})}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[l?(0,a.jsx)("input",{type:"text",value:u,onChange:e=>l(e.target.value),className:"w-full text-sw-body font-semibold text-sw-text bg-transparent border-b border-sw-border focus:outline-none focus:border-sw-border-focus","aria-label":"Guardrail name","data-testid":"draft-name-input"}):(0,a.jsx)("p",{className:"text-sw-body font-semibold text-sw-text truncate",children:u}),s.description&&(0,a.jsx)("p",{className:"sw-text-caption-muted mt-0.5 line-clamp-2",children:s.description})]})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsxs)("p",{className:"text-sw-caption font-medium text-sw-text-muted",children:[s.rules.length," rule",1!==s.rules.length?"s":""]}),s.rules.map((e,s)=>{let t=Y[e.type];return(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded-sw-md bg-sw-surface px-3 py-2 border border-sw-border",children:[(0,a.jsx)("span",{className:"shrink-0",children:null==t?void 0:t.icon}),(0,a.jsx)("span",{className:"flex-1 text-sw-caption text-sw-text truncate",children:e.name}),(0,a.jsx)("span",{className:(0,C.cn)("text-sw-caption px-1.5 py-0.5 rounded-sw-full border font-medium capitalize shrink-0",ei[e.severity]),children:e.severity})]},s)})]}),(0,a.jsxs)("div",{className:"flex gap-2 justify-end pt-1",children:[n&&(0,a.jsx)(h.$,{variant:"ghost",size:"sm",onClick:n,disabled:x,children:"Edit"}),(0,a.jsx)(h.$,{variant:"primary",size:"sm",onClick:m,disabled:x||!u.trim(),"data-testid":"draft-create-btn",children:x?(0,a.jsx)(g.y$,{size:"sm"}):"Create Guardrail"})]})]})},er=e=>{let{open:s,onClose:t,onCreated:l,onQuotaDenied:r}=e,{showToast:n}=(0,b.d)(),d=(0,ea.u)(),[o,c]=(0,i.useState)("templates"),[u,m]=(0,i.useState)(null),[p,x]=(0,i.useState)(""),[f,w]=(0,i.useState)(null),[y,j]=(0,i.useState)([]),[N,_]=(0,i.useState)(null),[k,S]=(0,i.useState)(""),[C,A]=(0,i.useState)(!1),[z,E]=(0,i.useState)(null),P=(0,i.useRef)(null),I=(0,i.useRef)(null),D=(0,i.useCallback)(()=>{P.current&&(P.current.scrollTop=P.current.scrollHeight)},[]),R=(0,i.useCallback)(async()=>{A(!0),E(null);
1try{let e=await (0,v.startGuardrailBuilderSession)();w(e.sessionId),j([{role:"assistant",content:e.message}])}catch(e){E("AI-guided creation is unavailable. Use the Templates tab to get started quickly.")}finally{A(!1)}},[]);(0,i.useEffect)(()=>{s||(c("templates"),m(null),x(""),w(null),j([]),_(null),S(""),A(!1),E(null))},[s]),(0,i.useEffect)(()=>{!s||"ai"!==o||f||z||C||(R(),setTimeout(()=>{var e;return null==(e=I.current)?void 0:e.focus()},100))},[s,o,f,z,C,R]),(0,i.useEffect)(()=>{D()},[y,D]);let U=async e=>{try{let s=await (0,v.createGuardrail)({name:e.name,description:e.description},crypto.randomUUID()),a=(await Promise.allSettled(e.rules.map(e=>(0,v.addGuardrule)(s.id,{name:e.name,type:e.type,severity:e.severity,is_active:!0,config:e.config},crypto.randomUUID())))).filter(e=>"rejected"===e.status).length;a>0&&n("Guardrail created with ".concat(e.rules.length-a,"/").concat(e.rules.length," rules (some rules failed)"),"warning"),l(s.id,s.name),t()}catch(e){if((0,v.isQuotaError)(e)&&r){r(e.message),t();return}n(e instanceof Error&&e.message?e.message:"Failed to create guardrail","error")}},F=async()=>{let e=k.trim();if(e&&f&&!C){S(""),j(s=>[...s,{role:"user",content:e}]),A(!0);try{let s=await (0,v.sendGuardrailBuilderMessage)(f,e,crypto.randomUUID());j(e=>[...e,{role:"assistant",content:s.message}]),s.draft&&_(s.draft)}catch(e){j(e=>[...e,{role:"assistant",content:"Something went wrong. Please try again."}])}finally{A(!1)}}},G=async()=>{w(null),j([]),_(null),S(""),await R()},M=async e=>{if(f)try{let s=await (0,v.createGuardrailFromDraft)(f,e,crypto.randomUUID());l(s.guardrail_id,s.name),t()}catch(e){if((0,v.isQuotaError)(e)&&r){r(e.message),t();return}n(e instanceof Error&&e.message?e.message:"Failed to create guardrail","error")}},L=null!==u?Z[u].draft:null;return(0,a.jsx)(et.lG,{open:s,onOpenChange:e=>{e||C||t()},children:(0,a.jsxs)(et.Cf,{size:"xl",padding:"none",className:"w-full max-h-[calc(100dvh-5rem)] flex flex-col bg-sw-surface rounded-sw-lg shadow-sw-xl","data-testid":"guardrail-builder-modal",closeButton:!0,onCloseClick:()=>{C||t()},style:d>0?{paddingBottom:"calc(env(safe-area-inset-bottom, 0px) + ".concat(d,"px)")}:void 0,children:[(0,a.jsxs)("div",{className:"flex items-center px-5 py-4 border-b border-sw-border shrink-0",children:[(0,a.jsx)(et.L3,{className:"text-sw-body font-semibold text-sw-text flex-1",children:"Create Guardrail"}),(0,a.jsx)(et.rr,{className:"sr-only",children:"Create a guardrail using a template or AI-guided interview."})]}),(0,a.jsx)("div",{className:"flex border-b border-sw-border flex-shrink-0",children:["templates"].map(e=>(0,a.jsx)("button",{onClick:()=>c(e),className:["px-5 py-2.5 text-sw-body font-medium transition-colors capitalize",o===e?"border-b-2 border-sw-primary text-sw-primary":"text-sw-text-muted hover:text-sw-text"].join(" "),"data-testid":"gb-tab-".concat(e),children:"templates"===e?"Templates":"AI-guided"},e))}),"templates"===o?(0,a.jsx)("div",{className:"flex-1 overflow-y-auto p-5 space-y-4 min-h-0",children:L?(0,a.jsx)(el,{draft:L,nameOverride:p,onNameChange:x,onCreate:U,onEdit:()=>m(null)}):(0,a.jsx)("div",{className:"grid grid-cols-2 gap-3","data-testid":"template-grid",children:Z.map((e,s)=>(0,a.jsxs)("button",{onClick:()=>(e=>{m(e),x(Z[e].draft.name)})(s),className:"text-left sw-well hover:border-sw-primary/50 hover:bg-sw-primary/5 transition-colors p-4 space-y-1","data-testid":"template-card-".concat(s),children:[(0,a.jsx)("p",{className:"text-sw-body font-semibold text-sw-text",children:e.label}),(0,a.jsx)("p",{className:"sw-text-caption-muted line-clamp-2",children:e.description}),(0,a.jsxs)("p",{className:"text-sw-caption text-sw-text-disabled mt-1",children:[e.draft.rules.length," rule",1!==e.draft.rules.length?"s":""]})]},s))})}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{ref:P,className:"flex-1 overflow-y-auto px-5 py-4 space-y-3 min-h-0","data-testid":"gb-builder-message-list",children:[z?(0,a.jsx)("p",{className:"text-sw-body text-sw-text-muted text-center py-4",children:z}):0===y.length&&C?(0,a.jsx)("div",{className:"flex justify-center py-4",children:(0,a.jsx)(g.y$,{size:"md"})}):y.map((e,s)=>(0,a.jsx)("div",{className:"flex ".concat("user"===e.role?"justify-end":"justify-start"),children:(0,a.jsx)("div",{className:"user"===e.role?"bg-sw-primary text-white rounded-sw-lg px-4 py-2 max-w-sm text-sw-body leading-relaxed":"bg-sw-surface-elevated text-sw-text rounded-sw-lg px-4 py-2 max-w-sm text-sw-body leading-relaxed","data-testid":"gb-builder
1-message-".concat(e.role),children:e.content})},s)),C&&y.length>0&&(0,a.jsx)("div",{className:"flex justify-start",children:(0,a.jsx)("div",{className:"bg-sw-surface-elevated rounded-sw-lg px-4 py-2",children:(0,a.jsxs)("span",{className:"inline-flex gap-1 items-center text-sw-text-muted text-sw-body",children:[(0,a.jsx)("span",{className:"animate-pulse",children:"â¢"}),(0,a.jsx)("span",{className:"animate-pulse delay-100",children:"â¢"}),(0,a.jsx)("span",{className:"animate-pulse delay-200",children:"â¢"})]})})})]}),N&&f&&(0,a.jsx)("div",{className:"px-5 pb-3 flex-shrink-0",children:(0,a.jsx)(el,{draft:N,onCreate:M,onEdit:()=>_(null)})}),(0,a.jsxs)("div",{className:"px-5 py-4 border-t border-sw-border flex items-center gap-3 flex-shrink-0",children:[(0,a.jsx)("input",{ref:I,type:"text",className:"flex-1 sw-well text-sw-text text-sw-body px-3 py-2 sw-focus-ring disabled:opacity-50",placeholder:"Type your replyâ¦",value:k,onChange:e=>S(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),F())},disabled:C||!f||!!N||!!z,"aria-label":"Builder message input","data-testid":"gb-builder-input"}),(0,a.jsx)(h.$,{variant:"primary",size:"sm",onClick:F,disabled:C||!k.trim()||!f||!!N||!!z,"aria-label":"Send message","data-testid":"gb-builder-send-btn",children:C?(0,a.jsx)(g.y$,{size:"sm"}):(0,a.jsx)(ee.A,{size:14})}),(0,a.jsxs)(h.$,{variant:"ghost",size:"sm",onClick:G,disabled:C||!!z,"data-testid":"gb-builder-start-over-btn","aria-label":"Start over",children:[(0,a.jsx)(es.A,{size:12}),"Start over"]})]})]})]})})};var en=t(59363),ed=t(63307);let eo={low:"text-sw-info-text bg-sw-info-bg border-sw-info",medium:"text-sw-warning bg-sw-warning-bg border-sw-warning",high:"text-sw-error bg-sw-error-bg border-sw-error"},ec=e=>{let{value:s,onChange:t,placeholder:l,disabled:r}=e,[n,d]=(0,i.useState)(""),o=()=>{let e=n.trim();e&&!s.includes(e)&&(t([...s,e]),d(""))};return(0,a.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:s.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-sw-full text-sw-caption bg-sw-surface border border-sw-border text-sw-text",children:[e,!r&&(0,a.jsx)("button",{onClick:()=>t(s.filter(s=>s!==e)),className:"text-sw-text-muted hover:text-sw-error ml-0.5",children:"\xd7"})]},e))}),!r&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(k.p,{value:n,onChange:e=>d(e.target.value),onKeyDown:e=>"Enter"===e.key&&(e.preventDefault(),o()),onBlur:o,placeholder:l||"Type and press Enter",className:"flex-1",inputSize:"sm"}),(0,a.jsx)("button",{onClick:o,className:"text-sw-caption px-2 py-1.5 sw-card text-sw-text hover:bg-sw-border/30 transition-colors",children:"Add"})]})]})},eu=e=>{let{value:s,options:t,onChange:i,disabled:l}=e;return(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:t.map(e=>{let t=s.includes(e);return(0,a.jsx)("button",{disabled:l,onClick:()=>i(t?s.filter(s=>s!==e):[...s,e]),className:(0,C.cn)("text-sw-caption px-2.5 py-1 rounded-sw-full border transition-colors",t?"bg-sw-primary border-sw-primary text-white":"bg-sw-surface border-sw-border text-sw-text hover:border-sw-primary/60",l&&"opacity-50 cursor-not-allowed"),children:e},e)})})},em=e=>{let{rule:s,onChange:t,disabled:i}=e,l=s.type?Y[s.type]:null,r=(e,a)=>{var i;return t({...s,config:{...null!=(i=s.config)?i:{},[e]:a}})};return l?(0,a.jsx)("div",{className:"space-y-3",children:l.configFields.map(e=>{var t,l,n,d,o,c,u;let m=(null!=(t=s.config)?t:{})[e.key],p=e.required&&(!Array.isArray(m)||0===m.length);return(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1.5",children:[e.label,e.required&&(0,a.jsx)("span",{className:"text-sw-error",children:" *"})]}),"number"===e.type&&(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("input",{type:"range",min:null!=(l=e.min)?l:0,max:null!=(n=e.max)?n:1,step:null!=(d=e.step)?d:.05,value:null!=(o=null!=m?m:e.min)?o:0,onChange:s=>r(e.key,parseFloat(s.target.value)),disabled:i,className:"flex-1 accent-sw-primary"}),(0,a.jsx)("span",{className:"text-sw-body font-mono text-sw-text w-10 text-right",children:(null!=(c=null!=m?m:e.min)?c:0).toFixed(2)})]}),"tags"===e.type&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(ec,{value:null!=m?m:[],onChange:s=>r(e.key,s),placeholder:e.placeholder,disabled:i}),!i&&p&&(0,a.jsx)("p",{className:"text-sw-caption text-sw-error mt-1",children:"Add at least one entry â SUPERWISE requires this field to be non-empty."})]}),"multiselect"===e.type&&(0,a.jsx)(eu,{value:null!=m?m:[],options:null!=(u=e.options)?u:[],onChange:s=>r(e.key,s),disabled:i})]},e.key)})}):null},ep=e=>{var s;let{rule:t,guardrailId:l,canEdit:r,onUpdated:n,onError:d}=e,[o,c]=(0,i.useState)(!1),[u,m]=(0,i.useState)(!1),[p,x]=(0,i.useState)(t),[g,f]=(0,i.useState)(!1),[b,w]=(0,i.useState)(!1),y=Y[t.type],j=(0,i.useRef)(null);(0,i.useEffect)(()=>{u&&(j.current=crypto.randomUUID())},[u]);let _=(0,i.useMemo)(()=>JSON.stringify(p)!==JSON.stringify(t),[p,t]),k=p.type?X(p.type,null!=(s=p.config)?s:{}):null,S=async()=>
1{if(!k){f(!0);try{var e;await v.updateGuardrule(l,t.id,p,null!=(e=j.current)?e:void 0),m(!1),n()}catch(e){d(e instanceof Error?e.message:"Failed to save rule"),n()}finally{f(!1)}}},A=async()=>{try{await v.deleteGuardrule(l,t.id),n()}catch(e){d(e instanceof Error?e.message:"Failed to delete rule")}},E=async()=>{try{await v.updateGuardrule(l,t.id,{is_active:!t.is_active}),n()}catch(e){d(e instanceof Error?e.message:"Failed to toggle rule")}};return(0,a.jsxs)("div",{className:(0,C.cn)("rounded-sw-md border transition-colors",t.is_active?"border-sw-border bg-sw-background":"border-sw-border-subtle bg-sw-surface/30 opacity-60"),children:[(0,a.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":o,className:"flex items-center gap-3 px-3 py-2.5 cursor-pointer",onClick:()=>c(!o),onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(" "===e.key&&e.preventDefault(),c(!o))},children:[(0,a.jsx)("span",{className:"shrink-0",children:y.icon}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-sw-body font-medium text-sw-text truncate",children:t.name}),(0,a.jsx)("span",{className:(0,C.cn)("text-sw-caption px-1.5 py-0.5 rounded-sw-full border font-medium capitalize",eo[t.severity]),children:t.severity})]}),(0,a.jsx)("p",{className:"sw-text-caption-muted mt-0.5",children:y.label})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",onClick:e=>e.stopPropagation(),children:[r&&(0,a.jsx)(T.d,{checked:t.is_active,onCheckedChange:()=>E(),"aria-label":t.is_active?"Disable rule":"Enable rule",className:"data-[state=checked]:bg-sw-success"}),r&&(0,a.jsx)("button",{onClick:e=>{e.stopPropagation(),c(!0),m(!0)},className:"text-sw-caption px-2 py-1 sw-card text-sw-text hover:bg-sw-border/30 transition-colors",children:"Edit"}),r&&(0,a.jsx)("button",{onClick:e=>{e.stopPropagation(),w(!0)},className:"text-sw-text-disabled hover:text-sw-error transition-colors p-1",title:"Remove rule",children:(0,a.jsx)(N.A,{size:12})}),o?(0,a.jsx)(F.A,{size:14,className:"text-sw-text-muted"}):(0,a.jsx)(G.A,{size:14,className:"text-sw-text-muted"})]})]}),(0,a.jsx)(z.T,{open:b,title:"Delete Rule",description:'Are you sure you want to delete the "'.concat(t.name,'" rule? This action cannot be undone.'),confirmLabel:"Delete",variant:"destructive",onConfirm:()=>{w(!1),A()},onCancel:()=>w(!1)}),o&&(0,a.jsxs)("div",{className:"px-3 pb-3 border-t border-sw-border-subtle pt-3",children:[(0,a.jsx)("p",{className:"sw-text-caption-muted mb-3",children:y.description}),(0,a.jsx)(em,{rule:u?p:t,onChange:x,disabled:!u}),u&&(0,a.jsxs)("div",{className:"flex gap-2 mt-3 justify-end",children:[(0,a.jsx)(h.$,{variant:"ghost",size:"sm",onClick:()=>{x(t),m(!1)},children:"Cancel"}),(0,a.jsx)(h.$,{variant:"primary",size:"sm",onClick:S,loading:g,disabled:!_||!!k,title:null!=k?k:void 0,children:"Save"})]})]})]})},ex=e=>{let{guardrailId:s,onAdded:t,onCancel:l,onError:r,onRefresh:n}=e,[d,o]=(0,i.useState)("toxicity"),[c,u]=(0,i.useState)(""),[m,p]=(0,i.useState)("medium"),[x,g]=(0,i.useState)(Y.toxicity.defaultConfig),[f,b]=(0,i.useState)(!1),w=(0,i.useRef)(null);null===w.current&&(w.current=crypto.randomUUID()),(0,i.useEffect)(()=>{u(Y[d].label),g(Y[d].defaultConfig)},[d]);let y=X(d,x),j=async()=>{if(c.trim()&&!y){b(!0);try{var e;await v.addGuardrule(s,{name:c,type:d,severity:m,is_active:!0,config:x},null!=(e=w.current)?e:void 0),t()}catch(e){r(e instanceof Error?e.message:"Failed to add rule"),n()}finally{b(!1)}}};return(0,a.jsxs)("div",{className:"rounded-sw-md border border-sw-primary/30 bg-sw-primary/5 p-4 space-y-3 mb-3",children:[(0,a.jsx)("h4",{className:"text-sw-body font-semibold text-sw-text",children:"Add Protection Rule"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1.5",children:"Rule type"}),(0,a.jsx)("div",{className:"grid grid-cols-2 gap-1.5",children:Object.keys(Y).map(e=>{let s=Y[e];return(0,a.jsxs)("button",{onClick:()=>(e=>{o(e),g(Y[e].defaultConfig),c||u(Y[e].label)})(e),className:(0,C.cn)("flex items-center gap-2 px-3 py-2 rounded-sw-md border text-left text-sw-caption transition-colors",d===e?"border-sw-primary/60 bg-sw-primary/10 text-sw-primary":"border-sw-border bg-sw-surface text-sw-text hover:border-sw-border"),children:[s.icon,(0,a.jsx)("span",{className:"truncate",children:s.label})]},e)})})]}),(0,a.jsx)(k.p,{label:"Rule name",value:c,onChange:e=>u(e.target.value),className:"w-full"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1.5",children:"Severity"}),(0,a.jsx)("div",{className:"flex gap-2",children:["low","medium","high"].map(e=>(0,a.jsx)("button",{onClick:()=>p(e),className:(0,C.cn)("flex-1 text-sw-caption py-1.5 rounded-sw-md border capitalize transition-colors",m===e?eo[e]+" font-medium":"border-sw-border bg-sw-surface text-sw-text-muted"),children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sw-caption font-medium text-sw-text-muted mb-1.5",children:"Configuration"}),(0,a.jsx)(em,{rule:{type:d,config:x},onChange:e=>e.config&&g(e.config)})]}),(0,a.jsxs)("div",{className:"flex gap-2 justify-end pt-1",children:[(0,a.jsx)(h.$,{variant:"ghost",size:"sm",onClick:l,children:"Cancel"}),(0,a.jsx)(h.$,{variant:"primary",size:"sm",onClick:j,loading:f,disabled:!c.trim()||!!y,title:null!=y?y:void 0,children:"Add Rule"})]})]})},eh=e=>{var s;let{requestCreate:t,onGuardrailCreated:l,onGuardrailDeleted:r,onGuardrailUpdated:d,selectedGuardrailId:o}=e,{showToast:c}=(0,b.d)(),{canWriteGuardrails:u}=(0,B.S)(),x=(0,en.d3)("guardrails"),y="guardrails-limit-reason",[j,_]=(0,i.useState)(null),[S,A]=(0,i.useState)([]),[E,P]=(0,i.useState)(!0),[I,D]=(0,i.useState)(!1),[R,U]=(0,i.useState)(null),[q,H]=(0,i.useState)(!1),[K,O]=(0,i.useState)(null),[J,Q]=(0,i.useState)(null),[V,Y]=(0,i.useState)(!1),[X,Z]=(0,i.useState)(null),[ee,es]=(0,i.useState)(new Set),[et,ea]=(0,i.useState)({}),[ei,el]=(0,i.useState)(new Set),[eo,ec]=(0,i.useState)(null),eu=(0,i.useRef)({}),[em,eh]=(0,i.useState)(null),[eg,ef]=(0,i.useState)(""),[eb,ev]=(0,i.useState)(!1),ew=(0,i.useCallback)(e=>{c(e,"error")},[c]),ey=(0,i.useCallback)(async()=>{P(!0);try{var e;let s=await v.listGuardrails();A(null!=(e=s.items)?e:[])}catch(e){A([]),c(e instanceof Error?e.message:"Failed to load guardrails","error")}finally{P(!1)}},[c]),ej=(0,i.useCallback)(async e=>{el(s=>new Set(s).add(e));try{let s=await v.getGuardrail(e);ea(t=>({...t,[e]:s})),A(t=>t.map(t=>
1t.id===e?{...t,...s}:t))}catch(e){c(e instanceof Error?e.message:"Failed to load guardrail details","error")}finally{el(s=>{let t=new Set(s);return t.delete(e),t})}},[c]),eN=(0,i.useCallback)(e=>{ea(s=>{let t={...s};return delete t[e],t}),ej(e)},[ej]),e_=(0,i.useCallback)(e=>{es(s=>{let t=new Set(s);return t.has(e)?t.delete(e):(t.add(e),et[e]||ej(e)),t})},[et,ej]);(0,i.useEffect)(()=>{ey()},[ey]),(0,i.useEffect)(()=>{t&&Y(!0)},[t]);let ek=(0,i.useRef)(null);(0,i.useEffect)(()=>{var e;if(!o)return;let s=S.find(e=>e.id===o);s&&(s.is_active||D(!0),ek.current!==o&&(es(new Set([o])),ek.current=o),et[o]||ej(o),null==(e=eu.current[o])||e.scrollIntoView({block:"nearest",behavior:"smooth"}))},[o,S]);let eS=(0,i.useMemo)(()=>S.filter(e=>e.is_active),[S]),eC=(0,i.useMemo)(()=>S.filter(e=>!e.is_active),[S]),eA=I?S:eS,ez=(0,i.useCallback)(async()=>{H(!0);try{let e=await (0,v.syncSuperwiseGuardrails)();c("Synced ".concat(e.synced," guardrail profile").concat(1!==e.synced?"s":""," from SUPERWISE"),"success"),Q(new Date),await ey(),null==d||d()}catch(e){c(e instanceof Error?e.message:"Sync failed","error")}finally{H(!1)}},[c,ey,d]),eE=(0,i.useCallback)(async e=>{O(e.id);try{let s=await (0,v.pushGuardrailToSuperwise)(e.id);A(t=>t.map(t=>t.id===e.id?{...t,external_guardrail_id:s.external_guardrail_id,guardrail_version_id:s.guardrail_version_id}:t)),c('"'.concat(e.name,'" pushed to SUPERWISE'),"success"),null==d||d()}catch(e){c(e instanceof Error?e.message:"Push to AMP failed","error")}finally{O(null)}},[c,d]),eP=(0,i.useCallback)(async(e,s)=>{await ey(),es(s=>new Set(s).add(e)),ej(e),c('Guardrail "'.concat(s,'" created'),"success"),_(null),(0,en.UR)(),null==l||l()},[ey,c,ej,l]),eI=(0,i.useCallback)(e=>{_(e),(0,en.UR)()},[]),eD=()=>{eh(null),ef("")},eR=async e=>{let s=eg.trim();if(!s||s===e.name)return void eD();ev(!0);try{let t=await v.updateGuardrail(e.id,{name:s});A(s=>s.map(s=>s.id===e.id?{...s,...t}:s)),ea(s=>s[e.id]?{...s,[e.id]:{...s[e.id],...t}}:s),eD(),c("Guardrail renamed","success"),null==d||d()}catch(e){c(e instanceof Error?e.message:"Failed to rename guardrail","error")}finally{ev(!1)}},eU=async e=>{try{await v.deleteGuardrail(e.id),A(s=>s.filter(s=>s.id!==e.id)),es(s=>{let t=new Set(s);return t.delete(e.id),t}),ea(s=>{let t={...s};return delete t[e.id],t}),c('Deleted "'.concat(e.name,'"'),"success"),_(null),(0,en.UR)(),null==r||r()}catch(e){c(e instanceof Error?e.message:"Failed to delete guardrail","error")}},eF=async e=>{let s={...e,is_active:!e.is_active};A(t=>t.map(t=>t.id===e.id?s:t));try{let s=await v.updateGuardrail(e.id,{is_active:!e.is_active});A(t=>t.map(t=>t.id===e.id?{...t,...s}:t)),c(s.is_active?'"'.concat(e.name,'" enabled'):'"'.concat(e.name,'" disabled'),"success"),null==d||d()}catch(s){A(s=>s.map(s=>s.id===e.id?e:s)),c(s instanceof Error?s.message:"Failed to update guardrail","error")}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:(0,a.jsxs)("div",{className:"max-w-3xl mx-auto p-6 pb-12",children:[(0,a.jsx)(f.G,{title:"Guardrail Packs",subtitle:J?"Managed here, enforced by SUPERWISE \xb7 edits write through to the platform \xb7 synced ".concat(J.toLocaleDateString()):"Managed here, enforced by SUPERWISE \xb7 edits write through to the platform in real time",icon:(0,a.jsx)(p.A,{size:20,className:"text-sw-primary-text"}),actions:(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[u&&(0,a.jsx)(h.$,{variant:"ghost",size:"sm",iconOnly:!0,onClick:ez,disabled:q,title:"Sync guardrails from SUPERWISE","aria-label":"Sync guardrails from SUPERWISE","data-testid":"guardrails-sync-btn",children:(0,a.jsx)(m.A,{size:14,className:q?"animate-spin":""})}),u&&(0,a.jsxs)(h.$,{variant:"primary",size:"sm",title:"New guardrail","aria-label":"New guardrail",testId:"guardrails-header-new-button",...(0,ed.hW)(x,y,()=>Y(!0)),children:[(0,a.jsx)(n.A,{size:14}),"New Pack"]})]}),className:"mb-4"}),u&&(0,a.jsx)(ed.Az,{usage:x,id:y,serverMessage:j,onDismiss:j?()=>_(null):void 0,className:"mb-4",testId:"guardrails-limit-notice"}),!E&&(eS.length>0||eC.length>0)&&(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-5",children:[(0,a.jsxs)("span",{className:"sw-text-caption-muted",children:[eS.length," guardrail pack",1!==eS.length?"s":""," configured"]}),(0,a.jsxs)("span",{className:"text-sw-caption text-sw-success-text",children:[eS.length," active"]}),eC.length>0&&(0,a.jsx)("button",{type:"button",onClick:()=>D(e=>!e),"aria-pressed":I,"data-testid":"guardrails-show-inactive-toggle",className:"text-sw-caption text-sw-text-muted underline underline-offset-2 hover:text-sw-text",children:I?"Hide ".concat(eC.length," inactive"):"Show ".concat(eC.length," inactive")})]}),E?(0,a.jsx)("div",{className:"space-y-2",children:[1,2,3].map(e=>(0,a.jsx)("div",{className:"h-14 sw-card animate-pulse"},e))}):0===eA.length?(0,a.jsx)($.p,{icon:p.A,title:0===S.length?"No guardrails yet":"No active guardrail packs",description:0===S.length?u?"Click + to create one":"No guardrails have been configured.":"Use the inactive toggle above to review disabled guardrail packs.",ctaLabel:u&&!x.atLimit?"New Guardrail":void 0,onCtaClick:u&&!x.atLimit?()=>Y(!0):void 0,testId:"guardrails-empty"}):(0,a.jsx)("div",{className:"space-y-2",children:eA.map(e=>{var s,t,i,l,r,d,o,c,x,f,b,v;
1let y=ee.has(e.id),j=ei.has(e.id),_=et[e.id],S=null!=(x=null!=(c=null!=(o=null==_||null==(s=_.rules)?void 0:s.length)?o:e.rule_count)?c:null==(t=e.rules)?void 0:t.length)?x:0,A=null!=(f=e.agent_count)?f:0;return(0,a.jsxs)("div",{ref:s=>{eu.current[e.id]=s},className:(0,C.cn)("rounded-sw-md border transition-colors",y?"border-sw-primary/20 bg-sw-background":"border-sw-border bg-sw-surface/50"),children:[(0,a.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":y,className:"flex items-center gap-3 px-4 py-3 cursor-pointer",onClick:()=>e_(e.id),onKeyDown:s=>{("Enter"===s.key||" "===s.key)&&(" "===s.key&&s.preventDefault(),e_(e.id))},children:[y?(0,a.jsx)(F.A,{size:14,className:"text-sw-text-muted shrink-0"}):(0,a.jsx)(G.A,{size:14,className:"text-sw-text-muted shrink-0"}),(0,a.jsxs)("div",{className:(0,C.cn)("w-7 h-7 rounded-sw-full flex items-center justify-center shrink-0",e.is_active?"bg-sw-primary":"bg-sw-border"),children:[(0,a.jsx)(p.A,{size:13,className:"text-white"})," "]}),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[em===e.id?(0,a.jsxs)("div",{className:"flex items-center gap-1.5",onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[(0,a.jsx)(k.p,{autoFocus:!0,value:eg,onChange:e=>ef(e.target.value),onKeyDown:s=>{"Enter"===s.key?(s.preventDefault(),eR(e)):"Escape"===s.key&&(s.preventDefault(),eD())},inputSize:"sm",className:"max-w-xs","aria-label":"Guardrail name"}),(0,a.jsx)("button",{onClick:()=>eR(e),disabled:eb||!eg.trim(),className:"p-1.5 text-sw-success-text hover:bg-sw-surface rounded-sw-sm disabled:opacity-50 transition-colors",title:"Save name","aria-label":"Save guardrail name",children:(0,a.jsx)(M.A,{size:14})}),(0,a.jsx)("button",{onClick:eD,disabled:eb,className:"p-1.5 text-sw-text-disabled hover:text-sw-error rounded-sw-sm transition-colors disabled:opacity-50",title:"Cancel rename","aria-label":"Cancel rename",children:(0,a.jsx)(w.A,{size:14})})]}):(0,a.jsx)("span",{className:"text-sw-body font-semibold text-sw-text",children:e.name}),(0,a.jsx)(g.Ex,{variant:e.is_active?"success":"default",size:"sm",children:e.is_active?"Active":"Inactive"}),(0,a.jsxs)("span",{className:"sw-text-caption-muted",children:[S," rule",1!==S?"s":""]}),(0,a.jsx)("span",{className:"text-sw-caption text-sw-text-disabled",children:A>0?"used by ".concat(A," agent").concat(1!==A?"s":""):"not assigned to any agent"}),e.external_guardrail_id?(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-sw-caption text-sw-success-text",title:e.guardrail_version_id?"Enforced by SUPERWISE \xb7 version ".concat(e.guardrail_version_id):"Enforced by SUPERWISE","data-testid":"guardrail-superwise-state",children:[(0,a.jsx)(p.A,{size:11})," Enforced by SUPERWISE"]}):(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sw-caption","data-testid":"guardrail-superwise-state",children:[(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-sw-warning",title:"Not yet written through to SUPERWISE â push to AMP to create the platform mapping",children:[(0,a.jsx)(m.A,{size:11})," Sync pending"]}),u&&(0,a.jsx)("button",{type:"button",onClick:s=>{s.stopPropagation(),eE(e)},disabled:K===e.id,className:"text-sw-primary-text hover:underline disabled:opacity-50 disabled:no-underline font-medium",title:"Create this guardrail on SUPERWISE and link the mapping","data-testid":"guardrail-push-amp-".concat(e.id),children:K===e.id?"Pushingâ¦":"Push to AMP"})]}),e.swc_tag&&(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-sw-caption text-sw-text-muted",title:"SUPERWISE membership tag: ".concat(e.swc_tag),"data-testid":"guardrail-swc-tag",children:[(0,a.jsx)(L.A,{size:11})," ",e.swc_tag]})]})}),u&&(0,a.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[em!==e.id&&(0,a.jsx)("button",{onClick:s=>{s.stopPropagation(),(e=>{ef(e.name),eh(e.id)})(e)},className:"p-1.5 text-sw-text-disabled hover:text-sw-text transition-colors rounded-sw-sm",title:"Rename guardrail pack","aria-label":"Rename guardrail pack ".concat(e.name),children:(0,a.jsx)(W.A,{size:13})}),(0,a.jsx)(T.d,{checked:e.is_active,onCheckedChange:s=>{var t;null==s||null==(t=s.stopPropagation)||t.call(s),(e=>{if(e.is_active)return Z(e);eF(e)})(e)},"aria-label":e.is_active?"Deactivate ".concat(e.name):"Activate ".concat(e.name),onClick:e=>e.stopPropagation()}),(0,a.jsx)("button",{onClick:s=>{s.stopPropagation(),U(e)},className:"p-1.5 text-sw-text-disabled hover:text-sw-error transition-colors rounded-sw-sm",title:"Delete guardrail pack","aria-label":"Delete guardrail pack ".concat(e.name),children:(0,a.jsx)(N.A,{size:13})})]})]}),y&&(0,a.jsx)("div",{className:"border-t border-sw-border-subtle px-4 pb-4 pt-3",children:j?(0,a.jsx)("div",{className:"flex justify-center py-6",children:(0,a.jsx)(g.y$,{size:"sm"})}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsxs)("span",{className:"sw-text-caption-muted",children:[null!=(b=null==_||null==(i=_.rules)?void 0:i.length)?b:0," protection"," ",(null==_||null==(l=_.rules)?void 0:l.length)===1?"rule":"rules"]}),u&&eo!==e.id&&(0,a.jsxs)(h.$,{variant:"primary",size:"sm",onClick:()=>ec(e.id),children:[(0,a.jsx)(n.A,{size:12})," Add Rule"]})]}),eo===e.id&&(0,a.jsx)(ex,{guardrailId:e.id,onAdded:()=>{ec(null),eN(e.id)},onCancel:()=>ec(null),onError:ew,onRefresh:()=>eN(e.id)}),(null!=(v=null==_||null==(r=_.rules)?void 0:r.length)?v:0)===0&&eo!==e.id?(0,a.jsxs)("div",{className:"rounded-sw-md border border-dashed border-sw-border p-6 text-center",children:[(0,a.jsx)("p",{className:"text-sw-body text-sw-text-muted",children:"No protection rules defined."}),u&&(0,a.jsx)("p",{className:"text-sw-caption text-sw-text-disabled mt-1",children:'Click "Add Rule" to configure content safety, PII detection, and more.'})]}):(0,a.jsx)("div",{className:"space-y-2",children:null==_||null==(d=_.rules)?void 0:d.map(s=>(0,a.jsx)(ep,{rule:s,guardrailId:e.id,canEdit:u,onUpdated:()=>eN(e.id),onError:ew},s.id))})]})})]},e.id)})})]})}),(0,a.jsx)(z.T,{open:!!R,title:"Delete Guardrail",description:'Are you sure you want to delete "'.concat(null!=(s=null==R?void 0:R.name)?s:"",'"? All rules within this guardrail will be removed. This action cannot be undone.'),confirmLabel:"Delete",variant:"destructive",onConfirm:()=>{R&&(eU(R),U(null))},onCancel:()=>U(null)}),(0,a.jsx)(z.T,{open:!!X,title:"Disable Guardrail",description:(()=>{var e,s;
1let t=null!=(e=null==X?void 0:X.agent_count)?e:0,a=t>0?"".concat(t," agent").concat(1!==t?"s":""," currently ").concat(1!==t?"use":"uses"," it"):"no agents currently use it, but any that add it later will not be protected";return'Disable "'.concat(null!=(s=null==X?void 0:X.name)?s:"",'"? Messages will stop being checked against it until you re-enable it â ').concat(a,".")})(),confirmLabel:"Disable",variant:"primary",onConfirm:()=>{X&&(eF(X),Z(null))},onCancel:()=>Z(null)}),(0,a.jsx)(er,{open:V,onClose:()=>Y(!1),onCreated:eP,onQuotaDenied:eI})]})};var eg=t(15870),ef=t(89715),eb=t(47937),ev=t(52799),ew=t(79297),ey=t(59055);let ej={professional:"Maintain a professional tone.",casual:"Maintain a casual, conversational tone.",technical:"Maintain a precise, technical tone.",friendly:"Maintain a warm, friendly tone.",expert:"Maintain an authoritative, expert tone."},eN={concise:"Keep responses concise.",detailed:"Give detailed responses.",comprehensive:"Give comprehensive, thorough responses."},e_=e=>{let{label:s,controlId:t,hint:i,children:l}=e;return(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{htmlFor:t,className:"block text-sw-caption font-medium text-sw-text-muted uppercase tracking-wide",children:s}),l,i&&(0,a.jsx)("p",{className:"sw-text-caption-muted mt-0.5",children:i})]})},ek=e=>{let{icon:s,title:t,value:i}=e;return(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 rounded-sw-md bg-sw-surface-raised border border-sw-border",children:[(0,a.jsx)("div",{className:"mt-0.5 text-sw-text-muted shrink-0",children:s}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"text-sw-caption font-medium text-sw-text-muted uppercase tracking-wide",children:t}),(0,a.jsx)("div",{className:"sw-text-body-default mt-0.5",children:i})]})]})},eS=e=>{var s,t,l,r,n,d,o,c,m,x,f,y,j,N,C,z,E,P,I,D,R;let{mode:U,agent:F,onSaved:G,onCancel:M,onQuotaDenied:L,onEditRequest:W,initialValues:$}=e,{showToast:q}=(0,b.d)(),{isPlatformAdmin:H,isPlatformTenantAdmin:O}=(0,B.S)(),J="create"===U,Q="view"===U,V=(null==F?void 0:F.is_locked)===!0&&(null==F?void 0:F.is_default)===!0&&(H||O)&&!Q,Y=(0,i.useId)(),X=(0,i.useId)(),Z=(0,i.useId)(),[ee,es]=(0,i.useState)(null!=(r=null!=(l=null==F?void 0:F.name)?l:null==$?void 0:$.name)?r:""),[et,ea]=(0,i.useState)(null!=(d=null!=(n=null==F?void 0:F.description)?n:null==$?void 0:$.description)?d:""),[ei,el]=(0,i.useState)(null!=(c=null==F?void 0:F.system_prompt)?c:function(e,s){var t;let a=(null!=e?e:"").trim();if(!s)return a;let i=[],l=s.tone?ej[s.tone]:void 0;l&&i.push(l);let r=s.response_length?eN[s.response_length]:void 0;r&&i.push(r);let n=null==(t=s.formatting_style)?void 0:t.trim();if(n&&i.push(n),0===i.length)return a;let d="Persona:\n".concat(i.map(e=>"- ".concat(e)).join("\n"));return a?"".concat(a,"\n\n").concat(d):d}(null!=(o=null==$?void 0:$.system_prompt)?o:"",null==$?void 0:$.persona)),[er,en]=(0,i.useState)(null!=(x=null!=(m=null==F?void 0:F.knowledge_collection_ids)?m:null==$?void 0:$.knowledge_collection_ids)?x:[]),[ed,eo]=(0,i.useState)(null!=(y=null!=(f=null==F?void 0:F.allowed_tools)?f:null==$?void 0:$.allowed_tools)?y:[]),[ec,eu]=(0,i.useState)(null!=(N=null!=(j=null==F?void 0:F.block_guardrails)?j:null==$?void 0:$.block_guardrails)&&N),[em,ep]=(0,i.useState)(null!=(C=null==F?void 0:F.guardrail_violation_message)?C:""),[ex,eh]=(0,i.useState)(null!=(E=null!=(z=null==F?void 0:F.guardrail_pack_id)?z:null==$?void 0:$.guardrail_pack_id)?E:""),[eS,eC]=(0,i.useState)([]),[eA,ez]=(0,i.useState)(null!=(P=null==F?void 0:F.model_name)?P:"gpt-oss-120b"),[eE,eP]=(0,i.useState)(!1),[eI,eD]=(0,i.useState)(!1),[eR,eU]=(0,i.useState)("");(0,i.useEffect)(()=>{(0,v.listGuardrails)().then(e=>{var s;return eC((null!=(s=e.items)?s:[]).map(e=>({id:e.id,name:e.name,guardrail_version_id:e.guardrail_version_id})))}).catch(()=>{}),(0,v.listAvailableModels)().then(e=>{let s=e.providers.find(e=>"superwise_platform"===e.provider),t=null==s?void 0:s.models[0];t&&ez(t.name||t.id)}).catch(()=>{})},[]);let eF=async e=>{if(F&&!F.is_locked){eu(e),eD(!0);try{await (0,v.updateAssistant)(F.id,{block_guardrails:e})}catch(s){eu(!e),q(s instanceof Error?s.message:"Failed to save guardrail setting","error")}finally{eD(!1)}}},eG=async()=>
1{if(!ee.trim())return void eU("Name is required");eP(!0);try{let s;if(V)s=await (0,v.updateAssistant)(F.id,{system_prompt:ei.trim()||void 0});else{var e;let t={name:ee.trim(),description:et.trim()||void 0,model_provider:"superwise_platform",model_name:null!=(e=null==F?void 0:F.model_name)?e:"gpt-oss-120b",system_prompt:ei.trim()||void 0,knowledge_collection_ids:er.length>0?er:[],allowed_tools:ed.length>0?ed:[],guardrail_pack_id:ex||null,guardrail_violation_message:em.trim()||null};s=J?await (0,v.createAssistant)(t):await (0,v.updateAssistant)(F.id,t)}s.superwise_push_failed&&q("Saved locally â Superwise sync failed. Changes will retry on next sync.","warning"),s.superwise_verification_pending&&q("string"==typeof s.message?s.message:"Assistant created. SUPERWISE verification is still pending.","warning"),G(s)}catch(e){if((0,v.isQuotaError)(e)&&L)return void L(e.message);q(e instanceof Error?e.message:"Failed to save assistant","error")}finally{eP(!1)}};return(0,a.jsxs)("div",{className:"max-w-3xl mx-auto p-6 pb-16 space-y-5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-2",children:[(0,a.jsxs)("div",{className:"w-10 h-10 rounded-sw-lg bg-gradient-to-br from-sw-primary to-sw-primary-hover flex items-center justify-center shadow-sw-md",children:[(0,a.jsx)(u.A,{size:20,className:"text-white"})," "]}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h3",{className:"text-sw-body font-semibold text-sw-text",children:J?"Create Assistant":Q?null!=(I=null==F?void 0:F.name)?I:"Assistant":"Configure Assistant"}),(null==F?void 0:F.is_locked)&&(0,a.jsx)(ev.E,{variant:"outline",size:"sm",icon:(0,a.jsx)(K.A,{size:10}),children:V?"Locked â System Prompt editable by Platform Admin":"Locked â metadata only"})]}),(0,a.jsx)("div",{className:"flex items-center gap-2",children:Q?(0,a.jsxs)(h.$,{variant:"secondary",size:"sm",onClick:()=>null==W?void 0:W(),"aria-label":"Configure assistant",children:[(0,a.jsx)(eg.A,{size:14})," Configure"]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(h.$,{variant:"ghost",size:"sm",onClick:M,"aria-label":"Cancel",children:[(0,a.jsx)(w.A,{size:14})," Cancel"]}),(0,a.jsxs)(h.$,{variant:"primary",size:"sm",onClick:eG,disabled:eE||(null==F?void 0:F.is_locked)===!0&&!V,"aria-label":"Save assistant",children:[eE?(0,a.jsx)(g.y$,{size:"sm"}):(0,a.jsx)(_.A,{size:14}),J?"Create":"Save"]})]})})]}),Q&&(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,a.jsx)(ek,{icon:(0,a.jsx)(ef.A,{size:14}),title:"System Prompt",value:ei?(0,a.jsx)("span",{className:"font-mono text-sw-caption line-clamp-3",children:ei}):(0,a.jsx)("span",{className:"text-sw-text-muted italic text-sw-caption",children:"None"})}),(0,a.jsx)(ek,{icon:(0,a.jsx)(eb.A,{size:14}),title:"Knowledge Collections",value:er.length>0?(0,a.jsxs)("span",{className:"text-sw-caption",children:[er.length," collection",1!==er.length?"s":""," linked"]}):(0,a.jsx)("span",{className:"text-sw-text-muted italic text-sw-caption",children:"None linked"})}),(0,a.jsx)(ek,{icon:(0,a.jsx)(p.A,{size:14}),title:"Guardrails",value:ex?(0,a.jsx)("span",{className:"text-sw-caption",children:null!=(D=null==(s=eS.find(e=>e.id===ex))?void 0:s.name)?D:"Pack assigned"}):(0,a.jsx)("span",{className:"text-sw-text-muted italic text-sw-caption",children:"No pack assigned"})})]}),(0,a.jsx)(ew.i,{title:"Details",icon:(0,a.jsx)(u.A,{size:14,className:"text-sw-primary-text"}),children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)(e_,{label:"Name",controlId:Y,children:[(0,a.jsx)(k.p,{id:Y,value:ee,onChange:e=>{es(e.target.value),e.target.value.trim()&&eU("")},onBlur:()=>{ee.trim()||eU("Name is required")},placeholder:"e.g. Customer Support Agent",disabled:(null==F?void 0:F.is_locked)||Q}),eR&&(0,a.jsx)("p",{className:"mt-1 text-sw-caption text-sw-error",children:eR})]}),(0,a.jsx)(e_,{label:"Description",controlId:X,children:(0,a.jsx)(S.T,{id:X,value:et,onChange:e=>ea(e.target.value),placeholder:"Briefly describe what this assistant doesâ¦",rows:2,textareaSize:"sm",disabled:(null==F?void 0:F.is_locked)||Q})})]})}),!Q&&(0,a.jsx)(ew.i,{title:"System Prompt",icon:(0,a.jsx)(ef.A,{size:14,className:"text-sw-text-muted"}),children:(0,a.jsx)(S.T,{value:ei,onChange:e=>el(e.target.value),rows:6,className:"font-mono text-sw-caption",placeholder:"Optional system prompt prepended to all conversationsâ¦",disabled:(null==F?void 0:F.is_locked)&&!V})}),!Q&&!(null==F?void 0:F.is_locked)&&(0,a.jsx)(ew.i,{title:"Model",icon:(0,a.jsx)(u.A,{size:14,className:"text-sw-text-muted"}),children:(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)(e_,{label:"Provider",hint:"Assistants run on the SUPERWISE Platform. This is managed centrally and cannot be changed.",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 sw-text-body-default","data-testid":"assistant-provider-locked",children:[(0,a.jsx)(K.A,{size:12,className:"text-sw-text-muted shrink-0"}
1),"SUPERWISE Platform"]})}),(0,a.jsx)(e_,{label:"Model",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 sw-text-body-default","data-testid":"assistant-model-locked",children:[(0,a.jsx)(K.A,{size:12,className:"text-sw-text-muted shrink-0"}),eA]})})]})}),!Q&&(0,a.jsx)(ew.i,{title:"Knowledge Collections",icon:(0,a.jsx)(eb.A,{size:14,className:"text-sw-success-text"}),children:(0,a.jsx)(ey.x,{value:er,onChange:en,disabled:null==F?void 0:F.is_locked})}),!Q&&!(null==F?void 0:F.is_locked)&&eS.length>0&&(0,a.jsx)(ew.i,{title:"Guardrails",icon:(0,a.jsx)(p.A,{size:14,className:"text-sw-success-text"}),children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(e_,{label:"Guardrail pack",children:(0,a.jsxs)(A.H5,{value:ex||"__none__",onValueChange:e=>eh("__none__"===e?"":e),children:[(0,a.jsx)(A.bq,{className:"w-full text-sw-body",children:(0,a.jsx)(A.yv,{})}),(0,a.jsxs)(A.gC,{children:[(0,a.jsx)(A.eb,{value:"__none__",children:"No guardrail pack"}),eS.map(e=>(0,a.jsx)(A.eb,{value:e.id,children:e.name},e.id))]})]})}),!J&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e_,{label:"Active versions (from SUPERWISE sync)",children:(null!=(R=null==F||null==(t=F.guardrail_version_ids)?void 0:t.length)?R:0)===0?(0,a.jsx)("p",{className:"text-sw-caption text-sw-text-disabled italic",children:"No versions assigned. Run SUPERWISE sync to pull the latest from the platform."}):(0,a.jsx)("ul",{className:"space-y-3",children:F.guardrail_version_ids.map(e=>{let s=eS.find(s=>s.guardrail_version_id===e),t=e.length>20?"".concat(e.slice(0,8),"â¦").concat(e.slice(-8)):e;return(0,a.jsx)("li",{className:"rounded-sw-md border border-sw-border bg-sw-surface-raised p-3",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 rounded-sw-full bg-sw-success shrink-0"}),(null==s?void 0:s.name)?(0,a.jsx)("span",{className:"text-sw-caption font-medium text-sw-text",children:s.name}):(0,a.jsx)("span",{className:"text-sw-caption text-sw-text-muted font-mono",children:t})]})},e)})})}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sw-caption font-medium text-sw-text",children:"Block on guardrail failure"}),(0,a.jsx)("p",{className:"sw-text-caption-muted mt-0.5",children:"When enabled, responses blocked by an unavailable guardrail are suppressed (fail-closed). When disabled, the assistant responds anyway (fail-open)."})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[eI&&(0,a.jsx)(g.y$,{size:"sm"}),(0,a.jsx)(T.d,{checked:ec,onCheckedChange:eF,disabled:eI,"aria-label":"Block on guardrail failure"})]})]}),(0,a.jsx)(e_,{label:"Custom violation message",controlId:Z,hint:"Shown to the user when a guardrail blocks a response.",children:(0,a.jsx)(S.T,{id:Z,value:em,onChange:e=>ep(e.target.value),rows:2,textareaSize:"sm",placeholder:"Defaults to platform apology message when left blank."})})]})]})})]})};var eC=t(23838),eA=t(72289),ez=t(74860);let eE={professional:"from-blue-500 to-indigo-500",casual:"from-emerald-500 to-green-500",technical:"from-violet-500 to-purple-500",empathetic:"from-rose-500 to-pink-500",concise:"from-slate-500 to-gray-500",creative:"from-amber-500 to-orange-500"};function eP(e){var s,t,a,i,l,r,n,d,o,c,u;let m=null!=(s=e.archived_at)?s:null;return{id:null!=(t=e.assistant_id)?t:e.id,name:e.name,description:null!=(a=e.description)?a:"",model_name:e.model_name,status:m?"archived":e.is_published?"active":"inactive",is_locked:e.is_locked,is_system:e.is_system,is_default:null!=(i=e.is_default)&&i,type:e.type,is_published:e.is_published,external_agent_id:e.external_agent_id,guardrail_pack_id:null!=(l=e.guardrail_pack_id)?l:null,block_guardrails:null!=(r=e.block_guardrails)&&r,guardrail_violation_message:null!=(n=e.guardrail_violation_message)?n:null,capability_profile:{agent_tags:[],guardrail_profile:null!=(d=e.guardrail_pack_id)?d:"standard",model_overrides:{},system_prompt:e.system_prompt,knowledge_collection_ids:null!=(o=e.knowledge_collection_ids)?o:[],tools:(null!=(c=e.allowed_tools)?c:[]).map(e=>({name:e,type:"function",enabled:!0}))},routing:{group:"default",priority:0},created_at:e.created_at,updated_at:e.updated_at,superwise_synced_at:null!=(u=e.superwise_synced_at)?u:null,archived_at:m}}let eI=e=>{let{onClick:s}=e;return(0,a.jsx)("div",{className:"px-6 pt-4",children:(0,a.jsxs)("button",{type:"button",onClick:s,className:"flex items-center gap-1.5 mb-1 sw-text-caption-muted hover:text-sw-text transition-colors",children:[(0,a.jsx)(l.A,{size:13}),"Back to Assistants"]})})},eD=e=>{var s,t;let{initialAssistants:l,selectedAgentId:w,selectedAgentType:y,onAgentCreated:j,onSelectionReset:N,onGuardrailCreated:_,onGuardrailDeleted:k,onPersonaCreated:S,onPersonaDeleted:C,onAgentUpdated:A,onGuardrailUpdated:z}=e,{showToast:E}=(0,b.d)(),{enablePersonas:P}=(0,eA.h)(),[I,D]=(0,i.useState)("agents"),[R,F]=(0,i.useState)(()=>l?l.map(eP):[]),[G,M]=(0,i.useState)(null),[L,W]=(0,i.useState)(null),[$,T]=(0,i.useState)("list"),B=(0,en.d3)("assistants"),q="assistants-limit-reason",[H,K]=(0,i.useState)(null),O=!B.atLimit||H||B.isUnlimited?H:"Assistant limit reached. Deactivate another assistant or upgrade before creating or activating assistants.",J=(0,i.useCallback)(()=>{null==N||N()},[N]),[Q,V]=(0,i.useState)(0),[Y,X]=(0,i.useState)(!1),[Z,ee]=(0,i.useState)(!1),es=(0,i.useRef)(!1),[et,ea]=(0,i.useState)([]),[ei,el]=(0,i.useState)(!1),[er,eo]=(0,i.useState)([]),[ec,eu]=(0,i.useState)(void 0),[em,ep]=(0,i.useState)(!1),[ex,eg]=(0,i.useState)(null),ef=(0,i.useCallback)(async()=>{try{let e=await v.apiFetch("/v1/assistants").then(e=>e.json()),s=(e.assistants||[]).map(eP);F(s);let t="boolean"==typeof e.superwise_configured?e.superwise_configured:null;if(null!==t&&M(t),0===s.length&&!0===t&&!es.current){es.current=!0,X(!0);try{await v.syncSuperwiseAssistants();let e=await v.apiFetch("/v1/assistants").then(e=>e.json());F((e.assistants||[]).map(eP))}catch(e){}finally{X(!1)}}}catch(e){E(e instanceof Error?e.message:"Failed to load agents","error")}},[E]);(0,i.useEffect)(()=>
1{if(!l||0===l.length)return void ef()},[l,ef]),(0,i.useEffect)(()=>{w&&y&&("persona"!==y||P)&&(D({assistant:"agents",persona:"personas",guardrail:"guardrails"}[y]),w.startsWith("new")?"persona"===y?eu(null):"guardrail"===y?V(e=>e+1):(W(null),T("create")):"assistant"===y?(T("view"),ep(!0),v.getAssistant(w).then(e=>{let s=eP(e);W(s),F(e=>e.map(e=>e.id===s.id?s:e))}).catch(e=>{let s=e instanceof Error?e.message:"";if(s.includes("404")||s.includes("Not Found"))F(e=>e.filter(e=>e.id!==w)),W(null),T("list"),E("Assistant not found â it may have been deleted.","error");else{let e=R.find(e=>e.id===w);e?W(e):T("list")}}).finally(()=>ep(!1))):"persona"===y&&eu(w))},[w,y]);let eb=(0,i.useCallback)(async()=>{el(!0);try{let e=await v.getPersonas();ea(e)}catch(e){E(e instanceof Error?e.message:"Failed to load personas","error")}finally{el(!1)}},[E]);(0,i.useEffect)(()=>{eb()},[I,eb]),(0,i.useEffect)(()=>{v.listGuardrails().then(e=>{var s;return eo(null!=(s=e.items)?s:[])}).catch(()=>{})},[]);let ev=(0,i.useCallback)(async()=>{X(!0);try{let e=await v.syncSuperwiseAssistants();await ef(),null==A||A(),e.errors&&e.errors.length>0&&E("Sync completed with errors: ".concat(e.errors[0]),"error")}catch(e){E(e instanceof Error?e.message:"Failed to sync with SUPERWISE platform","error"),await ef(),null==A||A()}finally{X(!1)}},[ef,E,A]),ew=()=>{W(null),T("create")},ey=async e=>{let s={...e,status:"active",is_published:!0};F(t=>t.map(t=>t.id===e.id?s:t)),W(s);try{let s=await v.activateAssistant(e.id),t=eP(s);F(e=>e.map(e=>e.id===t.id?t:e)),W(t),E("Assistant activated","success"),null==A||A()}catch(s){if(F(s=>s.map(s=>s.id===e.id?e:s)),W(e),v.isQuotaError(s)){K("Assistant limit reached. Deactivate another assistant or upgrade before activating this assistant."),T("list"),(0,en.UR)();return}E(s instanceof Error?s.message:"Failed to activate assistant","error")}},ej=async e=>{let s={...e,status:"inactive",is_published:!1};F(t=>t.map(t=>t.id===e.id?s:t)),W(s);try{let s=await v.deactivateAssistant(e.id),t=eP(s);F(e=>e.map(e=>e.id===t.id?t:e)),W(t),E("Assistant deactivated","success"),null==A||A()}catch(s){F(s=>s.map(s=>s.id===e.id?e:s)),W(e),E(s instanceof Error?s.message:"Failed to deactivate assistant","error")}},eN=async e=>{F(s=>s.map(s=>({...s,is_default:s.id===e.id}))),W(s=>s&&s.id===e.id?{...s,is_default:!0}:s);try{let s=await v.setDefaultAssistant(e.id),t=eP(s);F(e=>e.map(e=>e.id===t.id?t:{...e,is_default:!1})),W(e=>e&&e.id===t.id?t:e),E("Default assistant updated","success"),null==A||A()}catch(e){F(R),W(L),E(e instanceof Error?e.message:"Failed to set default assistant","error")}};return(0,a.jsx)("div",{className:"flex flex-col h-full bg-sw-background pb-14 sm:pb-0",role:"region","aria-label":"Assistant and persona management",children:(0,a.jsxs)(eC.tU,{value:I,className:"flex flex-col flex-1 overflow-hidden",children:[(0,a.jsx)(eC.av,{value:"guardrails",className:"mt-0 flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(eh,{requestCreate:Q,onGuardrailCreated:_,onGuardrailDeleted:k,onGuardrailUpdated:z,selectedGuardrailId:"guardrail"!==y||(null==w?void 0:w.startsWith("new"))?null:w})}),P&&(0,a.jsx)(eC.av,{value:"personas",className:"mt-0 flex-1 overflow-hidden",children:void 0!==ec?(0,a.jsx)(U,{personaId:null!=ec?ec:void 0,onClose:()=>{eu(void 0),J()},onSaved:()=>{eu(void 0),J(),eb()},onCreated:S,onDeleted:C}):(0,a.jsx)(g.Px,{title:"Personas",subtitle:"Conversation styles, tones, and system behaviors",icon:(0,a.jsx)(r.A,{size:18,className:"text-sw-primary-text"}),actions:(0,a.jsxs)(h.$,{variant:"primary",size:"sm",onClick:()=>eu(null),children:[(0,a.jsx)(n.A,{size:14}),"New Persona"]}),stats:[{label:"personas",value:et.length},{label:"published",value:et.filter(e=>e.is_published).length,colorClass:"text-sw-success"},{label:"public",value:et.filter(e=>"public"===e.visibility).length,colorClass:"text-sw-info"}],isLoading:ei,emptyState:(0,a.jsx)(g.pp,{icon:r.A,title:"No personas yet",description:"Create a persona to customize assistant behavior.",ctaLabel:"Create Persona",onCtaClick:()=>eu(null)}),children:et.map(e=>{let s=eE[e.tone]||eE.professional;return(0,a.jsx)(g.zU,{gradient:s,avatarIcon:(0,a.jsx)("span",{className:"text-sw-body font-bold",children:e.name.charAt(0).toUpperCase()}),title:e.name,subtitle:e.purpose,badges:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(g.Ex,{variant:"default",size:"sm",className:"capitalize",children:e.tone}),(0,a.jsx)(g.Ex,{variant:"public"===e.visibility?"success":"default",size:"sm",className:"capitalize",children:e.visibility}),e.is_published&&(0,a.jsx)(g.Ex,{variant:"info",size:"sm",children:"Published"})]}),onClick:()=>eu(e.persona_id)},e.persona_id)})})}),(0,a.jsx)(eC.av,{value:"agents",className:"mt-0 flex-1 overflow-hidden",children:"create"===$?(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto h-full",role:"region","aria-label":"New agent",children:[(0,a.jsx)(eI,{onClick:()=>{T("list"),eg(null),J()}}),(0,a.jsx)(eS,{mode:"create",agent:null,initialValues:null!=ex?ex:void 0,onSaved:e=>{let s=eP(e),t=null!==ex;F(e=>[...e,s]),W(s),T("view"),eg(null),K(null),(0,en.UR)(),null==j||j(s.id),t&&!s.is_published&&ey(s)},onQuotaDenied:e=>{K(e),T("list"),eg(null),J(),(0,en.UR)()},onCancel:()=>{T("list"),eg(null),J()}})]}):"edit"===$&&L?(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto h-full",role:"region","aria-label":"Edit agent",children:[(0,a.jsx)(eI,{onClick:()=>{T("list"),J()}}),(0,a.jsx)(eS,{mode:"edit",agent:{id:L.id,name:L.name,description:L.description,model_name:L.model_name,system_prompt:L.capability_profile.system_prompt,knowledge_collection_ids:L.capability_profile.knowledge_collection_ids,is_locked:L.is_locked,type:L.type,is_default:L.is_default,allowed_tools:null==(s=L.capability_profile.tools)?void 0:s.filter(e=>e.enabled).map(e=>e.name),guardrail_pack_id:L.guardrail_pack_id,block_guardrails:L.block_guardrails,guardrail_violation_message:L.guardrail_violation_message},onSaved:e=>{let s=eP(e);F(e=>e.map(e=>e.id===s.id?s:e)),W(s),T("view"),null==A||A()},onCancel:()=>{T("view"),J()}},L.id)]}):"view"===$&&L?(0,a.jsxs)("div",{className:"flex flex-col flex-1 overflow-hidden h-full",role:"region","aria-label":"Agent configuration",children:[!em&&(0,a.jsx)(eI,{onClick:()=>{T("list"),J()}}),!em&&(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-sw-border bg-sw-surface shrink-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[!L.is_locked&&(0,a.jsx)(g.Ex,{variant:"active"===L.status?"success":"default",size:"sm",children:"active"===L.status?"Active":"Inactive"}),L.is_default&&(0,a.jsx)("span",{"data-testid":"default-assistant-badge",children:(0,a.jsx)(g.Ex,{variant:"info",size:"sm",icon:(0,a.jsx)(d.A,{size:12}),children:"Default"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[!L.is_default&&(0,a.jsxs)(h.$,{variant:"secondary",size:"sm",onClick:()=>eN(L),disabled:"active"!==L.status,title:"active"!==L.status?"Publish (activate) the assistant before setting it as the default":void 0,"aria-label":"Set as default assistant",testId:"set-default-assistant-button",children:[(0,a.jsx)(d.A,{size:14})," Set as default"]}),!L.is_locked&&("active"===L.status?(0,a.jsxs)(h.$,{variant:"secondary",size:"sm",onClick:()=>ej(L),"aria-label":"Deactivate assistant",children:[(0,a.jsx)(o,{size:14})," Deactivate"]}):(0,a.jsxs)(h.$,{variant:"primary",size:"sm",onClick:()=>ey(L),"aria-label":"Activate assistant",children:[(0,a.jsx)(c.A,{size:14})," Activate"]}))]})]}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",children:em?(0,a.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,a.jsx)(g.y$,{size:"md"})}):(0,a.jsx)(eS,{mode:"view",agent:{id:L.id,name:L.name,description:L.description,model_name:L.model_name,system_prompt:L.capability_profile.system_prompt,knowledge_collection_ids:L.capability_profile.knowledge_collection_ids,is_locked:L.is_locked,type:L.type,is_default:L.is_default,allowed_tools:null==(t=L.capability_profile.tools)?void 0:t.filter(e=>e.enabled).map(e=>e.name),guardrail_pack_id:L.guardrail_pack_id,block_guardrails:L.block_guardrails,guardrail_violation_message:L.guardrail_violation_message},onSaved:e=>{let s=eP(e);F(e=>e.map(e=>e.id===s.id?s:e)),W(s),null==A||A()},onCancel:()=>T("list"),onEditRequest:()=>T("edit")},L.id)})]}):(()=>{let e=R.filter(e=>"archived"!==e.status),s=R.filter(e=>"archived"===e.status),t=e.filter(e=>!(0,ez.rk)(e)),i=Z?e:e.filter(ez.rk),l=(()=>
1{if(!1===G)return"SUPERWISE platform not configured â using local assistants only";let e=R.map(e=>e.superwise_synced_at).filter(e=>!!e).sort(),s=e.length>0?e[e.length-1]:null;return s?"Last synced with SUPERWISE: ".concat(new Date(s).toLocaleDateString()):"Not yet synced with SUPERWISE"})();return(0,a.jsx)("div",{className:"flex-1 overflow-y-auto h-full",children:(0,a.jsxs)("div",{className:"max-w-5xl mx-auto p-6 pb-12",children:[(0,a.jsx)(f.G,{title:"Assistants",subtitle:l,icon:(0,a.jsx)(u.A,{size:20,className:"text-sw-primary-text"}),actions:(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[!1!==G&&(0,a.jsx)(h.$,{variant:"ghost",size:"sm",iconOnly:!0,onClick:ev,disabled:Y,title:"Sync assistants from SUPERWISE","aria-label":"Sync assistants from SUPERWISE","data-testid":"sync-superwise-button",children:(0,a.jsx)(m.A,{size:14,className:Y?"animate-spin":""})}),(0,a.jsxs)(h.$,{variant:"primary",size:"sm","data-testid":"assistants-header-new-button",...(0,ed.hW)(B,q,ew),children:[(0,a.jsx)(n.A,{size:14})," New Assistant"]})]}),className:"mb-4"}),(0,a.jsx)(ed.Az,{usage:B,id:q,serverMessage:O,onDismiss:H?()=>K(null):void 0,className:"mb-4",testId:"assistants-limit-notice"}),(i.length>0||t.length>0)&&(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-5",children:[(0,a.jsxs)("span",{className:"sw-text-caption-muted",children:[i.length," assistant",1!==i.length?"s":""," ","configured"]}),(0,a.jsxs)("span",{className:"text-sw-caption text-sw-success-text",children:[i.filter(e=>"active"===e.status).length," active"]}),t.length>0&&(0,a.jsx)("button",{type:"button",onClick:()=>ee(e=>!e),"aria-pressed":Z,"data-testid":"assistants-show-inactive-toggle",className:"text-sw-caption text-sw-text-muted underline underline-offset-2 hover:text-sw-text",children:Z?"Hide ".concat(t.length," inactive"):"Show ".concat(t.length," inactive")})]}),0===i.length?(0,a.jsx)(g.pp,{icon:u.A,title:"Manage your AI Assistants",description:"Create and manage Assistants for your organization. Configure system prompts, attach Knowledge Collections and Guardrails, and designate a default Assistant.",ctaLabel:B.atLimit?void 0:"New Assistant",onCtaClick:B.atLimit?void 0:ew,testId:"assistants-empty"}):(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:i.map(e=>{var s,t,i;let l=e.guardrail_pack_id?null==(s=er.find(s=>s.id===e.guardrail_pack_id))?void 0:s.name:null,r=null!=(i=null==(t=e.capability_profile.knowledge_collection_ids)?void 0:t.length)?i:0;return(0,a.jsxs)("button",{type:"button",onClick:()=>{W(e),T("view")},className:"group text-left rounded-sw-lg border border-sw-border bg-sw-surface-elevated hover:border-sw-primary/50 sw-interactive-hover overflow-hidden",children:[(0,a.jsxs)("div",{className:"px-4 pt-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(u.A,{size:16,className:"text-sw-primary-text shrink-0"}),(0,a.jsx)("p",{className:"font-semibold text-sw-text truncate",children:e.name})]}),(0,a.jsx)("p",{className:"text-sw-body text-sw-text-muted mt-1.5 line-clamp-2",children:e.capability_profile.system_prompt||e.description||"No system prompt configured"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap px-4 pt-2.5 pb-4",children:[(0,a.jsx)(g.Ex,{variant:"active"===e.status?"success":"default",size:"sm",children:"active"===e.status?"Active":"Inactive"}),e.is_default&&(0,a.jsx)(g.Ex,{variant:"info",size:"sm",icon:(0,a.jsx)(d.A,{size:10}),children:"Default"}),(0,a.jsxs)(g.Ex,{variant:"outline",size:"sm",children:[r," Knowledge ",1===r?"Collection":"Collections"]}),l&&(0,a.jsx)(g.Ex,{variant:"outline",size:"sm",icon:(0,a.jsx)(p.A,{size:10}),children:l})]})]},e.id)})}),s.length>0&&(0,a.jsxs)("div",{className:"mt-6 w-full max-w-sm text-left","data-testid":"archived-assistants-section",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 mb-2 text-sw-caption font-medium text-sw-text-muted uppercase tracking-wide",children:[(0,a.jsx)(x.A,{size:12}),"Archived (",s.length,")"]}),(0,a.jsx)("ul",{className:"space-y-1.5",children:s.map(e=>(0,a.jsxs)("li",{className:"flex items-center justify-between gap-2 rounded-sw-md border border-sw-border bg-sw-surface-raised px-3 py-2",children:[(0,a.jsx)("span",{className:"min-w-0 truncate text-sw-caption text-sw-text-muted",children:e.name}),(0,a.jsx)(g.Ex,{variant:"default",size:"sm",children:"Archived"})]},e.id))})]})]})})})()})]})})}},15438:(e,s,t)=>{t.d(s,{A:()=>a});let a=(0,t(5121).A)("fingerprint-pattern",[["path",{d:"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4",key:"1nerag"}],["path",{d:"M14 13.12c0 2.38 0 6.38-1 8.88",key:"o46ks0"}],["path",{d:"M17.29 21.02c.12-.6.43-2.3.5-3.02",key:"ptglia"}],["path",{d:"M2 12a10 10 0 0 1 18-6",key:"ydlgp0"}],["path",{d:"M2 16h.01",key:"1gqxmh"}],["path",{d:"M21.8 16c.2-2 .131-5.354 0-6",key:"drycrb"}
1],["path",{d:"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2",key:"1tidbn"}],["path",{d:"M8.65 22c.21-.66.45-1.32.57-2",key:"13wd9y"}],["path",{d:"M9 6.8a6 6 0 0 1 9 5.2v2",key:"1fr1j5"}]])},39347:(e,s,t)=>{t.d(s,{A:()=>a});let a=(0,t(5121).A)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]])},45345:(e,s,t)=>{t.d(s,{A:()=>a});let a=(0,t(5121).A)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]])},59055:(e,s,t)=>{t.d(s,{x:()=>c});var a=t(95155),i=t(12115),l=t(85710),r=t(47937),n=t(18518),d=t(77979),o=t(94546);let c=e=>{let{value:s,onChange:t,disabled:c,items:u,disabledIds:m}=e,[p,x]=(0,i.useState)(null!=u?u:[]),[h,g]=(0,i.useState)(void 0===u),[f,b]=(0,i.useState)(null);return((0,i.useEffect)(()=>{if(void 0!==u){x(u),g(!1);return}let e=!1;return g(!0),(0,o.getKnowledgeCollections)().then(s=>{e||x(s)}).catch(()=>{e||b("Failed to load knowledge collections")}).finally(()=>{e||g(!1)}),()=>{e=!0}},[u]),h)?(0,a.jsxs)("div",{className:"flex items-center gap-2 py-3 text-sw-text-muted text-sw-body",children:[(0,a.jsx)(n.y$,{size:"sm"}),"Loading knowledge collectionsâ¦"]}):f?(0,a.jsx)("p",{className:"text-sw-body text-sw-error py-2",children:f}):0===p.length?(0,a.jsx)(n.pp,{icon:l.A,title:"No knowledge collections found",className:"py-4"}):(0,a.jsx)("div",{className:"space-y-1 max-h-48 overflow-y-auto pr-1",children:p.map(e=>{var i;let l=e.collection_id,n=s.includes(l),o=c||null!=(i=null==m?void 0:m.includes(l))&&i;return(0,a.jsxs)("button",{type:"button",disabled:o,onClick:()=>(e=>{c||(null==m?void 0:m.includes(e))||t(s.includes(e)?s.filter(s=>s!==e):[...s,e])})(l),"aria-pressed":n,title:(null==m?void 0:m.includes(l))?"Hidden from your Knowledge page â unhide it to link":void 0,className:(0,d.cn)("w-full flex items-center gap-3 px-3 py-2 rounded-sw-md border text-left transition-colors",n?"border-sw-primary/40 bg-sw-primary/5":"border-sw-border bg-sw-surface/50",o&&"opacity-50 cursor-not-allowed"),children:[(0,a.jsx)(r.A,{size:14,className:n?"text-sw-primary":"text-sw-text-muted"}),(0,a.jsx)("span",{className:"sw-text-body-default flex-1 truncate",children:e.name}),(null==m?void 0:m.includes(l))&&(0,a.jsx)("span",{className:"sw-text-caption-muted shrink-0",children:"Hidden"}),(0,a.jsx)("div",{className:(0,d.cn)("w-4 h-4 rounded-sw-sm border-2 flex items-center justify-center flex-shrink-0",n?"border-sw-primary bg-sw-primary":"border-sw-border"),children:n&&(0,a.jsx)("svg",{viewBox:"0 0 8 8",className:"w-2.5 h-2.5 text-white fill-current",children:(0,a.jsx)("path",{d:"M1 4l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]},l)})})}},78862:(e,s,t)=>{t.d(s,{A:()=>a});let a=(0,t(5121).A)("corner-up-left",[["path",{d:"M20 20v-7a4 4 0 0 0-4-4H4",key:"1nkjon"}],["path",{d:"M9 14 4 9l5-5",key:"102s5s"}]])}}]);
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.