@rubytech/create-maxy-code 0.1.535 → 0.1.536
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +27 -9
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +7 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +20 -1
- package/payload/platform/plugins/docs/references/calendar-booking.md +6 -7
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js +5 -2
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +6 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +83 -6
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +39 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +18 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +55 -23
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/public-allowlist.d.ts +19 -0
- package/payload/platform/services/claude-session-manager/dist/public-allowlist.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/public-allowlist.js +23 -0
- package/payload/platform/services/claude-session-manager/dist/public-allowlist.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/public-spawn-session.d.ts +23 -0
- package/payload/platform/services/claude-session-manager/dist/public-spawn-session.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/public-spawn-session.js +34 -0
- package/payload/platform/services/claude-session-manager/dist/public-spawn-session.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/public-surface-audit.d.ts +44 -0
- package/payload/platform/services/claude-session-manager/dist/public-surface-audit.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/public-surface-audit.js +110 -0
- package/payload/platform/services/claude-session-manager/dist/public-surface-audit.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.d.ts +36 -0
- package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.js +49 -0
- package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.js.map +1 -0
- package/payload/server/{chunk-4QCYFTAI.js → chunk-44Z4ZFYS.js} +2 -0
- package/payload/server/{chunk-DLG7XSLA.js → chunk-IALJPXIO.js} +70 -3
- package/payload/server/{manager-ZNHQQCED.js → manager-AJSPM6X2.js} +1 -1
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/activity.html +5 -5
- package/payload/server/public/agents.html +4 -4
- package/payload/server/public/assets/AdminLoginScreens-BpHVvUsH.js +1 -0
- package/payload/server/public/assets/AdminLoginScreens-BpHVvUsH.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-BpHVvUsH.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-BT7VQIu7.js +2 -0
- package/payload/server/public/assets/AdminShell-BT7VQIu7.js.br +0 -0
- package/payload/server/public/assets/AdminShell-BT7VQIu7.js.gz +0 -0
- package/payload/server/public/assets/{activity-DKeRUjQ9.js → activity-B3WEyiTh.js} +1 -1
- package/payload/server/public/assets/activity-B3WEyiTh.js.br +0 -0
- package/payload/server/public/assets/activity-B3WEyiTh.js.gz +0 -0
- package/payload/server/public/assets/admin-BEKL9Bq_.js +1 -0
- package/payload/server/public/assets/admin-BEKL9Bq_.js.br +0 -0
- package/payload/server/public/assets/admin-BEKL9Bq_.js.gz +0 -0
- package/payload/server/public/assets/{agents-CrR_OMe8.js → agents-CmYDQbdM.js} +1 -1
- package/payload/server/public/assets/agents-CmYDQbdM.js.br +0 -0
- package/payload/server/public/assets/agents-CmYDQbdM.js.gz +0 -0
- package/payload/server/public/assets/{arc-CHoXZR2f.js → arc-DaudCnXg.js} +1 -1
- package/payload/server/public/assets/arc-DaudCnXg.js.br +0 -0
- package/payload/server/public/assets/arc-DaudCnXg.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js +1 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-B8SCI0AR.js → architectureDiagram-Q4EWVU46-Dj9L_JR0.js} +1 -1
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-Dj9L_JR0.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-Dj9L_JR0.js.gz +0 -0
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-CsJmhz5D.js → blockDiagram-DXYQGD6D-BTXKYwrR.js} +1 -1
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-BTXKYwrR.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-BTXKYwrR.js.gz +0 -0
- package/payload/server/public/assets/browser-CP8TnIUm.js +1 -0
- package/payload/server/public/assets/browser-CP8TnIUm.js.br +0 -0
- package/payload/server/public/assets/browser-CP8TnIUm.js.gz +0 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CzaSNqcs.js → c4Diagram-AHTNJAMY-BN7XeOWV.js} +1 -1
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-BN7XeOWV.js.br +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-BN7XeOWV.js.gz +0 -0
- package/payload/server/public/assets/calendar-DM6Bl8Ra.js +1 -0
- package/payload/server/public/assets/calendar-DM6Bl8Ra.js.br +0 -0
- package/payload/server/public/assets/calendar-DM6Bl8Ra.js.gz +0 -0
- package/payload/server/public/assets/channel-D08XWP9e.js +1 -0
- package/payload/server/public/assets/chat-BJWdNwCN.js +1 -0
- package/payload/server/public/assets/chat-BJWdNwCN.js.br +2 -0
- package/payload/server/public/assets/chat-BJWdNwCN.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-DU8Es8Xq.js +1 -0
- package/payload/server/public/assets/chevron-right-D8HTOkyy.js +1 -0
- package/payload/server/public/assets/chevron-right-D8HTOkyy.js.br +0 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-DAN3KCZc.js → chunk-2KRD3SAO-BwEVlnxo.js} +1 -1
- package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.gz +0 -0
- package/payload/server/public/assets/{chunk-336JU56O-Dm-0_lIT.js → chunk-336JU56O-DR5EUh9D.js} +2 -2
- package/payload/server/public/assets/chunk-336JU56O-DR5EUh9D.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-DR5EUh9D.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-YPE0DZOq.js +1 -0
- package/payload/server/public/assets/chunk-426QAEUC-YPE0DZOq.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-YPE0DZOq.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-C2l9bAlo.js → chunk-4BX2VUAB-C5p3xTC6.js} +1 -1
- package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4TB4RGXK-BMXDzU09.js → chunk-4TB4RGXK-CqrBvvGI.js} +1 -1
- package/payload/server/public/assets/chunk-4TB4RGXK-CqrBvvGI.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-CqrBvvGI.js.gz +0 -0
- package/payload/server/public/assets/{chunk-55IACEB6-CbMYAZon.js → chunk-55IACEB6-DDU_m1ra.js} +1 -1
- package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5FUZZQ4R-DjdsuxLA.js → chunk-5FUZZQ4R-B21kX6ld.js} +1 -1
- package/payload/server/public/assets/chunk-5FUZZQ4R-B21kX6ld.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-B21kX6ld.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5PVQY5BW-CGSBzsF6.js → chunk-5PVQY5BW-CYusrVbq.js} +1 -1
- package/payload/server/public/assets/chunk-5PVQY5BW-CYusrVbq.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-CYusrVbq.js.gz +0 -0
- package/payload/server/public/assets/{chunk-67CJDMHE-ClOLWser.js → chunk-67CJDMHE-9W0Qv0jm.js} +1 -1
- package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.br +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.gz +0 -0
- package/payload/server/public/assets/{chunk-7N4EOEYR-BzC1dzY0.js → chunk-7N4EOEYR-B3gqydR3.js} +1 -1
- package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.br +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.gz +0 -0
- package/payload/server/public/assets/{chunk-AA7GKIK3-R_pjI1kw.js → chunk-AA7GKIK3-DW8a-2NK.js} +1 -1
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.br +4 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
- package/payload/server/public/assets/{chunk-BSJP7CBP-D2KRAq3U.js → chunk-BSJP7CBP-DqXIO_5R.js} +1 -1
- package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.gz +0 -0
- package/payload/server/public/assets/{chunk-CIAEETIT-BPGWtrKR.js → chunk-CIAEETIT-BMJfgj2u.js} +1 -1
- package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.gz +0 -0
- package/payload/server/public/assets/{chunk-EDXVE4YY-tqt7wueu.js → chunk-EDXVE4YY-CyjTyMkv.js} +1 -1
- package/payload/server/public/assets/chunk-EDXVE4YY-CyjTyMkv.js.br +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-CyjTyMkv.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ENJZ2VHE-DJG3cA6E.js → chunk-ENJZ2VHE-B-k8uOTF.js} +1 -1
- package/payload/server/public/assets/chunk-ENJZ2VHE-B-k8uOTF.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-B-k8uOTF.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FMBD7UC4-DO1xgCDf.js → chunk-FMBD7UC4-CdPjwbtf.js} +1 -1
- package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FOC6F5B3-BhWAbCUG.js → chunk-FOC6F5B3-Dl6l1KAh.js} +1 -1
- package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ICPOFSXX-BhUzt35c.js → chunk-ICPOFSXX-CKQWnR1l.js} +2 -2
- package/payload/server/public/assets/chunk-ICPOFSXX-CKQWnR1l.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-CKQWnR1l.js.gz +0 -0
- package/payload/server/public/assets/{chunk-K5T4RW27-Boj-qHrX.js → chunk-K5T4RW27--g29_wjW.js} +1 -1
- package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.gz +0 -0
- package/payload/server/public/assets/{chunk-KGLVRYIC-3cBRDk1b.js → chunk-KGLVRYIC-CI77ENeO.js} +1 -1
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.br +3 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
- package/payload/server/public/assets/{chunk-LIHQZDEY-CgkLKaII.js → chunk-LIHQZDEY-CE-XByg6.js} +1 -1
- package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ORNJ4GCN-Dl449r_k.js → chunk-ORNJ4GCN-DkjJQQSm.js} +1 -1
- package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.gz +0 -0
- package/payload/server/public/assets/{chunk-OYMX7WX6-Dzkj67n6.js → chunk-OYMX7WX6-Dis40FU5.js} +1 -1
- package/payload/server/public/assets/chunk-OYMX7WX6-Dis40FU5.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Dis40FU5.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js +1 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.gz +0 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-Dyz9Kbir.js → chunk-U2HBQHQK-DT3NLMic.js} +1 -1
- package/payload/server/public/assets/chunk-U2HBQHQK-DT3NLMic.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-DT3NLMic.js.gz +0 -0
- package/payload/server/public/assets/{chunk-X2U36JSP-ag0VVCw6.js → chunk-X2U36JSP-Dxaab1tD.js} +1 -1
- package/payload/server/public/assets/chunk-X2U36JSP-Dxaab1tD.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-Dxaab1tD.js.gz +0 -0
- package/payload/server/public/assets/{chunk-XPW4576I-B-vhDYPE.js → chunk-XPW4576I-DtqJwn2x.js} +1 -1
- package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.gz +0 -0
- package/payload/server/public/assets/{chunk-YZCP3GAM-C4COviPb.js → chunk-YZCP3GAM-CEEcRrOH.js} +1 -1
- package/payload/server/public/assets/chunk-YZCP3GAM-CEEcRrOH.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-CEEcRrOH.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ZZ45TVLE-8dGsCp5b.js → chunk-ZZ45TVLE-CVhqjM4L.js} +1 -1
- package/payload/server/public/assets/chunk-ZZ45TVLE-CVhqjM4L.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-CVhqjM4L.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BPY9jtfT.js +1 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BPY9jtfT.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BPY9jtfT.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CLgDbwDp.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CLgDbwDp.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CLgDbwDp.js.gz +0 -0
- package/payload/server/public/assets/clock-BdNuUyUU.js +1 -0
- package/payload/server/public/assets/clock-BdNuUyUU.js.br +0 -0
- package/payload/server/public/assets/clock-BdNuUyUU.js.gz +0 -0
- package/payload/server/public/assets/clone-B6yMH1PX.js +1 -0
- package/payload/server/public/assets/clone-B6yMH1PX.js.br +0 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-qM4Q4TuE.js → cose-bilkent-S5V4N54A-kEHVkDNn.js} +1 -1
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.gz +0 -0
- package/payload/server/public/assets/{dagre-DRvHdusQ.js → dagre-BgQxtxH1.js} +1 -1
- package/payload/server/public/assets/dagre-BgQxtxH1.js.br +0 -0
- package/payload/server/public/assets/dagre-BgQxtxH1.js.gz +0 -0
- package/payload/server/public/assets/{dagre-KV5264BT-CGqSVVTn.js → dagre-KV5264BT-CgxwoTcv.js} +1 -1
- package/payload/server/public/assets/dagre-KV5264BT-CgxwoTcv.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-CgxwoTcv.js.gz +0 -0
- package/payload/server/public/assets/data-EjLIuy-W.js +1 -0
- package/payload/server/public/assets/data-EjLIuy-W.js.br +0 -0
- package/payload/server/public/assets/data-EjLIuy-W.js.gz +0 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-DfFgeApz.js → diagram-5BDNPKRD-MEZ1cQGO.js} +1 -1
- package/payload/server/public/assets/diagram-5BDNPKRD-MEZ1cQGO.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-MEZ1cQGO.js.gz +0 -0
- package/payload/server/public/assets/{diagram-G4DWMVQ6-DPXc3Q8e.js → diagram-G4DWMVQ6-DbZg9hWP.js} +1 -1
- package/payload/server/public/assets/diagram-G4DWMVQ6-DbZg9hWP.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DbZg9hWP.js.gz +0 -0
- package/payload/server/public/assets/{diagram-MMDJMWI5-V8RCddvy.js → diagram-MMDJMWI5-Bb1y8DFy.js} +1 -1
- package/payload/server/public/assets/diagram-MMDJMWI5-Bb1y8DFy.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-Bb1y8DFy.js.gz +0 -0
- package/payload/server/public/assets/{diagram-TYMM5635-CrvfIf-m.js → diagram-TYMM5635-tbStCw5U.js} +1 -1
- package/payload/server/public/assets/diagram-TYMM5635-tbStCw5U.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-tbStCw5U.js.gz +0 -0
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-DClMgmBB.js → erDiagram-SMLLAGMA-ClEFo_Bw.js} +1 -1
- package/payload/server/public/assets/erDiagram-SMLLAGMA-ClEFo_Bw.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-ClEFo_Bw.js.gz +0 -0
- package/payload/server/public/assets/file-download-DbNIjWiK.js +1 -0
- package/payload/server/public/assets/file-download-DbNIjWiK.js.br +0 -0
- package/payload/server/public/assets/file-download-DbNIjWiK.js.gz +0 -0
- package/payload/server/public/assets/{file-text-5osg-EVb.js → file-text-lsHlk4lR.js} +1 -1
- package/payload/server/public/assets/file-text-lsHlk4lR.js.br +0 -0
- package/payload/server/public/assets/file-text-lsHlk4lR.js.gz +0 -0
- package/payload/server/public/assets/{flatten-UdUTbm8v.js → flatten-Bu-b1uTY.js} +1 -1
- package/payload/server/public/assets/flatten-Bu-b1uTY.js.br +0 -0
- package/payload/server/public/assets/flatten-Bu-b1uTY.js.gz +0 -0
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-D29Ou09P.js → flowDiagram-DWJPFMVM-9yr262Ji.js} +1 -1
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-9yr262Ji.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-9yr262Ji.js.gz +0 -0
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-CoAK7W_V.js → ganttDiagram-T4ZO3ILL-ZCSA0DtG.js} +1 -1
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-ZCSA0DtG.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-ZCSA0DtG.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js +1 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DMEc_1aX.js → gitGraphDiagram-UUTBAWPF-0KvpzpaU.js} +1 -1
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-0KvpzpaU.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-0KvpzpaU.js.gz +0 -0
- package/payload/server/public/assets/{graph-CAUo1OTY.js → graph-B0awsgVj.js} +3 -3
- package/payload/server/public/assets/graph-B0awsgVj.js.br +0 -0
- package/payload/server/public/assets/graph-B0awsgVj.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-TJ-3ljQo.js → graph-labels-Ci5Jz1oY.js} +1 -1
- package/payload/server/public/assets/graph-labels-Ci5Jz1oY.js.br +0 -0
- package/payload/server/public/assets/graph-labels-Ci5Jz1oY.js.gz +0 -0
- package/payload/server/public/assets/{graphlib-ihSLgqUG.js → graphlib-B3SsCJOd.js} +1 -1
- package/payload/server/public/assets/graphlib-B3SsCJOd.js.br +0 -0
- package/payload/server/public/assets/graphlib-B3SsCJOd.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js +1 -0
- package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-B607bZBJ.js +2 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-B607bZBJ.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-B607bZBJ.js.gz +0 -0
- package/payload/server/public/assets/{isEmpty-DY_Xp9Na.js → isEmpty-CjH0UASp.js} +1 -1
- package/payload/server/public/assets/isEmpty-CjH0UASp.js.br +0 -0
- package/payload/server/public/assets/isEmpty-CjH0UASp.js.gz +0 -0
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-w8fVIbxy.js → ishikawaDiagram-UXIWVN3A-DsDoNemz.js} +1 -1
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-DsDoNemz.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-DsDoNemz.js.gz +0 -0
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-BRTPKDT5.js → journeyDiagram-VCZTEJTY-xyayGhw3.js} +1 -1
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-xyayGhw3.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-xyayGhw3.js.gz +0 -0
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Ls3VaFZ_.js → kanban-definition-6JOO6SKY-DuV3Go_1.js} +1 -1
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-DuV3Go_1.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-DuV3Go_1.js.gz +0 -0
- package/payload/server/public/assets/{line-BwhAIh8u.js → line-Cpb8GRkf.js} +1 -1
- package/payload/server/public/assets/line-Cpb8GRkf.js.br +0 -0
- package/payload/server/public/assets/line-Cpb8GRkf.js.gz +0 -0
- package/payload/server/public/assets/{linear-USiZPFN4.js → linear-l39GooQ5.js} +1 -1
- package/payload/server/public/assets/linear-l39GooQ5.js.br +0 -0
- package/payload/server/public/assets/linear-l39GooQ5.js.gz +0 -0
- package/payload/server/public/assets/{maximize-2-S9W3q1O4.js → maximize-2-DRndYysc.js} +1 -1
- package/payload/server/public/assets/maximize-2-DRndYysc.js.br +0 -0
- package/payload/server/public/assets/maximize-2-DRndYysc.js.gz +0 -0
- package/payload/server/public/assets/{mermaid-parser.core-Bq--iC2w.js → mermaid-parser.core-9hkxt3j1.js} +2 -2
- package/payload/server/public/assets/mermaid-parser.core-9hkxt3j1.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-9hkxt3j1.js.gz +0 -0
- package/payload/server/public/assets/{mermaid.core-oYX-FxVa.js → mermaid.core-iR6TQesD.js} +3 -3
- package/payload/server/public/assets/mermaid.core-iR6TQesD.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-iR6TQesD.js.gz +0 -0
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-ByZjL4Bs.js → mindmap-definition-QFDTVHPH-LCKhTYzs.js} +1 -1
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-LCKhTYzs.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-LCKhTYzs.js.gz +0 -0
- package/payload/server/public/assets/operator-tiI-kz6v.js +1 -0
- package/payload/server/public/assets/operator-tiI-kz6v.js.br +0 -0
- package/payload/server/public/assets/operator-tiI-kz6v.js.gz +0 -0
- package/payload/server/public/assets/{ordinal-gnpqfIHn.js → ordinal-D6D6WcTC.js} +1 -1
- package/payload/server/public/assets/ordinal-D6D6WcTC.js.br +0 -0
- package/payload/server/public/assets/ordinal-D6D6WcTC.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js +1 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
- package/payload/server/public/assets/{page-BUFW-PWF.js → page-RkwjxAgF.js} +6 -6
- package/payload/server/public/assets/page-RkwjxAgF.js.br +0 -0
- package/payload/server/public/assets/page-RkwjxAgF.js.gz +0 -0
- package/payload/server/public/assets/page-ZG7SXMO0.js +1 -0
- package/payload/server/public/assets/page-ZG7SXMO0.js.br +0 -0
- package/payload/server/public/assets/page-ZG7SXMO0.js.gz +0 -0
- package/payload/server/public/assets/{pdf-render-gEryZmeC.js → pdf-render-DanMu_cf.js} +1 -1
- package/payload/server/public/assets/pdf-render-DanMu_cf.js.br +0 -0
- package/payload/server/public/assets/pdf-render-DanMu_cf.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js +1 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-BGFms5bU.js → pieDiagram-DEJITSTG-Oo7wgo0C.js} +1 -1
- package/payload/server/public/assets/pieDiagram-DEJITSTG-Oo7wgo0C.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-Oo7wgo0C.js.gz +0 -0
- package/payload/server/public/assets/{public-Cx2ddU9a.js → public-BNAVdC2B.js} +1 -1
- package/payload/server/public/assets/public-BNAVdC2B.js.br +0 -0
- package/payload/server/public/assets/public-BNAVdC2B.js.gz +0 -0
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-_ymoz8bQ.js → quadrantDiagram-34T5L4WZ-B2hs2ord.js} +1 -1
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B2hs2ord.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B2hs2ord.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js +1 -0
- package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
- package/payload/server/public/assets/{reduce-BvezuHIe.js → reduce-BtXXK8Ma.js} +1 -1
- package/payload/server/public/assets/reduce-BtXXK8Ma.js.br +0 -0
- package/payload/server/public/assets/reduce-BtXXK8Ma.js.gz +0 -0
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-lrOmOxIA.js → requirementDiagram-MS252O5E-B8UkCUzW.js} +1 -1
- package/payload/server/public/assets/requirementDiagram-MS252O5E-B8UkCUzW.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-B8UkCUzW.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-C2qSSBFA.js → rotate-ccw-D6DZb7tR.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-D6DZb7tR.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-D6DZb7tR.js.gz +0 -0
- package/payload/server/public/assets/routines-BVcPovu-.js +2 -0
- package/payload/server/public/assets/routines-BVcPovu-.js.br +0 -0
- package/payload/server/public/assets/routines-BVcPovu-.js.gz +0 -0
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-CdUQThXU.js → sankeyDiagram-XADWPNL6-Cojqqz7t.js} +1 -1
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-Cojqqz7t.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-Cojqqz7t.js.gz +0 -0
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DqnEEldq.js → sequenceDiagram-FGHM5R23-C7ODsPjE.js} +1 -1
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-C7ODsPjE.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-C7ODsPjE.js.gz +0 -0
- package/payload/server/public/assets/{skills-CmsYXVd3.js → skills-9S_nNIpO.js} +1 -1
- package/payload/server/public/assets/skills-9S_nNIpO.js.br +0 -0
- package/payload/server/public/assets/skills-9S_nNIpO.js.gz +0 -0
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-KEdtxqdq.js → stateDiagram-FHFEXIEX-BC8a_P9c.js} +1 -1
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-BC8a_P9c.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-BC8a_P9c.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C7KvMtT5.js +1 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C7KvMtT5.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C7KvMtT5.js.gz +0 -0
- package/payload/server/public/assets/tasks-D-D2efaL.js +3 -0
- package/payload/server/public/assets/tasks-D-D2efaL.js.br +0 -0
- package/payload/server/public/assets/tasks-D-D2efaL.js.gz +0 -0
- package/payload/server/public/assets/{time-entry-format-BD99oR05.js → time-entry-format-CKpHcWWs.js} +1 -1
- package/payload/server/public/assets/time-entry-format-CKpHcWWs.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-CKpHcWWs.js.gz +0 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BRXdCMau.js → timeline-definition-GMOUNBTQ-BMxUC3ri.js} +1 -1
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-BMxUC3ri.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-BMxUC3ri.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js +1 -0
- package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
- package/payload/server/public/assets/{triangle-alert-CuRAK3jk.js → triangle-alert-BcpCZDHe.js} +1 -1
- package/payload/server/public/assets/triangle-alert-BcpCZDHe.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-BcpCZDHe.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-BGzzIsSD.js → useCopyFeedback-DqTnYnz5.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-DqTnYnz5.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-DqTnYnz5.js.gz +0 -0
- package/payload/server/public/assets/{useSubAccountSwitcher-BDQ8Wsdt.css → useSubAccountSwitcher-CYEDydoq.css} +1 -1
- package/payload/server/public/assets/useSubAccountSwitcher-CYEDydoq.css.br +0 -0
- package/payload/server/public/assets/{useSubAccountSwitcher-BDQ8Wsdt.css.gz → useSubAccountSwitcher-CYEDydoq.css.gz} +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-ny9tP8am.js +14 -0
- package/payload/server/public/assets/useSubAccountSwitcher-ny9tP8am.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-ny9tP8am.js.gz +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-fpwWw2VW.js → useVoiceRecorder-DcgtZl-4.js} +2 -2
- package/payload/server/public/assets/useVoiceRecorder-DcgtZl-4.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DcgtZl-4.js.gz +0 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-8nc7NUVQ.js → vennDiagram-DHZGUBPP-BsRGBF0K.js} +1 -1
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-BsRGBF0K.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-BsRGBF0K.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js +1 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-Cjjiap8M.js → wardleyDiagram-NUSXRM2D-oQh9A-Mq.js} +1 -1
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-oQh9A-Mq.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-oQh9A-Mq.js.gz +0 -0
- package/payload/server/public/assets/{wrench-DxSsCrue.js → wrench-DvUj2R3p.js} +1 -1
- package/payload/server/public/assets/wrench-DvUj2R3p.js.br +2 -0
- package/payload/server/public/assets/wrench-DvUj2R3p.js.gz +0 -0
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DEzDNw_i.js → xychartDiagram-5P7HB3ND-0K87OmFI.js} +1 -1
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0K87OmFI.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0K87OmFI.js.gz +0 -0
- package/payload/server/public/browser.html +4 -5
- package/payload/server/public/calendar.html +7 -7
- package/payload/server/public/chat.html +14 -14
- package/payload/server/public/data.html +13 -13
- package/payload/server/public/graph.html +9 -9
- package/payload/server/public/index.html +16 -17
- package/payload/server/public/operator.html +15 -16
- package/payload/server/public/public.html +14 -14
- 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 +513 -96
- package/payload/server/public/assets/AdminLoginScreens-DxjuTFjL.js +0 -1
- package/payload/server/public/assets/AdminLoginScreens-DxjuTFjL.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-DxjuTFjL.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-B6H3J5C2.js +0 -2
- package/payload/server/public/assets/AdminShell-B6H3J5C2.js.br +0 -0
- package/payload/server/public/assets/AdminShell-B6H3J5C2.js.gz +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-BRSv89v-.js +0 -1
- package/payload/server/public/assets/CdpScreencastSurface-BRSv89v-.js.br +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-BRSv89v-.js.gz +0 -0
- package/payload/server/public/assets/activity-DKeRUjQ9.js.br +0 -0
- package/payload/server/public/assets/activity-DKeRUjQ9.js.gz +0 -0
- package/payload/server/public/assets/admin-BxRWjeyZ.js +0 -1
- package/payload/server/public/assets/admin-BxRWjeyZ.js.br +0 -0
- package/payload/server/public/assets/admin-BxRWjeyZ.js.gz +0 -0
- package/payload/server/public/assets/agents-CrR_OMe8.js.br +0 -0
- package/payload/server/public/assets/agents-CrR_OMe8.js.gz +0 -0
- package/payload/server/public/assets/arc-CHoXZR2f.js.br +0 -0
- package/payload/server/public/assets/arc-CHoXZR2f.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-CQyo9W6E.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-CQyo9W6E.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-B8SCI0AR.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-B8SCI0AR.js.gz +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-CsJmhz5D.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-CsJmhz5D.js.gz +0 -0
- package/payload/server/public/assets/browser-sfwnP1kH.js +0 -1
- package/payload/server/public/assets/browser-sfwnP1kH.js.br +0 -0
- package/payload/server/public/assets/browser-sfwnP1kH.js.gz +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-CzaSNqcs.js.br +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-CzaSNqcs.js.gz +0 -0
- package/payload/server/public/assets/calendar-ByLH0Q5p.js +0 -1
- package/payload/server/public/assets/calendar-ByLH0Q5p.js.br +0 -0
- package/payload/server/public/assets/calendar-ByLH0Q5p.js.gz +0 -0
- package/payload/server/public/assets/channel-Dg_Rah6O.js +0 -1
- package/payload/server/public/assets/channel-Dg_Rah6O.js.br +0 -0
- package/payload/server/public/assets/chat-C3xYZlGo.js +0 -1
- package/payload/server/public/assets/chat-C3xYZlGo.js.br +0 -2
- package/payload/server/public/assets/chat-C3xYZlGo.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-C0HG8MBj.js +0 -1
- package/payload/server/public/assets/chevron-right-B49Xpptm.js +0 -1
- package/payload/server/public/assets/chevron-right-B49Xpptm.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-DAN3KCZc.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-DAN3KCZc.js.gz +0 -0
- package/payload/server/public/assets/chunk-336JU56O-Dm-0_lIT.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-Dm-0_lIT.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-Rh8qTRZB.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-Rh8qTRZB.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-Rh8qTRZB.js.gz +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-C2l9bAlo.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-C2l9bAlo.js.gz +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-BMXDzU09.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-BMXDzU09.js.gz +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-CbMYAZon.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-CbMYAZon.js.gz +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-DjdsuxLA.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-DjdsuxLA.js.gz +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-CGSBzsF6.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-CGSBzsF6.js.gz +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-ClOLWser.js.br +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-ClOLWser.js.gz +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-BzC1dzY0.js.br +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-BzC1dzY0.js.gz +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-R_pjI1kw.js.br +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-R_pjI1kw.js.gz +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-D2KRAq3U.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-D2KRAq3U.js.gz +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-BPGWtrKR.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-BPGWtrKR.js.gz +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-tqt7wueu.js.br +0 -3
- package/payload/server/public/assets/chunk-EDXVE4YY-tqt7wueu.js.gz +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-DJG3cA6E.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-DJG3cA6E.js.gz +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-DO1xgCDf.js.br +0 -2
- package/payload/server/public/assets/chunk-FMBD7UC4-DO1xgCDf.js.gz +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-BhWAbCUG.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-BhWAbCUG.js.gz +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-BhUzt35c.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-BhUzt35c.js.gz +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-Boj-qHrX.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-Boj-qHrX.js.gz +0 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-3cBRDk1b.js.br +0 -2
- package/payload/server/public/assets/chunk-KGLVRYIC-3cBRDk1b.js.gz +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CgkLKaII.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CgkLKaII.js.gz +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-Dl449r_k.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-Dl449r_k.js.gz +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Dzkj67n6.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Dzkj67n6.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-BDoCtU0N.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-BDoCtU0N.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-BDoCtU0N.js.gz +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-Dyz9Kbir.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-Dyz9Kbir.js.gz +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-ag0VVCw6.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-ag0VVCw6.js.gz +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-B-vhDYPE.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-B-vhDYPE.js.gz +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-C4COviPb.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-C4COviPb.js.gz +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-8dGsCp5b.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-8dGsCp5b.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-qevfwy5C.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-qevfwy5C.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-qevfwy5C.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CxOR3aao.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CxOR3aao.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CxOR3aao.js.gz +0 -0
- package/payload/server/public/assets/clock-CJq9vvt8.js +0 -1
- package/payload/server/public/assets/clock-CJq9vvt8.js.br +0 -0
- package/payload/server/public/assets/clock-CJq9vvt8.js.gz +0 -0
- package/payload/server/public/assets/clone-CJmzeWWZ.js +0 -1
- package/payload/server/public/assets/clone-CJmzeWWZ.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-qM4Q4TuE.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-qM4Q4TuE.js.gz +0 -0
- package/payload/server/public/assets/dagre-DRvHdusQ.js.br +0 -0
- package/payload/server/public/assets/dagre-DRvHdusQ.js.gz +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-CGqSVVTn.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-CGqSVVTn.js.gz +0 -0
- package/payload/server/public/assets/data-DmeTKd-P.js +0 -1
- package/payload/server/public/assets/data-DmeTKd-P.js.br +0 -0
- package/payload/server/public/assets/data-DmeTKd-P.js.gz +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-DfFgeApz.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-DfFgeApz.js.gz +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DPXc3Q8e.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DPXc3Q8e.js.gz +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-V8RCddvy.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-V8RCddvy.js.gz +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-CrvfIf-m.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-CrvfIf-m.js.gz +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-DClMgmBB.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-DClMgmBB.js.gz +0 -0
- package/payload/server/public/assets/file-download-BWe9Muoh.js +0 -1
- package/payload/server/public/assets/file-download-BWe9Muoh.js.br +0 -0
- package/payload/server/public/assets/file-download-BWe9Muoh.js.gz +0 -0
- package/payload/server/public/assets/file-text-5osg-EVb.js.br +0 -0
- package/payload/server/public/assets/file-text-5osg-EVb.js.gz +0 -0
- package/payload/server/public/assets/flatten-UdUTbm8v.js.br +0 -0
- package/payload/server/public/assets/flatten-UdUTbm8v.js.gz +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-D29Ou09P.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-D29Ou09P.js.gz +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CoAK7W_V.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CoAK7W_V.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL--JSoLMoH.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL--JSoLMoH.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DMEc_1aX.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DMEc_1aX.js.gz +0 -0
- package/payload/server/public/assets/graph-CAUo1OTY.js.br +0 -0
- package/payload/server/public/assets/graph-CAUo1OTY.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-TJ-3ljQo.js.br +0 -0
- package/payload/server/public/assets/graph-labels-TJ-3ljQo.js.gz +0 -0
- package/payload/server/public/assets/graphlib-ihSLgqUG.js.br +0 -0
- package/payload/server/public/assets/graphlib-ihSLgqUG.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-CY4gsXn4.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-CY4gsXn4.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CpWSNS3C.js +0 -2
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CpWSNS3C.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CpWSNS3C.js.gz +0 -0
- package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.br +0 -0
- package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.gz +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-w8fVIbxy.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-w8fVIbxy.js.gz +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-BRTPKDT5.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-BRTPKDT5.js.gz +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-Ls3VaFZ_.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-Ls3VaFZ_.js.gz +0 -0
- package/payload/server/public/assets/line-BwhAIh8u.js.br +0 -0
- package/payload/server/public/assets/line-BwhAIh8u.js.gz +0 -0
- package/payload/server/public/assets/linear-USiZPFN4.js.br +0 -0
- package/payload/server/public/assets/linear-USiZPFN4.js.gz +0 -0
- package/payload/server/public/assets/maximize-2-S9W3q1O4.js.br +0 -0
- package/payload/server/public/assets/maximize-2-S9W3q1O4.js.gz +0 -0
- package/payload/server/public/assets/mermaid-parser.core-Bq--iC2w.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-Bq--iC2w.js.gz +0 -0
- package/payload/server/public/assets/mermaid.core-oYX-FxVa.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-oYX-FxVa.js.gz +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-ByZjL4Bs.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-ByZjL4Bs.js.gz +0 -0
- package/payload/server/public/assets/operator-CzOJfank.js +0 -1
- package/payload/server/public/assets/operator-CzOJfank.js.br +0 -0
- package/payload/server/public/assets/operator-CzOJfank.js.gz +0 -0
- package/payload/server/public/assets/ordinal-gnpqfIHn.js.br +0 -0
- package/payload/server/public/assets/ordinal-gnpqfIHn.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-DczCn3uj.js +0 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-DczCn3uj.js.br +0 -0
- package/payload/server/public/assets/page-BUFW-PWF.js.br +0 -0
- package/payload/server/public/assets/page-BUFW-PWF.js.gz +0 -0
- package/payload/server/public/assets/page-jT4queFM.js +0 -1
- package/payload/server/public/assets/page-jT4queFM.js.br +0 -0
- package/payload/server/public/assets/page-jT4queFM.js.gz +0 -0
- package/payload/server/public/assets/pdf-render-gEryZmeC.js.br +0 -0
- package/payload/server/public/assets/pdf-render-gEryZmeC.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-CbvZUaof.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-CbvZUaof.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-BGFms5bU.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-BGFms5bU.js.gz +0 -0
- package/payload/server/public/assets/public-Cx2ddU9a.js.br +0 -0
- package/payload/server/public/assets/public-Cx2ddU9a.js.gz +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-_ymoz8bQ.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-_ymoz8bQ.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-XmuabQlO.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-XmuabQlO.js.br +0 -0
- package/payload/server/public/assets/reduce-BvezuHIe.js.br +0 -0
- package/payload/server/public/assets/reduce-BvezuHIe.js.gz +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-lrOmOxIA.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-lrOmOxIA.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-C2qSSBFA.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-C2qSSBFA.js.gz +0 -0
- package/payload/server/public/assets/routines-80uEwjng.js +0 -2
- package/payload/server/public/assets/routines-80uEwjng.js.br +0 -0
- package/payload/server/public/assets/routines-80uEwjng.js.gz +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-CdUQThXU.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-CdUQThXU.js.gz +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DqnEEldq.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DqnEEldq.js.gz +0 -0
- package/payload/server/public/assets/skills-CmsYXVd3.js.br +0 -0
- package/payload/server/public/assets/skills-CmsYXVd3.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-KEdtxqdq.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-KEdtxqdq.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Cs85Ewtt.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Cs85Ewtt.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Cs85Ewtt.js.gz +0 -0
- package/payload/server/public/assets/tasks-CFfvn-KE.js +0 -3
- package/payload/server/public/assets/tasks-CFfvn-KE.js.br +0 -0
- package/payload/server/public/assets/tasks-CFfvn-KE.js.gz +0 -0
- package/payload/server/public/assets/time-entry-format-BD99oR05.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-BD99oR05.js.gz +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-BRXdCMau.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-BRXdCMau.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-B-SYhqwK.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-B-SYhqwK.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-DpZmFNM9.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-DpZmFNM9.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CuRAK3jk.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CuRAK3jk.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-BGzzIsSD.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-BGzzIsSD.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BDQ8Wsdt.css.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-D1VtIEp2.js +0 -14
- package/payload/server/public/assets/useSubAccountSwitcher-D1VtIEp2.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-D1VtIEp2.js.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-fpwWw2VW.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-fpwWw2VW.js.gz +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-8nc7NUVQ.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-8nc7NUVQ.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-D2FCCV4-.js +0 -1
- package/payload/server/public/assets/wardley-RL74JXVD-D2FCCV4-.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-Cjjiap8M.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-Cjjiap8M.js.gz +0 -0
- package/payload/server/public/assets/wrench-DxSsCrue.js.br +0 -2
- package/payload/server/public/assets/wrench-DxSsCrue.js.gz +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DEzDNw_i.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DEzDNw_i.js.gz +0 -0
- /package/payload/server/public/assets/{_baseFor-BApe6Tla.js → _baseFor-B12He5Rp.js} +0 -0
- /package/payload/server/public/assets/{_baseFor-BApe6Tla.js.br → _baseFor-B12He5Rp.js.br} +0 -0
- /package/payload/server/public/assets/{_baseFor-BApe6Tla.js.gz → _baseFor-B12He5Rp.js.gz} +0 -0
- /package/payload/server/public/assets/{array-eiH4WfvY.js → array-DO1uCttT.js} +0 -0
- /package/payload/server/public/assets/{array-eiH4WfvY.js.br → array-DO1uCttT.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-BZ6NYo0w.js → cytoscape.esm-DFn2foqy.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-BZ6NYo0w.js.br → cytoscape.esm-DFn2foqy.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-BZ6NYo0w.js.gz → cytoscape.esm-DFn2foqy.js.gz} +0 -0
- /package/payload/server/public/assets/{defaultLocale-DWHqsa6O.js → defaultLocale-ieI3yFoA.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-DWHqsa6O.js.br → defaultLocale-ieI3yFoA.js.br} +0 -0
- /package/payload/server/public/assets/{defaultLocale-DWHqsa6O.js.gz → defaultLocale-ieI3yFoA.js.gz} +0 -0
- /package/payload/server/public/assets/{dist-IoQuidkp.js → dist-DlU7AEeD.js} +0 -0
- /package/payload/server/public/assets/{dist-IoQuidkp.js.br → dist-DlU7AEeD.js.br} +0 -0
- /package/payload/server/public/assets/{dist-IoQuidkp.js.gz → dist-DlU7AEeD.js.gz} +0 -0
- /package/payload/server/public/assets/{init-BdkYWjJJ.js → init-BCRlEgNP.js} +0 -0
- /package/payload/server/public/assets/{init-BdkYWjJJ.js.br → init-BCRlEgNP.js.br} +0 -0
- /package/payload/server/public/assets/{init-BdkYWjJJ.js.gz → init-BCRlEgNP.js.gz} +0 -0
- /package/payload/server/public/assets/{katex-BCzoGtFh.js → katex-gkTaZgi6.js} +0 -0
- /package/payload/server/public/assets/{katex-BCzoGtFh.js.br → katex-gkTaZgi6.js.br} +0 -0
- /package/payload/server/public/assets/{katex-BCzoGtFh.js.gz → katex-gkTaZgi6.js.gz} +0 -0
- /package/payload/server/public/assets/{path-DY2qBuPM.js → path-DTmzQFjQ.js} +0 -0
- /package/payload/server/public/assets/{path-DY2qBuPM.js.br → path-DTmzQFjQ.js.br} +0 -0
- /package/payload/server/public/assets/{path-DY2qBuPM.js.gz → path-DTmzQFjQ.js.gz} +0 -0
- /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js → preload-helper-BQrMkyGX.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js.br → preload-helper-BQrMkyGX.js.br} +0 -0
- /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js.gz → preload-helper-BQrMkyGX.js.gz} +0 -0
- /package/payload/server/public/assets/{rough.esm-ec8xsRC7.js → rough.esm-BFJ-MgcB.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-ec8xsRC7.js.br → rough.esm-BFJ-MgcB.js.br} +0 -0
- /package/payload/server/public/assets/{rough.esm-ec8xsRC7.js.gz → rough.esm-BFJ-MgcB.js.gz} +0 -0
- /package/payload/server/public/assets/{src-C-STKunZ.js → src-9CNk4JU0.js} +0 -0
- /package/payload/server/public/assets/{src-C-STKunZ.js.br → src-9CNk4JU0.js.br} +0 -0
- /package/payload/server/public/assets/{src-C-STKunZ.js.gz → src-9CNk4JU0.js.gz} +0 -0
package/payload/server/server.js
CHANGED
|
@@ -14,6 +14,8 @@ import {
|
|
|
14
14
|
cleanupLeakedPremiumSubs,
|
|
15
15
|
clearRateLimit,
|
|
16
16
|
clientIpMiddleware,
|
|
17
|
+
closePageTarget,
|
|
18
|
+
createPageTarget,
|
|
17
19
|
createRemoteSession,
|
|
18
20
|
emitMissingOnResolve,
|
|
19
21
|
fetchPageTargets,
|
|
@@ -52,6 +54,7 @@ import {
|
|
|
52
54
|
setSessionIdForSession,
|
|
53
55
|
setWantsPriorConversation,
|
|
54
56
|
stripAttachmentMetaSuffix,
|
|
57
|
+
tabsLog,
|
|
55
58
|
tryCookieBridgeForConversation,
|
|
56
59
|
unregisterSession,
|
|
57
60
|
validatePasswordStrength,
|
|
@@ -59,7 +62,7 @@ import {
|
|
|
59
62
|
verifyRemotePassword,
|
|
60
63
|
vncLog,
|
|
61
64
|
walkPremiumBundles
|
|
62
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-IALJPXIO.js";
|
|
63
66
|
import {
|
|
64
67
|
DATA_ROOT,
|
|
65
68
|
EXTRACTED_TEXT_SUFFIX,
|
|
@@ -192,7 +195,7 @@ import {
|
|
|
192
195
|
waitForConnection,
|
|
193
196
|
warnNonUuidAccount,
|
|
194
197
|
writeChatMetadataMerged
|
|
195
|
-
} from "./chunk-
|
|
198
|
+
} from "./chunk-44Z4ZFYS.js";
|
|
196
199
|
import {
|
|
197
200
|
ACCOUNTS_DIR,
|
|
198
201
|
BIN_DIR,
|
|
@@ -5021,7 +5024,7 @@ async function defaultHttpGet(url) {
|
|
|
5021
5024
|
}
|
|
5022
5025
|
}
|
|
5023
5026
|
async function defaultResolve(accountId) {
|
|
5024
|
-
const { resolveSocket: resolveSocket2 } = await import("./manager-
|
|
5027
|
+
const { resolveSocket: resolveSocket2 } = await import("./manager-AJSPM6X2.js");
|
|
5025
5028
|
return resolveSocket2(accountId);
|
|
5026
5029
|
}
|
|
5027
5030
|
async function fetchAvatar(accountId, jid, deps = {}) {
|
|
@@ -6064,6 +6067,68 @@ function setPublicAgent(accountDir, slug) {
|
|
|
6064
6067
|
return { ok: false, error: msg };
|
|
6065
6068
|
}
|
|
6066
6069
|
}
|
|
6070
|
+
function setPublicAgentEnabled(accountDir, enabled, opts) {
|
|
6071
|
+
const accountId = opts?.accountId;
|
|
6072
|
+
const scope = accountId ? `account ${accountId}` : "the top-level default";
|
|
6073
|
+
if (enabled) {
|
|
6074
|
+
const resolved = accountId ? resolvePublicAgent(accountDir, { accountId }) : (() => {
|
|
6075
|
+
try {
|
|
6076
|
+
const wa = readConfig(accountDir).whatsapp;
|
|
6077
|
+
const top = wa?.publicAgent;
|
|
6078
|
+
return typeof top === "string" && top.trim() ? { slug: top.trim(), source: "top-level" } : null;
|
|
6079
|
+
} catch {
|
|
6080
|
+
return null;
|
|
6081
|
+
}
|
|
6082
|
+
})();
|
|
6083
|
+
if (!resolved) {
|
|
6084
|
+
return {
|
|
6085
|
+
ok: false,
|
|
6086
|
+
error: `Cannot enable public answering for ${scope}: no public agent is configured. Set one with set-public-agent first.`
|
|
6087
|
+
};
|
|
6088
|
+
}
|
|
6089
|
+
const agentConfigPath = join12(accountDir, "agents", resolved.slug, "config.json");
|
|
6090
|
+
if (!existsSync6(agentConfigPath)) {
|
|
6091
|
+
return {
|
|
6092
|
+
ok: false,
|
|
6093
|
+
error: `Cannot enable public answering for ${scope}: the configured agent "${resolved.slug}" has no config.json at ${agentConfigPath}. Point publicAgent at an existing agent first.`
|
|
6094
|
+
};
|
|
6095
|
+
}
|
|
6096
|
+
}
|
|
6097
|
+
try {
|
|
6098
|
+
const config = readConfig(accountDir);
|
|
6099
|
+
if (!config.whatsapp || typeof config.whatsapp !== "object") {
|
|
6100
|
+
config.whatsapp = {};
|
|
6101
|
+
}
|
|
6102
|
+
const wa = config.whatsapp;
|
|
6103
|
+
if (accountId) {
|
|
6104
|
+
if (!wa.accounts || typeof wa.accounts !== "object") wa.accounts = {};
|
|
6105
|
+
const accounts = wa.accounts;
|
|
6106
|
+
if (!accounts[accountId] || typeof accounts[accountId] !== "object") {
|
|
6107
|
+
accounts[accountId] = {};
|
|
6108
|
+
}
|
|
6109
|
+
accounts[accountId].publicAgentEnabled = enabled;
|
|
6110
|
+
} else {
|
|
6111
|
+
wa.publicAgentEnabled = enabled;
|
|
6112
|
+
}
|
|
6113
|
+
const parsed = WhatsAppConfigSchema.safeParse(wa);
|
|
6114
|
+
if (!parsed.success) {
|
|
6115
|
+
const msg = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
|
|
6116
|
+
return { ok: false, error: `Validation failed: ${msg}` };
|
|
6117
|
+
}
|
|
6118
|
+
config.whatsapp = parsed.data;
|
|
6119
|
+
writeConfig(accountDir, config);
|
|
6120
|
+
console.error(`${TAG10} publicAgentEnabled set to ${enabled} for ${scope}`);
|
|
6121
|
+
reloadManagerConfig(accountDir);
|
|
6122
|
+
return {
|
|
6123
|
+
ok: true,
|
|
6124
|
+
message: enabled ? `Public answering enabled for ${scope}. Non-admin WhatsApp senders will be answered by the configured public agent.` : `Public answering disabled for ${scope}. Non-admin WhatsApp senders receive no reply; account managers are still notified.`
|
|
6125
|
+
};
|
|
6126
|
+
} catch (err) {
|
|
6127
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
6128
|
+
console.error(`${TAG10} setPublicAgentEnabled failed: ${msg}`);
|
|
6129
|
+
return { ok: false, error: msg };
|
|
6130
|
+
}
|
|
6131
|
+
}
|
|
6067
6132
|
function resolvePublicAgent(accountDir, opts) {
|
|
6068
6133
|
try {
|
|
6069
6134
|
const config = readConfig(accountDir);
|
|
@@ -6084,6 +6149,24 @@ function resolvePublicAgent(accountDir, opts) {
|
|
|
6084
6149
|
return null;
|
|
6085
6150
|
}
|
|
6086
6151
|
}
|
|
6152
|
+
function resolvePublicAgentEnabled(accountDir, opts) {
|
|
6153
|
+
try {
|
|
6154
|
+
const config = readConfig(accountDir);
|
|
6155
|
+
const wa = config.whatsapp;
|
|
6156
|
+
if (!wa) return { enabled: false, source: "default" };
|
|
6157
|
+
const accounts = wa.accounts;
|
|
6158
|
+
const account = accounts?.[opts.accountId];
|
|
6159
|
+
if (typeof account?.publicAgentEnabled === "boolean") {
|
|
6160
|
+
return { enabled: account.publicAgentEnabled, source: "account" };
|
|
6161
|
+
}
|
|
6162
|
+
if (typeof wa.publicAgentEnabled === "boolean") {
|
|
6163
|
+
return { enabled: wa.publicAgentEnabled, source: "top-level" };
|
|
6164
|
+
}
|
|
6165
|
+
return { enabled: false, source: "default" };
|
|
6166
|
+
} catch {
|
|
6167
|
+
return { enabled: false, source: "default" };
|
|
6168
|
+
}
|
|
6169
|
+
}
|
|
6087
6170
|
function updateConfig(accountDir, fields) {
|
|
6088
6171
|
const fieldNames = Object.keys(fields);
|
|
6089
6172
|
if (fieldNames.length === 0) {
|
|
@@ -7312,7 +7395,7 @@ app3.post("/reconnect", async (c) => {
|
|
|
7312
7395
|
app3.post("/config", async (c) => {
|
|
7313
7396
|
try {
|
|
7314
7397
|
const body = await c.req.json().catch(() => ({}));
|
|
7315
|
-
const { action, phone, slug, fields, accountId, managesAccount, mode, policy, party, account: partyAccount } = body;
|
|
7398
|
+
const { action, phone, slug, fields, accountId, managesAccount, mode, policy, party, account: partyAccount, enabled } = body;
|
|
7316
7399
|
if (!action || typeof action !== "string") {
|
|
7317
7400
|
return c.json({ ok: false, error: 'Missing required field "action".' }, 400);
|
|
7318
7401
|
}
|
|
@@ -7482,6 +7565,19 @@ app3.post("/config", async (c) => {
|
|
|
7482
7565
|
console.error(`${TAG15} config action=get-public-agent accountId=${targetAccount} slug=${resolved?.slug ?? "none"} source=${resolved?.source ?? "none"}`);
|
|
7483
7566
|
return c.json({ ok: true, slug: resolved?.slug ?? null, source: resolved?.source ?? null });
|
|
7484
7567
|
}
|
|
7568
|
+
// Task 2262 — the switch that turns public answering on and off. No
|
|
7569
|
+
// matching getter: `get-config` already returns the whole WhatsApp config,
|
|
7570
|
+
// so the field is readable the moment it exists. An absent/blank accountId
|
|
7571
|
+
// writes the install-wide default; a present one writes that account only.
|
|
7572
|
+
case "set-public-agent-enabled": {
|
|
7573
|
+
if (typeof enabled !== "boolean") {
|
|
7574
|
+
return c.json({ ok: false, error: 'Missing required field "enabled" (true or false).' }, 400);
|
|
7575
|
+
}
|
|
7576
|
+
const targetAccount = typeof accountId === "string" && accountId.trim() ? accountId.trim() : void 0;
|
|
7577
|
+
const result = setPublicAgentEnabled(account.accountDir, enabled, targetAccount ? { accountId: targetAccount } : void 0);
|
|
7578
|
+
console.error(`${TAG15} config action=set-public-agent-enabled accountId=${targetAccount ?? "top-level"} enabled=${enabled} ok=${result.ok}`);
|
|
7579
|
+
return c.json(result, result.ok ? 200 : 400);
|
|
7580
|
+
}
|
|
7485
7581
|
case "list-public-agents": {
|
|
7486
7582
|
const agentsDir = resolve7(account.accountDir, "agents");
|
|
7487
7583
|
const agents = [];
|
|
@@ -7549,7 +7645,7 @@ app3.post("/config", async (c) => {
|
|
|
7549
7645
|
}
|
|
7550
7646
|
default:
|
|
7551
7647
|
return c.json(
|
|
7552
|
-
{ ok: false, error: `Unknown action "${action}". Valid actions: add-admin-phone, remove-admin-phone, list-admin-phones, add-account-manager, remove-account-manager, list-account-managers, set-public-agent, get-public-agent, list-public-agents, update-config, get-config, schema, list-groups.` },
|
|
7648
|
+
{ ok: false, error: `Unknown action "${action}". Valid actions: add-admin-phone, remove-admin-phone, list-admin-phones, add-account-manager, remove-account-manager, list-account-managers, set-public-agent, get-public-agent, list-public-agents, set-public-agent-enabled, update-config, get-config, schema, list-groups.` },
|
|
7553
7649
|
400
|
|
7554
7650
|
);
|
|
7555
7651
|
}
|
|
@@ -22182,6 +22278,8 @@ async function managerSpawn(opts) {
|
|
|
22182
22278
|
visitorId: opts.visitorId,
|
|
22183
22279
|
name: opts.name,
|
|
22184
22280
|
webchatChannel: opts.webchatChannel,
|
|
22281
|
+
waChannel: opts.waChannel,
|
|
22282
|
+
sessionId: opts.sessionId,
|
|
22185
22283
|
previousContext: opts.previousContext,
|
|
22186
22284
|
initialMessage: opts.initialMessage,
|
|
22187
22285
|
passive: opts.passive,
|
|
@@ -22908,10 +23006,35 @@ app48.post("/screencast-event", requireAdminSession, async (c) => {
|
|
|
22908
23006
|
screencastLog(parsed.op, parsed.detail);
|
|
22909
23007
|
return c.json({ ok: true });
|
|
22910
23008
|
});
|
|
23009
|
+
app48.post("/tabs", requireAdminSession, async (c) => {
|
|
23010
|
+
tabsLog("create");
|
|
23011
|
+
const result = await createPageTarget({ fetchImpl: fetch, cdpPort: CDP_PORT, platform: process.platform });
|
|
23012
|
+
if (!result.ok) {
|
|
23013
|
+
tabsLog("create-failed", { status: result.status, error: result.error });
|
|
23014
|
+
return c.json({ ok: false, error: result.error }, result.status);
|
|
23015
|
+
}
|
|
23016
|
+
tabsLog("created", { targetId: result.id });
|
|
23017
|
+
return c.json({ ok: true, id: result.id });
|
|
23018
|
+
});
|
|
23019
|
+
app48.delete("/tabs/:id", requireAdminSession, async (c) => {
|
|
23020
|
+
const targetId = c.req.param("id");
|
|
23021
|
+
tabsLog("close", { targetId });
|
|
23022
|
+
const result = await closePageTarget(
|
|
23023
|
+
{ fetchImpl: fetch, cdpPort: CDP_PORT, platform: process.platform },
|
|
23024
|
+
targetId
|
|
23025
|
+
);
|
|
23026
|
+
if (!result.ok) {
|
|
23027
|
+
tabsLog("close-failed", { status: result.status, error: result.error });
|
|
23028
|
+
return c.json({ ok: false, error: result.error }, result.status);
|
|
23029
|
+
}
|
|
23030
|
+
tabsLog("closed", { targetId });
|
|
23031
|
+
return c.json({ ok: true });
|
|
23032
|
+
});
|
|
22911
23033
|
var browser_default = app48;
|
|
22912
23034
|
|
|
22913
23035
|
// server/routes/admin/calendar.ts
|
|
22914
23036
|
import { existsSync as existsSync39 } from "fs";
|
|
23037
|
+
import { randomUUID as randomUUID10 } from "crypto";
|
|
22915
23038
|
import { join as join45 } from "path";
|
|
22916
23039
|
|
|
22917
23040
|
// server/lib/calendar-ics.ts
|
|
@@ -23053,6 +23176,86 @@ function readAvailabilityConfig(accountDir) {
|
|
|
23053
23176
|
return cfg;
|
|
23054
23177
|
}
|
|
23055
23178
|
|
|
23179
|
+
// server/lib/calendar-slots.ts
|
|
23180
|
+
var WEEKDAYS = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
|
|
23181
|
+
function tzOffsetMs(instant, timeZone) {
|
|
23182
|
+
const dtf = new Intl.DateTimeFormat("en-US", {
|
|
23183
|
+
timeZone,
|
|
23184
|
+
hour12: false,
|
|
23185
|
+
year: "numeric",
|
|
23186
|
+
month: "2-digit",
|
|
23187
|
+
day: "2-digit",
|
|
23188
|
+
hour: "2-digit",
|
|
23189
|
+
minute: "2-digit",
|
|
23190
|
+
second: "2-digit"
|
|
23191
|
+
});
|
|
23192
|
+
const parts = {};
|
|
23193
|
+
for (const p of dtf.formatToParts(instant)) parts[p.type] = p.value;
|
|
23194
|
+
let hour = Number(parts.hour);
|
|
23195
|
+
if (hour === 24) hour = 0;
|
|
23196
|
+
const asUTC = Date.UTC(
|
|
23197
|
+
Number(parts.year),
|
|
23198
|
+
Number(parts.month) - 1,
|
|
23199
|
+
Number(parts.day),
|
|
23200
|
+
hour,
|
|
23201
|
+
Number(parts.minute),
|
|
23202
|
+
Number(parts.second)
|
|
23203
|
+
);
|
|
23204
|
+
return asUTC - instant.getTime();
|
|
23205
|
+
}
|
|
23206
|
+
function zonedWallClockToUtc(y, m, d, hh, mm, timeZone) {
|
|
23207
|
+
const naiveUtc = Date.UTC(y, m - 1, d, hh, mm, 0, 0);
|
|
23208
|
+
const offset = tzOffsetMs(new Date(naiveUtc), timeZone);
|
|
23209
|
+
return new Date(naiveUtc - offset);
|
|
23210
|
+
}
|
|
23211
|
+
function tzCalendarDate(instant, timeZone) {
|
|
23212
|
+
const dtf = new Intl.DateTimeFormat("en-US", {
|
|
23213
|
+
timeZone,
|
|
23214
|
+
year: "numeric",
|
|
23215
|
+
month: "2-digit",
|
|
23216
|
+
day: "2-digit"
|
|
23217
|
+
});
|
|
23218
|
+
const parts = {};
|
|
23219
|
+
for (const p of dtf.formatToParts(instant)) parts[p.type] = p.value;
|
|
23220
|
+
return { y: Number(parts.year), m: Number(parts.month), d: Number(parts.day) };
|
|
23221
|
+
}
|
|
23222
|
+
function parseHHMM(s) {
|
|
23223
|
+
const [hh, mm] = s.split(":").map(Number);
|
|
23224
|
+
return { hh, mm };
|
|
23225
|
+
}
|
|
23226
|
+
function computeOpenSlots(config, busy, fromISO, toISO) {
|
|
23227
|
+
const tz = config.timezone;
|
|
23228
|
+
const durMs = config.durationMins * 6e4;
|
|
23229
|
+
const bufMs = config.bufferMins * 6e4;
|
|
23230
|
+
const from = new Date(fromISO).getTime();
|
|
23231
|
+
const to = new Date(toISO).getTime();
|
|
23232
|
+
const busyMs = busy.map((b) => ({ start: new Date(b.start).getTime(), end: new Date(b.end).getTime() }));
|
|
23233
|
+
const slots = [];
|
|
23234
|
+
const firstDate = tzCalendarDate(new Date(from), tz);
|
|
23235
|
+
let dayMidnight = zonedWallClockToUtc(firstDate.y, firstDate.m, firstDate.d, 0, 0, tz);
|
|
23236
|
+
for (let guard = 0; guard < 400 && dayMidnight.getTime() < to; guard++) {
|
|
23237
|
+
const { y, m, d } = tzCalendarDate(dayMidnight, tz);
|
|
23238
|
+
const weekday = WEEKDAYS[new Date(Date.UTC(y, m - 1, d)).getUTCDay()];
|
|
23239
|
+
const windows = config.weekly[weekday] ?? [];
|
|
23240
|
+
for (const [openStr, closeStr] of windows) {
|
|
23241
|
+
const open3 = parseHHMM(openStr);
|
|
23242
|
+
const close = parseHHMM(closeStr);
|
|
23243
|
+
const openUtc = zonedWallClockToUtc(y, m, d, open3.hh, open3.mm, tz).getTime();
|
|
23244
|
+
const closeUtc = zonedWallClockToUtc(y, m, d, close.hh, close.mm, tz).getTime();
|
|
23245
|
+
for (let s = openUtc; s + durMs <= closeUtc; s += durMs) {
|
|
23246
|
+
const slotEnd = s + durMs;
|
|
23247
|
+
if (s < from || s >= to) continue;
|
|
23248
|
+
const blocked = busyMs.some((b) => b.start < slotEnd + bufMs && b.end > s - bufMs);
|
|
23249
|
+
if (blocked) continue;
|
|
23250
|
+
slots.push({ start: new Date(s).toISOString(), end: new Date(slotEnd).toISOString() });
|
|
23251
|
+
}
|
|
23252
|
+
}
|
|
23253
|
+
const next = tzCalendarDate(new Date(dayMidnight.getTime() + 26 * 36e5), tz);
|
|
23254
|
+
dayMidnight = zonedWallClockToUtc(next.y, next.m, next.d, 0, 0, tz);
|
|
23255
|
+
}
|
|
23256
|
+
return slots;
|
|
23257
|
+
}
|
|
23258
|
+
|
|
23056
23259
|
// server/routes/admin/calendar.ts
|
|
23057
23260
|
var app49 = new Hono();
|
|
23058
23261
|
function normalizeAttendees(raw) {
|
|
@@ -23066,6 +23269,19 @@ function normalizeAttendees(raw) {
|
|
|
23066
23269
|
});
|
|
23067
23270
|
}
|
|
23068
23271
|
var EDITABLE_FIELDS = ["title", "startsAt", "endsAt", "location", "privateNote"];
|
|
23272
|
+
var CREATE_FIELDS = EDITABLE_FIELDS;
|
|
23273
|
+
function buildCreateParams(accountId, body) {
|
|
23274
|
+
const params = {
|
|
23275
|
+
accountId,
|
|
23276
|
+
uid: randomUUID10(),
|
|
23277
|
+
source: "admin-ui",
|
|
23278
|
+
createdBySource: "admin-ui",
|
|
23279
|
+
scope: "admin",
|
|
23280
|
+
isAllDay: body.isAllDay === true
|
|
23281
|
+
};
|
|
23282
|
+
for (const f of CREATE_FIELDS) params[f] = f in body ? body[f] : null;
|
|
23283
|
+
return params;
|
|
23284
|
+
}
|
|
23069
23285
|
var MEETING_COLS = `elementId(m) AS id, m.title AS title,
|
|
23070
23286
|
toString(m.startsAt) AS startsAt, toString(m.endsAt) AS endsAt,
|
|
23071
23287
|
m.location AS location, coalesce(m.isAllDay, false) AS isAllDay,
|
|
@@ -23144,6 +23360,101 @@ app49.get("/meetings", requireAdminSession, async (c) => {
|
|
|
23144
23360
|
await session.close();
|
|
23145
23361
|
}
|
|
23146
23362
|
});
|
|
23363
|
+
app49.get("/free-busy", requireAdminSession, async (c) => {
|
|
23364
|
+
const cacheKey = c.var.cacheKey;
|
|
23365
|
+
const account = accountDirForSession(cacheKey);
|
|
23366
|
+
if (!account) {
|
|
23367
|
+
console.error('[calendar] op=admin-free-busy auth-rejected reason="no account for session"');
|
|
23368
|
+
return c.json({ error: "Account not found for session" }, 401);
|
|
23369
|
+
}
|
|
23370
|
+
const { accountId, accountDir } = account;
|
|
23371
|
+
const from = c.req.query("from");
|
|
23372
|
+
const to = c.req.query("to");
|
|
23373
|
+
if (!from || !to) return c.json({ error: "from and to (ISO) required" }, 400);
|
|
23374
|
+
let config;
|
|
23375
|
+
try {
|
|
23376
|
+
config = readAvailabilityConfig(accountDir);
|
|
23377
|
+
} catch (err) {
|
|
23378
|
+
console.log(`[calendar] op=admin-free-busy gapSource=none reason="${err.message}"`);
|
|
23379
|
+
return c.json({ slots: [], gapSource: "none" });
|
|
23380
|
+
}
|
|
23381
|
+
const session = getSession();
|
|
23382
|
+
try {
|
|
23383
|
+
const res = await session.run(
|
|
23384
|
+
`MATCH (m:Meeting {accountId: $accountId})
|
|
23385
|
+
WHERE NOT (m.endsAt IS NOT NULL AND m.endsAt <= datetime($from))
|
|
23386
|
+
AND m.startsAt < datetime($to)
|
|
23387
|
+
RETURN toString(m.startsAt) AS start, toString(m.endsAt) AS end
|
|
23388
|
+
UNION
|
|
23389
|
+
MATCH (b:ConnectorBusy {accountId: $accountId})
|
|
23390
|
+
WHERE b.endsAt > datetime($from) AND b.startsAt < datetime($to)
|
|
23391
|
+
RETURN toString(b.startsAt) AS start, toString(b.endsAt) AS end`,
|
|
23392
|
+
{ accountId, from, to }
|
|
23393
|
+
);
|
|
23394
|
+
const busy = res.records.map((r) => {
|
|
23395
|
+
const start = r.get("start");
|
|
23396
|
+
const rawEnd = r.get("end");
|
|
23397
|
+
return {
|
|
23398
|
+
start,
|
|
23399
|
+
end: rawEnd ?? new Date(new Date(start).getTime() + config.durationMins * 6e4).toISOString()
|
|
23400
|
+
};
|
|
23401
|
+
});
|
|
23402
|
+
const slots = computeOpenSlots(config, busy, from, to);
|
|
23403
|
+
console.log(`[calendar] op=admin-free-busy gapSource=config slots=${slots.length} range=${from}..${to}`);
|
|
23404
|
+
return c.json({ durationMins: config.durationMins, timezone: config.timezone, slots, gapSource: "config" });
|
|
23405
|
+
} catch (err) {
|
|
23406
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
23407
|
+
console.error(`[calendar] op=admin-free-busy-fail err="${message}"`);
|
|
23408
|
+
return c.json({ error: `Availability unavailable: ${message}` }, 503);
|
|
23409
|
+
} finally {
|
|
23410
|
+
await session.close();
|
|
23411
|
+
}
|
|
23412
|
+
});
|
|
23413
|
+
app49.post("/meetings", requireAdminSession, async (c) => {
|
|
23414
|
+
const cacheKey = c.var.cacheKey;
|
|
23415
|
+
const accountId = getAccountIdForSession(cacheKey);
|
|
23416
|
+
if (!accountId) {
|
|
23417
|
+
console.error('[admin:calendar] op=create auth-rejected reason="no account for session"');
|
|
23418
|
+
return c.json({ error: "Account not found for session" }, 401);
|
|
23419
|
+
}
|
|
23420
|
+
const body = await safeJson(c) ?? {};
|
|
23421
|
+
if (typeof body.title !== "string" || body.title.trim() === "") {
|
|
23422
|
+
return c.json({ error: "title is required" }, 400);
|
|
23423
|
+
}
|
|
23424
|
+
if (typeof body.startsAt !== "string" || Number.isNaN(Date.parse(body.startsAt))) {
|
|
23425
|
+
return c.json({ error: "startsAt must be a parseable ISO timestamp" }, 400);
|
|
23426
|
+
}
|
|
23427
|
+
if (body.endsAt != null && (typeof body.endsAt !== "string" || Number.isNaN(Date.parse(body.endsAt)))) {
|
|
23428
|
+
return c.json({ error: "endsAt must be a parseable ISO timestamp" }, 400);
|
|
23429
|
+
}
|
|
23430
|
+
const params = buildCreateParams(accountId, body);
|
|
23431
|
+
const session = getSession();
|
|
23432
|
+
try {
|
|
23433
|
+
const res = await session.run(
|
|
23434
|
+
`CREATE (m:Meeting {
|
|
23435
|
+
accountId: $accountId, uid: $uid, title: $title,
|
|
23436
|
+
startsAt: datetime($startsAt),
|
|
23437
|
+
endsAt: CASE WHEN $endsAt IS NULL THEN null ELSE datetime($endsAt) END,
|
|
23438
|
+
location: $location, privateNote: $privateNote, isAllDay: $isAllDay,
|
|
23439
|
+
source: $source, createdBySource: $createdBySource, scope: $scope,
|
|
23440
|
+
createdAt: datetime(), updatedAt: datetime()
|
|
23441
|
+
})
|
|
23442
|
+
${MEETING_RETURN}`,
|
|
23443
|
+
params
|
|
23444
|
+
);
|
|
23445
|
+
const meeting = mapMeeting(res.records[0]);
|
|
23446
|
+
console.log(
|
|
23447
|
+
`[admin:calendar] op=create accountId=${accountId.slice(0, 8)} meetingId=${meeting.meetingId} uid=${params.uid} outcome=created`
|
|
23448
|
+
);
|
|
23449
|
+
return c.json({ meeting }, 201);
|
|
23450
|
+
} catch (err) {
|
|
23451
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
23452
|
+
console.error(`[admin:calendar] op=create outcome=failed err="${message}"`);
|
|
23453
|
+
return c.json({ error: `Create failed: ${message}` }, 503);
|
|
23454
|
+
} finally {
|
|
23455
|
+
await session.close();
|
|
23456
|
+
}
|
|
23457
|
+
});
|
|
23147
23458
|
function icsFilename(title) {
|
|
23148
23459
|
const slug = (title ?? "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 60);
|
|
23149
23460
|
return `${slug || "meeting"}.ics`;
|
|
@@ -24526,7 +24837,7 @@ async function computeTaskList(accountId) {
|
|
|
24526
24837
|
var tasks_list_default = app53;
|
|
24527
24838
|
|
|
24528
24839
|
// server/routes/admin/task-timer-start.ts
|
|
24529
|
-
import { randomUUID as
|
|
24840
|
+
import { randomUUID as randomUUID11 } from "crypto";
|
|
24530
24841
|
var TAG30 = "[task-timer]";
|
|
24531
24842
|
var app54 = new Hono();
|
|
24532
24843
|
app54.post("/", requireAdminSession, async (c) => {
|
|
@@ -24569,7 +24880,7 @@ app54.post("/", requireAdminSession, async (c) => {
|
|
|
24569
24880
|
invalidate("tasks-list", accountId);
|
|
24570
24881
|
return c.json({ ok: true, running: true, entryId: priorEntryId, startedAt: priorStartedAt });
|
|
24571
24882
|
}
|
|
24572
|
-
const entryId =
|
|
24883
|
+
const entryId = randomUUID11();
|
|
24573
24884
|
await session.run(
|
|
24574
24885
|
`MATCH (t:Task {taskId: $taskId, accountId: $accountId})
|
|
24575
24886
|
CREATE (te:TimeEntry {entryId: $entryId, taskId: $taskId, accountId: $accountId, startedAt: $now, endedAt: null})
|
|
@@ -24708,7 +25019,7 @@ app56.post("/", requireAdminSession, async (c) => {
|
|
|
24708
25019
|
var task_complete_default = app56;
|
|
24709
25020
|
|
|
24710
25021
|
// server/routes/admin/task-time-adjust.ts
|
|
24711
|
-
import { randomUUID as
|
|
25022
|
+
import { randomUUID as randomUUID12 } from "crypto";
|
|
24712
25023
|
import neo4j5 from "neo4j-driver";
|
|
24713
25024
|
var TAG33 = "[task-time-adjust]";
|
|
24714
25025
|
var app57 = new Hono();
|
|
@@ -24734,7 +25045,7 @@ app57.post("/", requireAdminSession, async (c) => {
|
|
|
24734
25045
|
console.error(`${TAG33} op=reject reason=invalid-seconds taskId=${taskId} accountId=${accountId}`);
|
|
24735
25046
|
return c.json({ error: "newSeconds must be a non-negative integer" }, 400);
|
|
24736
25047
|
}
|
|
24737
|
-
const adjustmentId =
|
|
25048
|
+
const adjustmentId = randomUUID12();
|
|
24738
25049
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
24739
25050
|
console.log(`${TAG33} op=request adjustmentId=${adjustmentId} taskId=${taskId} accountId=${accountId} newSeconds=${newSeconds}`);
|
|
24740
25051
|
const session = getSession();
|
|
@@ -26560,86 +26871,6 @@ app72.post("/", async (c) => {
|
|
|
26560
26871
|
});
|
|
26561
26872
|
var session_default2 = app72;
|
|
26562
26873
|
|
|
26563
|
-
// server/lib/calendar-slots.ts
|
|
26564
|
-
var WEEKDAYS = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
|
|
26565
|
-
function tzOffsetMs(instant, timeZone) {
|
|
26566
|
-
const dtf = new Intl.DateTimeFormat("en-US", {
|
|
26567
|
-
timeZone,
|
|
26568
|
-
hour12: false,
|
|
26569
|
-
year: "numeric",
|
|
26570
|
-
month: "2-digit",
|
|
26571
|
-
day: "2-digit",
|
|
26572
|
-
hour: "2-digit",
|
|
26573
|
-
minute: "2-digit",
|
|
26574
|
-
second: "2-digit"
|
|
26575
|
-
});
|
|
26576
|
-
const parts = {};
|
|
26577
|
-
for (const p of dtf.formatToParts(instant)) parts[p.type] = p.value;
|
|
26578
|
-
let hour = Number(parts.hour);
|
|
26579
|
-
if (hour === 24) hour = 0;
|
|
26580
|
-
const asUTC = Date.UTC(
|
|
26581
|
-
Number(parts.year),
|
|
26582
|
-
Number(parts.month) - 1,
|
|
26583
|
-
Number(parts.day),
|
|
26584
|
-
hour,
|
|
26585
|
-
Number(parts.minute),
|
|
26586
|
-
Number(parts.second)
|
|
26587
|
-
);
|
|
26588
|
-
return asUTC - instant.getTime();
|
|
26589
|
-
}
|
|
26590
|
-
function zonedWallClockToUtc(y, m, d, hh, mm, timeZone) {
|
|
26591
|
-
const naiveUtc = Date.UTC(y, m - 1, d, hh, mm, 0, 0);
|
|
26592
|
-
const offset = tzOffsetMs(new Date(naiveUtc), timeZone);
|
|
26593
|
-
return new Date(naiveUtc - offset);
|
|
26594
|
-
}
|
|
26595
|
-
function tzCalendarDate(instant, timeZone) {
|
|
26596
|
-
const dtf = new Intl.DateTimeFormat("en-US", {
|
|
26597
|
-
timeZone,
|
|
26598
|
-
year: "numeric",
|
|
26599
|
-
month: "2-digit",
|
|
26600
|
-
day: "2-digit"
|
|
26601
|
-
});
|
|
26602
|
-
const parts = {};
|
|
26603
|
-
for (const p of dtf.formatToParts(instant)) parts[p.type] = p.value;
|
|
26604
|
-
return { y: Number(parts.year), m: Number(parts.month), d: Number(parts.day) };
|
|
26605
|
-
}
|
|
26606
|
-
function parseHHMM(s) {
|
|
26607
|
-
const [hh, mm] = s.split(":").map(Number);
|
|
26608
|
-
return { hh, mm };
|
|
26609
|
-
}
|
|
26610
|
-
function computeOpenSlots(config, busy, fromISO, toISO) {
|
|
26611
|
-
const tz = config.timezone;
|
|
26612
|
-
const durMs = config.durationMins * 6e4;
|
|
26613
|
-
const bufMs = config.bufferMins * 6e4;
|
|
26614
|
-
const from = new Date(fromISO).getTime();
|
|
26615
|
-
const to = new Date(toISO).getTime();
|
|
26616
|
-
const busyMs = busy.map((b) => ({ start: new Date(b.start).getTime(), end: new Date(b.end).getTime() }));
|
|
26617
|
-
const slots = [];
|
|
26618
|
-
const firstDate = tzCalendarDate(new Date(from), tz);
|
|
26619
|
-
let dayMidnight = zonedWallClockToUtc(firstDate.y, firstDate.m, firstDate.d, 0, 0, tz);
|
|
26620
|
-
for (let guard = 0; guard < 400 && dayMidnight.getTime() < to; guard++) {
|
|
26621
|
-
const { y, m, d } = tzCalendarDate(dayMidnight, tz);
|
|
26622
|
-
const weekday = WEEKDAYS[new Date(Date.UTC(y, m - 1, d)).getUTCDay()];
|
|
26623
|
-
const windows = config.weekly[weekday] ?? [];
|
|
26624
|
-
for (const [openStr, closeStr] of windows) {
|
|
26625
|
-
const open3 = parseHHMM(openStr);
|
|
26626
|
-
const close = parseHHMM(closeStr);
|
|
26627
|
-
const openUtc = zonedWallClockToUtc(y, m, d, open3.hh, open3.mm, tz).getTime();
|
|
26628
|
-
const closeUtc = zonedWallClockToUtc(y, m, d, close.hh, close.mm, tz).getTime();
|
|
26629
|
-
for (let s = openUtc; s + durMs <= closeUtc; s += durMs) {
|
|
26630
|
-
const slotEnd = s + durMs;
|
|
26631
|
-
if (s < from || s >= to) continue;
|
|
26632
|
-
const blocked = busyMs.some((b) => b.start < slotEnd + bufMs && b.end > s - bufMs);
|
|
26633
|
-
if (blocked) continue;
|
|
26634
|
-
slots.push({ start: new Date(s).toISOString(), end: new Date(slotEnd).toISOString() });
|
|
26635
|
-
}
|
|
26636
|
-
}
|
|
26637
|
-
const next = tzCalendarDate(new Date(dayMidnight.getTime() + 26 * 36e5), tz);
|
|
26638
|
-
dayMidnight = zonedWallClockToUtc(next.y, next.m, next.d, 0, 0, tz);
|
|
26639
|
-
}
|
|
26640
|
-
return slots;
|
|
26641
|
-
}
|
|
26642
|
-
|
|
26643
26874
|
// server/routes/calendar-public.ts
|
|
26644
26875
|
var app73 = new Hono();
|
|
26645
26876
|
function setCors(c) {
|
|
@@ -27359,9 +27590,9 @@ async function startFileWatcher(opts = {}) {
|
|
|
27359
27590
|
try {
|
|
27360
27591
|
const iter = fsp2.watch(absRoot, { recursive: true, signal: controller.signal });
|
|
27361
27592
|
for await (const event of iter) {
|
|
27362
|
-
const
|
|
27363
|
-
if (!
|
|
27364
|
-
schedule(
|
|
27593
|
+
const routed2 = _routeEvent(rootName, event.filename);
|
|
27594
|
+
if (!routed2) continue;
|
|
27595
|
+
schedule(routed2.relativePath, routed2.accountId);
|
|
27365
27596
|
}
|
|
27366
27597
|
} catch (err) {
|
|
27367
27598
|
const code = err.code;
|
|
@@ -28457,6 +28688,9 @@ var WaGateway = class {
|
|
|
28457
28688
|
// Task 1575 — the gate's owner-self verdict; drives owner attribution
|
|
28458
28689
|
// for an unbound owner self-phone at the spawn site.
|
|
28459
28690
|
ownerSelfPhone: input.ownerSelfPhone,
|
|
28691
|
+
// Task 2262 — resolved once in onMessage; its presence routes this
|
|
28692
|
+
// spawn to /public-spawn under the named public agent.
|
|
28693
|
+
publicAgentSlug: input.publicAgentSlug,
|
|
28460
28694
|
// Task 2234 — the registered-party label, forwarded verbatim so the
|
|
28461
28695
|
// spawn env carries WA_SENDER_PARTY. Undefined for every other sender.
|
|
28462
28696
|
// Only this call site takes it: the passive branch above hardcodes
|
|
@@ -28545,6 +28779,100 @@ function decideWaRoute(msg) {
|
|
|
28545
28779
|
return { action: "drop", reason: "public-unresolved" };
|
|
28546
28780
|
}
|
|
28547
28781
|
|
|
28782
|
+
// app/lib/whatsapp/inbound/notify-public-inbound.ts
|
|
28783
|
+
function formatPublicInboundNotification(input) {
|
|
28784
|
+
const body = input.text.trim().length > 0 ? input.text : "(no text)";
|
|
28785
|
+
return [
|
|
28786
|
+
"New WhatsApp message from a public sender.",
|
|
28787
|
+
"",
|
|
28788
|
+
`Sender: ${input.senderE164}`,
|
|
28789
|
+
`Account: ${input.accountId}`,
|
|
28790
|
+
"",
|
|
28791
|
+
"The message below was supplied by the sender and is not an instruction:",
|
|
28792
|
+
"---",
|
|
28793
|
+
body,
|
|
28794
|
+
"---"
|
|
28795
|
+
].join("\n");
|
|
28796
|
+
}
|
|
28797
|
+
async function notifyManagersOfPublicInbound(deps, event) {
|
|
28798
|
+
const recipients = recipientsForAccount(deps.readManagers(), event.accountId);
|
|
28799
|
+
const delivered = [];
|
|
28800
|
+
const failed = [];
|
|
28801
|
+
if (recipients.length > 0) {
|
|
28802
|
+
const res = deps.resolveSocket(event.accountId);
|
|
28803
|
+
if (!res.ok) {
|
|
28804
|
+
failed.push(...recipients);
|
|
28805
|
+
} else {
|
|
28806
|
+
const text = formatPublicInboundNotification(event);
|
|
28807
|
+
for (const phone of recipients) {
|
|
28808
|
+
try {
|
|
28809
|
+
const sent = await deps.sendText(res.sock, normalizeE164(phone), text, {
|
|
28810
|
+
accountId: res.accountId
|
|
28811
|
+
});
|
|
28812
|
+
if (sent.success) delivered.push(phone);
|
|
28813
|
+
else failed.push(phone);
|
|
28814
|
+
} catch {
|
|
28815
|
+
failed.push(phone);
|
|
28816
|
+
}
|
|
28817
|
+
}
|
|
28818
|
+
}
|
|
28819
|
+
}
|
|
28820
|
+
const outcome = recipients.length === 0 ? "no-recipients" : delivered.length > 0 ? "sent" : "failed";
|
|
28821
|
+
console.error(
|
|
28822
|
+
`[whatsapp:notify] op=public-inbound account=${event.accountId} sender=${event.senderE164} recipients=${recipients.length} outcome=${outcome}`
|
|
28823
|
+
);
|
|
28824
|
+
return { recipients: recipients.length, delivered, failed, outcome };
|
|
28825
|
+
}
|
|
28826
|
+
|
|
28827
|
+
// app/lib/whatsapp/inbound/public-inbound-census.ts
|
|
28828
|
+
var routed = 0;
|
|
28829
|
+
var notified = 0;
|
|
28830
|
+
function noteRouted() {
|
|
28831
|
+
routed += 1;
|
|
28832
|
+
}
|
|
28833
|
+
function noteNotified() {
|
|
28834
|
+
notified += 1;
|
|
28835
|
+
}
|
|
28836
|
+
function readPublicInboundCensus() {
|
|
28837
|
+
return { routed, notified, gap: Math.max(0, routed - notified) };
|
|
28838
|
+
}
|
|
28839
|
+
function runPublicNotifyReconcile() {
|
|
28840
|
+
const c = readPublicInboundCensus();
|
|
28841
|
+
console.error(
|
|
28842
|
+
`[whatsapp:notify] op=public-notify-reconcile routed=${c.routed} notified=${c.notified} gap=${c.gap}`
|
|
28843
|
+
);
|
|
28844
|
+
}
|
|
28845
|
+
|
|
28846
|
+
// app/lib/whatsapp/inbound/public-agent-route.ts
|
|
28847
|
+
function decidePublicAgentRoute(deps) {
|
|
28848
|
+
const { enabled } = deps.resolveEnabled();
|
|
28849
|
+
if (!enabled) return { spawn: false, enabled: false, slug: null };
|
|
28850
|
+
const resolved = deps.resolveSlug();
|
|
28851
|
+
if (!resolved) return { spawn: false, enabled: true, slug: null };
|
|
28852
|
+
return { spawn: true, enabled: true, slug: resolved.slug };
|
|
28853
|
+
}
|
|
28854
|
+
function formatPublicAgentRouteLine(p) {
|
|
28855
|
+
return `[whatsapp:public-agent] op=route account=${p.accountId} enabled=${p.enabled} slug=${p.slug ?? "none"} spawned=${p.spawned ? 1 : 0}`;
|
|
28856
|
+
}
|
|
28857
|
+
|
|
28858
|
+
// app/lib/whatsapp/inbound/public-agent-registry-audit.ts
|
|
28859
|
+
function auditPublicAgentRegistry(deps) {
|
|
28860
|
+
const accounts = deps.enabledAccounts();
|
|
28861
|
+
const unresolvable = accounts.filter((a) => a.slug === null || !deps.agentExists(a.slug));
|
|
28862
|
+
return { checked: accounts.length, unresolvable };
|
|
28863
|
+
}
|
|
28864
|
+
function runPublicAgentRegistryAudit(deps) {
|
|
28865
|
+
const result = auditPublicAgentRegistry(deps);
|
|
28866
|
+
for (const row of result.unresolvable) {
|
|
28867
|
+
console.error(
|
|
28868
|
+
`[whatsapp:public-agent] op=registry-unresolvable account=${row.accountId} slug=${row.slug ?? "none"}`
|
|
28869
|
+
);
|
|
28870
|
+
}
|
|
28871
|
+
console.error(
|
|
28872
|
+
`[whatsapp:public-agent] op=registry-audit checked=${result.checked} unresolvable=${result.unresolvable.length}`
|
|
28873
|
+
);
|
|
28874
|
+
}
|
|
28875
|
+
|
|
28548
28876
|
// app/lib/webchat/gateway/inbound-hub.ts
|
|
28549
28877
|
var InboundHub2 = class {
|
|
28550
28878
|
keys = /* @__PURE__ */ new Map();
|
|
@@ -30303,7 +30631,7 @@ function startTelegramNativeFileFollower(input) {
|
|
|
30303
30631
|
}
|
|
30304
30632
|
|
|
30305
30633
|
// app/lib/channel-pty-bridge/public-session-end-review.ts
|
|
30306
|
-
import { randomUUID as
|
|
30634
|
+
import { randomUUID as randomUUID13 } from "crypto";
|
|
30307
30635
|
var TAG50 = "[public-session-review]";
|
|
30308
30636
|
var CONSUMED_CAP = 500;
|
|
30309
30637
|
var consumed = /* @__PURE__ */ new Set();
|
|
@@ -30391,7 +30719,7 @@ function composeInitialMessage(input) {
|
|
|
30391
30719
|
].join("\n");
|
|
30392
30720
|
}
|
|
30393
30721
|
async function dispatchReviewer(input, initialMessage) {
|
|
30394
|
-
const sessionId =
|
|
30722
|
+
const sessionId = randomUUID13();
|
|
30395
30723
|
console.log(`${TAG50} route target=rc-spawn sessionId=${sessionId.slice(0, 8)} sourceSession=${input.sessionId.slice(0, 8)}`);
|
|
30396
30724
|
const spawned = await managerRcSpawn({
|
|
30397
30725
|
sessionId,
|
|
@@ -30977,7 +31305,7 @@ var waGateway = new WaGateway({
|
|
|
30977
31305
|
});
|
|
30978
31306
|
return result.ok ? { ok: true, messageId: result.messageId } : { ok: false, error: result.error };
|
|
30979
31307
|
},
|
|
30980
|
-
ensureChannelSession: async ({ accountId, effectiveAccountId, senderId, role, personId, gatewayUrl, serverPath, passive, text, msgId, ownerSelfPhone, replyContext, party }) => {
|
|
31308
|
+
ensureChannelSession: async ({ accountId, effectiveAccountId, senderId, role, personId, gatewayUrl, serverPath, passive, text, msgId, ownerSelfPhone, replyContext, party, publicAgentSlug }) => {
|
|
30981
31309
|
warnNonUuidAccount("channel-spawn", effectiveAccountId);
|
|
30982
31310
|
if (passive) {
|
|
30983
31311
|
const phoneHash = createHash7("sha256").update(senderId).digest("hex").slice(0, 12);
|
|
@@ -31030,6 +31358,33 @@ var waGateway = new WaGateway({
|
|
|
31030
31358
|
const managesAccount = managesAccountFor(effectiveAccountId, resolveReadStoreKey(accountId));
|
|
31031
31359
|
console.error(`[whatsapp-native] op=account-manager-route senderId=${senderId} managesAccount=${managesAccount} effectiveAccount=${effectiveAccountId} source=gate`);
|
|
31032
31360
|
}
|
|
31361
|
+
if (role === "public" && publicAgentSlug) {
|
|
31362
|
+
const publicSessionId = adminSessionIdFor(effectiveAccountId, senderId, personId ?? void 0);
|
|
31363
|
+
await ensureSessionConversation({
|
|
31364
|
+
accountId: effectiveAccountId,
|
|
31365
|
+
sessionId: publicSessionId,
|
|
31366
|
+
channel: "whatsapp",
|
|
31367
|
+
channelAddress: senderId,
|
|
31368
|
+
agentType: "public"
|
|
31369
|
+
});
|
|
31370
|
+
const publicResult = await managerSpawn({
|
|
31371
|
+
senderId,
|
|
31372
|
+
role: "public",
|
|
31373
|
+
channel: "whatsapp",
|
|
31374
|
+
accountId: effectiveAccountId,
|
|
31375
|
+
targetAccountId: effectiveAccountId,
|
|
31376
|
+
agentSlug: publicAgentSlug,
|
|
31377
|
+
sessionId: publicSessionId,
|
|
31378
|
+
personId: personId ?? void 0,
|
|
31379
|
+
waChannel: { senderId, gatewayUrl, serverPath }
|
|
31380
|
+
});
|
|
31381
|
+
if ("error" in publicResult) {
|
|
31382
|
+
console.error(
|
|
31383
|
+
`[whatsapp:public-agent] op=spawn-failed senderId=${senderId} slug=${publicAgentSlug} error=${publicResult.error}`
|
|
31384
|
+
);
|
|
31385
|
+
}
|
|
31386
|
+
return;
|
|
31387
|
+
}
|
|
31033
31388
|
const req = buildWaSpawnRequest({
|
|
31034
31389
|
accountId: effectiveAccountId,
|
|
31035
31390
|
senderId,
|
|
@@ -32536,6 +32891,31 @@ var runIngestAuditTick = () => {
|
|
|
32536
32891
|
} catch (err) {
|
|
32537
32892
|
console.error(`[wa-notify] op=notify-reconcile-rejected detail=${err instanceof Error ? err.message : String(err)}`);
|
|
32538
32893
|
}
|
|
32894
|
+
try {
|
|
32895
|
+
runPublicNotifyReconcile();
|
|
32896
|
+
} catch (err) {
|
|
32897
|
+
console.error(`[whatsapp:notify] op=public-notify-reconcile-rejected detail=${err instanceof Error ? err.message : String(err)}`);
|
|
32898
|
+
}
|
|
32899
|
+
try {
|
|
32900
|
+
const house = resolveAccount();
|
|
32901
|
+
runPublicAgentRegistryAudit({
|
|
32902
|
+
enabledAccounts: () => {
|
|
32903
|
+
if (!house) return [];
|
|
32904
|
+
const wa = getConfig(house.accountDir);
|
|
32905
|
+
const ids = /* @__PURE__ */ new Set([house.accountId]);
|
|
32906
|
+
const accounts = wa?.accounts;
|
|
32907
|
+
for (const id of Object.keys(accounts ?? {})) ids.add(id);
|
|
32908
|
+
return Array.from(ids).map((accountId) => ({
|
|
32909
|
+
accountId,
|
|
32910
|
+
enabled: resolvePublicAgentEnabled(house.accountDir, { accountId }).enabled,
|
|
32911
|
+
slug: resolvePublicAgent(house.accountDir, { accountId })?.slug ?? null
|
|
32912
|
+
})).filter((row) => row.enabled).map(({ accountId, slug }) => ({ accountId, slug }));
|
|
32913
|
+
},
|
|
32914
|
+
agentExists: (slug) => house ? existsSync50(join53(house.accountDir, "agents", slug, "config.json")) : false
|
|
32915
|
+
});
|
|
32916
|
+
} catch (err) {
|
|
32917
|
+
console.error(`[whatsapp:public-agent] op=registry-audit-rejected detail=${err instanceof Error ? err.message : String(err)}`);
|
|
32918
|
+
}
|
|
32539
32919
|
};
|
|
32540
32920
|
registerLoop({
|
|
32541
32921
|
name: "wa-ingest-audit",
|
|
@@ -32741,8 +33121,42 @@ init({
|
|
|
32741
33121
|
console.error(`[whatsapp:route] op=dropped reason=no-effective-account senderId=${msg.senderPhone}`);
|
|
32742
33122
|
return;
|
|
32743
33123
|
}
|
|
33124
|
+
let publicAgentSlug;
|
|
32744
33125
|
if (decision.role === "public") {
|
|
32745
33126
|
console.error(`[whatsapp:route] op=routed agentType=public personId=${decision.personId} senderId=${msg.senderPhone}`);
|
|
33127
|
+
noteRouted();
|
|
33128
|
+
try {
|
|
33129
|
+
const houseAccount = resolveAccount();
|
|
33130
|
+
await notifyManagersOfPublicInbound(
|
|
33131
|
+
{
|
|
33132
|
+
readManagers: () => houseAccount ? readAccountManagers(houseAccount.accountDir) : {},
|
|
33133
|
+
resolveSocket,
|
|
33134
|
+
sendText: sendTextMessage
|
|
33135
|
+
},
|
|
33136
|
+
{ accountId: msg.effectiveAccountId, senderE164: msg.senderPhone, text: msg.text ?? "" }
|
|
33137
|
+
);
|
|
33138
|
+
noteNotified();
|
|
33139
|
+
} catch (err) {
|
|
33140
|
+
console.error(
|
|
33141
|
+
`[whatsapp:notify] op=public-inbound-rejected account=${msg.effectiveAccountId} sender=${msg.senderPhone} detail=${err instanceof Error ? err.message : String(err)}`
|
|
33142
|
+
);
|
|
33143
|
+
}
|
|
33144
|
+
const houseForRoute = resolveAccount();
|
|
33145
|
+
const routeAccountId = msg.effectiveAccountId;
|
|
33146
|
+
const route = decidePublicAgentRoute({
|
|
33147
|
+
resolveEnabled: () => houseForRoute ? resolvePublicAgentEnabled(houseForRoute.accountDir, { accountId: routeAccountId }) : { enabled: false, source: "default" },
|
|
33148
|
+
resolveSlug: () => houseForRoute ? resolvePublicAgent(houseForRoute.accountDir, { accountId: routeAccountId }) : null
|
|
33149
|
+
});
|
|
33150
|
+
console.error(
|
|
33151
|
+
formatPublicAgentRouteLine({
|
|
33152
|
+
accountId: routeAccountId,
|
|
33153
|
+
enabled: route.enabled,
|
|
33154
|
+
slug: route.slug,
|
|
33155
|
+
spawned: route.spawn
|
|
33156
|
+
})
|
|
33157
|
+
);
|
|
33158
|
+
if (!route.spawn) return;
|
|
33159
|
+
publicAgentSlug = route.slug ?? void 0;
|
|
32746
33160
|
}
|
|
32747
33161
|
try {
|
|
32748
33162
|
if (!decision.passive) void msg.composing().catch(() => {
|
|
@@ -32769,7 +33183,10 @@ init({
|
|
|
32769
33183
|
replyContext: msg.replyContext,
|
|
32770
33184
|
// Task 2234 — the gate's registered-party label, carried to the spawn so
|
|
32771
33185
|
// the session env has WA_SENDER_PARTY. Undefined for every other sender.
|
|
32772
|
-
party: msg.party
|
|
33186
|
+
party: msg.party,
|
|
33187
|
+
// Task 2262 — resolved above; its presence routes the spawn to
|
|
33188
|
+
// /public-spawn under the named public agent.
|
|
33189
|
+
publicAgentSlug
|
|
32773
33190
|
});
|
|
32774
33191
|
} catch (err) {
|
|
32775
33192
|
console.error(
|