@rubytech/create-maxy-code 0.1.433 → 0.1.434
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +2 -2
- package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
- package/payload/server/public/assets/{AdminLoginScreens-CH-kznsr.js → AdminLoginScreens-CMh1pdOp.js} +1 -1
- package/payload/server/public/assets/{AdminShell-DzgrZYpX.js → AdminShell-X9Bg3AKc.js} +1 -1
- package/payload/server/public/assets/{Checkbox-ChPx3-af.js → Checkbox-OCfZCTCO.js} +1 -1
- package/payload/server/public/assets/{admin-VHYR1DAp.js → admin-Bi2uYnAg.js} +1 -1
- package/payload/server/public/assets/{browser-DkTz3Atj.js → browser-B0ieZy-b.js} +1 -1
- package/payload/server/public/assets/{calendar-DlQUywFC.js → calendar-CRL2_9Fl.js} +1 -1
- package/payload/server/public/assets/chat-C56bmC6C.js +1 -0
- package/payload/server/public/assets/chevron-left-B2DKUxLk.js +1 -0
- package/payload/server/public/assets/data-C1ftMulP.js +1 -0
- package/payload/server/public/assets/{file-download-CX16TB7C.js → file-download-CHTyUQqS.js} +1 -1
- package/payload/server/public/assets/{graph-DPqvHCZ4.js → graph-CrJ-itbq.js} +1 -1
- package/payload/server/public/assets/{graph-labels-D_0uou0Z.js → graph-labels-CmCWaKJT.js} +1 -1
- package/payload/server/public/assets/{maximize-2-BTHbMSfz.js → maximize-2-_cJWIgx2.js} +1 -1
- package/payload/server/public/assets/{operator-BCZ7UoWU.js → operator-B4wN2c53.js} +1 -1
- package/payload/server/public/assets/page-BIfOKi9I.js +32 -0
- package/payload/server/public/assets/{page-CqN6MkYM.js → page-C1G57kPZ.js} +1 -1
- package/payload/server/public/assets/{public-DI5OCw9V.js → public-DmBKnBkr.js} +1 -1
- package/payload/server/public/assets/tasks-0OcRiBdQ.js +1 -0
- package/payload/server/public/assets/time-entry-format-D477WAes.js +1 -0
- package/payload/server/public/assets/{useCopyFeedback-8b1gtbRz.js → useCopyFeedback-CpfVOO26.js} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-DRRuGtGS.css → useSubAccountSwitcher-BKCWKo97.css} +1 -1
- package/payload/server/public/assets/useVoiceRecorder-CZPtVpM-.js +2 -0
- package/payload/server/public/browser.html +5 -5
- package/payload/server/public/calendar.html +6 -6
- package/payload/server/public/chat.html +11 -11
- package/payload/server/public/data.html +10 -9
- package/payload/server/public/graph.html +10 -10
- package/payload/server/public/index.html +13 -12
- package/payload/server/public/operator.html +13 -13
- package/payload/server/public/public.html +11 -11
- package/payload/server/public/tasks.html +4 -4
- package/payload/server/public/assets/chat-CPOGOzmQ.js +0 -1
- package/payload/server/public/assets/chevron-left-Ch2-JhmS.js +0 -1
- package/payload/server/public/assets/data-Ppxc3gvy.js +0 -1
- package/payload/server/public/assets/page-BObPPwJr.js +0 -32
- package/payload/server/public/assets/play-Bw1WkeRC.js +0 -1
- package/payload/server/public/assets/tasks-Bj03-1M6.js +0 -1
- package/payload/server/public/assets/useVoiceRecorder-D9Qa7Eua.js +0 -2
- /package/payload/server/public/assets/{useSubAccountSwitcher-Cmbcd72K.js → useSubAccountSwitcher-Bo7bnFtC.js} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-render-COLA4aPx.js","assets/preload-helper-DqboRNgS.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./chunk-Ck5AOu5v.js";import{T as t,a as n,b as r,h as i}from"./useSubAccountSwitcher-Cmbcd72K.js";import{h as a}from"./file-download-CX16TB7C.js";import{t as o}from"./maximize-2-BTHbMSfz.js";import{t as s}from"./preload-helper-DqboRNgS.js";var c=`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,audio/ogg,audio/opus,audio/mp4,audio/x-m4a,audio/mpeg,audio/webm,audio/wav,video/mp4,.docx,.odt,.rtf,.opus,.ogg,.m4a,.mp4,.mp3,.wav,.webm`,l=new Set(c.split(`,`).filter(e=>!e.startsWith(`.`))),u=50*1024*1024;function d(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var f=i(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),p=i(`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`}]]),m=i(`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`}]]),h=i(`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`}]]),g=i(`reply`,[[`path`,{d:`M20 18v-2a4 4 0 0 0-4-4H4`,key:`5vmcpk`}],[`path`,{d:`m9 17-5-5 5-5`,key:`nvlc11`}]]),_=e(t(),1),v=r();function y({children:e,tail:t=null,repinSignals:n}){let r=(0,_.useRef)(null),i=(0,_.useRef)(null),a=(0,_.useRef)(!0),[o,s]=(0,_.useState)(!0),c=(0,_.useRef)(0),l=(0,_.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,_.useLayoutEffect)(()=>{let e=r.current;e&&a.current&&(e.scrollTop=e.scrollHeight),e&&(l.current=e.scrollHeight,c.current=e.clientHeight)},[...n,f]),(0,_.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,v.jsxs)(`div`,{className:`wa-reader`,children:[(0,v.jsx)(`div`,{className:`wa-reader-thread`,ref:r,onScroll:u,children:(0,v.jsxs)(`div`,{className:`wa-thread-scroll`,ref:i,children:[e,t]})}),!o&&(0,v.jsx)(`button`,{type:`button`,className:`wa-jump`,onClick:d,"aria-label":`Jump to latest message`,title:`Jump to latest message`,children:`↓`})]})}var b={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.`},x={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 S(e,t=`admin`){return t===`public`?x[e]:b[e]}function C(e){return e===`whatsapp`?` · via WhatsApp`:e===`webchat`?` · via web`:``}var w=/\.(png|jpe?g|gif|webp|svg|bmp)$/i,T=/\.pdf$/i;function E(e,t){return(t?t.startsWith(`image/`):w.test(e))?`image`:t&&t.startsWith(`audio/`)?`audio`:(t?t===`application/pdf`:T.test(e))?`pdf`:`file`}function D(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 O(e,t,n,r){return t===`public`?`/api/public-reader/attachment/${e}?sessionId=${encodeURIComponent(n)}`:`/api/admin/attachment/${e}?session_key=${encodeURIComponent(r)}`}function k(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 A({href:e,filename:t,label:n}){return(0,v.jsxs)(`a`,{className:`chat-attachment-chip`,href:e,download:t,children:[(0,v.jsx)(h,{size:14,"aria-hidden":!0}),n]})}function j({href:e,filename:t,className:n,size:r=14,onClick:i}){return(0,v.jsx)(`a`,{className:n,href:e,download:t,"aria-label":`Download ${t}`,onClick:i,children:(0,v.jsx)(a,{size:r,"aria-hidden":!0})})}function M({src:e,filename:t,sizeBytes:n,expandable:r,onFail:i}){let[a,o]=(0,_.useState)(!1),[s,c]=(0,_.useState)(!1),l=n==null?t:`${t} · ${k(n)}`;return s?(0,v.jsx)(A,{href:e,filename:t,label:l}):(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`span`,{className:`chat-attachment-image-wrap`,children:[(0,v.jsx)(`img`,{className:`chat-attachment-image`,src:e,alt:t,onClick:r?()=>o(!0):void 0,onError:()=>{c(!0),i?.(`fetch`)}}),(0,v.jsx)(j,{href:e,filename:t,className:`chat-attachment-download`})]}),r&&a&&(0,v.jsx)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:()=>o(!1),children:(0,v.jsx)(`img`,{className:`chat-attachment-overlay-image`,src:e,alt:t})})]})}var ee=280,te=360,ne=16;function N({src:e,filename:t,sizeBytes:n,onFail:r}){let[i,a]=(0,_.useState)(!1),[c,l]=(0,_.useState)(!1),u=(0,_.useRef)(null),d=n==null?t:`${t} · ${k(n)}`;return(0,_.useEffect)(()=>{let t=!1,n=null;return(async()=>{try{let{loadPdf:r,renderPageToFit:i}=await s(async()=>{let{loadPdf:e,renderPageToFit:t}=await import(`./pdf-render-COLA4aPx.js`);return{loadPdf:e,renderPageToFit:t}},__vite__mapDeps([0,1])),a=await r(e);n=a;let o=u.current;if(t||!o)return;await i(a,1,o,ee,te)}catch{t||(l(!0),r?.(`render`))}})(),()=>{t=!0;try{n?.destroy()}catch{}}},[e]),c?(0,v.jsx)(A,{href:e,filename:t,label:d}):(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`div`,{className:`chat-attachment-pdf`,children:[(0,v.jsx)(`canvas`,{ref:u,className:`chat-attachment-pdf-canvas`,"aria-label":t}),(0,v.jsx)(j,{href:e,filename:t,className:`chat-attachment-download`}),(0,v.jsx)(`button`,{type:`button`,className:`chat-attachment-pdf-expand`,"aria-label":`Expand ${t}`,onClick:()=>a(!0),children:(0,v.jsx)(o,{size:14,"aria-hidden":!0})})]}),i&&(0,v.jsx)(re,{src:e,filename:t,label:d,onClose:()=>a(!1),onFail:r})]})}function re({src:e,filename:t,label:r,onClose:i,onFail:a}){let o=(0,_.useRef)(null),c=(0,_.useRef)(null),[l,u]=(0,_.useState)(null),[d,f]=(0,_.useState)(!1);return(0,_.useEffect)(()=>{let t=!1;return(async()=>{try{let{loadPdf:n}=await s(async()=>{let{loadPdf:e}=await import(`./pdf-render-COLA4aPx.js`);return{loadPdf:e}},__vite__mapDeps([0,1])),r=await n(e);if(t){try{r.destroy()}catch{}return}c.current=r,u(r.numPages)}catch{t||(f(!0),a?.(`render`))}})(),()=>{t=!0;try{c.current?.destroy()}catch{}}},[e]),(0,_.useEffect)(()=>{if(l==null)return;let e=o.current,t=c.current;if(!e||!t)return;let n=!1;return(async()=>{try{let{renderPageToWidth:r}=await s(async()=>{let{renderPageToWidth:e}=await import(`./pdf-render-COLA4aPx.js`);return{renderPageToWidth:e}},__vite__mapDeps([0,1])),i=Array.from(e.querySelectorAll(`canvas.chat-attachment-overlay-page`)),a=Math.max(e.clientWidth-ne*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}},[l]),(0,v.jsxs)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:i,children:[(0,v.jsx)(`div`,{ref:o,className:`chat-attachment-overlay-pdf`,onClick:e=>e.stopPropagation(),children:d?(0,v.jsx)(A,{href:e,filename:t,label:r}):Array.from({length:l??0},(e,n)=>(0,v.jsx)(`canvas`,{className:`chat-attachment-overlay-page`,"aria-label":`${t} page ${n+1}`},n))}),(0,v.jsx)(j,{href:e,filename:t,className:`chat-attachment-overlay-download`,size:20,onClick:e=>e.stopPropagation()}),(0,v.jsx)(`button`,{type:`button`,className:`chat-attachment-overlay-close`,"aria-label":`Close`,onClick:i,children:(0,v.jsx)(n,{size:20,"aria-hidden":!0})})]})}function P({filename:e,href:t,mimeType:n,sizeBytes:r,expandable:i,telemetry:a}){let o=E(e,n);(0,_.useEffect)(()=>{a?.onRender?.({kind:o,mime:n,served:!!t})},[]);let s=a?.onFail?e=>a.onFail({kind:o===`pdf`?`pdf`:`image`,mime:n,reason:e}):void 0;if(o===`image`&&t)return(0,v.jsx)(M,{src:t,filename:e,sizeBytes:r,expandable:i,onFail:s});if(o===`audio`&&t)return(0,v.jsx)(`audio`,{className:`chat-attachment-audio`,controls:!0,preload:`metadata`,src:t});if(o===`pdf`&&t)return(0,v.jsx)(N,{src:t,filename:e,sizeBytes:r,onFail:s});let c=r==null?e:`${e} · ${k(r)}`;return t?(0,v.jsx)(A,{href:t,filename:e,label:c}):(0,v.jsxs)(`p`,{className:`chat-doc`,children:[(0,v.jsx)(h,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,c]})}function ie(e,t,n,r=`/api/whatsapp-reader/stream`,i=e,a=!0){let[o,s]=(0,_.useState)([]),[c,l]=(0,_.useState)(`open`),[u,d]=(0,_.useState)(null),f=(0,_.useRef)([]);return(0,_.useEffect)(()=>{f.current=o},[o]),(0,_.useEffect)(()=>{s([]),f.current=[],d(null)},[i,t,n,r]),(0,_.useEffect)(()=>{if(l(`open`),!a)return;let i=f.current.slice(),o=i.map(F),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&&F(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 F(e){return JSON.stringify(e)}function I(e,t,n,r=!0){let[i,a]=(0,_.useState)([]),[o,s]=(0,_.useState)(`open`);return(0,_.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.onerror=()=>{o.readyState===2&&s(`error`)},()=>o.close()},[e,t,n,r]),{turns:i,status:o}}var L=e=>{if(!e)return 1/0;let t=new Date(e).getTime();return Number.isNaN(t)?1/0:t};function R(e,t){let n=[],r=0;return e.forEach((e,t)=>n.push({sort:L(e.ts),sub:1,ins:r++,item:{kind:`turn`,turn:e,idx:t}})),t.forEach(e=>n.push({sort:L(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 ae(e,t,n=!0){let[r,i]=(0,_.useState)([]);return(0,_.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 oe=new Set([`operator-inbound`,`operator-typed`,`agent-reply`,`agent-reply-document`,`agent-file`,`agent-error`,`agent-webchat-final`,`whatsapp-persisted`]);function z(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function B(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}var V=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],H=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function U(e){let t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`);return`${e.getFullYear()}-${t}-${n}`}function W(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:U(t)}function G(e,t=new Date){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=U(n);if(r===U(t))return`Today`;let i=new Date(t);return i.setDate(i.getDate()-1),r===U(i)?`Yesterday`:`${V[n.getDay()]} ${n.getDate()} ${H[n.getMonth()]} ${n.getFullYear()}`}function K(e){return e.kind===`turn`?e.turn.ts:e.entry.ts}function q({ts:e}){return(0,v.jsx)(`div`,{className:`day-divider`,role:`separator`,children:(0,v.jsx)(`span`,{className:`day-divider-label`,children:G(e)})})}function J(){return(0,v.jsx)(`div`,{className:`session-divider`,role:`separator`,children:(0,v.jsx)(`span`,{className:`session-divider-label`,children:`Conversation continued`})})}function Y({label:e,ts:t}){return(0,v.jsxs)(`div`,{className:`wa-turn-head`,children:[(0,v.jsx)(`span`,{className:`wa-who`,children:e}),(0,v.jsx)(`time`,{className:`wa-time`,children:z(t)})]})}function se({turn:e}){let[t,n]=(0,_.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,v.jsxs)(`div`,{className:i,children:[(0,v.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":t,onClick:()=>n(e=>!e),children:[(0,v.jsx)(`span`,{className:`wa-chevron`,children:t?`▾`:`▸`}),(0,v.jsx)(`span`,{className:`wa-who`,children:a}),(0,v.jsx)(`time`,{className:`wa-time`,children:z(e.ts)})]}),t&&(0,v.jsx)(`pre`,{className:`wa-code`,children:o})]})}function X({entry:e,sessionId:t,sessionKey:n}){let[r,i]=(0,_.useState)(!1),[a,o]=(0,_.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,v.jsxs)(`div`,{className:`wa-turn wa-turn-directive`,children:[(0,v.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":r,onClick:s,children:[(0,v.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,v.jsxs)(`span`,{className:`wa-who`,children:[`⚙ directive injected (`,e.len,` B)`]}),(0,v.jsx)(`time`,{className:`wa-time`,children:z(e.ts)})]}),r&&(0,v.jsx)(`pre`,{className:`wa-code`,children:a??`Loading…`})]})}function ce(e){return`text`in e&&typeof e.text==`string`?e.text:``}function le(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,v.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,v.jsx)(v.Fragment,{children:a})}var Z={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 ue(e,t,n){switch(e.kind){case`operator-inbound`:return(0,v.jsxs)(`div`,{className:`wa-turn wa-turn-in`,children:[(0,v.jsx)(Y,{label:`Operator${C(e.source)}`,ts:e.ts}),e.text&&(0,v.jsx)(`p`,{className:`wa-body`,children:e.text}),e.attachments&&e.attachments.length>0&&(0,v.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,v.jsx)(P,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:O(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:Z},t))})]},t);case`operator-typed`:return(0,v.jsxs)(`div`,{className:`wa-turn wa-turn-in wa-turn-typed`,children:[(0,v.jsx)(Y,{label:`Operator (web)`,ts:e.ts}),(0,v.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-text`:return(0,v.jsxs)(`div`,{className:`wa-turn wa-turn-think`,children:[(0,v.jsx)(Y,{label:`Agent`,ts:e.ts}),(0,v.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply`:return(0,v.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,v.jsx)(Y,{label:`Agent`,ts:e.ts}),(0,v.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply-document`:return(0,v.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,v.jsx)(Y,{label:`Agent`,ts:e.ts}),(0,v.jsxs)(`p`,{className:`wa-doc`,children:[(0,v.jsx)(h,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,`sent document(s): `,e.files.map(B).join(`, `)]}),e.caption&&(0,v.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`agent-file`:return(0,v.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,v.jsx)(Y,{label:`Agent`,ts:e.ts}),e.files.map((t,r)=>{let i=B(t),a=e.downloads?.[r];return(0,v.jsx)(P,{expandable:!0,filename:i,href:a?D(a,n.sessionId,n.sessionKey,T.test(i)?`inline`:void 0):void 0,telemetry:Z},r)}),e.caption&&(0,v.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,v.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${r?` wa-op-manual`:``}`,children:[n.onReplyTo&&e.msgKeyId&&(0,v.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,v.jsx)(g,{size:14})}),e.quoted&&(0,v.jsxs)(`div`,{className:`wa-quoted`,children:[(0,v.jsx)(`span`,{className:`wa-quoted-who`,children:e.quoted.fromMe?`You`:e.quoted.sender??`Contact`}),(0,v.jsx)(`span`,{className:`wa-quoted-body`,children:e.quoted.body||`Message`})]}),(0,v.jsx)(Y,{label:i,ts:e.ts}),e.text&&(0,v.jsx)(`p`,{className:`wa-body`,children:le(e.text,n.highlight)}),e.attachments&&e.attachments.length>0&&(0,v.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,v.jsx)(P,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:O(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:Z},t))}),(0,v.jsxs)(`span`,{className:`wa-bubble-meta`,children:[r&&(0,v.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,v.jsx)(`time`,{className:`wa-bubble-time`,children:z(e.ts)}),e.fromMe&&(0,v.jsx)(f,{size:14,className:`wa-bubble-tick`,"aria-hidden":!0})]})]},t)}case`session-continued`:return(0,v.jsx)(J,{},t);case`harness-internal`:return null;case`tool-call`:case`tool-result`:return(0,v.jsx)(se,{turn:e},t);case`agent-error`:return(0,v.jsxs)(`div`,{className:`wa-turn wa-turn-error`,role:`alert`,children:[(0,v.jsx)(Y,{label:`Agent`,ts:e.ts}),(0,v.jsx)(`p`,{className:`wa-body wa-error-body`,children:S(e.code,`admin`)}),e.code===`agent_error`&&e.raw&&(0,v.jsx)(`pre`,{className:`wa-code`,children:e.raw})]},t)}}function Q(e,t,n,r=`admin`,i,a){let o={sessionId:t,sessionKey:n,audience:r,highlight:i,onReplyTo:a},s=[],c=null;return e.forEach((e,r)=>{let i=K(e),a=W(i);a!==null&&a!==c&&(s.push((0,v.jsx)(q,{ts:i},`day-${r}`)),c=a),s.push(e.kind===`turn`?ue(e.turn,r,o):(0,v.jsx)(X,{entry:e.entry,sessionId:t,sessionKey:n},r))}),s}function de(e){return e.filter(e=>e.kind===`turn`&&oe.has(e.turn.kind))}function fe({sessionId:e,projectDir:t,sessionKey:n,renderItems:r=Q,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,b=ie(e,t,n,s,u,!g),x=I(p?.accountId??``,p?.remoteJid??``,n,g),{turns:S,status:C}=g?{turns:x.turns,status:x.status}:{turns:b.turns,status:b.status},w=g?null:b.subagentActivity;(0,_.useEffect)(()=>{f?.(w)},[w,f]),(0,_.useEffect)(()=>{d?.(S.length)},[S.length,d]);let T=R(S,ae(e,n,!c)),E=a==null?!1:!!i,D=o||E?de(T):T,O=(m??``).trim().toLowerCase(),k=O.length>0,A=k?D.filter(e=>e.kind===`turn`&&ce(e.turn).toLowerCase().includes(O)):D,j=k?D.filter(e=>e.kind===`turn`).length:0;return(0,_.useEffect)(()=>{k&&console.info(`[operator-ui] op=wa-search q=${O} matches=${A.length} ofTurns=${j}`)},[O,k,A.length,j]),(0,v.jsxs)(y,{repinSignals:[S,E,k],tail:l,children:[C===`error`&&(0,v.jsx)(`div`,{className:`wa-reader-error`,children:`Stream disconnected.`}),!k&&S.length===0&&C===`open`&&(0,v.jsx)(`div`,{className:`wa-reader-placeholder`,children:`No messages in this conversation yet.`}),k&&A.length===0&&(0,v.jsxs)(`div`,{className:`wa-reader-placeholder`,children:[`No matches for "`,m,`".`]}),g?Q(A,e,n,`admin`,m,h):r(D,e,n)]})}function pe(e,t){let n=e.split(`;`)[0].trim().toLowerCase();return t.has(n)}var $=[`audio/ogg;codecs=opus`,`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`];function me(){for(let e of $)if(MediaRecorder.isTypeSupported(e))return e;return``}function he(e){return e.split(`;`)[0]}async function ge(){return typeof navigator>`u`||!navigator.mediaDevices?.enumerateDevices?[]:(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)}function _e(e){let[t,n]=(0,_.useState)(`idle`),[r,i]=(0,_.useState)(0),[a,o]=(0,_.useState)(null),[s,c]=(0,_.useState)(null),l=(0,_.useRef)(null),u=(0,_.useRef)(null),d=(0,_.useRef)([]),f=(0,_.useRef)(``),p=(0,_.useRef)(null),m=(0,_.useRef)(0),h=(0,_.useRef)(0),g=(0,_.useRef)(null),v=(0,_.useRef)(null),y=(0,_.useRef)(0),b=(0,_.useCallback)(()=>{if(p.current&&=(clearInterval(p.current),null),y.current&&=(cancelAnimationFrame(y.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,v.current=null),h.current=0,m.current=0},[]);(0,_.useEffect)(()=>b,[b]);let x=(0,_.useCallback)(()=>{m.current=Date.now(),p.current=setInterval(()=>{let e=Date.now()-m.current,t=h.current+e;i(Math.floor(t/1e3))},200)},[]),S=(0,_.useCallback)(()=>{p.current&&=(clearInterval(p.current),null);let e=Date.now()-m.current;h.current+=e},[]),C=(0,_.useCallback)(()=>{let e=v.current;if(!e)return;let t=new Uint8Array(e.frequencyBinCount),n=()=>{e.getByteTimeDomainData(t),o(new Uint8Array(t)),y.current=requestAnimationFrame(n)};n()},[]),w=(0,_.useCallback)(()=>{y.current&&=(cancelAnimationFrame(y.current),0)},[]),T=e?.onResult,E=(0,_.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),v.current=c;let p=me();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`,()=>{b(),n(`idle`),i(0),o(null)}),m.start(1e3),n(`recording`),i(0),x(),C(),T?.({ok:!0})}catch(e){b(),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,b,x,C,T]),D=(0,_.useCallback)(()=>{let e=l.current;e&&(t===`recording`&&e.state===`recording`?(e.pause(),S(),w(),n(`paused`)):t===`paused`&&e.state===`paused`&&(e.resume(),x(),C(),n(`recording`)))},[t,S,x,C,w]),O=(0,_.useCallback)(()=>{t!==`recording`&&t!==`paused`||(b(),n(`idle`),i(0),o(null))},[t,b]),k=(0,_.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`),S(),w(),new Promise(t=>{e.onstop=()=>{let r=f.current||e.mimeType||`audio/webm`,a=new Blob(d.current,{type:he(r)});b(),n(`idle`),i(0),o(null),t(a.size>0?a:null)},e.stop()}))},[t,O,S,w,b]);return(0,_.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{u as C,c as S,d as T,D as _,X as a,m as b,B as c,K as d,P as f,O as g,T as h,q as i,W as l,w as m,_e as n,J as o,N as p,pe as r,fe as s,ge as t,z as u,S as v,l as w,p as x,h as y};
|
|
File without changes
|