@rubytech/create-sitedesk-code 0.1.529 → 0.1.530
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/index.js +13 -0
- package/package.json +1 -1
- package/payload/platform/lib/routine-templates/dist/index.d.ts +19 -3
- package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/routine-templates/dist/index.js +22 -4
- package/payload/platform/lib/routine-templates/dist/index.js.map +1 -1
- package/payload/platform/lib/routine-templates/dist/roster.d.ts +19 -6
- package/payload/platform/lib/routine-templates/dist/roster.d.ts.map +1 -1
- package/payload/platform/lib/routine-templates/dist/roster.js +127 -17
- package/payload/platform/lib/routine-templates/dist/roster.js.map +1 -1
- package/payload/platform/lib/routine-templates/src/__tests__/roster.test.ts +46 -3
- package/payload/platform/lib/routine-templates/src/__tests__/seed.test.ts +52 -10
- package/payload/platform/lib/routine-templates/src/index.ts +30 -4
- package/payload/platform/lib/routine-templates/src/roster.ts +147 -17
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +7 -3
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +6 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +6 -2
- package/payload/platform/plugins/scheduling/PLUGIN.md +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +5 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js +100 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/dispatcher-env.d.ts +36 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/dispatcher-env.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/dispatcher-env.js +82 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/dispatcher-env.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts +31 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js +99 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +12 -12
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.js +79 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/dispatch-lateness.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/dispatch-lateness.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/dispatch-lateness.test.js +23 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/dispatch-lateness.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js +61 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +33 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +96 -7
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +21 -69
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts +24 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js +87 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-startdate.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-startdate.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-startdate.test.js +123 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-startdate.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-startdate.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-startdate.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-startdate.test.js +71 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-startdate.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js +14 -3
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +9 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +19 -3
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +24 -9
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/server/{chunk-UTIHI6KV.js → chunk-2YMGNYA3.js} +12 -12
- package/payload/server/{manager-B4LRDZKC.js → manager-XPRN5UF5.js} +1 -1
- package/payload/server/package.json +1 -1
- package/payload/server/public/activity.html +5 -5
- package/payload/server/public/agents.html +4 -4
- package/payload/server/public/assets/{AdminLoginScreens-zfexKfbT.js → AdminLoginScreens-7Czw3MAC.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-7Czw3MAC.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-7Czw3MAC.js.gz +0 -0
- package/payload/server/public/assets/{AdminShell-Cbk0TL1B.js → AdminShell-D5GApZ_n.js} +1 -1
- package/payload/server/public/assets/AdminShell-D5GApZ_n.js.br +0 -0
- package/payload/server/public/assets/AdminShell-D5GApZ_n.js.gz +0 -0
- package/payload/server/public/assets/{CdpScreencastSurface-CLSQHh4e.js → CdpScreencastSurface-BbekDUFw.js} +1 -1
- package/payload/server/public/assets/CdpScreencastSurface-BbekDUFw.js.br +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-BbekDUFw.js.gz +0 -0
- package/payload/server/public/assets/{activity-u275Oc-u.js → activity-ClI-RgJu.js} +1 -1
- package/payload/server/public/assets/activity-ClI-RgJu.js.br +0 -0
- package/payload/server/public/assets/activity-ClI-RgJu.js.gz +0 -0
- package/payload/server/public/assets/{admin-Du1nR_hP.js → admin-svtCmBPk.js} +1 -1
- package/payload/server/public/assets/admin-svtCmBPk.js.br +0 -0
- package/payload/server/public/assets/admin-svtCmBPk.js.gz +0 -0
- package/payload/server/public/assets/{agents-DJTxRLLU.js → agents-BO8YBj8d.js} +1 -1
- package/payload/server/public/assets/agents-BO8YBj8d.js.br +0 -0
- package/payload/server/public/assets/agents-BO8YBj8d.js.gz +0 -0
- package/payload/server/public/assets/{browser-Bft6zVkX.js → browser-Bj8oTG5R.js} +1 -1
- package/payload/server/public/assets/browser-Bj8oTG5R.js.br +0 -0
- package/payload/server/public/assets/browser-Bj8oTG5R.js.gz +0 -0
- package/payload/server/public/assets/{calendar-Ct-DCCqY.js → calendar-CrkSY8U7.js} +1 -1
- package/payload/server/public/assets/calendar-CrkSY8U7.js.br +0 -0
- package/payload/server/public/assets/calendar-CrkSY8U7.js.gz +0 -0
- package/payload/server/public/assets/chat-Bvxoni2e.js +1 -0
- package/payload/server/public/assets/chat-Bvxoni2e.js.br +0 -0
- package/payload/server/public/assets/chat-Bvxoni2e.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-CdUzxzeB.js +1 -0
- package/payload/server/public/assets/chevron-left-CdUzxzeB.js.br +0 -0
- package/payload/server/public/assets/chevron-right-CKGwd-M0.js +1 -0
- package/payload/server/public/assets/chevron-right-CKGwd-M0.js.br +0 -0
- package/payload/server/public/assets/clock-Cf8Oe9qi.js +1 -0
- package/payload/server/public/assets/clock-Cf8Oe9qi.js.br +0 -0
- package/payload/server/public/assets/clock-Cf8Oe9qi.js.gz +0 -0
- package/payload/server/public/assets/data-DF0Pstdp.js +1 -0
- package/payload/server/public/assets/data-DF0Pstdp.js.br +1 -0
- package/payload/server/public/assets/data-DF0Pstdp.js.gz +0 -0
- package/payload/server/public/assets/{file-download-C_fSe4dm.js → file-download-Di_s0_4w.js} +1 -1
- package/payload/server/public/assets/file-download-Di_s0_4w.js.br +0 -0
- package/payload/server/public/assets/file-download-Di_s0_4w.js.gz +0 -0
- package/payload/server/public/assets/{file-text-D7GbEcqj.js → file-text-CP1KIrJV.js} +1 -1
- package/payload/server/public/assets/file-text-CP1KIrJV.js.br +1 -0
- package/payload/server/public/assets/file-text-CP1KIrJV.js.gz +0 -0
- package/payload/server/public/assets/{graph-yl5qU1kO.js → graph-BCMscnCV.js} +1 -1
- package/payload/server/public/assets/graph-BCMscnCV.js.br +0 -0
- package/payload/server/public/assets/graph-BCMscnCV.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-Dlcb6cW7.js → graph-labels-CgP17xHK.js} +1 -1
- package/payload/server/public/assets/graph-labels-CgP17xHK.js.br +0 -0
- package/payload/server/public/assets/graph-labels-CgP17xHK.js.gz +0 -0
- package/payload/server/public/assets/{maximize-2-BS689r4W.js → maximize-2-DkQzDv-g.js} +1 -1
- package/payload/server/public/assets/maximize-2-DkQzDv-g.js.br +0 -0
- package/payload/server/public/assets/maximize-2-DkQzDv-g.js.gz +0 -0
- package/payload/server/public/assets/{operator-CvapnpIW.js → operator-CLbCar9e.js} +1 -1
- package/payload/server/public/assets/operator-CLbCar9e.js.br +0 -0
- package/payload/server/public/assets/operator-CLbCar9e.js.gz +0 -0
- package/payload/server/public/assets/{page-DWkUH4Z_.js → page-CNJl3tWT.js} +1 -1
- package/payload/server/public/assets/page-CNJl3tWT.js.br +0 -0
- package/payload/server/public/assets/page-CNJl3tWT.js.gz +0 -0
- package/payload/server/public/assets/{page-987y4JbQ.js → page-CPVUAwb8.js} +1 -1
- package/payload/server/public/assets/page-CPVUAwb8.js.br +0 -0
- package/payload/server/public/assets/page-CPVUAwb8.js.gz +0 -0
- package/payload/server/public/assets/{public-D5pi-VFn.js → public-DQea3Ybz.js} +1 -1
- package/payload/server/public/assets/public-DQea3Ybz.js.br +0 -0
- package/payload/server/public/assets/public-DQea3Ybz.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-zNxnK36R.js → rotate-ccw-DPw0vXC0.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-DPw0vXC0.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-DPw0vXC0.js.gz +0 -0
- package/payload/server/public/assets/{routines-mZzrGA5y.js → routines-CwiiYpfK.js} +2 -2
- package/payload/server/public/assets/routines-CwiiYpfK.js.br +0 -0
- package/payload/server/public/assets/routines-CwiiYpfK.js.gz +0 -0
- package/payload/server/public/assets/{skills-5A8PockT.js → skills-0FOjKUM-.js} +1 -1
- package/payload/server/public/assets/skills-0FOjKUM-.js.br +0 -0
- package/payload/server/public/assets/skills-0FOjKUM-.js.gz +0 -0
- package/payload/server/public/assets/{tasks-B1_2wc6L.js → tasks-BUVsPEGm.js} +1 -1
- package/payload/server/public/assets/tasks-BUVsPEGm.js.br +0 -0
- package/payload/server/public/assets/tasks-BUVsPEGm.js.gz +0 -0
- package/payload/server/public/assets/{time-entry-format-CJ2FSSQt.js → time-entry-format-B6fX_19a.js} +1 -1
- package/payload/server/public/assets/time-entry-format-B6fX_19a.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-B6fX_19a.js.gz +0 -0
- package/payload/server/public/assets/{triangle-alert-CedsrgME.js → triangle-alert-vAaSDhVq.js} +1 -1
- package/payload/server/public/assets/triangle-alert-vAaSDhVq.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-vAaSDhVq.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-zjZZUC2-.js → useCopyFeedback-BvIRgs7W.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-BvIRgs7W.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-BvIRgs7W.js.gz +0 -0
- package/payload/server/public/assets/{useSubAccountSwitcher-72THldvm.css → useSubAccountSwitcher-DM5Y9eio.css} +1 -1
- package/payload/server/public/assets/useSubAccountSwitcher-DM5Y9eio.css.br +0 -0
- package/payload/server/public/assets/{useSubAccountSwitcher-72THldvm.css.gz → useSubAccountSwitcher-DM5Y9eio.css.gz} +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-CJecnefX.js → useVoiceRecorder-CiDOh8PG.js} +1 -1
- package/payload/server/public/assets/useVoiceRecorder-CiDOh8PG.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-CiDOh8PG.js.gz +0 -0
- package/payload/server/public/assets/{wrench-D8BH20W8.js → wrench-BNBtwT2p.js} +1 -1
- package/payload/server/public/assets/wrench-BNBtwT2p.js.br +0 -0
- package/payload/server/public/assets/wrench-BNBtwT2p.js.gz +0 -0
- package/payload/server/public/browser.html +5 -5
- package/payload/server/public/calendar.html +7 -7
- package/payload/server/public/chat.html +13 -13
- package/payload/server/public/data.html +12 -12
- package/payload/server/public/graph.html +9 -9
- package/payload/server/public/index.html +16 -16
- package/payload/server/public/operator.html +15 -15
- package/payload/server/public/public.html +13 -13
- package/payload/server/public/routines.html +7 -7
- package/payload/server/public/skills.html +5 -5
- package/payload/server/public/tasks.html +6 -6
- package/payload/server/server.js +10 -4
- package/payload/server/public/assets/AdminLoginScreens-zfexKfbT.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-zfexKfbT.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-Cbk0TL1B.js.br +0 -0
- package/payload/server/public/assets/AdminShell-Cbk0TL1B.js.gz +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-CLSQHh4e.js.br +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-CLSQHh4e.js.gz +0 -0
- package/payload/server/public/assets/activity-u275Oc-u.js.br +0 -0
- package/payload/server/public/assets/activity-u275Oc-u.js.gz +0 -0
- package/payload/server/public/assets/admin-Du1nR_hP.js.br +0 -0
- package/payload/server/public/assets/admin-Du1nR_hP.js.gz +0 -0
- package/payload/server/public/assets/agents-DJTxRLLU.js.br +0 -0
- package/payload/server/public/assets/agents-DJTxRLLU.js.gz +0 -0
- package/payload/server/public/assets/browser-Bft6zVkX.js.br +0 -0
- package/payload/server/public/assets/browser-Bft6zVkX.js.gz +0 -0
- package/payload/server/public/assets/calendar-Ct-DCCqY.js.br +0 -0
- package/payload/server/public/assets/calendar-Ct-DCCqY.js.gz +0 -0
- package/payload/server/public/assets/chat-pqasbAg8.js +0 -1
- package/payload/server/public/assets/chat-pqasbAg8.js.br +0 -0
- package/payload/server/public/assets/chat-pqasbAg8.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-C8LTc7lb.js +0 -1
- package/payload/server/public/assets/chevron-right-Lz9t7Hed.js +0 -1
- package/payload/server/public/assets/chevron-right-Lz9t7Hed.js.br +0 -0
- package/payload/server/public/assets/clock-D6QQFHwJ.js +0 -1
- package/payload/server/public/assets/clock-D6QQFHwJ.js.br +0 -0
- package/payload/server/public/assets/clock-D6QQFHwJ.js.gz +0 -0
- package/payload/server/public/assets/data-B1JJ3Y1T.js +0 -1
- package/payload/server/public/assets/data-B1JJ3Y1T.js.br +0 -0
- package/payload/server/public/assets/data-B1JJ3Y1T.js.gz +0 -0
- package/payload/server/public/assets/file-download-C_fSe4dm.js.br +0 -0
- package/payload/server/public/assets/file-download-C_fSe4dm.js.gz +0 -0
- package/payload/server/public/assets/file-text-D7GbEcqj.js.br +0 -0
- package/payload/server/public/assets/file-text-D7GbEcqj.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-Dlcb6cW7.js.br +0 -0
- package/payload/server/public/assets/graph-labels-Dlcb6cW7.js.gz +0 -0
- package/payload/server/public/assets/graph-yl5qU1kO.js.br +0 -0
- package/payload/server/public/assets/graph-yl5qU1kO.js.gz +0 -0
- package/payload/server/public/assets/maximize-2-BS689r4W.js.br +0 -0
- package/payload/server/public/assets/maximize-2-BS689r4W.js.gz +0 -0
- package/payload/server/public/assets/operator-CvapnpIW.js.br +0 -0
- package/payload/server/public/assets/operator-CvapnpIW.js.gz +0 -0
- package/payload/server/public/assets/page-987y4JbQ.js.br +0 -0
- package/payload/server/public/assets/page-987y4JbQ.js.gz +0 -0
- package/payload/server/public/assets/page-DWkUH4Z_.js.br +0 -0
- package/payload/server/public/assets/page-DWkUH4Z_.js.gz +0 -0
- package/payload/server/public/assets/public-D5pi-VFn.js.br +0 -0
- package/payload/server/public/assets/public-D5pi-VFn.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-zNxnK36R.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-zNxnK36R.js.gz +0 -0
- package/payload/server/public/assets/routines-mZzrGA5y.js.br +0 -0
- package/payload/server/public/assets/routines-mZzrGA5y.js.gz +0 -0
- package/payload/server/public/assets/skills-5A8PockT.js.br +0 -0
- package/payload/server/public/assets/skills-5A8PockT.js.gz +0 -0
- package/payload/server/public/assets/tasks-B1_2wc6L.js.br +0 -0
- package/payload/server/public/assets/tasks-B1_2wc6L.js.gz +0 -0
- package/payload/server/public/assets/time-entry-format-CJ2FSSQt.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-CJ2FSSQt.js.gz +0 -0
- package/payload/server/public/assets/triangle-alert-CedsrgME.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CedsrgME.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-zjZZUC2-.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-zjZZUC2-.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-72THldvm.css.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-CJecnefX.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-CJecnefX.js.gz +0 -0
- package/payload/server/public/assets/wrench-D8BH20W8.js.br +0 -0
- package/payload/server/public/assets/wrench-D8BH20W8.js.gz +0 -0
- /package/payload/server/public/assets/{useSubAccountSwitcher-HjQZjJBr.js → useSubAccountSwitcher-BEwQMRMo.js} +0 -0
- /package/payload/server/public/assets/{useSubAccountSwitcher-HjQZjJBr.js.br → useSubAccountSwitcher-BEwQMRMo.js.br} +0 -0
- /package/payload/server/public/assets/{useSubAccountSwitcher-HjQZjJBr.js.gz → useSubAccountSwitcher-BEwQMRMo.js.gz} +0 -0
|
Binary file
|
package/payload/server/public/assets/{useVoiceRecorder-CJecnefX.js → useVoiceRecorder-CiDOh8PG.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-render-gEryZmeC.js","assets/preload-helper-3YNEDsJZ.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./chunk-CltuBf4Z.js";import{H as t,J as n,L as r,M as i,l as a,r as o,y as s}from"./useSubAccountSwitcher-HjQZjJBr.js";import{n as c,t as l}from"./maximize-2-BS689r4W.js";import{n as u,t as d}from"./time-entry-format-CJ2FSSQt.js";import{t as f}from"./preload-helper-3YNEDsJZ.js";var p=`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`,m=new Set(p.split(`,`).filter(e=>!e.startsWith(`.`))),h=50*1024*1024;function g(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var _=r(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),v=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`}]]),y=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`}]]),b=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`}]]),x=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`}]]),S=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`}]]),C=r(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),w=e(n(),1),T=t();function E({children:e,tail:t=null,repinSignals:n}){let r=(0,w.useRef)(null),i=(0,w.useRef)(null),a=(0,w.useRef)(!0),[o,s]=(0,w.useState)(!0),c=(0,w.useRef)(0),l=(0,w.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,w.useLayoutEffect)(()=>{let e=r.current;e&&a.current&&(e.scrollTop=e.scrollHeight),e&&(l.current=e.scrollHeight,c.current=e.clientHeight)},[...n,f]),(0,w.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,T.jsxs)(`div`,{className:`wa-reader`,children:[(0,T.jsx)(`div`,{className:`wa-reader-thread`,ref:r,onScroll:u,children:(0,T.jsxs)(`div`,{className:`wa-thread-scroll`,ref:i,children:[e,t]})}),!o&&(0,T.jsx)(`button`,{type:`button`,className:`wa-jump`,onClick:d,"aria-label":`Jump to latest message`,title:`Jump to latest message`,children:`↓`})]})}var D={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.`},O={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 k(e,t=`admin`){return t===`public`?O[e]:D[e]}function A(e){return e===`whatsapp`?` · via WhatsApp`:e===`webchat`?` · via web`:``}var j=56,M=5;function ee(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 te({src:e,filename:t,onDecodeFail:n,onMediaError:r}){let i=(0,w.useRef)(null),a=(0,w.useRef)(null),o=(0,w.useRef)(!1),[s,c]=(0,w.useState)([]),[l,f]=(0,w.useState)(void 0),[p,m]=(0,w.useState)(!1),[h,g]=(0,w.useState)(0),[_,v]=(0,w.useState)(0);(0,w.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(ee(a.getChannelData(0),j)),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(()=>{}))},b=e=>{let t=i.current;if(!t||!(_>0))return;let n=Math.min(_,Math.max(0,e));t.currentTime=n,g(n)},S=e=>{let t=a.current;if(!t||!(_>0))return;let n=t.getBoundingClientRect();b(Math.min(1,Math.max(0,(e-n.left)/n.width))*_)},C=e=>{S(e.clientX);let t=e=>S(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`:b(t+M),e.preventDefault();break;case`ArrowLeft`:case`ArrowDown`:b(t-M),e.preventDefault();break;case`Home`:b(0),e.preventDefault();break;case`End`:b(_),e.preventDefault();break;default:break}},D=_>0?Math.min(1,h/_):0,O=Math.round(D*j),k=d(h>0?h:_);return(0,T.jsxs)(`div`,{className:`voice-note`,children:[(0,T.jsx)(`button`,{type:`button`,className:`voice-note-play`,"aria-label":`${p?`Pause`:`Play`} ${t}`,onClick:y,children:p?(0,T.jsx)(x,{size:16,"aria-hidden":!0}):(0,T.jsx)(u,{size:16,"aria-hidden":!0})}),(0,T.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:C,onKeyDown:E,children:(s.length?s:Array.from({length:j},()=>0)).map((e,t)=>(0,T.jsx)(`span`,{className:`voice-note-bar${t<O?` is-played`:``}`,style:{height:`${Math.max(10,Math.round(e*100))}%`}},t))}),(0,T.jsx)(`span`,{className:`voice-note-time`,children:k}),(0,T.jsx)(`audio`,{ref:i,className:`voice-note-audio`,preload:`metadata`,src:l,"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 ne(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 re(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,T.jsxs)(`a`,{className:`chat-attachment-chip`,href:e,download:t,children:[(0,T.jsx)(b,{size:14,"aria-hidden":!0}),n]})}function z({href:e,filename:t,className:n,size:r=14,onClick:a}){return(0,T.jsx)(`a`,{className:n,href:e,download:t,"aria-label":`Download ${t}`,onClick:a,children:(0,T.jsx)(i,{size:r,"aria-hidden":!0})})}function ie({src:e,filename:t,sizeBytes:n,expandable:r,onFail:i}){let[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(!1),l=n==null?t:`${t} · ${L(n)}`;return s?(0,T.jsx)(R,{href:e,filename:t,label:l}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`span`,{className:`chat-attachment-image-wrap`,children:[(0,T.jsx)(`img`,{className:`chat-attachment-image`,src:e,alt:t,onClick:r?()=>o(!0):void 0,onError:()=>{c(!0),i?.(`fetch`)}}),(0,T.jsx)(z,{href:e,filename:t,className:`chat-attachment-download`})]}),r&&a&&(0,T.jsx)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:()=>o(!1),children:(0,T.jsx)(`img`,{className:`chat-attachment-overlay-image`,src:e,alt:t})})]})}var ae=280,oe=360,se=16;function B({src:e,filename:t,sizeBytes:n,onFail:r}){let[i,a]=(0,w.useState)(!1),[o,s]=(0,w.useState)(!1),c=(0,w.useRef)(null),u=n==null?t:`${t} · ${L(n)}`;return(0,w.useEffect)(()=>{let t=!1,n=null;return(async()=>{try{let{loadPdf:r,renderPageToFit:i}=await f(async()=>{let{loadPdf:e,renderPageToFit:t}=await import(`./pdf-render-gEryZmeC.js`);return{loadPdf:e,renderPageToFit:t}},__vite__mapDeps([0,1])),a=await r(e);n=a;let o=c.current;if(t||!o)return;await i(a,1,o,ae,oe)}catch{t||(s(!0),r?.(`render`))}})(),()=>{t=!0;try{n?.destroy()}catch{}}},[e]),o?(0,T.jsx)(R,{href:e,filename:t,label:u}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`div`,{className:`chat-attachment-pdf`,children:[(0,T.jsx)(`canvas`,{ref:c,className:`chat-attachment-pdf-canvas`,"aria-label":t}),(0,T.jsx)(z,{href:e,filename:t,className:`chat-attachment-download`}),(0,T.jsx)(`button`,{type:`button`,className:`chat-attachment-pdf-expand`,"aria-label":`Expand ${t}`,onClick:()=>a(!0),children:(0,T.jsx)(l,{size:14,"aria-hidden":!0})})]}),i&&(0,T.jsx)(ce,{src:e,filename:t,label:u,onClose:()=>a(!1),onFail:r})]})}function ce({src:e,filename:t,label:n,onClose:r,onFail:i}){let a=(0,w.useRef)(null),o=(0,w.useRef)(null),[c,l]=(0,w.useState)(null),[u,d]=(0,w.useState)(!1);return(0,w.useEffect)(()=>{let t=!1;return(async()=>{try{let{loadPdf:n}=await f(async()=>{let{loadPdf:e}=await import(`./pdf-render-gEryZmeC.js`);return{loadPdf:e}},__vite__mapDeps([0,1])),r=await n(e);if(t){try{r.destroy()}catch{}return}o.current=r,l(r.numPages)}catch{t||(d(!0),i?.(`render`))}})(),()=>{t=!0;try{o.current?.destroy()}catch{}}},[e]),(0,w.useEffect)(()=>{if(c==null)return;let e=a.current,t=o.current;if(!e||!t)return;let n=!1;return(async()=>{try{let{renderPageToWidth:r}=await f(async()=>{let{renderPageToWidth:e}=await import(`./pdf-render-gEryZmeC.js`);return{renderPageToWidth:e}},__vite__mapDeps([0,1])),i=Array.from(e.querySelectorAll(`canvas.chat-attachment-overlay-page`)),a=Math.max(e.clientWidth-se*2,1);for(let e=0;e<i.length;e++){if(n)return;await r(t,e+1,i[e],a)}}catch{n||(d(!0),i?.(`render`))}})(),()=>{n=!0}},[c]),(0,T.jsxs)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:r,children:[(0,T.jsx)(`div`,{ref:a,className:`chat-attachment-overlay-pdf`,onClick:e=>e.stopPropagation(),children:u?(0,T.jsx)(R,{href:e,filename:t,label:n}):Array.from({length:c??0},(e,n)=>(0,T.jsx)(`canvas`,{className:`chat-attachment-overlay-page`,"aria-label":`${t} page ${n+1}`},n))}),(0,T.jsx)(z,{href:e,filename:t,className:`chat-attachment-overlay-download`,size:20,onClick:e=>e.stopPropagation()}),(0,T.jsx)(`button`,{type:`button`,className:`chat-attachment-overlay-close`,"aria-label":`Close`,onClick:r,children:(0,T.jsx)(s,{size:20,"aria-hidden":!0})})]})}function le({src:e,filename:t,onFail:n}){let[r,i]=(0,w.useState)(!1);return r?(0,T.jsx)(`audio`,{className:`chat-attachment-audio`,controls:!0,preload:`metadata`,src:e,"aria-label":t,onError:()=>n?.(`fetch`)}):(0,T.jsx)(te,{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=ne(e,n);(0,w.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,T.jsx)(ie,{src:t,filename:e,sizeBytes:r,expandable:i,onFail:s});if(o===`audio`&&t)return(0,T.jsx)(le,{src:t,filename:e,onFail:s});if(o===`pdf`&&t)return(0,T.jsx)(B,{src:t,filename:e,sizeBytes:r,onFail:s});let c=r==null?e:`${e} · ${L(r)}`;return t?(0,T.jsx)(R,{href:t,filename:e,label:c}):(0,T.jsxs)(`p`,{className:`chat-doc`,children:[(0,T.jsx)(b,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,c]})}function ue(e,t,n,r=`/api/session-reader/stream`,i=e,a=!0){let[o,s]=(0,w.useState)([]),[c,l]=(0,w.useState)(`open`),[u,d]=(0,w.useState)(null),f=(0,w.useRef)([]);return(0,w.useEffect)(()=>{f.current=o},[o]),(0,w.useEffect)(()=>{s([]),f.current=[],d(null)},[i,t,n,r]),(0,w.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 de(e,t,n,r=!0){let[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(`open`);return(0,w.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 fe(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 pe(e,t,n=!0){let[r,i]=(0,w.useState)([]);return(0,w.useEffect)(()=>{if(!n||typeof fetch!=`function`)return;let r=!0,a=`/api/session-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 me=new Set([`operator-inbound`,`operator-typed`,`agent-reply`,`agent-reply-document`,`agent-file`,`agent-error`,`agent-webchat-final`,`whatsapp-persisted`]),W=[`#c2185b`,`#7b1fa2`,`#512da8`,`#303f9f`,`#1976d2`,`#0288d1`,`#0097a7`,`#00796b`,`#388e3c`,`#689f38`,`#af6c00`,`#e64a19`,`#5d4037`,`#455a64`,`#d81b60`,`#8e24aa`,`#3949ab`,`#039be5`,`#00897b`,`#6d4c41`];function he(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t>>>0}function G(e){return W[he(e)%W.length]}function K({accountId:e,jid:t,sessionKey:n,className:r=`wa-web-avatar`,size:i=20}){let[a,o]=(0,w.useState)(null);if(!t||a===t)return(0,T.jsx)(`span`,{className:r,"aria-hidden":!0,children:(0,T.jsx)(C,{size:i})});let s=`/api/whatsapp-reader/avatar?session_key=${encodeURIComponent(n)}&accountId=${encodeURIComponent(e)}&jid=${encodeURIComponent(t)}`;return(0,T.jsx)(`span`,{className:r,"aria-hidden":!0,children:(0,T.jsx)(`img`,{className:`wa-avatar-img`,src:s,alt:``,onError:()=>o(t)})})}function q(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function J(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}var ge=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],_e=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Y(e){let t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`);return`${e.getFullYear()}-${t}-${n}`}function X(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:Y(t)}function ve(e,t=new Date){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=Y(n);if(r===Y(t))return`Today`;let i=new Date(t);return i.setDate(i.getDate()-1),r===Y(i)?`Yesterday`:`${ge[n.getDay()]} ${n.getDate()} ${_e[n.getMonth()]} ${n.getFullYear()}`}function ye(e){return e.kind===`turn`?e.turn.ts:e.entry.ts}function be({ts:e}){return(0,T.jsx)(`div`,{className:`day-divider`,role:`separator`,children:(0,T.jsx)(`span`,{className:`day-divider-label`,children:ve(e)})})}function xe(){return(0,T.jsx)(`div`,{className:`session-divider`,role:`separator`,children:(0,T.jsx)(`span`,{className:`session-divider-label`,children:`Conversation continued`})})}function Z({label:e,ts:t,colour:n}){return(0,T.jsxs)(`div`,{className:`wa-turn-head`,children:[(0,T.jsx)(`span`,{className:`wa-who`,style:n?{color:n}:void 0,children:e}),(0,T.jsx)(`time`,{className:`wa-time`,children:q(t)})]})}function Se({turn:e}){let[t,n]=(0,w.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,T.jsxs)(`div`,{className:i,children:[(0,T.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":t,onClick:()=>n(e=>!e),children:[(0,T.jsx)(`span`,{className:`wa-chevron`,children:t?`▾`:`▸`}),(0,T.jsx)(`span`,{className:`wa-who`,children:a}),(0,T.jsx)(`time`,{className:`wa-time`,children:q(e.ts)})]}),t&&(0,T.jsx)(`pre`,{className:`wa-code`,children:o})]})}function Ce({entry:e,sessionId:t,sessionKey:n}){let[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(null),s=()=>{let s=!r;if(i(s),s&&a===null&&typeof fetch==`function`){let r=`/api/session-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,T.jsxs)(`div`,{className:`wa-turn wa-turn-directive`,children:[(0,T.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":r,onClick:s,children:[(0,T.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,T.jsxs)(`span`,{className:`wa-who`,children:[`⚙ directive injected (`,e.len,` B)`]}),(0,T.jsx)(`time`,{className:`wa-time`,children:q(e.ts)})]}),r&&(0,T.jsx)(`pre`,{className:`wa-code`,children:a??`Loading…`})]})}function we(e){return`text`in e&&typeof e.text==`string`?e.text:``}function Te(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,T.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,T.jsx)(T.Fragment,{children:a})}var Q={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 Ee(e,t,n){switch(e.kind){case`operator-inbound`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-in`,children:[(0,T.jsx)(Z,{label:`Operator${A(e.source)}`,ts:e.ts}),e.text&&(0,T.jsx)(`p`,{className:`wa-body`,children:e.text}),e.attachments&&e.attachments.length>0&&(0,T.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,T.jsx)(V,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:I(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:Q},t))})]},t);case`operator-typed`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-in wa-turn-typed`,children:[(0,T.jsx)(Z,{label:`Operator (web)`,ts:e.ts}),(0,T.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-text`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-think`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,T.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,T.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply-document`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,T.jsxs)(`p`,{className:`wa-doc`,children:[(0,T.jsx)(b,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,`sent document(s): `,e.files.map(J).join(`, `)]}),e.caption&&(0,T.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`agent-file`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),e.files.map((t,r)=>{let i=J(t),a=e.downloads?.[r];return(0,T.jsx)(V,{expandable:!0,filename:i,href:a?F(a,n.sessionId,n.sessionKey,P.test(i)?`inline`:void 0):void 0,telemetry:Q},r)}),e.caption&&(0,T.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`,s=n.groupThread&&!e.fromMe&&n.storeAccountId&&e.senderJid&&a(e.senderJid)?e.senderJid:null;return(0,T.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${r?` wa-op-manual`:``}${s?` wa-turn-has-avatar`:``}`,children:[s&&(0,T.jsx)(K,{accountId:n.storeAccountId,jid:s,sessionKey:n.sessionKey,className:`wa-bubble-avatar`,size:14}),n.onReplyTo&&e.msgKeyId&&(0,T.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,T.jsx)(S,{size:14})}),n.showCopy&&e.text&&(0,T.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,T.jsx)(c,{size:14})}),e.quoted&&(0,T.jsxs)(`div`,{className:`wa-quoted`,children:[(0,T.jsx)(`span`,{className:`wa-quoted-who`,children:e.quoted.fromMe?`You`:e.quoted.sender??`Contact`}),(0,T.jsx)(`span`,{className:`wa-quoted-body`,children:e.quoted.body||`Message`})]}),(0,T.jsx)(Z,{label:i,ts:e.ts,colour:n.groupThread&&!e.fromMe?G(e.senderTelephone||e.senderName||``):void 0}),e.text&&(0,T.jsx)(`p`,{className:`wa-body`,children:Te(e.text,n.highlight)}),e.attachments&&e.attachments.length>0&&(0,T.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,T.jsx)(V,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:I(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:Q},t))}),e.reactions&&e.reactions.length>0&&(0,T.jsx)(`div`,{className:`wa-reactions`,children:e.reactions.map((e,t)=>(0,T.jsx)(`span`,{className:`wa-reaction`,title:e.reactorName??void 0,children:e.emoji},t))}),(0,T.jsxs)(`span`,{className:`wa-bubble-meta`,children:[r&&(0,T.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,T.jsx)(`time`,{className:`wa-bubble-time`,children:q(e.ts)}),e.fromMe&&(0,T.jsx)(_,{size:14,className:`wa-bubble-tick`,"aria-hidden":!0})]})]},t)}case`session-continued`:return(0,T.jsx)(xe,{},t);case`harness-internal`:return null;case`tool-call`:case`tool-result`:return(0,T.jsx)(Se,{turn:e},t);case`agent-error`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-error`,role:`alert`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,T.jsx)(`p`,{className:`wa-body wa-error-body`,children:k(e.code,`admin`)}),e.code===`agent_error`&&e.raw&&(0,T.jsx)(`pre`,{className:`wa-code`,children:e.raw})]},t)}}function $(e,t,n,r=`admin`,i,a,o,s,c){let l={sessionId:t,sessionKey:n,audience:r,highlight:i,onReplyTo:a,showCopy:o,groupThread:s,storeAccountId:c},u=[],d=null;return e.forEach((e,r)=>{let i=ye(e),a=X(i);a!==null&&a!==d&&(u.push((0,T.jsx)(be,{ts:i},`day-${r}`)),d=a),u.push(e.kind===`turn`?Ee(e.turn,r,l):(0,T.jsx)(Ce,{entry:e.entry,sessionId:t,sessionKey:n},r))}),u}function De(e){return e.filter(e=>e.kind===`turn`&&me.has(e.turn.kind)&&!(e.turn.kind===`operator-inbound`&&e.turn.scheduled))}var Oe=(0,w.memo)(function({sessionId:e,projectDir:t,sessionKey:n,renderItems:r=$,clean:i,onToggleClean:a,forceDeliveredOnly:o=!1,streamEndpoint:s=`/api/session-reader/stream`,suppressDirectives:c=!1,tail:l=null,resetKey:u,onTurnsChange:d,onActivityChange:f,store:p,search:m,onReplyTo:h,groupThread:g=!1}){let _=!!p,v=ue(e,t,n,s,u,!_),y=de(p?.accountId??``,p?.remoteJid??``,n,_),{turns:b,status:x}=_?{turns:y.turns,status:y.status}:{turns:v.turns,status:v.status},S=_?null:v.subagentActivity;(0,w.useEffect)(()=>{f?.(S)},[S,f]),(0,w.useEffect)(()=>{d?.(b.length)},[b.length,d]);let C=fe(b,pe(e,n,!c)),D=a==null?!1:!!i,O=o||D?De(C):C,k=(m??``).trim().toLowerCase(),A=k.length>0,j=A?O.filter(e=>e.kind===`turn`&&we(e.turn).toLowerCase().includes(k)):O,M=A?O.filter(e=>e.kind===`turn`).length:0;return(0,w.useEffect)(()=>{A&&console.info(`[operator-ui] op=wa-search q=${k} matches=${j.length} ofTurns=${M}`)},[k,A,j.length,M]),(0,w.useEffect)(()=>{if(!g||!_)return;let e=b.filter(e=>e.kind===`whatsapp-persisted`&&!e.fromMe);if(e.length===0)return;let t=new Set(e.map(e=>e.senderTelephone||e.senderName||``)),n=new Set(Array.from(t,e=>G(e))),r=new Set(e.filter(e=>!e.senderTelephone).map(e=>e.senderName??``)).size;console.info(`[operator-ui] op=wa-sender-palette convo=${(p?.remoteJid??``).slice(0,8)} senders=${t.size} distinct=${n.size} unkeyed=${r}`)},[g,_,b,p?.remoteJid]),(0,T.jsxs)(E,{repinSignals:[b,D,A],tail:l,children:[x===`error`&&(0,T.jsx)(`div`,{className:`wa-reader-error`,children:`Stream disconnected.`}),!A&&b.length===0&&x===`open`&&(0,T.jsx)(`div`,{className:`wa-reader-placeholder`,children:`No messages in this conversation yet.`}),A&&j.length===0&&(0,T.jsxs)(`div`,{className:`wa-reader-placeholder`,children:[`No matches for "`,m,`".`]}),_?$(j,e,n,`admin`,m,h,!0,g,p?.accountId):r(O,e,n)]})});function ke(e,t){let n=e.split(`;`)[0].trim().toLowerCase();return t.has(n)}var Ae=[`audio/ogg;codecs=opus`,`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`];function je(){for(let e of Ae)if(MediaRecorder.isTypeSupported(e))return e;return``}function Me(e){return e.split(`;`)[0]}async function Ne(){return typeof navigator>`u`||!navigator.mediaDevices?.enumerateDevices?[]:(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)}function Pe(e){let[t,n]=(0,w.useState)(`idle`),[r,i]=(0,w.useState)(0),[a,o]=(0,w.useState)(null),[s,c]=(0,w.useState)(null),l=(0,w.useRef)(null),u=(0,w.useRef)(null),d=(0,w.useRef)([]),f=(0,w.useRef)(``),p=(0,w.useRef)(null),m=(0,w.useRef)(0),h=(0,w.useRef)(0),g=(0,w.useRef)(null),_=(0,w.useRef)(null),v=(0,w.useRef)(0),y=(0,w.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,w.useEffect)(()=>y,[y]);let b=(0,w.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,w.useCallback)(()=>{p.current&&=(clearInterval(p.current),null);let e=Date.now()-m.current;h.current+=e},[]),S=(0,w.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()},[]),C=(0,w.useCallback)(()=>{v.current&&=(cancelAnimationFrame(v.current),0)},[]),T=e?.onResult,E=(0,w.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=je();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(),S(),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,S,T]),D=(0,w.useCallback)(()=>{let e=l.current;e&&(t===`recording`&&e.state===`recording`?(e.pause(),x(),C(),n(`paused`)):t===`paused`&&e.state===`paused`&&(e.resume(),b(),S(),n(`recording`)))},[t,x,b,S,C]),O=(0,w.useCallback)(()=>{t!==`recording`&&t!==`paused`||(y(),n(`idle`),i(0),o(null))},[t,y]),k=(0,w.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(),C(),new Promise(t=>{e.onstop=()=>{let r=f.current||e.mimeType||`audio/webm`,a=new Blob(d.current,{type:Me(r)});y(),n(`idle`),i(0),o(null),t(a.size>0?a:null)},e.stop()}))},[t,O,x,C,y]);return(0,w.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{b as C,h as D,p as E,m as O,x as S,v as T,I as _,Ce as a,k as b,J as c,ye as d,K as f,P as g,N as h,be as i,g as k,X as l,B as m,Pe as n,xe as o,V as p,ke as r,Oe as s,Ne as t,q as u,F as v,y as w,C as x,re as y};
|
|
2
|
+
import{o as e}from"./chunk-CltuBf4Z.js";import{H as t,J as n,L as r,M as i,l as a,r as o,y as s}from"./useSubAccountSwitcher-BEwQMRMo.js";import{n as c,t as l}from"./maximize-2-DkQzDv-g.js";import{n as u,t as d}from"./time-entry-format-B6fX_19a.js";import{t as f}from"./preload-helper-3YNEDsJZ.js";var p=`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`,m=new Set(p.split(`,`).filter(e=>!e.startsWith(`.`))),h=50*1024*1024;function g(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var _=r(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),v=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`}]]),y=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`}]]),b=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`}]]),x=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`}]]),S=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`}]]),C=r(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),w=e(n(),1),T=t();function E({children:e,tail:t=null,repinSignals:n}){let r=(0,w.useRef)(null),i=(0,w.useRef)(null),a=(0,w.useRef)(!0),[o,s]=(0,w.useState)(!0),c=(0,w.useRef)(0),l=(0,w.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,w.useLayoutEffect)(()=>{let e=r.current;e&&a.current&&(e.scrollTop=e.scrollHeight),e&&(l.current=e.scrollHeight,c.current=e.clientHeight)},[...n,f]),(0,w.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,T.jsxs)(`div`,{className:`wa-reader`,children:[(0,T.jsx)(`div`,{className:`wa-reader-thread`,ref:r,onScroll:u,children:(0,T.jsxs)(`div`,{className:`wa-thread-scroll`,ref:i,children:[e,t]})}),!o&&(0,T.jsx)(`button`,{type:`button`,className:`wa-jump`,onClick:d,"aria-label":`Jump to latest message`,title:`Jump to latest message`,children:`↓`})]})}var D={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.`},O={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 k(e,t=`admin`){return t===`public`?O[e]:D[e]}function A(e){return e===`whatsapp`?` · via WhatsApp`:e===`webchat`?` · via web`:``}var j=56,M=5;function ee(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 te({src:e,filename:t,onDecodeFail:n,onMediaError:r}){let i=(0,w.useRef)(null),a=(0,w.useRef)(null),o=(0,w.useRef)(!1),[s,c]=(0,w.useState)([]),[l,f]=(0,w.useState)(void 0),[p,m]=(0,w.useState)(!1),[h,g]=(0,w.useState)(0),[_,v]=(0,w.useState)(0);(0,w.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(ee(a.getChannelData(0),j)),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(()=>{}))},b=e=>{let t=i.current;if(!t||!(_>0))return;let n=Math.min(_,Math.max(0,e));t.currentTime=n,g(n)},S=e=>{let t=a.current;if(!t||!(_>0))return;let n=t.getBoundingClientRect();b(Math.min(1,Math.max(0,(e-n.left)/n.width))*_)},C=e=>{S(e.clientX);let t=e=>S(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`:b(t+M),e.preventDefault();break;case`ArrowLeft`:case`ArrowDown`:b(t-M),e.preventDefault();break;case`Home`:b(0),e.preventDefault();break;case`End`:b(_),e.preventDefault();break;default:break}},D=_>0?Math.min(1,h/_):0,O=Math.round(D*j),k=d(h>0?h:_);return(0,T.jsxs)(`div`,{className:`voice-note`,children:[(0,T.jsx)(`button`,{type:`button`,className:`voice-note-play`,"aria-label":`${p?`Pause`:`Play`} ${t}`,onClick:y,children:p?(0,T.jsx)(x,{size:16,"aria-hidden":!0}):(0,T.jsx)(u,{size:16,"aria-hidden":!0})}),(0,T.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:C,onKeyDown:E,children:(s.length?s:Array.from({length:j},()=>0)).map((e,t)=>(0,T.jsx)(`span`,{className:`voice-note-bar${t<O?` is-played`:``}`,style:{height:`${Math.max(10,Math.round(e*100))}%`}},t))}),(0,T.jsx)(`span`,{className:`voice-note-time`,children:k}),(0,T.jsx)(`audio`,{ref:i,className:`voice-note-audio`,preload:`metadata`,src:l,"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 ne(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 re(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,T.jsxs)(`a`,{className:`chat-attachment-chip`,href:e,download:t,children:[(0,T.jsx)(b,{size:14,"aria-hidden":!0}),n]})}function z({href:e,filename:t,className:n,size:r=14,onClick:a}){return(0,T.jsx)(`a`,{className:n,href:e,download:t,"aria-label":`Download ${t}`,onClick:a,children:(0,T.jsx)(i,{size:r,"aria-hidden":!0})})}function ie({src:e,filename:t,sizeBytes:n,expandable:r,onFail:i}){let[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(!1),l=n==null?t:`${t} · ${L(n)}`;return s?(0,T.jsx)(R,{href:e,filename:t,label:l}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`span`,{className:`chat-attachment-image-wrap`,children:[(0,T.jsx)(`img`,{className:`chat-attachment-image`,src:e,alt:t,onClick:r?()=>o(!0):void 0,onError:()=>{c(!0),i?.(`fetch`)}}),(0,T.jsx)(z,{href:e,filename:t,className:`chat-attachment-download`})]}),r&&a&&(0,T.jsx)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:()=>o(!1),children:(0,T.jsx)(`img`,{className:`chat-attachment-overlay-image`,src:e,alt:t})})]})}var ae=280,oe=360,se=16;function B({src:e,filename:t,sizeBytes:n,onFail:r}){let[i,a]=(0,w.useState)(!1),[o,s]=(0,w.useState)(!1),c=(0,w.useRef)(null),u=n==null?t:`${t} · ${L(n)}`;return(0,w.useEffect)(()=>{let t=!1,n=null;return(async()=>{try{let{loadPdf:r,renderPageToFit:i}=await f(async()=>{let{loadPdf:e,renderPageToFit:t}=await import(`./pdf-render-gEryZmeC.js`);return{loadPdf:e,renderPageToFit:t}},__vite__mapDeps([0,1])),a=await r(e);n=a;let o=c.current;if(t||!o)return;await i(a,1,o,ae,oe)}catch{t||(s(!0),r?.(`render`))}})(),()=>{t=!0;try{n?.destroy()}catch{}}},[e]),o?(0,T.jsx)(R,{href:e,filename:t,label:u}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`div`,{className:`chat-attachment-pdf`,children:[(0,T.jsx)(`canvas`,{ref:c,className:`chat-attachment-pdf-canvas`,"aria-label":t}),(0,T.jsx)(z,{href:e,filename:t,className:`chat-attachment-download`}),(0,T.jsx)(`button`,{type:`button`,className:`chat-attachment-pdf-expand`,"aria-label":`Expand ${t}`,onClick:()=>a(!0),children:(0,T.jsx)(l,{size:14,"aria-hidden":!0})})]}),i&&(0,T.jsx)(ce,{src:e,filename:t,label:u,onClose:()=>a(!1),onFail:r})]})}function ce({src:e,filename:t,label:n,onClose:r,onFail:i}){let a=(0,w.useRef)(null),o=(0,w.useRef)(null),[c,l]=(0,w.useState)(null),[u,d]=(0,w.useState)(!1);return(0,w.useEffect)(()=>{let t=!1;return(async()=>{try{let{loadPdf:n}=await f(async()=>{let{loadPdf:e}=await import(`./pdf-render-gEryZmeC.js`);return{loadPdf:e}},__vite__mapDeps([0,1])),r=await n(e);if(t){try{r.destroy()}catch{}return}o.current=r,l(r.numPages)}catch{t||(d(!0),i?.(`render`))}})(),()=>{t=!0;try{o.current?.destroy()}catch{}}},[e]),(0,w.useEffect)(()=>{if(c==null)return;let e=a.current,t=o.current;if(!e||!t)return;let n=!1;return(async()=>{try{let{renderPageToWidth:r}=await f(async()=>{let{renderPageToWidth:e}=await import(`./pdf-render-gEryZmeC.js`);return{renderPageToWidth:e}},__vite__mapDeps([0,1])),i=Array.from(e.querySelectorAll(`canvas.chat-attachment-overlay-page`)),a=Math.max(e.clientWidth-se*2,1);for(let e=0;e<i.length;e++){if(n)return;await r(t,e+1,i[e],a)}}catch{n||(d(!0),i?.(`render`))}})(),()=>{n=!0}},[c]),(0,T.jsxs)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:r,children:[(0,T.jsx)(`div`,{ref:a,className:`chat-attachment-overlay-pdf`,onClick:e=>e.stopPropagation(),children:u?(0,T.jsx)(R,{href:e,filename:t,label:n}):Array.from({length:c??0},(e,n)=>(0,T.jsx)(`canvas`,{className:`chat-attachment-overlay-page`,"aria-label":`${t} page ${n+1}`},n))}),(0,T.jsx)(z,{href:e,filename:t,className:`chat-attachment-overlay-download`,size:20,onClick:e=>e.stopPropagation()}),(0,T.jsx)(`button`,{type:`button`,className:`chat-attachment-overlay-close`,"aria-label":`Close`,onClick:r,children:(0,T.jsx)(s,{size:20,"aria-hidden":!0})})]})}function le({src:e,filename:t,onFail:n}){let[r,i]=(0,w.useState)(!1);return r?(0,T.jsx)(`audio`,{className:`chat-attachment-audio`,controls:!0,preload:`metadata`,src:e,"aria-label":t,onError:()=>n?.(`fetch`)}):(0,T.jsx)(te,{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=ne(e,n);(0,w.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,T.jsx)(ie,{src:t,filename:e,sizeBytes:r,expandable:i,onFail:s});if(o===`audio`&&t)return(0,T.jsx)(le,{src:t,filename:e,onFail:s});if(o===`pdf`&&t)return(0,T.jsx)(B,{src:t,filename:e,sizeBytes:r,onFail:s});let c=r==null?e:`${e} · ${L(r)}`;return t?(0,T.jsx)(R,{href:t,filename:e,label:c}):(0,T.jsxs)(`p`,{className:`chat-doc`,children:[(0,T.jsx)(b,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,c]})}function ue(e,t,n,r=`/api/session-reader/stream`,i=e,a=!0){let[o,s]=(0,w.useState)([]),[c,l]=(0,w.useState)(`open`),[u,d]=(0,w.useState)(null),f=(0,w.useRef)([]);return(0,w.useEffect)(()=>{f.current=o},[o]),(0,w.useEffect)(()=>{s([]),f.current=[],d(null)},[i,t,n,r]),(0,w.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 de(e,t,n,r=!0){let[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(`open`);return(0,w.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 fe(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 pe(e,t,n=!0){let[r,i]=(0,w.useState)([]);return(0,w.useEffect)(()=>{if(!n||typeof fetch!=`function`)return;let r=!0,a=`/api/session-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 me=new Set([`operator-inbound`,`operator-typed`,`agent-reply`,`agent-reply-document`,`agent-file`,`agent-error`,`agent-webchat-final`,`whatsapp-persisted`]),W=[`#c2185b`,`#7b1fa2`,`#512da8`,`#303f9f`,`#1976d2`,`#0288d1`,`#0097a7`,`#00796b`,`#388e3c`,`#689f38`,`#af6c00`,`#e64a19`,`#5d4037`,`#455a64`,`#d81b60`,`#8e24aa`,`#3949ab`,`#039be5`,`#00897b`,`#6d4c41`];function he(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t>>>0}function G(e){return W[he(e)%W.length]}function K({accountId:e,jid:t,sessionKey:n,className:r=`wa-web-avatar`,size:i=20}){let[a,o]=(0,w.useState)(null);if(!t||a===t)return(0,T.jsx)(`span`,{className:r,"aria-hidden":!0,children:(0,T.jsx)(C,{size:i})});let s=`/api/whatsapp-reader/avatar?session_key=${encodeURIComponent(n)}&accountId=${encodeURIComponent(e)}&jid=${encodeURIComponent(t)}`;return(0,T.jsx)(`span`,{className:r,"aria-hidden":!0,children:(0,T.jsx)(`img`,{className:`wa-avatar-img`,src:s,alt:``,onError:()=>o(t)})})}function q(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function J(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}var ge=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],_e=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Y(e){let t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`);return`${e.getFullYear()}-${t}-${n}`}function X(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:Y(t)}function ve(e,t=new Date){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=Y(n);if(r===Y(t))return`Today`;let i=new Date(t);return i.setDate(i.getDate()-1),r===Y(i)?`Yesterday`:`${ge[n.getDay()]} ${n.getDate()} ${_e[n.getMonth()]} ${n.getFullYear()}`}function ye(e){return e.kind===`turn`?e.turn.ts:e.entry.ts}function be({ts:e}){return(0,T.jsx)(`div`,{className:`day-divider`,role:`separator`,children:(0,T.jsx)(`span`,{className:`day-divider-label`,children:ve(e)})})}function xe(){return(0,T.jsx)(`div`,{className:`session-divider`,role:`separator`,children:(0,T.jsx)(`span`,{className:`session-divider-label`,children:`Conversation continued`})})}function Z({label:e,ts:t,colour:n}){return(0,T.jsxs)(`div`,{className:`wa-turn-head`,children:[(0,T.jsx)(`span`,{className:`wa-who`,style:n?{color:n}:void 0,children:e}),(0,T.jsx)(`time`,{className:`wa-time`,children:q(t)})]})}function Se({turn:e}){let[t,n]=(0,w.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,T.jsxs)(`div`,{className:i,children:[(0,T.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":t,onClick:()=>n(e=>!e),children:[(0,T.jsx)(`span`,{className:`wa-chevron`,children:t?`▾`:`▸`}),(0,T.jsx)(`span`,{className:`wa-who`,children:a}),(0,T.jsx)(`time`,{className:`wa-time`,children:q(e.ts)})]}),t&&(0,T.jsx)(`pre`,{className:`wa-code`,children:o})]})}function Ce({entry:e,sessionId:t,sessionKey:n}){let[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(null),s=()=>{let s=!r;if(i(s),s&&a===null&&typeof fetch==`function`){let r=`/api/session-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,T.jsxs)(`div`,{className:`wa-turn wa-turn-directive`,children:[(0,T.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":r,onClick:s,children:[(0,T.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,T.jsxs)(`span`,{className:`wa-who`,children:[`⚙ directive injected (`,e.len,` B)`]}),(0,T.jsx)(`time`,{className:`wa-time`,children:q(e.ts)})]}),r&&(0,T.jsx)(`pre`,{className:`wa-code`,children:a??`Loading…`})]})}function we(e){return`text`in e&&typeof e.text==`string`?e.text:``}function Te(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,T.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,T.jsx)(T.Fragment,{children:a})}var Q={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 Ee(e,t,n){switch(e.kind){case`operator-inbound`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-in`,children:[(0,T.jsx)(Z,{label:`Operator${A(e.source)}`,ts:e.ts}),e.text&&(0,T.jsx)(`p`,{className:`wa-body`,children:e.text}),e.attachments&&e.attachments.length>0&&(0,T.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,T.jsx)(V,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:I(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:Q},t))})]},t);case`operator-typed`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-in wa-turn-typed`,children:[(0,T.jsx)(Z,{label:`Operator (web)`,ts:e.ts}),(0,T.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-text`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-think`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,T.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,T.jsx)(`p`,{className:`wa-body`,children:e.text})]},t);case`agent-reply-document`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,T.jsxs)(`p`,{className:`wa-doc`,children:[(0,T.jsx)(b,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,`sent document(s): `,e.files.map(J).join(`, `)]}),e.caption&&(0,T.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`agent-file`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),e.files.map((t,r)=>{let i=J(t),a=e.downloads?.[r];return(0,T.jsx)(V,{expandable:!0,filename:i,href:a?F(a,n.sessionId,n.sessionKey,P.test(i)?`inline`:void 0):void 0,telemetry:Q},r)}),e.caption&&(0,T.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`,s=n.groupThread&&!e.fromMe&&n.storeAccountId&&e.senderJid&&a(e.senderJid)?e.senderJid:null;return(0,T.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${r?` wa-op-manual`:``}${s?` wa-turn-has-avatar`:``}`,children:[s&&(0,T.jsx)(K,{accountId:n.storeAccountId,jid:s,sessionKey:n.sessionKey,className:`wa-bubble-avatar`,size:14}),n.onReplyTo&&e.msgKeyId&&(0,T.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,T.jsx)(S,{size:14})}),n.showCopy&&e.text&&(0,T.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,T.jsx)(c,{size:14})}),e.quoted&&(0,T.jsxs)(`div`,{className:`wa-quoted`,children:[(0,T.jsx)(`span`,{className:`wa-quoted-who`,children:e.quoted.fromMe?`You`:e.quoted.sender??`Contact`}),(0,T.jsx)(`span`,{className:`wa-quoted-body`,children:e.quoted.body||`Message`})]}),(0,T.jsx)(Z,{label:i,ts:e.ts,colour:n.groupThread&&!e.fromMe?G(e.senderTelephone||e.senderName||``):void 0}),e.text&&(0,T.jsx)(`p`,{className:`wa-body`,children:Te(e.text,n.highlight)}),e.attachments&&e.attachments.length>0&&(0,T.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,T.jsx)(V,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:I(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:Q},t))}),e.reactions&&e.reactions.length>0&&(0,T.jsx)(`div`,{className:`wa-reactions`,children:e.reactions.map((e,t)=>(0,T.jsx)(`span`,{className:`wa-reaction`,title:e.reactorName??void 0,children:e.emoji},t))}),(0,T.jsxs)(`span`,{className:`wa-bubble-meta`,children:[r&&(0,T.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,T.jsx)(`time`,{className:`wa-bubble-time`,children:q(e.ts)}),e.fromMe&&(0,T.jsx)(_,{size:14,className:`wa-bubble-tick`,"aria-hidden":!0})]})]},t)}case`session-continued`:return(0,T.jsx)(xe,{},t);case`harness-internal`:return null;case`tool-call`:case`tool-result`:return(0,T.jsx)(Se,{turn:e},t);case`agent-error`:return(0,T.jsxs)(`div`,{className:`wa-turn wa-turn-error`,role:`alert`,children:[(0,T.jsx)(Z,{label:`Agent`,ts:e.ts}),(0,T.jsx)(`p`,{className:`wa-body wa-error-body`,children:k(e.code,`admin`)}),e.code===`agent_error`&&e.raw&&(0,T.jsx)(`pre`,{className:`wa-code`,children:e.raw})]},t)}}function $(e,t,n,r=`admin`,i,a,o,s,c){let l={sessionId:t,sessionKey:n,audience:r,highlight:i,onReplyTo:a,showCopy:o,groupThread:s,storeAccountId:c},u=[],d=null;return e.forEach((e,r)=>{let i=ye(e),a=X(i);a!==null&&a!==d&&(u.push((0,T.jsx)(be,{ts:i},`day-${r}`)),d=a),u.push(e.kind===`turn`?Ee(e.turn,r,l):(0,T.jsx)(Ce,{entry:e.entry,sessionId:t,sessionKey:n},r))}),u}function De(e){return e.filter(e=>e.kind===`turn`&&me.has(e.turn.kind)&&!(e.turn.kind===`operator-inbound`&&e.turn.scheduled))}var Oe=(0,w.memo)(function({sessionId:e,projectDir:t,sessionKey:n,renderItems:r=$,clean:i,onToggleClean:a,forceDeliveredOnly:o=!1,streamEndpoint:s=`/api/session-reader/stream`,suppressDirectives:c=!1,tail:l=null,resetKey:u,onTurnsChange:d,onActivityChange:f,store:p,search:m,onReplyTo:h,groupThread:g=!1}){let _=!!p,v=ue(e,t,n,s,u,!_),y=de(p?.accountId??``,p?.remoteJid??``,n,_),{turns:b,status:x}=_?{turns:y.turns,status:y.status}:{turns:v.turns,status:v.status},S=_?null:v.subagentActivity;(0,w.useEffect)(()=>{f?.(S)},[S,f]),(0,w.useEffect)(()=>{d?.(b.length)},[b.length,d]);let C=fe(b,pe(e,n,!c)),D=a==null?!1:!!i,O=o||D?De(C):C,k=(m??``).trim().toLowerCase(),A=k.length>0,j=A?O.filter(e=>e.kind===`turn`&&we(e.turn).toLowerCase().includes(k)):O,M=A?O.filter(e=>e.kind===`turn`).length:0;return(0,w.useEffect)(()=>{A&&console.info(`[operator-ui] op=wa-search q=${k} matches=${j.length} ofTurns=${M}`)},[k,A,j.length,M]),(0,w.useEffect)(()=>{if(!g||!_)return;let e=b.filter(e=>e.kind===`whatsapp-persisted`&&!e.fromMe);if(e.length===0)return;let t=new Set(e.map(e=>e.senderTelephone||e.senderName||``)),n=new Set(Array.from(t,e=>G(e))),r=new Set(e.filter(e=>!e.senderTelephone).map(e=>e.senderName??``)).size;console.info(`[operator-ui] op=wa-sender-palette convo=${(p?.remoteJid??``).slice(0,8)} senders=${t.size} distinct=${n.size} unkeyed=${r}`)},[g,_,b,p?.remoteJid]),(0,T.jsxs)(E,{repinSignals:[b,D,A],tail:l,children:[x===`error`&&(0,T.jsx)(`div`,{className:`wa-reader-error`,children:`Stream disconnected.`}),!A&&b.length===0&&x===`open`&&(0,T.jsx)(`div`,{className:`wa-reader-placeholder`,children:`No messages in this conversation yet.`}),A&&j.length===0&&(0,T.jsxs)(`div`,{className:`wa-reader-placeholder`,children:[`No matches for "`,m,`".`]}),_?$(j,e,n,`admin`,m,h,!0,g,p?.accountId):r(O,e,n)]})});function ke(e,t){let n=e.split(`;`)[0].trim().toLowerCase();return t.has(n)}var Ae=[`audio/ogg;codecs=opus`,`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`];function je(){for(let e of Ae)if(MediaRecorder.isTypeSupported(e))return e;return``}function Me(e){return e.split(`;`)[0]}async function Ne(){return typeof navigator>`u`||!navigator.mediaDevices?.enumerateDevices?[]:(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)}function Pe(e){let[t,n]=(0,w.useState)(`idle`),[r,i]=(0,w.useState)(0),[a,o]=(0,w.useState)(null),[s,c]=(0,w.useState)(null),l=(0,w.useRef)(null),u=(0,w.useRef)(null),d=(0,w.useRef)([]),f=(0,w.useRef)(``),p=(0,w.useRef)(null),m=(0,w.useRef)(0),h=(0,w.useRef)(0),g=(0,w.useRef)(null),_=(0,w.useRef)(null),v=(0,w.useRef)(0),y=(0,w.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,w.useEffect)(()=>y,[y]);let b=(0,w.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,w.useCallback)(()=>{p.current&&=(clearInterval(p.current),null);let e=Date.now()-m.current;h.current+=e},[]),S=(0,w.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()},[]),C=(0,w.useCallback)(()=>{v.current&&=(cancelAnimationFrame(v.current),0)},[]),T=e?.onResult,E=(0,w.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=je();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(),S(),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,S,T]),D=(0,w.useCallback)(()=>{let e=l.current;e&&(t===`recording`&&e.state===`recording`?(e.pause(),x(),C(),n(`paused`)):t===`paused`&&e.state===`paused`&&(e.resume(),b(),S(),n(`recording`)))},[t,x,b,S,C]),O=(0,w.useCallback)(()=>{t!==`recording`&&t!==`paused`||(y(),n(`idle`),i(0),o(null))},[t,y]),k=(0,w.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(),C(),new Promise(t=>{e.onstop=()=>{let r=f.current||e.mimeType||`audio/webm`,a=new Blob(d.current,{type:Me(r)});y(),n(`idle`),i(0),o(null),t(a.size>0?a:null)},e.stop()}))},[t,O,x,C,y]);return(0,w.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{b as C,h as D,p as E,m as O,x as S,v as T,I as _,Ce as a,k as b,J as c,ye as d,K as f,P as g,N as h,be as i,g as k,X as l,B as m,Pe as n,xe as o,V as p,ke as r,Oe as s,Ne as t,q as u,F as v,y as w,C as x,re as y};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{L as e}from"./useSubAccountSwitcher-
|
|
1
|
+
import{L as e}from"./useSubAccountSwitcher-BEwQMRMo.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,12 +5,12 @@
|
|
|
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-Bj8oTG5R.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/CdpScreencastSurface-
|
|
13
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/CdpScreencastSurface-BbekDUFw.js">
|
|
13
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
14
14
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
@@ -5,14 +5,14 @@
|
|
|
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-CrkSY8U7.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-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-CdUzxzeB.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-right-CKGwd-M0.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/clock-Cf8Oe9qi.js">
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
16
16
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
@@ -5,21 +5,21 @@
|
|
|
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-Bvxoni2e.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-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-3YNEDsJZ.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-
|
|
22
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-B6fX_19a.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-DkQzDv-g.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-CiDOh8PG.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BvIRgs7W.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-CdUzxzeB.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-CP1KIrJV.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-DPw0vXC0.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/wrench-BNBtwT2p.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CPVUAwb8.js">
|
|
22
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
23
23
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
24
24
|
</head>
|
|
25
25
|
<body>
|
|
@@ -5,20 +5,20 @@
|
|
|
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-DF0Pstdp.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-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-CgP17xHK.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-3YNEDsJZ.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/file-download-
|
|
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/triangle-alert-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
21
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-B6fX_19a.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-DkQzDv-g.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-CiDOh8PG.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/file-download-Di_s0_4w.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-CdUzxzeB.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-CP1KIrJV.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-vAaSDhVq.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CNJl3tWT.js">
|
|
21
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
22
22
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
23
23
|
</head>
|
|
24
24
|
<body>
|
|
@@ -5,16 +5,16 @@
|
|
|
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-BCMscnCV.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-
|
|
17
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-CgP17xHK.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BvIRgs7W.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-CdUzxzeB.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-DkQzDv-g.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-DPw0vXC0.js">
|
|
17
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
18
18
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
@@ -5,24 +5,24 @@
|
|
|
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-svtCmBPk.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-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-CgP17xHK.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-3YNEDsJZ.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/CdpScreencastSurface-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/file-download-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/file-text-
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
24
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-right-
|
|
25
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-B6fX_19a.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-DkQzDv-g.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-CiDOh8PG.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/CdpScreencastSurface-BbekDUFw.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-7Czw3MAC.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/file-download-Di_s0_4w.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-CdUzxzeB.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-CP1KIrJV.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-vAaSDhVq.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CNJl3tWT.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-right-CKGwd-M0.js">
|
|
25
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
26
26
|
<link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
|
|
27
27
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
28
28
|
</head>
|
|
@@ -5,23 +5,23 @@
|
|
|
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-CLbCar9e.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-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-3YNEDsJZ.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/CdpScreencastSurface-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/file-text-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/assets/wrench-
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
24
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-B6fX_19a.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-DkQzDv-g.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-CiDOh8PG.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/CdpScreencastSurface-BbekDUFw.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-7Czw3MAC.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BvIRgs7W.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-CdUzxzeB.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-CP1KIrJV.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-DPw0vXC0.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/wrench-BNBtwT2p.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CPVUAwb8.js">
|
|
24
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
25
25
|
<link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
|
|
26
26
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
27
27
|
</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/public-
|
|
8
|
+
<script type="module" crossorigin src="/assets/public-DQea3Ybz.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-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-3YNEDsJZ.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-
|
|
22
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-B6fX_19a.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/maximize-2-DkQzDv-g.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-CiDOh8PG.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BvIRgs7W.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-CdUzxzeB.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-CP1KIrJV.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-DPw0vXC0.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/wrench-BNBtwT2p.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CPVUAwb8.js">
|
|
22
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
23
23
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
24
24
|
</head>
|
|
25
25
|
<body class="public-surface">
|
|
@@ -5,14 +5,14 @@
|
|
|
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-CwiiYpfK.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-download-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/clock-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/wrench-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/file-download-Di_s0_4w.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/clock-Cf8Oe9qi.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/wrench-BNBtwT2p.js">
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
16
16
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
@@ -5,12 +5,12 @@
|
|
|
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-0FOjKUM-.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-
|
|
13
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/file-text-CP1KIrJV.js">
|
|
13
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
14
14
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
@@ -5,13 +5,13 @@
|
|
|
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-BUVsPEGm.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-
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-BEwQMRMo.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-D5GApZ_n.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/time-entry-format-B6fX_19a.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-DPw0vXC0.js">
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-DM5Y9eio.css">
|
|
15
15
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
package/payload/server/server.js
CHANGED
|
@@ -183,7 +183,7 @@ import {
|
|
|
183
183
|
waitForConnection,
|
|
184
184
|
warnNonUuidAccount,
|
|
185
185
|
writeChatMetadataMerged
|
|
186
|
-
} from "./chunk-
|
|
186
|
+
} from "./chunk-2YMGNYA3.js";
|
|
187
187
|
import {
|
|
188
188
|
ACCOUNTS_DIR,
|
|
189
189
|
BIN_DIR,
|
|
@@ -4999,7 +4999,7 @@ async function defaultHttpGet(url) {
|
|
|
4999
4999
|
}
|
|
5000
5000
|
}
|
|
5001
5001
|
async function defaultResolve(accountId) {
|
|
5002
|
-
const { resolveSocket: resolveSocket2 } = await import("./manager-
|
|
5002
|
+
const { resolveSocket: resolveSocket2 } = await import("./manager-XPRN5UF5.js");
|
|
5003
5003
|
return resolveSocket2(accountId);
|
|
5004
5004
|
}
|
|
5005
5005
|
async function fetchAvatar(accountId, jid, deps = {}) {
|
|
@@ -22720,7 +22720,8 @@ var ROUTINE_COLS = `e.eventId AS eventId, e.name AS name, e.eventStatus AS event
|
|
|
22720
22720
|
e.timezone AS timezone, e.startDate AS startDate,
|
|
22721
22721
|
e.agentChannel AS agentChannel, e.agentDestination AS agentDestination, e.agentPrompt AS agentPrompt,
|
|
22722
22722
|
e.actionPlugin AS actionPlugin, e.actionTool AS actionTool, e.actionArgs AS actionArgs,
|
|
22723
|
-
e.notes AS notes, e.
|
|
22723
|
+
e.notes AS notes, e.routineDescription AS routineDescription,
|
|
22724
|
+
e.lastDispatchResult AS lastDispatchResult, e.lastDispatchAt AS lastDispatchAt,
|
|
22724
22725
|
e.suspendedInBulk AS suspendedInBulk`;
|
|
22725
22726
|
function mapRoutine(r) {
|
|
22726
22727
|
const g = (k) => r.get(k) ?? null;
|
|
@@ -22740,11 +22741,16 @@ function mapRoutine(r) {
|
|
|
22740
22741
|
actionTool: g("actionTool"),
|
|
22741
22742
|
actionArgs: g("actionArgs"),
|
|
22742
22743
|
notes: g("notes"),
|
|
22744
|
+
// Task 2214 — read-only on the wire. Deliberately absent from the PATCH
|
|
22745
|
+
// field set below: the roster is its only writer, so a PATCH that accepted
|
|
22746
|
+
// it would be discarded by the next seed, and silently accepting an edit
|
|
22747
|
+
// that the next upgrade throws away is worse than refusing it.
|
|
22748
|
+
routineDescription: g("routineDescription"),
|
|
22743
22749
|
lastDispatchResult: g("lastDispatchResult"),
|
|
22744
22750
|
lastDispatchAt: g("lastDispatchAt"),
|
|
22745
22751
|
// Task 2106 — on the wire so the page can gate Resume all on the set the
|
|
22746
22752
|
// server will actually act on. Without it the control reads `suspended`,
|
|
22747
|
-
// which includes the
|
|
22753
|
+
// which includes the thirteen seeded roster rows on every fresh install, and
|
|
22748
22754
|
// pressing it reports restoring nothing.
|
|
22749
22755
|
suspendedInBulk: r.get("suspendedInBulk") === true
|
|
22750
22756
|
};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|