@rubytech/create-maxy-code 0.1.552 → 0.1.554
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/lib/routine-templates/dist/index.d.ts +15 -2
- package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/routine-templates/dist/index.js +25 -1
- package/payload/platform/lib/routine-templates/dist/index.js.map +1 -1
- package/payload/platform/lib/routine-templates/dist/roster.d.ts +76 -1
- package/payload/platform/lib/routine-templates/dist/roster.d.ts.map +1 -1
- package/payload/platform/lib/routine-templates/dist/roster.js +60 -3
- package/payload/platform/lib/routine-templates/dist/roster.js.map +1 -1
- package/payload/platform/lib/routine-templates/src/__tests__/roster.test.ts +93 -1
- package/payload/platform/lib/routine-templates/src/__tests__/seed.test.ts +74 -0
- package/payload/platform/lib/routine-templates/src/index.ts +25 -1
- package/payload/platform/lib/routine-templates/src/roster.ts +111 -2
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +22 -11
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +21 -10
- package/payload/platform/plugins/scheduling/PLUGIN.md +50 -4
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +51 -6
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.js +216 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.js +44 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.js +92 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js +210 -2
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/update-summary.test.js +18 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/update-summary.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.d.ts +86 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.js +240 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.js +47 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js +9 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts +103 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js +307 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.js +11 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +41 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-connector-busy-sync.test.js +84 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-connector-busy-sync.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.js +200 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js +21 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.js +208 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.d.ts +26 -2
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.js +51 -2
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +40 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +70 -5
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +67 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/platform/plugins/workflows/skills/workflow-manager/SKILL.md +4 -0
- package/payload/server/public/activity.html +5 -5
- package/payload/server/public/agents.html +4 -4
- package/payload/server/public/assets/{AdminLoginScreens-Bjcs9ta9.js → AdminLoginScreens-BDaJlf67.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-BDaJlf67.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-BDaJlf67.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-DUUw6WNs.js +2 -0
- package/payload/server/public/assets/AdminShell-DUUw6WNs.js.br +0 -0
- package/payload/server/public/assets/AdminShell-DUUw6WNs.js.gz +0 -0
- package/payload/server/public/assets/{activity-C8E8-EwQ.js → activity-JpRW4yeS.js} +1 -1
- package/payload/server/public/assets/activity-JpRW4yeS.js.br +0 -0
- package/payload/server/public/assets/activity-JpRW4yeS.js.gz +0 -0
- package/payload/server/public/assets/admin-BH4gL0c2.js +1 -0
- package/payload/server/public/assets/admin-BH4gL0c2.js.br +0 -0
- package/payload/server/public/assets/admin-BH4gL0c2.js.gz +0 -0
- package/payload/server/public/assets/{agents-DuN92iFb.js → agents-EtIviAPH.js} +1 -1
- package/payload/server/public/assets/agents-EtIviAPH.js.br +0 -0
- package/payload/server/public/assets/agents-EtIviAPH.js.gz +0 -0
- package/payload/server/public/assets/{arc-DaudCnXg.js → arc-DaI5MLTq.js} +1 -1
- package/payload/server/public/assets/arc-DaI5MLTq.js.br +0 -0
- package/payload/server/public/assets/arc-DaI5MLTq.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js +1 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js.br +0 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Dj9L_JR0.js → architectureDiagram-Q4EWVU46-xZ0gDnJQ.js} +1 -1
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-xZ0gDnJQ.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-xZ0gDnJQ.js.gz +0 -0
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BTXKYwrR.js → blockDiagram-DXYQGD6D-DwWtWBJp.js} +1 -1
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-DwWtWBJp.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-DwWtWBJp.js.gz +0 -0
- package/payload/server/public/assets/{browser-BxebdKbh.js → browser-DntnPrfU.js} +1 -1
- package/payload/server/public/assets/browser-DntnPrfU.js.br +0 -0
- package/payload/server/public/assets/browser-DntnPrfU.js.gz +0 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-BN7XeOWV.js → c4Diagram-AHTNJAMY-qRseEjtL.js} +1 -1
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-qRseEjtL.js.br +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-qRseEjtL.js.gz +0 -0
- package/payload/server/public/assets/calendar-DnmkfQAe.js +1 -0
- package/payload/server/public/assets/calendar-DnmkfQAe.js.br +0 -0
- package/payload/server/public/assets/calendar-DnmkfQAe.js.gz +0 -0
- package/payload/server/public/assets/channel-DnchwXmx.js +1 -0
- package/payload/server/public/assets/chat-_Ok0sVx2.js +1 -0
- package/payload/server/public/assets/chat-_Ok0sVx2.js.br +2 -0
- package/payload/server/public/assets/chat-_Ok0sVx2.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-udrHmjzu.js +1 -0
- package/payload/server/public/assets/chevron-left-udrHmjzu.js.br +0 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-BwEVlnxo.js → chunk-2KRD3SAO-B6koUoB7.js} +1 -1
- package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.gz +0 -0
- package/payload/server/public/assets/{chunk-336JU56O-DR5EUh9D.js → chunk-336JU56O-ByZrJI-3.js} +2 -2
- package/payload/server/public/assets/chunk-336JU56O-ByZrJI-3.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-ByZrJI-3.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-fNi5i3SA.js +1 -0
- package/payload/server/public/assets/chunk-426QAEUC-fNi5i3SA.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-fNi5i3SA.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-C5p3xTC6.js → chunk-4BX2VUAB-7sO95xR2.js} +1 -1
- package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4TB4RGXK-CqrBvvGI.js → chunk-4TB4RGXK-KqKMvkA_.js} +1 -1
- package/payload/server/public/assets/chunk-4TB4RGXK-KqKMvkA_.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-KqKMvkA_.js.gz +0 -0
- package/payload/server/public/assets/{chunk-55IACEB6-DDU_m1ra.js → chunk-55IACEB6-ggIJf_TC.js} +1 -1
- package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5FUZZQ4R-B21kX6ld.js → chunk-5FUZZQ4R-CEIokxZS.js} +1 -1
- package/payload/server/public/assets/chunk-5FUZZQ4R-CEIokxZS.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-CEIokxZS.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5PVQY5BW-CYusrVbq.js → chunk-5PVQY5BW-BEsb0aTb.js} +1 -1
- package/payload/server/public/assets/chunk-5PVQY5BW-BEsb0aTb.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-BEsb0aTb.js.gz +0 -0
- package/payload/server/public/assets/{chunk-67CJDMHE-9W0Qv0jm.js → chunk-67CJDMHE-LS8rUbii.js} +1 -1
- package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.br +2 -0
- package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.gz +0 -0
- package/payload/server/public/assets/{chunk-7N4EOEYR-B3gqydR3.js → chunk-7N4EOEYR-JKOVngS0.js} +1 -1
- package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.br +2 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.gz +0 -0
- package/payload/server/public/assets/{chunk-AA7GKIK3-DW8a-2NK.js → chunk-AA7GKIK3-CoXnTVK6.js} +1 -1
- package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.br +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.gz +0 -0
- package/payload/server/public/assets/{chunk-BSJP7CBP-DqXIO_5R.js → chunk-BSJP7CBP-CcsqObFg.js} +1 -1
- package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.gz +0 -0
- package/payload/server/public/assets/{chunk-CIAEETIT-BMJfgj2u.js → chunk-CIAEETIT-CpsybR7q.js} +1 -1
- package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.gz +0 -0
- package/payload/server/public/assets/{chunk-EDXVE4YY-CyjTyMkv.js → chunk-EDXVE4YY-CCCHYEbG.js} +1 -1
- package/payload/server/public/assets/chunk-EDXVE4YY-CCCHYEbG.js.br +2 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-CCCHYEbG.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ENJZ2VHE-B-k8uOTF.js → chunk-ENJZ2VHE-yVekovt2.js} +1 -1
- package/payload/server/public/assets/chunk-ENJZ2VHE-yVekovt2.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-yVekovt2.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FMBD7UC4-CdPjwbtf.js → chunk-FMBD7UC4-D27VnSCa.js} +1 -1
- package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FOC6F5B3-Dl6l1KAh.js → chunk-FOC6F5B3-C0tU2UFl.js} +1 -1
- package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ICPOFSXX-CKQWnR1l.js → chunk-ICPOFSXX-BmWvYe_5.js} +2 -2
- package/payload/server/public/assets/chunk-ICPOFSXX-BmWvYe_5.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-BmWvYe_5.js.gz +0 -0
- package/payload/server/public/assets/{chunk-K5T4RW27--g29_wjW.js → chunk-K5T4RW27-DIKxqyYw.js} +1 -1
- package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.gz +0 -0
- package/payload/server/public/assets/{chunk-KGLVRYIC-CI77ENeO.js → chunk-KGLVRYIC-CiL4YVLo.js} +1 -1
- package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.br +0 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.gz +0 -0
- package/payload/server/public/assets/{chunk-LIHQZDEY-CE-XByg6.js → chunk-LIHQZDEY-ejKezVlD.js} +1 -1
- package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ORNJ4GCN-DkjJQQSm.js → chunk-ORNJ4GCN-Cc0vqc-D.js} +1 -1
- package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.gz +0 -0
- package/payload/server/public/assets/{chunk-OYMX7WX6-Dis40FU5.js → chunk-OYMX7WX6-BE4b8qC9.js} +1 -1
- package/payload/server/public/assets/chunk-OYMX7WX6-BE4b8qC9.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-BE4b8qC9.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js +1 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.gz +0 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-DT3NLMic.js → chunk-U2HBQHQK-DcEL3so-.js} +1 -1
- package/payload/server/public/assets/chunk-U2HBQHQK-DcEL3so-.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-DcEL3so-.js.gz +0 -0
- package/payload/server/public/assets/{chunk-X2U36JSP-Dxaab1tD.js → chunk-X2U36JSP-D0X5qpg6.js} +1 -1
- package/payload/server/public/assets/chunk-X2U36JSP-D0X5qpg6.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-D0X5qpg6.js.gz +0 -0
- package/payload/server/public/assets/{chunk-XPW4576I-DtqJwn2x.js → chunk-XPW4576I-DZqqB9Zi.js} +1 -1
- package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.gz +0 -0
- package/payload/server/public/assets/{chunk-YZCP3GAM-CEEcRrOH.js → chunk-YZCP3GAM-BTxWHFTx.js} +1 -1
- package/payload/server/public/assets/chunk-YZCP3GAM-BTxWHFTx.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-BTxWHFTx.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ZZ45TVLE-CVhqjM4L.js → chunk-ZZ45TVLE-D8nE76c5.js} +1 -1
- package/payload/server/public/assets/chunk-ZZ45TVLE-D8nE76c5.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-D8nE76c5.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D9OvkaTQ.js +1 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D9OvkaTQ.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D9OvkaTQ.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BEuoBAgN.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BEuoBAgN.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BEuoBAgN.js.gz +0 -0
- package/payload/server/public/assets/clock-BmdrE7vz.js +1 -0
- package/payload/server/public/assets/clock-BmdrE7vz.js.br +0 -0
- package/payload/server/public/assets/clock-BmdrE7vz.js.gz +0 -0
- package/payload/server/public/assets/clone-C-YfAPQ_.js +1 -0
- package/payload/server/public/assets/{copy-DCDHXq3O.js → copy-BiOI6GeQ.js} +1 -1
- package/payload/server/public/assets/copy-BiOI6GeQ.js.br +0 -0
- package/payload/server/public/assets/copy-BiOI6GeQ.js.gz +0 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-kEHVkDNn.js → cose-bilkent-S5V4N54A-D-95BzXL.js} +1 -1
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.gz +0 -0
- package/payload/server/public/assets/{dagre-BgQxtxH1.js → dagre-CrjQCEN9.js} +1 -1
- package/payload/server/public/assets/dagre-CrjQCEN9.js.br +0 -0
- package/payload/server/public/assets/dagre-CrjQCEN9.js.gz +0 -0
- package/payload/server/public/assets/{dagre-KV5264BT-CgxwoTcv.js → dagre-KV5264BT-mcGXOajA.js} +1 -1
- package/payload/server/public/assets/dagre-KV5264BT-mcGXOajA.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-mcGXOajA.js.gz +0 -0
- package/payload/server/public/assets/data-Za62pAv5.js +1 -0
- package/payload/server/public/assets/data-Za62pAv5.js.br +2 -0
- package/payload/server/public/assets/data-Za62pAv5.js.gz +0 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-MEZ1cQGO.js → diagram-5BDNPKRD-Colq2XR9.js} +1 -1
- package/payload/server/public/assets/diagram-5BDNPKRD-Colq2XR9.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-Colq2XR9.js.gz +0 -0
- package/payload/server/public/assets/{diagram-G4DWMVQ6-DbZg9hWP.js → diagram-G4DWMVQ6-DafrIgN8.js} +1 -1
- package/payload/server/public/assets/diagram-G4DWMVQ6-DafrIgN8.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DafrIgN8.js.gz +0 -0
- package/payload/server/public/assets/{diagram-MMDJMWI5-Bb1y8DFy.js → diagram-MMDJMWI5-CD9pSd2z.js} +1 -1
- package/payload/server/public/assets/diagram-MMDJMWI5-CD9pSd2z.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-CD9pSd2z.js.gz +0 -0
- package/payload/server/public/assets/{diagram-TYMM5635-tbStCw5U.js → diagram-TYMM5635-DqhsN-Il.js} +1 -1
- package/payload/server/public/assets/diagram-TYMM5635-DqhsN-Il.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-DqhsN-Il.js.gz +0 -0
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-ClEFo_Bw.js → erDiagram-SMLLAGMA-mf9kQrIs.js} +1 -1
- package/payload/server/public/assets/erDiagram-SMLLAGMA-mf9kQrIs.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-mf9kQrIs.js.gz +0 -0
- package/payload/server/public/assets/{file-text-zQgEQWCF.js → file-text-s2dqE-bu.js} +1 -1
- package/payload/server/public/assets/file-text-s2dqE-bu.js.br +0 -0
- package/payload/server/public/assets/file-text-s2dqE-bu.js.gz +0 -0
- package/payload/server/public/assets/{flatten-Bu-b1uTY.js → flatten-BtIc9jX7.js} +1 -1
- package/payload/server/public/assets/flatten-BtIc9jX7.js.br +0 -0
- package/payload/server/public/assets/flatten-BtIc9jX7.js.gz +0 -0
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-9yr262Ji.js → flowDiagram-DWJPFMVM-CJLkGmFm.js} +1 -1
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-CJLkGmFm.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-CJLkGmFm.js.gz +0 -0
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-ZCSA0DtG.js → ganttDiagram-T4ZO3ILL-JV6PUFic.js} +1 -1
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-JV6PUFic.js.br +0 -0
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-ZCSA0DtG.js.gz → ganttDiagram-T4ZO3ILL-JV6PUFic.js.gz} +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js +1 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js.br +0 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-0KvpzpaU.js → gitGraphDiagram-UUTBAWPF-JhiumTtl.js} +1 -1
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-JhiumTtl.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-JhiumTtl.js.gz +0 -0
- package/payload/server/public/assets/{graph-CFCEh_YI.js → graph-ClX4Zn0s.js} +2 -2
- package/payload/server/public/assets/graph-ClX4Zn0s.js.br +0 -0
- package/payload/server/public/assets/graph-ClX4Zn0s.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-CA1UcDuS.js → graph-labels-BdLfJumr.js} +1 -1
- package/payload/server/public/assets/graph-labels-BdLfJumr.js.br +0 -0
- package/payload/server/public/assets/graph-labels-BdLfJumr.js.gz +0 -0
- package/payload/server/public/assets/{graphlib-B3SsCJOd.js → graphlib-Z7cApv13.js} +1 -1
- package/payload/server/public/assets/graphlib-Z7cApv13.js.br +0 -0
- package/payload/server/public/assets/graphlib-Z7cApv13.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js +1 -0
- package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-B-6k2hmd.js +2 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-B-6k2hmd.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-B-6k2hmd.js.gz +0 -0
- package/payload/server/public/assets/{isEmpty-CjH0UASp.js → isEmpty-Bu4fZ8Kf.js} +1 -1
- package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.br +0 -0
- package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.gz +0 -0
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DsDoNemz.js → ishikawaDiagram-UXIWVN3A-CQIGY8NI.js} +1 -1
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CQIGY8NI.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CQIGY8NI.js.gz +0 -0
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-xyayGhw3.js → journeyDiagram-VCZTEJTY-O5rEHC1o.js} +1 -1
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-O5rEHC1o.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-O5rEHC1o.js.gz +0 -0
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DuV3Go_1.js → kanban-definition-6JOO6SKY-BS7huuG7.js} +1 -1
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-BS7huuG7.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-BS7huuG7.js.gz +0 -0
- package/payload/server/public/assets/{line-Cpb8GRkf.js → line-DjHTnO_W.js} +1 -1
- package/payload/server/public/assets/line-DjHTnO_W.js.br +0 -0
- package/payload/server/public/assets/line-DjHTnO_W.js.gz +0 -0
- package/payload/server/public/assets/{linear-l39GooQ5.js → linear-RvwZxFzh.js} +1 -1
- package/payload/server/public/assets/linear-RvwZxFzh.js.br +0 -0
- package/payload/server/public/assets/linear-RvwZxFzh.js.gz +0 -0
- package/payload/server/public/assets/{mermaid-parser.core-9hkxt3j1.js → mermaid-parser.core-CUoZE61Z.js} +2 -2
- package/payload/server/public/assets/mermaid-parser.core-CUoZE61Z.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-CUoZE61Z.js.gz +0 -0
- package/payload/server/public/assets/{mermaid.core-iR6TQesD.js → mermaid.core-CHquUUrw.js} +3 -3
- package/payload/server/public/assets/mermaid.core-CHquUUrw.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-CHquUUrw.js.gz +0 -0
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-LCKhTYzs.js → mindmap-definition-QFDTVHPH-pHUJa3IP.js} +1 -1
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-pHUJa3IP.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-pHUJa3IP.js.gz +0 -0
- package/payload/server/public/assets/{operator-hFXPDc2X.js → operator-BQtleyx3.js} +1 -1
- package/payload/server/public/assets/operator-BQtleyx3.js.br +0 -0
- package/payload/server/public/assets/operator-BQtleyx3.js.gz +0 -0
- package/payload/server/public/assets/{ordinal-D6D6WcTC.js → ordinal-C2TEWKNu.js} +1 -1
- package/payload/server/public/assets/ordinal-C2TEWKNu.js.br +0 -0
- package/payload/server/public/assets/ordinal-C2TEWKNu.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js +1 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js.br +0 -0
- package/payload/server/public/assets/{page-C8jyPH_3.js → page-BkMbmVu6.js} +1 -1
- package/payload/server/public/assets/page-BkMbmVu6.js.br +0 -0
- package/payload/server/public/assets/page-BkMbmVu6.js.gz +0 -0
- package/payload/server/public/assets/{page-ne7I_r9L.js → page-C-jQaGZ4.js} +3 -3
- package/payload/server/public/assets/page-C-jQaGZ4.js.br +0 -0
- package/payload/server/public/assets/page-C-jQaGZ4.js.gz +0 -0
- package/payload/server/public/assets/{pdf-render-DanMu_cf.js → pdf-render-Bwg_xv1L.js} +1 -1
- package/payload/server/public/assets/pdf-render-Bwg_xv1L.js.br +0 -0
- package/payload/server/public/assets/{pdf-render-DanMu_cf.js.gz → pdf-render-Bwg_xv1L.js.gz} +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js +1 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js.br +0 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-Oo7wgo0C.js → pieDiagram-DEJITSTG-DRIRqqhQ.js} +1 -1
- package/payload/server/public/assets/pieDiagram-DEJITSTG-DRIRqqhQ.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-DRIRqqhQ.js.gz +0 -0
- package/payload/server/public/assets/play-Da69rmat.js +1 -0
- package/payload/server/public/assets/play-Da69rmat.js.br +0 -0
- package/payload/server/public/assets/play-Da69rmat.js.gz +0 -0
- package/payload/server/public/assets/{public-BgnqjAal.js → public-BPlCLx7p.js} +1 -1
- package/payload/server/public/assets/public-BPlCLx7p.js.br +0 -0
- package/payload/server/public/assets/public-BPlCLx7p.js.gz +0 -0
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-B2hs2ord.js → quadrantDiagram-34T5L4WZ-7WHBrI_9.js} +1 -1
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-7WHBrI_9.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-7WHBrI_9.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js +1 -0
- package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js.br +0 -0
- package/payload/server/public/assets/{reduce-BtXXK8Ma.js → reduce-BGpN5lgn.js} +1 -1
- package/payload/server/public/assets/reduce-BGpN5lgn.js.br +0 -0
- package/payload/server/public/assets/reduce-BGpN5lgn.js.gz +0 -0
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-B8UkCUzW.js → requirementDiagram-MS252O5E-CatBEoHm.js} +1 -1
- package/payload/server/public/assets/requirementDiagram-MS252O5E-CatBEoHm.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-CatBEoHm.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-DfJWjXAg.js → rotate-ccw-DpTlNy-M.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-DpTlNy-M.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-DpTlNy-M.js.gz +0 -0
- package/payload/server/public/assets/routines-YlXtcZNz.js +2 -0
- package/payload/server/public/assets/routines-YlXtcZNz.js.br +0 -0
- package/payload/server/public/assets/routines-YlXtcZNz.js.gz +0 -0
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-Cojqqz7t.js → sankeyDiagram-XADWPNL6-DfefvhQ6.js} +1 -1
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-DfefvhQ6.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-DfefvhQ6.js.gz +0 -0
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-C7ODsPjE.js → sequenceDiagram-FGHM5R23-51FmBwFt.js} +1 -1
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-51FmBwFt.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-51FmBwFt.js.gz +0 -0
- package/payload/server/public/assets/{skills-D-6EbgfP.js → skills-CX4p0a2M.js} +1 -1
- package/payload/server/public/assets/skills-CX4p0a2M.js.br +0 -0
- package/payload/server/public/assets/skills-CX4p0a2M.js.gz +0 -0
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BC8a_P9c.js → stateDiagram-FHFEXIEX-CPgxX16e.js} +1 -1
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-CPgxX16e.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-CPgxX16e.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DrQl9xC9.js +1 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DrQl9xC9.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DrQl9xC9.js.gz +0 -0
- package/payload/server/public/assets/{tasks-DnN5Fyds.js → tasks-B51N5DIO.js} +2 -2
- package/payload/server/public/assets/tasks-B51N5DIO.js.br +0 -0
- package/payload/server/public/assets/tasks-B51N5DIO.js.gz +0 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BMxUC3ri.js → timeline-definition-GMOUNBTQ-DC4gTR2m.js} +1 -1
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DC4gTR2m.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DC4gTR2m.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js +1 -0
- package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js.br +0 -0
- package/payload/server/public/assets/{triangle-alert-eh9UOKDT.js → triangle-alert-CkE_tzl3.js} +1 -1
- package/payload/server/public/assets/triangle-alert-CkE_tzl3.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CkE_tzl3.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-Bz9OJHBb.js → useCopyFeedback-3B_lN6ri.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-3B_lN6ri.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-3B_lN6ri.js.gz +0 -0
- package/payload/server/public/assets/{useMediaQuery-CNxsjKZp.css → useMediaQuery-AAUlD_Av.css} +1 -1
- package/payload/server/public/assets/useMediaQuery-AAUlD_Av.css.br +0 -0
- package/payload/server/public/assets/useMediaQuery-AAUlD_Av.css.gz +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-BaDpMYxX.js → useVoiceRecorder-DtP2IN-j.js} +2 -2
- package/payload/server/public/assets/useVoiceRecorder-DtP2IN-j.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DtP2IN-j.js.gz +0 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-BsRGBF0K.js → vennDiagram-DHZGUBPP-CADQLMv_.js} +1 -1
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-CADQLMv_.js.br +0 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-BsRGBF0K.js.gz → vennDiagram-DHZGUBPP-CADQLMv_.js.gz} +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js +1 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js.br +0 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-oQh9A-Mq.js → wardleyDiagram-NUSXRM2D-Cs5AyyGo.js} +1 -1
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-Cs5AyyGo.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-Cs5AyyGo.js.gz +0 -0
- package/payload/server/public/assets/{wrench-BO-l46rF.js → wrench-B_4KM-f7.js} +1 -1
- package/payload/server/public/assets/wrench-B_4KM-f7.js.br +0 -0
- package/payload/server/public/assets/wrench-B_4KM-f7.js.gz +0 -0
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-0K87OmFI.js → xychartDiagram-5P7HB3ND-Bp_VDbBp.js} +1 -1
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Bp_VDbBp.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Bp_VDbBp.js.gz +0 -0
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +7 -8
- 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 +15 -16
- package/payload/server/public/operator.html +15 -15
- 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 +73 -16
- package/payload/server/public/assets/AdminLoginScreens-Bjcs9ta9.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-Bjcs9ta9.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-DVBAMUCy.js +0 -2
- package/payload/server/public/assets/AdminShell-DVBAMUCy.js.br +0 -0
- package/payload/server/public/assets/AdminShell-DVBAMUCy.js.gz +0 -0
- package/payload/server/public/assets/activity-C8E8-EwQ.js.br +0 -0
- package/payload/server/public/assets/activity-C8E8-EwQ.js.gz +0 -0
- package/payload/server/public/assets/admin-CeWAlpRS.js +0 -1
- package/payload/server/public/assets/admin-CeWAlpRS.js.br +0 -0
- package/payload/server/public/assets/admin-CeWAlpRS.js.gz +0 -0
- package/payload/server/public/assets/agents-DuN92iFb.js.br +0 -0
- package/payload/server/public/assets/agents-DuN92iFb.js.gz +0 -0
- 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 +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
- 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-BTXKYwrR.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-BTXKYwrR.js.gz +0 -0
- package/payload/server/public/assets/browser-BxebdKbh.js.br +0 -0
- package/payload/server/public/assets/browser-BxebdKbh.js.gz +0 -0
- 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-BtFZQ5Np.js +0 -1
- package/payload/server/public/assets/calendar-BtFZQ5Np.js.br +0 -0
- package/payload/server/public/assets/calendar-BtFZQ5Np.js.gz +0 -0
- package/payload/server/public/assets/channel-D08XWP9e.js +0 -1
- package/payload/server/public/assets/chat-CGIwynaH.js +0 -1
- package/payload/server/public/assets/chat-CGIwynaH.js.br +0 -3
- package/payload/server/public/assets/chat-CGIwynaH.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-DaNP1zDb.js +0 -1
- package/payload/server/public/assets/chevron-left-DaNP1zDb.js.br +0 -0
- package/payload/server/public/assets/chevron-right-BbbuTUnt.js +0 -1
- package/payload/server/public/assets/chevron-right-BbbuTUnt.js.br +0 -0
- 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-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 +0 -1
- 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-C5p3xTC6.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.gz +0 -0
- 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-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-B21kX6ld.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-B21kX6ld.js.gz +0 -0
- 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-9W0Qv0jm.js.br +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.gz +0 -0
- 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-DW8a-2NK.js.br +0 -4
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
- 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-BMJfgj2u.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.gz +0 -0
- 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-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-CdPjwbtf.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.gz +0 -0
- 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-CKQWnR1l.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-CKQWnR1l.js.gz +0 -0
- 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-CI77ENeO.js.br +0 -3
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
- 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-DkjJQQSm.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.gz +0 -0
- 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 +0 -1
- 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-DT3NLMic.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-DT3NLMic.js.gz +0 -0
- 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-DtqJwn2x.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.gz +0 -0
- 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-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 +0 -1
- 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 +0 -1
- 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-CfDdatjp.js +0 -1
- package/payload/server/public/assets/clock-CfDdatjp.js.br +0 -0
- package/payload/server/public/assets/clock-CfDdatjp.js.gz +0 -0
- package/payload/server/public/assets/clone-B6yMH1PX.js +0 -1
- package/payload/server/public/assets/clone-B6yMH1PX.js.br +0 -0
- package/payload/server/public/assets/copy-DCDHXq3O.js.br +0 -0
- package/payload/server/public/assets/copy-DCDHXq3O.js.gz +0 -0
- 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-BgQxtxH1.js.br +0 -0
- package/payload/server/public/assets/dagre-BgQxtxH1.js.gz +0 -0
- 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-BchSWOju.js +0 -1
- package/payload/server/public/assets/data-BchSWOju.js.br +0 -1
- package/payload/server/public/assets/data-BchSWOju.js.gz +0 -0
- 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-DbZg9hWP.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DbZg9hWP.js.gz +0 -0
- 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-tbStCw5U.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-tbStCw5U.js.gz +0 -0
- 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-text-zQgEQWCF.js.br +0 -0
- package/payload/server/public/assets/file-text-zQgEQWCF.js.gz +0 -0
- 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-9yr262Ji.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-9yr262Ji.js.gz +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-ZCSA0DtG.js.br +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
- 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-CFCEh_YI.js.br +0 -0
- package/payload/server/public/assets/graph-CFCEh_YI.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-CA1UcDuS.js.br +0 -0
- package/payload/server/public/assets/graph-labels-CA1UcDuS.js.gz +0 -0
- 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 +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-B607bZBJ.js +0 -2
- 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-CjH0UASp.js.br +0 -0
- package/payload/server/public/assets/isEmpty-CjH0UASp.js.gz +0 -0
- 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-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-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-Cpb8GRkf.js.br +0 -0
- package/payload/server/public/assets/line-Cpb8GRkf.js.gz +0 -0
- 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/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-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-LCKhTYzs.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-LCKhTYzs.js.gz +0 -0
- package/payload/server/public/assets/operator-hFXPDc2X.js.br +0 -0
- package/payload/server/public/assets/operator-hFXPDc2X.js.gz +0 -0
- 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 +0 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
- package/payload/server/public/assets/page-C8jyPH_3.js.br +0 -0
- package/payload/server/public/assets/page-C8jyPH_3.js.gz +0 -0
- package/payload/server/public/assets/page-ne7I_r9L.js.br +0 -0
- package/payload/server/public/assets/page-ne7I_r9L.js.gz +0 -0
- package/payload/server/public/assets/pdf-render-DanMu_cf.js.br +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
- 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/play-Ep0SZTbr.js +0 -1
- package/payload/server/public/assets/play-Ep0SZTbr.js.br +0 -0
- package/payload/server/public/assets/play-Ep0SZTbr.js.gz +0 -0
- package/payload/server/public/assets/public-BgnqjAal.js.br +0 -0
- package/payload/server/public/assets/public-BgnqjAal.js.gz +0 -0
- 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 +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
- 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-B8UkCUzW.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-B8UkCUzW.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-DfJWjXAg.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-DfJWjXAg.js.gz +0 -0
- package/payload/server/public/assets/routines-OGFXwTFO.js +0 -2
- package/payload/server/public/assets/routines-OGFXwTFO.js.br +0 -0
- package/payload/server/public/assets/routines-OGFXwTFO.js.gz +0 -0
- 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-C7ODsPjE.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-C7ODsPjE.js.gz +0 -0
- package/payload/server/public/assets/skills-D-6EbgfP.js.br +0 -0
- package/payload/server/public/assets/skills-D-6EbgfP.js.gz +0 -0
- 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 +0 -1
- 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-DnN5Fyds.js.br +0 -0
- package/payload/server/public/assets/tasks-DnN5Fyds.js.gz +0 -0
- 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 +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-eh9UOKDT.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-eh9UOKDT.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-Bz9OJHBb.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-Bz9OJHBb.js.gz +0 -0
- package/payload/server/public/assets/useMediaQuery-CNxsjKZp.css.br +0 -0
- package/payload/server/public/assets/useMediaQuery-CNxsjKZp.css.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BaDpMYxX.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BaDpMYxX.js.gz +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-BsRGBF0K.js.br +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js +0 -1
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
- 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-BO-l46rF.js.br +0 -0
- package/payload/server/public/assets/wrench-BO-l46rF.js.gz +0 -0
- 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/assets/{_baseFor-B12He5Rp.js → _baseFor-Be3EKK3K.js} +0 -0
- /package/payload/server/public/assets/{_baseFor-B12He5Rp.js.br → _baseFor-Be3EKK3K.js.br} +0 -0
- /package/payload/server/public/assets/{_baseFor-B12He5Rp.js.gz → _baseFor-Be3EKK3K.js.gz} +0 -0
- /package/payload/server/public/assets/{array-DO1uCttT.js → array-X0JlPOfd.js} +0 -0
- /package/payload/server/public/assets/{array-DO1uCttT.js.br → array-X0JlPOfd.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js → cytoscape.esm-CI2IWMLB.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js.br → cytoscape.esm-CI2IWMLB.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js.gz → cytoscape.esm-CI2IWMLB.js.gz} +0 -0
- /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js → defaultLocale-B6RGN4id.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js.br → defaultLocale-B6RGN4id.js.br} +0 -0
- /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js.gz → defaultLocale-B6RGN4id.js.gz} +0 -0
- /package/payload/server/public/assets/{dist-DlU7AEeD.js → dist-QvbmK1IP.js} +0 -0
- /package/payload/server/public/assets/{dist-DlU7AEeD.js.br → dist-QvbmK1IP.js.br} +0 -0
- /package/payload/server/public/assets/{dist-DlU7AEeD.js.gz → dist-QvbmK1IP.js.gz} +0 -0
- /package/payload/server/public/assets/{file-download-DbNIjWiK.js → file-download-DiQesOd2.js} +0 -0
- /package/payload/server/public/assets/{file-download-DbNIjWiK.js.br → file-download-DiQesOd2.js.br} +0 -0
- /package/payload/server/public/assets/{file-download-DbNIjWiK.js.gz → file-download-DiQesOd2.js.gz} +0 -0
- /package/payload/server/public/assets/{init-BCRlEgNP.js → init-BmUWJJHz.js} +0 -0
- /package/payload/server/public/assets/{init-BCRlEgNP.js.br → init-BmUWJJHz.js.br} +0 -0
- /package/payload/server/public/assets/{init-BCRlEgNP.js.gz → init-BmUWJJHz.js.gz} +0 -0
- /package/payload/server/public/assets/{katex-gkTaZgi6.js → katex-BjZuzSQn.js} +0 -0
- /package/payload/server/public/assets/{katex-gkTaZgi6.js.br → katex-BjZuzSQn.js.br} +0 -0
- /package/payload/server/public/assets/{katex-gkTaZgi6.js.gz → katex-BjZuzSQn.js.gz} +0 -0
- /package/payload/server/public/assets/{path-DTmzQFjQ.js → path-CoPyR7c2.js} +0 -0
- /package/payload/server/public/assets/{path-DTmzQFjQ.js.br → path-CoPyR7c2.js.br} +0 -0
- /package/payload/server/public/assets/{path-DTmzQFjQ.js.gz → path-CoPyR7c2.js.gz} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js → preload-helper-BJ2zoBc3.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.br → preload-helper-BJ2zoBc3.js.br} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.gz → preload-helper-BJ2zoBc3.js.gz} +0 -0
- /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js → rough.esm-jSt7UMyi.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js.br → rough.esm-jSt7UMyi.js.br} +0 -0
- /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js.gz → rough.esm-jSt7UMyi.js.gz} +0 -0
- /package/payload/server/public/assets/{src-9CNk4JU0.js → src-C2WwTWSY.js} +0 -0
- /package/payload/server/public/assets/{src-9CNk4JU0.js.br → src-C2WwTWSY.js.br} +0 -0
- /package/payload/server/public/assets/{src-9CNk4JU0.js.gz → src-C2WwTWSY.js.gz} +0 -0
- /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js → useMediaQuery-CLxecNeT.js} +0 -0
- /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js.br → useMediaQuery-CLxecNeT.js.br} +0 -0
- /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js.gz → useMediaQuery-CLxecNeT.js.gz} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-CltuBf4Z.js";import{O as t,X as n,at as r,ct as i,k as a,nt as o,ot as s,r as c,v as l,w as u}from"./useMediaQuery-_mMln3Fu.js";import{D as d,O as f,k as p,t as m}from"./AdminShell-DVBAMUCy.js";import{t as h}from"./triangle-alert-eh9UOKDT.js";var g=s(),_=e(i(),1),v=o(),y=`—`;function b(e){switch(e){case`waiting`:return`Waiting`;case`never-run`:return`Never run`;case`never-succeeded`:return`Never succeeded`;case`failing`:return`Failing`;case`stalled`:return`Stalled`;case`running`:return`Running`;case`ok`:return`Healthy`}}var x={waiting:`Armed and not due yet. It has no start-up run and its first interval has not elapsed, so it has correctly not fired.`,"never-run":`Its interval has elapsed and it still has not fired once. This is not the same as waiting its turn.`,"never-succeeded":`It has fired, and not one run has finished. The work this loop exists to do has never happened.`,failing:`It worked before and is failing now.`,stalled:`It has not started within three of its own intervals. Something is holding it up.`,running:`A run is in progress right now.`,ok:`The last run finished and the next is due within the interval.`},S=new Set([`never-run`,`never-succeeded`,`failing`,`stalled`]),C=10;function w(e){return e===null||!Number.isFinite(e)?y:`${e.toFixed(1)}%`}function T(e){return e<6e4?`${Math.round(e/1e3)}s`:e<36e5?`${Math.round(e/6e4)}m`:`${Math.round(e/36e5)}h`}function E(e,t){if(e===null)return y;let n=t-e;return n<0?`in ${T(-n)}`:n<6e4?`${Math.round(n/1e3)}s ago`:n<36e5?`${Math.round(n/6e4)}m ago`:`${Math.round(n/36e5)}h ago`}function D(e,t){if(e===null)return y;let n=e-t;return n>=0?`in ${T(n)}`:`overdue by ${T(-n)}`}function ee({loops:e,nowMs:t=Date.now()}){let[n,r]=(0,_.useState)(!1);if(!e)return(0,v.jsxs)(`section`,{className:`activity-loops`,children:[(0,v.jsx)(`h2`,{className:`activity-loops-heading`,children:`Scheduled work`}),(0,v.jsx)(`p`,{className:`activity-loops-empty`,children:`Scheduled work could not be read from the server.`})]});let i=e.armed-e.rows.length,a=e.rows.filter(e=>S.has(e.state)),o=e.rows.filter(e=>!S.has(e.state)&&typeof e.cpuPct==`number`&&e.cpuPct>=C),s=n?e.rows:[...a,...o];return(0,v.jsxs)(`section`,{className:`activity-loops`,children:[(0,v.jsx)(`h2`,{className:`activity-loops-heading`,children:`Scheduled work`}),(0,v.jsxs)(`p`,{className:`activity-loops-sub`,children:[e.armed,` `,e.armed===1?`loop`:`loops`,` armed`,a.length>0?` · ${a.length} ${a.length===1?`needs`:`need`} attention`:` · all healthy`,o.length>0&&` · ${o.length} using significant processor`,`. `,(0,v.jsx)(`button`,{type:`button`,className:`activity-loops-toggle`,"aria-expanded":n,onClick:()=>r(e=>!e),children:n?`Show less`:`Show all`})]}),typeof e.processPct==`number`&&(0,v.jsxs)(`p`,{className:`activity-loops-cpu`,children:[`Server process at `,e.processPct.toFixed(1),`% of one core`,typeof e.attributedPct==`number`&&(0,v.jsxs)(v.Fragment,{children:[` · these loops explain `,e.attributedPct.toFixed(1),`%`]}),typeof e.unattributedPct==`number`&&e.unattributedPct>=1&&(0,v.jsxs)(v.Fragment,{children:[` · `,(0,v.jsxs)(`strong`,{children:[e.unattributedPct.toFixed(1),`% is not from these loops`]})]})]}),i>0&&(0,v.jsxs)(`p`,{className:`activity-loops-omission`,role:`status`,children:[i,` armed `,i===1?`loop is`:`loops are`,` missing from this list. The server armed `,e.armed,` but sent `,e.rows.length,`.`]}),s.length===0?null:(0,v.jsx)(`div`,{className:`activity-table-scroll`,children:(0,v.jsxs)(`table`,{className:`activity-table`,children:[(0,v.jsx)(`thead`,{children:(0,v.jsxs)(`tr`,{children:[(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Loop`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`State`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Every`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Last run`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Last OK`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Took`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`CPU`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Runs`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Produced`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Next due`})]})}),(0,v.jsx)(`tbody`,{children:s.map(e=>(0,v.jsxs)(`tr`,{className:S.has(e.state)?`activity-loop-row activity-loop-unhealthy`:`activity-loop-row`,children:[(0,v.jsx)(`td`,{className:`activity-td`,children:e.name}),(0,v.jsx)(`td`,{className:`activity-td`,title:x[e.state],children:(0,v.jsxs)(`span`,{className:`activity-state`,children:[(0,v.jsx)(`span`,{className:e.state===`ok`?`activity-state-dot is-healthy`:S.has(e.state)?`activity-state-dot is-unhealthy`:`activity-state-dot`,"aria-hidden":`true`}),b(e.state)]})}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:T(e.intervalMs)}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:E(e.lastStartMs,t)}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:E(e.lastSuccessMs,t)}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:e.lastDurationMs===null?y:`${e.lastDurationMs} ms`}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,title:e.cpuAttributable?e.detached?`Includes the processor time of the separate process this loop starts.`:void 0:`This loop waits on other work while it runs, so the processor time it uses cannot be separated from the rest of the server.`,children:w(e.cpuPct)}),(0,v.jsxs)(`td`,{className:`activity-td activity-num`,children:[e.successCount,`/`,e.runCount]}),(0,v.jsx)(`td`,{className:`activity-td activity-loop-note`,children:(0,v.jsx)(`span`,{className:`activity-loop-note-text`,title:e.lastError??e.lastNote??void 0,children:e.lastError??e.lastNote??y})}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:D(e.nextDueMs,t)})]},e.name))})]})}),(0,v.jsxs)(`dl`,{className:`activity-legend`,children:[(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,children:`Runs`}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:`Finished runs out of attempted runs since the server started. 0 out of a large number means it has tried many times and never once finished.`})]}),(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,children:`CPU`}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:`Share of one processor core this loop is using, measured between the last two refreshes. It includes any separate process the loop starts, and can pass 100% because those run alongside each other. A dash means it could not be measured: the loop waits on other work while it runs, so its share cannot be separated from the rest of the server.`})]}),(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,children:y}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:`Not measured. It does not mean zero.`})]})]})]})}var O=`maxy-admin-session-key`;function te(e){switch(e.costUnavailable){case`metering-failed`:return`Cost could not be calculated: ${e.meteringError??`the transcript could not be read`}`;case`model-not-priced`:return`No published price for this model, so cost cannot be estimated.`;case`no-transcript`:return`This session has no transcript yet, so there is nothing to cost.`;default:return}}var k=[{key:`lastMessageAt`,label:`Last activity`,dir:-1},{key:`activeMsInRange`,label:`Active time`,dir:-1},{key:`costGbp`,label:`Cost`,dir:-1},{key:`accountId`,label:`Account name`,dir:1}],A=[{key:`title`,label:`Session`,help:`The conversation name, or its short id when it has none yet.`},{key:`model`,label:`Model`,help:`The model that answered the most recent turn.`},{key:`status`,label:`Status`,help:`What the process is doing right now.`},{key:`activeMsInRange`,label:`Active`,help:`Time this session spent thinking, writing and running tools inside the selected range. This is worked time, not elapsed time.`},{key:`ageMs`,label:`Age`,help:`How long ago this conversation started. Wall-clock, so it counts every hour nobody was working.`},{key:`lastMessageAt`,label:`Last activity`,help:`The clock time of the most recent message, in your timezone. A date appears once it is not today.`},{key:`turnCount`,label:`Turns`,help:`Messages exchanged. A trailing + means the count is a minimum — the conversation is too long to count exactly.`},{key:`rssKb`,label:`RAM`,help:`Memory held by this session and all its helper processes together.`},{key:`cpuPct`,label:`CPU (avg)`,help:`AVERAGE share of one processor core over the last census interval, up to 60 seconds. It is not a reading of this instant, so a session that answered a turn a minute ago still shows a high figure while sitting quiet now. Can exceed 100% because a session runs many processes at once.`},{key:`tokensInRange`,label:`Tokens`,help:`Total tokens billed inside the selected range, added up across every day in it. A cumulative total, not the size of the conversation the model currently reads back.`},{key:`costGbp`,label:`Cost`,help:`Estimated spend inside the selected range, at published prices for this model.`}],j=[`activeMsInRange`,`lastMessageAt`,`cpuPct`,`tokensInRange`],M={label:`Account`,help:`The business this session belongs to. "untagged" means the session records no account.`};function ne(e,t){let n=t?.[e];return n&&n.trim()!==``?n:e.slice(0,8)}var N=`—`;function P(e){if(e===null||!Number.isFinite(e)||e<0)return N;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function F(e){return e===null||!Number.isFinite(e)?N:`${(e/1024/1024).toFixed(1)} GB`}function I(e,t,n){if(!e)return N;let r=Date.parse(e);if(!Number.isFinite(r))return N;let i=u(new Date(r),n),a=u(new Date(t),n),o=`${String(i.hh).padStart(2,`0`)}:${String(i.mm).padStart(2,`0`)}`;return i.y===a.y&&i.m===a.m&&i.d===a.d?o:`${i.d} ${L[i.m-1]} ${o}`}var L=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function R(e){return e===null||!Number.isFinite(e)?N:`${e.toFixed(1)}%`}function z(e){return e===null||!Number.isFinite(e)?N:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(2)}M`}function B(e){return e===null||!Number.isFinite(e)?N:`£${e.toFixed(2)}`}function V(e){if(e===null||!Number.isFinite(e)||e<0)return N;let t=Math.floor(e/6e4);return`${Math.floor(t/60)}h ${t%60}m`}function H(e,t,n,r){let i=e[n],a=t[n];if(i===null&&a===null)return 0;if(i===null)return 1;if(a===null)return-1;if(n===`lastMessageAt`){let e=Date.parse(String(i)),t=Date.parse(String(a));return!Number.isFinite(e)&&!Number.isFinite(t)?0:Number.isFinite(e)?Number.isFinite(t)?(e-t)*r:-1:1}return typeof i==`number`&&typeof a==`number`?(i-a)*r:String(i).localeCompare(String(a))*r}function U(e){return e.toISOString().slice(0,10)}function W(e){let t=e.getUTCFullYear(),n=e.getUTCMonth();return{from:U(new Date(Date.UTC(t,n,1))),to:U(new Date(Date.UTC(t,n+1,0)))}}function G(e,t){let n=new Date(`${e}T00:00:00.000Z`);return W(new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth()+t,1)))}function K(e,t){return{from:U(new Date(t-(e-1)*864e5)),to:U(new Date(t))}}function q(e){return new Date(`${e}T00:00:00.000Z`).toLocaleString(`en-GB`,{month:`long`,year:`numeric`,timeZone:`UTC`})}function J(e){if(e===null)return!1;let t=W(new Date(`${e.from}T00:00:00.000Z`));return t.from===e.from&&t.to===e.to}function Y(e,t,n,r){switch(e){case`title`:return t.title??t.sessionId.slice(0,8);case`model`:return t.model??N;case`status`:return t.status??N;case`activeMsInRange`:return V(t.activeMsInRange);case`ageMs`:return P(t.ageMs);case`lastMessageAt`:return I(t.lastMessageAt,n,r);case`turnCount`:return t.turnCount===null?N:`${t.turnCount}${t.turnCountCapped?`+`:``}`;case`rssKb`:return F(t.rssKb);case`cpuPct`:return R(t.cpuPct);case`tokensInRange`:return z(t.tokensInRange);case`costGbp`:return B(t.costGbp);default:return N}}function X({adminFetch:e,cacheKey:r}){let{zone:i}=l(),[a,o]=(0,_.useState)(null),[s,u]=(0,_.useState)(null),[p,m]=(0,_.useState)(!1),[g,y]=(0,_.useState)(`lastMessageAt`),[b,x]=(0,_.useState)(-1),[S,C]=(0,_.useState)(()=>W(new Date)),[w,T]=(0,_.useState)(!0),[E,D]=(0,_.useState)(!0),[O,F]=(0,_.useState)(!1),I=(0,_.useCallback)(async(e,t)=>{r&&await c(r,e)&&window.location.assign(`/chat?session=${encodeURIComponent(t)}`)},[r]),L=(0,_.useRef)(!1),R=(0,_.useRef)(void 0),z=(0,_.useCallback)(async t=>{if(L.current){R.current=t;return}L.current=!0;try{let n=await e(`/api/admin/activity${t?`?from=${t.from}&to=${t.to}`:``}`);if(n.status===403){u(`This view is available to the house account only.`),m(!0);return}if(!n.ok){u(`The session manager did not answer (status ${n.status}).`),m(!0);return}o(await n.json()),u(null)}catch(e){u(e instanceof Error?e.message:String(e))}finally{m(!0),L.current=!1;let e=R.current;R.current=void 0,e!==void 0&&z(e)}},[e]);(0,_.useEffect)(()=>{z(S);let e=setInterval(()=>void z(S),15e3);return()=>clearInterval(e)},[z,S]);let B=(0,_.useMemo)(()=>a?[...a.rows].sort((e,t)=>H(e,t,g,b)):[],[a,g,b]),V=(0,_.useMemo)(()=>B.filter(e=>e.status===`busy`?w:e.status===`idle`?E:!0),[B,w,E]),U=B.length-V.length;if(!p)return(0,v.jsx)(t,{surface:`gate`});if(s)return(0,v.jsx)(`div`,{className:`activity-empty`,children:s});if(!a)return(0,v.jsx)(`div`,{className:`activity-empty`,children:`No response.`});let{accounts:X,census:Z,censusAgeMs:Q}=a,re=Date.now(),ie=X.onDisk!==null&&X.onDisk>X.valid,$=a.range===void 0?S:a.range;return(0,v.jsxs)(`div`,{className:`ui-page ui-page--full activity-body`,children:[(0,v.jsxs)(`div`,{className:`activity-head`,children:[(0,v.jsxs)(`span`,{className:`activity-title`,children:[(0,v.jsx)(n,{size:16}),` Live sessions`]}),(0,v.jsxs)(`span`,{className:`activity-meta`,children:[U>0?`${V.length} of ${B.length} live · ${U} hidden`:`${B.length} live`,` · `,X.valid,` accounts`,X.untaggedCount>0?` · ${X.untaggedCount} untagged`:``]})]}),(0,v.jsxs)(`div`,{className:`activity-controls`,children:[(0,v.jsxs)(`div`,{className:`activity-control activity-range`,children:[(0,v.jsx)(d,{variant:`secondary`,size:`sm`,"aria-label":`Previous month`,disabled:!J(S),onClick:()=>C(e=>e&&G(e.from,-1)),children:`‹`}),(0,v.jsx)(`span`,{className:`activity-range-label`,children:S===null?`All time`:J(S)?q(S.from):`${S.from} → ${S.to}`}),(0,v.jsx)(d,{variant:`secondary`,size:`sm`,"aria-label":`Next month`,disabled:!J(S),onClick:()=>C(e=>e&&G(e.from,1)),children:`›`})]}),(0,v.jsxs)(`div`,{className:`activity-control activity-presets`,children:[(0,v.jsx)(d,{variant:`secondary`,size:`sm`,"aria-pressed":S!==null&&J(S)&&S.from===W(new Date).from,onClick:()=>C(W(new Date)),children:`This month`}),(0,v.jsx)(d,{variant:`secondary`,size:`sm`,"aria-pressed":S!==null&&!J(S),onClick:()=>C(K(7,Date.now())),children:`Last 7 days`}),(0,v.jsx)(d,{variant:`secondary`,size:`sm`,"aria-pressed":S===null,onClick:()=>C(null),children:`All time`})]}),(0,v.jsxs)(`div`,{className:`activity-control`,children:[(0,v.jsx)(`label`,{className:`activity-control-label`,htmlFor:`activity-sort`,children:`Sort by`}),(0,v.jsx)(`span`,{className:`activity-select-wrap`,children:(0,v.jsx)(`select`,{id:`activity-sort`,className:`activity-select`,value:g,onChange:e=>{let t=k.find(t=>t.key===e.target.value);t&&(y(t.key),x(t.dir))},children:k.map(e=>(0,v.jsx)(`option`,{value:e.key,children:e.label},e.key))})})]}),(0,v.jsxs)(`div`,{className:`activity-control activity-visibility`,children:[(0,v.jsx)(f,{checked:w,onChange:T,label:`Busy`}),(0,v.jsx)(f,{checked:E,onChange:D,label:`Idle`})]})]}),(0,v.jsxs)(`div`,{className:`activity-range-note`,children:[$===null?`Active time, tokens and cost cover each conversation’s whole history.`:`Active time, tokens and cost cover ${$.from} to ${$.to} (UTC), inclusive.`,a.fullRangeFallback&&(0,v.jsxs)(`strong`,{className:`activity-range-rejected`,children:[` `,`The range was not accepted, so these are all-time figures.`]})]}),(0,v.jsx)(`div`,{className:`activity-census`,children:Z===null?`No census collected yet, so memory and CPU are unavailable.`:`Memory and CPU measured ${P(Q)} ago, averaged over the minute before that · ${Z.cpuNull} of ${Z.live} without a CPU reading`}),ie&&(0,v.jsxs)(`div`,{className:`activity-warning`,children:[(0,v.jsx)(h,{size:14}),` `,X.onDisk,` account folders on disk but only`,` `,X.valid,` are readable. Sessions belonging to the rest cannot be attributed.`]}),B.length===0?(0,v.jsx)(`div`,{className:`activity-empty`,children:`No sessions are running.`}):V.length===0?(0,v.jsxs)(`div`,{className:`activity-empty`,children:[`All `,B.length,` running sessions are hidden by the Busy and Idle filters.`]}):(0,v.jsx)(`div`,{className:`activity-grid`,children:V.map(e=>{let t=e.accountId!==null&&!!r,n=t?()=>void I(e.accountId,e.sessionId):void 0;return(0,v.jsxs)(`article`,{className:`activity-card${t?` activity-card-clickable`:``}`,"data-testid":`activity-card`,"data-session-id":e.sessionId,role:t?`button`:void 0,tabIndex:t?0:void 0,onClick:n,onKeyDown:t?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())}:void 0,children:[(0,v.jsx)(`h3`,{className:`activity-card-heading`,title:e.accountId??void 0,children:e.accountId===null?(0,v.jsx)(`span`,{className:`activity-untagged`,title:`This session records no account, so it cannot be attributed to a business.`,children:`untagged`}):ne(e.accountId,X.names)}),(0,v.jsx)(`dl`,{className:`activity-card-rows`,children:A.map(t=>(0,v.jsxs)(`div`,{className:`activity-card-row`,children:[(0,v.jsx)(`dt`,{className:`activity-card-label`,"data-testid":`activity-card-label`,title:t.help,children:t.label}),(0,v.jsx)(`dd`,{className:`activity-card-value`,title:t.key===`costGbp`?te(e):void 0,children:Y(t.key,e,re,i)})]},t.key))})]},e.sessionId)})}),B.length>0&&(0,v.jsxs)(`div`,{className:`activity-glossary`,children:[(0,v.jsxs)(`dl`,{className:`activity-legend`,children:[O&&(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,"data-testid":`activity-glossary-term`,children:M.label}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:M.help})]},`heading`),(O?A:A.filter(e=>j.includes(e.key))).map(e=>(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,"data-testid":`activity-glossary-term`,children:e.label}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:e.help})]},e.key)),(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,children:N}),(0,v.jsxs)(`dd`,{className:`activity-legend-def`,children:[`Not measured. It does not mean zero — a measured zero is written as a figure, so `,(0,v.jsx)(`em`,{children:`0h 0m`}),` and `,(0,v.jsx)(`em`,{children:`£0.00`}),` are real readings. Hover a dashed value for the reason where one exists.`]})]})]}),(0,v.jsx)(d,{variant:`secondary`,size:`sm`,className:`activity-glossary-toggle`,onClick:()=>F(e=>!e),children:O?`Show fewer`:`Explain every figure`})]}),(0,v.jsx)(ee,{loops:a?.loops})]})}function Z({cacheKey:e}){let{adminFetch:t}=r({initialCacheKey:e,surface:`activity`});return(0,v.jsx)(X,{adminFetch:t,cacheKey:e})}function Q(){let[e,n]=(0,_.useState)(null),[r,i]=(0,_.useState)(!1),[o,s]=(0,_.useState)(void 0),[c,l]=(0,_.useState)(null),[u,d]=(0,_.useState)(null),[f,h]=(0,_.useState)(null),[g,y]=(0,_.useState)(null);(0,_.useEffect)(()=>{let e=!1,t=null;try{t=sessionStorage.getItem(O)}catch{}if(!t){n(null),i(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(t)}`).then(async r=>{if(!e){if(r.status===401){try{sessionStorage.removeItem(O)}catch{}window.location.href=`/`;return}if(r.ok)try{let e=await r.json();typeof e.businessName==`string`&&s(e.businessName),e.sessionId!==void 0&&l(e.sessionId??null),d(e.role??null),h(e.userName===void 0?null:e.userName),y(e.avatar??null)}catch{}n(t),i(!0)}}).catch(()=>{e||(n(t),i(!0))}),()=>{e=!0}},[]);let b=(0,_.useCallback)(()=>{try{sessionStorage.removeItem(O)}catch{}window.location.href=`/`},[]),[x,S]=(0,_.useState)(!1),C=(0,_.useCallback)(async()=>{S(!0);try{let e=await p();if(e){try{sessionStorage.removeItem(O)}catch{}window.location.href=`/`}return e}finally{S(!1)}},[]);return r?e?(0,v.jsx)(a,{cacheKey:e,surface:`activity`,onSessionExpired:({code:e,path:t})=>{console.warn(`[admin-auth] outcome=session-expired-redirect code=${e} path=${t} surface=activity`);try{sessionStorage.removeItem(O)}catch{}window.location.href=`/`},children:(0,v.jsx)(m,{cacheKey:e,businessName:o,sessionId:c,onLogout:b,onDisconnect:C,disconnecting:x,userName:f,userAvatar:g,role:u,children:(0,v.jsx)(Z,{cacheKey:e})})}):(0,v.jsx)(`div`,{className:`activity-page`,children:(0,v.jsxs)(`div`,{className:`activity-empty`,children:[(0,v.jsx)(`p`,{children:`You are not signed in.`}),(0,v.jsxs)(`p`,{children:[`Open the `,(0,v.jsx)(`a`,{href:`/`,className:`activity-link`,children:`main admin page`}),` and log in, then return here.`]})]})}):(0,v.jsx)(t,{surface:`gate`})}(0,g.createRoot)(document.getElementById(`root`)).render((0,v.jsx)(Q,{}));
|
|
1
|
+
import{o as e}from"./chunk-CltuBf4Z.js";import{O as t,X as n,at as r,ct as i,k as a,nt as o,ot as s,r as c,v as l,w as u}from"./useMediaQuery-CLxecNeT.js";import{A as d,O as f,k as p,t as m}from"./AdminShell-DUUw6WNs.js";import{t as h}from"./triangle-alert-CkE_tzl3.js";var g=s(),_=e(i(),1),v=o(),y=`—`;function b(e){switch(e){case`waiting`:return`Waiting`;case`never-run`:return`Never run`;case`never-succeeded`:return`Never succeeded`;case`failing`:return`Failing`;case`stalled`:return`Stalled`;case`running`:return`Running`;case`ok`:return`Healthy`}}var x={waiting:`Armed and not due yet. It has no start-up run and its first interval has not elapsed, so it has correctly not fired.`,"never-run":`Its interval has elapsed and it still has not fired once. This is not the same as waiting its turn.`,"never-succeeded":`It has fired, and not one run has finished. The work this loop exists to do has never happened.`,failing:`It worked before and is failing now.`,stalled:`It has not started within three of its own intervals. Something is holding it up.`,running:`A run is in progress right now.`,ok:`The last run finished and the next is due within the interval.`},S=new Set([`never-run`,`never-succeeded`,`failing`,`stalled`]),C=10;function w(e){return e===null||!Number.isFinite(e)?y:`${e.toFixed(1)}%`}function T(e){return e<6e4?`${Math.round(e/1e3)}s`:e<36e5?`${Math.round(e/6e4)}m`:`${Math.round(e/36e5)}h`}function E(e,t){if(e===null)return y;let n=t-e;return n<0?`in ${T(-n)}`:n<6e4?`${Math.round(n/1e3)}s ago`:n<36e5?`${Math.round(n/6e4)}m ago`:`${Math.round(n/36e5)}h ago`}function D(e,t){if(e===null)return y;let n=e-t;return n>=0?`in ${T(n)}`:`overdue by ${T(-n)}`}function ee({loops:e,nowMs:t=Date.now()}){let[n,r]=(0,_.useState)(!1);if(!e)return(0,v.jsxs)(`section`,{className:`activity-loops`,children:[(0,v.jsx)(`h2`,{className:`activity-loops-heading`,children:`Scheduled work`}),(0,v.jsx)(`p`,{className:`activity-loops-empty`,children:`Scheduled work could not be read from the server.`})]});let i=e.armed-e.rows.length,a=e.rows.filter(e=>S.has(e.state)),o=e.rows.filter(e=>!S.has(e.state)&&typeof e.cpuPct==`number`&&e.cpuPct>=C),s=n?e.rows:[...a,...o];return(0,v.jsxs)(`section`,{className:`activity-loops`,children:[(0,v.jsx)(`h2`,{className:`activity-loops-heading`,children:`Scheduled work`}),(0,v.jsxs)(`p`,{className:`activity-loops-sub`,children:[e.armed,` `,e.armed===1?`loop`:`loops`,` armed`,a.length>0?` · ${a.length} ${a.length===1?`needs`:`need`} attention`:` · all healthy`,o.length>0&&` · ${o.length} using significant processor`,`. `,(0,v.jsx)(`button`,{type:`button`,className:`activity-loops-toggle`,"aria-expanded":n,onClick:()=>r(e=>!e),children:n?`Show less`:`Show all`})]}),typeof e.processPct==`number`&&(0,v.jsxs)(`p`,{className:`activity-loops-cpu`,children:[`Server process at `,e.processPct.toFixed(1),`% of one core`,typeof e.attributedPct==`number`&&(0,v.jsxs)(v.Fragment,{children:[` · these loops explain `,e.attributedPct.toFixed(1),`%`]}),typeof e.unattributedPct==`number`&&e.unattributedPct>=1&&(0,v.jsxs)(v.Fragment,{children:[` · `,(0,v.jsxs)(`strong`,{children:[e.unattributedPct.toFixed(1),`% is not from these loops`]})]})]}),i>0&&(0,v.jsxs)(`p`,{className:`activity-loops-omission`,role:`status`,children:[i,` armed `,i===1?`loop is`:`loops are`,` missing from this list. The server armed `,e.armed,` but sent `,e.rows.length,`.`]}),s.length===0?null:(0,v.jsx)(`div`,{className:`activity-table-scroll`,children:(0,v.jsxs)(`table`,{className:`activity-table`,children:[(0,v.jsx)(`thead`,{children:(0,v.jsxs)(`tr`,{children:[(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Loop`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`State`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Every`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Last run`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Last OK`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Took`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`CPU`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Runs`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Produced`}),(0,v.jsx)(`th`,{scope:`col`,className:`activity-th`,children:`Next due`})]})}),(0,v.jsx)(`tbody`,{children:s.map(e=>(0,v.jsxs)(`tr`,{className:S.has(e.state)?`activity-loop-row activity-loop-unhealthy`:`activity-loop-row`,children:[(0,v.jsx)(`td`,{className:`activity-td`,children:e.name}),(0,v.jsx)(`td`,{className:`activity-td`,title:x[e.state],children:(0,v.jsxs)(`span`,{className:`activity-state`,children:[(0,v.jsx)(`span`,{className:e.state===`ok`?`activity-state-dot is-healthy`:S.has(e.state)?`activity-state-dot is-unhealthy`:`activity-state-dot`,"aria-hidden":`true`}),b(e.state)]})}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:T(e.intervalMs)}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:E(e.lastStartMs,t)}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:E(e.lastSuccessMs,t)}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:e.lastDurationMs===null?y:`${e.lastDurationMs} ms`}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,title:e.cpuAttributable?e.detached?`Includes the processor time of the separate process this loop starts.`:void 0:`This loop waits on other work while it runs, so the processor time it uses cannot be separated from the rest of the server.`,children:w(e.cpuPct)}),(0,v.jsxs)(`td`,{className:`activity-td activity-num`,children:[e.successCount,`/`,e.runCount]}),(0,v.jsx)(`td`,{className:`activity-td activity-loop-note`,children:(0,v.jsx)(`span`,{className:`activity-loop-note-text`,title:e.lastError??e.lastNote??void 0,children:e.lastError??e.lastNote??y})}),(0,v.jsx)(`td`,{className:`activity-td activity-num`,children:D(e.nextDueMs,t)})]},e.name))})]})}),(0,v.jsxs)(`dl`,{className:`activity-legend`,children:[(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,children:`Runs`}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:`Finished runs out of attempted runs since the server started. 0 out of a large number means it has tried many times and never once finished.`})]}),(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,children:`CPU`}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:`Share of one processor core this loop is using, measured between the last two refreshes. It includes any separate process the loop starts, and can pass 100% because those run alongside each other. A dash means it could not be measured: the loop waits on other work while it runs, so its share cannot be separated from the rest of the server.`})]}),(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,children:y}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:`Not measured. It does not mean zero.`})]})]})]})}var O=`maxy-admin-session-key`;function te(e){switch(e.costUnavailable){case`metering-failed`:return`Cost could not be calculated: ${e.meteringError??`the transcript could not be read`}`;case`model-not-priced`:return`No published price for this model, so cost cannot be estimated.`;case`no-transcript`:return`This session has no transcript yet, so there is nothing to cost.`;default:return}}var k=[{key:`lastMessageAt`,label:`Last activity`,dir:-1},{key:`activeMsInRange`,label:`Active time`,dir:-1},{key:`costGbp`,label:`Cost`,dir:-1},{key:`accountId`,label:`Account name`,dir:1}],A=[{key:`title`,label:`Session`,help:`The conversation name, or its short id when it has none yet.`},{key:`model`,label:`Model`,help:`The model that answered the most recent turn.`},{key:`status`,label:`Status`,help:`What the process is doing right now.`},{key:`activeMsInRange`,label:`Active`,help:`Time this session spent thinking, writing and running tools inside the selected range. This is worked time, not elapsed time.`},{key:`ageMs`,label:`Age`,help:`How long ago this conversation started. Wall-clock, so it counts every hour nobody was working.`},{key:`lastMessageAt`,label:`Last activity`,help:`The clock time of the most recent message, in your timezone. A date appears once it is not today.`},{key:`turnCount`,label:`Turns`,help:`Messages exchanged. A trailing + means the count is a minimum — the conversation is too long to count exactly.`},{key:`rssKb`,label:`RAM`,help:`Memory held by this session and all its helper processes together.`},{key:`cpuPct`,label:`CPU (avg)`,help:`AVERAGE share of one processor core over the last census interval, up to 60 seconds. It is not a reading of this instant, so a session that answered a turn a minute ago still shows a high figure while sitting quiet now. Can exceed 100% because a session runs many processes at once.`},{key:`tokensInRange`,label:`Tokens`,help:`Total tokens billed inside the selected range, added up across every day in it. A cumulative total, not the size of the conversation the model currently reads back.`},{key:`costGbp`,label:`Cost`,help:`Estimated spend inside the selected range, at published prices for this model.`}],j=[`activeMsInRange`,`lastMessageAt`,`cpuPct`,`tokensInRange`],M={label:`Account`,help:`The business this session belongs to. "untagged" means the session records no account.`};function ne(e,t){let n=t?.[e];return n&&n.trim()!==``?n:e.slice(0,8)}var N=`—`;function P(e){if(e===null||!Number.isFinite(e)||e<0)return N;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function F(e){return e===null||!Number.isFinite(e)?N:`${(e/1024/1024).toFixed(1)} GB`}function I(e,t,n){if(!e)return N;let r=Date.parse(e);if(!Number.isFinite(r))return N;let i=u(new Date(r),n),a=u(new Date(t),n),o=`${String(i.hh).padStart(2,`0`)}:${String(i.mm).padStart(2,`0`)}`;return i.y===a.y&&i.m===a.m&&i.d===a.d?o:`${i.d} ${L[i.m-1]} ${o}`}var L=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function R(e){return e===null||!Number.isFinite(e)?N:`${e.toFixed(1)}%`}function z(e){return e===null||!Number.isFinite(e)?N:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(2)}M`}function B(e){return e===null||!Number.isFinite(e)?N:`£${e.toFixed(2)}`}function V(e){if(e===null||!Number.isFinite(e)||e<0)return N;let t=Math.floor(e/6e4);return`${Math.floor(t/60)}h ${t%60}m`}function H(e,t,n,r){let i=e[n],a=t[n];if(i===null&&a===null)return 0;if(i===null)return 1;if(a===null)return-1;if(n===`lastMessageAt`){let e=Date.parse(String(i)),t=Date.parse(String(a));return!Number.isFinite(e)&&!Number.isFinite(t)?0:Number.isFinite(e)?Number.isFinite(t)?(e-t)*r:-1:1}return typeof i==`number`&&typeof a==`number`?(i-a)*r:String(i).localeCompare(String(a))*r}function U(e){return e.toISOString().slice(0,10)}function W(e){let t=e.getUTCFullYear(),n=e.getUTCMonth();return{from:U(new Date(Date.UTC(t,n,1))),to:U(new Date(Date.UTC(t,n+1,0)))}}function G(e,t){let n=new Date(`${e}T00:00:00.000Z`);return W(new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth()+t,1)))}function K(e,t){return{from:U(new Date(t-(e-1)*864e5)),to:U(new Date(t))}}function q(e){return new Date(`${e}T00:00:00.000Z`).toLocaleString(`en-GB`,{month:`long`,year:`numeric`,timeZone:`UTC`})}function J(e){if(e===null)return!1;let t=W(new Date(`${e.from}T00:00:00.000Z`));return t.from===e.from&&t.to===e.to}function Y(e,t,n,r){switch(e){case`title`:return t.title??t.sessionId.slice(0,8);case`model`:return t.model??N;case`status`:return t.status??N;case`activeMsInRange`:return V(t.activeMsInRange);case`ageMs`:return P(t.ageMs);case`lastMessageAt`:return I(t.lastMessageAt,n,r);case`turnCount`:return t.turnCount===null?N:`${t.turnCount}${t.turnCountCapped?`+`:``}`;case`rssKb`:return F(t.rssKb);case`cpuPct`:return R(t.cpuPct);case`tokensInRange`:return z(t.tokensInRange);case`costGbp`:return B(t.costGbp);default:return N}}function X({adminFetch:e,cacheKey:r}){let{zone:i}=l(),[a,o]=(0,_.useState)(null),[s,u]=(0,_.useState)(null),[d,m]=(0,_.useState)(!1),[g,y]=(0,_.useState)(`lastMessageAt`),[b,x]=(0,_.useState)(-1),[S,C]=(0,_.useState)(()=>W(new Date)),[w,T]=(0,_.useState)(!0),[E,D]=(0,_.useState)(!0),[O,F]=(0,_.useState)(!1),I=(0,_.useCallback)(async(e,t)=>{r&&await c(r,e)&&window.location.assign(`/chat?session=${encodeURIComponent(t)}`)},[r]),L=(0,_.useRef)(!1),R=(0,_.useRef)(void 0),z=(0,_.useCallback)(async t=>{if(L.current){R.current=t;return}L.current=!0;try{let n=await e(`/api/admin/activity${t?`?from=${t.from}&to=${t.to}`:``}`);if(n.status===403){u(`This view is available to the house account only.`),m(!0);return}if(!n.ok){u(`The session manager did not answer (status ${n.status}).`),m(!0);return}o(await n.json()),u(null)}catch(e){u(e instanceof Error?e.message:String(e))}finally{m(!0),L.current=!1;let e=R.current;R.current=void 0,e!==void 0&&z(e)}},[e]);(0,_.useEffect)(()=>{z(S);let e=setInterval(()=>void z(S),15e3);return()=>clearInterval(e)},[z,S]);let B=(0,_.useMemo)(()=>a?[...a.rows].sort((e,t)=>H(e,t,g,b)):[],[a,g,b]),V=(0,_.useMemo)(()=>B.filter(e=>e.status===`busy`?w:e.status===`idle`?E:!0),[B,w,E]),U=B.length-V.length;if(!d)return(0,v.jsx)(t,{surface:`gate`});if(s)return(0,v.jsx)(`div`,{className:`activity-empty`,children:s});if(!a)return(0,v.jsx)(`div`,{className:`activity-empty`,children:`No response.`});let{accounts:X,census:Z,censusAgeMs:Q}=a,re=Date.now(),ie=X.onDisk!==null&&X.onDisk>X.valid,$=a.range===void 0?S:a.range;return(0,v.jsxs)(`div`,{className:`ui-page ui-page--full activity-body`,children:[(0,v.jsxs)(`div`,{className:`activity-head`,children:[(0,v.jsxs)(`span`,{className:`activity-title`,children:[(0,v.jsx)(n,{size:16}),` Live sessions`]}),(0,v.jsxs)(`span`,{className:`activity-meta`,children:[U>0?`${V.length} of ${B.length} live · ${U} hidden`:`${B.length} live`,` · `,X.valid,` accounts`,X.untaggedCount>0?` · ${X.untaggedCount} untagged`:``]})]}),(0,v.jsxs)(`div`,{className:`activity-controls`,children:[(0,v.jsxs)(`div`,{className:`activity-control activity-range`,children:[(0,v.jsx)(f,{variant:`secondary`,size:`sm`,"aria-label":`Previous month`,disabled:!J(S),onClick:()=>C(e=>e&&G(e.from,-1)),children:`‹`}),(0,v.jsx)(`span`,{className:`activity-range-label`,children:S===null?`All time`:J(S)?q(S.from):`${S.from} → ${S.to}`}),(0,v.jsx)(f,{variant:`secondary`,size:`sm`,"aria-label":`Next month`,disabled:!J(S),onClick:()=>C(e=>e&&G(e.from,1)),children:`›`})]}),(0,v.jsxs)(`div`,{className:`activity-control activity-presets`,children:[(0,v.jsx)(f,{variant:`secondary`,size:`sm`,"aria-pressed":S!==null&&J(S)&&S.from===W(new Date).from,onClick:()=>C(W(new Date)),children:`This month`}),(0,v.jsx)(f,{variant:`secondary`,size:`sm`,"aria-pressed":S!==null&&!J(S),onClick:()=>C(K(7,Date.now())),children:`Last 7 days`}),(0,v.jsx)(f,{variant:`secondary`,size:`sm`,"aria-pressed":S===null,onClick:()=>C(null),children:`All time`})]}),(0,v.jsxs)(`div`,{className:`activity-control`,children:[(0,v.jsx)(`label`,{className:`activity-control-label`,htmlFor:`activity-sort`,children:`Sort by`}),(0,v.jsx)(`span`,{className:`activity-select-wrap`,children:(0,v.jsx)(`select`,{id:`activity-sort`,className:`activity-select`,value:g,onChange:e=>{let t=k.find(t=>t.key===e.target.value);t&&(y(t.key),x(t.dir))},children:k.map(e=>(0,v.jsx)(`option`,{value:e.key,children:e.label},e.key))})})]}),(0,v.jsxs)(`div`,{className:`activity-control activity-visibility`,children:[(0,v.jsx)(p,{checked:w,onChange:T,label:`Busy`}),(0,v.jsx)(p,{checked:E,onChange:D,label:`Idle`})]})]}),(0,v.jsxs)(`div`,{className:`activity-range-note`,children:[$===null?`Active time, tokens and cost cover each conversation’s whole history.`:`Active time, tokens and cost cover ${$.from} to ${$.to} (UTC), inclusive.`,a.fullRangeFallback&&(0,v.jsxs)(`strong`,{className:`activity-range-rejected`,children:[` `,`The range was not accepted, so these are all-time figures.`]})]}),(0,v.jsx)(`div`,{className:`activity-census`,children:Z===null?`No census collected yet, so memory and CPU are unavailable.`:`Memory and CPU measured ${P(Q)} ago, averaged over the minute before that · ${Z.cpuNull} of ${Z.live} without a CPU reading`}),ie&&(0,v.jsxs)(`div`,{className:`activity-warning`,children:[(0,v.jsx)(h,{size:14}),` `,X.onDisk,` account folders on disk but only`,` `,X.valid,` are readable. Sessions belonging to the rest cannot be attributed.`]}),B.length===0?(0,v.jsx)(`div`,{className:`activity-empty`,children:`No sessions are running.`}):V.length===0?(0,v.jsxs)(`div`,{className:`activity-empty`,children:[`All `,B.length,` running sessions are hidden by the Busy and Idle filters.`]}):(0,v.jsx)(`div`,{className:`activity-grid`,children:V.map(e=>{let t=e.accountId!==null&&!!r,n=t?()=>void I(e.accountId,e.sessionId):void 0;return(0,v.jsxs)(`article`,{className:`activity-card${t?` activity-card-clickable`:``}`,"data-testid":`activity-card`,"data-session-id":e.sessionId,role:t?`button`:void 0,tabIndex:t?0:void 0,onClick:n,onKeyDown:t?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())}:void 0,children:[(0,v.jsx)(`h3`,{className:`activity-card-heading`,title:e.accountId??void 0,children:e.accountId===null?(0,v.jsx)(`span`,{className:`activity-untagged`,title:`This session records no account, so it cannot be attributed to a business.`,children:`untagged`}):ne(e.accountId,X.names)}),(0,v.jsx)(`dl`,{className:`activity-card-rows`,children:A.map(t=>(0,v.jsxs)(`div`,{className:`activity-card-row`,children:[(0,v.jsx)(`dt`,{className:`activity-card-label`,"data-testid":`activity-card-label`,title:t.help,children:t.label}),(0,v.jsx)(`dd`,{className:`activity-card-value`,title:t.key===`costGbp`?te(e):void 0,children:Y(t.key,e,re,i)})]},t.key))})]},e.sessionId)})}),B.length>0&&(0,v.jsxs)(`div`,{className:`activity-glossary`,children:[(0,v.jsxs)(`dl`,{className:`activity-legend`,children:[O&&(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,"data-testid":`activity-glossary-term`,children:M.label}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:M.help})]},`heading`),(O?A:A.filter(e=>j.includes(e.key))).map(e=>(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,"data-testid":`activity-glossary-term`,children:e.label}),(0,v.jsx)(`dd`,{className:`activity-legend-def`,children:e.help})]},e.key)),(0,v.jsxs)(`div`,{className:`activity-legend-item`,children:[(0,v.jsx)(`dt`,{className:`activity-legend-term`,children:N}),(0,v.jsxs)(`dd`,{className:`activity-legend-def`,children:[`Not measured. It does not mean zero — a measured zero is written as a figure, so `,(0,v.jsx)(`em`,{children:`0h 0m`}),` and `,(0,v.jsx)(`em`,{children:`£0.00`}),` are real readings. Hover a dashed value for the reason where one exists.`]})]})]}),(0,v.jsx)(f,{variant:`secondary`,size:`sm`,className:`activity-glossary-toggle`,onClick:()=>F(e=>!e),children:O?`Show fewer`:`Explain every figure`})]}),(0,v.jsx)(ee,{loops:a?.loops})]})}function Z({cacheKey:e}){let{adminFetch:t}=r({initialCacheKey:e,surface:`activity`});return(0,v.jsx)(X,{adminFetch:t,cacheKey:e})}function Q(){let[e,n]=(0,_.useState)(null),[r,i]=(0,_.useState)(!1),[o,s]=(0,_.useState)(void 0),[c,l]=(0,_.useState)(null),[u,f]=(0,_.useState)(null),[p,h]=(0,_.useState)(null),[g,y]=(0,_.useState)(null);(0,_.useEffect)(()=>{let e=!1,t=null;try{t=sessionStorage.getItem(O)}catch{}if(!t){n(null),i(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(t)}`).then(async r=>{if(!e){if(r.status===401){try{sessionStorage.removeItem(O)}catch{}window.location.href=`/`;return}if(r.ok)try{let e=await r.json();typeof e.businessName==`string`&&s(e.businessName),e.sessionId!==void 0&&l(e.sessionId??null),f(e.role??null),h(e.userName===void 0?null:e.userName),y(e.avatar??null)}catch{}n(t),i(!0)}}).catch(()=>{e||(n(t),i(!0))}),()=>{e=!0}},[]);let b=(0,_.useCallback)(()=>{try{sessionStorage.removeItem(O)}catch{}window.location.href=`/`},[]),[x,S]=(0,_.useState)(!1),C=(0,_.useCallback)(async()=>{S(!0);try{let e=await d();if(e){try{sessionStorage.removeItem(O)}catch{}window.location.href=`/`}return e}finally{S(!1)}},[]);return r?e?(0,v.jsx)(a,{cacheKey:e,surface:`activity`,onSessionExpired:({code:e,path:t})=>{console.warn(`[admin-auth] outcome=session-expired-redirect code=${e} path=${t} surface=activity`);try{sessionStorage.removeItem(O)}catch{}window.location.href=`/`},children:(0,v.jsx)(m,{cacheKey:e,businessName:o,sessionId:c,onLogout:b,onDisconnect:C,disconnecting:x,userName:p,userAvatar:g,role:u,children:(0,v.jsx)(Z,{cacheKey:e})})}):(0,v.jsx)(`div`,{className:`activity-page`,children:(0,v.jsxs)(`div`,{className:`activity-empty`,children:[(0,v.jsx)(`p`,{children:`You are not signed in.`}),(0,v.jsxs)(`p`,{children:[`Open the `,(0,v.jsx)(`a`,{href:`/`,className:`activity-link`,children:`main admin page`}),` and log in, then return here.`]})]})}):(0,v.jsx)(t,{surface:`gate`})}(0,g.createRoot)(document.getElementById(`root`)).render((0,v.jsx)(Q,{}));
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-CltuBf4Z.js";import{A as t,N as n,U as r,ct as i,f as a,k as o,l as s,nt as c,ot as l,p as u,rt as d,s as f,v as ee,w as p,x as m}from"./useMediaQuery-CLxecNeT.js";import{n as h,t as g}from"./AdminLoginScreens-BDaJlf67.js";import{f as te,s as _,x as v}from"./useVoiceRecorder-DtP2IN-j.js";import{C as ne,T as re,h as ie,i as y,t as b,w as ae,x}from"./AdminShell-DUUw6WNs.js";import{t as S}from"./chevron-left-udrHmjzu.js";import{n as C,r as w}from"./page-BkMbmVu6.js";import{t as oe}from"./file-text-s2dqE-bu.js";import"./graph-labels-BdLfJumr.js";import{n as se}from"./file-download-DiQesOd2.js";var T=l(),E=e(i(),1),D=c();function O({onOpen:e}){return(0,D.jsx)(`footer`,{className:`admin-footer`,children:(0,D.jsxs)(`div`,{className:`powered-by`,role:`button`,tabIndex:0,onClick:e,onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e())},"aria-label":`Powered by Claude Code — show details`,children:[(0,D.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,D.jsx)(`span`,{children:`Powered by Claude Code`})]})})}function k({sessionId:e,projectDir:t,sessionKey:n,contactName:r,onBack:i}){return(0,D.jsxs)(`div`,{className:`wa-web`,children:[(0,D.jsxs)(`header`,{className:`wa-web-header`,children:[i&&(0,D.jsx)(`button`,{type:`button`,className:`wa-web-back`,onClick:i,"aria-label":`Back`,children:(0,D.jsx)(S,{size:20})}),(0,D.jsx)(`span`,{className:`wa-web-avatar`,"aria-hidden":!0,children:(0,D.jsx)(v,{size:20})}),(0,D.jsx)(`div`,{className:`wa-web-titles`,children:(0,D.jsx)(`span`,{className:`wa-web-name`,children:r})})]}),(0,D.jsx)(`div`,{className:`wa-web-body`,children:(0,D.jsx)(_,{sessionId:e,projectDir:t,sessionKey:n,forceDeliveredOnly:!0})})]})}var A=6e4,j=60*A,M=24*j,N=A,P=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],F=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function I(e){return e<10?`0${e}`:String(e)}function L(e,t){let n=p(e,t);return Date.UTC(n.y,n.m-1,n.d)}function R(e,t,n){if(!Number.isFinite(e)||e<=0||!Number.isFinite(t))return`—`;let r=t-e;if(r<-N)return`—`;let i=r<0?0:r;if(i<A)return`just now`;if(i<j)return`${Math.floor(i/A)}m`;if(i<M)return`${Math.floor(i/j)}h`;let a=L(new Date(t),n),o=L(new Date(e),n),s=Math.round((a-o)/M);if(s===1)return`yesterday`;let c=p(new Date(e),n);if(s>=2&&s<=6)return F[new Date(o).getUTCDay()];let l=I(c.d),u=P[c.m-1],d=p(new Date(t),n).y;return c.y===d?`${l} ${u}`:`${l} ${u} ${c.y}`}function z({variant:e=`row`,count:t=1}){return(0,D.jsx)(D.Fragment,{children:Array.from({length:t},(t,n)=>(0,D.jsx)(`span`,{className:`dashboard-skeleton dashboard-skeleton--${e}`,"data-testid":`dashboard-skeleton`,"aria-hidden":`true`},n))})}var ce=6e4;function le(e){return e<12?`morning`:e<18?`afternoon`:`evening`}function B(e){return e&&e.trim().split(/\s+/)[0]||`there`}function ue(e){if(!e)return`everything is running normally.`;let t=e.cpuPct,n=e.memUsedPct;return t!==null&&t>=.98||n!==null&&n>=.98?`system load is critical.`:t!==null&&t>=.9||n!==null&&n>=.9?`system load is high.`:`everything is running normally.`}function V(e){return e==null?`—`:`${Math.round(e*100)}%`}function de(e){return e.isGroup===!0?e.chatName??e.title:e.operatorName??e.chatName??e.whatsappName??e.senderId??e.title}function fe(e,t,n){if(!e)return!1;let r=Date.parse(e);return Number.isFinite(r)?m(new Date(r),n)===m(new Date(t),n):!1}function pe(e){return e?e.replace(/^claude-/,``):null}var H=new Set([`sessions`,`conversations`,`tasks`,`artefacts`,`skills`,`stats`]),U=!1;function me(e,t,n,r){let i=e=>t.get(e)??null,a=r?r.getEntriesByType(`navigation`)[0]:void 0,o=r?r.getEntriesByType(`resource`).filter(e=>new URL(e.name,`http://x`).pathname.startsWith(`/assets/`)):[],s=e=>e===void 0||!Number.isFinite(e)?null:Math.round(e),c=e=>e?s(e):null;return{batchMs:e,sessionsMs:i(`sessions`),conversationsMs:i(`conversations`),tasksMs:i(`tasks`),artefactsMs:i(`artefacts`),skillsMs:i(`skills`),statsMs:i(`stats`),failed:[...H].filter(e=>n.has(e)).join(`,`)||`none`,ttfbMs:s(a?.responseStart),domContentLoadedMs:c(a?.domContentLoadedEventEnd),loadMs:c(a?.loadEventEnd),assetCount:o.length,assetBytes:o.reduce((e,t)=>e+(t.transferSize||0),0),assetMs:o.length?s(Math.max(...o.map(e=>e.responseEnd))):null}}function W({cacheKey:e,userName:i,onSelectWhatsappConversation:o}){let{zone:c}=ee(),l=t(e),[p,m]=(0,E.useState)(null),[h,g]=(0,E.useState)(null),[_,v]=(0,E.useState)(null),y=(0,E.useRef)(!1),[b,S]=(0,E.useState)(null),[C,w]=(0,E.useState)(null),[T,O]=(0,E.useState)(null),[k,A]=(0,E.useState)(null),[j,M]=(0,E.useState)(null),[N,P]=(0,E.useState)(null),[F,I]=(0,E.useState)(new Set),[L,H]=(0,E.useState)(()=>new Set),W=(0,E.useCallback)(e=>{H(t=>t.has(e)?t:new Set(t).add(e))},[]),G=Date.now(),K=(0,E.useRef)(!1),q=(0,E.useRef)(new Map),J=(0,E.useRef)(new Set),Y=(0,E.useRef)(null);(0,E.useEffect)(()=>{if(!e)return;let t=!1;async function n(e,n,r,i){let a=Date.now(),o=typeof n==`string`?n:`unresolved`;try{typeof n!=`string`&&(o=await n());let e=await l(o);if(!e.ok)throw Error(`status ${e.status}`);let a=await e.json();t||i(r(a))}catch(t){J.current.add(e),console.error(`[admin-ui] dashboard-fetch-failed slice=${e} url=${o} ms=${Date.now()-a} reason=${t instanceof Error?t.message:String(t)}`)}finally{q.current.set(e,Date.now()-a),W(e)}}async function r(){if(!Y.current){let e=await l(`/api/admin/accounts`);if(!e.ok)throw Error(`accounts status ${e.status}`);let t=await e.json(),n=t.accounts??[],r=t.activeAccountId??null,i=n.find(e=>e.accountId===r);if(!i)throw Error(`accounts: active ${r??`none`} absent from list of ${n.length}`);let a=i.isHouse||n.length===1;Y.current={accountId:i.accountId,isHouse:a}}let{accountId:e,isHouse:t}=Y.current;return t?`/api/operator-conversations/conversations-all`:`/api/operator-conversations/conversations`}let i={"sidebar-sessions":()=>n(`sessions`,`/api/admin/sidebar-sessions`,e=>e.sessions??[],m),"conversations-all":()=>n(`conversations`,r,e=>e.conversations??[],g),"tasks-list":()=>n(`tasks`,`/api/admin/tasks-list`,e=>e,w),"sidebar-artefacts":()=>n(`artefacts`,`/api/admin/sidebar-artefacts`,e=>e.artefacts??[],O),skills:()=>n(`skills`,`/api/admin/skills`,e=>e.skills??[],A)};async function a(){if(K.current)return;K.current=!0;let e=Date.now();try{await Promise.all([...Object.values(i).map(e=>e()),n(`stats`,`/api/admin/system-stats`,e=>e,S),n(`bookingLink`,`/api/admin/calendar/booking-link`,e=>e.bookingDomain??null,M),n(`portalLink`,`/api/admin/data-portal/portal-link`,e=>e.portalDomain??null,P)])}finally{K.current=!1;let t=Date.now()-e;if(!U){U=!0;try{let e=me(t,q.current,J.current,typeof performance>`u`?null:performance);fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`event`,source:`dashboard-load`,...e}),keepalive:!0}).catch(()=>{})}catch{}}}}a();let o=null;try{o=new EventSource(d(`/api/admin/events`,e)),o.onmessage=e=>{if(document.visibilityState===`visible`)try{let{resource:t}=JSON.parse(e.data),n=t?i[t]:void 0;n&&n()}catch{}},o.onerror=()=>{console.error(`[admin-ui] dashboard-events stream error`)}}catch(e){console.error(`[admin-ui] dashboard-events unavailable reason=${e instanceof Error?e.message:String(e)}`)}let s=setInterval(()=>{document.visibilityState===`visible`&&a()},ce),c=()=>{document.visibilityState===`visible`&&a()};return document.addEventListener(`visibilitychange`,c),()=>{t=!0,K.current=!1,clearInterval(s),o?.close(),document.removeEventListener(`visibilitychange`,c)}},[e,l]);let X=(0,E.useMemo)(()=>(p??[]).filter(e=>!e.isSubagent),[p]),Z=(0,E.useMemo)(()=>X.filter(e=>e.live),[X]),he=(0,E.useMemo)(()=>(h??[]).filter(e=>fe(e.lastMessageAt,G,c)).length,[h,G]),ge=C?.open.length??0,Q=(0,E.useMemo)(()=>{let e=new Map;for(let t of h??[]){let n=e.get(t.channel)??[];n.push(t),e.set(t.channel,n)}return[...e.entries()].map(([e,t])=>{let n=t.reduce((e,t)=>t.lastMessageAt&&(!e||Date.parse(t.lastMessageAt)>Date.parse(e.lastMessageAt??``))?t:e,null);return{channel:e,count:t.length,preview:n?de(n):``,rows:t}})},[h]);(0,E.useEffect)(()=>{y.current||Q.length!==0&&(y.current=!0,v(Q[0].channel))},[Q]);let $=(0,E.useRef)(!1);(0,E.useEffect)(()=>{$.current||!L.has(`bookingLink`)||!L.has(`portalLink`)||($.current=!0)},[L,j,N]);let _e=(0,E.useCallback)(async e=>{if(!F.has(e)){I(t=>new Set(t).add(e));try{let t=await l(`/api/admin/session-stop`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:e})});if(!t.ok){console.error(`[admin-ui] dashboard-session-stop-failed sessionId=${e} status=${t.status}`);return}m(t=>(t??[]).map(t=>t.sessionId===e?{...t,live:!1}:t))}catch(t){console.error(`[admin-ui] dashboard-session-stop-failed sessionId=${e} reason=${t instanceof Error?t.message:String(t)}`)}finally{I(t=>{let n=new Set(t);return n.delete(e),n})}}},[l,F]),ve=(0,E.useCallback)(t=>{if(!e||!t.downloadPath){console.error(`[admin-ui] dashboard-artefact-download-blocked id=${t.id} reason=${e?`not-downloadable`:`no-cache-key`}`);return}se(e,t.downloadPath,t.downloadRoot??`data`)},[e]),ye=le(new Date(G).getHours());return(0,D.jsxs)(`div`,{className:`ui-page ui-page--full dashboard-home`,children:[(0,D.jsx)(`p`,{className:`dashboard-greeting`,children:L.has(`stats`)?`Good ${ye}, ${B(i)} — ${ue(b)}`:`Good ${ye}, ${B(i)}`}),(0,D.jsxs)(`div`,{className:`dashboard-stats`,children:[(0,D.jsxs)(`div`,{className:`admin-stat-card dashboard-stat-card`,children:[(0,D.jsx)(`span`,{className:`dashboard-stat-label`,children:`Live sessions`}),L.has(`sessions`)?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{className:`dashboard-stat-value`,children:Z.length}),(0,D.jsxs)(`span`,{className:`dashboard-stat-delta`,children:[`of `,X.length,` total`]})]}):(0,D.jsx)(z,{variant:`value`})]}),(0,D.jsxs)(`div`,{className:`admin-stat-card dashboard-stat-card`,children:[(0,D.jsx)(`span`,{className:`dashboard-stat-label`,children:`Messages today`}),L.has(`conversations`)?(0,D.jsx)(`span`,{className:`dashboard-stat-value`,children:he}):(0,D.jsx)(z,{variant:`value`})]}),(0,D.jsxs)(`a`,{className:`admin-stat-card dashboard-stat-card dashboard-stat-card--link`,href:`/tasks`,children:[(0,D.jsx)(`span`,{className:`dashboard-stat-label`,children:`Open tasks`}),L.has(`tasks`)?(0,D.jsx)(`span`,{className:`dashboard-stat-value`,children:ge}):(0,D.jsx)(z,{variant:`value`})]}),(0,D.jsxs)(`div`,{className:`admin-stat-card dashboard-stat-card`,children:[(0,D.jsx)(`span`,{className:`dashboard-stat-label`,children:`Host CPU`}),L.has(`stats`)?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{className:`dashboard-stat-value`,children:V(b?.cpuPct??null)}),(0,D.jsxs)(`span`,{className:`dashboard-stat-delta`,children:[`RAM `,V(b?.memUsedPct??null)]})]}):(0,D.jsx)(z,{variant:`value`})]})]}),(0,D.jsxs)(`div`,{className:`dashboard-columns`,children:[(0,D.jsxs)(`div`,{className:`dashboard-col`,children:[(j||N)&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{className:`admin-section-label dashboard-col-label`,children:`Public pages`}),(0,D.jsxs)(`div`,{className:`admin-card dashboard-public-pages`,children:[j&&(0,D.jsxs)(`a`,{className:`admin-row dashboard-public-row`,href:`https://${j}`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,D.jsx)(`span`,{className:`dashboard-public-icon`,children:(0,D.jsx)(x,{size:16})}),(0,D.jsx)(`span`,{className:`dashboard-public-name`,children:`Booking page`})]}),N&&(0,D.jsxs)(`a`,{className:`admin-row dashboard-public-row`,href:`https://${N}`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,D.jsx)(`span`,{className:`dashboard-public-icon`,children:(0,D.jsx)(x,{size:16})}),(0,D.jsx)(`span`,{className:`dashboard-public-name`,children:`File drop`})]})]})]}),(0,D.jsx)(`span`,{className:`admin-section-label dashboard-col-label`,children:`Live now`}),L.has(`sessions`)?Z.length===0?(0,D.jsx)(`div`,{className:`admin-card dashboard-empty`,children:`No live sessions right now.`}):Z.map(e=>{let t=[e.sessionId.slice(0,8),pe(e.model),R(Date.parse(e.startedAt),G,c)].filter(Boolean).join(` · `);return(0,D.jsxs)(`div`,{className:`admin-card dashboard-live-card`,children:[(0,D.jsx)(`span`,{className:`admin-status-dot is-live`}),(0,D.jsxs)(`div`,{className:`dashboard-live-main`,children:[(0,D.jsx)(`span`,{className:`dashboard-live-name`,children:e.title}),(0,D.jsx)(`span`,{className:`dashboard-live-meta`,children:t})]}),(0,D.jsx)(`a`,{className:`admin-btn-cta dashboard-open-btn`,href:`/chat?session=${encodeURIComponent(e.sessionId)}`,children:`Open`}),(0,D.jsx)(`button`,{type:`button`,className:`dashboard-stop-btn`,"aria-label":`Stop ${e.title}`,disabled:F.has(e.sessionId),onClick:()=>void _e(e.sessionId),children:(0,D.jsx)(n,{size:12})})]},e.sessionId)}):(0,D.jsx)(z,{variant:`card`,count:2}),(0,D.jsx)(`span`,{className:`admin-section-label dashboard-col-label`,children:`Recent artefacts`}),(0,D.jsx)(`div`,{className:`admin-card dashboard-artefacts`,children:L.has(`artefacts`)?(T??[]).length===0?(0,D.jsx)(`div`,{className:`dashboard-empty`,children:`No recent artefacts.`}):(T??[]).slice(0,6).map(e=>(0,D.jsxs)(`button`,{type:`button`,className:`admin-row dashboard-artefact-row`,onClick:()=>ve(e),children:[(0,D.jsx)(`span`,{className:`dashboard-artefact-icon`,children:e.kind===`agent-template`?(0,D.jsx)(re,{size:16}):(0,D.jsx)(oe,{size:16})}),(0,D.jsx)(`div`,{className:`dashboard-artefact-body`,children:(0,D.jsx)(`span`,{className:`dashboard-artefact-name`,children:e.name})}),(0,D.jsx)(`span`,{className:`dashboard-artefact-time`,children:R(Date.parse(e.updatedAt),G,c)})]},e.id)):(0,D.jsx)(z,{count:3})}),(0,D.jsx)(`a`,{className:`admin-section-label dashboard-col-label dashboard-skills-label`,href:`/skills`,children:`Skills`}),(0,D.jsx)(`div`,{className:`admin-card dashboard-skills`,children:L.has(`skills`)?(k??[]).length===0?(0,D.jsx)(`div`,{className:`dashboard-empty`,children:`No skills yet.`}):(k??[]).map(e=>(0,D.jsxs)(`a`,{className:`admin-row dashboard-skill-row`,href:`/skills`,children:[(0,D.jsx)(`span`,{className:`dashboard-skill-icon`,children:(0,D.jsx)(ie,{size:16})}),(0,D.jsxs)(`div`,{className:`dashboard-skill-body`,children:[(0,D.jsx)(`span`,{className:`dashboard-skill-name`,children:e.skill}),(0,D.jsx)(`span`,{className:`dashboard-skill-plugin`,children:e.plugin})]})]},`${e.plugin}/${e.skill}`)):(0,D.jsx)(z,{count:2})})]}),(0,D.jsxs)(`div`,{className:`dashboard-col`,children:[(0,D.jsx)(`span`,{className:`admin-section-label dashboard-col-label`,children:`Channels`}),L.has(`conversations`)?Q.length===0?(0,D.jsx)(`div`,{className:`admin-card dashboard-empty`,children:`No channel activity.`}):Q.map(t=>{let n=_===t.channel;return(0,D.jsxs)(`div`,{className:`admin-card dashboard-channel-card`,children:[(0,D.jsxs)(`button`,{type:`button`,className:`dashboard-channel-head`,"aria-expanded":n,onClick:()=>v(e=>e===t.channel?null:t.channel),children:[(0,D.jsx)(`span`,{className:`dashboard-channel-glyph`,children:t.channel===`whatsapp`||t.channel===`telegram`?(0,D.jsx)(u,{channel:t.channel,size:16}):(0,D.jsx)(r,{size:16})}),(0,D.jsx)(`span`,{className:`dashboard-channel-name`,children:a[t.channel]??t.channel}),(0,D.jsx)(`span`,{className:`dashboard-channel-badge`,children:t.count}),(0,D.jsx)(`span`,{className:`dashboard-channel-chevron`,children:n?(0,D.jsx)(ae,{size:14}):(0,D.jsx)(ne,{size:14})})]}),n?(0,D.jsx)(`div`,{className:`dashboard-channel-convs`,children:t.rows.map(t=>(0,D.jsxs)(`button`,{type:`button`,className:`admin-row dashboard-channel-conv-row`,onClick:()=>o(t),title:t.title,children:[(0,D.jsxs)(`span`,{className:`dashboard-channel-conv-line`,children:[(0,D.jsx)(te,{accountId:t.accountId??``,jid:t.remoteJid,sessionKey:e??``,className:`dashboard-channel-conv-avatar`,size:16}),(0,D.jsx)(`span`,{className:`dashboard-channel-conv-name`,children:f(t)}),t.isGroup===!0&&(0,D.jsx)(`span`,{className:`dashboard-channel-conv-tag is-group`,children:`Group`}),t.role===`public`&&(0,D.jsx)(`span`,{className:`dashboard-channel-conv-tag is-public`,children:`Public`}),(0,D.jsx)(`span`,{className:`dashboard-channel-conv-tag`,children:t.isHouse?`House`:`Client`}),!t.preview&&t.lastMessageAt&&(0,D.jsx)(`span`,{className:`dashboard-channel-conv-time`,children:R(Date.parse(t.lastMessageAt),G,c)})]}),t.preview?(0,D.jsxs)(`span`,{className:`dashboard-channel-conv-sub`,children:[(0,D.jsx)(`span`,{className:`dashboard-channel-conv-preview`,children:t.preview}),t.lastMessageAt&&(0,D.jsx)(`span`,{className:`dashboard-channel-conv-time`,children:R(Date.parse(t.lastMessageAt),G,c)})]}):null]},s(t)))}):t.preview&&(0,D.jsx)(`span`,{className:`dashboard-channel-preview`,children:t.preview})]},t.channel)}):(0,D.jsx)(z,{variant:`card`,count:2})]})]})]})}function G(){let e=h(),[t,n]=(0,E.useState)(!1);(0,E.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&n(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let r=(0,E.useCallback)(async()=>{let t=e.claudeInfo!=null;if(n(!0),t)return;let r=Date.now();if(!e.cacheKey){console.error(`[admin-ui] claude-info-fetch-skipped reason=no-session-key`);return}try{let t=await fetch(`/api/admin/claude-info?session_key=${encodeURIComponent(e.cacheKey)}`);if(t.ok){let n=await t.json();e.setClaudeInfo(n)}}catch(e){console.error(`[admin-ui] claude-info-fetch-failed ms=${Date.now()-r} error="${e instanceof Error?e.message:String(e)}"`)}},[e]),i=(0,E.useCallback)(({code:t,path:n})=>{console.warn(`[admin-auth] outcome=chat-tab-logout-on-401 code=${t} path=${n}`),e.handleLogout()},[e]);return e.appState===`chat`?(0,D.jsx)(o,{cacheKey:e.cacheKey,onSessionExpired:i,surface:`chat`,children:(0,D.jsx)(b,{cacheKey:e.cacheKey,businessName:e.businessName,sessionId:e.sessionId,onLogout:e.handleLogout,onDisconnect:e.handleDisconnect,disconnecting:e.disconnecting,claudeConnected:e.claudeConnected,onConnectClaude:()=>e.setAppState(`connect-claude`),userName:e.userName,userAvatar:e.userAvatar,role:e.role,footer:(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(O,{onOpen:r}),(0,D.jsx)(y,{show:t,onClose:()=>n(!1),claudeInfo:e.claudeInfo,messages:[],sessionElapsed:0,sessionId:e.sessionId,cacheKey:e.cacheKey})]}),children:t=>(0,D.jsx)(D.Fragment,{children:t.dataOpen&&e.cacheKey?(0,D.jsx)(C,{cacheKey:e.cacheKey}):t.selectedWhatsapp&&e.cacheKey?t.selectedWhatsapp.source===`store`&&t.selectedWhatsapp.remoteJid&&t.selectedWhatsapp.accountId?(0,D.jsx)(w,{accountId:t.selectedWhatsapp.accountId,remoteJid:t.selectedWhatsapp.remoteJid,contactName:f(t.selectedWhatsapp),sessionKey:e.cacheKey,onBack:t.onClearWhatsapp},s(t.selectedWhatsapp)):(0,D.jsx)(k,{sessionId:t.selectedWhatsapp.sessionId,projectDir:t.selectedWhatsapp.projectDir,sessionKey:e.cacheKey,contactName:f(t.selectedWhatsapp),onBack:t.onClearWhatsapp},s(t.selectedWhatsapp)):(0,D.jsx)(W,{cacheKey:e.cacheKey,userName:e.userName,onSelectWhatsappConversation:t.onSelectWhatsappConversation})})})}):(0,D.jsx)(g,{auth:e})}(0,T.createRoot)(document.getElementById(`root`)).render((0,D.jsx)(G,{}));
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-CltuBf4Z.js";import{M as t,O as n,V as r,Z as i,at as a,ct as o,j as s,k as c,nt as l,ot as u}from"./useMediaQuery-_mMln3Fu.js";import{k as d,t as f,w as p,x as m}from"./AdminShell-DVBAMUCy.js";var h=i(`power-off`,[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`,key:`dxknvb`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`,key:`1x7qb5`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),g=i(`power`,[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]),_=u(),v=e(o(),1),y={green:`success`,amber:`warning`,red:`error`};function b(e){if(!e.startsWith(`mcp__`))return e;let t=e.slice(5),n=t.indexOf(`__`);if(n<0)return e;let r=t.slice(n+2);return r.length>0?r:e}function x(e){let t=` Nothing will be able to hand work to it until it is switched back on.`;if(e.length===0)return t;let n=e.length===1?`skill runs`:`skills run`;return` ${e.length} ${n} through it: ${e.join(`, `)}.${t}`}var S=l(),C={read:`read`,write_local:`writes`,exec:`runs`,external:`sends`},w={read:`tool-chip-read`,write_local:`tool-chip-write_local`,exec:`tool-chip-exec`,external:`tool-chip-external`,unresolved:`tool-chip-unresolved`};function T({label:e,body:t}){return(0,S.jsxs)(`div`,{className:`agent-doc`,children:[(0,S.jsx)(`span`,{className:`agent-doc-label`,children:e}),(0,S.jsx)(`pre`,{className:`skill-body`,children:t.trim()||`Empty.`})]})}function E({summary:e,publicBaseUrl:n,accountId:i,adminFetch:a,onClose:o,onDeleted:c,onToggled:l}){let u=e.kind===`specialist`,d=e.origin===`specialist`,f=e.origin===`shipped`&&e.disabled,_=d||f,[E]=(0,v.useState)(i),[D,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(!0),[j,M]=(0,v.useState)(null),[N,P]=(0,v.useState)(!1),[F,I]=(0,v.useState)(!1),[L,R]=(0,v.useState)(!1),[z,B]=(0,v.useState)(!1);(0,v.useEffect)(()=>{let t=!1;A(!0),M(null);let n=e.origin===`shipped`?`?origin=shipped`:e.kind===`specialist`&&e.plugin?`?plugin=${encodeURIComponent(e.plugin)}`:``;return a(`/api/admin/agents/${encodeURIComponent(e.slug)}${n}`).then(async e=>{if(!t){if(!e.ok)throw Error(`HTTP ${e.status}`);O((await e.json()).agent)}}).catch(e=>{t||M(e instanceof Error?e.message:`Failed to load`)}).finally(()=>{t||A(!1)}),()=>{t=!0}},[a,e.slug]),(0,v.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!F&&o()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[F,o]);let V=(0,v.useCallback)(async()=>{I(!0),M(null);try{let t=await a(`/api/admin/agents/${encodeURIComponent(e.slug)}?accountId=${encodeURIComponent(E??``)}`,{method:`DELETE`,headers:{"content-type":`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}c(e)}catch(e){M(e instanceof Error?e.message:`Delete failed`),I(!1),P(!1)}},[a,e,E,c]),H=(0,v.useCallback)(async()=>{let t=e.disabled?`enable`:`disable`;B(!0),M(null);try{let n=await a(`/api/admin/agents/${encodeURIComponent(e.slug)}/${t}?accountId=${encodeURIComponent(E??``)}`,{method:`POST`,headers:{"content-type":`application/json`}});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}l(),o()}catch(e){M(e instanceof Error?e.message:`${t} failed`),B(!1),R(!1)}},[a,e,E,l,o]),U=u?null:D,W=u?D:null;return(0,S.jsx)(`div`,{className:`cal-modal-overlay`,onClick:()=>{F||o()},children:(0,S.jsxs)(`div`,{className:`cal-modal cal-modal-wide`,role:`dialog`,"aria-modal":`true`,"aria-label":`Agent detail`,onClick:e=>e.stopPropagation(),children:[(0,S.jsxs)(`div`,{className:`cal-modal-header`,children:[(0,S.jsxs)(`span`,{className:`cal-modal-kind`,children:[(0,S.jsx)(p,{size:13}),` `,u?`Specialist`:`Agent`]}),(0,S.jsx)(`button`,{type:`button`,className:`cal-modal-close`,onClick:o,"aria-label":`Close`,autoFocus:!0,disabled:F,children:(0,S.jsx)(s,{size:16})})]}),(0,S.jsxs)(`div`,{className:`cal-modal-body`,children:[(0,S.jsx)(`div`,{className:`cal-modal-title`,children:e.displayName}),(0,S.jsxs)(`div`,{className:`cal-modal-row cal-modal-meta`,children:[!u&&(0,S.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),(0,S.jsxs)(`span`,{children:[`/`,e.slug]}),e.risk&&(0,S.jsx)(`span`,{className:`ui-pill ui-pill--solid-${y[e.risk]}`,children:e.risk===`green`?`Read only`:e.risk===`amber`?`Writes`:`Runs`}),e.disabled&&(0,S.jsx)(`span`,{className:`ui-pill ui-pill--tint-error`,children:`Disabled`})]}),e.risk&&e.riskReason&&(0,S.jsx)(`div`,{className:`cal-modal-row agent-risk-reason`,children:(0,S.jsx)(`span`,{children:e.riskReason})}),e.unresolved.length>0&&(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsxs)(`span`,{children:[`Forced to Runs: no declared risk class for `,e.unresolved.join(`, `),`.`]})}),k&&(0,S.jsxs)(`div`,{className:`cal-modal-row cal-modal-meta`,children:[(0,S.jsx)(r,{size:14,className:`spin`}),(0,S.jsx)(`span`,{children:`Loading…`})]}),U&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsxs)(`span`,{children:[U.status,U.model?` · ${U.model}`:``]})}),(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsxs)(`a`,{href:`${n}/${e.slug}`,target:`_blank`,rel:`noopener noreferrer`,className:`cal-link`,children:[(0,S.jsx)(m,{size:13}),` Open agent`]})}),U.present.identity&&(0,S.jsx)(T,{label:`Identity`,body:U.identity}),U.present.soul&&(0,S.jsx)(T,{label:`Soul`,body:U.soul}),U.present.knowledge&&(0,S.jsx)(T,{label:`Knowledge`,body:U.knowledge}),U.present.knowledgeSummary&&(0,S.jsx)(T,{label:`Knowledge summary`,body:U.knowledgeSummary}),U.knowledgeKeywords.length>0&&(0,S.jsxs)(`div`,{className:`skill-refs`,children:[(0,S.jsx)(`span`,{className:`skill-refs-label`,children:`Knowledge keywords`}),U.knowledgeKeywords.map(e=>(0,S.jsx)(`span`,{className:`skill-ref`,children:e},e))]})]}),W&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsxs)(`span`,{children:[e.plugin,W.model?` · ${W.model}`:``]})}),W.description&&(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsx)(`span`,{children:W.description})}),W.byTool.length>0&&(0,S.jsxs)(`div`,{className:`chip-refs`,children:[(0,S.jsxs)(`span`,{className:`skill-refs-label`,children:[`Tools (`,W.byTool.length,`)`]}),(0,S.jsx)(`div`,{className:`chip-row`,children:W.byTool.map(({tool:e,risk:t})=>(0,S.jsx)(`span`,{"data-testid":`tool-chip-${e}`,className:`tool-chip ${w[t??`unresolved`]}`,title:t?`${e} — ${C[t]}`:`${e} — no declared risk class`,children:b(e)},e))})]}),W.skills.length>0&&(0,S.jsxs)(`div`,{className:`chip-refs`,children:[(0,S.jsx)(`span`,{className:`skill-refs-label`,children:`Skills`}),(0,S.jsx)(`div`,{className:`chip-row`,children:W.skills.map(e=>(0,S.jsx)(`span`,{className:`tool-chip tool-chip-skill`,children:e},e))})]}),(0,S.jsx)(T,{label:`System prompt`,body:W.systemPrompt})]})]}),j&&(0,S.jsx)(`div`,{className:`cal-modal-error`,children:j}),(0,S.jsx)(`div`,{className:`cal-modal-actions`,children:_?L?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`cal-modal-confirm-text`,children:e.disabled?`Put this agent back in the dispatchable set?`:`Stop this agent being dispatched?${x(W?.skills??[])}`}),(0,S.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:H,disabled:z,children:[z?(0,S.jsx)(r,{size:14,className:`spin`}):e.disabled?(0,S.jsx)(g,{size:14}):(0,S.jsx)(h,{size:14}),e.disabled?` Enable`:` Disable`]}),(0,S.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>R(!1),disabled:z,children:`Cancel`})]}):(0,S.jsx)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:()=>R(!0),disabled:z||k||!E,children:e.disabled?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(g,{size:14}),` Enable`]}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(h,{size:14}),` Disable`]})}):u?(0,S.jsx)(`span`,{className:`cal-modal-confirm-text`,children:`This agent is part of the product. To stop it running on its own, suspend the routines that dispatch it.`}):(0,S.jsxs)(S.Fragment,{children:[!N&&(0,S.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:()=>P(!0),disabled:F||k||!E,children:[(0,S.jsx)(t,{size:14}),` Delete`]}),N&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`cal-modal-confirm-text`,children:`Delete this agent?`}),(0,S.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:V,disabled:F,children:[F?(0,S.jsx)(r,{size:14,className:`spin`}):(0,S.jsx)(t,{size:14}),` Delete`]}),(0,S.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>P(!1),disabled:F,children:`Cancel`})]})]})})]})})}var D=`maxy-admin-session-key`,O={green:`Read only`,amber:`Writes`,red:`Runs`},k={shipped:`Shipped`,specialist:`Specialist`,public:`Public`};function A(){let[e,t]=(0,v.useState)(null),[r,i]=(0,v.useState)(!1),[a,o]=(0,v.useState)(void 0),[s,l]=(0,v.useState)(null),[u,p]=(0,v.useState)(void 0),[m,h]=(0,v.useState)(null),[g,_]=(0,v.useState)(null);(0,v.useEffect)(()=>{let e=!1,n=null;try{n=sessionStorage.getItem(D)}catch{}if(!n){i(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(n)}`).then(async r=>{if(!e){if(r.status===401){try{sessionStorage.removeItem(D)}catch{}window.location.href=`/`;return}if(r.ok)try{let e=await r.json();typeof e.businessName==`string`&&o(e.businessName),e.sessionId!==void 0&&l(e.sessionId??null),_(e.role??null),p(e.userName===void 0?null:e.userName),h(e.avatar??null)}catch{}t(n),i(!0)}}).catch(()=>{e||(t(n),i(!0))}),()=>{e=!0}},[]);let y=(0,v.useCallback)(()=>{try{sessionStorage.removeItem(D)}catch{}window.location.href=`/`},[]),[b,x]=(0,v.useState)(!1),C=(0,v.useCallback)(async()=>{x(!0);try{let e=await d();if(e){try{sessionStorage.removeItem(D)}catch{}window.location.href=`/`}return e}finally{x(!1)}},[]);return r?e?(0,S.jsx)(c,{cacheKey:e,surface:`agents`,onSessionExpired:({code:e,path:t})=>{console.warn(`[admin-auth] outcome=session-expired-redirect code=${e} path=${t} surface=agents`);try{sessionStorage.removeItem(D)}catch{}window.location.href=`/`},children:(0,S.jsx)(f,{cacheKey:e,businessName:a,sessionId:s,onLogout:y,onDisconnect:C,disconnecting:b,userName:u,userAvatar:m,role:g,children:(0,S.jsx)(j,{cacheKey:e})})}):(0,S.jsx)(`div`,{className:`cal-page`,children:(0,S.jsxs)(`div`,{className:`cal-empty`,children:[(0,S.jsx)(`p`,{children:`You are not signed in.`}),(0,S.jsxs)(`p`,{children:[`Open the `,(0,S.jsx)(`a`,{href:`/`,className:`cal-link`,children:`main admin page`}),` and log in, then return here.`]})]})}):(0,S.jsx)(n,{surface:`gate`})}function j({cacheKey:e}){let{adminFetch:t,sessionRefetchNonce:i}=a({initialCacheKey:e,surface:`agents`}),[o,s]=(0,v.useState)([]),[c,l]=(0,v.useState)(0),[u,d]=(0,v.useState)(0),[f,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(null),[_,b]=(0,v.useState)(!1),[x,C]=(0,v.useState)(!1),[w,T]=(0,v.useState)(null),[D,A]=(0,v.useState)(null),[j,M]=(0,v.useState)(``);(0,v.useEffect)(()=>{M(window.location.hostname.startsWith(`admin.`)?window.location.origin.replace(`admin.`,`public.`):window.location.origin)},[]);let N=(0,v.useCallback)(()=>{let e=!1;return b(!0),T(null),t(`/api/admin/agents`).then(async t=>{if(e)return;if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();s(Array.isArray(n.agents)?n.agents:[]),l(typeof n.skipped==`number`?n.skipped:0),d(typeof n.specialistsSkipped==`number`?n.specialistsSkipped:0),g(typeof n.accountId==`string`?n.accountId:null),m(n.riskSurfaceFailed===!0)}).catch(t=>{e||(T(t instanceof Error?t.message:`Failed to load`),s([]))}).finally(()=>{e||(b(!1),C(!0))}),()=>{e=!0}},[t]);(0,v.useEffect)(()=>N(),[N,i]);let P=(0,v.useCallback)(e=>{s(t=>t.filter(t=>t.slug!==e.slug)),A(null),N()},[N]);if(!x)return(0,S.jsx)(n,{surface:`gate`});let F=o.filter(e=>e.disabled).length;return(0,S.jsxs)(`div`,{className:`cal-page`,children:[(0,S.jsx)(`header`,{className:`cal-header`,children:(0,S.jsxs)(`div`,{className:`cal-nav`,children:[(0,S.jsxs)(`span`,{className:`cal-range-label`,children:[(0,S.jsx)(p,{size:16}),` `,o.length,` agent`,o.length===1?``:`s`,` · `,F,` stood down`]}),_&&(0,S.jsx)(r,{size:16,className:`spin`})]})}),(0,S.jsxs)(`div`,{className:`cal-body agents-body`,children:[w&&(0,S.jsxs)(`div`,{className:`cal-error`,children:[`Could not load agents: `,w]}),f&&(0,S.jsx)(`div`,{className:`cal-error`,children:`The plugin registry could not be read, so every agent below is shown at the highest risk regardless of the tools it declares. These badges are not derived.`}),c+u>0&&(0,S.jsxs)(`div`,{className:`cal-error`,children:[c+u,` agent`,c+u===1?``:`s`,` could not be read (malformed config or frontmatter).`]}),!w&&!_&&o.length===0&&(0,S.jsx)(`div`,{className:`cal-empty`,children:(0,S.jsx)(`p`,{children:`No agents yet. Ask in chat to create one.`})}),o.length>0&&(0,S.jsx)(`div`,{className:`routine-list agents-list`,children:o.map(e=>(0,S.jsxs)(`button`,{type:`button`,className:`admin-card admin-card--padded routine-card`,onClick:()=>A(e),children:[(0,S.jsxs)(`span`,{className:`admin-card-title routine-card-title`,children:[e.displayName,e.risk&&(0,S.jsx)(`span`,{className:`ui-pill ui-pill--solid-${y[e.risk]}`,"data-testid":`agent-risk-badge`,children:O[e.risk]}),(0,S.jsx)(`span`,{className:`ui-pill agent-origin-${e.origin}`,children:k[e.origin]}),e.kind===`specialist`&&(0,S.jsx)(`span`,{className:`ui-pill ${e.disabled?`ui-pill--tint-error`:`ui-pill--tint-success`}`,children:e.disabled?`Stood down`:`Live`})]}),e.kind===`specialist`?(0,S.jsxs)(`span`,{className:`routine-card-sched`,children:[`/`,e.slug]}):(0,S.jsxs)(`span`,{className:`routine-card-sched`,children:[(0,S.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),` /`,e.slug]}),(0,S.jsx)(`span`,{className:`routine-card-meta`,children:e.origin===`public`?e.status:e.plugin})]},`${e.origin}:${e.slug}`))})]}),D&&(0,S.jsx)(E,{summary:D,publicBaseUrl:j,accountId:h,adminFetch:t,onClose:()=>A(null),onDeleted:P,onToggled:N})]})}(0,_.createRoot)(document.getElementById(`root`)).render((0,S.jsx)(A,{}));
|
|
1
|
+
import{o as e}from"./chunk-CltuBf4Z.js";import{M as t,O as n,V as r,Z as i,at as a,ct as o,j as s,k as c,nt as l,ot as u}from"./useMediaQuery-CLxecNeT.js";import{A as d,T as f,t as p,x as m}from"./AdminShell-DUUw6WNs.js";var h=i(`power-off`,[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`,key:`dxknvb`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`,key:`1x7qb5`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),g=i(`power`,[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]),_=u(),v=e(o(),1),y={green:`success`,amber:`warning`,red:`error`};function b(e){if(!e.startsWith(`mcp__`))return e;let t=e.slice(5),n=t.indexOf(`__`);if(n<0)return e;let r=t.slice(n+2);return r.length>0?r:e}function x(e){let t=` Nothing will be able to hand work to it until it is switched back on.`;if(e.length===0)return t;let n=e.length===1?`skill runs`:`skills run`;return` ${e.length} ${n} through it: ${e.join(`, `)}.${t}`}var S=l(),C={read:`read`,write_local:`writes`,exec:`runs`,external:`sends`},w={read:`tool-chip-read`,write_local:`tool-chip-write_local`,exec:`tool-chip-exec`,external:`tool-chip-external`,unresolved:`tool-chip-unresolved`};function T({label:e,body:t}){return(0,S.jsxs)(`div`,{className:`agent-doc`,children:[(0,S.jsx)(`span`,{className:`agent-doc-label`,children:e}),(0,S.jsx)(`pre`,{className:`skill-body`,children:t.trim()||`Empty.`})]})}function E({summary:e,publicBaseUrl:n,accountId:i,adminFetch:a,onClose:o,onDeleted:c,onToggled:l}){let u=e.kind===`specialist`,d=e.origin===`specialist`,p=e.origin===`shipped`&&e.disabled,_=d||p,[E]=(0,v.useState)(i),[D,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(!0),[j,M]=(0,v.useState)(null),[N,P]=(0,v.useState)(!1),[F,I]=(0,v.useState)(!1),[L,R]=(0,v.useState)(!1),[z,B]=(0,v.useState)(!1);(0,v.useEffect)(()=>{let t=!1;A(!0),M(null);let n=e.origin===`shipped`?`?origin=shipped`:e.kind===`specialist`&&e.plugin?`?plugin=${encodeURIComponent(e.plugin)}`:``;return a(`/api/admin/agents/${encodeURIComponent(e.slug)}${n}`).then(async e=>{if(!t){if(!e.ok)throw Error(`HTTP ${e.status}`);O((await e.json()).agent)}}).catch(e=>{t||M(e instanceof Error?e.message:`Failed to load`)}).finally(()=>{t||A(!1)}),()=>{t=!0}},[a,e.slug]),(0,v.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!F&&o()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[F,o]);let V=(0,v.useCallback)(async()=>{I(!0),M(null);try{let t=await a(`/api/admin/agents/${encodeURIComponent(e.slug)}?accountId=${encodeURIComponent(E??``)}`,{method:`DELETE`,headers:{"content-type":`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}c(e)}catch(e){M(e instanceof Error?e.message:`Delete failed`),I(!1),P(!1)}},[a,e,E,c]),H=(0,v.useCallback)(async()=>{let t=e.disabled?`enable`:`disable`;B(!0),M(null);try{let n=await a(`/api/admin/agents/${encodeURIComponent(e.slug)}/${t}?accountId=${encodeURIComponent(E??``)}`,{method:`POST`,headers:{"content-type":`application/json`}});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}l(),o()}catch(e){M(e instanceof Error?e.message:`${t} failed`),B(!1),R(!1)}},[a,e,E,l,o]),U=u?null:D,W=u?D:null;return(0,S.jsx)(`div`,{className:`cal-modal-overlay`,onClick:()=>{F||o()},children:(0,S.jsxs)(`div`,{className:`cal-modal cal-modal-wide`,role:`dialog`,"aria-modal":`true`,"aria-label":`Agent detail`,onClick:e=>e.stopPropagation(),children:[(0,S.jsxs)(`div`,{className:`cal-modal-header`,children:[(0,S.jsxs)(`span`,{className:`cal-modal-kind`,children:[(0,S.jsx)(f,{size:13}),` `,u?`Specialist`:`Agent`]}),(0,S.jsx)(`button`,{type:`button`,className:`cal-modal-close`,onClick:o,"aria-label":`Close`,autoFocus:!0,disabled:F,children:(0,S.jsx)(s,{size:16})})]}),(0,S.jsxs)(`div`,{className:`cal-modal-body`,children:[(0,S.jsx)(`div`,{className:`cal-modal-title`,children:e.displayName}),(0,S.jsxs)(`div`,{className:`cal-modal-row cal-modal-meta`,children:[!u&&(0,S.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),(0,S.jsxs)(`span`,{children:[`/`,e.slug]}),e.risk&&(0,S.jsx)(`span`,{className:`ui-pill ui-pill--solid-${y[e.risk]}`,children:e.risk===`green`?`Read only`:e.risk===`amber`?`Writes`:`Runs`}),e.disabled&&(0,S.jsx)(`span`,{className:`ui-pill ui-pill--tint-error`,children:`Disabled`})]}),e.risk&&e.riskReason&&(0,S.jsx)(`div`,{className:`cal-modal-row agent-risk-reason`,children:(0,S.jsx)(`span`,{children:e.riskReason})}),e.unresolved.length>0&&(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsxs)(`span`,{children:[`Forced to Runs: no declared risk class for `,e.unresolved.join(`, `),`.`]})}),k&&(0,S.jsxs)(`div`,{className:`cal-modal-row cal-modal-meta`,children:[(0,S.jsx)(r,{size:14,className:`spin`}),(0,S.jsx)(`span`,{children:`Loading…`})]}),U&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsxs)(`span`,{children:[U.status,U.model?` · ${U.model}`:``]})}),(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsxs)(`a`,{href:`${n}/${e.slug}`,target:`_blank`,rel:`noopener noreferrer`,className:`cal-link`,children:[(0,S.jsx)(m,{size:13}),` Open agent`]})}),U.present.identity&&(0,S.jsx)(T,{label:`Identity`,body:U.identity}),U.present.soul&&(0,S.jsx)(T,{label:`Soul`,body:U.soul}),U.present.knowledge&&(0,S.jsx)(T,{label:`Knowledge`,body:U.knowledge}),U.present.knowledgeSummary&&(0,S.jsx)(T,{label:`Knowledge summary`,body:U.knowledgeSummary}),U.knowledgeKeywords.length>0&&(0,S.jsxs)(`div`,{className:`skill-refs`,children:[(0,S.jsx)(`span`,{className:`skill-refs-label`,children:`Knowledge keywords`}),U.knowledgeKeywords.map(e=>(0,S.jsx)(`span`,{className:`skill-ref`,children:e},e))]})]}),W&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsxs)(`span`,{children:[e.plugin,W.model?` · ${W.model}`:``]})}),W.description&&(0,S.jsx)(`div`,{className:`cal-modal-row cal-modal-meta`,children:(0,S.jsx)(`span`,{children:W.description})}),W.byTool.length>0&&(0,S.jsxs)(`div`,{className:`chip-refs`,children:[(0,S.jsxs)(`span`,{className:`skill-refs-label`,children:[`Tools (`,W.byTool.length,`)`]}),(0,S.jsx)(`div`,{className:`chip-row`,children:W.byTool.map(({tool:e,risk:t})=>(0,S.jsx)(`span`,{"data-testid":`tool-chip-${e}`,className:`tool-chip ${w[t??`unresolved`]}`,title:t?`${e} — ${C[t]}`:`${e} — no declared risk class`,children:b(e)},e))})]}),W.skills.length>0&&(0,S.jsxs)(`div`,{className:`chip-refs`,children:[(0,S.jsx)(`span`,{className:`skill-refs-label`,children:`Skills`}),(0,S.jsx)(`div`,{className:`chip-row`,children:W.skills.map(e=>(0,S.jsx)(`span`,{className:`tool-chip tool-chip-skill`,children:e},e))})]}),(0,S.jsx)(T,{label:`System prompt`,body:W.systemPrompt})]})]}),j&&(0,S.jsx)(`div`,{className:`cal-modal-error`,children:j}),(0,S.jsx)(`div`,{className:`cal-modal-actions`,children:_?L?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`cal-modal-confirm-text`,children:e.disabled?`Put this agent back in the dispatchable set?`:`Stop this agent being dispatched?${x(W?.skills??[])}`}),(0,S.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:H,disabled:z,children:[z?(0,S.jsx)(r,{size:14,className:`spin`}):e.disabled?(0,S.jsx)(g,{size:14}):(0,S.jsx)(h,{size:14}),e.disabled?` Enable`:` Disable`]}),(0,S.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>R(!1),disabled:z,children:`Cancel`})]}):(0,S.jsx)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:()=>R(!0),disabled:z||k||!E,children:e.disabled?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(g,{size:14}),` Enable`]}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(h,{size:14}),` Disable`]})}):u?(0,S.jsx)(`span`,{className:`cal-modal-confirm-text`,children:`This agent is part of the product. To stop it running on its own, suspend the routines that dispatch it.`}):(0,S.jsxs)(S.Fragment,{children:[!N&&(0,S.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:()=>P(!0),disabled:F||k||!E,children:[(0,S.jsx)(t,{size:14}),` Delete`]}),N&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`cal-modal-confirm-text`,children:`Delete this agent?`}),(0,S.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:V,disabled:F,children:[F?(0,S.jsx)(r,{size:14,className:`spin`}):(0,S.jsx)(t,{size:14}),` Delete`]}),(0,S.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>P(!1),disabled:F,children:`Cancel`})]})]})})]})})}var D=`maxy-admin-session-key`,O={green:`Read only`,amber:`Writes`,red:`Runs`},k={shipped:`Shipped`,specialist:`Specialist`,public:`Public`};function A(){let[e,t]=(0,v.useState)(null),[r,i]=(0,v.useState)(!1),[a,o]=(0,v.useState)(void 0),[s,l]=(0,v.useState)(null),[u,f]=(0,v.useState)(void 0),[m,h]=(0,v.useState)(null),[g,_]=(0,v.useState)(null);(0,v.useEffect)(()=>{let e=!1,n=null;try{n=sessionStorage.getItem(D)}catch{}if(!n){i(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(n)}`).then(async r=>{if(!e){if(r.status===401){try{sessionStorage.removeItem(D)}catch{}window.location.href=`/`;return}if(r.ok)try{let e=await r.json();typeof e.businessName==`string`&&o(e.businessName),e.sessionId!==void 0&&l(e.sessionId??null),_(e.role??null),f(e.userName===void 0?null:e.userName),h(e.avatar??null)}catch{}t(n),i(!0)}}).catch(()=>{e||(t(n),i(!0))}),()=>{e=!0}},[]);let y=(0,v.useCallback)(()=>{try{sessionStorage.removeItem(D)}catch{}window.location.href=`/`},[]),[b,x]=(0,v.useState)(!1),C=(0,v.useCallback)(async()=>{x(!0);try{let e=await d();if(e){try{sessionStorage.removeItem(D)}catch{}window.location.href=`/`}return e}finally{x(!1)}},[]);return r?e?(0,S.jsx)(c,{cacheKey:e,surface:`agents`,onSessionExpired:({code:e,path:t})=>{console.warn(`[admin-auth] outcome=session-expired-redirect code=${e} path=${t} surface=agents`);try{sessionStorage.removeItem(D)}catch{}window.location.href=`/`},children:(0,S.jsx)(p,{cacheKey:e,businessName:a,sessionId:s,onLogout:y,onDisconnect:C,disconnecting:b,userName:u,userAvatar:m,role:g,children:(0,S.jsx)(j,{cacheKey:e})})}):(0,S.jsx)(`div`,{className:`cal-page`,children:(0,S.jsxs)(`div`,{className:`cal-empty`,children:[(0,S.jsx)(`p`,{children:`You are not signed in.`}),(0,S.jsxs)(`p`,{children:[`Open the `,(0,S.jsx)(`a`,{href:`/`,className:`cal-link`,children:`main admin page`}),` and log in, then return here.`]})]})}):(0,S.jsx)(n,{surface:`gate`})}function j({cacheKey:e}){let{adminFetch:t,sessionRefetchNonce:i}=a({initialCacheKey:e,surface:`agents`}),[o,s]=(0,v.useState)([]),[c,l]=(0,v.useState)(0),[u,d]=(0,v.useState)(0),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(null),[_,b]=(0,v.useState)(!1),[x,C]=(0,v.useState)(!1),[w,T]=(0,v.useState)(null),[D,A]=(0,v.useState)(null),[j,M]=(0,v.useState)(``);(0,v.useEffect)(()=>{M(window.location.hostname.startsWith(`admin.`)?window.location.origin.replace(`admin.`,`public.`):window.location.origin)},[]);let N=(0,v.useCallback)(()=>{let e=!1;return b(!0),T(null),t(`/api/admin/agents`).then(async t=>{if(e)return;if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();s(Array.isArray(n.agents)?n.agents:[]),l(typeof n.skipped==`number`?n.skipped:0),d(typeof n.specialistsSkipped==`number`?n.specialistsSkipped:0),g(typeof n.accountId==`string`?n.accountId:null),m(n.riskSurfaceFailed===!0)}).catch(t=>{e||(T(t instanceof Error?t.message:`Failed to load`),s([]))}).finally(()=>{e||(b(!1),C(!0))}),()=>{e=!0}},[t]);(0,v.useEffect)(()=>N(),[N,i]);let P=(0,v.useCallback)(e=>{s(t=>t.filter(t=>t.slug!==e.slug)),A(null),N()},[N]);if(!x)return(0,S.jsx)(n,{surface:`gate`});let F=o.filter(e=>e.disabled).length;return(0,S.jsxs)(`div`,{className:`cal-page`,children:[(0,S.jsx)(`header`,{className:`cal-header`,children:(0,S.jsxs)(`div`,{className:`cal-nav`,children:[(0,S.jsxs)(`span`,{className:`cal-range-label`,children:[(0,S.jsx)(f,{size:16}),` `,o.length,` agent`,o.length===1?``:`s`,` · `,F,` stood down`]}),_&&(0,S.jsx)(r,{size:16,className:`spin`})]})}),(0,S.jsxs)(`div`,{className:`cal-body agents-body`,children:[w&&(0,S.jsxs)(`div`,{className:`cal-error`,children:[`Could not load agents: `,w]}),p&&(0,S.jsx)(`div`,{className:`cal-error`,children:`The plugin registry could not be read, so every agent below is shown at the highest risk regardless of the tools it declares. These badges are not derived.`}),c+u>0&&(0,S.jsxs)(`div`,{className:`cal-error`,children:[c+u,` agent`,c+u===1?``:`s`,` could not be read (malformed config or frontmatter).`]}),!w&&!_&&o.length===0&&(0,S.jsx)(`div`,{className:`cal-empty`,children:(0,S.jsx)(`p`,{children:`No agents yet. Ask in chat to create one.`})}),o.length>0&&(0,S.jsx)(`div`,{className:`routine-list agents-list`,children:o.map(e=>(0,S.jsxs)(`button`,{type:`button`,className:`admin-card admin-card--padded routine-card`,onClick:()=>A(e),children:[(0,S.jsxs)(`span`,{className:`admin-card-title routine-card-title`,children:[e.displayName,e.risk&&(0,S.jsx)(`span`,{className:`ui-pill ui-pill--solid-${y[e.risk]}`,"data-testid":`agent-risk-badge`,children:O[e.risk]}),(0,S.jsx)(`span`,{className:`ui-pill agent-origin-${e.origin}`,children:k[e.origin]}),e.kind===`specialist`&&(0,S.jsx)(`span`,{className:`ui-pill ${e.disabled?`ui-pill--tint-error`:`ui-pill--tint-success`}`,children:e.disabled?`Stood down`:`Live`})]}),e.kind===`specialist`?(0,S.jsxs)(`span`,{className:`routine-card-sched`,children:[`/`,e.slug]}):(0,S.jsxs)(`span`,{className:`routine-card-sched`,children:[(0,S.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),` /`,e.slug]}),(0,S.jsx)(`span`,{className:`routine-card-meta`,children:e.origin===`public`?e.status:e.plugin})]},`${e.origin}:${e.slug}`))})]}),D&&(0,S.jsx)(E,{summary:D,publicBaseUrl:j,accountId:h,adminFetch:t,onClose:()=>A(null),onDeleted:P,onToggled:N})]})}(0,_.createRoot)(document.getElementById(`root`)).render((0,S.jsx)(A,{}));
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./path-
|
|
1
|
+
import{n as e,t}from"./path-CoPyR7c2.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-QvbmK1IP.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-K5T4RW27-DIKxqyYw.js";import{n as e}from"./chunk-7N4EOEYR-JKOVngS0.js";export{e as createArchitectureServices};
|