@rubytech/create-maxy-code 0.1.534 → 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 +12 -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-Di0Rg9lb.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-CZTshBkV.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-BdMnzZ8u.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-DzB4KiCO.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-CMlGzab-.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-Cw95Fq0m.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-DRipsKnx.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-wBScNSFk.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-BjIYVGss.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-B6e7L3GG.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-C9clyq98.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-CZlka7Nl.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-DoQhfr0S.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-Cei46RSJ.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-DCIBZT1Z.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 +526 -97
- package/payload/server/public/assets/AdminLoginScreens-gvOpxnO4.js +0 -1
- package/payload/server/public/assets/AdminLoginScreens-gvOpxnO4.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-gvOpxnO4.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-CMZZr5Oz.js +0 -2
- package/payload/server/public/assets/AdminShell-CMZZr5Oz.js.br +0 -0
- package/payload/server/public/assets/AdminShell-CMZZr5Oz.js.gz +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-erS6iQci.js +0 -1
- package/payload/server/public/assets/CdpScreencastSurface-erS6iQci.js.br +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-erS6iQci.js.gz +0 -0
- package/payload/server/public/assets/activity-Di0Rg9lb.js.br +0 -0
- package/payload/server/public/assets/activity-Di0Rg9lb.js.gz +0 -0
- package/payload/server/public/assets/admin-BVt8IN2Y.js +0 -1
- package/payload/server/public/assets/admin-BVt8IN2Y.js.br +0 -0
- package/payload/server/public/assets/admin-BVt8IN2Y.js.gz +0 -0
- package/payload/server/public/assets/agents-CZTshBkV.js.br +0 -0
- package/payload/server/public/assets/agents-CZTshBkV.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-D9s49CKQ.js +0 -1
- package/payload/server/public/assets/browser-D9s49CKQ.js.br +0 -0
- package/payload/server/public/assets/browser-D9s49CKQ.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-BkZcebIa.js +0 -1
- package/payload/server/public/assets/calendar-BkZcebIa.js.br +0 -0
- package/payload/server/public/assets/calendar-BkZcebIa.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-C6EOth0E.js +0 -1
- package/payload/server/public/assets/chat-C6EOth0E.js.br +0 -1
- package/payload/server/public/assets/chat-C6EOth0E.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-DiJkQOqd.js +0 -1
- package/payload/server/public/assets/chevron-right-DOO-559P.js +0 -1
- package/payload/server/public/assets/chevron-right-DOO-559P.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-D-z9DPIi.js +0 -1
- package/payload/server/public/assets/clock-D-z9DPIi.js.br +0 -0
- package/payload/server/public/assets/clock-D-z9DPIi.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-2fHKgEQR.js +0 -1
- package/payload/server/public/assets/data-2fHKgEQR.js.br +0 -0
- package/payload/server/public/assets/data-2fHKgEQR.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-CKfAhT9F.js +0 -1
- package/payload/server/public/assets/file-download-CKfAhT9F.js.br +0 -0
- package/payload/server/public/assets/file-download-CKfAhT9F.js.gz +0 -0
- package/payload/server/public/assets/file-text-BdMnzZ8u.js.br +0 -0
- package/payload/server/public/assets/file-text-BdMnzZ8u.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-DzB4KiCO.js.br +0 -0
- package/payload/server/public/assets/graph-DzB4KiCO.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-CMlGzab-.js.br +0 -0
- package/payload/server/public/assets/graph-labels-CMlGzab-.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-Cw95Fq0m.js.br +0 -0
- package/payload/server/public/assets/maximize-2-Cw95Fq0m.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-DzWQapvw.js +0 -1
- package/payload/server/public/assets/operator-DzWQapvw.js.br +0 -0
- package/payload/server/public/assets/operator-DzWQapvw.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-DRipsKnx.js.br +0 -0
- package/payload/server/public/assets/page-DRipsKnx.js.gz +0 -0
- package/payload/server/public/assets/page-iEvYrvW4.js +0 -1
- package/payload/server/public/assets/page-iEvYrvW4.js.br +0 -0
- package/payload/server/public/assets/page-iEvYrvW4.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-wBScNSFk.js.br +0 -0
- package/payload/server/public/assets/public-wBScNSFk.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-BjIYVGss.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-BjIYVGss.js.gz +0 -0
- package/payload/server/public/assets/routines-DP0XOp9h.js +0 -2
- package/payload/server/public/assets/routines-DP0XOp9h.js.br +0 -0
- package/payload/server/public/assets/routines-DP0XOp9h.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-B6e7L3GG.js.br +0 -0
- package/payload/server/public/assets/skills-B6e7L3GG.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-CRoG5MpL.js +0 -3
- package/payload/server/public/assets/tasks-CRoG5MpL.js.br +0 -0
- package/payload/server/public/assets/tasks-CRoG5MpL.js.gz +0 -0
- package/payload/server/public/assets/time-entry-format-C9clyq98.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-C9clyq98.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-CZlka7Nl.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CZlka7Nl.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-DoQhfr0S.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-DoQhfr0S.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BDQ8Wsdt.css.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-DOo5uRtZ.js +0 -14
- package/payload/server/public/assets/useSubAccountSwitcher-DOo5uRtZ.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-DOo5uRtZ.js.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-Cei46RSJ.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-Cei46RSJ.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-DCIBZT1Z.js.br +0 -2
- package/payload/server/public/assets/wrench-DCIBZT1Z.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
|
}
|
|
@@ -16714,7 +16810,19 @@ var ALLOWED_EVENTS = /* @__PURE__ */ new Set([
|
|
|
16714
16810
|
"device-url:malformed",
|
|
16715
16811
|
// Task 2074 — the client receipt proving a notification card actually
|
|
16716
16812
|
// painted. The only signal that distinguishes "delivered" from "rendered".
|
|
16717
|
-
"wa-notify:rendered"
|
|
16813
|
+
"wa-notify:rendered",
|
|
16814
|
+
// Task 2138 — the desktop-notification surface.
|
|
16815
|
+
//
|
|
16816
|
+
// `desktop-capability` is posted once per AdminShell mount and is the only
|
|
16817
|
+
// signal that does not need a message to arrive: on a plain-HTTP LAN origin
|
|
16818
|
+
// the Notification API is unavailable and `requestPermission()` returns
|
|
16819
|
+
// "denied" with no prompt, so without this line that install reports nothing
|
|
16820
|
+
// and reads as "no messages yet".
|
|
16821
|
+
//
|
|
16822
|
+
// `desktop-outcome` carries one verdict per message — `shown`, a skip reason,
|
|
16823
|
+
// or `construct-failed` — so a missing banner is always explained.
|
|
16824
|
+
"wa-notify:desktop-capability",
|
|
16825
|
+
"wa-notify:desktop-outcome"
|
|
16718
16826
|
]);
|
|
16719
16827
|
var app24 = new Hono();
|
|
16720
16828
|
app24.post("/", async (c) => {
|
|
@@ -22170,6 +22278,8 @@ async function managerSpawn(opts) {
|
|
|
22170
22278
|
visitorId: opts.visitorId,
|
|
22171
22279
|
name: opts.name,
|
|
22172
22280
|
webchatChannel: opts.webchatChannel,
|
|
22281
|
+
waChannel: opts.waChannel,
|
|
22282
|
+
sessionId: opts.sessionId,
|
|
22173
22283
|
previousContext: opts.previousContext,
|
|
22174
22284
|
initialMessage: opts.initialMessage,
|
|
22175
22285
|
passive: opts.passive,
|
|
@@ -22896,10 +23006,35 @@ app48.post("/screencast-event", requireAdminSession, async (c) => {
|
|
|
22896
23006
|
screencastLog(parsed.op, parsed.detail);
|
|
22897
23007
|
return c.json({ ok: true });
|
|
22898
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
|
+
});
|
|
22899
23033
|
var browser_default = app48;
|
|
22900
23034
|
|
|
22901
23035
|
// server/routes/admin/calendar.ts
|
|
22902
23036
|
import { existsSync as existsSync39 } from "fs";
|
|
23037
|
+
import { randomUUID as randomUUID10 } from "crypto";
|
|
22903
23038
|
import { join as join45 } from "path";
|
|
22904
23039
|
|
|
22905
23040
|
// server/lib/calendar-ics.ts
|
|
@@ -23041,6 +23176,86 @@ function readAvailabilityConfig(accountDir) {
|
|
|
23041
23176
|
return cfg;
|
|
23042
23177
|
}
|
|
23043
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
|
+
|
|
23044
23259
|
// server/routes/admin/calendar.ts
|
|
23045
23260
|
var app49 = new Hono();
|
|
23046
23261
|
function normalizeAttendees(raw) {
|
|
@@ -23054,6 +23269,19 @@ function normalizeAttendees(raw) {
|
|
|
23054
23269
|
});
|
|
23055
23270
|
}
|
|
23056
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
|
+
}
|
|
23057
23285
|
var MEETING_COLS = `elementId(m) AS id, m.title AS title,
|
|
23058
23286
|
toString(m.startsAt) AS startsAt, toString(m.endsAt) AS endsAt,
|
|
23059
23287
|
m.location AS location, coalesce(m.isAllDay, false) AS isAllDay,
|
|
@@ -23132,6 +23360,101 @@ app49.get("/meetings", requireAdminSession, async (c) => {
|
|
|
23132
23360
|
await session.close();
|
|
23133
23361
|
}
|
|
23134
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
|
+
});
|
|
23135
23458
|
function icsFilename(title) {
|
|
23136
23459
|
const slug = (title ?? "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 60);
|
|
23137
23460
|
return `${slug || "meeting"}.ics`;
|
|
@@ -24514,7 +24837,7 @@ async function computeTaskList(accountId) {
|
|
|
24514
24837
|
var tasks_list_default = app53;
|
|
24515
24838
|
|
|
24516
24839
|
// server/routes/admin/task-timer-start.ts
|
|
24517
|
-
import { randomUUID as
|
|
24840
|
+
import { randomUUID as randomUUID11 } from "crypto";
|
|
24518
24841
|
var TAG30 = "[task-timer]";
|
|
24519
24842
|
var app54 = new Hono();
|
|
24520
24843
|
app54.post("/", requireAdminSession, async (c) => {
|
|
@@ -24557,7 +24880,7 @@ app54.post("/", requireAdminSession, async (c) => {
|
|
|
24557
24880
|
invalidate("tasks-list", accountId);
|
|
24558
24881
|
return c.json({ ok: true, running: true, entryId: priorEntryId, startedAt: priorStartedAt });
|
|
24559
24882
|
}
|
|
24560
|
-
const entryId =
|
|
24883
|
+
const entryId = randomUUID11();
|
|
24561
24884
|
await session.run(
|
|
24562
24885
|
`MATCH (t:Task {taskId: $taskId, accountId: $accountId})
|
|
24563
24886
|
CREATE (te:TimeEntry {entryId: $entryId, taskId: $taskId, accountId: $accountId, startedAt: $now, endedAt: null})
|
|
@@ -24696,7 +25019,7 @@ app56.post("/", requireAdminSession, async (c) => {
|
|
|
24696
25019
|
var task_complete_default = app56;
|
|
24697
25020
|
|
|
24698
25021
|
// server/routes/admin/task-time-adjust.ts
|
|
24699
|
-
import { randomUUID as
|
|
25022
|
+
import { randomUUID as randomUUID12 } from "crypto";
|
|
24700
25023
|
import neo4j5 from "neo4j-driver";
|
|
24701
25024
|
var TAG33 = "[task-time-adjust]";
|
|
24702
25025
|
var app57 = new Hono();
|
|
@@ -24722,7 +25045,7 @@ app57.post("/", requireAdminSession, async (c) => {
|
|
|
24722
25045
|
console.error(`${TAG33} op=reject reason=invalid-seconds taskId=${taskId} accountId=${accountId}`);
|
|
24723
25046
|
return c.json({ error: "newSeconds must be a non-negative integer" }, 400);
|
|
24724
25047
|
}
|
|
24725
|
-
const adjustmentId =
|
|
25048
|
+
const adjustmentId = randomUUID12();
|
|
24726
25049
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
24727
25050
|
console.log(`${TAG33} op=request adjustmentId=${adjustmentId} taskId=${taskId} accountId=${accountId} newSeconds=${newSeconds}`);
|
|
24728
25051
|
const session = getSession();
|
|
@@ -26548,86 +26871,6 @@ app72.post("/", async (c) => {
|
|
|
26548
26871
|
});
|
|
26549
26872
|
var session_default2 = app72;
|
|
26550
26873
|
|
|
26551
|
-
// server/lib/calendar-slots.ts
|
|
26552
|
-
var WEEKDAYS = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
|
|
26553
|
-
function tzOffsetMs(instant, timeZone) {
|
|
26554
|
-
const dtf = new Intl.DateTimeFormat("en-US", {
|
|
26555
|
-
timeZone,
|
|
26556
|
-
hour12: false,
|
|
26557
|
-
year: "numeric",
|
|
26558
|
-
month: "2-digit",
|
|
26559
|
-
day: "2-digit",
|
|
26560
|
-
hour: "2-digit",
|
|
26561
|
-
minute: "2-digit",
|
|
26562
|
-
second: "2-digit"
|
|
26563
|
-
});
|
|
26564
|
-
const parts = {};
|
|
26565
|
-
for (const p of dtf.formatToParts(instant)) parts[p.type] = p.value;
|
|
26566
|
-
let hour = Number(parts.hour);
|
|
26567
|
-
if (hour === 24) hour = 0;
|
|
26568
|
-
const asUTC = Date.UTC(
|
|
26569
|
-
Number(parts.year),
|
|
26570
|
-
Number(parts.month) - 1,
|
|
26571
|
-
Number(parts.day),
|
|
26572
|
-
hour,
|
|
26573
|
-
Number(parts.minute),
|
|
26574
|
-
Number(parts.second)
|
|
26575
|
-
);
|
|
26576
|
-
return asUTC - instant.getTime();
|
|
26577
|
-
}
|
|
26578
|
-
function zonedWallClockToUtc(y, m, d, hh, mm, timeZone) {
|
|
26579
|
-
const naiveUtc = Date.UTC(y, m - 1, d, hh, mm, 0, 0);
|
|
26580
|
-
const offset = tzOffsetMs(new Date(naiveUtc), timeZone);
|
|
26581
|
-
return new Date(naiveUtc - offset);
|
|
26582
|
-
}
|
|
26583
|
-
function tzCalendarDate(instant, timeZone) {
|
|
26584
|
-
const dtf = new Intl.DateTimeFormat("en-US", {
|
|
26585
|
-
timeZone,
|
|
26586
|
-
year: "numeric",
|
|
26587
|
-
month: "2-digit",
|
|
26588
|
-
day: "2-digit"
|
|
26589
|
-
});
|
|
26590
|
-
const parts = {};
|
|
26591
|
-
for (const p of dtf.formatToParts(instant)) parts[p.type] = p.value;
|
|
26592
|
-
return { y: Number(parts.year), m: Number(parts.month), d: Number(parts.day) };
|
|
26593
|
-
}
|
|
26594
|
-
function parseHHMM(s) {
|
|
26595
|
-
const [hh, mm] = s.split(":").map(Number);
|
|
26596
|
-
return { hh, mm };
|
|
26597
|
-
}
|
|
26598
|
-
function computeOpenSlots(config, busy, fromISO, toISO) {
|
|
26599
|
-
const tz = config.timezone;
|
|
26600
|
-
const durMs = config.durationMins * 6e4;
|
|
26601
|
-
const bufMs = config.bufferMins * 6e4;
|
|
26602
|
-
const from = new Date(fromISO).getTime();
|
|
26603
|
-
const to = new Date(toISO).getTime();
|
|
26604
|
-
const busyMs = busy.map((b) => ({ start: new Date(b.start).getTime(), end: new Date(b.end).getTime() }));
|
|
26605
|
-
const slots = [];
|
|
26606
|
-
const firstDate = tzCalendarDate(new Date(from), tz);
|
|
26607
|
-
let dayMidnight = zonedWallClockToUtc(firstDate.y, firstDate.m, firstDate.d, 0, 0, tz);
|
|
26608
|
-
for (let guard = 0; guard < 400 && dayMidnight.getTime() < to; guard++) {
|
|
26609
|
-
const { y, m, d } = tzCalendarDate(dayMidnight, tz);
|
|
26610
|
-
const weekday = WEEKDAYS[new Date(Date.UTC(y, m - 1, d)).getUTCDay()];
|
|
26611
|
-
const windows = config.weekly[weekday] ?? [];
|
|
26612
|
-
for (const [openStr, closeStr] of windows) {
|
|
26613
|
-
const open3 = parseHHMM(openStr);
|
|
26614
|
-
const close = parseHHMM(closeStr);
|
|
26615
|
-
const openUtc = zonedWallClockToUtc(y, m, d, open3.hh, open3.mm, tz).getTime();
|
|
26616
|
-
const closeUtc = zonedWallClockToUtc(y, m, d, close.hh, close.mm, tz).getTime();
|
|
26617
|
-
for (let s = openUtc; s + durMs <= closeUtc; s += durMs) {
|
|
26618
|
-
const slotEnd = s + durMs;
|
|
26619
|
-
if (s < from || s >= to) continue;
|
|
26620
|
-
const blocked = busyMs.some((b) => b.start < slotEnd + bufMs && b.end > s - bufMs);
|
|
26621
|
-
if (blocked) continue;
|
|
26622
|
-
slots.push({ start: new Date(s).toISOString(), end: new Date(slotEnd).toISOString() });
|
|
26623
|
-
}
|
|
26624
|
-
}
|
|
26625
|
-
const next = tzCalendarDate(new Date(dayMidnight.getTime() + 26 * 36e5), tz);
|
|
26626
|
-
dayMidnight = zonedWallClockToUtc(next.y, next.m, next.d, 0, 0, tz);
|
|
26627
|
-
}
|
|
26628
|
-
return slots;
|
|
26629
|
-
}
|
|
26630
|
-
|
|
26631
26874
|
// server/routes/calendar-public.ts
|
|
26632
26875
|
var app73 = new Hono();
|
|
26633
26876
|
function setCors(c) {
|
|
@@ -27347,9 +27590,9 @@ async function startFileWatcher(opts = {}) {
|
|
|
27347
27590
|
try {
|
|
27348
27591
|
const iter = fsp2.watch(absRoot, { recursive: true, signal: controller.signal });
|
|
27349
27592
|
for await (const event of iter) {
|
|
27350
|
-
const
|
|
27351
|
-
if (!
|
|
27352
|
-
schedule(
|
|
27593
|
+
const routed2 = _routeEvent(rootName, event.filename);
|
|
27594
|
+
if (!routed2) continue;
|
|
27595
|
+
schedule(routed2.relativePath, routed2.accountId);
|
|
27353
27596
|
}
|
|
27354
27597
|
} catch (err) {
|
|
27355
27598
|
const code = err.code;
|
|
@@ -28445,6 +28688,9 @@ var WaGateway = class {
|
|
|
28445
28688
|
// Task 1575 — the gate's owner-self verdict; drives owner attribution
|
|
28446
28689
|
// for an unbound owner self-phone at the spawn site.
|
|
28447
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,
|
|
28448
28694
|
// Task 2234 — the registered-party label, forwarded verbatim so the
|
|
28449
28695
|
// spawn env carries WA_SENDER_PARTY. Undefined for every other sender.
|
|
28450
28696
|
// Only this call site takes it: the passive branch above hardcodes
|
|
@@ -28533,6 +28779,100 @@ function decideWaRoute(msg) {
|
|
|
28533
28779
|
return { action: "drop", reason: "public-unresolved" };
|
|
28534
28780
|
}
|
|
28535
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
|
+
|
|
28536
28876
|
// app/lib/webchat/gateway/inbound-hub.ts
|
|
28537
28877
|
var InboundHub2 = class {
|
|
28538
28878
|
keys = /* @__PURE__ */ new Map();
|
|
@@ -30291,7 +30631,7 @@ function startTelegramNativeFileFollower(input) {
|
|
|
30291
30631
|
}
|
|
30292
30632
|
|
|
30293
30633
|
// app/lib/channel-pty-bridge/public-session-end-review.ts
|
|
30294
|
-
import { randomUUID as
|
|
30634
|
+
import { randomUUID as randomUUID13 } from "crypto";
|
|
30295
30635
|
var TAG50 = "[public-session-review]";
|
|
30296
30636
|
var CONSUMED_CAP = 500;
|
|
30297
30637
|
var consumed = /* @__PURE__ */ new Set();
|
|
@@ -30379,7 +30719,7 @@ function composeInitialMessage(input) {
|
|
|
30379
30719
|
].join("\n");
|
|
30380
30720
|
}
|
|
30381
30721
|
async function dispatchReviewer(input, initialMessage) {
|
|
30382
|
-
const sessionId =
|
|
30722
|
+
const sessionId = randomUUID13();
|
|
30383
30723
|
console.log(`${TAG50} route target=rc-spawn sessionId=${sessionId.slice(0, 8)} sourceSession=${input.sessionId.slice(0, 8)}`);
|
|
30384
30724
|
const spawned = await managerRcSpawn({
|
|
30385
30725
|
sessionId,
|
|
@@ -30965,7 +31305,7 @@ var waGateway = new WaGateway({
|
|
|
30965
31305
|
});
|
|
30966
31306
|
return result.ok ? { ok: true, messageId: result.messageId } : { ok: false, error: result.error };
|
|
30967
31307
|
},
|
|
30968
|
-
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 }) => {
|
|
30969
31309
|
warnNonUuidAccount("channel-spawn", effectiveAccountId);
|
|
30970
31310
|
if (passive) {
|
|
30971
31311
|
const phoneHash = createHash7("sha256").update(senderId).digest("hex").slice(0, 12);
|
|
@@ -31018,6 +31358,33 @@ var waGateway = new WaGateway({
|
|
|
31018
31358
|
const managesAccount = managesAccountFor(effectiveAccountId, resolveReadStoreKey(accountId));
|
|
31019
31359
|
console.error(`[whatsapp-native] op=account-manager-route senderId=${senderId} managesAccount=${managesAccount} effectiveAccount=${effectiveAccountId} source=gate`);
|
|
31020
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
|
+
}
|
|
31021
31388
|
const req = buildWaSpawnRequest({
|
|
31022
31389
|
accountId: effectiveAccountId,
|
|
31023
31390
|
senderId,
|
|
@@ -32524,6 +32891,31 @@ var runIngestAuditTick = () => {
|
|
|
32524
32891
|
} catch (err) {
|
|
32525
32892
|
console.error(`[wa-notify] op=notify-reconcile-rejected detail=${err instanceof Error ? err.message : String(err)}`);
|
|
32526
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
|
+
}
|
|
32527
32919
|
};
|
|
32528
32920
|
registerLoop({
|
|
32529
32921
|
name: "wa-ingest-audit",
|
|
@@ -32729,8 +33121,42 @@ init({
|
|
|
32729
33121
|
console.error(`[whatsapp:route] op=dropped reason=no-effective-account senderId=${msg.senderPhone}`);
|
|
32730
33122
|
return;
|
|
32731
33123
|
}
|
|
33124
|
+
let publicAgentSlug;
|
|
32732
33125
|
if (decision.role === "public") {
|
|
32733
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;
|
|
32734
33160
|
}
|
|
32735
33161
|
try {
|
|
32736
33162
|
if (!decision.passive) void msg.composing().catch(() => {
|
|
@@ -32757,7 +33183,10 @@ init({
|
|
|
32757
33183
|
replyContext: msg.replyContext,
|
|
32758
33184
|
// Task 2234 — the gate's registered-party label, carried to the spawn so
|
|
32759
33185
|
// the session env has WA_SENDER_PARTY. Undefined for every other sender.
|
|
32760
|
-
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
|
|
32761
33190
|
});
|
|
32762
33191
|
} catch (err) {
|
|
32763
33192
|
console.error(
|