tide-commander 1.110.2 → 1.110.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{BossLogsModal-DBeMak5-.js → BossLogsModal-BBO4P4qG.js} +1 -1
- package/dist/assets/{BossSpawnModal-DDl6qgnq.js → BossSpawnModal-DJ1DmEWp.js} +1 -1
- package/dist/assets/{ControlsModal-BBUukX-p.js → ControlsModal-DeRColMt.js} +1 -1
- package/dist/assets/{DockerLogsModal-BWf3XDEI.js → DockerLogsModal-DGpatLiw.js} +1 -1
- package/dist/assets/{EmbeddedEditor-CIOdhnaW.js → EmbeddedEditor-Dsgf6hMF.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-qG-_WeOb.js → GmailOAuthSetup-CGis0yjA.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-BK3lzU4n.js → GoogleOAuthSetup-Bnhf_nts.js} +1 -1
- package/dist/assets/{IframeModal-D_NEs_Ld.js → IframeModal-BahnrxAm.js} +1 -1
- package/dist/assets/{IntegrationsPanel-yphWX1ZD.js → IntegrationsPanel-BUs_7XBA.js} +2 -2
- package/dist/assets/{LogViewerModal-B0h9NNRk.js → LogViewerModal-DXxjS8NR.js} +1 -1
- package/dist/assets/{MonitoringModal-Ciw7KnXH.js → MonitoringModal-DPeyASIV.js} +1 -1
- package/dist/assets/{PM2LogsModal-C1dYQaff.js → PM2LogsModal-kNNjOmdB.js} +1 -1
- package/dist/assets/{RestoreArchivedAreaModal-DOwzfu-D.js → RestoreArchivedAreaModal-CVHj28LX.js} +1 -1
- package/dist/assets/{Scene2DCanvas-MHfv4Rzg.js → Scene2DCanvas-BShs3yx7.js} +1 -1
- package/dist/assets/{SceneManager-cm1Kj0YD.js → SceneManager-CF89Ktyf.js} +1 -1
- package/dist/assets/{SkillsPanel-DLwMkORc.js → SkillsPanel-BVRP74vV.js} +1 -1
- package/dist/assets/{SlackMultiInstanceSetup-Dql_wPMX.js → SlackMultiInstanceSetup-f6boDwm1.js} +1 -1
- package/dist/assets/{SpawnModal-DzPTSOKV.js → SpawnModal-Bm8rg45q.js} +1 -1
- package/dist/assets/StatisticsModal-DuNj8UzS.js +1 -0
- package/dist/assets/{SubordinateAssignmentModal-CoLzD3z2.js → SubordinateAssignmentModal-Cn3e2lNE.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-BOi2zr7N.js → TriggerManagerPanel-Deo2dE4T.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-DB1ygPDS.js → WorkflowEditorPanel-D-_duRlu.js} +1 -1
- package/dist/assets/{index-DKASWGtq.js → index-Bb-7Dvp1.js} +1 -1
- package/dist/assets/{index-C6EHHgC0.js → index-BsykE0PB.js} +1 -1
- package/dist/assets/{index-D4XW6MSF.js → index-C9A7qvBF.js} +2 -2
- package/dist/assets/{index-DKdZI-Ar.js → index-CZGINGY-.js} +1 -1
- package/dist/assets/{index-6Wak7CPm.js → index-DZu9t3BI.js} +1 -1
- package/dist/assets/{index-BZsQOteM.js → index-DeeuvLUM.js} +1 -1
- package/dist/assets/index-v1ImDk7h.js +11 -0
- package/dist/assets/{index-BXJSMT4a.js → index-y3mA_lBK.js} +3 -3
- package/dist/assets/{index-ThbMNdRp.js → index-zphXsHhS.js} +1 -1
- package/dist/assets/{main-BxA3Bhkv.js → main-CyZg1kKu.js} +94 -94
- package/dist/assets/{main-BLrGoeQ_.css → main-VciFPjA1.css} +1 -1
- package/dist/assets/{web-zdygXcYu.js → web-BKgFBlgl.js} +1 -1
- package/dist/assets/{web-BskC98UQ.js → web-BZcyP_IR.js} +1 -1
- package/dist/assets/{web-CSRmX8Ge.js → web-VEWFSkZI.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/src/packages/server/data/builtin-skills/send-message-to-agent.js +54 -1
- package/dist/src/packages/server/routes/agents.js +43 -0
- package/dist/src/packages/server/services/collapse-context.js +72 -0
- package/dist/src/packages/server/services/runtime-service.js +46 -0
- package/dist/src/packages/server/websocket/handlers/agent-handler.js +27 -12
- package/package.json +1 -1
- package/dist/assets/index-BP6ukiYG.js +0 -11
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GmailOAuthSetup-
|
|
2
|
-
import{r as d,aL as w,l as R,j as e,ad as P,bC as T}from"./main-BxA3Bhkv.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const z={"gmail-oauth":d.lazy(()=>T(()=>import("./GmailOAuthSetup-qG-_WeOb.js"),__vite__mapDeps([0,1,2,3,4])).then(n=>({default:n.GmailOAuthSetup}))),"google-oauth":d.lazy(()=>T(()=>import("./GoogleOAuthSetup-BK3lzU4n.js"),__vite__mapDeps([5,1,2,3,4])).then(n=>({default:n.GoogleOAuthSetup}))),"slack-multi-instance":d.lazy(()=>T(()=>import("./SlackMultiInstanceSetup-Dql_wPMX.js"),__vite__mapDeps([6,1,2,3,4])).then(n=>({default:n.SlackMultiInstanceSetup})))},A={gmail:"✉️",slack:"💬",jira:"📋","google-calendar":"📅","google-drive":"📁",docx:"📄"},B={gmail:"Send and receive emails through Gmail. Supports OAuth 2.0 authentication for secure access to your inbox.",slack:"Connect to Slack workspaces. Send messages, receive notifications, and integrate with channels.",jira:"Manage Jira issues and projects. Create tickets, track progress, and handle service desk requests.","google-calendar":"Access Google Calendar events. Create, update, and monitor calendar entries.","google-drive":"Read, create, and edit files in Google Drive. Search and manage folders.",docx:"Generate and manipulate DOCX documents. Create reports, templates, and formatted documents."},E={gmail:["Google Cloud Console project","OAuth 2.0 credentials (Client ID & Secret)","Gmail API enabled"],slack:["Bot token (xoxb-) with App-Level Token for real-time Socket Mode, OR User token (xoxp-) for polling mode (~30-60s lag, no Slack app config needed)","For Socket Mode: enable Socket Mode + Event Subscriptions; subscribe to bot events message.channels, message.groups, message.im","Required scopes: channels:history, channels:read, chat:write, groups:history, groups:read, im:history, im:read, users:read","Polling mode (xoxp-) mirrors all channels/groups/DMs the user is a member of — supports xoxp- user tokens that cannot use Socket Mode"],jira:["Jira Cloud instance URL","API Token (from Atlassian account)","Account email address"],"google-calendar":["Google Cloud Console project","OAuth 2.0 credentials","Calendar API enabled"],"google-drive":["Google Cloud Console project","OAuth 2.0 credentials (Client ID & Secret)","Google Drive API enabled"],docx:["No external credentials required","Templates directory (optional)"]},s={overlay:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4,backdropFilter:"blur(4px)",animation:"fadeIn 0.15s ease-out"},modal:{background:"var(--surface-0, #1e1e2e)",borderRadius:12,border:"1px solid var(--border, #313244)",width:"90vw",maxWidth:720,maxHeight:"85vh",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"0 20px 60px rgba(0, 0, 0, 0.5)",animation:"slideUp 0.2s ease-out"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:"1px solid var(--border, #313244)",background:"var(--surface-1, #181825)"},headerTitle:{fontSize:16,fontWeight:600,color:"var(--text-primary, #cdd6f4)",display:"flex",alignItems:"center",gap:8},closeBtn:{background:"none",border:"none",color:"var(--text-secondary, #a6adc8)",fontSize:20,cursor:"pointer",padding:"4px 8px",borderRadius:6,lineHeight:1},tabs:{display:"flex",borderBottom:"1px solid var(--border, #313244)",background:"var(--surface-1, #181825)",overflowX:"auto",scrollbarWidth:"none"},tab:n=>({padding:"10px 16px",background:"none",border:"none",borderBottom:n?"2px solid var(--accent, #89b4fa)":"2px solid transparent",color:n?"var(--accent, #89b4fa)":"var(--text-secondary, #a6adc8)",fontSize:13,fontWeight:n?600:400,cursor:"pointer",display:"flex",alignItems:"center",gap:6,whiteSpace:"nowrap",transition:"color 0.15s, border-color 0.15s",flexShrink:0}),tabStatus:(n,u)=>({width:6,height:6,borderRadius:"50%",background:u?"#f38ba8":n?"#a6e3a1":"#fab387",flexShrink:0}),body:{flex:1,overflow:"auto",padding:20},integrationHeader:{display:"flex",alignItems:"flex-start",gap:12,marginBottom:16},iconCircle:{width:44,height:44,borderRadius:10,background:"var(--surface-1, #181825)",border:"1px solid var(--border, #313244)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:22,flexShrink:0},integrationMeta:{flex:1},integrationName:{fontSize:15,fontWeight:600,color:"var(--text-primary, #cdd6f4)",marginBottom:4,display:"flex",alignItems:"center",gap:8},description:{fontSize:13,color:"var(--text-secondary, #a6adc8)",lineHeight:1.5},statusBadge:(n,u)=>({display:"inline-flex",alignItems:"center",gap:4,padding:"2px 8px",borderRadius:10,fontSize:11,fontWeight:600,background:u?"rgba(243, 139, 168, 0.15)":n?"rgba(166, 227, 161, 0.15)":"rgba(250, 179, 135, 0.15)",color:u?"#f38ba8":n?"#a6e3a1":"#fab387"}),section:{marginTop:16,padding:12,borderRadius:8,background:"var(--surface-1, #181825)",border:"1px solid var(--border, #313244)"},sectionTitle:{fontSize:12,fontWeight:600,color:"var(--text-secondary, #a6adc8)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:8},requirementList:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:4},requirementItem:{fontSize:12,color:"var(--text-secondary, #a6adc8)",display:"flex",alignItems:"center",gap:6},formSection:{marginTop:16},formSectionTitle:{fontSize:12,fontWeight:600,color:"var(--text-secondary, #a6adc8)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:12}};function O({integration:n,onSave:u,onCancel:x}){const[p,I]=d.useState({...n.values}),[b,h]=d.useState({}),[f,C]=d.useState(!1),[m,v]=d.useState(!1);d.useEffect(()=>{I({...n.values}),h({}),v(!1)},[n.id]);const y=(r,l)=>{I(o=>({...o,[r]:l})),h(o=>{const i={...o};return delete i[r],i}),v(!1)},k=async r=>{r.preventDefault();const l={};for(const o of n.schema)if(o.required&&!p[o.key]&&p[o.key]!==0&&p[o.key]!==!1&&(l[o.key]=`${o.label} is required`),o.validate){const i=o.validate(p[o.key]);i&&(l[o.key]=i)}if(Object.keys(l).length>0){h(l);return}C(!0);try{await u(p),v(!0),setTimeout(()=>v(!1),3e3)}catch(o){h({_form:String(o)})}finally{C(!1)}},S=new Map;for(const r of n.schema){const l=r.group||"";S.has(l)||S.set(l,[]),S.get(l).push(r)}const a={display:"flex",flexDirection:"column",gap:4,marginBottom:12},t={fontSize:13,fontWeight:500,color:"var(--text-primary, #cdd6f4)"},c={padding:"8px 10px",borderRadius:6,border:"1px solid var(--border, #313244)",background:"var(--surface-0, #1e1e2e)",color:"var(--text-primary, #cdd6f4)",fontSize:13,outline:"none",width:"100%",boxSizing:"border-box"},g={fontSize:11,color:"var(--text-secondary, #a6adc8)"},j={fontSize:11,color:"#f38ba8"},_=r=>{var o;const l=p[r.key]??r.defaultValue??"";switch(r.type){case"boolean":return e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8,fontSize:13,color:"var(--text-primary, #cdd6f4)",cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",checked:!!l,onChange:i=>y(r.key,i.target.checked)}),r.label]});case"select":return e.jsxs("select",{style:c,value:String(l),onChange:i=>y(r.key,i.target.value),children:[e.jsx("option",{value:"",children:r.placeholder||"Select..."}),(o=r.options)==null?void 0:o.map(i=>e.jsx("option",{value:i.value,children:i.label},i.value))]});case"textarea":return e.jsx("textarea",{style:{...c,resize:"vertical",minHeight:80},value:String(l),placeholder:r.placeholder,onChange:i=>y(r.key,i.target.value),rows:4});case"number":return e.jsx("input",{type:"number",style:c,value:l===""?"":Number(l),placeholder:r.placeholder,onChange:i=>y(r.key,i.target.value===""?"":Number(i.target.value))});case"password":return e.jsx("input",{type:"password",style:c,value:String(l),placeholder:r.placeholder,onChange:i=>y(r.key,i.target.value),autoComplete:"off"});default:return e.jsx("input",{type:r.type,style:c,value:String(l),placeholder:r.placeholder,onChange:i=>y(r.key,i.target.value)})}};return e.jsxs("form",{onSubmit:k,children:[b._form&&e.jsx("div",{style:{...j,marginBottom:12,padding:"8px 10px",borderRadius:6,background:"rgba(243, 139, 168, 0.1)"},children:b._form}),Array.from(S.entries()).map(([r,l])=>e.jsxs("div",{children:[r&&e.jsx("div",{style:{...s.sectionTitle,marginTop:16,marginBottom:8},children:r}),l.map(o=>e.jsxs("div",{style:a,children:[o.type!=="boolean"&&e.jsxs("label",{style:t,children:[o.label,o.required&&e.jsx("span",{style:{color:"#f38ba8",marginLeft:2},children:"*"})]}),_(o),o.description&&e.jsx("span",{style:g,children:o.description}),b[o.key]&&e.jsx("span",{style:j,children:b[o.key]})]},o.key))]},r||"_default")),e.jsxs("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",marginTop:16,paddingTop:12,borderTop:"1px solid var(--border, #313244)"},children:[e.jsx("button",{type:"button",onClick:x,style:{padding:"8px 16px",borderRadius:6,border:"1px solid var(--border, #313244)",background:"none",color:"var(--text-secondary, #a6adc8)",fontSize:13,cursor:"pointer"},children:"Cancel"}),e.jsx("button",{type:"submit",disabled:f,style:{padding:"8px 16px",borderRadius:6,border:"none",background:m?"#a6e3a1":"var(--accent, #89b4fa)",color:"#1e1e2e",fontSize:13,fontWeight:600,cursor:f?"wait":"pointer",opacity:f?.7:1},children:f?"Saving...":m?"Saved":"Save Configuration"})]})]})}function L({isOpen:n,onClose:u,initialTab:x}){const[p,I]=d.useState([]),[b,h]=d.useState(x||null),[f,C]=d.useState(!0),[m,v]=d.useState(null),y=d.useRef(x||null),k=d.useCallback(async()=>{try{const t=await w(R("/api/integrations"));if(!t.ok)throw new Error(`HTTP ${t.status}`);const c=await t.json();I(c),v(null),h(g=>{const j=g||x||(c.length>0?c[0].id:null);return y.current=j,j})}catch(t){v(`Failed to load integrations: ${t}`)}finally{C(!1)}},[x]);d.useEffect(()=>{n&&(C(!0),k(),x&&h(x))},[n,x]);const S=d.useCallback(async(t,c)=>{const g=await w(R(`/api/integrations/${t}/config`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!g.ok){const j=await g.json().catch(()=>({}));throw new Error(j.error||`HTTP ${g.status}`)}await k()},[k]);if(!n)return null;const a=p.find(t=>t.id===b);return e.jsx("div",{style:s.overlay,onClick:u,children:e.jsxs("div",{style:s.modal,onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{style:s.header,children:[e.jsxs("div",{style:s.headerTitle,children:[e.jsx("span",{children:"🔌"}),e.jsx("span",{children:"Integrations"})]}),e.jsx("button",{style:s.closeBtn,onClick:u,title:"Close",children:"×"})]}),f&&e.jsx("div",{style:{padding:40,textAlign:"center",color:"var(--text-secondary, #a6adc8)"},children:"Loading integrations..."}),m&&e.jsxs("div",{style:{padding:20,textAlign:"center"},children:[e.jsx("div",{style:{color:"#f38ba8",marginBottom:8},children:m}),e.jsx("button",{onClick:k,style:{padding:"6px 12px",borderRadius:6,border:"1px solid var(--border, #313244)",background:"none",color:"var(--text-primary, #cdd6f4)",cursor:"pointer",fontSize:13},children:"Retry"})]}),!f&&!m&&p.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:s.tabs,children:p.map(t=>e.jsxs("button",{style:s.tab(b===t.id),onClick:()=>h(t.id),children:[e.jsx("span",{children:A[t.id]||"🔌"}),e.jsx("span",{children:t.name}),e.jsx("span",{style:s.tabStatus(t.status.connected,!!t.status.error)})]},t.id))}),e.jsx("div",{style:s.body,children:a&&e.jsxs("div",{children:[e.jsxs("div",{style:s.integrationHeader,children:[e.jsx("div",{style:s.iconCircle,children:A[a.id]||"🔌"}),e.jsxs("div",{style:s.integrationMeta,children:[e.jsxs("div",{style:s.integrationName,children:[a.name,e.jsx("span",{style:s.statusBadge(a.status.connected,!!a.status.error),children:a.status.error?"✗ Error":a.status.connected?"✓ Connected":"⚠ Not Configured"}),a.id==="slack"&&(()=>{var g;const t=((g=a.values)==null?void 0:g.currentMode)||"none";if(t==="none")return null;const c=t==="polling"?"Polling":"Socket";return e.jsx("span",{style:{marginLeft:8,padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:500,background:"rgba(137, 180, 250, 0.15)",color:"#89b4fa",border:"1px solid rgba(137, 180, 250, 0.3)"},title:t==="polling"?"Web API polling (xoxp- user token)":"Real-time Socket Mode (xoxb- bot token)",children:c})})()]}),e.jsx("div",{style:s.description,children:B[a.id]||a.description})]})]}),a.status.error&&e.jsxs("div",{style:{...s.section,borderColor:"rgba(243, 139, 168, 0.3)",background:"rgba(243, 139, 168, 0.05)"},children:[e.jsx("div",{style:{...s.sectionTitle,color:"#f38ba8"},children:"Error"}),e.jsx("div",{style:{fontSize:12,color:"#f38ba8"},children:a.status.error})]}),E[a.id]&&e.jsxs("div",{style:s.section,children:[e.jsx("div",{style:s.sectionTitle,children:"Requirements"}),e.jsx("ul",{style:s.requirementList,children:E[a.id].map((t,c)=>e.jsxs("li",{style:s.requirementItem,children:[e.jsx("span",{style:{color:"var(--accent, #89b4fa)"},children:"•"}),t]},c))})]}),e.jsxs("div",{style:s.formSection,children:[e.jsx("div",{style:s.formSectionTitle,children:"Configuration"}),a.customComponent&&z[a.customComponent]?e.jsx(d.Suspense,{fallback:e.jsx("div",{style:{color:"var(--text-secondary)",fontSize:13},children:"Loading..."}),children:P.createElement(z[a.customComponent],{key:a.id,integration:a,onSave:t=>S(a.id,t),onCancel:u})}):e.jsx(O,{integration:a,onSave:t=>S(a.id,t),onCancel:u})]})]})})]}),!f&&!m&&p.length===0&&e.jsx("div",{style:{padding:40,textAlign:"center",color:"var(--text-secondary, #a6adc8)"},children:"No integrations available."})]})})}export{L as IntegrationsPanel};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GmailOAuthSetup-CGis0yjA.js","assets/main-CyZg1kKu.js","assets/vendor-react--Eh9ivFN.js","assets/vendor-three-Chj50gSY.js","assets/main-VciFPjA1.css","assets/GoogleOAuthSetup-Bnhf_nts.js","assets/SlackMultiInstanceSetup-f6boDwm1.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as d,aL as w,l as R,j as e,ad as P,bC as T}from"./main-CyZg1kKu.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const z={"gmail-oauth":d.lazy(()=>T(()=>import("./GmailOAuthSetup-CGis0yjA.js"),__vite__mapDeps([0,1,2,3,4])).then(n=>({default:n.GmailOAuthSetup}))),"google-oauth":d.lazy(()=>T(()=>import("./GoogleOAuthSetup-Bnhf_nts.js"),__vite__mapDeps([5,1,2,3,4])).then(n=>({default:n.GoogleOAuthSetup}))),"slack-multi-instance":d.lazy(()=>T(()=>import("./SlackMultiInstanceSetup-f6boDwm1.js"),__vite__mapDeps([6,1,2,3,4])).then(n=>({default:n.SlackMultiInstanceSetup})))},A={gmail:"✉️",slack:"💬",jira:"📋","google-calendar":"📅","google-drive":"📁",docx:"📄"},B={gmail:"Send and receive emails through Gmail. Supports OAuth 2.0 authentication for secure access to your inbox.",slack:"Connect to Slack workspaces. Send messages, receive notifications, and integrate with channels.",jira:"Manage Jira issues and projects. Create tickets, track progress, and handle service desk requests.","google-calendar":"Access Google Calendar events. Create, update, and monitor calendar entries.","google-drive":"Read, create, and edit files in Google Drive. Search and manage folders.",docx:"Generate and manipulate DOCX documents. Create reports, templates, and formatted documents."},E={gmail:["Google Cloud Console project","OAuth 2.0 credentials (Client ID & Secret)","Gmail API enabled"],slack:["Bot token (xoxb-) with App-Level Token for real-time Socket Mode, OR User token (xoxp-) for polling mode (~30-60s lag, no Slack app config needed)","For Socket Mode: enable Socket Mode + Event Subscriptions; subscribe to bot events message.channels, message.groups, message.im","Required scopes: channels:history, channels:read, chat:write, groups:history, groups:read, im:history, im:read, users:read","Polling mode (xoxp-) mirrors all channels/groups/DMs the user is a member of — supports xoxp- user tokens that cannot use Socket Mode"],jira:["Jira Cloud instance URL","API Token (from Atlassian account)","Account email address"],"google-calendar":["Google Cloud Console project","OAuth 2.0 credentials","Calendar API enabled"],"google-drive":["Google Cloud Console project","OAuth 2.0 credentials (Client ID & Secret)","Google Drive API enabled"],docx:["No external credentials required","Templates directory (optional)"]},s={overlay:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4,backdropFilter:"blur(4px)",animation:"fadeIn 0.15s ease-out"},modal:{background:"var(--surface-0, #1e1e2e)",borderRadius:12,border:"1px solid var(--border, #313244)",width:"90vw",maxWidth:720,maxHeight:"85vh",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"0 20px 60px rgba(0, 0, 0, 0.5)",animation:"slideUp 0.2s ease-out"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:"1px solid var(--border, #313244)",background:"var(--surface-1, #181825)"},headerTitle:{fontSize:16,fontWeight:600,color:"var(--text-primary, #cdd6f4)",display:"flex",alignItems:"center",gap:8},closeBtn:{background:"none",border:"none",color:"var(--text-secondary, #a6adc8)",fontSize:20,cursor:"pointer",padding:"4px 8px",borderRadius:6,lineHeight:1},tabs:{display:"flex",borderBottom:"1px solid var(--border, #313244)",background:"var(--surface-1, #181825)",overflowX:"auto",scrollbarWidth:"none"},tab:n=>({padding:"10px 16px",background:"none",border:"none",borderBottom:n?"2px solid var(--accent, #89b4fa)":"2px solid transparent",color:n?"var(--accent, #89b4fa)":"var(--text-secondary, #a6adc8)",fontSize:13,fontWeight:n?600:400,cursor:"pointer",display:"flex",alignItems:"center",gap:6,whiteSpace:"nowrap",transition:"color 0.15s, border-color 0.15s",flexShrink:0}),tabStatus:(n,u)=>({width:6,height:6,borderRadius:"50%",background:u?"#f38ba8":n?"#a6e3a1":"#fab387",flexShrink:0}),body:{flex:1,overflow:"auto",padding:20},integrationHeader:{display:"flex",alignItems:"flex-start",gap:12,marginBottom:16},iconCircle:{width:44,height:44,borderRadius:10,background:"var(--surface-1, #181825)",border:"1px solid var(--border, #313244)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:22,flexShrink:0},integrationMeta:{flex:1},integrationName:{fontSize:15,fontWeight:600,color:"var(--text-primary, #cdd6f4)",marginBottom:4,display:"flex",alignItems:"center",gap:8},description:{fontSize:13,color:"var(--text-secondary, #a6adc8)",lineHeight:1.5},statusBadge:(n,u)=>({display:"inline-flex",alignItems:"center",gap:4,padding:"2px 8px",borderRadius:10,fontSize:11,fontWeight:600,background:u?"rgba(243, 139, 168, 0.15)":n?"rgba(166, 227, 161, 0.15)":"rgba(250, 179, 135, 0.15)",color:u?"#f38ba8":n?"#a6e3a1":"#fab387"}),section:{marginTop:16,padding:12,borderRadius:8,background:"var(--surface-1, #181825)",border:"1px solid var(--border, #313244)"},sectionTitle:{fontSize:12,fontWeight:600,color:"var(--text-secondary, #a6adc8)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:8},requirementList:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:4},requirementItem:{fontSize:12,color:"var(--text-secondary, #a6adc8)",display:"flex",alignItems:"center",gap:6},formSection:{marginTop:16},formSectionTitle:{fontSize:12,fontWeight:600,color:"var(--text-secondary, #a6adc8)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:12}};function O({integration:n,onSave:u,onCancel:x}){const[p,I]=d.useState({...n.values}),[b,h]=d.useState({}),[f,C]=d.useState(!1),[m,v]=d.useState(!1);d.useEffect(()=>{I({...n.values}),h({}),v(!1)},[n.id]);const y=(r,l)=>{I(o=>({...o,[r]:l})),h(o=>{const i={...o};return delete i[r],i}),v(!1)},k=async r=>{r.preventDefault();const l={};for(const o of n.schema)if(o.required&&!p[o.key]&&p[o.key]!==0&&p[o.key]!==!1&&(l[o.key]=`${o.label} is required`),o.validate){const i=o.validate(p[o.key]);i&&(l[o.key]=i)}if(Object.keys(l).length>0){h(l);return}C(!0);try{await u(p),v(!0),setTimeout(()=>v(!1),3e3)}catch(o){h({_form:String(o)})}finally{C(!1)}},S=new Map;for(const r of n.schema){const l=r.group||"";S.has(l)||S.set(l,[]),S.get(l).push(r)}const a={display:"flex",flexDirection:"column",gap:4,marginBottom:12},t={fontSize:13,fontWeight:500,color:"var(--text-primary, #cdd6f4)"},c={padding:"8px 10px",borderRadius:6,border:"1px solid var(--border, #313244)",background:"var(--surface-0, #1e1e2e)",color:"var(--text-primary, #cdd6f4)",fontSize:13,outline:"none",width:"100%",boxSizing:"border-box"},g={fontSize:11,color:"var(--text-secondary, #a6adc8)"},j={fontSize:11,color:"#f38ba8"},_=r=>{var o;const l=p[r.key]??r.defaultValue??"";switch(r.type){case"boolean":return e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8,fontSize:13,color:"var(--text-primary, #cdd6f4)",cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",checked:!!l,onChange:i=>y(r.key,i.target.checked)}),r.label]});case"select":return e.jsxs("select",{style:c,value:String(l),onChange:i=>y(r.key,i.target.value),children:[e.jsx("option",{value:"",children:r.placeholder||"Select..."}),(o=r.options)==null?void 0:o.map(i=>e.jsx("option",{value:i.value,children:i.label},i.value))]});case"textarea":return e.jsx("textarea",{style:{...c,resize:"vertical",minHeight:80},value:String(l),placeholder:r.placeholder,onChange:i=>y(r.key,i.target.value),rows:4});case"number":return e.jsx("input",{type:"number",style:c,value:l===""?"":Number(l),placeholder:r.placeholder,onChange:i=>y(r.key,i.target.value===""?"":Number(i.target.value))});case"password":return e.jsx("input",{type:"password",style:c,value:String(l),placeholder:r.placeholder,onChange:i=>y(r.key,i.target.value),autoComplete:"off"});default:return e.jsx("input",{type:r.type,style:c,value:String(l),placeholder:r.placeholder,onChange:i=>y(r.key,i.target.value)})}};return e.jsxs("form",{onSubmit:k,children:[b._form&&e.jsx("div",{style:{...j,marginBottom:12,padding:"8px 10px",borderRadius:6,background:"rgba(243, 139, 168, 0.1)"},children:b._form}),Array.from(S.entries()).map(([r,l])=>e.jsxs("div",{children:[r&&e.jsx("div",{style:{...s.sectionTitle,marginTop:16,marginBottom:8},children:r}),l.map(o=>e.jsxs("div",{style:a,children:[o.type!=="boolean"&&e.jsxs("label",{style:t,children:[o.label,o.required&&e.jsx("span",{style:{color:"#f38ba8",marginLeft:2},children:"*"})]}),_(o),o.description&&e.jsx("span",{style:g,children:o.description}),b[o.key]&&e.jsx("span",{style:j,children:b[o.key]})]},o.key))]},r||"_default")),e.jsxs("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",marginTop:16,paddingTop:12,borderTop:"1px solid var(--border, #313244)"},children:[e.jsx("button",{type:"button",onClick:x,style:{padding:"8px 16px",borderRadius:6,border:"1px solid var(--border, #313244)",background:"none",color:"var(--text-secondary, #a6adc8)",fontSize:13,cursor:"pointer"},children:"Cancel"}),e.jsx("button",{type:"submit",disabled:f,style:{padding:"8px 16px",borderRadius:6,border:"none",background:m?"#a6e3a1":"var(--accent, #89b4fa)",color:"#1e1e2e",fontSize:13,fontWeight:600,cursor:f?"wait":"pointer",opacity:f?.7:1},children:f?"Saving...":m?"Saved":"Save Configuration"})]})]})}function L({isOpen:n,onClose:u,initialTab:x}){const[p,I]=d.useState([]),[b,h]=d.useState(x||null),[f,C]=d.useState(!0),[m,v]=d.useState(null),y=d.useRef(x||null),k=d.useCallback(async()=>{try{const t=await w(R("/api/integrations"));if(!t.ok)throw new Error(`HTTP ${t.status}`);const c=await t.json();I(c),v(null),h(g=>{const j=g||x||(c.length>0?c[0].id:null);return y.current=j,j})}catch(t){v(`Failed to load integrations: ${t}`)}finally{C(!1)}},[x]);d.useEffect(()=>{n&&(C(!0),k(),x&&h(x))},[n,x]);const S=d.useCallback(async(t,c)=>{const g=await w(R(`/api/integrations/${t}/config`),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!g.ok){const j=await g.json().catch(()=>({}));throw new Error(j.error||`HTTP ${g.status}`)}await k()},[k]);if(!n)return null;const a=p.find(t=>t.id===b);return e.jsx("div",{style:s.overlay,onClick:u,children:e.jsxs("div",{style:s.modal,onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{style:s.header,children:[e.jsxs("div",{style:s.headerTitle,children:[e.jsx("span",{children:"🔌"}),e.jsx("span",{children:"Integrations"})]}),e.jsx("button",{style:s.closeBtn,onClick:u,title:"Close",children:"×"})]}),f&&e.jsx("div",{style:{padding:40,textAlign:"center",color:"var(--text-secondary, #a6adc8)"},children:"Loading integrations..."}),m&&e.jsxs("div",{style:{padding:20,textAlign:"center"},children:[e.jsx("div",{style:{color:"#f38ba8",marginBottom:8},children:m}),e.jsx("button",{onClick:k,style:{padding:"6px 12px",borderRadius:6,border:"1px solid var(--border, #313244)",background:"none",color:"var(--text-primary, #cdd6f4)",cursor:"pointer",fontSize:13},children:"Retry"})]}),!f&&!m&&p.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:s.tabs,children:p.map(t=>e.jsxs("button",{style:s.tab(b===t.id),onClick:()=>h(t.id),children:[e.jsx("span",{children:A[t.id]||"🔌"}),e.jsx("span",{children:t.name}),e.jsx("span",{style:s.tabStatus(t.status.connected,!!t.status.error)})]},t.id))}),e.jsx("div",{style:s.body,children:a&&e.jsxs("div",{children:[e.jsxs("div",{style:s.integrationHeader,children:[e.jsx("div",{style:s.iconCircle,children:A[a.id]||"🔌"}),e.jsxs("div",{style:s.integrationMeta,children:[e.jsxs("div",{style:s.integrationName,children:[a.name,e.jsx("span",{style:s.statusBadge(a.status.connected,!!a.status.error),children:a.status.error?"✗ Error":a.status.connected?"✓ Connected":"⚠ Not Configured"}),a.id==="slack"&&(()=>{var g;const t=((g=a.values)==null?void 0:g.currentMode)||"none";if(t==="none")return null;const c=t==="polling"?"Polling":"Socket";return e.jsx("span",{style:{marginLeft:8,padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:500,background:"rgba(137, 180, 250, 0.15)",color:"#89b4fa",border:"1px solid rgba(137, 180, 250, 0.3)"},title:t==="polling"?"Web API polling (xoxp- user token)":"Real-time Socket Mode (xoxb- bot token)",children:c})})()]}),e.jsx("div",{style:s.description,children:B[a.id]||a.description})]})]}),a.status.error&&e.jsxs("div",{style:{...s.section,borderColor:"rgba(243, 139, 168, 0.3)",background:"rgba(243, 139, 168, 0.05)"},children:[e.jsx("div",{style:{...s.sectionTitle,color:"#f38ba8"},children:"Error"}),e.jsx("div",{style:{fontSize:12,color:"#f38ba8"},children:a.status.error})]}),E[a.id]&&e.jsxs("div",{style:s.section,children:[e.jsx("div",{style:s.sectionTitle,children:"Requirements"}),e.jsx("ul",{style:s.requirementList,children:E[a.id].map((t,c)=>e.jsxs("li",{style:s.requirementItem,children:[e.jsx("span",{style:{color:"var(--accent, #89b4fa)"},children:"•"}),t]},c))})]}),e.jsxs("div",{style:s.formSection,children:[e.jsx("div",{style:s.formSectionTitle,children:"Configuration"}),a.customComponent&&z[a.customComponent]?e.jsx(d.Suspense,{fallback:e.jsx("div",{style:{color:"var(--text-secondary)",fontSize:13},children:"Loading..."}),children:P.createElement(z[a.customComponent],{key:a.id,integration:a,onSave:t=>S(a.id,t),onCancel:u})}):e.jsx(O,{integration:a,onSave:t=>S(a.id,t),onCancel:u})]})]})})]}),!f&&!m&&p.length===0&&e.jsx("div",{style:{padding:40,textAlign:"center",color:"var(--text-secondary, #a6adc8)"},children:"No integrations available."})]})})}export{L as IntegrationsPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as ue,r as l,h as he,j as e,i as de}from"./main-
|
|
1
|
+
import{u as ue,r as l,h as he,j as e,i as de}from"./main-CyZg1kKu.js";function ge({isOpen:E,onClose:w,title:Q,icon:_,lines:c,isStreaming:P,onClear:q,emptyMessage:U,streamingIndicatorLabel:z,extraToolbar:J,extraFooter:X,modalClassName:Y}){const{t:a}=ue(["terminal","common"]),[u,$]=l.useState(""),[h,L]=l.useState(!1),[x,S]=l.useState(!1),[M,R]=l.useState(""),[k,p]=l.useState(!0),[D,Z]=l.useState(!0),[O,B]=l.useState(null),[r,ee]=l.useState([]),[m,j]=l.useState(0),[v,te]=l.useState(!1),[T,se]=l.useState(5),[F,C]=l.useState(null),[y,le]=l.useState(!0),o=l.useRef(null),I=l.useRef(null),A=l.useRef(null),H=l.useRef(!1),V=l.useRef(0),K=l.useMemo(()=>c.map(t=>t.text),[c]),b=l.useMemo(()=>{if(!u)return C(null),null;try{const t=v?u:u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=new RegExp(t,"gi");return C(null),s}catch(t){return C(t.message),null}},[u,v]),N=l.useMemo(()=>{if(!b)return[];const t=[];for(let s=0;s<K.length;s++)b.test(K[s])&&t.push(s),b.lastIndex=0;return t},[K,b]);l.useEffect(()=>{ee(N),m>=N.length&&j(Math.max(0,N.length-1))},[N]);const ne=l.useMemo(()=>{const t=c.map((i,f)=>({entry:i,originalIndex:f}));if(!u||!b||y)return t;if(N.length===0)return[];const s=new Set;for(const i of N){const f=Math.max(0,i-T),ie=Math.min(c.length-1,i+T);for(let G=f;G<=ie;G++)s.add(G)}const n=Array.from(s).sort((i,f)=>i-f),d=[];for(let i=0;i<n.length;i++){const f=n[i];i>0&&f-n[i-1]>1&&d.push({entry:{text:"",lineNumber:-1},originalIndex:-1,isSeparator:!0}),d.push({entry:c[f],originalIndex:f})}return d},[c,u,b,N,T,y]);l.useEffect(()=>{k&&o.current&&c.length>V.current&&(H.current=!0,requestAnimationFrame(()=>{o.current&&(o.current.scrollTop=o.current.scrollHeight),setTimeout(()=>{H.current=!1},50)})),V.current=c.length},[c.length,k]),l.useEffect(()=>{h&&I.current&&I.current.focus()},[h]),l.useEffect(()=>{x&&A.current&&A.current.focus()},[x]);const g=l.useCallback(t=>{if(!o.current)return;const n=t*18;o.current.scrollTop=n-100,B(t),setTimeout(()=>B(null),2e3)},[]);l.useEffect(()=>{if(!E)return;const t=s=>{if(s.key==="Escape"){s.preventDefault(),s.stopPropagation(),s.stopImmediatePropagation(),h?L(!1):x?S(!1):w();return}if(s.key==="/"&&!h&&!x&&(s.preventDefault(),L(!0)),s.key==="g"&&s.ctrlKey&&(s.preventDefault(),S(!0)),s.key==="End"&&s.ctrlKey&&o.current&&(o.current.scrollTop=o.current.scrollHeight),s.key==="Home"&&s.ctrlKey&&o.current&&(o.current.scrollTop=0),(s.key==="F3"||s.key==="Enter"&&h)&&r.length>0)if(s.preventDefault(),s.shiftKey){const n=(m-1+r.length)%r.length;j(n),g(r[n])}else{const n=(m+1)%r.length;j(n),g(r[n])}if(!h&&!x&&r.length>0){if(s.key==="n"&&!s.ctrlKey){s.preventDefault();const n=(m+1)%r.length;j(n),g(r[n])}else if(s.key==="N"){s.preventDefault();const n=(m-1+r.length)%r.length;j(n),g(r[n])}}!h&&!x&&o.current&&(s.key==="j"?(s.preventDefault(),o.current.scrollTop+=60,p(!1)):s.key==="k"?(s.preventDefault(),o.current.scrollTop-=60,p(!1)):s.key==="G"&&!s.ctrlKey?(s.preventDefault(),o.current.scrollTop=o.current.scrollHeight,p(!0)):s.key==="g"&&!s.ctrlKey&&(s.preventDefault(),o.current.scrollTop=0,p(!1)))};return window.addEventListener("keydown",t,{capture:!0}),()=>window.removeEventListener("keydown",t,{capture:!0})},[E,h,x,r,m,w,g]);const W=l.useCallback(()=>{const t=parseInt(M,10);!isNaN(t)&&t>0&&t<=c.length&&(g(t-1),p(!1)),S(!1),R("")},[M,c.length,g]),re=l.useCallback(()=>{if(H.current||!o.current)return;const{scrollTop:t,scrollHeight:s,clientHeight:n}=o.current,d=s-t-n<50;!d&&k&&p(!1),d&&!k&&p(!0)},[k]),ae=l.useCallback(t=>{if(!u||!b)return t;const s=v?u:u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");try{const n=new RegExp(`(${s})`,"gi");return t.replace(n,'<mark class="search-highlight">$1</mark>')}catch{return t}},[u,b,v]),{handleMouseDown:oe,handleClick:ce}=he(w);return E?e.jsx("div",{className:"pm2-logs-modal-overlay",onMouseDown:oe,onClick:ce,children:e.jsxs("div",{className:`pm2-logs-modal ${Y||""}`,children:[e.jsxs("div",{className:"pm2-logs-modal-header",children:[e.jsxs("div",{className:"header-left",children:[e.jsx("span",{className:"modal-icon",children:_}),e.jsx("span",{className:"modal-title",children:Q}),P&&e.jsxs("span",{className:"streaming-indicator",title:"Live streaming",children:[e.jsx("span",{className:"pulse"}),z||a("terminal:logs.live")]})]}),e.jsxs("div",{className:"header-right",children:[e.jsx("span",{className:"line-count",children:a("terminal:logs.lines",{count:c.length})}),e.jsx("button",{className:"modal-close",onClick:w,title:a("terminal:logs.closeEsc"),children:"×"})]})]}),e.jsxs("div",{className:"pm2-logs-modal-toolbar",children:[e.jsxs("div",{className:"toolbar-left",children:[e.jsxs("button",{className:`toolbar-btn ${h?"active":""}`,onClick:()=>L(!h),title:a("terminal:logs.searchShortcut"),children:["🔍 ",a("terminal:logs.search")]}),e.jsxs("button",{className:"toolbar-btn",onClick:()=>S(!0),title:a("terminal:logs.goToLineShortcut"),children:["⏬ ",a("terminal:logs.goToLine")]}),J,e.jsxs("button",{className:`toolbar-btn ${D?"active":""}`,onClick:()=>Z(!D),title:a("terminal:logs.toggleWrap"),children:["↩ ",a("terminal:logs.wrap")]}),e.jsxs("button",{className:`toolbar-btn ${k?"active":""}`,onClick:()=>p(!k),title:a("terminal:logs.autoScrollToBottom"),children:["↓ ",a("terminal:logs.auto")]})]}),e.jsx("div",{className:"toolbar-right",children:e.jsxs("button",{className:"toolbar-btn danger",onClick:q,title:a("terminal:logs.clear"),children:["🗑 ",a("terminal:logs.clear")]})})]}),h&&e.jsxs("div",{className:"pm2-logs-search-bar",children:[e.jsx("input",{ref:I,type:"text",placeholder:a(v?"terminal:logs.regexPlaceholder":"terminal:logs.searchPlaceholder"),value:u,onChange:t=>{$(t.target.value),j(0)},onKeyDown:t=>{t.key==="Escape"&&(L(!1),$(""),C(null))}}),e.jsx("button",{className:`toolbar-btn small ${v?"active":""}`,onClick:()=>te(!v),title:"Toggle regex mode",children:".*"}),e.jsx("button",{className:`toolbar-btn small ${y?"active":""}`,onClick:()=>le(!y),title:y?"Show all lines (highlight matches)":"Show only context around matches",children:y?"All":"Ctx"}),e.jsxs("div",{className:`context-control ${y?"hidden":""}`,title:"Lines of context around matches",children:[e.jsx("label",{children:"±"}),e.jsx("input",{type:"number",min:"0",max:"100",value:T,onChange:t=>se(Math.max(0,parseInt(t.target.value)||0)),className:"context-input"})]}),e.jsx("button",{className:"toolbar-btn small",onClick:()=>{if(r.length===0)return;const t=(m-1+r.length)%r.length;j(t),g(r[t])},disabled:r.length===0,title:"Previous match (Shift+F3)",children:"▲"}),e.jsx("button",{className:"toolbar-btn small",onClick:()=>{if(r.length===0)return;const t=(m+1)%r.length;j(t),g(r[t])},disabled:r.length===0,title:"Next match (F3)",children:"▼"}),u&&e.jsx("span",{className:"match-count",children:F?e.jsx("span",{className:"regex-error",title:F,children:a("terminal:logs.invalidRegex")}):r.length>0?`${m+1}/${r.length}`:a("terminal:logs.noMatches")}),e.jsx("button",{className:"search-close",onClick:()=>{L(!1),$(""),C(null)},children:"×"})]}),x&&e.jsxs("div",{className:"pm2-logs-goto-line",children:[e.jsxs("label",{children:[a("terminal:logs.goToLineLabel"),":"]}),e.jsx("input",{ref:A,type:"number",min:"1",max:c.length,placeholder:`1-${c.length}`,value:M,onChange:t=>R(t.target.value),onKeyDown:t=>{t.key==="Enter"?W():t.key==="Escape"&&(S(!1),R(""))}}),e.jsx("button",{onClick:W,children:a("terminal:logs.go")}),e.jsx("button",{onClick:()=>S(!1),children:a("common:buttons.cancel")})]}),e.jsx("div",{ref:o,className:`pm2-logs-content ${D?"wrap":"nowrap"}`,onScroll:re,children:c.length===0?e.jsx("div",{className:"logs-empty",children:U||a(P?"terminal:logs.waitingForLogs":"terminal:logs.noLogs")}):e.jsx("div",{className:"logs-lines",children:ne.map((t,s)=>{if("isSeparator"in t&&t.isSeparator)return e.jsxs("div",{className:"log-separator",children:[e.jsx("span",{className:"separator-line"}),e.jsx("span",{className:"separator-label",children:"…"}),e.jsx("span",{className:"separator-line"})]},`sep-${s}`);const{entry:n,originalIndex:d}=t,i=u&&N.includes(d);return e.jsxs("div",{className:`log-line ${O===d?"highlighted":""} ${r[m]===d?"current-match":""} ${i?"match-line":""} ${n.isError?"error-line":""}`,children:[e.jsx("span",{className:"line-number",children:n.lineNumber}),n.sourceLabel&&e.jsxs("span",{className:"boss-log-source",style:{color:n.sourceColor},children:["[",n.sourceLabel,"]"]}),e.jsx("span",{className:"line-content",dangerouslySetInnerHTML:{__html:ae(de(n.text))}})]},d)})})}),e.jsxs("div",{className:"pm2-logs-modal-footer",children:[e.jsxs("span",{className:"shortcut",children:[e.jsx("kbd",{children:"j"}),"/",e.jsx("kbd",{children:"k"})," Scroll"]}),e.jsxs("span",{className:"shortcut",children:[e.jsx("kbd",{children:"g"}),"/",e.jsx("kbd",{children:"G"})," Top/Bottom"]}),e.jsxs("span",{className:"shortcut",children:[e.jsx("kbd",{children:"/"})," Search"]}),e.jsxs("span",{className:"shortcut",children:[e.jsx("kbd",{children:"n"}),"/",e.jsx("kbd",{children:"N"})," Next/Prev match"]}),e.jsxs("span",{className:"shortcut",children:[e.jsx("kbd",{children:"Ctrl+G"})," Go to line"]}),e.jsxs("span",{className:"shortcut",children:[e.jsx("kbd",{children:"Esc"})," Close"]}),X]})]})}):null}export{ge as L};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as g,aL as D,l as O,j as e,I as H,s as se}from"./main-BxA3Bhkv.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const ae=[{id:"triggers",label:"Triggers",icon:"bolt"},{id:"workflows",label:"Workflows",icon:"gear"},{id:"instances",label:"Instances",icon:"refresh"},{id:"messages",label:"Messages",icon:"chat"},{id:"stats",label:"Stats",icon:"dashboard"}],ne={trigger:"#89b4fa",slack:"#cba6f7",email:"#f9e2af",calendar:"#a6e3a1",document:"#fab387",jira:"#89dceb",workflow:"#f38ba8",system:"#6c7086",step:"#f38ba8",variable_change:"#cba6f7",approval:"#a6e3a1",audit:"#6c7086"},re={trigger:"Trigger",slack:"Slack",email:"Email",calendar:"Calendar",document:"Document",jira:"Jira",workflow:"Workflow",system:"System",step:"Step",variable_change:"Variable",approval:"Approval",audit:"Audit"};function he({isOpen:r,onClose:s}){const[n,B]=g.useState("triggers"),[T,M]=g.useState([]),[y,x]=g.useState(!0),[_,j]=g.useState(null),[z,F]=g.useState("24h"),[R,$]=g.useState(""),[W,N]=g.useState(null),[m,p]=g.useState({}),[i,C]=g.useState(!1),[t,c]=g.useState(null),[d,b]=g.useState([]),l=g.useCallback(async()=>{if(!(n==="stats"||n==="instances")){x(!0);try{const o=Date.now(),h={"1h":36e5,"6h":216e5,"24h":864e5,"7d":6048e5,all:0},w=h[z]>0?String(o-h[z]):void 0;let k=[];if(n==="triggers"){const v=new URLSearchParams({limit:"200"});w&&v.set("since",w);const S=await D(O(`/api/events/triggers?${v}`));if(!S.ok){j(`HTTP ${S.status}`);return}k=((await S.json()).events||[]).map(E=>({type:"trigger",timestamp:E.firedAt,data:E}))}else if(n==="workflows"){const v=new URLSearchParams({limit:"200",category:"workflow"});w&&v.set("since",w);const S=await D(O(`/api/events/audit?${v}`));if(!S.ok){j(`HTTP ${S.status}`);return}k=((await S.json()).entries||[]).map(E=>({type:"workflow",timestamp:E.createdAt,data:E}))}else if(n==="messages"){const v=new URLSearchParams({limit:"200"}),S=new URLSearchParams({limit:"200"}),V=new URLSearchParams({limit:"200"});w&&(v.set("since",w),S.set("since",w));const[E,X,q]=await Promise.all([D(O(`/api/events/slack?${v}`)),D(O(`/api/events/email?${S}`)),D(O(`/api/events/approvals?${V}`))]);if(E.ok){const P=await E.json();for(const I of P.messages||[])k.push({type:"slack",timestamp:I.receivedAt,data:I})}if(X.ok){const P=await X.json();for(const I of P.messages||[])k.push({type:"email",timestamp:I.receivedAt,data:I})}if(q.ok){const P=await q.json();for(const I of P.events||[])k.push({type:"approval",timestamp:I.recordedAt,data:I})}k.sort((P,I)=>I.timestamp-P.timestamp)}M(k),j(null)}catch(o){j(`Failed to load events: ${o}`)}finally{x(!1)}}},[n,z]),f=g.useCallback(async()=>{x(!0);try{const[o,h]=await Promise.all([D(O("/api/events/stats")),D(O("/api/integrations"))]);if(o.ok&&c(await o.json()),h.ok){const w=await h.json();b(Array.isArray(w)?w:[])}j(null)}catch(o){j(`Failed to load stats: ${o}`)}finally{x(!1)}},[]);g.useEffect(()=>{r&&(n==="stats"?f():l())},[r,n,l,f]);const u=T.filter(o=>{if(!R)return!0;const h=R.toLowerCase();return JSON.stringify(o.data).toLowerCase().includes(h)});if(!r)return null;const A=d.filter(o=>o.status.connected).length;return e.jsx("div",{style:a.overlay,onClick:s,children:e.jsxs("div",{style:a.modal,onClick:o=>o.stopPropagation(),children:[e.jsxs("div",{style:a.header,children:[e.jsxs("div",{style:a.headerTitle,children:[e.jsx(H,{name:"dashboard",size:16}),e.jsx("span",{children:"Monitoring & Logs"})]}),e.jsx("button",{style:a.closeBtn,onClick:s,title:"Close",children:"×"})]}),e.jsx("div",{style:a.tabs,children:ae.map(o=>e.jsxs("button",{style:a.tab(n===o.id),onClick:()=>{B(o.id),$(""),N(null)},children:[e.jsx(H,{name:o.icon,size:14}),e.jsx("span",{children:o.label})]},o.id))}),n!=="stats"&&n!=="instances"&&e.jsxs("div",{style:a.filters,children:[e.jsx("div",{style:{display:"flex",gap:4},children:["1h","6h","24h","7d","all"].map(o=>e.jsx("button",{style:{...a.timeBtn,background:z===o?"#89b4fa":"transparent",color:z===o?"#1e1e2e":"#a6adc8"},onClick:()=>F(o),children:o},o))}),e.jsx("input",{style:a.searchInput,placeholder:"Search events...",value:R,onChange:o=>$(o.target.value)}),e.jsx("button",{style:a.refreshBtn,onClick:l,children:"Refresh"})]}),e.jsx("div",{style:a.content,children:n==="stats"?e.jsx(ie,{loading:y,error:_,stats:t,integrations:d,connectedCount:A,onRefresh:f}):n==="instances"?e.jsx(de,{}):e.jsx(oe,{loading:y,error:_,entries:u,expandedId:W,matcherResults:m,loadingMatchers:i,onToggleExpand:async(o,h)=>{var w;if(W===o){N(null);return}if(N(o),!m[o]){C(!0);try{let k="";if((h==null?void 0:h.type)==="trigger"&&((w=h==null?void 0:h.data)!=null&&w.id))k=`/api/triggers/events/${h.data.id}/matchers`;else if(h&&["slack","email","approval"].includes(h.type)){const v=h.data,S=v.ts||v.messageId||v.email_id;S&&h.type&&(k=`/api/triggers/matchers/by-source/${h.type}/${encodeURIComponent(S)}`)}if(k){const v=await D(O(k));if(v.ok){const S=await v.json();p(V=>({...V,[o]:S.matchers||[]}))}}}catch(k){console.error("Failed to fetch matchers:",k)}finally{C(!1)}}}})}),n!=="stats"&&n!=="instances"&&e.jsx("div",{style:a.footer,children:e.jsxs("span",{style:{color:"#6c7086",fontSize:11},children:[u.length," event",u.length!==1?"s":""," shown",R&&` (filtered from ${T.length})`]})})]})})}function oe({loading:r,error:s,entries:n,expandedId:B,matcherResults:T,loadingMatchers:M,onToggleExpand:y}){return r?e.jsx("div",{style:{color:"#a6adc8",padding:20},children:"Loading events..."}):s?e.jsx("div",{style:{color:"#f38ba8",padding:20},children:s}):n.length===0?e.jsx("div",{style:{color:"#6c7086",textAlign:"center",padding:40},children:"No events found for the selected filters."}):e.jsx(e.Fragment,{children:n.map((x,_)=>{var W;const j=`${x.type}-${x.timestamp}-${_}`,z=B===j,F=ne[x.type]||"#6c7086",R=le(x),$=new Date(x.timestamp);return e.jsxs("div",{style:{...a.eventRow,borderLeft:`3px solid ${F}`,background:z?"rgba(137,180,250,0.05)":"transparent"},onClick:()=>y(j,x),children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("span",{style:{...a.tag,background:`${F}22`,color:F},children:re[x.type]||x.type}),e.jsx("span",{style:{color:"#cdd6f4",fontSize:12,flex:1},children:R}),e.jsxs("span",{style:{color:"#6c7086",fontSize:10,whiteSpace:"nowrap"},children:[$.toLocaleTimeString()," ",$.toLocaleDateString()]})]}),z&&e.jsxs(e.Fragment,{children:[e.jsx("pre",{style:a.detail,children:JSON.stringify(x.data,null,2)}),T[j]&&e.jsxs("div",{style:{marginTop:12,borderTop:"1px solid #313244",paddingTop:12},children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:.5,marginBottom:8},children:x.type==="trigger"?"Matcher Results":"Trigger Evaluations"}),M?e.jsx("div",{style:{color:"#6c7086",fontSize:12},children:"Loading matchers..."}):((W=T[j])==null?void 0:W.length)===0?e.jsx("div",{style:{color:"#6c7086",fontSize:12},children:"No matchers evaluated"}):(()=>{const N=T[j];if(x.type!=="trigger"){const m=new Map;for(const p of N){const i=String(p.trigger_id||"unknown");m.has(i)||m.set(i,[]),m.get(i).push(p)}return Array.from(m.entries()).map(([p,i])=>{var C;return e.jsxs("div",{style:{marginBottom:12},children:[e.jsxs("div",{style:{color:"#cdd6f4",fontSize:11,fontWeight:500,marginBottom:6,paddingBottom:4,borderBottom:"1px solid #45475a"},children:["Trigger: ",String(((C=i[0])==null?void 0:C.trigger_name)||p)]}),i.map((t,c)=>{const d=t.matched===1||t.matched===!0,b=d?"#a6e3a1":"#f38ba8",l=t.confidence??null,f=String(t.matcher_name||"unknown"),u=t.reason?String(t.reason):"";return e.jsxs("div",{style:{display:"flex",gap:8,padding:"6px 10px",background:"#313244",borderRadius:4,marginBottom:4,fontSize:11},children:[e.jsx("span",{style:{color:b,fontWeight:600,minWidth:50},children:d?e.jsx(H,{name:"check",size:12}):e.jsx(H,{name:"cross",size:12})}),e.jsx("span",{style:{color:"#cdd6f4",flex:1},children:f}),l!==null&&e.jsxs("span",{style:{color:"#a6adc8"},children:["(",(l*100).toFixed(0),"%)"]}),u&&e.jsx("span",{style:{color:"#6c7086",fontSize:10},children:u})]},c)})]},p)})}else return N.map((m,p)=>{const i=m.matched===1||m.matched===!0,C=i?"#a6e3a1":"#f38ba8",t=m.confidence??null,c=String(m.matcher_name||"unknown"),d=m.reason?String(m.reason):"";return e.jsxs("div",{style:{display:"flex",gap:8,padding:"6px 10px",background:"#313244",borderRadius:4,marginBottom:4,fontSize:11},children:[e.jsx("span",{style:{color:C,fontWeight:600,minWidth:50},children:i?e.jsxs(e.Fragment,{children:[e.jsx(H,{name:"check",size:12})," MATCH"]}):e.jsxs(e.Fragment,{children:[e.jsx(H,{name:"cross",size:12})," FAIL"]})}),e.jsx("span",{style:{color:"#cdd6f4",flex:1},children:c}),t!==null&&e.jsxs("span",{style:{color:"#a6adc8"},children:["(",(t*100).toFixed(0),"%)"]}),d&&e.jsx("span",{style:{color:"#6c7086",fontSize:10},children:d})]},p)})})()]})]})]},j)})})}function ie({loading:r,error:s,stats:n,integrations:B,connectedCount:T,onRefresh:M}){return r?e.jsx("div",{style:{color:"#a6adc8",padding:20},children:"Loading stats..."}):s?e.jsx("div",{style:{color:"#f38ba8",padding:20},children:s}):e.jsxs("div",{style:{padding:20},children:[e.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:16},children:e.jsx("button",{style:a.refreshBtn,onClick:M,children:"Refresh"})}),n&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:a.section,children:[e.jsx("h3",{style:a.sectionTitle,children:"Workflows"}),e.jsxs("div",{style:a.grid,children:[e.jsx(U,{label:"Active",value:n.activeWorkflows,color:"#89b4fa"}),e.jsx(U,{label:"Completed",value:n.completedWorkflows,color:"#a6e3a1"}),e.jsx(U,{label:"Failed",value:n.failedWorkflows,color:"#f38ba8"})]})]}),e.jsxs("div",{style:a.section,children:[e.jsx("h3",{style:a.sectionTitle,children:"Events (Today)"}),e.jsxs("div",{style:a.grid,children:[e.jsx(U,{label:"Triggers Fired",value:n.triggersFiredToday,color:"#f9e2af"}),e.jsx(U,{label:"Slack Messages",value:n.slackMessageCount,color:"#cba6f7"}),e.jsx(U,{label:"Emails",value:n.emailCount,color:"#fab387"})]})]}),e.jsxs("div",{style:a.section,children:[e.jsxs("h3",{style:a.sectionTitle,children:["Integrations (",T,"/",B.length," connected)"]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[B.map(y=>e.jsxs("div",{style:a.integrationRow,children:[e.jsx("span",{style:{color:"#cdd6f4",fontSize:13},children:y.name}),e.jsx("span",{style:{...a.statusBadge,background:y.status.connected?"rgba(166,227,161,0.15)":"rgba(108,112,134,0.15)",color:y.status.connected?"#a6e3a1":"#6c7086"},children:y.status.error?"Error":y.status.connected?"Connected":"Disconnected"})]},y.id)),B.length===0&&e.jsx("div",{style:{color:"#6c7086",fontSize:12},children:"No integrations configured"})]})]})]}),!n&&e.jsx("div",{style:{color:"#6c7086",textAlign:"center",padding:40},children:"No stats available. The event store may not have any data yet."})]})}function U({label:r,value:s,color:n}){return e.jsxs("div",{style:a.card,children:[e.jsx("div",{style:{color:n,fontSize:28,fontWeight:700,lineHeight:1},children:s}),e.jsx("div",{style:{color:"#a6adc8",fontSize:11,marginTop:4},children:r})]})}function le(r){const s=r.data;switch(r.type){case"trigger":return`Trigger "${s.triggerName||s.triggerId}" ${s.status||"fired"}`;case"slack":return`${s.direction==="outbound"?"Sent":"Received"} in #${s.channelName||s.channelId}: ${K(s.text,60)}`;case"email":return`${s.direction==="outbound"?"Sent to":"From"} ${s.direction==="outbound"?s.toAddresses:s.fromAddress}: ${K(s.subject,50)}`;case"approval":return`${s.approved?"Approved":"Rejected"} by ${s.approverEmail}`;case"document":return`Generated "${s.outputFilename}" from template "${s.templateName}"`;case"calendar":return`Calendar event ${s.action}: "${s.summary}"`;case"jira":return`${s.ticketKey} ${s.action}: ${K(s.summary,50)}`;case"step":return`Workflow step: ${s.toStateName} (${s.status})`;case"variable_change":return`Variable "${s.variableName}" changed by ${s.changedBy}`;case"audit":return`[${(s.level||"info").toUpperCase()}] ${s.category}: ${s.action}`;default:return JSON.stringify(s).slice(0,80)}}function K(r,s){return r?r.length>s?r.slice(0,s)+"...":r:""}const G={running:"#a6e3a1",paused:"#f9e2af",completed:"#89b4fa",failed:"#f38ba8",cancelled:"#6c7086"},Q={action:"#89b4fa",wait:"#f9e2af",decision:"#cba6f7",end:"#6c7086"};let Y=null,Z,ee;function te(){const r=se.getState(),s=r.workflowDefinitions??new Map,n=r.workflowInstances??new Map;return Y&&Z===s&&ee===n||(Z=s,ee=n,Y={definitions:s,instances:n}),Y}function ce(){return g.useSyncExternalStore(r=>se.subscribe(r),te,te)}function de(){var C;const{definitions:r,instances:s}=ce(),[n,B]=g.useState("all"),[T,M]=g.useState("all"),[y,x]=g.useState(""),[_,j]=g.useState(null),[z,F]=g.useState(null),[R,$]=g.useState(null),W=g.useMemo(()=>Array.from(s.values()),[s]),N=g.useMemo(()=>Array.from(r.values()),[r]),m=g.useMemo(()=>W.filter(t=>{if(n!=="all"&&t.status!==n||T!=="all"&&t.workflowDefId!==T)return!1;if(y){const c=y.toLowerCase();return t.workflowName.toLowerCase().includes(c)||t.id.toLowerCase().includes(c)||JSON.stringify(t.variables).toLowerCase().includes(c)}return!0}).sort((t,c)=>c.updatedAt-t.updatedAt),[W,n,T,y]),p=_?s.get(_):null,i=R?s.get(R):null;if(i){const t=r.get(i.workflowDefId),c=t==null?void 0:t.states.find(f=>f.id===i.currentStateId),d=G[i.status]||"#6c7086",b={},l={};for(const[f,u]of Object.entries(i.variables))f.startsWith("wi_")?b[f]=u:l[f]=u;return e.jsxs("div",{style:{padding:"12px 0"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:12},children:[e.jsx("button",{style:{...a.refreshBtn,fontSize:12},onClick:()=>$(null),children:"Back"}),e.jsxs("span",{style:{color:"#cdd6f4",fontSize:13,fontWeight:500},children:["Debug: ",i.workflowName]}),e.jsx("span",{style:{...a.tag,background:`${d}22`,color:d},children:i.status})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:8,marginBottom:16},children:[e.jsx(L,{label:"ID",value:i.id}),e.jsx(L,{label:"Def ID",value:i.workflowDefId}),e.jsx(L,{label:"Current State",value:(c==null?void 0:c.name)||i.currentStateId}),e.jsx(L,{label:"State Type",value:(c==null?void 0:c.type)||"unknown"}),e.jsx(L,{label:"Created",value:J(i.createdAt)}),e.jsx(L,{label:"Updated",value:J(i.updatedAt)}),i.completedAt&&e.jsx(L,{label:"Completed",value:J(i.completedAt)}),i.error&&e.jsx(L,{label:"Error",value:i.error,color:"#f38ba8"}),e.jsx(L,{label:"Steps",value:String(((C=i.history)==null?void 0:C.length)??0)})]}),Object.keys(l).length>0&&e.jsxs("div",{style:{marginBottom:16},children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:6},children:"User Variables"}),e.jsx("pre",{style:a.detail,children:JSON.stringify(l,null,2)})]}),Object.keys(b).length>0&&e.jsxs("div",{style:{marginBottom:16},children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:6},children:"Internal Variables (wi_*)"}),e.jsx("pre",{style:a.detail,children:JSON.stringify(b,null,2)})]}),c&&c.transitions.length>0&&e.jsxs("div",{style:{marginBottom:16},children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:6},children:"Available Transitions"}),c.transitions.map(f=>{var u;return e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",padding:"4px 10px",background:"#313244",borderRadius:4,marginBottom:4},children:[e.jsx("span",{style:{color:"#cdd6f4",fontSize:12},children:f.name}),e.jsxs("span",{style:{color:"#6c7086",fontSize:10},children:[f.condition.type," → ",((u=t==null?void 0:t.states.find(A=>A.id===f.targetStateId))==null?void 0:u.name)||f.targetStateId]})]},f.id)})]}),e.jsxs("div",{children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:6},children:"Raw JSON"}),e.jsx("pre",{style:{...a.detail,maxHeight:400},children:JSON.stringify(i,null,2)})]})]})}if(p){const t=r.get(p.workflowDefId),c=G[p.status]||"#6c7086";return e.jsxs("div",{style:{padding:"12px 0"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[e.jsx("button",{style:{...a.refreshBtn,fontSize:12},onClick:()=>{j(null),F(null)},children:"Back"}),e.jsx("span",{style:{color:"#cdd6f4",fontSize:13,fontWeight:500},children:p.workflowName}),e.jsxs("span",{style:{color:"#6c7086",fontSize:10,fontFamily:"monospace"},children:["(",p.id.slice(0,8),")"]}),e.jsx("span",{style:{...a.tag,background:`${c}22`,color:c},children:p.status}),e.jsx("div",{style:{flex:1}}),e.jsx("button",{style:{...a.refreshBtn,fontFamily:"monospace",fontSize:10},onClick:()=>$(p.id),children:"{..}"})]}),e.jsxs("div",{style:{display:"flex",gap:16,color:"#6c7086",fontSize:11,marginBottom:12},children:[e.jsxs("span",{children:["Created: ",J(p.createdAt)]}),e.jsxs("span",{children:["Updated: ",J(p.updatedAt)]}),p.error&&e.jsxs("span",{style:{color:"#f38ba8"},children:["Error: ",p.error]})]}),e.jsxs("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:8},children:["Timeline (",p.history.length," step",p.history.length!==1?"s":"",")"]}),p.history.length===0&&e.jsx("div",{style:{color:"#6c7086",fontSize:12,padding:16},children:"No steps recorded yet."}),p.history.map((d,b)=>{const l=t==null?void 0:t.states.find(A=>A.id===d.toStateId),f=z===b,u=l&&Q[l.type]||"#6c7086";return e.jsxs("div",{style:{padding:"10px 12px",borderLeft:`3px solid ${u}`,borderBottom:"1px solid #313244",cursor:"pointer",background:f?"rgba(137,180,250,0.05)":"transparent",marginLeft:8},onClick:()=>F(f?null:b),children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("span",{style:{width:6,height:6,borderRadius:"50%",background:u,flexShrink:0}}),e.jsx("span",{style:{color:"#cdd6f4",fontSize:12,fontWeight:500},children:(l==null?void 0:l.name)||d.toStateId}),l&&e.jsx("span",{style:{...a.tag,background:`${u}22`,color:u},children:l.type}),d.transitionName&&e.jsxs("span",{style:{color:"#6c7086",fontSize:10},children:['via "',d.transitionName,'"']}),e.jsx("div",{style:{flex:1}}),e.jsx("span",{style:{color:"#6c7086",fontSize:10,whiteSpace:"nowrap"},children:J(d.timestamp)})]}),f&&e.jsxs("div",{style:{marginTop:8,paddingLeft:20},children:[d.fromStateId&&e.jsxs("div",{style:{color:"#6c7086",fontSize:11,marginBottom:2},children:[e.jsx("span",{style:{fontWeight:600,fontSize:10,textTransform:"uppercase"},children:"From: "}),e.jsx("span",{style:{fontFamily:"monospace"},children:d.fromStateId})]}),d.details&&e.jsxs("div",{style:{marginTop:6},children:[e.jsx("div",{style:{color:"#6c7086",fontSize:10,fontWeight:600,textTransform:"uppercase",marginBottom:4},children:"Agent Reasoning / Summary"}),e.jsx("div",{style:{padding:10,background:"#181825",borderRadius:6,border:"1px solid #313244",fontSize:12,color:"#cdd6f4",lineHeight:1.5,whiteSpace:"pre-wrap"},children:d.details})]}),(l==null?void 0:l.description)&&e.jsxs("div",{style:{marginTop:6,color:"#a6adc8",fontSize:11},children:[e.jsx("span",{style:{color:"#6c7086",fontWeight:600,fontSize:10,textTransform:"uppercase"},children:"Description: "}),l.description]}),d.variables&&Object.keys(d.variables).length>0&&e.jsxs("div",{style:{marginTop:6},children:[e.jsx("div",{style:{color:"#6c7086",fontSize:10,fontWeight:600,textTransform:"uppercase",marginBottom:4},children:"Variables at this step"}),e.jsx("pre",{style:a.detail,children:JSON.stringify(d.variables,null,2)})]}),(l==null?void 0:l.action)&&e.jsxs("div",{style:{marginTop:6},children:[e.jsxs("div",{style:{color:"#6c7086",fontSize:10,fontWeight:600,textTransform:"uppercase",marginBottom:4},children:["Action (",l.action.type,")"]}),e.jsx("pre",{style:a.detail,children:JSON.stringify(l.action,null,2)})]})]})]},b)})]})}return e.jsxs("div",{style:{padding:"12px 0"},children:[e.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center",marginBottom:12,flexWrap:"wrap"},children:[e.jsxs("select",{style:{background:"#313244",border:"1px solid #45475a",borderRadius:6,padding:"5px 10px",color:"#cdd6f4",fontSize:12,outline:"none"},value:T,onChange:t=>M(t.target.value),children:[e.jsx("option",{value:"all",children:"All Workflows"}),N.map(t=>e.jsx("option",{value:t.id,children:t.name},t.id))]}),e.jsx("div",{style:{display:"flex",gap:4},children:["all","running","paused","completed","failed","cancelled"].map(t=>e.jsx("button",{style:{...a.timeBtn,background:n===t?t==="all"?"#89b4fa":G[t]||"#89b4fa":"transparent",color:n===t?"#1e1e2e":"#a6adc8",borderColor:n===t?"transparent":"#45475a",textTransform:"capitalize"},onClick:()=>B(t),children:t},t))}),e.jsx("input",{style:a.searchInput,placeholder:"Search instances...",value:y,onChange:t=>x(t.target.value)}),e.jsxs("span",{style:{color:"#6c7086",fontSize:11},children:[m.length,"/",W.length]})]}),m.length===0?e.jsx("div",{style:{color:"#6c7086",textAlign:"center",padding:40},children:"No workflow instances found."}):m.map(t=>{var f,u;const c=r.get(t.workflowDefId),d=G[t.status]||"#6c7086",b=c==null?void 0:c.states.find(A=>A.id===t.currentStateId),l=b&&Q[b.type]||"#6c7086";return e.jsxs("div",{style:{...a.eventRow,display:"flex",alignItems:"center",gap:12,borderLeft:`3px solid ${d}`},onClick:()=>j(t.id),children:[e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[e.jsx("span",{style:{color:"#cdd6f4",fontSize:13,fontWeight:500},children:t.workflowName}),e.jsx("span",{style:{...a.tag,background:`${d}22`,color:d},children:t.status})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:2},children:[e.jsx("span",{style:{color:"#6c7086",fontSize:10,fontFamily:"monospace"},children:t.id.slice(0,8)}),b&&e.jsxs("span",{style:{color:l,fontSize:10},children:["@ ",b.name]}),e.jsxs("span",{style:{color:"#45475a",fontSize:10},children:[((f=t.history)==null?void 0:f.length)??0," step",(((u=t.history)==null?void 0:u.length)??0)!==1?"s":""]})]})]}),e.jsx("span",{style:{color:"#6c7086",fontSize:10,whiteSpace:"nowrap"},children:pe(t.updatedAt)}),e.jsx("button",{style:{background:"transparent",border:"1px solid #45475a",borderRadius:4,padding:"3px 6px",color:"#6c7086",fontSize:10,fontFamily:"monospace",cursor:"pointer"},onClick:A=>{A.stopPropagation(),$(t.id)},title:"Debug view",children:"{..}"})]},t.id)})]})}function L({label:r,value:s,color:n}){return e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,padding:"8px 10px",background:"#313244",borderRadius:6},children:[e.jsx("span",{style:{color:"#6c7086",fontSize:10,textTransform:"uppercase",letterSpacing:.5},children:r}),e.jsx("span",{style:{color:n||"#cdd6f4",fontSize:12,fontFamily:"monospace",wordBreak:"break-all"},children:s})]})}function pe(r){return new Date(r).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function J(r){const s=new Date(r);return`${s.toLocaleDateString()} ${s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}`}const a={overlay:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4,backdropFilter:"blur(4px)"},modal:{background:"var(--surface-0, #1e1e2e)",borderRadius:12,border:"1px solid var(--border, #313244)",width:"90vw",maxWidth:1e3,height:"85vh",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"0 20px 60px rgba(0, 0, 0, 0.5)"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:"1px solid var(--border, #313244)",background:"var(--surface-1, #181825)"},headerTitle:{fontSize:16,fontWeight:600,color:"var(--text-primary, #cdd6f4)",display:"flex",alignItems:"center",gap:8},closeBtn:{background:"none",border:"none",color:"var(--text-secondary, #a6adc8)",fontSize:20,cursor:"pointer",padding:"4px 8px",borderRadius:6,lineHeight:1},tabs:{display:"flex",borderBottom:"1px solid var(--border, #313244)",background:"var(--surface-1, #181825)",overflowX:"auto",scrollbarWidth:"none"},tab:r=>({padding:"10px 16px",background:"none",border:"none",borderBottom:r?"2px solid var(--accent, #89b4fa)":"2px solid transparent",color:r?"var(--accent, #89b4fa)":"var(--text-secondary, #a6adc8)",fontSize:13,fontWeight:r?600:400,cursor:"pointer",display:"flex",alignItems:"center",gap:6,whiteSpace:"nowrap",transition:"color 0.15s, border-color 0.15s",flexShrink:0}),filters:{display:"flex",gap:8,alignItems:"center",padding:"10px 20px",borderBottom:"1px solid var(--border, #313244)",flexWrap:"wrap"},timeBtn:{border:"1px solid #45475a",borderRadius:4,padding:"4px 8px",fontSize:10,fontWeight:600,cursor:"pointer"},searchInput:{background:"#313244",border:"1px solid #45475a",borderRadius:6,padding:"5px 10px",color:"#cdd6f4",fontSize:12,flex:1,minWidth:120,outline:"none"},refreshBtn:{background:"transparent",border:"1px solid #45475a",borderRadius:6,padding:"5px 12px",color:"#a6adc8",fontSize:11,cursor:"pointer"},content:{flex:1,overflow:"auto",padding:"0 20px"},eventRow:{padding:"8px 12px",borderBottom:"1px solid #313244",cursor:"pointer",transition:"background 0.1s"},tag:{fontSize:10,fontWeight:600,padding:"2px 6px",borderRadius:4,whiteSpace:"nowrap"},detail:{marginTop:8,padding:10,background:"#181825",borderRadius:6,fontSize:11,fontFamily:"monospace",color:"#a6adc8",overflow:"auto",maxHeight:300,whiteSpace:"pre-wrap",wordBreak:"break-all"},footer:{padding:"8px 20px",borderTop:"1px solid #313244"},section:{marginBottom:24},sectionTitle:{color:"#a6adc8",fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:12,margin:0},grid:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:12},card:{background:"#313244",borderRadius:8,padding:"16px 14px",textAlign:"center"},integrationRow:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",background:"#313244",borderRadius:6},statusBadge:{fontSize:10,fontWeight:600,padding:"3px 8px",borderRadius:4}};export{he as MonitoringModal};
|
|
1
|
+
import{r as g,aL as D,l as O,j as e,I as H,s as se}from"./main-CyZg1kKu.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const ae=[{id:"triggers",label:"Triggers",icon:"bolt"},{id:"workflows",label:"Workflows",icon:"gear"},{id:"instances",label:"Instances",icon:"refresh"},{id:"messages",label:"Messages",icon:"chat"},{id:"stats",label:"Stats",icon:"dashboard"}],ne={trigger:"#89b4fa",slack:"#cba6f7",email:"#f9e2af",calendar:"#a6e3a1",document:"#fab387",jira:"#89dceb",workflow:"#f38ba8",system:"#6c7086",step:"#f38ba8",variable_change:"#cba6f7",approval:"#a6e3a1",audit:"#6c7086"},re={trigger:"Trigger",slack:"Slack",email:"Email",calendar:"Calendar",document:"Document",jira:"Jira",workflow:"Workflow",system:"System",step:"Step",variable_change:"Variable",approval:"Approval",audit:"Audit"};function he({isOpen:r,onClose:s}){const[n,B]=g.useState("triggers"),[T,M]=g.useState([]),[y,x]=g.useState(!0),[_,j]=g.useState(null),[z,F]=g.useState("24h"),[R,$]=g.useState(""),[W,N]=g.useState(null),[m,p]=g.useState({}),[i,C]=g.useState(!1),[t,c]=g.useState(null),[d,b]=g.useState([]),l=g.useCallback(async()=>{if(!(n==="stats"||n==="instances")){x(!0);try{const o=Date.now(),h={"1h":36e5,"6h":216e5,"24h":864e5,"7d":6048e5,all:0},w=h[z]>0?String(o-h[z]):void 0;let k=[];if(n==="triggers"){const v=new URLSearchParams({limit:"200"});w&&v.set("since",w);const S=await D(O(`/api/events/triggers?${v}`));if(!S.ok){j(`HTTP ${S.status}`);return}k=((await S.json()).events||[]).map(E=>({type:"trigger",timestamp:E.firedAt,data:E}))}else if(n==="workflows"){const v=new URLSearchParams({limit:"200",category:"workflow"});w&&v.set("since",w);const S=await D(O(`/api/events/audit?${v}`));if(!S.ok){j(`HTTP ${S.status}`);return}k=((await S.json()).entries||[]).map(E=>({type:"workflow",timestamp:E.createdAt,data:E}))}else if(n==="messages"){const v=new URLSearchParams({limit:"200"}),S=new URLSearchParams({limit:"200"}),V=new URLSearchParams({limit:"200"});w&&(v.set("since",w),S.set("since",w));const[E,X,q]=await Promise.all([D(O(`/api/events/slack?${v}`)),D(O(`/api/events/email?${S}`)),D(O(`/api/events/approvals?${V}`))]);if(E.ok){const P=await E.json();for(const I of P.messages||[])k.push({type:"slack",timestamp:I.receivedAt,data:I})}if(X.ok){const P=await X.json();for(const I of P.messages||[])k.push({type:"email",timestamp:I.receivedAt,data:I})}if(q.ok){const P=await q.json();for(const I of P.events||[])k.push({type:"approval",timestamp:I.recordedAt,data:I})}k.sort((P,I)=>I.timestamp-P.timestamp)}M(k),j(null)}catch(o){j(`Failed to load events: ${o}`)}finally{x(!1)}}},[n,z]),f=g.useCallback(async()=>{x(!0);try{const[o,h]=await Promise.all([D(O("/api/events/stats")),D(O("/api/integrations"))]);if(o.ok&&c(await o.json()),h.ok){const w=await h.json();b(Array.isArray(w)?w:[])}j(null)}catch(o){j(`Failed to load stats: ${o}`)}finally{x(!1)}},[]);g.useEffect(()=>{r&&(n==="stats"?f():l())},[r,n,l,f]);const u=T.filter(o=>{if(!R)return!0;const h=R.toLowerCase();return JSON.stringify(o.data).toLowerCase().includes(h)});if(!r)return null;const A=d.filter(o=>o.status.connected).length;return e.jsx("div",{style:a.overlay,onClick:s,children:e.jsxs("div",{style:a.modal,onClick:o=>o.stopPropagation(),children:[e.jsxs("div",{style:a.header,children:[e.jsxs("div",{style:a.headerTitle,children:[e.jsx(H,{name:"dashboard",size:16}),e.jsx("span",{children:"Monitoring & Logs"})]}),e.jsx("button",{style:a.closeBtn,onClick:s,title:"Close",children:"×"})]}),e.jsx("div",{style:a.tabs,children:ae.map(o=>e.jsxs("button",{style:a.tab(n===o.id),onClick:()=>{B(o.id),$(""),N(null)},children:[e.jsx(H,{name:o.icon,size:14}),e.jsx("span",{children:o.label})]},o.id))}),n!=="stats"&&n!=="instances"&&e.jsxs("div",{style:a.filters,children:[e.jsx("div",{style:{display:"flex",gap:4},children:["1h","6h","24h","7d","all"].map(o=>e.jsx("button",{style:{...a.timeBtn,background:z===o?"#89b4fa":"transparent",color:z===o?"#1e1e2e":"#a6adc8"},onClick:()=>F(o),children:o},o))}),e.jsx("input",{style:a.searchInput,placeholder:"Search events...",value:R,onChange:o=>$(o.target.value)}),e.jsx("button",{style:a.refreshBtn,onClick:l,children:"Refresh"})]}),e.jsx("div",{style:a.content,children:n==="stats"?e.jsx(ie,{loading:y,error:_,stats:t,integrations:d,connectedCount:A,onRefresh:f}):n==="instances"?e.jsx(de,{}):e.jsx(oe,{loading:y,error:_,entries:u,expandedId:W,matcherResults:m,loadingMatchers:i,onToggleExpand:async(o,h)=>{var w;if(W===o){N(null);return}if(N(o),!m[o]){C(!0);try{let k="";if((h==null?void 0:h.type)==="trigger"&&((w=h==null?void 0:h.data)!=null&&w.id))k=`/api/triggers/events/${h.data.id}/matchers`;else if(h&&["slack","email","approval"].includes(h.type)){const v=h.data,S=v.ts||v.messageId||v.email_id;S&&h.type&&(k=`/api/triggers/matchers/by-source/${h.type}/${encodeURIComponent(S)}`)}if(k){const v=await D(O(k));if(v.ok){const S=await v.json();p(V=>({...V,[o]:S.matchers||[]}))}}}catch(k){console.error("Failed to fetch matchers:",k)}finally{C(!1)}}}})}),n!=="stats"&&n!=="instances"&&e.jsx("div",{style:a.footer,children:e.jsxs("span",{style:{color:"#6c7086",fontSize:11},children:[u.length," event",u.length!==1?"s":""," shown",R&&` (filtered from ${T.length})`]})})]})})}function oe({loading:r,error:s,entries:n,expandedId:B,matcherResults:T,loadingMatchers:M,onToggleExpand:y}){return r?e.jsx("div",{style:{color:"#a6adc8",padding:20},children:"Loading events..."}):s?e.jsx("div",{style:{color:"#f38ba8",padding:20},children:s}):n.length===0?e.jsx("div",{style:{color:"#6c7086",textAlign:"center",padding:40},children:"No events found for the selected filters."}):e.jsx(e.Fragment,{children:n.map((x,_)=>{var W;const j=`${x.type}-${x.timestamp}-${_}`,z=B===j,F=ne[x.type]||"#6c7086",R=le(x),$=new Date(x.timestamp);return e.jsxs("div",{style:{...a.eventRow,borderLeft:`3px solid ${F}`,background:z?"rgba(137,180,250,0.05)":"transparent"},onClick:()=>y(j,x),children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("span",{style:{...a.tag,background:`${F}22`,color:F},children:re[x.type]||x.type}),e.jsx("span",{style:{color:"#cdd6f4",fontSize:12,flex:1},children:R}),e.jsxs("span",{style:{color:"#6c7086",fontSize:10,whiteSpace:"nowrap"},children:[$.toLocaleTimeString()," ",$.toLocaleDateString()]})]}),z&&e.jsxs(e.Fragment,{children:[e.jsx("pre",{style:a.detail,children:JSON.stringify(x.data,null,2)}),T[j]&&e.jsxs("div",{style:{marginTop:12,borderTop:"1px solid #313244",paddingTop:12},children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:.5,marginBottom:8},children:x.type==="trigger"?"Matcher Results":"Trigger Evaluations"}),M?e.jsx("div",{style:{color:"#6c7086",fontSize:12},children:"Loading matchers..."}):((W=T[j])==null?void 0:W.length)===0?e.jsx("div",{style:{color:"#6c7086",fontSize:12},children:"No matchers evaluated"}):(()=>{const N=T[j];if(x.type!=="trigger"){const m=new Map;for(const p of N){const i=String(p.trigger_id||"unknown");m.has(i)||m.set(i,[]),m.get(i).push(p)}return Array.from(m.entries()).map(([p,i])=>{var C;return e.jsxs("div",{style:{marginBottom:12},children:[e.jsxs("div",{style:{color:"#cdd6f4",fontSize:11,fontWeight:500,marginBottom:6,paddingBottom:4,borderBottom:"1px solid #45475a"},children:["Trigger: ",String(((C=i[0])==null?void 0:C.trigger_name)||p)]}),i.map((t,c)=>{const d=t.matched===1||t.matched===!0,b=d?"#a6e3a1":"#f38ba8",l=t.confidence??null,f=String(t.matcher_name||"unknown"),u=t.reason?String(t.reason):"";return e.jsxs("div",{style:{display:"flex",gap:8,padding:"6px 10px",background:"#313244",borderRadius:4,marginBottom:4,fontSize:11},children:[e.jsx("span",{style:{color:b,fontWeight:600,minWidth:50},children:d?e.jsx(H,{name:"check",size:12}):e.jsx(H,{name:"cross",size:12})}),e.jsx("span",{style:{color:"#cdd6f4",flex:1},children:f}),l!==null&&e.jsxs("span",{style:{color:"#a6adc8"},children:["(",(l*100).toFixed(0),"%)"]}),u&&e.jsx("span",{style:{color:"#6c7086",fontSize:10},children:u})]},c)})]},p)})}else return N.map((m,p)=>{const i=m.matched===1||m.matched===!0,C=i?"#a6e3a1":"#f38ba8",t=m.confidence??null,c=String(m.matcher_name||"unknown"),d=m.reason?String(m.reason):"";return e.jsxs("div",{style:{display:"flex",gap:8,padding:"6px 10px",background:"#313244",borderRadius:4,marginBottom:4,fontSize:11},children:[e.jsx("span",{style:{color:C,fontWeight:600,minWidth:50},children:i?e.jsxs(e.Fragment,{children:[e.jsx(H,{name:"check",size:12})," MATCH"]}):e.jsxs(e.Fragment,{children:[e.jsx(H,{name:"cross",size:12})," FAIL"]})}),e.jsx("span",{style:{color:"#cdd6f4",flex:1},children:c}),t!==null&&e.jsxs("span",{style:{color:"#a6adc8"},children:["(",(t*100).toFixed(0),"%)"]}),d&&e.jsx("span",{style:{color:"#6c7086",fontSize:10},children:d})]},p)})})()]})]})]},j)})})}function ie({loading:r,error:s,stats:n,integrations:B,connectedCount:T,onRefresh:M}){return r?e.jsx("div",{style:{color:"#a6adc8",padding:20},children:"Loading stats..."}):s?e.jsx("div",{style:{color:"#f38ba8",padding:20},children:s}):e.jsxs("div",{style:{padding:20},children:[e.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginBottom:16},children:e.jsx("button",{style:a.refreshBtn,onClick:M,children:"Refresh"})}),n&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:a.section,children:[e.jsx("h3",{style:a.sectionTitle,children:"Workflows"}),e.jsxs("div",{style:a.grid,children:[e.jsx(U,{label:"Active",value:n.activeWorkflows,color:"#89b4fa"}),e.jsx(U,{label:"Completed",value:n.completedWorkflows,color:"#a6e3a1"}),e.jsx(U,{label:"Failed",value:n.failedWorkflows,color:"#f38ba8"})]})]}),e.jsxs("div",{style:a.section,children:[e.jsx("h3",{style:a.sectionTitle,children:"Events (Today)"}),e.jsxs("div",{style:a.grid,children:[e.jsx(U,{label:"Triggers Fired",value:n.triggersFiredToday,color:"#f9e2af"}),e.jsx(U,{label:"Slack Messages",value:n.slackMessageCount,color:"#cba6f7"}),e.jsx(U,{label:"Emails",value:n.emailCount,color:"#fab387"})]})]}),e.jsxs("div",{style:a.section,children:[e.jsxs("h3",{style:a.sectionTitle,children:["Integrations (",T,"/",B.length," connected)"]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[B.map(y=>e.jsxs("div",{style:a.integrationRow,children:[e.jsx("span",{style:{color:"#cdd6f4",fontSize:13},children:y.name}),e.jsx("span",{style:{...a.statusBadge,background:y.status.connected?"rgba(166,227,161,0.15)":"rgba(108,112,134,0.15)",color:y.status.connected?"#a6e3a1":"#6c7086"},children:y.status.error?"Error":y.status.connected?"Connected":"Disconnected"})]},y.id)),B.length===0&&e.jsx("div",{style:{color:"#6c7086",fontSize:12},children:"No integrations configured"})]})]})]}),!n&&e.jsx("div",{style:{color:"#6c7086",textAlign:"center",padding:40},children:"No stats available. The event store may not have any data yet."})]})}function U({label:r,value:s,color:n}){return e.jsxs("div",{style:a.card,children:[e.jsx("div",{style:{color:n,fontSize:28,fontWeight:700,lineHeight:1},children:s}),e.jsx("div",{style:{color:"#a6adc8",fontSize:11,marginTop:4},children:r})]})}function le(r){const s=r.data;switch(r.type){case"trigger":return`Trigger "${s.triggerName||s.triggerId}" ${s.status||"fired"}`;case"slack":return`${s.direction==="outbound"?"Sent":"Received"} in #${s.channelName||s.channelId}: ${K(s.text,60)}`;case"email":return`${s.direction==="outbound"?"Sent to":"From"} ${s.direction==="outbound"?s.toAddresses:s.fromAddress}: ${K(s.subject,50)}`;case"approval":return`${s.approved?"Approved":"Rejected"} by ${s.approverEmail}`;case"document":return`Generated "${s.outputFilename}" from template "${s.templateName}"`;case"calendar":return`Calendar event ${s.action}: "${s.summary}"`;case"jira":return`${s.ticketKey} ${s.action}: ${K(s.summary,50)}`;case"step":return`Workflow step: ${s.toStateName} (${s.status})`;case"variable_change":return`Variable "${s.variableName}" changed by ${s.changedBy}`;case"audit":return`[${(s.level||"info").toUpperCase()}] ${s.category}: ${s.action}`;default:return JSON.stringify(s).slice(0,80)}}function K(r,s){return r?r.length>s?r.slice(0,s)+"...":r:""}const G={running:"#a6e3a1",paused:"#f9e2af",completed:"#89b4fa",failed:"#f38ba8",cancelled:"#6c7086"},Q={action:"#89b4fa",wait:"#f9e2af",decision:"#cba6f7",end:"#6c7086"};let Y=null,Z,ee;function te(){const r=se.getState(),s=r.workflowDefinitions??new Map,n=r.workflowInstances??new Map;return Y&&Z===s&&ee===n||(Z=s,ee=n,Y={definitions:s,instances:n}),Y}function ce(){return g.useSyncExternalStore(r=>se.subscribe(r),te,te)}function de(){var C;const{definitions:r,instances:s}=ce(),[n,B]=g.useState("all"),[T,M]=g.useState("all"),[y,x]=g.useState(""),[_,j]=g.useState(null),[z,F]=g.useState(null),[R,$]=g.useState(null),W=g.useMemo(()=>Array.from(s.values()),[s]),N=g.useMemo(()=>Array.from(r.values()),[r]),m=g.useMemo(()=>W.filter(t=>{if(n!=="all"&&t.status!==n||T!=="all"&&t.workflowDefId!==T)return!1;if(y){const c=y.toLowerCase();return t.workflowName.toLowerCase().includes(c)||t.id.toLowerCase().includes(c)||JSON.stringify(t.variables).toLowerCase().includes(c)}return!0}).sort((t,c)=>c.updatedAt-t.updatedAt),[W,n,T,y]),p=_?s.get(_):null,i=R?s.get(R):null;if(i){const t=r.get(i.workflowDefId),c=t==null?void 0:t.states.find(f=>f.id===i.currentStateId),d=G[i.status]||"#6c7086",b={},l={};for(const[f,u]of Object.entries(i.variables))f.startsWith("wi_")?b[f]=u:l[f]=u;return e.jsxs("div",{style:{padding:"12px 0"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:12},children:[e.jsx("button",{style:{...a.refreshBtn,fontSize:12},onClick:()=>$(null),children:"Back"}),e.jsxs("span",{style:{color:"#cdd6f4",fontSize:13,fontWeight:500},children:["Debug: ",i.workflowName]}),e.jsx("span",{style:{...a.tag,background:`${d}22`,color:d},children:i.status})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:8,marginBottom:16},children:[e.jsx(L,{label:"ID",value:i.id}),e.jsx(L,{label:"Def ID",value:i.workflowDefId}),e.jsx(L,{label:"Current State",value:(c==null?void 0:c.name)||i.currentStateId}),e.jsx(L,{label:"State Type",value:(c==null?void 0:c.type)||"unknown"}),e.jsx(L,{label:"Created",value:J(i.createdAt)}),e.jsx(L,{label:"Updated",value:J(i.updatedAt)}),i.completedAt&&e.jsx(L,{label:"Completed",value:J(i.completedAt)}),i.error&&e.jsx(L,{label:"Error",value:i.error,color:"#f38ba8"}),e.jsx(L,{label:"Steps",value:String(((C=i.history)==null?void 0:C.length)??0)})]}),Object.keys(l).length>0&&e.jsxs("div",{style:{marginBottom:16},children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:6},children:"User Variables"}),e.jsx("pre",{style:a.detail,children:JSON.stringify(l,null,2)})]}),Object.keys(b).length>0&&e.jsxs("div",{style:{marginBottom:16},children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:6},children:"Internal Variables (wi_*)"}),e.jsx("pre",{style:a.detail,children:JSON.stringify(b,null,2)})]}),c&&c.transitions.length>0&&e.jsxs("div",{style:{marginBottom:16},children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:6},children:"Available Transitions"}),c.transitions.map(f=>{var u;return e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",padding:"4px 10px",background:"#313244",borderRadius:4,marginBottom:4},children:[e.jsx("span",{style:{color:"#cdd6f4",fontSize:12},children:f.name}),e.jsxs("span",{style:{color:"#6c7086",fontSize:10},children:[f.condition.type," → ",((u=t==null?void 0:t.states.find(A=>A.id===f.targetStateId))==null?void 0:u.name)||f.targetStateId]})]},f.id)})]}),e.jsxs("div",{children:[e.jsx("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:6},children:"Raw JSON"}),e.jsx("pre",{style:{...a.detail,maxHeight:400},children:JSON.stringify(i,null,2)})]})]})}if(p){const t=r.get(p.workflowDefId),c=G[p.status]||"#6c7086";return e.jsxs("div",{style:{padding:"12px 0"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[e.jsx("button",{style:{...a.refreshBtn,fontSize:12},onClick:()=>{j(null),F(null)},children:"Back"}),e.jsx("span",{style:{color:"#cdd6f4",fontSize:13,fontWeight:500},children:p.workflowName}),e.jsxs("span",{style:{color:"#6c7086",fontSize:10,fontFamily:"monospace"},children:["(",p.id.slice(0,8),")"]}),e.jsx("span",{style:{...a.tag,background:`${c}22`,color:c},children:p.status}),e.jsx("div",{style:{flex:1}}),e.jsx("button",{style:{...a.refreshBtn,fontFamily:"monospace",fontSize:10},onClick:()=>$(p.id),children:"{..}"})]}),e.jsxs("div",{style:{display:"flex",gap:16,color:"#6c7086",fontSize:11,marginBottom:12},children:[e.jsxs("span",{children:["Created: ",J(p.createdAt)]}),e.jsxs("span",{children:["Updated: ",J(p.updatedAt)]}),p.error&&e.jsxs("span",{style:{color:"#f38ba8"},children:["Error: ",p.error]})]}),e.jsxs("div",{style:{color:"#a6adc8",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:8},children:["Timeline (",p.history.length," step",p.history.length!==1?"s":"",")"]}),p.history.length===0&&e.jsx("div",{style:{color:"#6c7086",fontSize:12,padding:16},children:"No steps recorded yet."}),p.history.map((d,b)=>{const l=t==null?void 0:t.states.find(A=>A.id===d.toStateId),f=z===b,u=l&&Q[l.type]||"#6c7086";return e.jsxs("div",{style:{padding:"10px 12px",borderLeft:`3px solid ${u}`,borderBottom:"1px solid #313244",cursor:"pointer",background:f?"rgba(137,180,250,0.05)":"transparent",marginLeft:8},onClick:()=>F(f?null:b),children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("span",{style:{width:6,height:6,borderRadius:"50%",background:u,flexShrink:0}}),e.jsx("span",{style:{color:"#cdd6f4",fontSize:12,fontWeight:500},children:(l==null?void 0:l.name)||d.toStateId}),l&&e.jsx("span",{style:{...a.tag,background:`${u}22`,color:u},children:l.type}),d.transitionName&&e.jsxs("span",{style:{color:"#6c7086",fontSize:10},children:['via "',d.transitionName,'"']}),e.jsx("div",{style:{flex:1}}),e.jsx("span",{style:{color:"#6c7086",fontSize:10,whiteSpace:"nowrap"},children:J(d.timestamp)})]}),f&&e.jsxs("div",{style:{marginTop:8,paddingLeft:20},children:[d.fromStateId&&e.jsxs("div",{style:{color:"#6c7086",fontSize:11,marginBottom:2},children:[e.jsx("span",{style:{fontWeight:600,fontSize:10,textTransform:"uppercase"},children:"From: "}),e.jsx("span",{style:{fontFamily:"monospace"},children:d.fromStateId})]}),d.details&&e.jsxs("div",{style:{marginTop:6},children:[e.jsx("div",{style:{color:"#6c7086",fontSize:10,fontWeight:600,textTransform:"uppercase",marginBottom:4},children:"Agent Reasoning / Summary"}),e.jsx("div",{style:{padding:10,background:"#181825",borderRadius:6,border:"1px solid #313244",fontSize:12,color:"#cdd6f4",lineHeight:1.5,whiteSpace:"pre-wrap"},children:d.details})]}),(l==null?void 0:l.description)&&e.jsxs("div",{style:{marginTop:6,color:"#a6adc8",fontSize:11},children:[e.jsx("span",{style:{color:"#6c7086",fontWeight:600,fontSize:10,textTransform:"uppercase"},children:"Description: "}),l.description]}),d.variables&&Object.keys(d.variables).length>0&&e.jsxs("div",{style:{marginTop:6},children:[e.jsx("div",{style:{color:"#6c7086",fontSize:10,fontWeight:600,textTransform:"uppercase",marginBottom:4},children:"Variables at this step"}),e.jsx("pre",{style:a.detail,children:JSON.stringify(d.variables,null,2)})]}),(l==null?void 0:l.action)&&e.jsxs("div",{style:{marginTop:6},children:[e.jsxs("div",{style:{color:"#6c7086",fontSize:10,fontWeight:600,textTransform:"uppercase",marginBottom:4},children:["Action (",l.action.type,")"]}),e.jsx("pre",{style:a.detail,children:JSON.stringify(l.action,null,2)})]})]})]},b)})]})}return e.jsxs("div",{style:{padding:"12px 0"},children:[e.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center",marginBottom:12,flexWrap:"wrap"},children:[e.jsxs("select",{style:{background:"#313244",border:"1px solid #45475a",borderRadius:6,padding:"5px 10px",color:"#cdd6f4",fontSize:12,outline:"none"},value:T,onChange:t=>M(t.target.value),children:[e.jsx("option",{value:"all",children:"All Workflows"}),N.map(t=>e.jsx("option",{value:t.id,children:t.name},t.id))]}),e.jsx("div",{style:{display:"flex",gap:4},children:["all","running","paused","completed","failed","cancelled"].map(t=>e.jsx("button",{style:{...a.timeBtn,background:n===t?t==="all"?"#89b4fa":G[t]||"#89b4fa":"transparent",color:n===t?"#1e1e2e":"#a6adc8",borderColor:n===t?"transparent":"#45475a",textTransform:"capitalize"},onClick:()=>B(t),children:t},t))}),e.jsx("input",{style:a.searchInput,placeholder:"Search instances...",value:y,onChange:t=>x(t.target.value)}),e.jsxs("span",{style:{color:"#6c7086",fontSize:11},children:[m.length,"/",W.length]})]}),m.length===0?e.jsx("div",{style:{color:"#6c7086",textAlign:"center",padding:40},children:"No workflow instances found."}):m.map(t=>{var f,u;const c=r.get(t.workflowDefId),d=G[t.status]||"#6c7086",b=c==null?void 0:c.states.find(A=>A.id===t.currentStateId),l=b&&Q[b.type]||"#6c7086";return e.jsxs("div",{style:{...a.eventRow,display:"flex",alignItems:"center",gap:12,borderLeft:`3px solid ${d}`},onClick:()=>j(t.id),children:[e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[e.jsx("span",{style:{color:"#cdd6f4",fontSize:13,fontWeight:500},children:t.workflowName}),e.jsx("span",{style:{...a.tag,background:`${d}22`,color:d},children:t.status})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:2},children:[e.jsx("span",{style:{color:"#6c7086",fontSize:10,fontFamily:"monospace"},children:t.id.slice(0,8)}),b&&e.jsxs("span",{style:{color:l,fontSize:10},children:["@ ",b.name]}),e.jsxs("span",{style:{color:"#45475a",fontSize:10},children:[((f=t.history)==null?void 0:f.length)??0," step",(((u=t.history)==null?void 0:u.length)??0)!==1?"s":""]})]})]}),e.jsx("span",{style:{color:"#6c7086",fontSize:10,whiteSpace:"nowrap"},children:pe(t.updatedAt)}),e.jsx("button",{style:{background:"transparent",border:"1px solid #45475a",borderRadius:4,padding:"3px 6px",color:"#6c7086",fontSize:10,fontFamily:"monospace",cursor:"pointer"},onClick:A=>{A.stopPropagation(),$(t.id)},title:"Debug view",children:"{..}"})]},t.id)})]})}function L({label:r,value:s,color:n}){return e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,padding:"8px 10px",background:"#313244",borderRadius:6},children:[e.jsx("span",{style:{color:"#6c7086",fontSize:10,textTransform:"uppercase",letterSpacing:.5},children:r}),e.jsx("span",{style:{color:n||"#cdd6f4",fontSize:12,fontFamily:"monospace",wordBreak:"break-all"},children:s})]})}function pe(r){return new Date(r).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function J(r){const s=new Date(r);return`${s.toLocaleDateString()} ${s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}`}const a={overlay:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4,backdropFilter:"blur(4px)"},modal:{background:"var(--surface-0, #1e1e2e)",borderRadius:12,border:"1px solid var(--border, #313244)",width:"90vw",maxWidth:1e3,height:"85vh",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"0 20px 60px rgba(0, 0, 0, 0.5)"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:"1px solid var(--border, #313244)",background:"var(--surface-1, #181825)"},headerTitle:{fontSize:16,fontWeight:600,color:"var(--text-primary, #cdd6f4)",display:"flex",alignItems:"center",gap:8},closeBtn:{background:"none",border:"none",color:"var(--text-secondary, #a6adc8)",fontSize:20,cursor:"pointer",padding:"4px 8px",borderRadius:6,lineHeight:1},tabs:{display:"flex",borderBottom:"1px solid var(--border, #313244)",background:"var(--surface-1, #181825)",overflowX:"auto",scrollbarWidth:"none"},tab:r=>({padding:"10px 16px",background:"none",border:"none",borderBottom:r?"2px solid var(--accent, #89b4fa)":"2px solid transparent",color:r?"var(--accent, #89b4fa)":"var(--text-secondary, #a6adc8)",fontSize:13,fontWeight:r?600:400,cursor:"pointer",display:"flex",alignItems:"center",gap:6,whiteSpace:"nowrap",transition:"color 0.15s, border-color 0.15s",flexShrink:0}),filters:{display:"flex",gap:8,alignItems:"center",padding:"10px 20px",borderBottom:"1px solid var(--border, #313244)",flexWrap:"wrap"},timeBtn:{border:"1px solid #45475a",borderRadius:4,padding:"4px 8px",fontSize:10,fontWeight:600,cursor:"pointer"},searchInput:{background:"#313244",border:"1px solid #45475a",borderRadius:6,padding:"5px 10px",color:"#cdd6f4",fontSize:12,flex:1,minWidth:120,outline:"none"},refreshBtn:{background:"transparent",border:"1px solid #45475a",borderRadius:6,padding:"5px 12px",color:"#a6adc8",fontSize:11,cursor:"pointer"},content:{flex:1,overflow:"auto",padding:"0 20px"},eventRow:{padding:"8px 12px",borderBottom:"1px solid #313244",cursor:"pointer",transition:"background 0.1s"},tag:{fontSize:10,fontWeight:600,padding:"2px 6px",borderRadius:4,whiteSpace:"nowrap"},detail:{marginTop:8,padding:10,background:"#181825",borderRadius:6,fontSize:11,fontFamily:"monospace",color:"#a6adc8",overflow:"auto",maxHeight:300,whiteSpace:"pre-wrap",wordBreak:"break-all"},footer:{padding:"8px 20px",borderTop:"1px solid #313244"},section:{marginBottom:24},sectionTitle:{color:"#a6adc8",fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:1,marginBottom:12,margin:0},grid:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:12},card:{background:"#313244",borderRadius:8,padding:"16px 14px",textAlign:"center"},integrationRow:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",background:"#313244",borderRadius:6},statusBadge:{fontSize:10,fontWeight:600,padding:"3px 8px",borderRadius:4}};export{he as MonitoringModal};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as L,f as d,r as m,s as o,j as x}from"./main-
|
|
1
|
+
import{u as L,f as d,r as m,s as o,j as x}from"./main-CyZg1kKu.js";import{L as S}from"./LogViewerModal-DXxjS8NR.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";function B({building:t,isOpen:e,onClose:n}){var a;const{t:i}=L(["terminal"]),{streamingBuildingLogs:p,streamingBuildingIds:c}=d(),r=p.get(t.id)||"",g=c.has(t.id);m.useEffect(()=>{var s;return e&&((s=t.pm2)!=null&&s.enabled)&&o.startLogStreaming(t.id,200),()=>{t.id&&o.stopLogStreaming(t.id)}},[e,t.id,(a=t.pm2)==null?void 0:a.enabled]);const f=m.useMemo(()=>r.split(`
|
|
2
2
|
`).map((s,l)=>({text:s,lineNumber:l+1})),[r]);return x.jsx(S,{isOpen:e,onClose:n,title:`${t.name} - ${i("terminal:logs.pm2Logs")}`,icon:"📄",lines:f,isStreaming:g,onClear:()=>o.clearStreamingLogs(t.id)})}export{B as PM2LogsModal};
|
package/dist/assets/{RestoreArchivedAreaModal-DOwzfu-D.js → RestoreArchivedAreaModal-CVHj28LX.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as m,U as f,j as e,I as N,s as d}from"./main-
|
|
1
|
+
import{u as m,U as f,j as e,I as N,s as d}from"./main-CyZg1kKu.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";function g(r){const t=Date.now()-r,i=Math.floor(t/1e3),a=Math.floor(i/60),c=Math.floor(a/60),n=Math.floor(c/24);return n>0?`${n} day${n>1?"s":""} ago`:c>0?`${c} hour${c>1?"s":""} ago`:a>0?`${a} min${a>1?"s":""} ago`:"just now"}function k({isOpen:r,restorePosition:l,onClose:t,onRestored:i}){const{t:a}=m(["terminal","common"]),c=f(),n=Array.from(c.values()).filter(s=>s.archived===!0),o=(s,j)=>{const x=j?void 0:l||void 0;d.restoreArchivedArea(s,x),i==null||i(),t()},h=()=>{for(const s of n)d.restoreArchivedArea(s.id);i==null||i(),t()},v=s=>{s.target===s.currentTarget&&t()},u=s=>{s.key==="Escape"&&t()};return r?e.jsx("div",{className:`modal-overlay ${r?"visible":""}`,onClick:v,onKeyDown:u,children:e.jsxs("div",{className:"modal restore-archived-modal",children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("span",{className:"header-icon",children:e.jsx(N,{name:"package",size:16})}),a("terminal:areas.restoreArchivedZone")]}),e.jsx("div",{className:"modal-body restore-archived-body",children:n.length===0?e.jsx("div",{className:"archived-empty",children:a("terminal:areas.noArchivedZones")}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"restore-info",children:a("terminal:areas.restoreInfo")}),e.jsx("div",{className:"archived-list",children:n.map(s=>e.jsx(p,{area:s,onRestoreHere:()=>o(s.id,!1),onRestoreOriginal:()=>o(s.id,!0),hasRestorePosition:!!l},s.id))}),n.length>1&&e.jsx("div",{className:"restore-all-section",children:e.jsx("button",{className:"btn btn-secondary",onClick:h,children:a("terminal:areas.restoreAllOriginal")})})]})}),e.jsx("div",{className:"modal-footer",children:e.jsx("button",{className:"btn btn-secondary",onClick:t,children:a("common:buttons.cancel")})})]})}):null}function p({area:r,onRestoreHere:l,onRestoreOriginal:t,hasRestorePosition:i}){const{t:a}=m(["terminal","common"]),c=r.assignedAgentIds.length,n=r.directories.length;return e.jsxs("div",{className:"archived-item",children:[e.jsx("div",{className:"archived-item-color",style:{backgroundColor:r.color}}),e.jsxs("div",{className:"archived-item-info",children:[e.jsx("div",{className:"archived-item-name",children:r.name}),e.jsxs("div",{className:"archived-item-meta",children:[e.jsx("span",{className:"archived-item-type",children:r.type}),c>0&&e.jsx("span",{className:"archived-item-agents",children:a("terminal:areas.agentCount",{count:c})}),n>0&&e.jsx("span",{className:"archived-item-dirs",children:a("terminal:areas.folderCount",{count:n})}),r.archivedAt&&e.jsx("span",{className:"archived-item-time",children:g(r.archivedAt)})]})]}),e.jsxs("div",{className:"archived-item-actions",children:[i&&e.jsx("button",{className:"btn btn-small btn-primary",onClick:l,title:a("terminal:areas.placeAtClickedPosition"),children:a("terminal:areas.restoreHere")}),e.jsx("button",{className:"btn btn-small",onClick:t,title:a("terminal:areas.restoreToOriginal"),children:a(i?"terminal:areas.original":"terminal:areas.restore")})]})]})}export{k as RestoreArchivedAreaModal};
|