@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
|
@@ -166,7 +166,20 @@ export async function resolveOwnerTimezone(
|
|
|
166
166
|
* destroy the operator's own caption on the next version bump; and the
|
|
167
167
|
* scheduling plugin's one-shot `converge-routine-description` has already given
|
|
168
168
|
* every pre-existing row a description, so no row is left holding only a
|
|
169
|
-
* title.
|
|
169
|
+
* title.
|
|
170
|
+
*
|
|
171
|
+
* The gate (Task 2379) is written by a `SET` after the MERGE rather than inside
|
|
172
|
+
* either branch, because both branches need `e.eventId` and only one of them
|
|
173
|
+
* has just minted it. `writing` is the same condition the prompt follows, so a
|
|
174
|
+
* gate is written on create, refreshed on a version bump of an unedited row,
|
|
175
|
+
* and never touched on an operator-edited one.
|
|
176
|
+
*
|
|
177
|
+
* Two details are load-bearing. The null branch is symmetric on purpose: a
|
|
178
|
+
* template reclassified gateless must have its three properties cleared, or the
|
|
179
|
+
* row keeps a gate its template no longer declares and nothing reports it. And
|
|
180
|
+
* the commit token is substituted from the same `row.gateChecks` the gate is
|
|
181
|
+
* built from, so the precondition and the turn's own commit call cannot
|
|
182
|
+
* disagree about what this routine checks. */
|
|
170
183
|
export const MERGE_CYPHER = `
|
|
171
184
|
UNWIND $rows AS row
|
|
172
185
|
OPTIONAL MATCH (pre:Event {accountId: $accountId, routineTemplate: row.key})
|
|
@@ -202,6 +215,13 @@ MERGE (e:Event {accountId: $accountId, routineTemplate: row.key})
|
|
|
202
215
|
e.description = CASE WHEN refreshing THEN row.description ELSE e.description END,
|
|
203
216
|
e.routineTemplateVersion = CASE WHEN refreshing THEN $version ELSE e.routineTemplateVersion END,
|
|
204
217
|
e.updatedAt = CASE WHEN refreshing THEN $now ELSE e.updatedAt END
|
|
218
|
+
WITH row, e, existed, priorVersion, edited, (NOT existed OR refreshing) AS writing
|
|
219
|
+
SET e.gatePlugin = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling' END) ELSE e.gatePlugin END,
|
|
220
|
+
e.gateTool = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling-gate' END) ELSE e.gateTool END,
|
|
221
|
+
e.gateArgs = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE '{"eventId":"' + e.eventId + '","checks":' + row.gateChecks + '}' END) ELSE e.gateArgs END,
|
|
222
|
+
e.agentPrompt = CASE WHEN writing AND row.gateChecks IS NOT NULL
|
|
223
|
+
THEN replace(e.agentPrompt, '<<gateCommit>>', '{"eventId":"' + e.eventId + '","checks":' + row.gateChecks + ',"commit":true}')
|
|
224
|
+
ELSE e.agentPrompt END
|
|
205
225
|
RETURN row.key AS key,
|
|
206
226
|
e.eventId AS eventId,
|
|
207
227
|
CASE WHEN NOT existed THEN 'create'
|
|
@@ -277,6 +297,10 @@ export async function seedRoutineRoster(args: SeedRoutineRosterArgs): Promise<Ro
|
|
|
277
297
|
description: r.description,
|
|
278
298
|
prompt: r.prompt,
|
|
279
299
|
recurrence: r.recurrence,
|
|
300
|
+
// Task 2379 — the only place the checks are serialised. Null for a
|
|
301
|
+
// gateless template, which the MERGE reads as "clear the three gate
|
|
302
|
+
// properties on the write path".
|
|
303
|
+
gateChecks: r.gate ? JSON.stringify(r.gate.checks) : null,
|
|
280
304
|
})),
|
|
281
305
|
});
|
|
282
306
|
|
|
@@ -35,7 +35,76 @@
|
|
|
35
35
|
* routine's prompt only when the stored `routineTemplateVersion` is BELOW this
|
|
36
36
|
* and no operator has edited the row, so an unbumped edit ships to new installs
|
|
37
37
|
* and never reaches existing ones — bump it in the same commit as the edit. */
|
|
38
|
-
export const ROUTINE_TEMPLATE_VERSION =
|
|
38
|
+
export const ROUTINE_TEMPLATE_VERSION = 3;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Task 2379 — the check shapes a shipped template may name.
|
|
42
|
+
*
|
|
43
|
+
* Declared here rather than imported from the scheduling plugin:
|
|
44
|
+
* `routine-templates` is a `platform/lib` package and importing from
|
|
45
|
+
* `platform/plugins` would invert the dependency direction and break the lib
|
|
46
|
+
* build, which has no plugin on its path. The roster test reads the tool's own
|
|
47
|
+
* source and asserts every type used here is one the tool declares, which is the
|
|
48
|
+
* same drift control this file already applies to tool names.
|
|
49
|
+
*/
|
|
50
|
+
export interface RoutineMailCheck {
|
|
51
|
+
readonly type: "mail";
|
|
52
|
+
readonly mailbox: string;
|
|
53
|
+
readonly folder?: string;
|
|
54
|
+
readonly subjectPrefixes?: readonly string[];
|
|
55
|
+
}
|
|
56
|
+
export interface RoutineD1Check {
|
|
57
|
+
readonly type: "d1";
|
|
58
|
+
readonly database: string;
|
|
59
|
+
readonly sql: string;
|
|
60
|
+
}
|
|
61
|
+
export interface RoutineWhatsappCheck {
|
|
62
|
+
readonly type: "whatsapp";
|
|
63
|
+
readonly scope: "inbound" | "status";
|
|
64
|
+
}
|
|
65
|
+
export interface RoutineCalendarCheck {
|
|
66
|
+
readonly type: "calendar";
|
|
67
|
+
readonly connector: string;
|
|
68
|
+
}
|
|
69
|
+
export type RoutineGateCheck =
|
|
70
|
+
| RoutineMailCheck
|
|
71
|
+
| RoutineD1Check
|
|
72
|
+
| RoutineWhatsappCheck
|
|
73
|
+
| RoutineCalendarCheck;
|
|
74
|
+
|
|
75
|
+
/** The plugin and the tool are constants for every roster gate, so a template
|
|
76
|
+
* carries neither. `hasWork` is true when ANY check is true. */
|
|
77
|
+
export interface RoutineGate {
|
|
78
|
+
readonly checks: readonly RoutineGateCheck[];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Substituted by the seed with the full `scheduling-gate` argument object,
|
|
82
|
+
* including the row's own event id.
|
|
83
|
+
*
|
|
84
|
+
* A template cannot write that id: it is minted by the MERGE. Nor can the turn
|
|
85
|
+
* supply it, because the only place a scheduled turn sees its own event is the
|
|
86
|
+
* provenance preamble, which carries the first eight characters. The watermark
|
|
87
|
+
* file is named from the whole id, so a turn committing against the prefix
|
|
88
|
+
* would write a file the next gate never reads and the routine would report
|
|
89
|
+
* work for ever. */
|
|
90
|
+
export const GATE_COMMIT_TOKEN = "<<gateCommit>>";
|
|
91
|
+
|
|
92
|
+
/** True when the check compares against a stored position rather than reading a
|
|
93
|
+
* current one.
|
|
94
|
+
*
|
|
95
|
+
* A watermarked check reads its stored value or zero, so with no watermark file
|
|
96
|
+
* it reports work on every fire until something commits: such a gate is inert
|
|
97
|
+
* until its routine's prompt carries the commit line. Mirrors `probe`'s `mark`
|
|
98
|
+
* field in the scheduling plugin's `tools/scheduling-gate.ts`, which is a
|
|
99
|
+
* function for exactly these three and null for the other two. */
|
|
100
|
+
export function isWatermarkedCheck(check: RoutineGateCheck): boolean {
|
|
101
|
+
if (check.type === "whatsapp") return check.scope === "inbound";
|
|
102
|
+
return check.type === "mail" || check.type === "calendar";
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function gateNeedsCommit(gate: RoutineGate): boolean {
|
|
106
|
+
return gate.checks.some(isWatermarkedCheck);
|
|
107
|
+
}
|
|
39
108
|
|
|
40
109
|
export interface RoutineTemplate {
|
|
41
110
|
/** Stable identity. Half of the MERGE key `(accountId, routineTemplate)`, so
|
|
@@ -54,6 +123,31 @@ export interface RoutineTemplate {
|
|
|
54
123
|
readonly recurrence: string;
|
|
55
124
|
/** The injected turn. Refreshed on a version bump when the row is unedited. */
|
|
56
125
|
readonly prompt: string;
|
|
126
|
+
/** Task 2379 — the precondition, present when this routine's work is
|
|
127
|
+
* conditional AND the check vocabulary can express its source without
|
|
128
|
+
* per-account data. Seeded onto `gatePlugin`/`gateTool`/`gateArgs` under the
|
|
129
|
+
* same rule the prompt follows: written on create, refreshed only on a
|
|
130
|
+
* version bump of an unedited row. */
|
|
131
|
+
readonly gate?: RoutineGate;
|
|
132
|
+
/** Why this template ships with no gate. Exactly one of `gate` and `gateless`
|
|
133
|
+
* is present on every template, and the roster test fails one carrying
|
|
134
|
+
* neither, so a template added later cannot skip the decision. A field rather
|
|
135
|
+
* than a comment because a comment cannot be asserted. */
|
|
136
|
+
readonly gateless?: string;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** A template is classified when it carries exactly one of `gate` and a
|
|
140
|
+
* non-empty `gateless`.
|
|
141
|
+
*
|
|
142
|
+
* The rule lives here, in one function, rather than inline in the assertion
|
|
143
|
+
* that walks the roster. A predicate the test only ever feeds passing input
|
|
144
|
+
* reports clean while checking nothing, so the roster test asserts this both
|
|
145
|
+
* ways: true for all thirteen, and false for a template carrying neither, both
|
|
146
|
+
* and an empty reason. */
|
|
147
|
+
export function isClassified(template: RoutineTemplate): boolean {
|
|
148
|
+
const gated = template.gate != null;
|
|
149
|
+
const declaredGateless = typeof template.gateless === "string" && template.gateless.trim() !== "";
|
|
150
|
+
return gated !== declaredGateless;
|
|
57
151
|
}
|
|
58
152
|
|
|
59
153
|
const START_OF_DAY = `Prepare the operator's morning briefing and reply with it as a single message.
|
|
@@ -128,7 +222,9 @@ An appointment on the provider calendar with no counterpart in the graph is invi
|
|
|
128
222
|
|
|
129
223
|
If the account has a busy-time sync configured, run schedule-connector-busy-sync so availability reflects what was just reconciled.
|
|
130
224
|
|
|
131
|
-
Reply only when something was actually changed, naming what and why. A clean reconcile ends the turn without replying, every time. This routine runs often, so a message on every clean run trains the operator to ignore it
|
|
225
|
+
Reply only when something was actually changed, naming what and why. A clean reconcile ends the turn without replying, every time. This routine runs often, so a message on every clean run trains the operator to ignore it.
|
|
226
|
+
|
|
227
|
+
When the run has finished and nothing failed, call scheduling-gate with <<gateCommit>> so the next run does not re-examine what you have just reconciled. Do not call it after a run that failed or that you stopped early: the work would be marked as handled without anyone having seen it.`;
|
|
132
228
|
|
|
133
229
|
const CONTACT_RECONCILE = `Reconcile the people the business actually deals with against the people it has recorded.
|
|
134
230
|
|
|
@@ -231,6 +327,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
231
327
|
"Sends one morning message covering what needs a decision, what is time-bound and what changed overnight; stays silent when there is nothing worth saying.",
|
|
232
328
|
recurrence: "30 7 * * 1-5",
|
|
233
329
|
prompt: START_OF_DAY,
|
|
330
|
+
gateless: "A morning briefing is judgement every fire, so a gate would either always pass or suppress the briefing.",
|
|
234
331
|
},
|
|
235
332
|
{
|
|
236
333
|
key: "inbound-check",
|
|
@@ -239,6 +336,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
239
336
|
"Triages mail that arrived since the last check and writes replies for you to approve; it never sends anything itself.",
|
|
240
337
|
recurrence: "*/30 9-17 * * 1-5",
|
|
241
338
|
prompt: INBOUND_CHECK,
|
|
339
|
+
gateless: "Conditional on new mail, but the mail check matches an exact mailbox address and no shipped template can name one (Task 2389).",
|
|
242
340
|
},
|
|
243
341
|
{
|
|
244
342
|
key: "end-of-day",
|
|
@@ -247,6 +345,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
247
345
|
"Closes the day with your unsent drafts, overdue work and tomorrow's diary; says nothing when all three are empty.",
|
|
248
346
|
recurrence: "0 18 * * 1-5",
|
|
249
347
|
prompt: END_OF_DAY,
|
|
348
|
+
gateless: "A wrap-up is judgement every fire, so no cheap check stands in for reading the three surfaces it reports.",
|
|
250
349
|
},
|
|
251
350
|
{
|
|
252
351
|
key: "appointment-reminder",
|
|
@@ -255,6 +354,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
255
354
|
"Reminds each attendee once before a booked appointment, on a route they already use; it never opens a conversation with a stranger.",
|
|
256
355
|
recurrence: "0 * * * *",
|
|
257
356
|
prompt: APPOINTMENT_REMINDER,
|
|
357
|
+
gateless: "Conditional on an appointment falling in the window, but no check type reads appointments held in the graph (Task 2389).",
|
|
258
358
|
},
|
|
259
359
|
{
|
|
260
360
|
key: "commitment-chase",
|
|
@@ -263,6 +363,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
263
363
|
"Surfaces promises the business made and did not keep, and promises made to it that nobody kept; it reports them rather than chasing them.",
|
|
264
364
|
recurrence: "0 10 * * 2",
|
|
265
365
|
prompt: COMMITMENT_CHASE,
|
|
366
|
+
gateless: "Whether a promise has been dropped is the judgement itself, so no check can answer it more cheaply.",
|
|
266
367
|
},
|
|
267
368
|
{
|
|
268
369
|
key: "calendar-reconcile",
|
|
@@ -271,6 +372,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
271
372
|
"Reconciles the provider calendar against the appointments held in the graph, writing what is missing and marking what was cancelled; a clean run says nothing.",
|
|
272
373
|
recurrence: "*/15 * * * *",
|
|
273
374
|
prompt: CALENDAR_RECONCILE,
|
|
375
|
+
gate: { checks: [{ type: "calendar", connector: "account" }] },
|
|
274
376
|
},
|
|
275
377
|
{
|
|
276
378
|
key: "contact-reconcile",
|
|
@@ -279,6 +381,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
279
381
|
"Reconciles the people you correspond with against the people on record, creating and updating contacts; it never merges two records that might be two people.",
|
|
280
382
|
recurrence: "45 6 * * 1-5",
|
|
281
383
|
prompt: CONTACT_RECONCILE,
|
|
384
|
+
gateless: "Conditional on new correspondence, but no check type reads correspondence (Task 2389).",
|
|
282
385
|
},
|
|
283
386
|
{
|
|
284
387
|
key: "crm-reconcile",
|
|
@@ -287,6 +390,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
287
390
|
"Brings across what changed in whichever operational system this business runs; it reads only and never writes back to that system.",
|
|
288
391
|
recurrence: "0 3 * * *",
|
|
289
392
|
prompt: CRM_RECONCILE,
|
|
393
|
+
gateless: "Conditional on connector movement, but no check type reads a connector queue (Task 2389).",
|
|
290
394
|
},
|
|
291
395
|
{
|
|
292
396
|
key: "finance-reconcile",
|
|
@@ -295,6 +399,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
295
399
|
"Reconciles the accounting system against the internal ledger and reports what does not agree; it never adjusts an entry to make the two sides match.",
|
|
296
400
|
recurrence: "0 4 * * 1",
|
|
297
401
|
prompt: FINANCE_RECONCILE,
|
|
402
|
+
gateless: "Conditional on accounting movement, but no check type reads an accounting ledger (Task 2389).",
|
|
298
403
|
},
|
|
299
404
|
{
|
|
300
405
|
key: "weekly-digest",
|
|
@@ -303,6 +408,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
303
408
|
"Writes the week in three paragraphs at most: what changed, what is stuck, and what next week turns on.",
|
|
304
409
|
recurrence: "0 16 * * 5",
|
|
305
410
|
prompt: WEEKLY_DIGEST,
|
|
411
|
+
gateless: "A digest is judgement every fire, and a gate would suppress the report it exists to send.",
|
|
306
412
|
},
|
|
307
413
|
{
|
|
308
414
|
key: "channel-link-check",
|
|
@@ -311,6 +417,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
311
417
|
"Reports a messaging link that has gone down and whether it can recover on its own; it never disconnects a link or starts a re-pair.",
|
|
312
418
|
recurrence: "*/15 * * * *",
|
|
313
419
|
prompt: CHANNEL_LINK_CHECK,
|
|
420
|
+
gate: { checks: [{ type: "whatsapp", scope: "status" }] },
|
|
314
421
|
},
|
|
315
422
|
{
|
|
316
423
|
key: "graph-health",
|
|
@@ -319,6 +426,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
319
426
|
"Reports what the hourly graph sweep last did and what is waiting for review; it reads only and never runs the sweep itself.",
|
|
320
427
|
recurrence: "0 9 * * 1",
|
|
321
428
|
prompt: GRAPH_HEALTH,
|
|
429
|
+
gateless: "Reports the sweep's state every fire by design, so there is nothing conditional to check.",
|
|
322
430
|
},
|
|
323
431
|
{
|
|
324
432
|
key: "filesystem-health",
|
|
@@ -327,6 +435,7 @@ export const ROUTINE_ROSTER: readonly RoutineTemplate[] = [
|
|
|
327
435
|
"Reports what has grown under the account directory and which paths are worth attention; it deletes nothing.",
|
|
328
436
|
recurrence: "0 9 * * 1",
|
|
329
437
|
prompt: FILESYSTEM_HEALTH,
|
|
438
|
+
gateless: "Reports what has grown every fire by design, so there is nothing conditional to check.",
|
|
330
439
|
},
|
|
331
440
|
];
|
|
332
441
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: platform-architecture
|
|
3
3
|
description: Use when grounding any documented-surface claim about what Maxy ships — plugins, skills, specialists, install/deploy flows, internals. This is the install catalogue, not evidence of what is enabled on the current account. For install state on this account, call `capabilities-here`; for documented surface, cite the `Source:` URL inline.
|
|
4
|
-
content-hash: sha256:
|
|
4
|
+
content-hash: sha256:1d79dbcab9f7eb842df0e53078ed706535c2be25329f49a6c2592429417783da
|
|
5
5
|
brand: maxy-code
|
|
6
6
|
product-name: Maxy
|
|
7
7
|
---
|
|
@@ -3484,15 +3484,23 @@ The Routines surface (`/routines`) is the admin view of the account's
|
|
|
3484
3484
|
automation `:Event` nodes — the device's scheduled agent turns and tool
|
|
3485
3485
|
dispatches, which the Calendar surface deliberately excludes (`calendar.ts`
|
|
3486
3486
|
unions only appointment events, `actionPlugin IS NULL`). It renders one card per
|
|
3487
|
-
routine (title, its one-line description where it has
|
|
3488
|
-
|
|
3489
|
-
modal modeled on the calendar `EventDetailModal`.
|
|
3490
|
-
|
|
3491
|
-
|
|
3487
|
+
routine (title, human-readable schedule, its one-line description where it has
|
|
3488
|
+
one, next run, channel/destination or tool, status); a card opens a detail
|
|
3489
|
+
modal modeled on the calendar `EventDetailModal`.
|
|
3490
|
+
|
|
3491
|
+
Every card on the page is the same height, whatever its description says. The
|
|
3492
|
+
title takes its own row and truncates to one line with an ellipsis, with the
|
|
3493
|
+
full text on hover and in the modal; the schedule reads directly beneath it; the
|
|
3494
|
+
description is clamped to three lines; and the status line is pinned to the
|
|
3495
|
+
card's bottom edge, so a column of cards shares one baseline for "Next:".
|
|
3496
|
+
|
|
3497
|
+
A shipped routine is seeded with a name and a description, and the operator can
|
|
3498
|
+
rewrite either from the modal; a routine nobody has captioned renders with no
|
|
3499
|
+
description line and no placeholder. Editing either stamps the row
|
|
3492
3500
|
operator-owned, so the next roster refresh leaves the operator's wording alone,
|
|
3493
3501
|
and recomputes the row's search vector, which is built from the name and the
|
|
3494
|
-
description. A description is never dispatched: `agentPrompt` is the
|
|
3495
|
-
fire sends.
|
|
3502
|
+
description together. A description is never dispatched: `agentPrompt` is the
|
|
3503
|
+
only text a fire sends.
|
|
3496
3504
|
The read-only view shows two prose blocks, each under its own heading, in the
|
|
3497
3505
|
order **Description** then **Instruction sent to the agent**. Both use the same
|
|
3498
3506
|
header-above-prose shape, so neither reads as a different kind of thing from the
|
|
@@ -3511,7 +3519,10 @@ daily/weekly/monthly, day-of-week, day-of-month, time) that falls back to a
|
|
|
3511
3519
|
raw-cron field for patterns it cannot represent. The binding control appears on
|
|
3512
3520
|
an agent routine and on a routine with no dispatch at all; a tool-action
|
|
3513
3521
|
routine's dispatch stays read-only, because an agent binding takes precedence at
|
|
3514
|
-
fire time and would stop the tool running.
|
|
3522
|
+
fire time and would stop the tool running. The **Name** box is the first field
|
|
3523
|
+
in the edit form: it is bounded at 200 characters, Save is blocked while it is
|
|
3524
|
+
empty, and renaming stamps the row operator-owned so the next roster version
|
|
3525
|
+
bump cannot put the seeded name back.
|
|
3515
3526
|
|
|
3516
3527
|
**The status dot.** The card and the modal each carry a dot ahead of
|
|
3517
3528
|
the raw status word, so a grid of eight routines can be read without reading
|
|
@@ -3525,8 +3536,8 @@ render it through one `RoutineStatusDot`, which is what stops them drifting:
|
|
|
3525
3536
|
| `cancelled`, `completed` | solid grey (`--text-tertiary`) | deliberately stopped or finished |
|
|
3526
3537
|
| anything else, and `null` | grey ring, no fill | no reading taken |
|
|
3527
3538
|
|
|
3528
|
-
**The run recap.**
|
|
3529
|
-
|
|
3539
|
+
**The run recap.** The detail modal's **Runs** button opens that routine's run
|
|
3540
|
+
history, and it is the only way in: the card face carries no control. A run
|
|
3530
3541
|
shows what it sent — the message text itself, on the row and in full in the run
|
|
3531
3542
|
dialog — and a run that finished having sent nothing says so, which is a
|
|
3532
3543
|
different statement from a run whose outcome is not yet known. Both the routine
|
|
@@ -9,6 +9,18 @@ Invoked by the admin agent directly.
|
|
|
9
9
|
|
|
10
10
|
This is the platform's release timeline, newest first. Each entry shows the date it shipped and the version it shipped in, so you can tell the operator how current their install is. To compare, read the installed version from `capabilities-here` and match it against the versions below. Keep answers high level and in plain English; this is a summary, not a full commit log.
|
|
11
11
|
|
|
12
|
+
## 2026-08-03 (0.1.554)
|
|
13
|
+
|
|
14
|
+
- You can now rename a routine from its detail view, and your name is kept when the built-in list is next refreshed.
|
|
15
|
+
- Routine cards are now equal height with the title on its own row and past runs reached from the detail view rather than the card face.
|
|
16
|
+
- The sidebar menu can now be collapsed to an icon rail, and your choice is remembered.
|
|
17
|
+
|
|
18
|
+
## 2026-08-03 (0.1.553)
|
|
19
|
+
|
|
20
|
+
- Each routine now shows how it runs, what its precondition checks, and how often it fired in the last day, so a routine that skipped can be told apart from one that ran quietly.
|
|
21
|
+
- Every built-in routine is now classified as gated or ungated, and a new recurring routine has to answer that question rather than defaulting to waking on the clock.
|
|
22
|
+
- Changing how often a routine runs is now recorded with its cost difference, and the rate across the install is counted on each check.
|
|
23
|
+
|
|
12
24
|
## 2026-08-02 (0.1.552)
|
|
13
25
|
|
|
14
26
|
- A recurring routine can now check a condition first, so the clock alone no longer wakes the assistant when there is nothing to do. A one-time reminder is never gated, since skipping it would lose it.
|
|
@@ -99,15 +99,23 @@ The Routines surface (`/routines`) is the admin view of the account's
|
|
|
99
99
|
automation `:Event` nodes — the device's scheduled agent turns and tool
|
|
100
100
|
dispatches, which the Calendar surface deliberately excludes (`calendar.ts`
|
|
101
101
|
unions only appointment events, `actionPlugin IS NULL`). It renders one card per
|
|
102
|
-
routine (title, its one-line description where it has
|
|
103
|
-
|
|
104
|
-
modal modeled on the calendar `EventDetailModal`.
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
routine (title, human-readable schedule, its one-line description where it has
|
|
103
|
+
one, next run, channel/destination or tool, status); a card opens a detail
|
|
104
|
+
modal modeled on the calendar `EventDetailModal`.
|
|
105
|
+
|
|
106
|
+
Every card on the page is the same height, whatever its description says. The
|
|
107
|
+
title takes its own row and truncates to one line with an ellipsis, with the
|
|
108
|
+
full text on hover and in the modal; the schedule reads directly beneath it; the
|
|
109
|
+
description is clamped to three lines; and the status line is pinned to the
|
|
110
|
+
card's bottom edge, so a column of cards shares one baseline for "Next:".
|
|
111
|
+
|
|
112
|
+
A shipped routine is seeded with a name and a description, and the operator can
|
|
113
|
+
rewrite either from the modal; a routine nobody has captioned renders with no
|
|
114
|
+
description line and no placeholder. Editing either stamps the row
|
|
107
115
|
operator-owned, so the next roster refresh leaves the operator's wording alone,
|
|
108
116
|
and recomputes the row's search vector, which is built from the name and the
|
|
109
|
-
description. A description is never dispatched: `agentPrompt` is the
|
|
110
|
-
fire sends.
|
|
117
|
+
description together. A description is never dispatched: `agentPrompt` is the
|
|
118
|
+
only text a fire sends.
|
|
111
119
|
The read-only view shows two prose blocks, each under its own heading, in the
|
|
112
120
|
order **Description** then **Instruction sent to the agent**. Both use the same
|
|
113
121
|
header-above-prose shape, so neither reads as a different kind of thing from the
|
|
@@ -126,7 +134,10 @@ daily/weekly/monthly, day-of-week, day-of-month, time) that falls back to a
|
|
|
126
134
|
raw-cron field for patterns it cannot represent. The binding control appears on
|
|
127
135
|
an agent routine and on a routine with no dispatch at all; a tool-action
|
|
128
136
|
routine's dispatch stays read-only, because an agent binding takes precedence at
|
|
129
|
-
fire time and would stop the tool running.
|
|
137
|
+
fire time and would stop the tool running. The **Name** box is the first field
|
|
138
|
+
in the edit form: it is bounded at 200 characters, Save is blocked while it is
|
|
139
|
+
empty, and renaming stamps the row operator-owned so the next roster version
|
|
140
|
+
bump cannot put the seeded name back.
|
|
130
141
|
|
|
131
142
|
**The status dot.** The card and the modal each carry a dot ahead of
|
|
132
143
|
the raw status word, so a grid of eight routines can be read without reading
|
|
@@ -140,8 +151,8 @@ render it through one `RoutineStatusDot`, which is what stops them drifting:
|
|
|
140
151
|
| `cancelled`, `completed` | solid grey (`--text-tertiary`) | deliberately stopped or finished |
|
|
141
152
|
| anything else, and `null` | grey ring, no fill | no reading taken |
|
|
142
153
|
|
|
143
|
-
**The run recap.**
|
|
144
|
-
|
|
154
|
+
**The run recap.** The detail modal's **Runs** button opens that routine's run
|
|
155
|
+
history, and it is the only way in: the card face carries no control. A run
|
|
145
156
|
shows what it sent — the message text itself, on the row and in full in the run
|
|
146
157
|
dialog — and a run that finished having sent nothing says so, which is a
|
|
147
158
|
different statement from a run whose outcome is not yet known. Both the routine
|
|
@@ -105,6 +105,24 @@ is planned; until it ships, the internal calendar plus `.ics` import is the clie
|
|
|
105
105
|
|
|
106
106
|
Automatic connector-to-internal availability sync is separate future work.
|
|
107
107
|
|
|
108
|
+
## Reflecting a connector calendar into the booking page
|
|
109
|
+
|
|
110
|
+
`schedule-connector-busy-sync` replaces this account's stored connector-busy set. Call it with **no
|
|
111
|
+
arguments**: it resolves the account's own authorised connector from its token store, reads the next
|
|
112
|
+
15 days of free/busy from that connector, and syncs. Nothing about that is a judgement, so nothing
|
|
113
|
+
about it needs you — the tool spawns the google or outlook plugin's own free/busy tool to do the
|
|
114
|
+
reading, and it is safe to invoke from a scheduled `action` dispatch with `args: {}`.
|
|
115
|
+
|
|
116
|
+
An account with no authorised connector syncs `connector='none'` with an empty set. That is a
|
|
117
|
+
success, not a failure: it clears a deauthorised connector's stale blocks.
|
|
118
|
+
|
|
119
|
+
A failed read is an error and writes nothing. The stored busy set survives a transient provider
|
|
120
|
+
outage, because publishing the operator's booked time as free is worse than not syncing at all.
|
|
121
|
+
|
|
122
|
+
Passing `connector` and `busy` together is the explicit form and behaves exactly as before. Passing
|
|
123
|
+
`busy` without `connector` is refused, because the connector tag is what a later sync compares
|
|
124
|
+
against and it cannot be guessed from the intervals.
|
|
125
|
+
|
|
108
126
|
## Meetings vs events — what `schedule-event` writes
|
|
109
127
|
|
|
110
128
|
`schedule-event` writes one of two graph nodes, decided from the parameters you pass — never from keywords in the title:
|
|
@@ -268,17 +286,45 @@ Users and plugins both create events with actions via the same `schedule-event`
|
|
|
268
286
|
|
|
269
287
|
## Agent-bearing dispatch
|
|
270
288
|
|
|
271
|
-
|
|
289
|
+
Choosing a dispatch mode is **two questions, not one**: should this fire run *at all*, and what should it *say* once it does. Answer them separately. A routine that needs a model to compose its message very often needs no model at all to decide whether there is anything to compose, and treating those as one question is how a conditional sweep ends up spawning a full agent turn every fifteen minutes to discover there was nothing to do.
|
|
290
|
+
|
|
291
|
+
1. **`action`** — nothing here needs a model. One pre-encoded MCP tool, no reasoning, no spawn.
|
|
292
|
+
2. **`agentDispatch` with a `gate`** — a model is needed to compose or to judge, but only when there is something to act on. **This is the default for anything conditional.** The dispatcher calls the gate tool headlessly before spawning; `hasWork:false` skips the fire entirely.
|
|
293
|
+
3. **`agentDispatch` with no gate** — judgement applies on *every* fire, whatever the state of the world: a daily briefing, a weekly digest. This is the exception, and it is stated as one. A recurring `agentDispatch` with no `gate` is refused unless it carries `gateWaived` naming why.
|
|
294
|
+
|
|
295
|
+
When an agent-bearing event fires, the heartbeat hands the prompt to the destination's native channel: the channel spawns or resumes the deterministic admin session for that phone or chat, the agent runs the prompt with full admin tools, and its answer is delivered back over the account's paired socket. No operator session need be open.
|
|
296
|
+
|
|
297
|
+
The worked example is the second shape. The signature check is a gate; the prompt keeps only the composing and the messaging:
|
|
272
298
|
|
|
273
299
|
```json
|
|
274
|
-
{
|
|
300
|
+
{
|
|
301
|
+
"agentDispatch": {
|
|
302
|
+
"channel": "whatsapp",
|
|
303
|
+
"destination": "+447700900123",
|
|
304
|
+
"prompt": "The tenancy agreement has just been signed. Write the one-line confirmation and send it."
|
|
305
|
+
},
|
|
306
|
+
"gate": {
|
|
307
|
+
"plugin": "scheduling",
|
|
308
|
+
"tool": "scheduling-gate",
|
|
309
|
+
"args": {
|
|
310
|
+
"eventId": "<this event's id>",
|
|
311
|
+
"checks": [{ "kind": "d1", "database": "<the account's database>", "sql": "SELECT count(*) FROM agreements WHERE signed_at > '<watermark>'" }]
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
275
315
|
```
|
|
276
316
|
|
|
317
|
+
Written as one model turn instead — "check whether it is signed yet and, if it is, message me" — the check runs inside the spawned agent, so the turn costs a full agent run on every fire whether or not anything was signed.
|
|
318
|
+
|
|
277
319
|
- `channel` — `whatsapp` or `telegram`.
|
|
278
320
|
- `destination` — the E.164 phone (WhatsApp) or chat id (Telegram) to run the turn for and reply to. It **must already be a registered admin or account-manager** on that channel; a destination that is not is rejected when the event is created. For WhatsApp the authoritative admin/manager lists are read from the socket-owning **house** account (never the event's own account), and the destination's registered account must match the account that created the schedule: an admin belongs to the house, a manager to its bound sub-account. The house/owner account may target any registered admin or manager; a sub-account is locked to its own manager(s). A refusal names the true reason — `not-registered` (in no house list) or `cross-account` (registered to a different account, naming both accounts).
|
|
279
|
-
- `prompt` — the instruction the agent runs.
|
|
321
|
+
- `prompt` — the instruction the agent runs. Write it for the case where there **is** work: the gate has already decided that.
|
|
322
|
+
- `gate` — `{ plugin, tool, args }`. The precondition, evaluated headlessly between the `nextRun` advance and the spawn. It must return `structuredContent {hasWork:boolean}`; the dispatcher reads that boolean and nothing else. A gate that errors, times out or returns no boolean **dispatches anyway**, so a broken check never silently mutes a routine. Requires a complete `agentDispatch`, and is refused on an action-mode event.
|
|
323
|
+
- `gateWaived` — a string reason, and the only way to create a recurring `agentDispatch` with no gate. Give the reason this routine has judgement to apply on every fire ("the morning briefing composes from scratch each day"). It is stored on the event and counted by the standing gate-classification check, so a deliberate exception stays readable and the fleet's drift back to ungated is a number someone can look at. A conditional sweep is not an exception; gate it.
|
|
324
|
+
|
|
325
|
+
**Recurring only.** A one-time agent event is never gated — its row is already `due` by the time the dispatcher sees it, so a skip there would drop the routine for good — and it is therefore outside the refusal. `schedule-update` takes no waiver either: an existing routine keeps what it has until it is edited.
|
|
280
326
|
|
|
281
|
-
An event carries **either** an `action` **or** an `agentDispatch`, never both — setting one clears the other. Agent dispatch is stored as `agentChannel`, `agentDestination`, `agentPrompt`. Use `schedule-update` with `agentDispatch` to modify or `agentDispatch: null` to clear. On WhatsApp, a destination bound as an account-manager scopes the spawned session to its sub-account — unless that same phone is also on the house `adminPhones` list, in which case it scopes to the channel account, because the dispatch rides the house socket and so arrives from the house number. On Telegram the session runs on the house account.
|
|
327
|
+
An event carries **either** an `action` **or** an `agentDispatch`, never both — setting one clears the other. Agent dispatch is stored as `agentChannel`, `agentDestination`, `agentPrompt`; the gate as `gatePlugin`, `gateTool`, `gateArgs`; the waiver as `gateWaived`. Use `schedule-update` with `agentDispatch` to modify or `agentDispatch: null` to clear. On WhatsApp, a destination bound as an account-manager scopes the spawned session to its sub-account — unless that same phone is also on the house `adminPhones` list, in which case it scopes to the channel account, because the dispatch rides the house socket and so arrives from the house number. On Telegram the session runs on the house account.
|
|
282
328
|
|
|
283
329
|
A WhatsApp `agentDispatch` destination may therefore be an account manager, not only an admin phone — this is the supported way to send a manager a proactive or scheduled WhatsApp message. The reply is delivered over the house's paired line regardless of which sub-account the session is scoped to; socket ownership never restricts which number the dispatch can reach.
|
|
284
330
|
|
|
@@ -13,9 +13,11 @@ import { scheduleCancel } from "./tools/schedule-cancel.js";
|
|
|
13
13
|
import { scheduleExportIcs } from "./tools/schedule-export-ics.js";
|
|
14
14
|
import { scheduleImportIcs } from "./tools/schedule-import-ics.js";
|
|
15
15
|
import { scheduleArchiveIcs } from "./tools/schedule-archive-ics.js";
|
|
16
|
-
import { syncConnectorBusy } from "./tools/schedule-connector-busy-sync.js";
|
|
16
|
+
import { resolveAndSyncConnectorBusy, syncConnectorBusy, } from "./tools/schedule-connector-busy-sync.js";
|
|
17
|
+
import { resolveConnector, spawnProviderCall } from "./lib/connector-freebusy.js";
|
|
17
18
|
import { closeDriver, getUserTimezone, getSession } from "./lib/neo4j.js";
|
|
18
19
|
import { formatCombined } from "./lib/time-format.js";
|
|
20
|
+
import { join, resolve } from "node:path";
|
|
19
21
|
// Cast to `any` to avoid TS2589. TypeScript hits its 50-level instantiation
|
|
20
22
|
// limit when accumulating typed tool signatures on a generic McpServer.
|
|
21
23
|
// Individual tool handlers retain full type safety in their own files.
|
|
@@ -70,6 +72,9 @@ const gateShape = {
|
|
|
70
72
|
args: z.record(z.unknown()).optional().describe("Arguments passed to the gate tool verbatim"),
|
|
71
73
|
};
|
|
72
74
|
const GATE_DESCRIPTION = "Precondition: before this routine spawns an agent turn, the dispatcher calls this tool headlessly and reads structuredContent.hasWork. False skips the turn entirely; true dispatches as normal. A gate that errors, times out or returns no boolean dispatches anyway, so a broken gate never silently mutes the routine. Requires a complete agentDispatch and is refused on an action-mode event.";
|
|
75
|
+
// Task 2383 — the declared exception, on the create path only. `schedule-update`
|
|
76
|
+
// takes no waiver: an existing routine keeps what it has until it is edited.
|
|
77
|
+
const GATE_WAIVED_DESCRIPTION = "The declared reason this recurring routine runs a model on every fire with no gate. A daily briefing or a weekly digest composes from scratch each time and has judgement to apply whether or not anything changed; a conditional sweep does not, and belongs behind a gate. Required when a recurring agentDispatch carries no gate — the write is refused without one. Stored on the event and counted by the standing gate-classification check, so every deliberate exception stays readable.";
|
|
73
78
|
// ---------------------------------------------------------------------------
|
|
74
79
|
// schedule-event
|
|
75
80
|
// ---------------------------------------------------------------------------
|
|
@@ -98,6 +103,7 @@ eagerTool(server, "schedule-event", "Create a scheduled event or appointment. A
|
|
|
98
103
|
prompt: z.string().describe("The instruction the agent runs when the event fires"),
|
|
99
104
|
}).optional().describe("Agent-bearing dispatch: when the event fires, spawns or resumes the admin channel session for `destination` and runs `prompt` with full admin tools, delivering the answer back over the channel. Mutually exclusive with `action`. Always records an event, never a meeting."),
|
|
100
105
|
gate: z.object(gateShape).optional().describe(GATE_DESCRIPTION),
|
|
106
|
+
gateWaived: z.string().optional().describe(GATE_WAIVED_DESCRIPTION),
|
|
101
107
|
}, async (params) => {
|
|
102
108
|
if (!accountId)
|
|
103
109
|
return refuseNoAccount("schedule-event");
|
|
@@ -138,6 +144,8 @@ eagerTool(server, "schedule-event", "Create a scheduled event or appointment. A
|
|
|
138
144
|
parts.push(`agent dispatch: ${params.agentDispatch.channel} → ${params.agentDispatch.destination}`);
|
|
139
145
|
if (params.gate)
|
|
140
146
|
parts.push(`gate: ${params.gate.plugin}/${params.gate.tool}`);
|
|
147
|
+
if (params.gateWaived)
|
|
148
|
+
parts.push(`gate waived: ${params.gateWaived}`);
|
|
141
149
|
return { content: [{ type: "text", text: parts.join(", ") }] };
|
|
142
150
|
}
|
|
143
151
|
catch (err) {
|
|
@@ -150,24 +158,61 @@ eagerTool(server, "schedule-event", "Create a scheduled event or appointment. A
|
|
|
150
158
|
// ---------------------------------------------------------------------------
|
|
151
159
|
// schedule-connector-busy-sync (Task 1654)
|
|
152
160
|
// ---------------------------------------------------------------------------
|
|
153
|
-
eagerTool(server, "schedule-connector-busy-sync", "Reflect your calendar connector's busy blocks into your booking page availability. Call
|
|
154
|
-
connector: z.enum(["google", "m365", "none"]).describe("Which calendar connector these busy blocks came from, or 'none' if no connector is authorised"),
|
|
161
|
+
eagerTool(server, "schedule-connector-busy-sync", "Reflect your calendar connector's busy blocks into your booking page availability. Call it with NO arguments and it resolves the account's own authorised connector, reads the next 15 days of free/busy itself, and syncs — that is the normal use and needs no reading step from you. Passing connector and busy together is the explicit form: connector='google' or 'm365' with the list of {start,end} ISO 8601 busy intervals, or connector='none' and busy=[] to clear stale blocks. Wholesale-replaces the stored connector-busy set for this account.", {
|
|
162
|
+
connector: z.enum(["google", "m365", "none"]).optional().describe("Which calendar connector these busy blocks came from, or 'none' if no connector is authorised. Omit together with busy to have the tool resolve the account's own connector."),
|
|
155
163
|
busy: z.array(z.object({
|
|
156
164
|
start: z.string().describe("ISO 8601 busy-block start"),
|
|
157
165
|
end: z.string().describe("ISO 8601 busy-block end"),
|
|
158
|
-
})).describe("Busy intervals read from the connector. Empty when connector='none'."),
|
|
166
|
+
})).optional().describe("Busy intervals read from the connector. Empty when connector='none'. Omit to have the tool read the next 15 days itself."),
|
|
159
167
|
}, async (params) => {
|
|
160
168
|
if (!accountId)
|
|
161
169
|
return refuseNoAccount("schedule-connector-busy-sync");
|
|
170
|
+
// Both halves are refused rather than defaulted, and for the same reason:
|
|
171
|
+
// either one alone would be silently reinterpreted. A busy list with no
|
|
172
|
+
// connector would have to guess where the intervals came from, and that tag
|
|
173
|
+
// is what a later sync compares against. A connector with no busy list would
|
|
174
|
+
// be discarded in favour of whatever the account actually holds, so a caller
|
|
175
|
+
// naming the wrong connector would be told nothing and get a different one.
|
|
176
|
+
if (Boolean(params.busy) !== Boolean(params.connector)) {
|
|
177
|
+
const passed = params.busy ? "busy" : "connector";
|
|
178
|
+
const missing = params.busy ? "connector" : "busy";
|
|
179
|
+
return {
|
|
180
|
+
content: [{ type: "text", text: `schedule-connector-busy-sync: ${passed} was passed without ${missing}. Pass both, or neither to have the tool resolve and read the account's own connector.` }],
|
|
181
|
+
isError: true,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
162
184
|
const session = getSession();
|
|
163
185
|
try {
|
|
164
|
-
|
|
186
|
+
let r;
|
|
187
|
+
if (params.busy && params.connector) {
|
|
188
|
+
r = await syncConnectorBusy(session, accountId, { connector: params.connector, busy: params.busy });
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
const platformRoot = process.env.PLATFORM_ROOT ?? process.cwd();
|
|
192
|
+
const accountsDir = resolve(platformRoot, "..", "data/accounts");
|
|
193
|
+
// Resolved twice — here and inside resolveAndSyncConnectorBusy — because
|
|
194
|
+
// spawnProviderCall builds the provider environment eagerly and throws
|
|
195
|
+
// when the brand ships no vendor app. An account with no connector at all
|
|
196
|
+
// must reach the clean empty sync instead.
|
|
197
|
+
const { connector } = resolveConnector(join(accountsDir, accountId));
|
|
198
|
+
r = await resolveAndSyncConnectorBusy(session, accountId, {
|
|
199
|
+
accountsDir,
|
|
200
|
+
platformRoot,
|
|
201
|
+
now: new Date(),
|
|
202
|
+
call: connector === "none"
|
|
203
|
+
? async () => { throw new Error("no calendar connector is authorised for this account"); }
|
|
204
|
+
: spawnProviderCall(platformRoot, accountId, connector),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
165
207
|
process.stderr.write(`[calendar-availability] op=cal-sync connector=${r.connector} busyBlocks=${r.busyBlocks} reflected=${r.reflected}\n`);
|
|
166
208
|
return { content: [{ type: "text", text: `Synced ${r.reflected} connector busy block(s) from ${r.connector}.` }] };
|
|
167
209
|
}
|
|
168
210
|
catch (err) {
|
|
169
211
|
const reason = err instanceof Error ? err.message : String(err);
|
|
170
|
-
|
|
212
|
+
// `resolved` rather than `undefined` when the caller passed no connector:
|
|
213
|
+
// the connector on this line is what the caller supplied, and the resolved
|
|
214
|
+
// value is already on the `[connector-busy-sync] op=` lines above.
|
|
215
|
+
process.stderr.write(`[calendar-availability] op=cal-sync-fail connector=${params.connector ?? "resolved"} reason=${JSON.stringify(reason)}\n`);
|
|
171
216
|
return { content: [{ type: "text", text: `Connector busy sync failed: ${reason}` }], isError: true };
|
|
172
217
|
}
|
|
173
218
|
finally {
|