1import{j as e,aW as W,bf as N,Q as v,bB as X,d_ as Y,b4 as $,ab as S,c7 as Q,X as R,bt as Z,dM as K,aG as ee,aH as se}from"./ui-vendor-CphGW0d_.js";import{r as g}from"./react-vendor-BOawO_dD.js";import{z as f,J as u,D as k,Y as ae,B as c,p as E,q as z,r as q,L as l,I as m,t as j,j as D,k as M,l as A,m as T,n as P,g as te}from"./index-Cn92Z84x.js";import"./data-vendor-CMH9r-4t.js";import"./react-ecosystem-BT3vmxzF.js";const b=[{value:"timer_speed",label:"Timer Speed Modifier",icon:X},{value:"avatar_shadow",label:"Shadow Avatar",icon:Y},{value:"bacoo_active",label:"Activate Bacoo",icon:$},{value:"hide_app",label:"Hide App",icon:S},{value:"xp_multiplier",label:"XP Multiplier",icon:N},{value:"unlock_npc",label:"Unlock NPC Content",icon:Q},{value:"filter_chats",label:"Filter Chat Messages",icon:S}];function de(){const[_,I]=g.useState([]),[F,B]=g.useState(!0),[n,i]=g.useState(null),[O,y]=g.useState(!1),[r,d]=g.useState({rule_name:"",description:"",condition_expression:"",effects:[],priority:1,maven_message_template:"",is_active:!0});g.useEffect(()=>{p()},[]);const p=async()=>{const{data:s,error:t}=await f.from("emotional_consequence_rules").select("*").order("priority",{ascending:!1});if(t){u.error("Failed to load rules");return}const a=(s||[]).map(o=>({...o,effects:typeof o.effects=="string"?JSON.parse(o.effects):o.effects||[]}));I(a),B(!1)},V=async()=>{const{error:s}=await f.from("emotional_consequence_rules").insert({rule_name:r.rule_name,description:r.description,condition_expression:r.condition_expression,effects:r.effects,priority:r.priority,maven_message_template:r.maven_message_template||null,is_active:!0});if(s){u.error("Failed to add rule");return}u.success("Rule created"),y(!1),d({rule_name:"",description:"",condition_expression:"",effects:[],priority:1,maven_message_template:"",is_active:!0}),p()},G=async s=>{const{error:t}=await f.from("emotional_consequence_rules").update({rule_name:s.rule_name,description:s.description,condition_expression:s.condition_expression,effects:s.effects,priority:s.priority,maven_message_template:s.maven_message_template,is_active:s.is_active}).eq("id",s.id);if(t){u.error("Failed to save");return}u.success("Rule updated"),i(null),p()},H=async s=>{confirm("Delete this rule?")&&(await f.from("emotional_consequence_rules").delete().eq("id",s),u.success("Rule deleted"),p())},J=async s=>{const{error:t}=await f.from("emotional_consequence_rules").update({is_active:!s.is_active}).eq("id",s.id);if(t){u.error("Failed to toggle");return}p()},C=(s,t)=>{const a=[...s.effects||[],{type:"timer_speed",value:.5}];t({...s,effects:a})},h=(s,t,a,o)=>{const x=[...s.effects||[]];x[a]={...x[a],...o},t({...s,effects:x})},w=(s,t,a)=>{const o=(s.effects||[]).filter((x,U)=>U!==a);t({...s,effects:o})},L=s=>b.find(a=>a.value===s)?.icon||N;return F?e.jsx("div",{className:"min-h-screen bg-gray-950 flex items-center justify-center",children:e.jsx(W,{className:"animate-spin text-muted-foreground",size:32})}):e.jsx("div",{className:"h-screen bg-gray-950 text-foreground overflow-y-auto",children:e.jsxs("div",{className:"max-w-6xl mx-auto space-y-6 p-6 pb-20",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-3 bg-gradient-to-br from-red-500 to-orange-500 rounded-xl",children:e.jsx(N,{size:24,className:"text-foreground"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-foreground",children:"Consequence Rules"}),e.jsxs("p",{className:"text-muted-foreground",children:[_.length," rules configured"]})]})]}),e.jsxs(k,{open:O,onOpenChange:y,children:[e.jsx(ae,{asChild:!0,children:e.jsxs(c,{children:[e.jsx(v,{size:16,className:"mr-2"}),"Add Rule"]})}),e.jsxs(E,{className:"bg-background border-border max-w-lg max-h-[90vh] overflow-y-auto",children:[e.jsx(z,{children:e.jsx(q,{className:"text-foreground",children:"Create Consequence Rule"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Rule Name (unique)"}),e.jsx(m,{value:r.rule_name||"",onChange:s=>d({...r,rule_name:s.target.value}),placeholder:"e.g., shadow_avatar_low_purpose",className:"bg-muted border-border text-foreground"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Description"}),e.jsx(j,{value:r.description||"",onChange:s=>d({...r,description:s.target.value}),placeholder:"What this rule does...",className:"bg-muted border-border text-foreground",rows:2})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Condition Expression"}),e.jsx(m,{value:r.condition_expression||"",onChange:s=>d({...r,condition_expression:s.target.value}),placeholder:"e.g., sense_of_purpose < 5",className:"bg-muted border-border text-foreground font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Use: excitability, social_status, core_values_score, sense_of_purpose"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Priority (higher = evaluated first)"}),e.jsx(m,{type:"number",value:r.priority||1,onChange:s=>d({...r,priority:parseInt(s.target.value)}),className:"bg-muted border-border text-foreground"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(l,{className:"text-muted-foreground",children:"Effects"}),e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>C(r,d),children:[e.jsx(v,{size:12,className:"mr-1"}),"Add Effect"]})]}),e.jsx("div",{className:"space-y-2",children:(r.effects||[]).map((s,t)=>e.jsxs("div",{className:"flex gap-2 p-2 bg-muted rounded-lg",children:[e.jsxs(D,{value:s.type,onValueChange:a=>h(r,d,t,{type:a}),children:[e.jsx(M,{className:"bg-muted border-border text-foreground",children:e.jsx(A,{})}),e.jsx(T,{className:"bg-muted border-border",children:b.map(a=>e.jsx(P,{value:a.value,className:"text-foreground",children:a.label},a.value))})]}),e.jsx(m,{value:s.value?.toString()||"",onChange:a=>h(r,d,t,{value:a.target.value}),placeholder:"Value",className:"bg-muted border-border text-foreground text-sm w-24"}),e.jsx(c,{variant:"ghost",size:"sm",onClick:()=>w(r,d,t),children:e.jsx(R,{size:14})})]},t))})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Maven Message (optional)"}),e.jsx(j,{value:r.maven_message_template||"",onChange:s=>d({...r,maven_message_template:s.target.value}),placeholder:"Message Maven sends when this rule triggers...",className:"bg-muted border-border text-foreground",rows:2})]}),e.jsxs(c,{onClick:V,className:"w-full",children:[e.jsx(v,{size:16,className:"mr-2"}),"Create Rule"]})]})]})]})]}),e.jsx("div",{className:"space-y-3",children:_.map((s,t)=>e.jsx(Z.div,{initial:{opacity:0,y:20}
1,animate:{opacity:1,y:0},transition:{delay:t*.05},className:`p-4 rounded-xl border ${s.is_active?"bg-background border-border":"bg-background/50 border-border/50 opacity-60"}`,children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-foreground",children:s.rule_name}),e.jsxs("span",{className:`text-xs px-2 py-0.5 rounded ${s.priority>=10?"bg-red-500/20 text-red-400":s.priority>=5?"bg-amber-500/20 text-amber-400":"bg-muted text-muted-foreground"}`,children:["Priority ",s.priority]})]}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:s.description}),e.jsx("div",{className:"bg-muted rounded-lg p-2 mb-2",children:e.jsxs("code",{className:"text-xs text-emerald-400 font-mono",children:["if (",s.condition_expression,")"]})}),e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[(s.effects||[]).map((a,o)=>{const x=L(a.type);return e.jsxs("span",{className:"text-xs px-2 py-1 bg-purple-500/20 text-purple-400 rounded flex items-center gap-1",children:[e.jsx(x,{size:10}),a.type,": ",a.value?.toString()]},o)}),s.maven_message_template&&e.jsx("span",{className:"text-xs px-2 py-1 bg-blue-500/20 text-blue-400 rounded",children:"+ Maven Message"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(te,{checked:s.is_active,onCheckedChange:()=>J(s)}),e.jsx("button",{onClick:()=>i(s),className:"p-1.5 hover:bg-muted rounded transition-colors",children:e.jsx(K,{size:14,className:"text-muted-foreground"})}),e.jsx("button",{onClick:()=>H(s.id),className:"p-1.5 hover:bg-muted rounded transition-colors",children:e.jsx(ee,{size:14,className:"text-red-400"})})]})]})},s.id))}),n&&e.jsx(k,{open:!!n,onOpenChange:()=>i(null),children:e.jsxs(E,{className:"bg-background border-border max-w-lg max-h-[90vh] overflow-y-auto",children:[e.jsx(z,{children:e.jsx(q,{className:"text-foreground",children:"Edit Rule"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Rule Name"}),e.jsx(m,{value:n.rule_name,onChange:s=>i({...n,rule_name:s.target.value}),className:"bg-muted border-border text-foreground"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Description"}),e.jsx(j,{value:n.description,onChange:s=>i({...n,description:s.target.value}),className:"bg-muted border-border text-foreground",rows:2})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Condition Expression"}),e.jsx(m,{value:n.condition_expression,onChange:s=>i({...n,condition_expression:s.target.value}),className:"bg-muted border-border text-foreground font-mono text-sm"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Priority"}),e.jsx(m,{type:"number",value:n.priority,onChange:s=>i({...n,priority:parseInt(s.target.value)}),className:"bg-muted border-border text-foreground"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(l,{className:"text-muted-foreground",children:"Effects"}),e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>C(n,s=>i(s)),children:[e.jsx(v,{size:12,className:"mr-1"}),"Add Effect"]})]}),e.jsx("div",{className:"space-y-2",children:(n.effects||[]).map((s,t)=>e.jsxs("div",{className:"flex gap-2 p-2 bg-muted rounded-lg",children:[e.jsxs(D,{value:s.type,onValueChange:a=>h(n,o=>i(o),t,{type:a}),children:[e.jsx(M,{className:"bg-muted border-border text-foreground",children:e.jsx(A,{})}),e.jsx(T,{className:"bg-muted border-border",children:b.map(a=>e.jsx(P,{value:a.value,className:"text-foreground",children:a.label},a.value))})]}),e.jsx(m,{value:s.value?.toString()||"",onChange:a=>h(n,o=>i(o),t,{value:a.target.value}),placeholder:"Value",className:"bg-muted border-border text-foreground text-sm w-24"}),e.jsx(c,{variant:"ghost",size:"sm",onClick:()=>w(n,a=>i(a),t),children:e.jsx(R,{size:14})})]},t))})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-muted-foreground",children:"Maven Message"}),e.jsx(j,{value:n.maven_message_template||"",onChange:s=>i({...n,maven_message_template:s.target.value}),className:"bg-muted border-border text-foreground",rows:2})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(c,{variant:"outline",onClick:()=>i(null),className:"flex-1",children:"Cancel"}),e.jsxs(c,{onClick:()=>G(n),className:"flex-1",children:[e.jsx(se,{size:16,className:"mr-2"}),"Save Changes"]})]})]})]})})]})})}export{de 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.