@rubytech/create-sitedesk-code 0.1.516 → 0.1.518
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/__tests__/tier-flag.test.js +10 -6
- package/dist/index.js +1 -1
- package/dist/tier-flag.js +10 -5
- package/package.json +1 -1
- package/payload/platform/lib/entitlement/dist/index.d.ts +24 -0
- package/payload/platform/lib/entitlement/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/entitlement/dist/index.js +40 -2
- package/payload/platform/lib/entitlement/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/index.js +5 -9
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +1 -1
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +205 -2
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +10 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
- package/payload/platform/scripts/generate-entitlement-fixture.mjs +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +16 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js +15 -0
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +12 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.js +10 -2
- package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/server.d.ts.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/server.js +17 -2
- package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
- package/payload/server/public/activity.html +4 -4
- package/payload/server/public/agents.html +3 -3
- package/payload/server/public/assets/{AdminLoginScreens-B5qKb3YK.js → AdminLoginScreens-CDpNkwkf.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-CDpNkwkf.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-CDpNkwkf.js.gz +0 -0
- package/payload/server/public/assets/{AdminShell-BgJEq2zJ.js → AdminShell-TSa8KgID.js} +2 -2
- package/payload/server/public/assets/AdminShell-TSa8KgID.js.br +0 -0
- package/payload/server/public/assets/AdminShell-TSa8KgID.js.gz +0 -0
- package/payload/server/public/assets/{activity-DmnVUDYO.js → activity-BE9gv5xL.js} +1 -1
- package/payload/server/public/assets/activity-BE9gv5xL.js.br +0 -0
- package/payload/server/public/assets/activity-BE9gv5xL.js.gz +0 -0
- package/payload/server/public/assets/{admin-Dpge4OG9.js → admin-Cb0BZriv.js} +1 -1
- package/payload/server/public/assets/admin-Cb0BZriv.js.br +0 -0
- package/payload/server/public/assets/admin-Cb0BZriv.js.gz +0 -0
- package/payload/server/public/assets/{agents-Bmq9X7P3.js → agents-B-x0Ai2v.js} +1 -1
- package/payload/server/public/assets/agents-B-x0Ai2v.js.br +0 -0
- package/payload/server/public/assets/agents-B-x0Ai2v.js.gz +0 -0
- package/payload/server/public/assets/{browser-B1G-W80B.js → browser-ZEQUkPfs.js} +1 -1
- package/payload/server/public/assets/browser-ZEQUkPfs.js.br +0 -0
- package/payload/server/public/assets/browser-ZEQUkPfs.js.gz +0 -0
- package/payload/server/public/assets/{calendar-CHgrOFIN.js → calendar-DsRxrW0G.js} +1 -1
- package/payload/server/public/assets/calendar-DsRxrW0G.js.br +0 -0
- package/payload/server/public/assets/calendar-DsRxrW0G.js.gz +0 -0
- package/payload/server/public/assets/chat-BS9B9lDo.js +1 -0
- package/payload/server/public/assets/chat-BS9B9lDo.js.br +1 -0
- package/payload/server/public/assets/chat-BS9B9lDo.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-DLtGuH6K.js +1 -0
- package/payload/server/public/assets/chevron-right-CY_trg5L.js +1 -0
- package/payload/server/public/assets/chevron-right-CY_trg5L.js.br +0 -0
- package/payload/server/public/assets/clock-oM5driJm.js +1 -0
- package/payload/server/public/assets/clock-oM5driJm.js.br +0 -0
- package/payload/server/public/assets/clock-oM5driJm.js.gz +0 -0
- package/payload/server/public/assets/data-Cio6PO0F.js +1 -0
- package/payload/server/public/assets/data-Cio6PO0F.js.br +2 -0
- package/payload/server/public/assets/data-Cio6PO0F.js.gz +0 -0
- package/payload/server/public/assets/{file-text-BVqqaDun.js → file-text-BTV6EdBv.js} +1 -1
- package/payload/server/public/assets/file-text-BTV6EdBv.js.br +0 -0
- package/payload/server/public/assets/file-text-BTV6EdBv.js.gz +0 -0
- package/payload/server/public/assets/{graph-CEcME0lp.js → graph-hD_gPbbL.js} +1 -1
- package/payload/server/public/assets/graph-hD_gPbbL.js.br +0 -0
- package/payload/server/public/assets/graph-hD_gPbbL.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-Zl32_AOH.js → graph-labels-CY1T19PY.js} +1 -1
- package/payload/server/public/assets/graph-labels-CY1T19PY.js.br +0 -0
- package/payload/server/public/assets/graph-labels-CY1T19PY.js.gz +0 -0
- package/payload/server/public/assets/{maximize-2-rkkMyAhf.js → maximize-2-BFV9VKHO.js} +1 -1
- package/payload/server/public/assets/maximize-2-BFV9VKHO.js.br +0 -0
- package/payload/server/public/assets/maximize-2-BFV9VKHO.js.gz +0 -0
- package/payload/server/public/assets/{operator-DlL023ch.js → operator-Dxze8CwV.js} +1 -1
- package/payload/server/public/assets/operator-Dxze8CwV.js.br +0 -0
- package/payload/server/public/assets/operator-Dxze8CwV.js.gz +0 -0
- package/payload/server/public/assets/{page-k0BhBkA2.js → page-Bi86QF6_.js} +1 -1
- package/payload/server/public/assets/page-Bi86QF6_.js.br +0 -0
- package/payload/server/public/assets/page-Bi86QF6_.js.gz +0 -0
- package/payload/server/public/assets/{page-BAmYYqxp.js → page-BnXly9aN.js} +1 -1
- package/payload/server/public/assets/page-BnXly9aN.js.br +0 -0
- package/payload/server/public/assets/page-BnXly9aN.js.gz +0 -0
- package/payload/server/public/assets/{public-Cqgfmo1D.js → public-D6Tnj5LU.js} +1 -1
- package/payload/server/public/assets/public-D6Tnj5LU.js.br +0 -0
- package/payload/server/public/assets/public-D6Tnj5LU.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-O3RmqoTy.js → rotate-ccw-C-RfQUza.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-C-RfQUza.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-C-RfQUza.js.gz +0 -0
- package/payload/server/public/assets/{routines-DMYObMUy.js → routines-NIMElUzV.js} +1 -1
- package/payload/server/public/assets/routines-NIMElUzV.js.br +0 -0
- package/payload/server/public/assets/routines-NIMElUzV.js.gz +0 -0
- package/payload/server/public/assets/{skills-DON1BKu5.js → skills-N0ZlHosx.js} +1 -1
- package/payload/server/public/assets/skills-N0ZlHosx.js.br +0 -0
- package/payload/server/public/assets/skills-N0ZlHosx.js.gz +0 -0
- package/payload/server/public/assets/{tasks-C2PhUSrf.js → tasks-BsB_0duv.js} +1 -1
- package/payload/server/public/assets/tasks-BsB_0duv.js.br +0 -0
- package/payload/server/public/assets/tasks-BsB_0duv.js.gz +0 -0
- package/payload/server/public/assets/{time-entry-format-4zgmuQI0.js → time-entry-format-jQxlRPoI.js} +1 -1
- package/payload/server/public/assets/time-entry-format-jQxlRPoI.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-jQxlRPoI.js.gz +0 -0
- package/payload/server/public/assets/{triangle-alert-By5D7wuI.js → triangle-alert-wUS4rpzv.js} +1 -1
- package/payload/server/public/assets/triangle-alert-wUS4rpzv.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-wUS4rpzv.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-Dx0vtm9s.js → useCopyFeedback-BRix_wIl.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-BRix_wIl.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-BRix_wIl.js.gz +0 -0
- package/payload/server/public/assets/{useSubAccountSwitcher-CRWoQXuU.js → useSubAccountSwitcher-DWMWxvYo.js} +6 -1
- package/payload/server/public/assets/useSubAccountSwitcher-DWMWxvYo.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-DWMWxvYo.js.gz +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-BgwOCCwj.js → useVoiceRecorder-1TAfCP2k.js} +1 -1
- package/payload/server/public/assets/useVoiceRecorder-1TAfCP2k.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-1TAfCP2k.js.gz +0 -0
- package/payload/server/public/assets/{wrench-CHfMwLza.js → wrench-sDivAjhf.js} +1 -1
- package/payload/server/public/assets/wrench-sDivAjhf.js.br +0 -0
- package/payload/server/public/assets/wrench-sDivAjhf.js.gz +0 -0
- package/payload/server/public/browser.html +3 -3
- package/payload/server/public/calendar.html +6 -6
- package/payload/server/public/chat.html +12 -12
- package/payload/server/public/data.html +10 -10
- package/payload/server/public/graph.html +8 -8
- package/payload/server/public/index.html +13 -13
- package/payload/server/public/operator.html +13 -13
- package/payload/server/public/public.html +12 -12
- package/payload/server/public/routines.html +5 -5
- package/payload/server/public/skills.html +4 -4
- package/payload/server/public/tasks.html +5 -5
- package/payload/server/server.js +36 -9
- package/payload/platform/plugins/email/Archive.zip +0 -0
- package/payload/server/public/assets/AdminLoginScreens-B5qKb3YK.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-B5qKb3YK.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-BgJEq2zJ.js.br +0 -0
- package/payload/server/public/assets/AdminShell-BgJEq2zJ.js.gz +0 -0
- package/payload/server/public/assets/activity-DmnVUDYO.js.br +0 -0
- package/payload/server/public/assets/activity-DmnVUDYO.js.gz +0 -0
- package/payload/server/public/assets/admin-Dpge4OG9.js.br +0 -0
- package/payload/server/public/assets/admin-Dpge4OG9.js.gz +0 -0
- package/payload/server/public/assets/agents-Bmq9X7P3.js.br +0 -0
- package/payload/server/public/assets/agents-Bmq9X7P3.js.gz +0 -0
- package/payload/server/public/assets/browser-B1G-W80B.js.br +0 -0
- package/payload/server/public/assets/browser-B1G-W80B.js.gz +0 -0
- package/payload/server/public/assets/calendar-CHgrOFIN.js.br +0 -0
- package/payload/server/public/assets/calendar-CHgrOFIN.js.gz +0 -0
- package/payload/server/public/assets/chat-CIwmmtwP.js +0 -1
- package/payload/server/public/assets/chat-CIwmmtwP.js.br +0 -0
- package/payload/server/public/assets/chat-CIwmmtwP.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-EQjfaQ-n.js +0 -1
- package/payload/server/public/assets/chevron-left-EQjfaQ-n.js.br +0 -0
- package/payload/server/public/assets/chevron-right-Ct8jZUGP.js +0 -1
- package/payload/server/public/assets/chevron-right-Ct8jZUGP.js.br +0 -0
- package/payload/server/public/assets/clock-Cxz5ybck.js +0 -1
- package/payload/server/public/assets/clock-Cxz5ybck.js.br +0 -0
- package/payload/server/public/assets/clock-Cxz5ybck.js.gz +0 -0
- package/payload/server/public/assets/data-BQVXKVsJ.js +0 -1
- package/payload/server/public/assets/data-BQVXKVsJ.js.br +0 -1
- package/payload/server/public/assets/data-BQVXKVsJ.js.gz +0 -0
- package/payload/server/public/assets/file-text-BVqqaDun.js.br +0 -0
- package/payload/server/public/assets/file-text-BVqqaDun.js.gz +0 -0
- package/payload/server/public/assets/graph-CEcME0lp.js.br +0 -0
- package/payload/server/public/assets/graph-CEcME0lp.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-Zl32_AOH.js.br +0 -0
- package/payload/server/public/assets/graph-labels-Zl32_AOH.js.gz +0 -0
- package/payload/server/public/assets/maximize-2-rkkMyAhf.js.br +0 -0
- package/payload/server/public/assets/maximize-2-rkkMyAhf.js.gz +0 -0
- package/payload/server/public/assets/operator-DlL023ch.js.br +0 -0
- package/payload/server/public/assets/operator-DlL023ch.js.gz +0 -0
- package/payload/server/public/assets/page-BAmYYqxp.js.br +0 -0
- package/payload/server/public/assets/page-BAmYYqxp.js.gz +0 -0
- package/payload/server/public/assets/page-k0BhBkA2.js.br +0 -0
- package/payload/server/public/assets/page-k0BhBkA2.js.gz +0 -0
- package/payload/server/public/assets/public-Cqgfmo1D.js.br +0 -0
- package/payload/server/public/assets/public-Cqgfmo1D.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-O3RmqoTy.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-O3RmqoTy.js.gz +0 -0
- package/payload/server/public/assets/routines-DMYObMUy.js.br +0 -0
- package/payload/server/public/assets/routines-DMYObMUy.js.gz +0 -0
- package/payload/server/public/assets/skills-DON1BKu5.js.br +0 -0
- package/payload/server/public/assets/skills-DON1BKu5.js.gz +0 -0
- package/payload/server/public/assets/tasks-C2PhUSrf.js.br +0 -0
- package/payload/server/public/assets/tasks-C2PhUSrf.js.gz +0 -0
- package/payload/server/public/assets/time-entry-format-4zgmuQI0.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-4zgmuQI0.js.gz +0 -0
- package/payload/server/public/assets/triangle-alert-By5D7wuI.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-By5D7wuI.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-Dx0vtm9s.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-Dx0vtm9s.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CRWoQXuU.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CRWoQXuU.js.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BgwOCCwj.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BgwOCCwj.js.gz +0 -0
- package/payload/server/public/assets/wrench-CHfMwLza.js.br +0 -0
- package/payload/server/public/assets/wrench-CHfMwLza.js.gz +0 -0
package/payload/server/public/assets/{useVoiceRecorder-BgwOCCwj.js → useVoiceRecorder-1TAfCP2k.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-render-C257cidb.js","assets/preload-helper-BQrMkyGX.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./chunk-CltuBf4Z.js";import{B as t,K as n,P as r,g as i,k as a,r as o}from"./useSubAccountSwitcher-CRWoQXuU.js";import{n as s,t as c}from"./maximize-2-rkkMyAhf.js";import{n as l,t as u}from"./time-entry-format-4zgmuQI0.js";import{t as d}from"./preload-helper-BQrMkyGX.js";var f=`image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.text,text/rtf,application/rtf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.ms-powerpoint,application/vnd.oasis.opendocument.presentation,audio/ogg,audio/opus,audio/mp4,audio/x-m4a,audio/mpeg,audio/webm,audio/wav,video/mp4,.docx,.odt,.rtf,.xlsx,.xls,.ods,.pptx,.ppt,.odp,.opus,.ogg,.m4a,.mp4,.mp3,.wav,.webm`,p=new Set(f.split(`,`).filter(e=>!e.startsWith(`.`))),m=50*1024*1024;function h(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var g=r(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),_=r(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),v=r(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),y=r(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),b=r(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),x=r(`reply`,[[`path`,{d:`M20 18v-2a4 4 0 0 0-4-4H4`,key:`5vmcpk`}],[`path`,{d:`m9 17-5-5 5-5`,key:`nvlc11`}]]),S=e(n(),1),C=t();function w({children:e,tail:t=null,repinSignals:n}){let r=(0,S.useRef)(null),i=(0,S.useRef)(null),a=(0,S.useRef)(!0),[o,s]=(0,S.useState)(!0),c=(0,S.useRef)(0),l=(0,S.useRef)(0),u=()=>{let e=r.current;if(!e)return;let t=e.clientHeight,n=e.scrollHeight,i=t!==c.current||n!==l.current;if(c.current=t,l.current=n,i){a.current&&(e.scrollTop=e.scrollHeight);return}let o=n-e.scrollTop-t<=32;a.current=o,s(e=>e===o?e:o)},d=()=>{let e=r.current;e&&(e.scrollTop=e.scrollHeight,l.current=e.scrollHeight,c.current=e.clientHeight,a.current=!0,s(!0))},f=t!=null;return(0,S.useLayoutEffect)(()=>{let e=r.current;e&&a.current&&(e.scrollTop=e.scrollHeight),e&&(l.current=e.scrollHeight,c.current=e.clientHeight)},[...n,f]),(0,S.useLayoutEffect)(()=>{if(typeof ResizeObserver>`u`)return;let e=new ResizeObserver(()=>u());return r.current&&e.observe(r.current),i.current&&e.observe(i.current),()=>e.disconnect()},[]),(0,C.jsxs)(`div`,{className:`wa-reader`,children:[(0,C.jsx)(`div`,{className:`wa-reader-thread`,ref:r,onScroll:u,children:(0,C.jsxs)(`div`,{className:`wa-thread-scroll`,ref:i,children:[e,t]})}),!o&&(0,C.jsx)(`button`,{type:`button`,className:`wa-jump`,onClick:d,"aria-label":`Jump to latest message`,title:`Jump to latest message`,children:`↓`})]})}var T={auth_expired:`Your session has expired. Please sign in again.`,claude_down:`Claude is currently experiencing an outage. Please try again in a few minutes.`,claude_overloaded:`Claude is overloaded right now. Please try again shortly.`,model_unavailable:`The selected model is currently unavailable. Switch to a different model from the model picker to continue.`,agent_error:`Something went wrong. Please try again.`},E={auth_expired:`I'm not available right now. Please try again later.`,claude_down:`I'm not available right now. Please try again later.`,claude_overloaded:`I'm not available right now. Please try again shortly.`,model_unavailable:`I'm not available right now. Please try again later.`,agent_error:`I'm not available right now. Please try again later.`};function D(e,t=`admin`){return t===`public`?E[e]:T[e]}function O(e){return e===`whatsapp`?` · via WhatsApp`:e===`webchat`?` · via web`:``}var k=56,A=5;function j(e,t){let n=Math.max(1,Math.floor(e.length/t)),r=[],i=0;for(let a=0;a<t;a++){let t=a*n,o=0,s=0;for(let r=t;r<t+n&&r<e.length;r++)o+=e[r]*e[r],s++;let c=s>0?Math.sqrt(o/s):0;r.push(c),c>i&&(i=c)}return i>0?r.map(e=>e/i):r}function M({src:e,filename:t,onDecodeFail:n,onMediaError:r}){let i=(0,S.useRef)(null),a=(0,S.useRef)(null),o=(0,S.useRef)(!1),[s,c]=(0,S.useState)([]),[d,f]=(0,S.useState)(void 0),[p,m]=(0,S.useState)(!1),[h,g]=(0,S.useState)(0),[_,v]=(0,S.useState)(0);(0,S.useEffect)(()=>{let t=!1,r=null,i=window.AudioContext??window.webkitAudioContext,a=()=>{t||o.current||(o.current=!0,n())};if(!i){a();return}let s=new i;return(async()=>{try{let n=await fetch(e);if(!n.ok)throw Error(`audio fetch ${n.status}`);let i=await n.blob();if(t)return;r=URL.createObjectURL(i),f(r);let a=await s.decodeAudioData(await i.arrayBuffer());if(t)return;c(j(a.getChannelData(0),k)),Number.isFinite(a.duration)&&a.duration>0&&v(a.duration)}catch{a()}finally{try{s.close()}catch{}}})(),()=>{t=!0,r&&URL.revokeObjectURL(r)}},[e]);let y=()=>{let e=i.current;e&&(p?e.pause():Promise.resolve(e.play()).catch(()=>{}))},x=e=>{let t=i.current;if(!t||!(_>0))return;let n=Math.min(_,Math.max(0,e));t.currentTime=n,g(n)},w=e=>{let t=a.current;if(!t||!(_>0))return;let n=t.getBoundingClientRect();x(Math.min(1,Math.max(0,(e-n.left)/n.width))*_)},T=e=>{w(e.clientX);let t=e=>w(e.clientX),n=()=>{window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n)};window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)},E=e=>{if(!(_>0))return;let t=i.current?.currentTime??0;switch(e.key){case`ArrowRight`:case`ArrowUp`:x(t+A),e.preventDefault();break;case`ArrowLeft`:case`ArrowDown`:x(t-A),e.preventDefault();break;case`Home`:x(0),e.preventDefault();break;case`End`:x(_),e.preventDefault();break;default:break}},D=_>0?Math.min(1,h/_):0,O=Math.round(D*k),M=u(h>0?h:_);return(0,C.jsxs)(`div`,{className:`voice-note`,children:[(0,C.jsx)(`button`,{type:`button`,className:`voice-note-play`,"aria-label":`${p?`Pause`:`Play`} ${t}`,onClick:y,children:p?(0,C.jsx)(b,{size:16,"aria-hidden":!0}):(0,C.jsx)(l,{size:16,"aria-hidden":!0})}),(0,C.jsx)(`div`,{ref:a,className:`voice-note-bars`,role:`slider`,tabIndex:0,"aria-label":`Seek ${t}`,"aria-valuemin":0,"aria-valuemax":Math.round(_),"aria-valuenow":Math.round(h),onMouseDown:T,onKeyDown:E,children:(s.length?s:Array.from({length:k},()=>0)).map((e,t)=>(0,C.jsx)(`span`,{className:`voice-note-bar${t<O?` is-played`:``}`,style:{height:`${Math.max(10,Math.round(e*100))}%`}},t))}),(0,C.jsx)(`span`,{className:`voice-note-time`,children:M}),(0,C.jsx)(`audio`,{ref:i,className:`voice-note-audio`,preload:`metadata`,src:d,"aria-label":t,onPlay:()=>m(!0),onPause:()=>m(!1),onEnded:()=>m(!1),onError:()=>r?.(),onLoadedMetadata:e=>{let t=e.currentTarget.duration;Number.isFinite(t)&&t>0&&v(t)},onTimeUpdate:e=>g(e.currentTarget.currentTime)})]})}var N=/\.(png|jpe?g|gif|webp|svg|bmp)$/i,P=/\.pdf$/i;function ee(e,t){return(t?t.startsWith(`image/`):N.test(e))?`image`:t&&t.startsWith(`audio/`)?`audio`:(t?t===`application/pdf`:P.test(e))?`pdf`:`file`}function F(e,t,n,r){let i=encodeURIComponent(e.path),a=encodeURIComponent(n),o=r?`&disposition=${r}`:``;return e.root===`scratchpad`?`/api/admin/files/download?path=${i}&root=scratchpad&sessionId=${encodeURIComponent(t)}&session_key=${a}${o}`:`/api/admin/files/download?path=${i}&root=data&session_key=${a}${o}`}function I(e,t,n,r){return t===`public`?`/api/public-reader/attachment/${e}?sessionId=${encodeURIComponent(n)}`:`/api/admin/attachment/${e}?session_key=${encodeURIComponent(r)}`}function te(e,t,n){return`/api/admin/session-upload?session_key=${encodeURIComponent(n)}&session_id=${encodeURIComponent(e)}&file=${encodeURIComponent(t)}`}function L(e){if(e<1024)return`${e} B`;let t=e/1024;if(t<1024)return`${t<10?t.toFixed(1):Math.round(t)} KB`;let n=t/1024;return`${n<10?n.toFixed(1):Math.round(n)} MB`}function R({href:e,filename:t,label:n}){return(0,C.jsxs)(`a`,{className:`chat-attachment-chip`,href:e,download:t,children:[(0,C.jsx)(y,{size:14,"aria-hidden":!0}),n]})}function z({href:e,filename:t,className:n,size:r=14,onClick:i}){return(0,C.jsx)(`a`,{className:n,href:e,download:t,"aria-label":`Download ${t}`,onClick:i,children:(0,C.jsx)(a,{size:r,"aria-hidden":!0})})}function ne({src:e,filename:t,sizeBytes:n,expandable:r,onFail:i}){let[a,o]=(0,S.useState)(!1),[s,c]=(0,S.useState)(!1),l=n==null?t:`${t} · ${L(n)}`;return s?(0,C.jsx)(R,{href:e,filename:t,label:l}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`span`,{className:`chat-attachment-image-wrap`,children:[(0,C.jsx)(`img`,{className:`chat-attachment-image`,src:e,alt:t,onClick:r?()=>o(!0):void 0,onError:()=>{c(!0),i?.(`fetch`)}}),(0,C.jsx)(z,{href:e,filename:t,className:`chat-attachment-download`})]}),r&&a&&(0,C.jsx)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:()=>o(!1),children:(0,C.jsx)(`img`,{className:`chat-attachment-overlay-image`,src:e,alt:t})})]})}var re=280,ie=360,ae=16;function B({src:e,filename:t,sizeBytes:n,onFail:r}){let[i,a]=(0,S.useState)(!1),[o,s]=(0,S.useState)(!1),l=(0,S.useRef)(null),u=n==null?t:`${t} · ${L(n)}`;return(0,S.useEffect)(()=>{let t=!1,n=null;return(async()=>{try{let{loadPdf:r,renderPageToFit:i}=await d(async()=>{let{loadPdf:e,renderPageToFit:t}=await import(`./pdf-render-C257cidb.js`);return{loadPdf:e,renderPageToFit:t}},__vite__mapDeps([0,1])),a=await r(e);n=a;let o=l.current;if(t||!o)return;await i(a,1,o,re,ie)}catch{t||(s(!0),r?.(`render`))}})(),()=>{t=!0;try{n?.destroy()}catch{}}},[e]),o?(0,C.jsx)(R,{href:e,filename:t,label:u}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`chat-attachment-pdf`,children:[(0,C.jsx)(`canvas`,{ref:l,className:`chat-attachment-pdf-canvas`,"aria-label":t}),(0,C.jsx)(z,{href:e,filename:t,className:`chat-attachment-download`}),(0,C.jsx)(`button`,{type:`button`,className:`chat-attachment-pdf-expand`,"aria-label":`Expand ${t}`,onClick:()=>a(!0),children:(0,C.jsx)(c,{size:14,"aria-hidden":!0})})]}),i&&(0,C.jsx)(oe,{src:e,filename:t,label:u,onClose:()=>a(!1),onFail:r})]})}function oe({src:e,filename:t,label:n,onClose:r,onFail:a}){let o=(0,S.useRef)(null),s=(0,S.useRef)(null),[c,l]=(0,S.useState)(null),[u,f]=(0,S.useState)(!1);return(0,S.useEffect)(()=>{let t=!1;return(async()=>{try{let{loadPdf:n}=await d(async()=>{let{loadPdf:e}=await import(`./pdf-render-C257cidb.js`);return{loadPdf:e}},__vite__mapDeps([0,1])),r=await n(e);if(t){try{r.destroy()}catch{}return}s.current=r,l(r.numPages)}catch{t||(f(!0),a?.(`render`))}})(),()=>{t=!0;try{s.current?.destroy()}catch{}}},[e]),(0,S.useEffect)(()=>{if(c==null)return;let e=o.current,t=s.current;if(!e||!t)return;let n=!1;return(async()=>{try{let{renderPageToWidth:r}=await d(async()=>{let{renderPageToWidth:e}=await import(`./pdf-render-C257cidb.js`);return{renderPageToWidth:e}},__vite__mapDeps([0,1])),i=Array.from(e.querySelectorAll(`canvas.chat-attachment-overlay-page`)),a=Math.max(e.clientWidth-ae*2,1);for(let e=0;e<i.length;e++){if(n)return;await r(t,e+1,i[e],a)}}catch{n||(f(!0),a?.(`render`))}})(),()=>{n=!0}},[c]),(0,C.jsxs)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:r,children:[(0,C.jsx)(`div`,{ref:o,className:`chat-attachment-overlay-pdf`,onClick:e=>e.stopPropagation(),children:u?(0,C.jsx)(R,{href:e,filename:t,label:n}):Array.from({length:c??0},(e,n)=>(0,C.jsx)(`canvas`,{className:`chat-attachment-overlay-page`,"aria-label":`${t} page ${n+1}`},n))}),(0,C.jsx)(z,{href:e,filename:t,className:`chat-attachment-overlay-download`,size:20,onClick:e=>e.stopPropagation()}),(0,C.jsx)(`button`,{type:`button`,className:`chat-attachment-overlay-close`,"aria-label":`Close`,onClick:r,children:(0,C.jsx)(i,{size:20,"aria-hidden":!0})})]})}function se({src:e,filename:t,onFail:n}){let[r,i]=(0,S.useState)(!1);return r?(0,C.jsx)(`audio`,{className:`chat-attachment-audio`,controls:!0,preload:`metadata`,src:e,"aria-label":t,onError:()=>n?.(`fetch`)}):(0,C.jsx)(M,{src:e,filename:t,onDecodeFail:()=>{i(!0),n?.(`render`)},onMediaError:()=>{i(!0),n?.(`fetch`)}})}function V({filename:e,href:t,mimeType:n,sizeBytes:r,expandable:i,telemetry:a}){let o=ee(e,n);(0,S.useEffect)(()=>{a?.onRender?.({kind:o,mime:n,served:!!t})},[]);let s=a?.onFail?e=>a.onFail({kind:o===`pdf`?`pdf`:o===`audio`?`audio`:`image`,mime:n,reason:e}):void 0;if(o===`image`&&t)return(0,C.jsx)(ne,{src:t,filename:e,sizeBytes:r,expandable:i,onFail:s});if(o===`audio`&&t)return(0,C.jsx)(se,{src:t,filename:e,onFail:s});if(o===`pdf`&&t)return(0,C.jsx)(B,{src:t,filename:e,sizeBytes:r,onFail:s});let c=r==null?e:`${e} · ${L(r)}`;return t?(0,C.jsx)(R,{href:t,filename:e,label:c}):(0,C.jsxs)(`p`,{className:`chat-doc`,children:[(0,C.jsx)(y,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,c]})}function ce(e,t,n,r=`/api/whatsapp-reader/stream`,i=e,a=!0){let[o,s]=(0,S.useState)([]),[c,l]=(0,S.useState)(`open`),[u,d]=(0,S.useState)(null),f=(0,S.useRef)([]);return(0,S.useEffect)(()=>{f.current=o},[o]),(0,S.useEffect)(()=>{s([]),f.current=[],d(null)},[i,t,n,r]),(0,S.useEffect)(()=>{if(l(`open`),!a)return;let i=f.current.slice(),o=i.map(H),c=0,u=i.length>0,p=`${r}?sessionId=${encodeURIComponent(e)}&projectDir=${encodeURIComponent(t)}&session_key=${encodeURIComponent(n)}`,m=new EventSource(p);return m.onopen=()=>{console.info(`[admin-ui] wa-stream onopen sessionId=${e}`),l(`open`)},m.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(u){if(c<o.length&&H(t)===o[c]){c+=1;return}u=!1}s(e=>[...e,t])},m.addEventListener(`activity`,e=>{try{d(JSON.parse(e.data))}catch{}}),m.addEventListener(`activity-clear`,()=>d(null)),m.onerror=()=>{m.readyState===2&&(console.error(`[admin-ui] wa-stream onerror readyState=${m.readyState}`),l(`error`))},()=>m.close()},[e,t,n,r,i,a]),{turns:o,status:c,subagentActivity:u}}function H(e){return JSON.stringify(e)}function le(e,t,n,r=!0){let[i,a]=(0,S.useState)([]),[o,s]=(0,S.useState)(`open`);return(0,S.useEffect)(()=>{if(a([]),s(`open`),!r||!e||!t)return;let i=`/api/whatsapp-reader/store-stream?accountId=${encodeURIComponent(e)}&remoteJid=${encodeURIComponent(t)}&session_key=${encodeURIComponent(n)}`,o=new EventSource(i);return o.onopen=()=>s(`open`),o.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}a(e=>[...e,t])},o.addEventListener(`reaction`,e=>{let t;try{t=JSON.parse(e.data)}catch{return}a(e=>e.map(e=>e.kind===`whatsapp-persisted`&&e.msgKeyId===t.targetMsgKeyId?{...e,reactions:t.reactions}:e))}),o.onerror=()=>{o.readyState===2&&s(`error`)},()=>o.close()},[e,t,n,r]),{turns:i,status:o}}var U=e=>{if(!e)return 1/0;let t=new Date(e).getTime();return Number.isNaN(t)?1/0:t};function ue(e,t){let n=[],r=0;return e.forEach((e,t)=>n.push({sort:U(e.ts),sub:1,ins:r++,item:{kind:`turn`,turn:e,idx:t}})),t.forEach(e=>n.push({sort:U(e.ts),sub:0,ins:r++,item:{kind:`directive`,entry:e}})),n.sort((e,t)=>e.sort===t.sort?e.sort===1/0?e.ins-t.ins:e.sub-t.sub||e.ins-t.ins:e.sort<t.sort?-1:1).map(e=>e.item)}function de(e,t,n=!0){let[r,i]=(0,S.useState)([]);return(0,S.useEffect)(()=>{if(!n||typeof fetch!=`function`)return;let r=!0,a=`/api/whatsapp-reader/directives?sessionId=${encodeURIComponent(e)}&session_key=${encodeURIComponent(t)}`;return fetch(a).then(e=>e.ok?e.json():{entries:[]}).then(e=>{r&&i(Array.isArray(e.entries)?e.entries:[])}).catch(()=>{r&&i([])}),()=>{r=!1}},[e,t,n]),r}var fe=new Set([`operator-inbound`,`operator-typed`,`agent-reply`,`agent-reply-document`,`agent-file`,`agent-error`,`agent-webchat-final`,`whatsapp-persisted`]);function W(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function G(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}var pe=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],me=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function K(e){let t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`);return`${e.getFullYear()}-${t}-${n}`}function q(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:K(t)}function he(e,t=new Date){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=K(n);if(r===K(t))return`Today`;let i=new Date(t);return i.setDate(i.getDate()-1),r===K(i)?`Yesterday`:`${pe[n.getDay()]} ${n.getDate()} ${me[n.getMonth()]} ${n.getFullYear()}`}function J(e){return e.kind===`turn`?e.turn.ts:e.entry.ts}function Y({ts:e}){return(0,C.jsx)(`div`,{className:`day-divider`,role:`separator`,children:(0,C.jsx)(`span`,{className:`day-divider-label`,children:he(e)})})}function X(){return(0,C.jsx)(`div`,{className:`session-divider`,role:`separator`,children:(0,C.jsx)(`span`,{className:`session-divider-label`,children:`Conversation continued`})})}function Z({label:e,ts:t}){return(0,C.jsxs)(`div`,{className:`wa-turn-head`,children:[(0,C.jsx)(`span`,{className:`wa-who`,children:e}),(0,C.jsx)(`time`,{className:`wa-time`,children:W(t)})]})}function ge({turn:e}){let[t,n]=(0,S.useState)(!1),r=e.kind===`tool-result`,i=r?`wa-turn wa-turn-result${e.isError?` is-error`:``}`:`wa-turn wa-turn-tool`,a=r?e.isError?`result (error)`:`result`:`↳ ${e.name}`,o=r?e.text:JSON.stringify(e.input,null,2);return(0,C.jsxs)(`div`,{className:i,children:[(0,C.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":t,onClick:()=>n(e=>!e),children:[(0,C.jsx)(`span`,{className:`wa-chevron`,children:t?`▾`:`▸`}),(0,C.jsx)(`span`,{className:`wa-who`,children:a}),(0,C.jsx)(`time`,{className:`wa-time`,children:W(e.ts)})]}),t&&(0,C.jsx)(`pre`,{className:`wa-code`,children:o})]})}function Q({entry:e,sessionId:t,sessionKey:n}){let[r,i]=(0,S.useState)(!1),[a,o]=(0,S.useState)(null),s=()=>{let s=!r;if(i(s),s&&a===null&&typeof fetch==`function`){let r=`/api/whatsapp-reader/directive?sessionId=${encodeURIComponent(t)}&name=${encodeURIComponent(e.name)}&session_key=${encodeURIComponent(n)}`;fetch(r).then(e=>e.ok?e.text():`(directive unavailable)`).then(o).catch(()=>o(`(directive unavailable)`))}};return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-directive`,children:[(0,C.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":r,onClick:s,children:[(0,C.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,C.jsxs)(`span`,{className:`wa-who`,children:[`⚙ directive injected (`,e.len,` B)`]}),(0,C.jsx)(`time`,{className:`wa-time`,children:W(e.ts)})]}),r&&(0,C.jsx)(`pre`,{className:`wa-code`,children:a??`Loading…`})]})}function _e(e){return`text`in e&&typeof e.text==`string`?e.text:``}function ve(e,t){let n=(t??``).trim();if(!n)return e;let r=e.toLowerCase(),i=n.toLowerCase(),a=[],o=0,s=0;for(;;){let t=r.indexOf(i,o);if(t===-1){a.push(e.slice(o));break}t>o&&a.push(e.slice(o,t)),a.push((0,C.jsx)(`mark`,{className:`wa-search-hit`,children:e.slice(t,t+i.length)},s++)),o=t+i.length}return a.length===1?a[0]:(0,C.jsx)(C.Fragment,{children:a})}var $={onRender:({kind:e,mime:t,served:n})=>console.info(`[operator-ui] op=reader-attachment kind=${e} mime=${t??``} served=${n}`),onFail:({kind:e,mime:t,reason:n})=>console.info(`[operator-ui] op=reader-attachment-fail kind=${e} mime=${t??``} reason=${n}`)};function ye(e,t,n){switch(e.kind){case`operator-inbound`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-in`,children:[(0,C.jsx)(Z,{label:`Operator${O(e.source)}`,ts:e.ts}),e.text&&(0,C.jsx)(`p`,{className:`wa-body`,children:e.text}),e.attachments&&e.attachments.length>0&&(0,C.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,C.jsx)(V,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:I(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))})]},t);case`operator-typed`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-in wa-turn-typed`,children:[(0,C.jsx)(Z,{label:`Operator (web)`,ts:e.ts}),(0,C.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-text`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-think`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,C.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,C.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply-document`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,C.jsxs)(`p`,{className:`wa-doc`,children:[(0,C.jsx)(y,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,`sent document(s): `,e.files.map(G).join(`, `)]}),e.caption&&(0,C.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`agent-file`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),e.files.map((t,r)=>{let i=G(t),a=e.downloads?.[r];return(0,C.jsx)(V,{expandable:!0,filename:i,href:a?F(a,n.sessionId,n.sessionKey,P.test(i)?`inline`:void 0):void 0,telemetry:$},r)}),e.caption&&(0,C.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`whatsapp-persisted`:{let r=e.origin===`operator-manual`,i=e.fromMe?r?`You`:`Sent`:e.senderName??`Contact`;return(0,C.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${r?` wa-op-manual`:``}`,children:[n.onReplyTo&&e.msgKeyId&&(0,C.jsx)(`button`,{type:`button`,className:`wa-bubble-reply`,"aria-label":`Reply to this message`,onClick:()=>n.onReplyTo({msgKeyId:e.msgKeyId,body:e.text,senderName:e.senderName,fromMe:e.fromMe}),children:(0,C.jsx)(x,{size:14})}),n.showCopy&&e.text&&(0,C.jsx)(`button`,{type:`button`,className:`wa-bubble-copy`,"aria-label":`Copy this message`,onClick:()=>{let t=e.text;o(t).then(e=>e?console.info(`[operator-ui] op=wa-copy len=${t.length} ok=true`):console.warn(`[operator-ui] op=wa-copy-fail reason=clipboard-unavailable`))},children:(0,C.jsx)(s,{size:14})}),e.quoted&&(0,C.jsxs)(`div`,{className:`wa-quoted`,children:[(0,C.jsx)(`span`,{className:`wa-quoted-who`,children:e.quoted.fromMe?`You`:e.quoted.sender??`Contact`}),(0,C.jsx)(`span`,{className:`wa-quoted-body`,children:e.quoted.body||`Message`})]}),(0,C.jsx)(Z,{label:i,ts:e.ts}),e.text&&(0,C.jsx)(`p`,{className:`wa-body`,children:ve(e.text,n.highlight)}),e.attachments&&e.attachments.length>0&&(0,C.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,C.jsx)(V,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:I(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))}),e.reactions&&e.reactions.length>0&&(0,C.jsx)(`div`,{className:`wa-reactions`,children:e.reactions.map((e,t)=>(0,C.jsx)(`span`,{className:`wa-reaction`,title:e.reactorName??void 0,children:e.emoji},t))}),(0,C.jsxs)(`span`,{className:`wa-bubble-meta`,children:[r&&(0,C.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,C.jsx)(`time`,{className:`wa-bubble-time`,children:W(e.ts)}),e.fromMe&&(0,C.jsx)(g,{size:14,className:`wa-bubble-tick`,"aria-hidden":!0})]})]},t)}case`session-continued`:return(0,C.jsx)(X,{},t);case`harness-internal`:return null;case`tool-call`:case`tool-result`:return(0,C.jsx)(ge,{turn:e},t);case`agent-error`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-error`,role:`alert`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,C.jsx)(`p`,{className:`wa-body wa-error-body`,children:D(e.code,`admin`)}),e.code===`agent_error`&&e.raw&&(0,C.jsx)(`pre`,{className:`wa-code`,children:e.raw})]},t)}}function be(e,t,n,r=`admin`,i,a,o){let s={sessionId:t,sessionKey:n,audience:r,highlight:i,onReplyTo:a,showCopy:o},c=[],l=null;return e.forEach((e,r)=>{let i=J(e),a=q(i);a!==null&&a!==l&&(c.push((0,C.jsx)(Y,{ts:i},`day-${r}`)),l=a),c.push(e.kind===`turn`?ye(e.turn,r,s):(0,C.jsx)(Q,{entry:e.entry,sessionId:t,sessionKey:n},r))}),c}function xe(e){return e.filter(e=>e.kind===`turn`&&fe.has(e.turn.kind)&&!(e.turn.kind===`operator-inbound`&&e.turn.scheduled))}var Se=(0,S.memo)(function({sessionId:e,projectDir:t,sessionKey:n,renderItems:r=be,clean:i,onToggleClean:a,forceDeliveredOnly:o=!1,streamEndpoint:s=`/api/whatsapp-reader/stream`,suppressDirectives:c=!1,tail:l=null,resetKey:u,onTurnsChange:d,onActivityChange:f,store:p,search:m,onReplyTo:h}){let g=!!p,_=ce(e,t,n,s,u,!g),v=le(p?.accountId??``,p?.remoteJid??``,n,g),{turns:y,status:b}=g?{turns:v.turns,status:v.status}:{turns:_.turns,status:_.status},x=g?null:_.subagentActivity;(0,S.useEffect)(()=>{f?.(x)},[x,f]),(0,S.useEffect)(()=>{d?.(y.length)},[y.length,d]);let T=ue(y,de(e,n,!c)),E=a==null?!1:!!i,D=o||E?xe(T):T,O=(m??``).trim().toLowerCase(),k=O.length>0,A=k?D.filter(e=>e.kind===`turn`&&_e(e.turn).toLowerCase().includes(O)):D,j=k?D.filter(e=>e.kind===`turn`).length:0;return(0,S.useEffect)(()=>{k&&console.info(`[operator-ui] op=wa-search q=${O} matches=${A.length} ofTurns=${j}`)},[O,k,A.length,j]),(0,C.jsxs)(w,{repinSignals:[y,E,k],tail:l,children:[b===`error`&&(0,C.jsx)(`div`,{className:`wa-reader-error`,children:`Stream disconnected.`}),!k&&y.length===0&&b===`open`&&(0,C.jsx)(`div`,{className:`wa-reader-placeholder`,children:`No messages in this conversation yet.`}),k&&A.length===0&&(0,C.jsxs)(`div`,{className:`wa-reader-placeholder`,children:[`No matches for "`,m,`".`]}),g?be(A,e,n,`admin`,m,h,!0):r(D,e,n)]})});function Ce(e,t){let n=e.split(`;`)[0].trim().toLowerCase();return t.has(n)}var we=[`audio/ogg;codecs=opus`,`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`];function Te(){for(let e of we)if(MediaRecorder.isTypeSupported(e))return e;return``}function Ee(e){return e.split(`;`)[0]}async function De(){return typeof navigator>`u`||!navigator.mediaDevices?.enumerateDevices?[]:(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)}function Oe(e){let[t,n]=(0,S.useState)(`idle`),[r,i]=(0,S.useState)(0),[a,o]=(0,S.useState)(null),[s,c]=(0,S.useState)(null),l=(0,S.useRef)(null),u=(0,S.useRef)(null),d=(0,S.useRef)([]),f=(0,S.useRef)(``),p=(0,S.useRef)(null),m=(0,S.useRef)(0),h=(0,S.useRef)(0),g=(0,S.useRef)(null),_=(0,S.useRef)(null),v=(0,S.useRef)(0),y=(0,S.useCallback)(()=>{if(p.current&&=(clearInterval(p.current),null),v.current&&=(cancelAnimationFrame(v.current),0),l.current&&l.current.state!==`inactive`)try{l.current.stop()}catch{}l.current=null,d.current=[],u.current&&=(u.current.getTracks().forEach(e=>e.stop()),null),g.current&&(g.current.close().catch(()=>{}),g.current=null,_.current=null),h.current=0,m.current=0},[]);(0,S.useEffect)(()=>y,[y]);let b=(0,S.useCallback)(()=>{m.current=Date.now(),p.current=setInterval(()=>{let e=Date.now()-m.current,t=h.current+e;i(Math.floor(t/1e3))},200)},[]),x=(0,S.useCallback)(()=>{p.current&&=(clearInterval(p.current),null);let e=Date.now()-m.current;h.current+=e},[]),C=(0,S.useCallback)(()=>{let e=_.current;if(!e)return;let t=new Uint8Array(e.frequencyBinCount),n=()=>{e.getByteTimeDomainData(t),o(new Uint8Array(t)),v.current=requestAnimationFrame(n)};n()},[]),w=(0,S.useCallback)(()=>{v.current&&=(cancelAnimationFrame(v.current),0)},[]),T=e?.onResult,E=(0,S.useCallback)(async e=>{if(!(t!==`idle`&&t!==`error`)){if(c(null),typeof window<`u`&&!window.isSecureContext){n(`error`),c(`Voice recording requires a secure connection (HTTPS). Use your tunnel URL for voice notes.`);return}if(typeof navigator>`u`||!navigator.mediaDevices?.getUserMedia){n(`error`),c(`Voice recording is not supported in this browser.`);return}if(typeof MediaRecorder>`u`){n(`error`),c(`Voice recording is not supported in this browser.`);return}try{let t=e?{audio:{deviceId:{exact:e}}}:{audio:!0},r;try{r=await navigator.mediaDevices.getUserMedia(t)}catch(t){let n=t?.name;if(e&&(n===`OverconstrainedError`||n===`NotFoundError`))r=await navigator.mediaDevices.getUserMedia({audio:!0});else throw t}u.current=r;let a=new AudioContext;g.current=a;let s=a.createMediaStreamSource(r),c=a.createAnalyser();c.fftSize=256,s.connect(c),_.current=c;let p=Te();f.current=p;let m=new MediaRecorder(r,p?{mimeType:p}:void 0);l.current=m,d.current=[],m.ondataavailable=e=>{e.data.size>0&&d.current.push(e.data)},r.getAudioTracks()[0]?.addEventListener(`ended`,()=>{y(),n(`idle`),i(0),o(null)}),m.start(1e3),n(`recording`),i(0),b(),C(),T?.({ok:!0})}catch(e){y(),n(`error`),e instanceof DOMException?(T?.({ok:!1,name:e.name,message:e.message}),e.name===`NotAllowedError`?c(`Microphone access was denied. Check your browser permissions to enable voice recording.`):e.name===`NotFoundError`?c(`No microphone found. Connect a microphone to use voice recording.`):e.name===`NotReadableError`?c(`The microphone could not be started even though access was granted. The browser reported: ${e.message} (${e.name}).`):c(`Microphone error (${e.name}): ${e.message}`)):(T?.({ok:!1}),c(`Could not start recording.`))}}},[t,y,b,C,T]),D=(0,S.useCallback)(()=>{let e=l.current;e&&(t===`recording`&&e.state===`recording`?(e.pause(),x(),w(),n(`paused`)):t===`paused`&&e.state===`paused`&&(e.resume(),b(),C(),n(`recording`)))},[t,x,b,C,w]),O=(0,S.useCallback)(()=>{t!==`recording`&&t!==`paused`||(y(),n(`idle`),i(0),o(null))},[t,y]),k=(0,S.useCallback)(async()=>{if(t!==`recording`&&t!==`paused`)return null;let e=l.current;if(!e)return null;let r=t===`recording`?Date.now()-m.current:0;return h.current+r<1e3?(O(),null):(n(`sending`),x(),w(),new Promise(t=>{e.onstop=()=>{let r=f.current||e.mimeType||`audio/webm`,a=new Blob(d.current,{type:Ee(r)});y(),n(`idle`),i(0),o(null),t(a.size>0?a:null)},e.stop()}))},[t,O,x,w,y]);return(0,S.useEffect)(()=>{if(t!==`error`)return;let e=setTimeout(()=>{n(`idle`),c(null)},8e3);return()=>clearTimeout(e)},[t]),{state:t,elapsedSeconds:r,waveform:a,errorMessage:s,start:E,togglePause:D,discard:O,send:k}}export{_ as C,h as D,p as E,v as S,m as T,F as _,Q as a,b,G as c,J as d,V as f,I as g,P as h,Y as i,q as l,N as m,Oe as n,X as o,B as p,Ce as r,Se as s,De as t,W as u,te as v,f as w,y as x,D as y};
|
|
2
|
+
import{o as e}from"./chunk-CltuBf4Z.js";import{B as t,K as n,P as r,g as i,k as a,r as o}from"./useSubAccountSwitcher-DWMWxvYo.js";import{n as s,t as c}from"./maximize-2-BFV9VKHO.js";import{n as l,t as u}from"./time-entry-format-jQxlRPoI.js";import{t as d}from"./preload-helper-BQrMkyGX.js";var f=`image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.text,text/rtf,application/rtf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.ms-powerpoint,application/vnd.oasis.opendocument.presentation,audio/ogg,audio/opus,audio/mp4,audio/x-m4a,audio/mpeg,audio/webm,audio/wav,video/mp4,.docx,.odt,.rtf,.xlsx,.xls,.ods,.pptx,.ppt,.odp,.opus,.ogg,.m4a,.mp4,.mp3,.wav,.webm`,p=new Set(f.split(`,`).filter(e=>!e.startsWith(`.`))),m=50*1024*1024;function h(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var g=r(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),_=r(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),v=r(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),y=r(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),b=r(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),x=r(`reply`,[[`path`,{d:`M20 18v-2a4 4 0 0 0-4-4H4`,key:`5vmcpk`}],[`path`,{d:`m9 17-5-5 5-5`,key:`nvlc11`}]]),S=e(n(),1),C=t();function w({children:e,tail:t=null,repinSignals:n}){let r=(0,S.useRef)(null),i=(0,S.useRef)(null),a=(0,S.useRef)(!0),[o,s]=(0,S.useState)(!0),c=(0,S.useRef)(0),l=(0,S.useRef)(0),u=()=>{let e=r.current;if(!e)return;let t=e.clientHeight,n=e.scrollHeight,i=t!==c.current||n!==l.current;if(c.current=t,l.current=n,i){a.current&&(e.scrollTop=e.scrollHeight);return}let o=n-e.scrollTop-t<=32;a.current=o,s(e=>e===o?e:o)},d=()=>{let e=r.current;e&&(e.scrollTop=e.scrollHeight,l.current=e.scrollHeight,c.current=e.clientHeight,a.current=!0,s(!0))},f=t!=null;return(0,S.useLayoutEffect)(()=>{let e=r.current;e&&a.current&&(e.scrollTop=e.scrollHeight),e&&(l.current=e.scrollHeight,c.current=e.clientHeight)},[...n,f]),(0,S.useLayoutEffect)(()=>{if(typeof ResizeObserver>`u`)return;let e=new ResizeObserver(()=>u());return r.current&&e.observe(r.current),i.current&&e.observe(i.current),()=>e.disconnect()},[]),(0,C.jsxs)(`div`,{className:`wa-reader`,children:[(0,C.jsx)(`div`,{className:`wa-reader-thread`,ref:r,onScroll:u,children:(0,C.jsxs)(`div`,{className:`wa-thread-scroll`,ref:i,children:[e,t]})}),!o&&(0,C.jsx)(`button`,{type:`button`,className:`wa-jump`,onClick:d,"aria-label":`Jump to latest message`,title:`Jump to latest message`,children:`↓`})]})}var T={auth_expired:`Your session has expired. Please sign in again.`,claude_down:`Claude is currently experiencing an outage. Please try again in a few minutes.`,claude_overloaded:`Claude is overloaded right now. Please try again shortly.`,model_unavailable:`The selected model is currently unavailable. Switch to a different model from the model picker to continue.`,agent_error:`Something went wrong. Please try again.`},E={auth_expired:`I'm not available right now. Please try again later.`,claude_down:`I'm not available right now. Please try again later.`,claude_overloaded:`I'm not available right now. Please try again shortly.`,model_unavailable:`I'm not available right now. Please try again later.`,agent_error:`I'm not available right now. Please try again later.`};function D(e,t=`admin`){return t===`public`?E[e]:T[e]}function O(e){return e===`whatsapp`?` · via WhatsApp`:e===`webchat`?` · via web`:``}var k=56,A=5;function j(e,t){let n=Math.max(1,Math.floor(e.length/t)),r=[],i=0;for(let a=0;a<t;a++){let t=a*n,o=0,s=0;for(let r=t;r<t+n&&r<e.length;r++)o+=e[r]*e[r],s++;let c=s>0?Math.sqrt(o/s):0;r.push(c),c>i&&(i=c)}return i>0?r.map(e=>e/i):r}function M({src:e,filename:t,onDecodeFail:n,onMediaError:r}){let i=(0,S.useRef)(null),a=(0,S.useRef)(null),o=(0,S.useRef)(!1),[s,c]=(0,S.useState)([]),[d,f]=(0,S.useState)(void 0),[p,m]=(0,S.useState)(!1),[h,g]=(0,S.useState)(0),[_,v]=(0,S.useState)(0);(0,S.useEffect)(()=>{let t=!1,r=null,i=window.AudioContext??window.webkitAudioContext,a=()=>{t||o.current||(o.current=!0,n())};if(!i){a();return}let s=new i;return(async()=>{try{let n=await fetch(e);if(!n.ok)throw Error(`audio fetch ${n.status}`);let i=await n.blob();if(t)return;r=URL.createObjectURL(i),f(r);let a=await s.decodeAudioData(await i.arrayBuffer());if(t)return;c(j(a.getChannelData(0),k)),Number.isFinite(a.duration)&&a.duration>0&&v(a.duration)}catch{a()}finally{try{s.close()}catch{}}})(),()=>{t=!0,r&&URL.revokeObjectURL(r)}},[e]);let y=()=>{let e=i.current;e&&(p?e.pause():Promise.resolve(e.play()).catch(()=>{}))},x=e=>{let t=i.current;if(!t||!(_>0))return;let n=Math.min(_,Math.max(0,e));t.currentTime=n,g(n)},w=e=>{let t=a.current;if(!t||!(_>0))return;let n=t.getBoundingClientRect();x(Math.min(1,Math.max(0,(e-n.left)/n.width))*_)},T=e=>{w(e.clientX);let t=e=>w(e.clientX),n=()=>{window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n)};window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)},E=e=>{if(!(_>0))return;let t=i.current?.currentTime??0;switch(e.key){case`ArrowRight`:case`ArrowUp`:x(t+A),e.preventDefault();break;case`ArrowLeft`:case`ArrowDown`:x(t-A),e.preventDefault();break;case`Home`:x(0),e.preventDefault();break;case`End`:x(_),e.preventDefault();break;default:break}},D=_>0?Math.min(1,h/_):0,O=Math.round(D*k),M=u(h>0?h:_);return(0,C.jsxs)(`div`,{className:`voice-note`,children:[(0,C.jsx)(`button`,{type:`button`,className:`voice-note-play`,"aria-label":`${p?`Pause`:`Play`} ${t}`,onClick:y,children:p?(0,C.jsx)(b,{size:16,"aria-hidden":!0}):(0,C.jsx)(l,{size:16,"aria-hidden":!0})}),(0,C.jsx)(`div`,{ref:a,className:`voice-note-bars`,role:`slider`,tabIndex:0,"aria-label":`Seek ${t}`,"aria-valuemin":0,"aria-valuemax":Math.round(_),"aria-valuenow":Math.round(h),onMouseDown:T,onKeyDown:E,children:(s.length?s:Array.from({length:k},()=>0)).map((e,t)=>(0,C.jsx)(`span`,{className:`voice-note-bar${t<O?` is-played`:``}`,style:{height:`${Math.max(10,Math.round(e*100))}%`}},t))}),(0,C.jsx)(`span`,{className:`voice-note-time`,children:M}),(0,C.jsx)(`audio`,{ref:i,className:`voice-note-audio`,preload:`metadata`,src:d,"aria-label":t,onPlay:()=>m(!0),onPause:()=>m(!1),onEnded:()=>m(!1),onError:()=>r?.(),onLoadedMetadata:e=>{let t=e.currentTarget.duration;Number.isFinite(t)&&t>0&&v(t)},onTimeUpdate:e=>g(e.currentTarget.currentTime)})]})}var N=/\.(png|jpe?g|gif|webp|svg|bmp)$/i,P=/\.pdf$/i;function ee(e,t){return(t?t.startsWith(`image/`):N.test(e))?`image`:t&&t.startsWith(`audio/`)?`audio`:(t?t===`application/pdf`:P.test(e))?`pdf`:`file`}function F(e,t,n,r){let i=encodeURIComponent(e.path),a=encodeURIComponent(n),o=r?`&disposition=${r}`:``;return e.root===`scratchpad`?`/api/admin/files/download?path=${i}&root=scratchpad&sessionId=${encodeURIComponent(t)}&session_key=${a}${o}`:`/api/admin/files/download?path=${i}&root=data&session_key=${a}${o}`}function I(e,t,n,r){return t===`public`?`/api/public-reader/attachment/${e}?sessionId=${encodeURIComponent(n)}`:`/api/admin/attachment/${e}?session_key=${encodeURIComponent(r)}`}function te(e,t,n){return`/api/admin/session-upload?session_key=${encodeURIComponent(n)}&session_id=${encodeURIComponent(e)}&file=${encodeURIComponent(t)}`}function L(e){if(e<1024)return`${e} B`;let t=e/1024;if(t<1024)return`${t<10?t.toFixed(1):Math.round(t)} KB`;let n=t/1024;return`${n<10?n.toFixed(1):Math.round(n)} MB`}function R({href:e,filename:t,label:n}){return(0,C.jsxs)(`a`,{className:`chat-attachment-chip`,href:e,download:t,children:[(0,C.jsx)(y,{size:14,"aria-hidden":!0}),n]})}function z({href:e,filename:t,className:n,size:r=14,onClick:i}){return(0,C.jsx)(`a`,{className:n,href:e,download:t,"aria-label":`Download ${t}`,onClick:i,children:(0,C.jsx)(a,{size:r,"aria-hidden":!0})})}function ne({src:e,filename:t,sizeBytes:n,expandable:r,onFail:i}){let[a,o]=(0,S.useState)(!1),[s,c]=(0,S.useState)(!1),l=n==null?t:`${t} · ${L(n)}`;return s?(0,C.jsx)(R,{href:e,filename:t,label:l}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`span`,{className:`chat-attachment-image-wrap`,children:[(0,C.jsx)(`img`,{className:`chat-attachment-image`,src:e,alt:t,onClick:r?()=>o(!0):void 0,onError:()=>{c(!0),i?.(`fetch`)}}),(0,C.jsx)(z,{href:e,filename:t,className:`chat-attachment-download`})]}),r&&a&&(0,C.jsx)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:()=>o(!1),children:(0,C.jsx)(`img`,{className:`chat-attachment-overlay-image`,src:e,alt:t})})]})}var re=280,ie=360,ae=16;function B({src:e,filename:t,sizeBytes:n,onFail:r}){let[i,a]=(0,S.useState)(!1),[o,s]=(0,S.useState)(!1),l=(0,S.useRef)(null),u=n==null?t:`${t} · ${L(n)}`;return(0,S.useEffect)(()=>{let t=!1,n=null;return(async()=>{try{let{loadPdf:r,renderPageToFit:i}=await d(async()=>{let{loadPdf:e,renderPageToFit:t}=await import(`./pdf-render-C257cidb.js`);return{loadPdf:e,renderPageToFit:t}},__vite__mapDeps([0,1])),a=await r(e);n=a;let o=l.current;if(t||!o)return;await i(a,1,o,re,ie)}catch{t||(s(!0),r?.(`render`))}})(),()=>{t=!0;try{n?.destroy()}catch{}}},[e]),o?(0,C.jsx)(R,{href:e,filename:t,label:u}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`chat-attachment-pdf`,children:[(0,C.jsx)(`canvas`,{ref:l,className:`chat-attachment-pdf-canvas`,"aria-label":t}),(0,C.jsx)(z,{href:e,filename:t,className:`chat-attachment-download`}),(0,C.jsx)(`button`,{type:`button`,className:`chat-attachment-pdf-expand`,"aria-label":`Expand ${t}`,onClick:()=>a(!0),children:(0,C.jsx)(c,{size:14,"aria-hidden":!0})})]}),i&&(0,C.jsx)(oe,{src:e,filename:t,label:u,onClose:()=>a(!1),onFail:r})]})}function oe({src:e,filename:t,label:n,onClose:r,onFail:a}){let o=(0,S.useRef)(null),s=(0,S.useRef)(null),[c,l]=(0,S.useState)(null),[u,f]=(0,S.useState)(!1);return(0,S.useEffect)(()=>{let t=!1;return(async()=>{try{let{loadPdf:n}=await d(async()=>{let{loadPdf:e}=await import(`./pdf-render-C257cidb.js`);return{loadPdf:e}},__vite__mapDeps([0,1])),r=await n(e);if(t){try{r.destroy()}catch{}return}s.current=r,l(r.numPages)}catch{t||(f(!0),a?.(`render`))}})(),()=>{t=!0;try{s.current?.destroy()}catch{}}},[e]),(0,S.useEffect)(()=>{if(c==null)return;let e=o.current,t=s.current;if(!e||!t)return;let n=!1;return(async()=>{try{let{renderPageToWidth:r}=await d(async()=>{let{renderPageToWidth:e}=await import(`./pdf-render-C257cidb.js`);return{renderPageToWidth:e}},__vite__mapDeps([0,1])),i=Array.from(e.querySelectorAll(`canvas.chat-attachment-overlay-page`)),a=Math.max(e.clientWidth-ae*2,1);for(let e=0;e<i.length;e++){if(n)return;await r(t,e+1,i[e],a)}}catch{n||(f(!0),a?.(`render`))}})(),()=>{n=!0}},[c]),(0,C.jsxs)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:r,children:[(0,C.jsx)(`div`,{ref:o,className:`chat-attachment-overlay-pdf`,onClick:e=>e.stopPropagation(),children:u?(0,C.jsx)(R,{href:e,filename:t,label:n}):Array.from({length:c??0},(e,n)=>(0,C.jsx)(`canvas`,{className:`chat-attachment-overlay-page`,"aria-label":`${t} page ${n+1}`},n))}),(0,C.jsx)(z,{href:e,filename:t,className:`chat-attachment-overlay-download`,size:20,onClick:e=>e.stopPropagation()}),(0,C.jsx)(`button`,{type:`button`,className:`chat-attachment-overlay-close`,"aria-label":`Close`,onClick:r,children:(0,C.jsx)(i,{size:20,"aria-hidden":!0})})]})}function se({src:e,filename:t,onFail:n}){let[r,i]=(0,S.useState)(!1);return r?(0,C.jsx)(`audio`,{className:`chat-attachment-audio`,controls:!0,preload:`metadata`,src:e,"aria-label":t,onError:()=>n?.(`fetch`)}):(0,C.jsx)(M,{src:e,filename:t,onDecodeFail:()=>{i(!0),n?.(`render`)},onMediaError:()=>{i(!0),n?.(`fetch`)}})}function V({filename:e,href:t,mimeType:n,sizeBytes:r,expandable:i,telemetry:a}){let o=ee(e,n);(0,S.useEffect)(()=>{a?.onRender?.({kind:o,mime:n,served:!!t})},[]);let s=a?.onFail?e=>a.onFail({kind:o===`pdf`?`pdf`:o===`audio`?`audio`:`image`,mime:n,reason:e}):void 0;if(o===`image`&&t)return(0,C.jsx)(ne,{src:t,filename:e,sizeBytes:r,expandable:i,onFail:s});if(o===`audio`&&t)return(0,C.jsx)(se,{src:t,filename:e,onFail:s});if(o===`pdf`&&t)return(0,C.jsx)(B,{src:t,filename:e,sizeBytes:r,onFail:s});let c=r==null?e:`${e} · ${L(r)}`;return t?(0,C.jsx)(R,{href:t,filename:e,label:c}):(0,C.jsxs)(`p`,{className:`chat-doc`,children:[(0,C.jsx)(y,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,c]})}function ce(e,t,n,r=`/api/whatsapp-reader/stream`,i=e,a=!0){let[o,s]=(0,S.useState)([]),[c,l]=(0,S.useState)(`open`),[u,d]=(0,S.useState)(null),f=(0,S.useRef)([]);return(0,S.useEffect)(()=>{f.current=o},[o]),(0,S.useEffect)(()=>{s([]),f.current=[],d(null)},[i,t,n,r]),(0,S.useEffect)(()=>{if(l(`open`),!a)return;let i=f.current.slice(),o=i.map(H),c=0,u=i.length>0,p=`${r}?sessionId=${encodeURIComponent(e)}&projectDir=${encodeURIComponent(t)}&session_key=${encodeURIComponent(n)}`,m=new EventSource(p);return m.onopen=()=>{console.info(`[admin-ui] wa-stream onopen sessionId=${e}`),l(`open`)},m.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(u){if(c<o.length&&H(t)===o[c]){c+=1;return}u=!1}s(e=>[...e,t])},m.addEventListener(`activity`,e=>{try{d(JSON.parse(e.data))}catch{}}),m.addEventListener(`activity-clear`,()=>d(null)),m.onerror=()=>{m.readyState===2&&(console.error(`[admin-ui] wa-stream onerror readyState=${m.readyState}`),l(`error`))},()=>m.close()},[e,t,n,r,i,a]),{turns:o,status:c,subagentActivity:u}}function H(e){return JSON.stringify(e)}function le(e,t,n,r=!0){let[i,a]=(0,S.useState)([]),[o,s]=(0,S.useState)(`open`);return(0,S.useEffect)(()=>{if(a([]),s(`open`),!r||!e||!t)return;let i=`/api/whatsapp-reader/store-stream?accountId=${encodeURIComponent(e)}&remoteJid=${encodeURIComponent(t)}&session_key=${encodeURIComponent(n)}`,o=new EventSource(i);return o.onopen=()=>s(`open`),o.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}a(e=>[...e,t])},o.addEventListener(`reaction`,e=>{let t;try{t=JSON.parse(e.data)}catch{return}a(e=>e.map(e=>e.kind===`whatsapp-persisted`&&e.msgKeyId===t.targetMsgKeyId?{...e,reactions:t.reactions}:e))}),o.onerror=()=>{o.readyState===2&&s(`error`)},()=>o.close()},[e,t,n,r]),{turns:i,status:o}}var U=e=>{if(!e)return 1/0;let t=new Date(e).getTime();return Number.isNaN(t)?1/0:t};function ue(e,t){let n=[],r=0;return e.forEach((e,t)=>n.push({sort:U(e.ts),sub:1,ins:r++,item:{kind:`turn`,turn:e,idx:t}})),t.forEach(e=>n.push({sort:U(e.ts),sub:0,ins:r++,item:{kind:`directive`,entry:e}})),n.sort((e,t)=>e.sort===t.sort?e.sort===1/0?e.ins-t.ins:e.sub-t.sub||e.ins-t.ins:e.sort<t.sort?-1:1).map(e=>e.item)}function de(e,t,n=!0){let[r,i]=(0,S.useState)([]);return(0,S.useEffect)(()=>{if(!n||typeof fetch!=`function`)return;let r=!0,a=`/api/whatsapp-reader/directives?sessionId=${encodeURIComponent(e)}&session_key=${encodeURIComponent(t)}`;return fetch(a).then(e=>e.ok?e.json():{entries:[]}).then(e=>{r&&i(Array.isArray(e.entries)?e.entries:[])}).catch(()=>{r&&i([])}),()=>{r=!1}},[e,t,n]),r}var fe=new Set([`operator-inbound`,`operator-typed`,`agent-reply`,`agent-reply-document`,`agent-file`,`agent-error`,`agent-webchat-final`,`whatsapp-persisted`]);function W(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function G(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}var pe=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],me=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function K(e){let t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`);return`${e.getFullYear()}-${t}-${n}`}function q(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:K(t)}function he(e,t=new Date){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=K(n);if(r===K(t))return`Today`;let i=new Date(t);return i.setDate(i.getDate()-1),r===K(i)?`Yesterday`:`${pe[n.getDay()]} ${n.getDate()} ${me[n.getMonth()]} ${n.getFullYear()}`}function J(e){return e.kind===`turn`?e.turn.ts:e.entry.ts}function Y({ts:e}){return(0,C.jsx)(`div`,{className:`day-divider`,role:`separator`,children:(0,C.jsx)(`span`,{className:`day-divider-label`,children:he(e)})})}function X(){return(0,C.jsx)(`div`,{className:`session-divider`,role:`separator`,children:(0,C.jsx)(`span`,{className:`session-divider-label`,children:`Conversation continued`})})}function Z({label:e,ts:t}){return(0,C.jsxs)(`div`,{className:`wa-turn-head`,children:[(0,C.jsx)(`span`,{className:`wa-who`,children:e}),(0,C.jsx)(`time`,{className:`wa-time`,children:W(t)})]})}function ge({turn:e}){let[t,n]=(0,S.useState)(!1),r=e.kind===`tool-result`,i=r?`wa-turn wa-turn-result${e.isError?` is-error`:``}`:`wa-turn wa-turn-tool`,a=r?e.isError?`result (error)`:`result`:`↳ ${e.name}`,o=r?e.text:JSON.stringify(e.input,null,2);return(0,C.jsxs)(`div`,{className:i,children:[(0,C.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":t,onClick:()=>n(e=>!e),children:[(0,C.jsx)(`span`,{className:`wa-chevron`,children:t?`▾`:`▸`}),(0,C.jsx)(`span`,{className:`wa-who`,children:a}),(0,C.jsx)(`time`,{className:`wa-time`,children:W(e.ts)})]}),t&&(0,C.jsx)(`pre`,{className:`wa-code`,children:o})]})}function Q({entry:e,sessionId:t,sessionKey:n}){let[r,i]=(0,S.useState)(!1),[a,o]=(0,S.useState)(null),s=()=>{let s=!r;if(i(s),s&&a===null&&typeof fetch==`function`){let r=`/api/whatsapp-reader/directive?sessionId=${encodeURIComponent(t)}&name=${encodeURIComponent(e.name)}&session_key=${encodeURIComponent(n)}`;fetch(r).then(e=>e.ok?e.text():`(directive unavailable)`).then(o).catch(()=>o(`(directive unavailable)`))}};return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-directive`,children:[(0,C.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":r,onClick:s,children:[(0,C.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,C.jsxs)(`span`,{className:`wa-who`,children:[`⚙ directive injected (`,e.len,` B)`]}),(0,C.jsx)(`time`,{className:`wa-time`,children:W(e.ts)})]}),r&&(0,C.jsx)(`pre`,{className:`wa-code`,children:a??`Loading…`})]})}function _e(e){return`text`in e&&typeof e.text==`string`?e.text:``}function ve(e,t){let n=(t??``).trim();if(!n)return e;let r=e.toLowerCase(),i=n.toLowerCase(),a=[],o=0,s=0;for(;;){let t=r.indexOf(i,o);if(t===-1){a.push(e.slice(o));break}t>o&&a.push(e.slice(o,t)),a.push((0,C.jsx)(`mark`,{className:`wa-search-hit`,children:e.slice(t,t+i.length)},s++)),o=t+i.length}return a.length===1?a[0]:(0,C.jsx)(C.Fragment,{children:a})}var $={onRender:({kind:e,mime:t,served:n})=>console.info(`[operator-ui] op=reader-attachment kind=${e} mime=${t??``} served=${n}`),onFail:({kind:e,mime:t,reason:n})=>console.info(`[operator-ui] op=reader-attachment-fail kind=${e} mime=${t??``} reason=${n}`)};function ye(e,t,n){switch(e.kind){case`operator-inbound`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-in`,children:[(0,C.jsx)(Z,{label:`Operator${O(e.source)}`,ts:e.ts}),e.text&&(0,C.jsx)(`p`,{className:`wa-body`,children:e.text}),e.attachments&&e.attachments.length>0&&(0,C.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,C.jsx)(V,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:I(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))})]},t);case`operator-typed`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-in wa-turn-typed`,children:[(0,C.jsx)(Z,{label:`Operator (web)`,ts:e.ts}),(0,C.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-text`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-think`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,C.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,C.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply-document`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,C.jsxs)(`p`,{className:`wa-doc`,children:[(0,C.jsx)(y,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,`sent document(s): `,e.files.map(G).join(`, `)]}),e.caption&&(0,C.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`agent-file`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),e.files.map((t,r)=>{let i=G(t),a=e.downloads?.[r];return(0,C.jsx)(V,{expandable:!0,filename:i,href:a?F(a,n.sessionId,n.sessionKey,P.test(i)?`inline`:void 0):void 0,telemetry:$},r)}),e.caption&&(0,C.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`whatsapp-persisted`:{let r=e.origin===`operator-manual`,i=e.fromMe?r?`You`:`Sent`:e.senderName??`Contact`;return(0,C.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${r?` wa-op-manual`:``}`,children:[n.onReplyTo&&e.msgKeyId&&(0,C.jsx)(`button`,{type:`button`,className:`wa-bubble-reply`,"aria-label":`Reply to this message`,onClick:()=>n.onReplyTo({msgKeyId:e.msgKeyId,body:e.text,senderName:e.senderName,fromMe:e.fromMe}),children:(0,C.jsx)(x,{size:14})}),n.showCopy&&e.text&&(0,C.jsx)(`button`,{type:`button`,className:`wa-bubble-copy`,"aria-label":`Copy this message`,onClick:()=>{let t=e.text;o(t).then(e=>e?console.info(`[operator-ui] op=wa-copy len=${t.length} ok=true`):console.warn(`[operator-ui] op=wa-copy-fail reason=clipboard-unavailable`))},children:(0,C.jsx)(s,{size:14})}),e.quoted&&(0,C.jsxs)(`div`,{className:`wa-quoted`,children:[(0,C.jsx)(`span`,{className:`wa-quoted-who`,children:e.quoted.fromMe?`You`:e.quoted.sender??`Contact`}),(0,C.jsx)(`span`,{className:`wa-quoted-body`,children:e.quoted.body||`Message`})]}),(0,C.jsx)(Z,{label:i,ts:e.ts}),e.text&&(0,C.jsx)(`p`,{className:`wa-body`,children:ve(e.text,n.highlight)}),e.attachments&&e.attachments.length>0&&(0,C.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,C.jsx)(V,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:I(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))}),e.reactions&&e.reactions.length>0&&(0,C.jsx)(`div`,{className:`wa-reactions`,children:e.reactions.map((e,t)=>(0,C.jsx)(`span`,{className:`wa-reaction`,title:e.reactorName??void 0,children:e.emoji},t))}),(0,C.jsxs)(`span`,{className:`wa-bubble-meta`,children:[r&&(0,C.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,C.jsx)(`time`,{className:`wa-bubble-time`,children:W(e.ts)}),e.fromMe&&(0,C.jsx)(g,{size:14,className:`wa-bubble-tick`,"aria-hidden":!0})]})]},t)}case`session-continued`:return(0,C.jsx)(X,{},t);case`harness-internal`:return null;case`tool-call`:case`tool-result`:return(0,C.jsx)(ge,{turn:e},t);case`agent-error`:return(0,C.jsxs)(`div`,{className:`wa-turn wa-turn-error`,role:`alert`,children:[(0,C.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,C.jsx)(`p`,{className:`wa-body wa-error-body`,children:D(e.code,`admin`)}),e.code===`agent_error`&&e.raw&&(0,C.jsx)(`pre`,{className:`wa-code`,children:e.raw})]},t)}}function be(e,t,n,r=`admin`,i,a,o){let s={sessionId:t,sessionKey:n,audience:r,highlight:i,onReplyTo:a,showCopy:o},c=[],l=null;return e.forEach((e,r)=>{let i=J(e),a=q(i);a!==null&&a!==l&&(c.push((0,C.jsx)(Y,{ts:i},`day-${r}`)),l=a),c.push(e.kind===`turn`?ye(e.turn,r,s):(0,C.jsx)(Q,{entry:e.entry,sessionId:t,sessionKey:n},r))}),c}function xe(e){return e.filter(e=>e.kind===`turn`&&fe.has(e.turn.kind)&&!(e.turn.kind===`operator-inbound`&&e.turn.scheduled))}var Se=(0,S.memo)(function({sessionId:e,projectDir:t,sessionKey:n,renderItems:r=be,clean:i,onToggleClean:a,forceDeliveredOnly:o=!1,streamEndpoint:s=`/api/whatsapp-reader/stream`,suppressDirectives:c=!1,tail:l=null,resetKey:u,onTurnsChange:d,onActivityChange:f,store:p,search:m,onReplyTo:h}){let g=!!p,_=ce(e,t,n,s,u,!g),v=le(p?.accountId??``,p?.remoteJid??``,n,g),{turns:y,status:b}=g?{turns:v.turns,status:v.status}:{turns:_.turns,status:_.status},x=g?null:_.subagentActivity;(0,S.useEffect)(()=>{f?.(x)},[x,f]),(0,S.useEffect)(()=>{d?.(y.length)},[y.length,d]);let T=ue(y,de(e,n,!c)),E=a==null?!1:!!i,D=o||E?xe(T):T,O=(m??``).trim().toLowerCase(),k=O.length>0,A=k?D.filter(e=>e.kind===`turn`&&_e(e.turn).toLowerCase().includes(O)):D,j=k?D.filter(e=>e.kind===`turn`).length:0;return(0,S.useEffect)(()=>{k&&console.info(`[operator-ui] op=wa-search q=${O} matches=${A.length} ofTurns=${j}`)},[O,k,A.length,j]),(0,C.jsxs)(w,{repinSignals:[y,E,k],tail:l,children:[b===`error`&&(0,C.jsx)(`div`,{className:`wa-reader-error`,children:`Stream disconnected.`}),!k&&y.length===0&&b===`open`&&(0,C.jsx)(`div`,{className:`wa-reader-placeholder`,children:`No messages in this conversation yet.`}),k&&A.length===0&&(0,C.jsxs)(`div`,{className:`wa-reader-placeholder`,children:[`No matches for "`,m,`".`]}),g?be(A,e,n,`admin`,m,h,!0):r(D,e,n)]})});function Ce(e,t){let n=e.split(`;`)[0].trim().toLowerCase();return t.has(n)}var we=[`audio/ogg;codecs=opus`,`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`];function Te(){for(let e of we)if(MediaRecorder.isTypeSupported(e))return e;return``}function Ee(e){return e.split(`;`)[0]}async function De(){return typeof navigator>`u`||!navigator.mediaDevices?.enumerateDevices?[]:(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)}function Oe(e){let[t,n]=(0,S.useState)(`idle`),[r,i]=(0,S.useState)(0),[a,o]=(0,S.useState)(null),[s,c]=(0,S.useState)(null),l=(0,S.useRef)(null),u=(0,S.useRef)(null),d=(0,S.useRef)([]),f=(0,S.useRef)(``),p=(0,S.useRef)(null),m=(0,S.useRef)(0),h=(0,S.useRef)(0),g=(0,S.useRef)(null),_=(0,S.useRef)(null),v=(0,S.useRef)(0),y=(0,S.useCallback)(()=>{if(p.current&&=(clearInterval(p.current),null),v.current&&=(cancelAnimationFrame(v.current),0),l.current&&l.current.state!==`inactive`)try{l.current.stop()}catch{}l.current=null,d.current=[],u.current&&=(u.current.getTracks().forEach(e=>e.stop()),null),g.current&&(g.current.close().catch(()=>{}),g.current=null,_.current=null),h.current=0,m.current=0},[]);(0,S.useEffect)(()=>y,[y]);let b=(0,S.useCallback)(()=>{m.current=Date.now(),p.current=setInterval(()=>{let e=Date.now()-m.current,t=h.current+e;i(Math.floor(t/1e3))},200)},[]),x=(0,S.useCallback)(()=>{p.current&&=(clearInterval(p.current),null);let e=Date.now()-m.current;h.current+=e},[]),C=(0,S.useCallback)(()=>{let e=_.current;if(!e)return;let t=new Uint8Array(e.frequencyBinCount),n=()=>{e.getByteTimeDomainData(t),o(new Uint8Array(t)),v.current=requestAnimationFrame(n)};n()},[]),w=(0,S.useCallback)(()=>{v.current&&=(cancelAnimationFrame(v.current),0)},[]),T=e?.onResult,E=(0,S.useCallback)(async e=>{if(!(t!==`idle`&&t!==`error`)){if(c(null),typeof window<`u`&&!window.isSecureContext){n(`error`),c(`Voice recording requires a secure connection (HTTPS). Use your tunnel URL for voice notes.`);return}if(typeof navigator>`u`||!navigator.mediaDevices?.getUserMedia){n(`error`),c(`Voice recording is not supported in this browser.`);return}if(typeof MediaRecorder>`u`){n(`error`),c(`Voice recording is not supported in this browser.`);return}try{let t=e?{audio:{deviceId:{exact:e}}}:{audio:!0},r;try{r=await navigator.mediaDevices.getUserMedia(t)}catch(t){let n=t?.name;if(e&&(n===`OverconstrainedError`||n===`NotFoundError`))r=await navigator.mediaDevices.getUserMedia({audio:!0});else throw t}u.current=r;let a=new AudioContext;g.current=a;let s=a.createMediaStreamSource(r),c=a.createAnalyser();c.fftSize=256,s.connect(c),_.current=c;let p=Te();f.current=p;let m=new MediaRecorder(r,p?{mimeType:p}:void 0);l.current=m,d.current=[],m.ondataavailable=e=>{e.data.size>0&&d.current.push(e.data)},r.getAudioTracks()[0]?.addEventListener(`ended`,()=>{y(),n(`idle`),i(0),o(null)}),m.start(1e3),n(`recording`),i(0),b(),C(),T?.({ok:!0})}catch(e){y(),n(`error`),e instanceof DOMException?(T?.({ok:!1,name:e.name,message:e.message}),e.name===`NotAllowedError`?c(`Microphone access was denied. Check your browser permissions to enable voice recording.`):e.name===`NotFoundError`?c(`No microphone found. Connect a microphone to use voice recording.`):e.name===`NotReadableError`?c(`The microphone could not be started even though access was granted. The browser reported: ${e.message} (${e.name}).`):c(`Microphone error (${e.name}): ${e.message}`)):(T?.({ok:!1}),c(`Could not start recording.`))}}},[t,y,b,C,T]),D=(0,S.useCallback)(()=>{let e=l.current;e&&(t===`recording`&&e.state===`recording`?(e.pause(),x(),w(),n(`paused`)):t===`paused`&&e.state===`paused`&&(e.resume(),b(),C(),n(`recording`)))},[t,x,b,C,w]),O=(0,S.useCallback)(()=>{t!==`recording`&&t!==`paused`||(y(),n(`idle`),i(0),o(null))},[t,y]),k=(0,S.useCallback)(async()=>{if(t!==`recording`&&t!==`paused`)return null;let e=l.current;if(!e)return null;let r=t===`recording`?Date.now()-m.current:0;return h.current+r<1e3?(O(),null):(n(`sending`),x(),w(),new Promise(t=>{e.onstop=()=>{let r=f.current||e.mimeType||`audio/webm`,a=new Blob(d.current,{type:Ee(r)});y(),n(`idle`),i(0),o(null),t(a.size>0?a:null)},e.stop()}))},[t,O,x,w,y]);return(0,S.useEffect)(()=>{if(t!==`error`)return;let e=setTimeout(()=>{n(`idle`),c(null)},8e3);return()=>clearTimeout(e)},[t]),{state:t,elapsedSeconds:r,waveform:a,errorMessage:s,start:E,togglePause:D,discard:O,send:k}}export{_ as C,h as D,p as E,v as S,m as T,F as _,Q as a,b,G as c,J as d,V as f,I as g,P as h,Y as i,q as l,N as m,Oe as n,X as o,B as p,Ce as r,Se as s,De as t,W as u,te as v,f as w,y as x,D as y};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{P as e}from"./useSubAccountSwitcher-
|
|
1
|
+
import{P as e}from"./useSubAccountSwitcher-DWMWxvYo.js";var t=e(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]);export{t};
|
|
Binary file
|
|
Binary file
|
|
@@ -5,10 +5,10 @@
|
|
|
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-ZEQUkPfs.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
13
13
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
14
14
|
</head>
|
|
@@ -5,13 +5,13 @@
|
|
|
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-DsRxrW0G.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-right-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/clock-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DLtGuH6K.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-right-CY_trg5L.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/clock-oM5driJm.js">
|
|
15
15
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
16
16
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
17
17
|
</head>
|
|
@@ -5,20 +5,20 @@
|
|
|
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-BS9B9lDo.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BQrMkyGX.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/maximize-2-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/file-text-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/wrench-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-jQxlRPoI.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-BFV9VKHO.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-1TAfCP2k.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BRix_wIl.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DLtGuH6K.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-BTV6EdBv.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-C-RfQUza.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/wrench-sDivAjhf.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/page-Bi86QF6_.js">
|
|
22
22
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
23
23
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
24
24
|
</head>
|
|
@@ -5,18 +5,18 @@
|
|
|
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-Cio6PO0F.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/graph-labels-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-CY1T19PY.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BQrMkyGX.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/maximize-2-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/file-text-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-jQxlRPoI.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-BFV9VKHO.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-1TAfCP2k.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DLtGuH6K.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-BTV6EdBv.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-wUS4rpzv.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/page-BnXly9aN.js">
|
|
20
20
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
21
21
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
22
22
|
</head>
|
|
@@ -5,15 +5,15 @@
|
|
|
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-hD_gPbbL.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/graph-labels-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/maximize-2-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-CY1T19PY.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BRix_wIl.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DLtGuH6K.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-BFV9VKHO.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-C-RfQUza.js">
|
|
17
17
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
18
18
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
19
19
|
</head>
|
|
@@ -5,21 +5,21 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>SiteDesk</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-Cb0BZriv.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/graph-labels-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-CY1T19PY.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BQrMkyGX.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/maximize-2-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/file-text-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-right-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-jQxlRPoI.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-BFV9VKHO.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-1TAfCP2k.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-CDpNkwkf.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DLtGuH6K.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-BTV6EdBv.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-wUS4rpzv.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/page-BnXly9aN.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-right-CY_trg5L.js">
|
|
23
23
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
24
24
|
<link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
|
|
25
25
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
@@ -5,21 +5,21 @@
|
|
|
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-Dxze8CwV.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BQrMkyGX.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/maximize-2-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/file-text-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/wrench-
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-jQxlRPoI.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-BFV9VKHO.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-1TAfCP2k.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-CDpNkwkf.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BRix_wIl.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DLtGuH6K.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-BTV6EdBv.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-C-RfQUza.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/wrench-sDivAjhf.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/page-Bi86QF6_.js">
|
|
23
23
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
24
24
|
<link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
|
|
25
25
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
@@ -5,20 +5,20 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>SiteDesk</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-D6Tnj5LU.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BQrMkyGX.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/maximize-2-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/file-text-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/wrench-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-jQxlRPoI.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-BFV9VKHO.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-1TAfCP2k.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BRix_wIl.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DLtGuH6K.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-BTV6EdBv.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-C-RfQUza.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/wrench-sDivAjhf.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/page-Bi86QF6_.js">
|
|
22
22
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
23
23
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
24
24
|
</head>
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Routines — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/routines-
|
|
8
|
+
<script type="module" crossorigin src="/assets/routines-NIMElUzV.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/clock-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/wrench-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/clock-oM5driJm.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/wrench-sDivAjhf.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
15
15
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
16
16
|
</head>
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Skills — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/skills-
|
|
8
|
+
<script type="module" crossorigin src="/assets/skills-N0ZlHosx.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/file-text-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-BTV6EdBv.js">
|
|
13
13
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
14
14
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
15
15
|
</head>
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Tasks — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/tasks-
|
|
8
|
+
<script type="module" crossorigin src="/assets/tasks-BsB_0duv.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CltuBf4Z.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-DWMWxvYo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-TSa8KgID.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-jQxlRPoI.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-C-RfQUza.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-UQQDcj0B.css">
|
|
15
15
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
16
16
|
</head>
|
package/payload/server/server.js
CHANGED
|
@@ -13051,6 +13051,16 @@ function openStream(connId, channel, startedAt) {
|
|
|
13051
13051
|
return reg;
|
|
13052
13052
|
}
|
|
13053
13053
|
|
|
13054
|
+
// app/lib/whatsapp/connection-key-from-message-id.ts
|
|
13055
|
+
var LIVE_NAMESPACE = "whatsapp-live";
|
|
13056
|
+
function connectionKeyFromMessageId(messageId) {
|
|
13057
|
+
if (!messageId) return null;
|
|
13058
|
+
const parts = messageId.split(":");
|
|
13059
|
+
if (parts.length < 4) return null;
|
|
13060
|
+
if (parts[0] !== LIVE_NAMESPACE) return null;
|
|
13061
|
+
return parts[1] || null;
|
|
13062
|
+
}
|
|
13063
|
+
|
|
13054
13064
|
// app/admin-types.ts
|
|
13055
13065
|
var ACCEPT_MIME = "image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.text,text/rtf,application/rtf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.ms-powerpoint,application/vnd.oasis.opendocument.presentation,audio/ogg,audio/opus,audio/mp4,audio/x-m4a,audio/mpeg,audio/webm,audio/wav,video/mp4,.docx,.odt,.rtf,.xlsx,.xls,.ods,.pptx,.ppt,.odp,.opus,.ogg,.m4a,.mp4,.mp3,.wav,.webm";
|
|
13056
13066
|
var SUPPORTED_MIME_SET = new Set(ACCEPT_MIME.split(",").filter((t) => !t.startsWith(".")));
|
|
@@ -14071,14 +14081,20 @@ app5.post("/reply", requireAdminSession, async (c) => {
|
|
|
14071
14081
|
}
|
|
14072
14082
|
resolvedRefs.push({ absolute, mime });
|
|
14073
14083
|
}
|
|
14074
|
-
const
|
|
14084
|
+
const connKey = connectionKeyFromMessageId(convo[convo.length - 1]?.messageId);
|
|
14085
|
+
if (!connKey) {
|
|
14086
|
+
console.log(`${MANUAL_TAG} op=socket sendId=${sendId} storeAccount=${accountId} connKey=none result=unresolvable`);
|
|
14087
|
+
exit("error");
|
|
14088
|
+
return c.json({ error: `No WhatsApp connection can be resolved for this conversation: its stored messages name no connection. This is an account-keying mismatch, not a dropped connection.` }, 503);
|
|
14089
|
+
}
|
|
14090
|
+
const res = resolveSocket(connKey);
|
|
14075
14091
|
if (!res.ok) {
|
|
14076
|
-
console.log(`${MANUAL_TAG} op=socket sendId=${sendId}
|
|
14092
|
+
console.log(`${MANUAL_TAG} op=socket sendId=${sendId} storeAccount=${accountId} connKey=${connKey} result=${res.reason} presentKeys=${res.presentKeys.join(",") || "none"}`);
|
|
14077
14093
|
exit("error");
|
|
14078
|
-
if (res.reason === "key-miss") return c.json({ error: `No WhatsApp socket is registered for
|
|
14079
|
-
return c.json({ error: `WhatsApp
|
|
14094
|
+
if (res.reason === "key-miss") return c.json({ error: `No WhatsApp socket is registered for connection "${connKey}" (present: ${res.presentKeys.join(", ") || "none"}). This is an account-keying mismatch, not a dropped connection.` }, 503);
|
|
14095
|
+
return c.json({ error: `WhatsApp connection "${connKey}" is registered but its socket is disconnected.` }, 503);
|
|
14080
14096
|
}
|
|
14081
|
-
console.log(`${MANUAL_TAG} op=socket sendId=${sendId}
|
|
14097
|
+
console.log(`${MANUAL_TAG} op=socket sendId=${sendId} storeAccount=${accountId} connKey=${connKey} result=ok socketAccountId=${res.accountId}`);
|
|
14082
14098
|
const record = (waMessageId, body, attachmentId) => {
|
|
14083
14099
|
const nowIso = (/* @__PURE__ */ new Date()).toISOString();
|
|
14084
14100
|
const rec = {
|
|
@@ -29633,8 +29649,19 @@ function createWaChannelRoutes(deps) {
|
|
|
29633
29649
|
}
|
|
29634
29650
|
const interactive = body?.interactive === true;
|
|
29635
29651
|
const finalText = typeof body?.finalText === "string" ? body.finalText : "";
|
|
29652
|
+
const num = (v) => typeof v === "number" && Number.isFinite(v) ? v : -1;
|
|
29653
|
+
const finalBytes = num(body?.finalBytes);
|
|
29654
|
+
const queueDepth = num(body?.queueDepth);
|
|
29655
|
+
const pendingTurns = num(body?.pendingTurns);
|
|
29636
29656
|
const sid = sessionId.slice(0, 8);
|
|
29637
29657
|
const deliver = interactive && !replied && finalText.trim().length > 0;
|
|
29658
|
+
const decision = `sessionId=${sid} replied=${replied ? "yes" : "no"} interactive=${interactive ? "yes" : "no"} finalBytes=${finalBytes} queueDepth=${queueDepth} pendingTurns=${pendingTurns}`;
|
|
29659
|
+
if (!replied && finalBytes > 0 && !deliver) {
|
|
29660
|
+
const op = interactive ? "turn-answer-dropped" : "turn-answer-withheld";
|
|
29661
|
+
console.error(
|
|
29662
|
+
`[whatsapp-native] op=${op} sessionId=${sid} interactive=${interactive ? "yes" : "no"} finalBytes=${finalBytes} queueDepth=${queueDepth}`
|
|
29663
|
+
);
|
|
29664
|
+
}
|
|
29638
29665
|
if (deliver) {
|
|
29639
29666
|
const bytes = Buffer.byteLength(finalText, "utf8");
|
|
29640
29667
|
try {
|
|
@@ -29646,14 +29673,14 @@ function createWaChannelRoutes(deps) {
|
|
|
29646
29673
|
);
|
|
29647
29674
|
return c.json({ ok: true, delivered: "undelivered" });
|
|
29648
29675
|
}
|
|
29649
|
-
console.error(`[whatsapp-native] op=turn-end
|
|
29676
|
+
console.error(`[whatsapp-native] op=turn-end ${decision} delivered=fallback bytes=${bytes}`);
|
|
29650
29677
|
return c.json({ ok: true, delivered: "fallback" });
|
|
29651
29678
|
}
|
|
29652
29679
|
if (replied) {
|
|
29653
|
-
console.error(`[whatsapp-native] op=turn-end
|
|
29680
|
+
console.error(`[whatsapp-native] op=turn-end ${decision} delivered=reply`);
|
|
29654
29681
|
return c.json({ ok: true, delivered: "reply" });
|
|
29655
29682
|
}
|
|
29656
|
-
console.error(`[whatsapp-native] op=turn-end
|
|
29683
|
+
console.error(`[whatsapp-native] op=turn-end ${decision} delivered=none`);
|
|
29657
29684
|
return c.json({ ok: true, delivered: "none" });
|
|
29658
29685
|
});
|
|
29659
29686
|
return app70;
|
|
@@ -31990,7 +32017,7 @@ function memoKey(mtimeMs, account) {
|
|
|
31990
32017
|
const bucket = Math.floor(Date.now() / 6e4);
|
|
31991
32018
|
return `${mtimeMs}:${bucket}:${account.accountId}:${account.customerEmail ?? ""}`;
|
|
31992
32019
|
}
|
|
31993
|
-
var VALID_TIERS = /* @__PURE__ */ new Set(["solo", "family", "pro"]);
|
|
32020
|
+
var VALID_TIERS = /* @__PURE__ */ new Set(["solo", "family", "pro", "max"]);
|
|
31994
32021
|
function resolveEntitlement(brand, account) {
|
|
31995
32022
|
if (brand.commercialMode !== true) {
|
|
31996
32023
|
return logResolved(implicitTrust(account), null);
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|