From 2cd953b54e35baa9b54eac1069a9e5fd26ed73aa Mon Sep 17 00:00:00 2001 From: Jonathan Singer Date: Mon, 20 Jul 2026 12:42:13 -0400 Subject: [PATCH] Tighten the email report CTA subtext --- .../assets/{index-EtQdGR34.js => index-DdJz2sb3.js} | 2 +- strix/viewer/viewer_dist/index.html | 2 +- strix/viewer_src/src/App.tsx | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) rename strix/viewer/viewer_dist/assets/{index-EtQdGR34.js => index-DdJz2sb3.js} (99%) diff --git a/strix/viewer/viewer_dist/assets/index-EtQdGR34.js b/strix/viewer/viewer_dist/assets/index-DdJz2sb3.js similarity index 99% rename from strix/viewer/viewer_dist/assets/index-EtQdGR34.js rename to strix/viewer/viewer_dist/assets/index-DdJz2sb3.js index 118a5336..7804a274 100644 --- a/strix/viewer/viewer_dist/assets/index-EtQdGR34.js +++ b/strix/viewer/viewer_dist/assets/index-DdJz2sb3.js @@ -484,4 +484,4 @@ https://github.com/highlightjs/highlight.js/issues/2277`),Ht=ye,ft=ze),Qe===void `);const i=t.length-F1-G1;return[...t.slice(0,F1).map(xp),`... ${i} lines truncated ...`,...t.slice(-G1).map(xp)].join(` `)}function Q9({args:e,result:t}){const i=e.action??"",a=e.code??e.script??"",s=t;let o=null;s&&typeof s=="object"?o=typeof s.stdout=="string"?s.stdout:null:typeof s=="string"&&(o=s);const c=i==="new_session"?"new session":i==="close"?"close session":i==="list_sessions"?"list sessions":null,d=o?Z9(K9(o)):null;return b.jsxs("div",{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-yellow-400/80 font-semibold text-sm",children:"Python"}),c&&b.jsx("span",{className:"text-[#888] text-[13px]",children:c})]}),a&&b.jsx(Xm,{code:a,language:"python",collapsible:!0}),d&&b.jsx(br,{className:"text-[#666]",children:d})]})}function W9({args:e}){const t=e.targets,a=(Array.isArray(t)?t:[]).map(s=>typeof s=="object"&&s?s.original??null:null).filter(Boolean);return b.jsxs("div",{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-emerald-400/80 font-semibold text-sm",children:"Starting penetration test"}),a.length===1&&b.jsxs("span",{className:"text-[#888] text-[13px]",children:["on ",a[0]]})]}),a.length>1&&b.jsx("div",{className:"mt-1.5 space-y-0.5",children:a.map((s,o)=>b.jsxs("div",{className:"text-[13px] text-[#888]",children:[b.jsx("span",{className:"text-[#555] mr-1",children:"•"}),s]},o))})]})}function J9({args:e}){const t=e.name??"Unknown Agent",i=e.task??"";return b.jsxs("div",{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-[#888] text-[13px]",children:"subagent"}),b.jsx("span",{className:"text-purple-400 font-semibold text-sm",children:t})]}),i&&b.jsx("div",{className:"mt-1.5",children:b.jsx(Ln,{text:i,maxLines:15})})]})}function eU(e){return e.toolName==="subagent_start_info"?b.jsx(J9,{...e}):b.jsx(W9,{...e})}function tU({args:e}){const t=e.executive_summary??"",i=e.methodology??"",a=e.technical_analysis??"",s=e.recommendations??"";return b.jsxs("div",{className:"space-y-3",children:[b.jsx("span",{className:"text-emerald-400/80 font-semibold text-sm",children:"Penetration test completed"}),t&&b.jsxs("div",{children:[b.jsx("span",{className:"text-emerald-400/60 text-sm font-semibold",children:"Executive Summary"}),b.jsx("div",{className:"mt-1",children:b.jsx(Ln,{text:t,maxLines:25})})]}),i&&b.jsxs("div",{children:[b.jsx("span",{className:"text-emerald-400/60 text-sm font-semibold",children:"Methodology"}),b.jsx("div",{className:"mt-1",children:b.jsx(Ln,{text:i,maxLines:25})})]}),a&&b.jsxs("div",{children:[b.jsx("span",{className:"text-emerald-400/60 text-sm font-semibold",children:"Technical Analysis"}),b.jsx("div",{className:"mt-1",children:b.jsx(Ln,{text:a,maxLines:25})})]}),s&&b.jsxs("div",{children:[b.jsx("span",{className:"text-emerald-400/60 text-sm font-semibold",children:"Recommendations"}),b.jsx("div",{className:"mt-1",children:b.jsx(Ln,{text:s,maxLines:25})})]}),!t&&!i&&!a&&!s&&b.jsx("div",{className:"text-[#555] text-xs",children:"Generating final report..."})]})}function nU({toolName:e,args:t,result:i}){if(e==="create_note"){const a=t.title??"",s=t.content??"",o=t.category??"general";return b.jsxs("div",{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-amber-400/80 font-semibold text-sm",children:"note"}),b.jsxs("span",{className:"text-[#555] text-[13px]",children:["(",o,")"]})]}),a&&b.jsx("div",{className:"mt-1.5 text-[#999] text-[13px]",children:a}),s&&b.jsx("div",{className:"mt-1",children:b.jsx(Cs,{text:s})})]})}if(e==="delete_note")return b.jsx("span",{className:"text-amber-400/80 font-semibold text-sm",children:"note removed"});if(e==="update_note"){const a=t.title??"",s=t.content??"";return b.jsxs("div",{children:[b.jsx("span",{className:"text-amber-400/80 font-semibold text-sm",children:"note updated"}),a&&b.jsx("div",{className:"mt-1.5 text-[#999] text-[13px]",children:a}),s&&b.jsx("div",{className:"mt-1",children:b.jsx(Cs,{text:s})})]})}if(e==="get_note"){const a=i,s=a&&typeof a=="object"&&a.success?a.note:void 0;return b.jsxs("div",{children:[b.jsx("span",{className:"text-amber-400/80 font-semibold text-sm",children:"note read"}),s&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"mt-1.5 text-[#999] text-[13px]",children:[s.title??"(untitled)",b.jsxs("span",{className:"text-[#555] ml-1",children:["(",s.category??"general",")"]})]}),s.content&&b.jsx("div",{className:"mt-1",children:b.jsx(Cs,{text:s.content})})]})]})}if(e==="list_notes"){const a=i;let s=[];if(a&&typeof a=="object"&&a.success){const o=a.notes;s=Array.isArray(o)?o:[]}return b.jsxs("div",{children:[b.jsx("span",{className:"text-amber-400/80 font-semibold text-sm",children:"notes"}),s.length>0?b.jsx("div",{className:"mt-1.5 space-y-0.5",children:s.map((o,c)=>b.jsxs("div",{className:"text-[13px]",children:[b.jsx("span",{className:"text-[#555] mr-1",children:"-"}),b.jsx("span",{className:"text-[#999]",children:o.title??"(untitled)"}),b.jsxs("span",{className:"text-[#555] ml-1",children:["(",o.category??"general",")"]}),o.content&&b.jsx("div",{className:"ml-3",children:b.jsx(Cs,{text:o.content})})]},c))}):b.jsx("div",{className:"mt-1 text-[#555] text-xs",children:"No notes"})]})}return b.jsx("span",{className:"text-amber-400/80 font-semibold text-sm",children:"note"})}const iU={create_todo:{label:"Task added",Icon:gT},list_todos:{label:"Plan",Icon:f2},update_todo:{label:"Task updated",Icon:pT},mark_todo_done:{label:"Task completed",Icon:r_},mark_todo_pending:{label:"Task reopened",Icon:TT},delete_todo:{label:"Task removed",Icon:jT}};function rU({status:e}){return e==="done"?b.jsx(r_,{className:"w-3.5 h-3.5 text-emerald-400/70 shrink-0"}):e==="in_progress"?b.jsx(E2,{className:"w-3.5 h-3.5 text-purple-400/70 shrink-0 animate-pulse"}):b.jsx(N2,{className:"w-3.5 h-3.5 text-[#444] shrink-0"})}function aU({todos:e,highlightId:t}){return b.jsx("div",{className:"space-y-0",children:e.map((i,a)=>{const s=i.status??"pending",o=t&&i.id===t;return b.jsxs("div",{className:`flex items-start gap-2.5 py-1.5 px-2 -mx-2 rounded-md transition-colors ${o?"bg-purple-500/[0.08]":""}`,children:[b.jsx("div",{className:"mt-[1px]",children:b.jsx(rU,{status:s})}),b.jsx("span",{className:`text-[13px] leading-snug ${s==="done"?"text-[#555] line-through":s==="in_progress"?"text-[#bbb]":"text-[#999]"}`,children:i.title??"(untitled)"})]},i.id??a)})})}function sU({toolName:e,args:t,result:i}){const a=iU[e]??{label:"Plan",Icon:wT},s=a.Icon,o=i;if(typeof o=="string"&&o.trim())return b.jsxs("div",{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(s,{className:"w-3.5 h-3.5 text-purple-400/60"}),b.jsx("span",{className:"text-purple-400/80 font-semibold text-sm",children:a.label})]}),b.jsx("div",{className:"mt-1.5 text-[#888] text-[13px]",children:o.trim()})]});let c=[],d=null,h;if(o&&typeof o=="object"){if(d=o.error??null,o.success){const p=o.todos;c=Array.isArray(p)?p:[]}h=o.id??t.todo_id??void 0}const f=e!=="list_todos"?h:void 0;return c.length===0&&!d?b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(s,{className:"w-3.5 h-3.5 text-purple-400/60"}),b.jsx("span",{className:"text-purple-400/80 font-semibold text-sm",children:a.label})]}):b.jsxs("div",{children:[b.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[b.jsx(s,{className:"w-3.5 h-3.5 text-purple-400/60"}),b.jsx("span",{className:"text-purple-400/80 font-semibold text-sm",children:a.label})]}),d&&b.jsx("div",{className:"text-red-400/70 text-[13px] mb-2",children:d}),c.length>0&&b.jsx("div",{className:"rounded-lg border border-white/[0.06] bg-white/[0.015] px-3 py-2",children:b.jsx(aU,{todos:c,highlightId:f})})]})}function V1(e){if(e==null)return null;if(typeof e=="string")return e.trim()?e:null;if(typeof e=="object"){const t=e;if(typeof t.__raw=="string")return t.__raw;if(Object.keys(t).length===0)return null;try{return JSON.stringify(e,null,2)}catch{return String(e)}}return String(e)}function TN({toolName:e,args:t,result:i}){const a=V1(t),s=V1(i);return b.jsxs("div",{children:[b.jsx("span",{className:"text-[#888] font-semibold text-sm",children:e.replace(/_/g," ")}),a&&b.jsx(br,{className:"text-[#777]",children:a}),s&&b.jsx(br,{className:"text-[#666]",children:s})]})}function lU({args:e}){const i=(e.skills??"").split(",").map(a=>a.trim()).filter(Boolean);return b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-emerald-400/80 font-semibold text-sm",children:"Loading skill"}),i.length>0&&b.jsx("span",{className:"text-[#888] text-[13px]",children:i.join(", ")})]})}const Pu={terminal:{renderer:y9,icon:u_,color:"text-emerald-400"},python:{renderer:Q9,icon:T2,color:"text-yellow-400"},browser:{renderer:_9,icon:em,color:"text-blue-400"},filesystem:{renderer:E9,icon:s_,color:"text-sky-400"},proxy:{renderer:$9,icon:Su,color:"text-purple-400",match:/request|sitemap|scope/},reporting:{renderer:R9,icon:MT,color:"text-red-400"},thinking:{renderer:q9,icon:t_,color:"text-purple-400"},agents:{renderer:P9,icon:Wp,color:"text-cyan-400",match:/agent/},search:{renderer:F9,icon:c_,color:"text-amber-400"},lifecycle:{renderer:eU,icon:l_,color:"text-emerald-400"},notes:{renderer:nU,icon:DT,color:"text-amber-400",match:/note/},skills:{renderer:lU,icon:su,color:"text-emerald-400"},todos:{renderer:sU,icon:tT,color:"text-purple-400",match:/todo/},telemetry:{renderer:TN,icon:su,color:"text-[#555]"}},oU={terminal:["exec_command","write_stdin","terminal_execute"],python:["python_action"],browser:["browser_action"],filesystem:["apply_patch","view_image","str_replace_editor","list_files","search_files"],proxy:["list_requests","view_request","repeat_request","list_sitemap","view_sitemap_entry","scope_rules","send_request"],reporting:["create_vulnerability_report"],thinking:["think"],agents:["create_agent","agent_finish","send_message_to_agent","wait_for_message","view_agent_graph","stop_agent"],search:["web_search"],lifecycle:["scan_start_info","subagent_start_info","finish_scan"],notes:["create_note","delete_note","update_note","list_notes","get_note"],skills:["load_skill"],todos:["create_todo","list_todos","update_todo","mark_todo_done","mark_todo_pending","delete_todo"],telemetry:["sandbox_error_details","llm_error_details"]},cU=Object.fromEntries(Object.entries(oU).flatMap(([e,t])=>t.map(i=>[i,e]))),uU={finish_scan:tU,apply_patch:C9,view_image:M9},dU={agent_finish:{icon:l_,color:"text-cyan-400"},send_message_to_agent:{icon:Bx,color:"text-cyan-400"},wait_for_message:{icon:Bx,color:"text-cyan-400"},view_agent_graph:{icon:L2,color:"text-cyan-400"},stop_agent:{icon:e_,color:"text-red-400"},scan_start_info:{icon:M2,color:"text-emerald-400"},subagent_start_info:{icon:Wp,color:"text-purple-400"},view_image:{icon:K2,color:"text-sky-400"}},fU=Pu.telemetry;function AN(e){var i;const t=cU[e];if(t)return t;for(const[a,s]of Object.entries(Pu))if((i=s.match)!=null&&i.test(e))return a;return null}function hU(e){const t=uU[e];if(t)return t;const i=AN(e);return i?Pu[i].renderer:TN}function pU(e){const t=dU[e];if(t)return t;const i=AN(e),a=i?Pu[i]:fU;return{icon:a.icon,color:a.color}}const mU=30;function gU({role:e,content:t}){const i=e==="user"||e==="human";return b.jsxs("div",{children:[b.jsx("span",{className:`font-semibold text-sm ${i?"text-blue-400/80":"text-purple-400/80"}`,children:i?"User":"Thinking"}),b.jsx("div",{className:"mt-1.5 italic text-[#888]",children:b.jsx(Ln,{text:t,maxLines:mU})})]})}class bU extends re.Component{constructor(t){super(t),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}render(){return this.state.hasError?b.jsx("span",{className:"text-[#555] font-semibold text-sm",children:this.props.toolName.replace(/_/g," ")}):this.props.children}}function xU(e){const t=hU(e.toolName);return b.jsx(bU,{toolName:e.toolName,children:b.jsx(t,{...e})})}function CN(e){if(e==null||typeof e!="string")return e;const t=e.trim();if(!t)return e;try{return JSON.parse(t)}catch{}try{const i=t.replace(/\bNone\b/g,"null").replace(/\bTrue\b/g,"true").replace(/\bFalse\b/g,"false").replace(/'/g,'"');return JSON.parse(i)}catch{return{__raw:e}}}function MN(e){const t=CN(e);return t&&typeof t=="object"&&!Array.isArray(t)?t:t==null?{}:{__raw:typeof t=="string"?t:JSON.stringify(t)}}function Y1(e){const t=/(\d+)$/.exec(e);return t?parseInt(t[1],10):0}function ON(e){var i;const t=(i=e.data)==null?void 0:i.role;return e.type==="chat"&&(t==="user"||t==="human")}const yU={completed:"text-emerald-400 border-emerald-500/30 bg-emerald-500/10",running:"text-blue-400 border-blue-500/30 bg-blue-500/10",waiting:"text-yellow-400 border-yellow-500/30 bg-yellow-500/10",stopped:"text-[#aaa] border-[#333] bg-[#1a1a1a]",crashed:"text-red-400 border-red-500/30 bg-red-500/10",failed:"text-red-400 border-red-500/30 bg-red-500/10"};function vU(e){return e==="completed"?"completed":e==="running"?"running":e==="failed"||e==="crashed"?"failed":e}function _U(e,t){var d;const i=new Map;for(const h of e)if(h.parent_id){const f=i.get(h.parent_id)??[];f.push(h.id),i.set(h.parent_id,f)}const a=new Map,s=new Map,o=new Map;for(const h of t)if(h.type==="tool"){if(a.set(h.agent_id,(a.get(h.agent_id)??0)+1),((d=h.data)==null?void 0:d.tool_name)==="create_agent"){const f=MN(h.data.args),p=f.name??f.agent_name??"",m=f.task??"";p&&m&&o.set(p,m)}}else ON(h)||s.set(h.agent_id,(s.get(h.agent_id)??0)+1);const c=new Map;for(const h of e)c.set(h.id,{id:h.id,name:h.name,task:o.get(h.name)??"",status:vU(h.status),parentId:h.parent_id,children:i.get(h.id)??[],createdAt:h.created_at,toolCount:a.get(h.id)??0,messageCount:s.get(h.id)??0});return c}function EU({agent:e,events:t,showHeader:i=!0}){const a=re.useMemo(()=>t.filter(c=>c.agent_id===e.id&&!ON(c)).sort((c,d)=>Y1(c.id)-Y1(d.id)),[t,e.id]),s=a.filter(c=>c.type==="tool").length,o=a.length-s;return b.jsxs("div",{children:[i&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-1",children:[b.jsx("span",{className:"text-base font-semibold text-white truncate",children:e.name}),b.jsx("span",{className:`flex-shrink-0 text-xs font-medium capitalize px-2 py-0.5 rounded-full border ${yU[e.status]??"text-[#aaa] border-[#333] bg-[#1a1a1a]"}`,children:e.status}),b.jsx("span",{className:"font-mono text-xs text-[#555]",children:e.id})]}),b.jsxs("p",{className:"text-xs text-[#666] mb-4",children:[o," message",o===1?"":"s"," · ",s," tool call",s===1?"":"s"]})]}),a.length===0?b.jsx("p",{className:"text-sm text-[#666]",children:"No recorded activity for this agent."}):b.jsx("div",{className:"py-1",children:a.map((c,d)=>{var N,S,E,k,w,O;const h=d===a.length-1,f=c.type==="tool",p=f?String(((N=c.data)==null?void 0:N.tool_name)??"tool"):"",m=f?"":String(((S=c.data)==null?void 0:S.role)??"assistant");let y,x;if(f){const B=pU(p);y=B.icon,x=B.color}else{const B=m==="user"||m==="human";y=B?Wp:t_,x=B?"text-blue-400":"text-purple-400"}const _=f?String(((E=c.data)==null?void 0:E.status)??"completed"):"completed";return b.jsxs("div",{className:"flex gap-3",children:[b.jsxs("div",{className:"flex flex-col items-center shrink-0",children:[b.jsx("div",{className:`w-[30px] h-[30px] rounded-full bg-black border flex items-center justify-center shrink-0 ${f&&_==="running"?"border-blue-500/40 animate-pulse":f&&_==="failed"?"border-red-500/30":"border-[#222]"}`,children:b.jsx(y,{className:`w-3.5 h-3.5 ${x}`})}),!h&&b.jsx("div",{className:"w-px flex-1 bg-[#1a1a1a] mt-1"})]}),b.jsx("div",{className:"flex-1 min-w-0 pt-[5px] pb-6",children:f?b.jsx(xU,{toolName:p,args:MN((k=c.data)==null?void 0:k.args),result:CN((w=c.data)==null?void 0:w.result)??null,status:_}):b.jsx(gU,{role:m,content:String(((O=c.data)==null?void 0:O.content)??"")})})]},c.id)})})]})}const wU={completed:"bg-emerald-400",running:"bg-blue-400",waiting:"bg-yellow-400",stopped:"bg-[#888]",crashed:"bg-red-400",failed:"bg-red-400"},NU=80;function SU({agent:e,events:t,onClose:i}){const a=re.useRef(null),s=re.useRef(!1),o=re.useCallback(()=>{const c=a.current;c&&(s.current=c.scrollHeight-c.scrollTop-c.clientHeight{const c=a.current;!c||!s.current||requestAnimationFrame(()=>{c.scrollTo({top:c.scrollHeight,behavior:"smooth"})})},[t]),re.useEffect(()=>{const c=h=>{h.key==="Escape"&&i()};document.addEventListener("keydown",c);const d=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",c),document.body.style.overflow=d}},[i]),b.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-4 sm:p-8",onClick:i,role:"dialog","aria-modal":"true","aria-label":`Agent ${e.name}`,children:b.jsxs("div",{className:"relative flex h-[80vh] w-full max-w-5xl flex-col rounded-xl border border-[#222] bg-[#0a0a0a] shadow-2xl",onClick:c=>c.stopPropagation(),children:[b.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-[#222] px-5 py-3.5",children:[b.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[b.jsx("span",{className:`h-2 w-2 flex-shrink-0 rounded-full ${wU[e.status]??"bg-[#888]"}`}),b.jsx("span",{className:"truncate text-sm font-semibold text-white",children:e.name}),b.jsx("span",{className:"flex-shrink-0 font-mono text-xs text-[#555]",children:e.id})]}),b.jsx("button",{type:"button",onClick:i,"aria-label":"Close",className:"flex-shrink-0 rounded-md p-1 text-[#888] transition-colors hover:bg-[#1a1a1a] hover:text-white",children:b.jsx(f_,{className:"h-4 w-4"})})]}),b.jsx("div",{ref:a,onScroll:o,className:"flex-1 overflow-y-auto p-5",children:b.jsx(EU,{agent:e,events:t,showHeader:!1})}),b.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 border-t border-[#222] px-5 py-3",children:[b.jsx("span",{className:"text-xs text-[#888]",children:"Steer agents live from your terminal."}),b.jsx("a",{href:Ps,target:"_blank",rel:"noopener noreferrer",onClick:()=>qi("steer_agent"),className:"text-xs font-medium text-[#60a5fa] hover:underline",children:"Upgrade to Pro to steer agents from the web →"})]})]})})}class Nu extends Error{constructor(t){super(t),this.name="RunParseError"}}const kU=["critical","high","medium","low"];function TU(e){const t=String(e??"").toLowerCase().trim();return kU.includes(t)?t:"low"}function AU(e){if(typeof e=="string"&&e.trim()){const t=e.trim().replace(" UTC","Z").replace(" ","T"),i=new Date(t);if(!Number.isNaN(i.getTime()))return i.toISOString();const a=new Date(e);if(!Number.isNaN(a.getTime()))return a.toISOString()}return new Date().toISOString()}function Ot(e){return typeof e=="string"&&e.length>0?e:null}function CU(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function RN(e,t){try{return JSON.parse(e)}catch{throw new Nu(`${t} isn't valid JSON. Make sure you selected a Strix run directory.`)}}function MU(e){const t=RN(e,"run.json");if(!t||typeof t!="object"||Array.isArray(t))throw new Nu("run.json is not an object.");const i=t,a=[],s=i.targets_info;if(Array.isArray(s)){for(const x of s)if(x&&typeof x=="object"){const _=x.original;typeof _=="string"&&_&&a.push(_)}}const o=Ot(i.start_time),c=Ot(i.end_time);let d=null;if(o&&c){const x=new Date(o).getTime(),_=new Date(c).getTime();!Number.isNaN(x)&&!Number.isNaN(_)&&_>=x&&(d=Math.round((_-x)/1e3))}let h=null,f=null,p=null,m=null;const y=i.scan_results;if(y&&typeof y=="object"){const x=y;h=Ot(x.executive_summary),f=Ot(x.technical_analysis),p=Ot(x.methodology),m=Ot(x.recommendations)}return{runId:Ot(i.run_id),runName:Ot(i.run_name),targets:a,scanMode:Ot(i.scan_mode),status:Ot(i.status),startTime:o,endTime:c,durationSeconds:d,executiveSummary:h,technicalAnalysis:f,methodology:p,recommendations:m}}function OU(){return{pr_review_id:null,cve:null,cvss:null,potential_risk_saving:null,risk_saving_description:null,impact:null,endpoint:null,method:null,target:null,technical_analysis:null,poc_description:null,poc_script_code:null,code_diff:null,code_file:null,code_before:null,code_after:null,cwe:null,code_locations:null,remediation_steps:null,fix_pr_body:null,evidence:null,assumptions:null,fix_effort:null,cvss_breakdown:null,status_changed_at:null,status_changed_by:null,status_note:null,snoozed_until:null,reopened_at:null,reopened_by:null,original_severity:null,severity_changed_at:null,severity_changed_by:null,severity_override_reason:null,retest_of_vulnerability_id:null}}function RU(e,t,i){const a=e.cwe,s=typeof a=="string"&&a.trim()?[a.trim()]:Array.isArray(a)?a.filter(c=>typeof c=="string"&&c):null;return{...OU(),id:Ot(e.id)??`vuln-${t+1}`,scan_id:i,title:Ot(e.title)??"Untitled finding",description:Ot(e.description)??"",severity:TU(e.severity),status:"open",created_at:AU(e.timestamp),cve:Ot(e.cve),cvss:CU(e.cvss),impact:Ot(e.impact),endpoint:Ot(e.endpoint),method:Ot(e.method),target:Ot(e.target),technical_analysis:Ot(e.technical_analysis),poc_description:Ot(e.poc_description),poc_script_code:Ot(e.poc_script_code),cwe:s,code_locations:Array.isArray(e.code_locations)?e.code_locations:null,remediation_steps:Ot(e.remediation_steps),fix_pr_body:Ot(e.fix_pr_body),evidence:Ot(e.evidence),assumptions:Ot(e.assumptions),fix_effort:Ot(e.fix_effort)??null,cvss_breakdown:e.cvss_breakdown??null}}function DU(e,t=null){const i=RN(e,"vulnerabilities.json");if(!Array.isArray(i))throw new Nu("vulnerabilities.json is not a JSON array.");return i.map((a,s)=>{if(!a||typeof a!="object")throw new Nu(`vulnerabilities.json entry #${s+1} is not an object.`);return RU(a,s,t)})}function LU(e){const t={critical:0,high:0,medium:0,low:0};for(const i of e)t[i.severity]+=1;return t}async function Vs(e){const t=await fetch(e,{cache:"no-store"});if(!t.ok)throw new Error(`${e} responded ${t.status}`);return t.json()}function Fu(e){return e?`?run=${encodeURIComponent(e)}`:""}async function DN(e){const t=await Vs("/api/run"+Fu(e)),i=MU(JSON.stringify(t)),a=t.finished===!0;return{summary:i,raw:t,finished:a}}async function LN(e,t){const i=await Vs("/api/vulnerabilities"+Fu(t));return DU(JSON.stringify(i),e)}async function zU(e){const t=await Vs("/api/report"+Fu(e));return(t==null?void 0:t.markdown)??null}async function zN(e){const t=await Vs("/api/transcript"+Fu(e));return{agents:Array.isArray(t==null?void 0:t.agents)?t.agents:[],events:Array.isArray(t==null?void 0:t.events)?t.events:[]}}async function X1(e){const{summary:t,raw:i,finished:a}=await DN(e),[s,o,c]=await Promise.all([LN(t.runId,e).catch(()=>[]),zU(e).catch(()=>null),zN(e).catch(()=>({agents:[],events:[]}))]);return{summary:t,raw:i,finished:a,vulnerabilities:s,reportMarkdown:o,transcript:c}}async function Gu(e,t){const i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),cache:"no-store"});let a={};try{const s=await i.json();s&&typeof s=="object"&&(a=s)}catch{}return{ok:i.ok,status:i.status,data:a}}async function jU(){const e=await Vs("/api/runs");return{locked:(e==null?void 0:e.locked)??!0,count:typeof(e==null?void 0:e.count)=="number"?e.count:0,runs:Array.isArray(e==null?void 0:e.runs)?e.runs:[]}}async function IU(){const e=await Vs("/api/auth/status");return{verified:(e==null?void 0:e.verified)===!0,email:(e==null?void 0:e.email)??null}}async function BU(e){const{ok:t,data:i}=await Gu("/api/auth/otp/start",{email:e});return t&&i.ok===!0?{ok:!0}:{ok:!1,error:String(i.error??"unavailable")}}async function UU(e,t){const{ok:i,data:a}=await Gu("/api/auth/otp/verify",{email:e,code:t});return i&&a.verified===!0?{verified:!0,email:String(a.email??e)}:{verified:!1,error:String(a.error??"invalid_code")}}async function HU(){await Gu("/api/auth/forget",{})}async function $U(e){const{ok:t,data:i}=await Gu("/api/report/send",e?{run:e}:{});return t&&i.ok===!0?{ok:!0,password:String(i.password??""),filename:String(i.filename??"strix-report.pdf")}:{ok:!1,error:String(i.error??"unavailable")}}const qU=[{title:"PR Reviews",desc:"Pentest every pull request your team opens.",slug:"pr_reviews",icon:Jp},{title:"Repositories",desc:"Connect your org's repositories.",slug:"repositories",icon:Q2},{title:"Domains",desc:"Add the domains your team owns.",slug:"domains",icon:em},{title:"Integrations",desc:"Two-way sync findings to Jira, Linear, and Slack.",slug:"integrations",icon:xT},{title:"Members",desc:"Invite your team and set roles.",slug:"members",icon:HT},{title:"Pentests",desc:"Launch deeper pentests on managed infra.",slug:"pentests",icon:c_},{title:"Dashboard",desc:"See every project and finding in one place.",slug:"dashboard",icon:J2},{title:"Issues",desc:"Track and triage findings across your org.",slug:"platform_issues",icon:BT},{title:"Chat",desc:"Ask the agents about any finding.",slug:"chat",icon:uT},{title:"Networks",desc:"Map and monitor your network exposure.",slug:"networks",icon:fT},{title:"Knowledge",desc:"Give agents context about your systems.",slug:"knowledge",icon:R2}];function PU({view:e,onSelectView:t,issuesCount:i,agentCount:a,runCount:s,verified:o,email:c,onOpenEmail:d,onOpenHistory:h,onForget:f}){return b.jsx("aside",{className:"hidden w-72 flex-shrink-0 border-r border-[#222] lg:block",children:b.jsxs("div",{className:"sticky top-0 flex h-screen flex-col overflow-y-auto px-3 py-4",children:[b.jsxs("div",{className:"px-1.5",children:[b.jsxs("a",{href:"https://app.strix.ai",target:"_blank",rel:"noopener noreferrer",onClick:()=>qi("logo"),className:"flex items-center gap-1.5 opacity-90 transition-opacity hover:opacity-100",title:"Open Strix Cloud",children:[b.jsx("img",{src:"./logo.png",alt:"Strix",className:"h-8 w-10 object-cover"}),b.jsx("span",{className:"text-base font-medium tracking-tight text-white",children:"Strix"})]}),b.jsxs("a",{href:Ps,target:"_blank",rel:"noopener noreferrer",onClick:()=>qi("sidebar_start_free"),className:"mt-3 flex w-full cursor-pointer items-center justify-center gap-1.5 rounded-lg bg-white px-3 py-2 text-sm font-semibold text-black transition-opacity hover:opacity-90",children:["Start free",b.jsx(Su,{className:"h-3.5 w-3.5","aria-hidden":"true"})]}),o&&c&&b.jsxs("div",{className:"mt-2.5 flex items-center gap-2 rounded-lg px-2.5 py-2",style:{border:"1px solid #222",background:"rgba(255,255,255,0.02)"},children:[b.jsx(nm,{className:"h-3.5 w-3.5 flex-shrink-0 text-emerald-400","aria-hidden":"true"}),b.jsxs("div",{className:"min-w-0 flex-1",children:[b.jsx("p",{className:"truncate text-[11px] text-[#666]",children:"Signed in as"}),b.jsx("p",{className:"truncate text-xs text-[#aaa]",title:c,children:c})]}),b.jsx("button",{onClick:f,title:"Forget this email on this machine",className:"flex-shrink-0 cursor-pointer text-[#666] transition-colors hover:text-white","aria-label":"Forget",children:b.jsx(sT,{className:"h-3.5 w-3.5"})})]})]}),b.jsxs(K1,{label:"This run",children:[b.jsx(Vl,{icon:s_,label:"Overview",active:e==="overview",onClick:()=>t("overview")}),b.jsx(Vl,{icon:o2,label:"Issues",count:i>0?i:void 0,active:e==="issues",onClick:()=>t("issues")}),a>0&&b.jsx(Vl,{icon:d_,label:"Agents",count:a,active:e==="agents",onClick:()=>t("agents")})]}),b.jsxs(K1,{label:"Your runs",children:[b.jsx(Vl,{icon:Ls,label:"Past runs",count:s>0?s:void 0,active:e==="history",onClick:h}),b.jsx(Vl,{icon:tm,label:"Email report",onClick:d})]}),b.jsxs("div",{className:"mt-6",children:[b.jsx("p",{className:"px-2.5 pb-1 text-[11px] font-semibold uppercase tracking-wide text-[#555]",children:"Platform"}),b.jsx("p",{className:"px-2.5 pb-2 text-[11px] leading-snug text-[#666]",children:"Get the most out of Strix for your team."}),b.jsx("div",{className:"space-y-0.5",children:qU.map(p=>b.jsx(KT,{item:p},p.slug))})]})]})})}function K1({label:e,children:t}){return b.jsxs("div",{className:"mt-6",children:[b.jsx("p",{className:"px-2.5 pb-1.5 text-[11px] font-semibold uppercase tracking-wide text-[#555]",children:e}),b.jsx("div",{className:"space-y-0.5",children:t})]})}function Vl({icon:e,label:t,count:i,active:a,onClick:s}){return b.jsxs("button",{onClick:s,className:`flex w-full cursor-pointer items-center gap-2.5 rounded-md px-2.5 py-1.5 text-sm transition-colors ${a?"text-white":"text-[#888] hover:bg-[rgba(255,255,255,0.06)] hover:text-white"}`,style:a?{background:"rgba(255,255,255,0.12)"}:void 0,children:[b.jsx(e,{className:"h-4 w-4 flex-shrink-0","aria-hidden":"true"}),b.jsx("span",{className:"flex-1 text-left",children:t}),i!=null&&b.jsx("span",{className:"text-xs text-[#666] tabular-nums",children:i})]})}const FU=[{key:"critical",dot:"bg-red-500",text:"text-red-500"},{key:"high",dot:"bg-orange-500",text:"text-orange-500"},{key:"medium",dot:"bg-yellow-500",text:"text-yellow-500"},{key:"low",dot:"bg-blue-500",text:"text-blue-500"}];function GU({counts:e}){const t=FU.filter(i=>e[i.key]>0);return t.length===0?b.jsx("span",{className:"text-xs text-[#555]",children:"No findings"}):b.jsx("div",{className:"flex items-center gap-3",children:t.map(i=>b.jsxs("div",{className:"flex items-center gap-1.5",children:[b.jsx("span",{className:`h-2 w-2 rounded-full ${i.dot}`,"aria-hidden":"true"}),b.jsx("span",{className:`text-xs tabular-nums ${i.text}`,children:e[i.key]})]},i.key))})}function Z1(e){if(!e)return null;const t=e.trim().replace(" UTC","Z").replace(" ","T"),i=new Date(t);return Number.isNaN(i.getTime())?null:i.toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function VU({runs:e,activeRun:t,onSelectRun:i,onVerifyClick:a}){const s=(e==null?void 0:e.count)??0;return!e||e.locked?b.jsxs("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-8 text-center",children:[b.jsx("div",{className:"mx-auto mb-4 flex h-11 w-11 items-center justify-center rounded-xl",style:{border:"1px solid #2a2a2a",background:"rgba(255,255,255,0.04)"},children:b.jsx(Ls,{className:"h-5 w-5 text-[#888]","aria-hidden":"true"})}),b.jsx("h2",{className:"text-base font-semibold text-white",children:"Browse every run on this machine"}),b.jsxs("p",{className:"mx-auto mt-1.5 max-w-md text-sm text-[#888]",children:["You have ",s," past ",s===1?"run":"runs"," on this machine. Verify your email to browse them here."]}),b.jsx("button",{onClick:a,className:"mt-4 cursor-pointer rounded-lg bg-white px-4 py-2 text-sm font-semibold text-black transition-opacity hover:opacity-90",children:"Verify email to unlock"}),b.jsxs("p",{className:"mt-4 flex items-center justify-center gap-1.5 text-xs text-[#555]",children:[b.jsx(u_,{className:"h-3.5 w-3.5","aria-hidden":"true"}),"Or open one from the CLI with"," ",b.jsx("code",{className:"font-mono text-[#888]",children:"strix view "})]})]}):e.runs.length===0?b.jsx("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-8 text-center text-sm text-[#888]",children:"No past runs found on this machine yet."}):b.jsx("div",{className:"space-y-2",children:e.runs.map(o=>{const c=o.name===t,d=Z1(o.start_time)??Z1(o.end_time);return b.jsxs("button",{onClick:()=>i(o.name),className:`group flex w-full cursor-pointer items-center gap-4 rounded-lg border px-4 py-3 text-left transition-colors ${c?"border-[#444] bg-[rgba(255,255,255,0.04)]":"border-[#222] bg-[rgba(255,255,255,0.02)] hover:border-[#444]"}`,children:[b.jsxs("div",{className:"min-w-0 flex-1",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"truncate text-sm font-medium text-white",children:o.name}),c&&b.jsx("span",{className:"rounded-full px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-emerald-400",style:{border:"1px solid rgba(16,185,129,0.3)"},children:"Active"})]}),b.jsxs("div",{className:"mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-[#666]",children:[o.target&&b.jsx("span",{className:"truncate font-mono text-[#888]",children:o.target}),o.target&&(o.scan_mode||d||o.status)&&b.jsx("span",{className:"text-[#333]",children:"·"}),o.scan_mode&&b.jsx("span",{className:"capitalize",children:o.scan_mode}),d&&b.jsx("span",{className:"text-[#333]",children:"·"}),d&&b.jsx("span",{children:d}),o.status&&b.jsx("span",{className:"text-[#333]",children:"·"}),o.status&&b.jsx("span",{className:"capitalize",children:o.status})]})]}),b.jsx(GU,{counts:o.severity_counts}),b.jsx(g2,{className:"h-4 w-4 flex-shrink-0 text-[#555] transition-colors group-hover:text-[#aaa]","aria-hidden":"true"})]},o.name)})})}const YU={rate_limited:"Too many requests. Wait a minute and try again.",invalid_email:"That email does not look right. Check it and try again.",unavailable:"The email service is unavailable right now. Try again shortly."},XU={forbidden:"This email was unsubscribed from Strix, so we cannot send to it.",too_large:"This report is too large to email. Try a smaller run.",unavailable:"The email service is unavailable right now. Try again shortly."};function KU({open:e,onClose:t,activeRun:i,auth:a,onVerified:s}){const o=(a==null?void 0:a.verified)===!0,[c,d]=re.useState("disclosure"),[h,f]=re.useState(""),[p,m]=re.useState(""),[y,x]=re.useState(!1),[_,N]=re.useState(null),[S,E]=re.useState(null),[k,w]=re.useState(""),[O,B]=re.useState(""),[R,H]=re.useState(!1),I=re.useRef("");if(re.useEffect(()=>{e&&(d("disclosure"),m(""),x(!1),N(null),E(null),w(""),B(""),H(!1),f((a==null?void 0:a.email)??""))},[e,a==null?void 0:a.email]),re.useEffect(()=>{if(!e)return;const j=M=>{M.key==="Escape"&&c!=="password"&&t()};return window.addEventListener("keydown",j),()=>window.removeEventListener("keydown",j)},[e,c,t]),!e)return null;const K=async()=>{d("sending"),N(null);const j=await $U(i);if(j.ok){w(j.password),B(j.filename),d("password");return}if(j.error==="reverify"||j.error==="unverified"){E("Your verification expired. Enter your email to verify again."),d("email");return}N(XU[j.error]??"Could not send the report. Try again."),d("disclosure")},L=()=>{N(null),E(null),o?K():d("email")},q=async()=>{const j=h.trim();if(!j){N("Enter your email to continue.");return}x(!0),N(null);const M=await BU(j);x(!1),M.ok?(E(`We sent a 6-digit code to ${j}.`),d("code")):N(YU[M.error]??"Could not send a code. Try again.")},X=async()=>{const j=p.trim();if(j.length<4){N("Enter the 6-digit code from your email.");return}x(!0),N(null);const M=await UU(h.trim(),j);x(!1),M.verified?(I.current=M.email,s(),K()):N("That code did not match. Check it and try again.")},G=async()=>{try{await navigator.clipboard.writeText(k),H(!0),setTimeout(()=>H(!1),1500)}catch{}},C=I.current||(a==null?void 0:a.email)||h.trim();return b.jsxs("div",{className:"fixed inset-0 z-[100] flex items-center justify-center p-4",role:"dialog","aria-modal":"true","aria-label":"Email an encrypted report",children:[b.jsx("div",{className:"absolute inset-0 bg-black/70",onClick:()=>c!=="password"&&t()}),b.jsxs("div",{className:"relative z-10 w-full max-w-md rounded-2xl bg-[#0a0a0a] p-6 shadow-2xl",style:{border:"1px solid #2a2a2a"},children:[b.jsx("button",{onClick:t,className:"absolute right-4 top-4 cursor-pointer text-[#666] transition-colors hover:text-white","aria-label":"Close",children:b.jsx(f_,{className:"h-5 w-5"})}),b.jsxs("div",{className:"mb-4 flex items-center gap-2.5",children:[b.jsx("div",{className:"flex h-9 w-9 items-center justify-center rounded-lg",style:{border:"1px solid #2a2a2a",background:"rgba(255,255,255,0.04)"},children:b.jsx(tm,{className:"h-4 w-4 text-emerald-400","aria-hidden":"true"})}),b.jsxs("div",{children:[b.jsx("h2",{className:"text-base font-semibold text-white",children:"Email an encrypted PDF report of this run"}),b.jsx("p",{className:"text-xs text-[#666]",children:"Verified by a one-time code sent to your email"})]})]}),_&&b.jsxs("div",{className:"mb-4 flex items-start gap-2 rounded-lg border border-red-500/30 bg-red-500/5 px-3 py-2",children:[b.jsx(i_,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-red-400","aria-hidden":"true"}),b.jsx("p",{className:"text-xs text-red-300",children:_})]}),S&&!_&&c!=="password"&&b.jsx("p",{className:"mb-4 text-xs text-[#888]",children:S}),c==="disclosure"&&b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"space-y-2.5 rounded-lg p-3.5",style:{border:"1px solid #222",background:"rgba(255,255,255,0.02)"},children:[b.jsxs("div",{className:"flex items-start gap-2.5",children:[b.jsx(nm,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-emerald-400","aria-hidden":"true"}),b.jsxs("p",{className:"text-xs leading-relaxed text-[#aaa]",children:["Viewing stays local and nothing is uploaded. Emailing is an explicit opt-in: we send an ",b.jsx("span",{className:"text-white",children:"encrypted PDF"}),"."]})]}),b.jsxs("div",{className:"flex items-start gap-2.5",children:[b.jsx(rT,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-[#888]","aria-hidden":"true"}),b.jsx("p",{className:"text-xs leading-relaxed text-[#aaa]",children:"The report is encrypted with a password that only you hold. Strix cannot read it and never stores it. We collect only your email so we can send it."})]})]}),b.jsx("button",{onClick:L,className:"w-full cursor-pointer rounded-lg bg-white px-4 py-2.5 text-sm font-semibold text-black transition-opacity hover:opacity-90",children:o?"Email me the encrypted PDF":"Continue with your email"}),o&&(a==null?void 0:a.email)&&b.jsxs("p",{className:"text-center text-xs text-[#666]",children:["Sending to ",a.email]})]}),c==="email"&&b.jsxs("form",{className:"space-y-4",onSubmit:j=>{j.preventDefault(),q()},children:[b.jsxs("label",{className:"block",children:[b.jsx("span",{className:"mb-1.5 block text-xs text-[#888]",children:"Your email"}),b.jsx("input",{type:"email",autoFocus:!0,value:h,onChange:j=>f(j.target.value),placeholder:"you@company.com",className:"w-full rounded-lg bg-black px-3 py-2.5 text-sm text-white outline-none transition-colors focus:border-[#444]",style:{border:"1px solid #2a2a2a"}})]}),b.jsxs("button",{type:"submit",disabled:y,className:"flex w-full cursor-pointer items-center justify-center gap-2 rounded-lg bg-white px-4 py-2.5 text-sm font-semibold text-black transition-opacity hover:opacity-90 disabled:opacity-60",children:[y&&b.jsx(Jf,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}),"Send me a code"]})]}),c==="code"&&b.jsxs("form",{className:"space-y-4",onSubmit:j=>{j.preventDefault(),X()},children:[b.jsxs("label",{className:"block",children:[b.jsx("span",{className:"mb-1.5 block text-xs text-[#888]",children:"6-digit code"}),b.jsx("input",{inputMode:"numeric",autoFocus:!0,value:p,onChange:j=>m(j.target.value.replace(/\D/g,"").slice(0,6)),placeholder:"123456",className:"w-full rounded-lg bg-black px-3 py-2.5 text-center text-lg font-mono tracking-[0.4em] text-white outline-none transition-colors focus:border-[#444]",style:{border:"1px solid #2a2a2a"}})]}),b.jsxs("button",{type:"submit",disabled:y,className:"flex w-full cursor-pointer items-center justify-center gap-2 rounded-lg bg-white px-4 py-2.5 text-sm font-semibold text-black transition-opacity hover:opacity-90 disabled:opacity-60",children:[y&&b.jsx(Jf,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}),"Verify and send"]}),b.jsx("button",{type:"button",onClick:()=>{d("email"),N(null),E(null)},className:"w-full cursor-pointer text-center text-xs text-[#666] transition-colors hover:text-[#aaa]",children:"Use a different email"})]}),c==="sending"&&b.jsxs("div",{className:"flex flex-col items-center gap-3 py-8",children:[b.jsx(Jf,{className:"h-6 w-6 animate-spin text-white","aria-hidden":"true"}),b.jsx("p",{className:"text-sm text-[#aaa]",children:"Generating and encrypting locally..."})]}),c==="password"&&b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-start gap-2.5 rounded-lg border border-emerald-500/30 bg-emerald-500/5 px-3 py-2.5",children:[b.jsx(Ds,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-emerald-400","aria-hidden":"true"}),b.jsxs("p",{className:"text-xs text-emerald-200",children:["Sent to ",C,". Open the attached PDF with this password."]})]}),b.jsxs("div",{children:[b.jsx("span",{className:"mb-1.5 block text-xs text-[#888]",children:"Your one-time password"}),b.jsxs("div",{className:"flex items-center gap-2 rounded-lg bg-black p-3",style:{border:"1px solid #2a2a2a"},children:[b.jsx("code",{className:"flex-1 break-all font-mono text-base text-white",children:k}),b.jsxs("button",{onClick:G,className:"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-xs text-[#aaa] transition-colors hover:bg-[rgba(255,255,255,0.06)] hover:text-white",style:{border:"1px solid #2a2a2a"},children:[R?b.jsx(Ds,{className:"h-3.5 w-3.5"}):b.jsx(eo,{className:"h-3.5 w-3.5"}),R?"Copied":"Copy"]})]}),b.jsxs("p",{className:"mt-2 text-xs text-[#666]",children:["Save this now. Strix never stores it, so we cannot show it again. File:"," ",b.jsx("span",{className:"font-mono text-[#888]",children:O})]})]}),b.jsx("button",{onClick:t,className:"w-full cursor-pointer rounded-lg px-4 py-2.5 text-sm font-semibold text-white transition-colors hover:bg-[rgba(255,255,255,0.06)]",style:{border:"1px solid #2a2a2a"},children:"Done"})]})]})]})}const ZU="Your findings stay on your machine. They're rendered here locally in your browser and never uploaded or stored by Strix. Emailing a report is an explicit opt-in that sends an encrypted copy only you can open.",Q1=["critical","high","medium","low"],QU=500,WU=[{title:"One-click autofix + open a fix PR",desc:"Fix it for you and open a PR, retested.",slug:"autofix",icon:su},{title:"Export SOC 2 / ISO 27001 report",desc:"Share an auditor-ready report with your team.",slug:"compliance",icon:j2}],JU=[{title:"Scheduled pentesting",desc:"Continuous coverage for your whole org.",slug:"scheduled",icon:u2},{title:"Attack surface monitoring",desc:"Continuous coverage for your whole org.",slug:"asm",icon:o_},{title:"PR reviews",desc:"Pentest every pull request your team opens.",slug:"pr_reviews",icon:Jp}];function eH(){const[e,t]=re.useState(null),[i,a]=re.useState(null),[s,o]=re.useState(null),[c,d]=re.useState(null),[h,f]=re.useState("overview"),[p,m]=re.useState(null),[y,x]=re.useState(null),[_,N]=re.useState(!1),S=re.useCallback(async()=>{try{m(await IU())}catch{}},[]),E=re.useCallback(async()=>{try{x(await jU())}catch{}},[]);re.useEffect(()=>{S(),E()},[S,E]);const k=re.useRef(!1);re.useEffect(()=>{let q=!1,X;k.current=!1;const G=()=>{X=setTimeout(C,QU)},C=async()=>{if(!q)try{const{summary:j,raw:M,finished:U}=await DN(e);if(q)return;if(U&&!k.current){k.current=!0;const A=await X1(e);q||a(A);return}const[Y,Z]=await Promise.all([zN(e).catch(()=>({agents:[],events:[]})),LN(j.runId,e).catch(()=>[])]);if(q)return;a(A=>({summary:j,raw:M,finished:U,transcript:Y,vulnerabilities:Z,reportMarkdown:(A==null?void 0:A.reportMarkdown)??null})),G()}catch(j){if(q)return;o(j instanceof Error?j.message:"Could not load run data."),G()}};return(async()=>{try{const j=await X1(e);if(q)return;a(j),j.finished?k.current=!0:G()}catch(j){if(q)return;o(j instanceof Error?j.message:"Could not load run data."),G()}})(),()=>{q=!0,X&&clearTimeout(X)}},[e]);const w=re.useMemo(()=>i?LU(i.vulnerabilities):null,[i]),O=(i==null?void 0:i.vulnerabilities.find(q=>q.id===c))??null,B=(i==null?void 0:i.transcript.agents.length)??0,R=(p==null?void 0:p.verified)===!0,H=re.useCallback(q=>{t(q),d(null),a(null),o(null),f("overview")},[]),I=re.useCallback(()=>{qi("email_report"),N(!0)},[]),K=re.useCallback(()=>{qi("history_unlock"),E(),f("history")},[E]),L=re.useCallback(async()=>{await HU(),await S(),await E()},[S,E]);return b.jsxs("div",{className:"min-h-screen bg-black text-white flex",children:[b.jsx(PU,{view:h,onSelectView:q=>{q==="history"?K():f(q)},issuesCount:(i==null?void 0:i.vulnerabilities.length)??0,agentCount:B,runCount:(y==null?void 0:y.count)??0,verified:R,email:(p==null?void 0:p.email)??null,onOpenEmail:I,onOpenHistory:K,onForget:()=>void L()}),b.jsxs("div",{className:"flex-1 min-w-0",children:[b.jsx("div",{className:"border-b border-[#222]",children:b.jsxs("div",{className:"max-w-[72rem] mx-auto px-6 py-4 flex items-center gap-1.5",children:[b.jsxs("a",{href:"https://app.strix.ai",target:"_blank",rel:"noopener noreferrer",onClick:()=>qi("logo"),className:"flex items-center gap-1.5 opacity-90 transition-opacity hover:opacity-100 lg:hidden",title:"Open Strix Cloud",children:[b.jsx("img",{src:"./logo.png",alt:"Strix",className:"w-10 h-8 object-cover"}),b.jsx("div",{className:"text-base text-white font-medium tracking-tight",children:"Strix"})]}),b.jsx("span",{className:"text-xs text-[#666]",children:"Local results"}),i&&b.jsx(nH,{finished:i.finished}),b.jsxs("div",{className:"ml-auto flex items-center gap-3",children:[R&&y&&!y.locked&&y.runs.length>0&&b.jsx(tH,{runs:y,activeRun:e,launchedName:(i==null?void 0:i.summary.runName)??(i==null?void 0:i.summary.runId)??"Current run",onSelect:H}),b.jsxs("a",{href:Ps,target:"_blank",rel:"noopener noreferrer",onClick:()=>qi("run_in_cloud"),className:"inline-flex items-center gap-1 rounded-lg bg-white px-3 py-1.5 text-xs font-semibold text-black transition-opacity hover:opacity-90",children:["Run in the cloud",b.jsx(Su,{className:"w-3 h-3","aria-hidden":"true"})]})]})]})}),b.jsxs("div",{className:"max-w-[72rem] mx-auto px-6 py-8 space-y-6",children:[b.jsxs("div",{className:"rounded-lg px-4 py-3 flex gap-3 items-start",style:{border:"1px solid rgba(255,255,255,0.08)"},children:[b.jsx(nm,{className:"w-5 h-5 flex-shrink-0 mt-0.5 text-emerald-400","aria-hidden":"true"}),b.jsx("p",{className:"text-sm text-[#aaa] leading-relaxed",children:ZU})]}),s&&!i&&h!=="history"&&b.jsxs("div",{className:"rounded-lg px-4 py-3 flex gap-3 items-start border border-red-500/30 bg-red-500/5",children:[b.jsx(i_,{className:"w-5 h-5 flex-shrink-0 mt-0.5 text-red-400","aria-hidden":"true"}),b.jsx("p",{className:"text-sm text-red-300",children:s})]}),h==="history"?b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(Ls,{className:"w-5 h-5 text-[#888]","aria-hidden":"true"}),b.jsx("h1",{className:"text-2xl font-semibold text-white",children:"Past runs"})]}),b.jsx(VU,{runs:y,activeRun:e,onSelectRun:H,onVerifyClick:I})]}):!i&&!s?b.jsxs("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-10 text-center",children:[b.jsx("div",{className:"w-6 h-6 mx-auto mb-3 rounded-full border-2 border-[#333] border-t-white animate-spin"}),b.jsx("p",{className:"text-sm text-[#888]",children:"Loading run data…"})]}):i&&w?b.jsxs(b.Fragment,{children:[b.jsx(rH,{summary:i.summary}),b.jsxs("div",{className:"flex gap-5 border-b border-[#2a2a2a] lg:hidden",children:[b.jsx(vp,{active:h==="overview",onClick:()=>f("overview"),children:"Overview"}),b.jsxs(vp,{active:h==="issues",onClick:()=>f("issues"),children:["Issues",i.vulnerabilities.length>0?` (${i.vulnerabilities.length})`:""]}),B>0&&b.jsxs(vp,{active:h==="agents",onClick:()=>f("agents"),children:["Agents (",B,")"]})]}),h==="overview"?b.jsx(cH,{summary:i.summary,counts:w,total:i.vulnerabilities.length,reportMarkdown:i.reportMarkdown,onOpenEmail:I}):h==="agents"&&B>0?b.jsx(uH,{run:i}):O?b.jsxs("div",{className:"space-y-4",children:[b.jsxs("button",{onClick:()=>d(null),className:"cursor-pointer inline-flex items-center gap-1.5 text-sm text-[#888] hover:text-white transition-colors",children:[b.jsx(e2,{className:"w-4 h-4"})," Back to all findings"]}),b.jsx(v4,{vulnerability:O})]}):b.jsx(aH,{vulnerabilities:i.vulnerabilities,finished:i.finished,onSelect:q=>d(q)})]}):null]})]}),b.jsx(KU,{open:_,onClose:()=>N(!1),activeRun:e,auth:p,onVerified:()=>{S(),E()}})]})}function tH({runs:e,activeRun:t,launchedName:i,onSelect:a}){const[s,o]=re.useState(!1),c=t??i;return b.jsxs("div",{className:"relative",children:[b.jsxs("button",{onClick:()=>o(d=>!d),onBlur:()=>setTimeout(()=>o(!1),150),className:"flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-xs text-[#aaa] transition-colors hover:text-white",style:{border:"1px solid #2a2a2a"},children:[b.jsx(Ls,{className:"w-3.5 h-3.5","aria-hidden":"true"}),b.jsx("span",{className:"max-w-[160px] truncate",children:c}),b.jsx(n_,{className:"w-3.5 h-3.5","aria-hidden":"true"})]}),s&&b.jsx("div",{className:"absolute right-0 z-50 mt-1.5 max-h-80 w-64 overflow-y-auto rounded-lg py-1 shadow-xl",style:{border:"1px solid #2a2a2a",background:"#0a0a0a"},children:e.runs.map(d=>{const h=d.name===t;return b.jsxs("button",{onMouseDown:()=>a(d.name),className:`flex w-full items-center gap-2 px-3 py-2 text-left text-xs transition-colors hover:bg-[rgba(255,255,255,0.06)] ${h?"text-white":"text-[#aaa]"}`,children:[b.jsxs("span",{className:"min-w-0 flex-1",children:[b.jsx("span",{className:"block truncate",children:d.name}),d.target&&b.jsx("span",{className:"block truncate font-mono text-[#666]",children:d.target})]}),h&&b.jsx("span",{className:"h-1.5 w-1.5 flex-shrink-0 rounded-full bg-emerald-400"})]},d.name)})})]})}function nH({finished:e}){return e?b.jsxs("span",{className:"ml-3 inline-flex items-center gap-1.5 text-xs text-[#888]",children:[b.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#555]"}),"Complete"]}):b.jsxs("span",{className:"ml-3 inline-flex items-center gap-1.5 text-xs text-emerald-400",children:[b.jsxs("span",{className:"relative flex h-1.5 w-1.5",children:[b.jsx("span",{className:"absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75 animate-ping"}),b.jsx("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-emerald-400"})]}),"Live"]})}function iH(e){if(e==null)return null;if(e<60)return`${e}s`;const t=Math.floor(e/60);return t<60?`${t}m`:`${Math.floor(t/60)}h ${t%60}m`}function rH({summary:e}){const t=iH(e.durationSeconds);return b.jsxs("div",{children:[b.jsx("h1",{className:"text-2xl font-semibold text-white",children:e.runName??e.runId??"Scan results"}),b.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-[#888]",children:[e.targets.length>0&&b.jsx("span",{className:"font-mono text-[#aaa]",children:e.targets.join(", ")}),e.scanMode&&b.jsx(yp,{label:e.scanMode}),t&&b.jsx(yp,{label:t}),e.status&&b.jsx(yp,{label:e.status})]})]})}function yp({label:e}){return b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[#333]",children:"·"}),b.jsx("span",{className:"capitalize",children:e})]})}function aH({vulnerabilities:e,finished:t,onSelect:i}){const a=[...e].sort((s,o)=>Q1.indexOf(s.severity)-Q1.indexOf(o.severity));return a.length===0?b.jsxs("div",{className:"space-y-4",children:[b.jsx("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-8 text-center text-sm text-[#888]",children:t?"No findings in this run.":"No findings yet. The scan is still running…"}),t&&b.jsxs("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:[b.jsx("p",{className:"text-sm font-medium text-white",children:"Stay ahead of new exposures"}),b.jsx("p",{className:"mt-0.5 mb-3 text-xs text-[#666]",children:"Attack surface monitoring catches new exposures for your org over time."}),b.jsx(Ms,{label:"Attack surface monitoring",desc:"Continuous coverage for your whole org.",slug:"asm",icon:o_})]})]}):b.jsx("div",{className:"space-y-2",children:a.map(s=>b.jsxs("button",{onClick:()=>i(s.id),className:"cursor-pointer w-full text-left rounded-lg border border-[#222] hover:border-[#444] bg-[rgba(255,255,255,0.02)] px-4 py-3 transition-colors flex items-center gap-3",children:[b.jsx("span",{className:`w-2.5 h-2.5 rounded-full flex-shrink-0 ${im(s.severity)}`,"aria-hidden":"true"}),b.jsxs("span",{className:"flex-1 min-w-0",children:[b.jsx("span",{className:"block text-sm font-medium text-white truncate",children:s.title}),s.target&&b.jsx("span",{className:"block text-xs text-[#666] font-mono truncate",children:s.target})]}),b.jsx("span",{className:`text-xs font-semibold px-2 py-0.5 rounded-full border capitalize ${h_[s.severity]}`,children:s.severity})]},s.id))})}function sH(e){return e.replace(/^\s*#{1,6}[ \t]+.*(?:\r?\n)+/,"").trimStart()}function lH(e){const t=[];let i=null;for(const a of e.split(` `)){const s=a.match(/^#{1,6}\s+(.*)$/);if(s){const o=s[1].trim().toLowerCase();if(o===i)continue;i=o}else a.trim()!==""&&(i=null);t.push(a)}return t.join(` -`)}function oH({onOpenEmail:e}){return b.jsx("button",{onClick:e,className:"group w-full cursor-pointer rounded-xl border border-emerald-500/25 bg-emerald-500/[0.06] p-4 text-left transition-colors hover:border-emerald-500/40",children:b.jsxs("div",{className:"flex items-center gap-3",children:[b.jsx("div",{className:"flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-lg",style:{border:"1px solid rgba(16,185,129,0.3)",background:"rgba(16,185,129,0.08)"},children:b.jsx(tm,{className:"h-4 w-4 text-emerald-400","aria-hidden":"true"})}),b.jsxs("div",{className:"min-w-0 flex-1",children:[b.jsx("p",{className:"text-sm font-semibold text-white",children:"Email an encrypted PDF report of this run"}),b.jsx("p",{className:"mt-0.5 text-xs text-[#888]",children:"Encrypted with a key only you can see, so it is impossible for us to read it. We just verify your email with a one-time code before sending."})]}),b.jsx("span",{className:"flex-shrink-0 rounded-lg bg-white px-3 py-1.5 text-xs font-semibold text-black transition-opacity group-hover:opacity-90",children:"Email report"})]})})}function cH({summary:e,counts:t,total:i,reportMarkdown:a,onOpenEmail:s}){const o=[["Executive Summary",e.executiveSummary],["Technical Analysis",e.technicalAnalysis],["Methodology",e.methodology],["Recommendations",e.recommendations]].filter(([,c])=>!!c).map(([c,d])=>({title:c,content:sH(d)}));return b.jsxs("div",{className:"space-y-6",children:[i>0&&b.jsx("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:b.jsx(_4,{findings:{total:i,...t}})}),b.jsx(oH,{onOpenEmail:s}),o.length>0?b.jsx("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5 space-y-8",children:o.map(c=>b.jsx(na,{title:c.title,content:c.content},c.title))}):a?b.jsx("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:b.jsx(na,{content:lH(a)})}):i===0&&b.jsx("p",{className:"text-sm text-[#888]",children:"No summary available for this run yet."}),b.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:WU.map(c=>b.jsx(Ux,{item:c},c.slug))}),b.jsxs("div",{children:[b.jsx("p",{className:"mb-2 text-sm font-semibold text-white",children:"Continuous coverage for your org"}),b.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:JU.map(c=>b.jsx(Ux,{item:c},c.slug))})]})]})}function vp({active:e,onClick:t,children:i}){return b.jsxs("button",{onClick:t,className:`cursor-pointer relative pb-2.5 text-sm font-semibold transition-colors ${e?"text-white":"text-[#666] hover:text-white"}`,children:[i,e&&b.jsx("span",{className:"absolute bottom-0 inset-x-0 h-0.5 bg-white rounded-full"})]})}function uH({run:e}){const{agents:t,events:i}=e.transcript,a=re.useMemo(()=>_U(t,i),[t,i]),[s,o]=re.useState(null),c=s?t.find(d=>d.id===s)??null:null;return b.jsxs("div",{className:"space-y-5",children:[b.jsxs("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(d_,{className:"w-4 h-4 text-[#888]","aria-hidden":"true"}),b.jsx("h2",{className:"text-sm font-semibold text-white",children:"Agent graph"}),b.jsxs("span",{className:"text-xs text-[#666]",children:[t.length," agent",t.length===1?"":"s"]})]}),b.jsx("p",{className:"mt-1 mb-4 text-xs text-[#666]",children:"Click an agent to open its full transcript."}),b.jsx("div",{className:"h-[480px] rounded-lg border border-[#1a1a1a] overflow-hidden",children:b.jsx(u9,{agents:a,selectedAgentId:s,onSelectAgent:d=>o(d),eventsLoaded:!0,eventsEmpty:a.size===0,scanCompleted:e.finished})})]}),b.jsxs("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:[b.jsx("p",{className:"text-sm font-semibold text-white",children:"Drive the agents live"}),b.jsx("p",{className:"mt-0.5 text-xs text-[#666]",children:"Steer and re-run this scan from the web."}),b.jsxs("div",{className:"mt-3 flex flex-wrap gap-2.5",children:[b.jsx(Ms,{label:"Steer agents from the web",desc:"Guide the agents live while they scan.",slug:"live_scan_prompt",icon:_T}),b.jsx(Ms,{label:"Re-run in Strix Cloud with more depth",desc:"Run this scan on managed infra with more depth.",slug:"live_scan",icon:ST})]})]}),c&&b.jsx(SU,{agent:c,events:i,onClose:()=>o(null)})]})}Yk.createRoot(document.getElementById("root")).render(b.jsx(re.StrictMode,{children:b.jsx(eH,{})})); +`)}function oH({onOpenEmail:e}){return b.jsx("button",{onClick:e,className:"group w-full cursor-pointer rounded-xl border border-emerald-500/25 bg-emerald-500/[0.06] p-4 text-left transition-colors hover:border-emerald-500/40",children:b.jsxs("div",{className:"flex items-center gap-3",children:[b.jsx("div",{className:"flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-lg",style:{border:"1px solid rgba(16,185,129,0.3)",background:"rgba(16,185,129,0.08)"},children:b.jsx(tm,{className:"h-4 w-4 text-emerald-400","aria-hidden":"true"})}),b.jsxs("div",{className:"min-w-0 flex-1",children:[b.jsx("p",{className:"text-sm font-semibold text-white",children:"Email an encrypted PDF report of this run"}),b.jsx("p",{className:"mt-0.5 text-xs text-[#888]",children:"Encrypted with a key only you can see, email verified with a one-time code before sending."})]}),b.jsx("span",{className:"flex-shrink-0 rounded-lg bg-white px-3 py-1.5 text-xs font-semibold text-black transition-opacity group-hover:opacity-90",children:"Email report"})]})})}function cH({summary:e,counts:t,total:i,reportMarkdown:a,onOpenEmail:s}){const o=[["Executive Summary",e.executiveSummary],["Technical Analysis",e.technicalAnalysis],["Methodology",e.methodology],["Recommendations",e.recommendations]].filter(([,c])=>!!c).map(([c,d])=>({title:c,content:sH(d)}));return b.jsxs("div",{className:"space-y-6",children:[i>0&&b.jsx("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:b.jsx(_4,{findings:{total:i,...t}})}),b.jsx(oH,{onOpenEmail:s}),o.length>0?b.jsx("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5 space-y-8",children:o.map(c=>b.jsx(na,{title:c.title,content:c.content},c.title))}):a?b.jsx("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:b.jsx(na,{content:lH(a)})}):i===0&&b.jsx("p",{className:"text-sm text-[#888]",children:"No summary available for this run yet."}),b.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:WU.map(c=>b.jsx(Ux,{item:c},c.slug))}),b.jsxs("div",{children:[b.jsx("p",{className:"mb-2 text-sm font-semibold text-white",children:"Continuous coverage for your org"}),b.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:JU.map(c=>b.jsx(Ux,{item:c},c.slug))})]})]})}function vp({active:e,onClick:t,children:i}){return b.jsxs("button",{onClick:t,className:`cursor-pointer relative pb-2.5 text-sm font-semibold transition-colors ${e?"text-white":"text-[#666] hover:text-white"}`,children:[i,e&&b.jsx("span",{className:"absolute bottom-0 inset-x-0 h-0.5 bg-white rounded-full"})]})}function uH({run:e}){const{agents:t,events:i}=e.transcript,a=re.useMemo(()=>_U(t,i),[t,i]),[s,o]=re.useState(null),c=s?t.find(d=>d.id===s)??null:null;return b.jsxs("div",{className:"space-y-5",children:[b.jsxs("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(d_,{className:"w-4 h-4 text-[#888]","aria-hidden":"true"}),b.jsx("h2",{className:"text-sm font-semibold text-white",children:"Agent graph"}),b.jsxs("span",{className:"text-xs text-[#666]",children:[t.length," agent",t.length===1?"":"s"]})]}),b.jsx("p",{className:"mt-1 mb-4 text-xs text-[#666]",children:"Click an agent to open its full transcript."}),b.jsx("div",{className:"h-[480px] rounded-lg border border-[#1a1a1a] overflow-hidden",children:b.jsx(u9,{agents:a,selectedAgentId:s,onSelectAgent:d=>o(d),eventsLoaded:!0,eventsEmpty:a.size===0,scanCompleted:e.finished})})]}),b.jsxs("div",{className:"rounded-xl border border-[#222] bg-[rgba(255,255,255,0.02)] p-5",children:[b.jsx("p",{className:"text-sm font-semibold text-white",children:"Drive the agents live"}),b.jsx("p",{className:"mt-0.5 text-xs text-[#666]",children:"Steer and re-run this scan from the web."}),b.jsxs("div",{className:"mt-3 flex flex-wrap gap-2.5",children:[b.jsx(Ms,{label:"Steer agents from the web",desc:"Guide the agents live while they scan.",slug:"live_scan_prompt",icon:_T}),b.jsx(Ms,{label:"Re-run in Strix Cloud with more depth",desc:"Run this scan on managed infra with more depth.",slug:"live_scan",icon:ST})]})]}),c&&b.jsx(SU,{agent:c,events:i,onClose:()=>o(null)})]})}Yk.createRoot(document.getElementById("root")).render(b.jsx(re.StrictMode,{children:b.jsx(eH,{})})); diff --git a/strix/viewer/viewer_dist/index.html b/strix/viewer/viewer_dist/index.html index 5513557f..3cf2eee2 100644 --- a/strix/viewer/viewer_dist/index.html +++ b/strix/viewer/viewer_dist/index.html @@ -6,7 +6,7 @@ Strix Results - + diff --git a/strix/viewer_src/src/App.tsx b/strix/viewer_src/src/App.tsx index 4e97e536..f7b17fce 100644 --- a/strix/viewer_src/src/App.tsx +++ b/strix/viewer_src/src/App.tsx @@ -562,8 +562,7 @@ function EmailReportCta({ onOpenEmail }: { onOpenEmail: () => void }) {

Email an encrypted PDF report of this run

- Encrypted with a key only you can see, so it is impossible for us to read it. - We just verify your email with a one-time code before sending. + Encrypted with a key only you can see, email verified with a one-time code before sending.