@rubytech/create-maxy-code 0.1.360 → 0.1.362
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/package.json +1 -1
- package/payload/platform/plugins/admin/skills/connector-directory/SKILL.md +53 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +18 -1
- package/payload/platform/plugins/docs/references/graph.md +17 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +18 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
- package/payload/platform/services/webchat-channel/dist/instructions.js +11 -0
- package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
- package/payload/server/public/assets/{AdminLoginScreens-FufN0KIm.js → AdminLoginScreens-D6JtrY9a.js} +1 -1
- package/payload/server/public/assets/{AdminShell-CmFCbj38.js → AdminShell-CaVRZTmj.js} +1 -1
- package/payload/server/public/assets/{Checkbox-njajXf-b.js → Checkbox-BiHO47mz.js} +1 -1
- package/payload/server/public/assets/{OperatorConversations-B9Vx84BF.js → OperatorConversations-CzhbxFwN.js} +1 -1
- package/payload/server/public/assets/OperatorConversations-D3UBU6SM.css +1 -0
- package/payload/server/public/assets/{admin-DYOYaRcc.js → admin-BrCL9qSn.js} +1 -1
- package/payload/server/public/assets/{browser-CUwGN38H.js → browser-DNIV6o_p.js} +1 -1
- package/payload/server/public/assets/{calendar-HonT_eBL.js → calendar-Arx94jTH.js} +1 -1
- package/payload/server/public/assets/chat-BwShkhcz.js +1 -0
- package/payload/server/public/assets/{data-vEYM-aPa.js → data-DBInTT-w.js} +1 -1
- package/payload/server/public/assets/{graph-labels-tUzvK8mv.js → graph-labels-CVZClzPb.js} +1 -1
- package/payload/server/public/assets/{graph-BLUtXXda.js → graph-z-RYpYMZ.js} +15 -15
- package/payload/server/public/assets/{operator-BLEBOkrQ.js → operator-CoCf8Lk7.js} +1 -1
- package/payload/server/public/assets/{page-CcnJY-yB.js → page-CWnkJCxo.js} +5 -5
- package/payload/server/public/assets/{public-B8GW-fZg.js → public-CKMOOQiq.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-BA0MN5YR.js → rotate-ccw-Dgw6hmsm.js} +1 -1
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +4 -4
- package/payload/server/public/chat.html +6 -6
- package/payload/server/public/data.html +4 -4
- package/payload/server/public/graph.html +7 -7
- package/payload/server/public/index.html +6 -6
- package/payload/server/public/operator.html +8 -8
- package/payload/server/public/public.html +6 -6
- package/payload/server/server.js +106 -0
- package/payload/server/public/assets/OperatorConversations-BqudLZH5.css +0 -1
- package/payload/server/public/assets/chat-B-sCk0kO.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-CAM3fms7.js";import{H as t,W as n,w as r}from"./OperatorConversations-
|
|
1
|
+
import{o as e}from"./chunk-CAM3fms7.js";import{H as t,W as n,w as r}from"./OperatorConversations-CzhbxFwN.js";import"./admin-types-DJoj6VJv.js";import{u as i}from"./AdminShell-CaVRZTmj.js";import{a,i as o,o as s,r as c}from"./page-CWnkJCxo.js";var l=t(),u=e(n(),1),d=r();function f({gateState:e,setGateState:t,grantInfo:n,resolvedSlugRef:r}){let[a,o]=(0,u.useState)(``),[s,c]=(0,u.useState)(!1),[l,f]=(0,u.useState)(null);async function p(e){e.preventDefault();let n=a.trim().toLowerCase();if(!n){f(`Enter the email you were invited on.`);return}c(!0),f(null);try{let e=await fetch(`/api/access/request-magic-link`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({contactValue:n,agentSlug:r.current})});if(e.status===429){f((await e.json().catch(()=>({})))?.error||`Too many requests. Try again later.`);return}t(`request-sent`)}catch{f(`Could not reach the server. Check your connection and try again.`)}finally{c(!1)}}return(0,d.jsxs)(`div`,{className:`access-gate`,children:[e===`verifying`&&(0,d.jsxs)(`div`,{className:`access-gate-message`,children:[(0,d.jsx)(`h2`,{children:`Verifying your link…`}),(0,d.jsx)(`p`,{children:`This takes a moment.`})]}),e===`verify-failed`&&(0,d.jsxs)(`div`,{className:`access-gate-message`,children:[(0,d.jsx)(`h2`,{children:`That link did not work`}),(0,d.jsx)(`p`,{children:`It may have expired, already been used, or been for a different agent. You can request a fresh one below.`}),(0,d.jsx)(i,{onClick:()=>{t(`request-link`),f(null)},children:`Request a new link`})]}),e===`request-link`&&(0,d.jsxs)(`form`,{className:`access-gate-form`,onSubmit:p,children:[(0,d.jsx)(`h2`,{children:n?.displayName?`Welcome back, ${n.displayName}`:`Sign in`}),(0,d.jsx)(`p`,{children:`Enter the email you were invited on and we will send you a fresh link.`}),(0,d.jsx)(`label`,{htmlFor:`access-email`,children:`Email`}),(0,d.jsx)(`input`,{id:`access-email`,type:`email`,inputMode:`email`,autoComplete:`email`,value:a,onChange:e=>o(e.target.value),disabled:s}),l&&(0,d.jsx)(`p`,{className:`access-gate-error`,children:l}),(0,d.jsx)(i,{type:`submit`,disabled:s||!a.trim(),children:s?`Sending…`:`Send me a link`})]}),e===`request-sent`&&(0,d.jsxs)(`div`,{className:`access-gate-message`,children:[(0,d.jsx)(`h2`,{children:`Check your email`}),(0,d.jsx)(`p`,{children:`If that address is on the invite list, a fresh link is on the way. It expires in 15 minutes.`}),(0,d.jsx)(i,{onClick:()=>{t(`request-link`),o(``),f(null)},children:`Try a different email`})]})]})}function p(){let[e,t]=(0,u.useState)(null),[n,r]=(0,u.useState)(null),[i,c]=(0,u.useState)(`loading`),[l,d]=(0,u.useState)(``),[f,p]=(0,u.useState)(null),[m,h]=(0,u.useState)(null),[g,_]=(0,u.useState)(!1),[v,y]=(0,u.useState)(null),b=(0,u.useMemo)(()=>o(),[]),x=(0,u.useRef)(b||``),S=(0,u.useRef)(null),C=(0,u.useRef)(null),w=(0,u.useRef)(!1),T=(0,u.useRef)(null),[E,D]=(0,u.useState)(`request-link`),[O,k]=(0,u.useState)(null),A=(0,u.useRef)(null),j=(0,u.useRef)(null);(0,u.useEffect)(()=>{try{let e=sessionStorage.getItem(`maxy_session`);e&&(j.current=e)}catch{}},[]);let M=(0,u.useCallback)(e=>{S.current=e,t(e);try{sessionStorage.setItem(`maxy_session`,e)}catch{}c(`chat`)},[]),N=(0,u.useCallback)(()=>{S.current=null;try{sessionStorage.removeItem(`maxy_session`)}catch{}t(null),c(`auth-required`),D(`request-link`)},[]),P=(0,u.useCallback)(async e=>{D(`verifying`);try{let t=x.current,n=await fetch(`/api/access/verify-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,agentSlug:t})});if(window.history.replaceState({},``,window.location.pathname),n.ok){let e=await n.json().catch(()=>({}));return e?.displayName&&k({displayName:e.displayName,contactValue:``,expiresAt:null,status:`active`}),!0}return D(`verify-failed`),!1}catch{return D(`verify-failed`),!1}},[]),F=(0,u.useCallback)(async()=>{if(S.current)return S.current;if(C.current)return C.current;let e=(async()=>{try{let e=j.current,n=await fetch(`/api/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_id:a(),...b?{agent:b}:{},...e?{session_key:e}:{}})});if(!n.ok){let e=await n.json().catch(()=>({error:``}));return s&&console.error(`[session] POST /api/session failed: ${n.status} ${n.statusText}`,e),n.status===404?r(e.error||`Agent not found`):n.status===503&&r(e.error||`Service unavailable`),null}let i=await n.json();if(i.auth_required){i.agent_id&&(x.current=i.agent_id),d(i.displayName||``),i.agentImage&&p(i.agentImage),i.agentImageShape&&h(i.agentImageShape),i.showAgentName&&_(i.showAgentName),i.branding&&y(i.branding),c(`auth-required`);let e=new URLSearchParams(window.location.search).get(`token`);return e?await P(e)&&window.location.reload():D(`request-link`),null}S.current=i.session_key,t(i.session_key),i.displayName&&d(i.displayName),i.agentImage&&p(i.agentImage),i.agentImageShape&&h(i.agentImageShape),i.showAgentName&&_(i.showAgentName),i.branding&&y(i.branding),c(`chat`),i.resumed&&i.messages&&(w.current=!0,T.current=i.messages);try{sessionStorage.setItem(`maxy_session`,i.session_key)}catch{}return i.session_key}catch(e){return s&&console.error(`[session] fetch /api/session threw:`,e),r(`Unable to connect. Please check your connection and try again.`),null}finally{C.current=null}})();return C.current=e,e},[b,P]);return{sessionId:e,cacheKeyRef:S,sessionError:n,pageState:i,setPageState:c,agentDisplayName:l,agentImage:f,agentImageShape:m,showAgentName:g,agentSlug:b,branding:v,resolvedSlugRef:x,ensureSession:F,startNewSession:(0,u.useCallback)(async()=>{S.current=null,C.current=null,j.current=null,w.current=!1,T.current=null,t(null),r(null);try{sessionStorage.removeItem(`maxy_session`)}catch{}await F()},[F]),enterChat:M,enterGate:N,resumedRef:w,resumeMessagesRef:T,gateState:E,setGateState:D,grantInfo:O,setGrantInfo:k,gateCacheKeyRef:A}}function m(){let{ensureSession:e,pageState:t,gateState:n,setGateState:r,grantInfo:i,resolvedSlugRef:a}=p();return(0,u.useEffect)(()=>{e()},[e]),t===`loading`?(0,d.jsx)(`div`,{className:`public-loading`,children:`Loading…`}):t===`auth-required`?(0,d.jsx)(f,{gateState:n,setGateState:r,grantInfo:i,resolvedSlugRef:a}):(0,d.jsx)(`div`,{className:`public-shell`,children:(0,d.jsx)(c,{cacheKey:``,variant:`public`})})}(0,l.createRoot)(document.getElementById(`root`)).render((0,d.jsx)(m,{}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as e}from"./OperatorConversations-
|
|
1
|
+
import{z as e}from"./OperatorConversations-CzhbxFwN.js";var t=e(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]);export{t};
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Browser — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/browser-
|
|
8
|
+
<script type="module" crossorigin src="/assets/browser-DNIV6o_p.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-CzhbxFwN.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CaVRZTmj.js">
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-D3UBU6SM.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Calendar — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/calendar-
|
|
8
|
+
<script type="module" crossorigin src="/assets/calendar-Arx94jTH.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-CzhbxFwN.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CaVRZTmj.js">
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-D3UBU6SM.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Chat — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/chat-
|
|
8
|
+
<script type="module" crossorigin src="/assets/chat-BwShkhcz.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-CzhbxFwN.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CaVRZTmj.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/admin-types-DJoj6VJv.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-CQ36nxok.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-Dgw6hmsm.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CWnkJCxo.js">
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-D3UBU6SM.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
19
19
|
<div id="root"></div>
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Data — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/data-
|
|
8
|
+
<script type="module" crossorigin src="/assets/data-DBInTT-w.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/graph-labels-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-CzhbxFwN.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-CVZClzPb.js">
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-D3UBU6SM.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Graph — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/graph-
|
|
8
|
+
<script type="module" crossorigin src="/assets/graph-z-RYpYMZ.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/graph-labels-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/Checkbox-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-CzhbxFwN.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-CVZClzPb.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CaVRZTmj.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/Checkbox-BiHO47mz.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-Dgw6hmsm.js">
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-D3UBU6SM.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
18
18
|
<div id="root"></div>
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/admin-
|
|
8
|
+
<script type="module" crossorigin src="/assets/admin-BrCL9qSn.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-CzhbxFwN.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CaVRZTmj.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/admin-types-DJoj6VJv.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/Checkbox-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/Checkbox-BiHO47mz.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-D6JtrY9a.js">
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-D3UBU6SM.css">
|
|
16
16
|
<link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
|
|
17
17
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
18
18
|
</head>
|
|
@@ -5,17 +5,17 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Operator — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/operator-
|
|
8
|
+
<script type="module" crossorigin src="/assets/operator-CoCf8Lk7.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-CzhbxFwN.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CaVRZTmj.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/admin-types-DJoj6VJv.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/Checkbox-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/Checkbox-BiHO47mz.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-D6JtrY9a.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-CQ36nxok.js">
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
18
|
-
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-Dgw6hmsm.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CWnkJCxo.js">
|
|
18
|
+
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-D3UBU6SM.css">
|
|
19
19
|
<link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
|
|
20
20
|
</head>
|
|
21
21
|
<body>
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/public-
|
|
8
|
+
<script type="module" crossorigin src="/assets/public-CKMOOQiq.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/OperatorConversations-CzhbxFwN.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CaVRZTmj.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/admin-types-DJoj6VJv.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-CQ36nxok.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-Dgw6hmsm.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CWnkJCxo.js">
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/OperatorConversations-D3UBU6SM.css">
|
|
17
17
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
18
18
|
</head>
|
|
19
19
|
<body class="public-surface">
|
package/payload/server/server.js
CHANGED
|
@@ -14646,6 +14646,7 @@ function isHiddenByDefault(label) {
|
|
|
14646
14646
|
|
|
14647
14647
|
// server/routes/admin/graph-subgraph.ts
|
|
14648
14648
|
var CEILING = 2e3;
|
|
14649
|
+
var TOP_LEVEL_LIMIT = 1e3;
|
|
14649
14650
|
var STRIPPED_PROPERTIES = /* @__PURE__ */ new Set([
|
|
14650
14651
|
"embedding",
|
|
14651
14652
|
"passwordHash",
|
|
@@ -14679,6 +14680,9 @@ async function handleDefault(c, accountId) {
|
|
|
14679
14680
|
const labels = rawLabels.split(",").map((s) => s.trim()).filter(Boolean);
|
|
14680
14681
|
const includeTrashed = c.req.query("includeTrashed") === "1";
|
|
14681
14682
|
const includeAgentActions = c.req.query("includeAgentActions") === "1";
|
|
14683
|
+
if (c.req.query("topLevel") === "1") {
|
|
14684
|
+
return handleDefaultTopLevel(c, accountId, { includeTrashed, includeAgentActions });
|
|
14685
|
+
}
|
|
14682
14686
|
const agentActionLabels = includeAgentActions ? [] : [...AGENT_ACTION_LABELS];
|
|
14683
14687
|
const rawChannel = c.req.query("channel") ?? "";
|
|
14684
14688
|
const channel = rawChannel.split(",").map((s) => s.trim()).filter(Boolean);
|
|
@@ -14765,6 +14769,61 @@ async function handleDefault(c, accountId) {
|
|
|
14765
14769
|
}
|
|
14766
14770
|
}
|
|
14767
14771
|
}
|
|
14772
|
+
async function handleDefaultTopLevel(c, accountId, flags) {
|
|
14773
|
+
const { includeTrashed, includeAgentActions } = flags;
|
|
14774
|
+
const labels = [...FILTER_TOP_LEVEL_LABELS].filter((l) => !HIDDEN_BY_DEFAULT_LABELS.has(l));
|
|
14775
|
+
const agentActionLabels = [...AGENT_ACTION_LABELS];
|
|
14776
|
+
const started = Date.now();
|
|
14777
|
+
const session = getSession();
|
|
14778
|
+
try {
|
|
14779
|
+
const countCypher = includeTrashed ? DEFAULT_COUNT_CYPHER_INCLUDE_TRASHED : DEFAULT_COUNT_CYPHER;
|
|
14780
|
+
const fetchCypher = includeTrashed ? TOP_LEVEL_FETCH_CYPHER_INCLUDE_TRASHED : TOP_LEVEL_FETCH_CYPHER;
|
|
14781
|
+
const cypherParams = {
|
|
14782
|
+
accountId,
|
|
14783
|
+
labels,
|
|
14784
|
+
agentActionLabels,
|
|
14785
|
+
channel: [],
|
|
14786
|
+
messageSublabel: [],
|
|
14787
|
+
topLevelLimit: neo4j2.int(TOP_LEVEL_LIMIT)
|
|
14788
|
+
};
|
|
14789
|
+
const result = await session.executeRead(async (tx) => {
|
|
14790
|
+
const countResult = await tx.run(countCypher, cypherParams);
|
|
14791
|
+
const matchedRaw = countResult.records[0]?.get("matched");
|
|
14792
|
+
const total = typeof matchedRaw === "bigint" ? Number(matchedRaw) : Number(matchedRaw ?? 0);
|
|
14793
|
+
const fetchResult = await tx.run(fetchCypher, cypherParams);
|
|
14794
|
+
const record = fetchResult.records[0];
|
|
14795
|
+
const rawNodes = record?.get("nodes") ?? [];
|
|
14796
|
+
const rawEdges = record?.get("edges") ?? [];
|
|
14797
|
+
return { total, rawNodes, rawEdges };
|
|
14798
|
+
});
|
|
14799
|
+
const elapsed = Date.now() - started;
|
|
14800
|
+
const warnedClasses = /* @__PURE__ */ new Set();
|
|
14801
|
+
const conversationWarnings = { loggedMissingMessageCount: false };
|
|
14802
|
+
const nodes = result.rawNodes.map((n) => pruneNode(n, warnedClasses, conversationWarnings));
|
|
14803
|
+
const edges = result.rawEdges.filter((e) => e && e.id != null).map((e) => pruneEdge(e, warnedClasses));
|
|
14804
|
+
const rendered = nodes.length;
|
|
14805
|
+
const truncated = result.total > rendered;
|
|
14806
|
+
if (result.total < rendered) {
|
|
14807
|
+
console.error(
|
|
14808
|
+
`[graph-page] default-view INVARIANT total<rendered account=${accountId} rendered=${rendered} total=${result.total}`
|
|
14809
|
+
);
|
|
14810
|
+
}
|
|
14811
|
+
console.error(
|
|
14812
|
+
`[graph-page] default-view account=${accountId} rendered=${rendered} total=${result.total} truncated=${truncated} agentActions=${includeAgentActions} trashed=${includeTrashed} ms=${elapsed}`
|
|
14813
|
+
);
|
|
14814
|
+
return c.json({ nodes, edges, total: result.total, truncated });
|
|
14815
|
+
} catch (err) {
|
|
14816
|
+
const elapsed = Date.now() - started;
|
|
14817
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
14818
|
+
console.error(`[graph-page] error stage=fetch-top-level reason="${message}" ms=${elapsed}`);
|
|
14819
|
+
return c.json({ error: `Graph data unavailable: ${message}` }, 503);
|
|
14820
|
+
} finally {
|
|
14821
|
+
try {
|
|
14822
|
+
await session.close();
|
|
14823
|
+
} catch {
|
|
14824
|
+
}
|
|
14825
|
+
}
|
|
14826
|
+
}
|
|
14768
14827
|
var NEIGHBOURHOOD_SEARCH_DEFAULT_LIMIT = 100;
|
|
14769
14828
|
var NEIGHBOURHOOD_SEARCH_MAX_LIMIT = 2e3;
|
|
14770
14829
|
var NEIGHBOURHOOD_LIMIT = 2e3;
|
|
@@ -14969,6 +15028,53 @@ var DEFAULT_FETCH_CYPHER_INCLUDE_TRASHED = `
|
|
|
14969
15028
|
[x IN nodes | {id: elementId(x), labels: labels(x), properties: ${CONVERSATION_PROPS_PROJECTION}}] AS nodes,
|
|
14970
15029
|
[e IN rawEdges WHERE e IS NOT NULL] AS edges
|
|
14971
15030
|
`;
|
|
15031
|
+
var TOP_LEVEL_FETCH_CYPHER = `
|
|
15032
|
+
MATCH (n)
|
|
15033
|
+
WHERE n.accountId = $accountId
|
|
15034
|
+
AND any(lbl IN labels(n) WHERE lbl IN $labels)
|
|
15035
|
+
AND NOT any(lbl IN labels(n) WHERE lbl IN $agentActionLabels)
|
|
15036
|
+
AND NOT n:Trashed
|
|
15037
|
+
AND n.deletedAt IS NULL
|
|
15038
|
+
WITH n LIMIT $topLevelLimit
|
|
15039
|
+
WITH collect(n) AS nodes, collect(elementId(n)) AS nodeIds
|
|
15040
|
+
UNWIND nodes AS n
|
|
15041
|
+
OPTIONAL MATCH (n)-[r]-(m)
|
|
15042
|
+
WHERE elementId(m) IN nodeIds
|
|
15043
|
+
WITH nodes,
|
|
15044
|
+
collect(DISTINCT CASE WHEN r IS NULL THEN null ELSE {
|
|
15045
|
+
id: elementId(r),
|
|
15046
|
+
from: elementId(startNode(r)),
|
|
15047
|
+
to: elementId(endNode(r)),
|
|
15048
|
+
type: type(r),
|
|
15049
|
+
properties: properties(r)
|
|
15050
|
+
} END) AS rawEdges
|
|
15051
|
+
RETURN
|
|
15052
|
+
[x IN nodes | {id: elementId(x), labels: labels(x), properties: ${CONVERSATION_PROPS_PROJECTION}}] AS nodes,
|
|
15053
|
+
[e IN rawEdges WHERE e IS NOT NULL] AS edges
|
|
15054
|
+
`;
|
|
15055
|
+
var TOP_LEVEL_FETCH_CYPHER_INCLUDE_TRASHED = `
|
|
15056
|
+
MATCH (n)
|
|
15057
|
+
WHERE n.accountId = $accountId
|
|
15058
|
+
AND any(lbl IN labels(n) WHERE lbl IN $labels)
|
|
15059
|
+
AND NOT any(lbl IN labels(n) WHERE lbl IN $agentActionLabels)
|
|
15060
|
+
AND n.deletedAt IS NULL
|
|
15061
|
+
WITH n LIMIT $topLevelLimit
|
|
15062
|
+
WITH collect(n) AS nodes, collect(elementId(n)) AS nodeIds
|
|
15063
|
+
UNWIND nodes AS n
|
|
15064
|
+
OPTIONAL MATCH (n)-[r]-(m)
|
|
15065
|
+
WHERE elementId(m) IN nodeIds
|
|
15066
|
+
WITH nodes,
|
|
15067
|
+
collect(DISTINCT CASE WHEN r IS NULL THEN null ELSE {
|
|
15068
|
+
id: elementId(r),
|
|
15069
|
+
from: elementId(startNode(r)),
|
|
15070
|
+
to: elementId(endNode(r)),
|
|
15071
|
+
type: type(r),
|
|
15072
|
+
properties: properties(r)
|
|
15073
|
+
} END) AS rawEdges
|
|
15074
|
+
RETURN
|
|
15075
|
+
[x IN nodes | {id: elementId(x), labels: labels(x), properties: ${CONVERSATION_PROPS_PROJECTION}}] AS nodes,
|
|
15076
|
+
[e IN rawEdges WHERE e IS NOT NULL] AS edges
|
|
15077
|
+
`;
|
|
14972
15078
|
var NEIGHBOURHOOD_CYPHER = `
|
|
14973
15079
|
MATCH (n)
|
|
14974
15080
|
WHERE elementId(n) = $elementId
|