@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
package/package.json
CHANGED
|
@@ -136,8 +136,21 @@ export declare function resolveOwnerTimezone(session: SeedSessionLike, accountId
|
|
|
136
136
|
* destroy the operator's own caption on the next version bump; and the
|
|
137
137
|
* scheduling plugin's one-shot `converge-routine-description` has already given
|
|
138
138
|
* every pre-existing row a description, so no row is left holding only a
|
|
139
|
-
* title.
|
|
140
|
-
|
|
139
|
+
* title.
|
|
140
|
+
*
|
|
141
|
+
* The gate (Task 2379) is written by a `SET` after the MERGE rather than inside
|
|
142
|
+
* either branch, because both branches need `e.eventId` and only one of them
|
|
143
|
+
* has just minted it. `writing` is the same condition the prompt follows, so a
|
|
144
|
+
* gate is written on create, refreshed on a version bump of an unedited row,
|
|
145
|
+
* and never touched on an operator-edited one.
|
|
146
|
+
*
|
|
147
|
+
* Two details are load-bearing. The null branch is symmetric on purpose: a
|
|
148
|
+
* template reclassified gateless must have its three properties cleared, or the
|
|
149
|
+
* row keeps a gate its template no longer declares and nothing reports it. And
|
|
150
|
+
* the commit token is substituted from the same `row.gateChecks` the gate is
|
|
151
|
+
* built from, so the precondition and the turn's own commit call cannot
|
|
152
|
+
* disagree about what this routine checks. */
|
|
153
|
+
export declare const MERGE_CYPHER = "\nUNWIND $rows AS row\nOPTIONAL MATCH (pre:Event {accountId: $accountId, routineTemplate: row.key})\nWITH row,\n pre IS NOT NULL AS existed,\n coalesce(pre.routineTemplateVersion, 0) AS priorVersion,\n pre.operatorEdited IS NOT NULL AS edited\nWITH row, existed, priorVersion, edited,\n (existed AND NOT edited AND priorVersion < $version) AS refreshing\nMERGE (e:Event {accountId: $accountId, routineTemplate: row.key})\n ON CREATE SET e.eventId = randomUUID(),\n e.name = row.name,\n e.description = row.description,\n e.agentPrompt = row.prompt,\n e.recurrence = row.recurrence,\n e.routineTemplateVersion = $version,\n e.eventStatus = 'suspended',\n e.nextRun = null,\n e.agentChannel = null,\n e.agentDestination = null,\n e.actionPlugin = null,\n e.actionTool = null,\n e.actionArgs = null,\n e.sourcePlugin = null,\n e.timezone = $timezone,\n e.createdBySource = 'installer',\n e.createdByAgent = 'system',\n e.createdByTool = 'routine-roster-seed',\n e.createdAt = $now,\n e.updatedAt = $now\n ON MATCH SET e.agentPrompt = CASE WHEN refreshing THEN row.prompt ELSE e.agentPrompt END,\n e.name = CASE WHEN refreshing THEN row.name ELSE e.name END,\n e.description = CASE WHEN refreshing THEN row.description ELSE e.description END,\n e.routineTemplateVersion = CASE WHEN refreshing THEN $version ELSE e.routineTemplateVersion END,\n e.updatedAt = CASE WHEN refreshing THEN $now ELSE e.updatedAt END\nWITH row, e, existed, priorVersion, edited, (NOT existed OR refreshing) AS writing\nSET e.gatePlugin = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling' END) ELSE e.gatePlugin END,\n e.gateTool = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling-gate' END) ELSE e.gateTool END,\n 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,\n e.agentPrompt = CASE WHEN writing AND row.gateChecks IS NOT NULL\n THEN replace(e.agentPrompt, '<<gateCommit>>', '{\"eventId\":\"' + e.eventId + '\",\"checks\":' + row.gateChecks + ',\"commit\":true}')\n ELSE e.agentPrompt END\nRETURN row.key AS key,\n e.eventId AS eventId,\n CASE WHEN NOT existed THEN 'create'\n WHEN priorVersion >= $version THEN 'unchanged'\n WHEN edited THEN 'skip-operator-edited'\n ELSE 'refresh-version' END AS action";
|
|
141
154
|
/** The post-condition read. Counts every roster row the account actually holds,
|
|
142
155
|
* independently of what the MERGE above believes it wrote. */
|
|
143
156
|
export declare const VERIFY_CYPHER = "\nMATCH (e:Event {accountId: $accountId})\nWHERE e.routineTemplate IS NOT NULL\nRETURN count(e) AS actual,\n sum(CASE WHEN e.eventStatus = 'suspended' THEN 1 ELSE 0 END) AS suspended,\n sum(CASE WHEN e.nextRun IS NULL THEN 1 ELSE 0 END) AS nextRunNull,\n sum(CASE WHEN e.description IS NULL THEN 1 ELSE 0 END) AS descNull";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;2EAG2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAClH;AAED;;;;;;;4EAO4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,WAAW,CAAC;AAErG,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;;;0EAM0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;kEAO8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,eAAe,GAAG,QAAQ,CAAC;IAC3C,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAYD;4DAC4D;AAC5D,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAAA;CAAE,CAAC,CAa1E;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;2EAG2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAClH;AAED;;;;;;;4EAO4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,WAAW,CAAC;AAErG,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;;;0EAM0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;kEAO8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,eAAe,GAAG,QAAQ,CAAC;IAC3C,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAYD;4DAC4D;AAC5D,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAAA;CAAE,CAAC,CAa1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAsC+C;AAC/C,eAAO,MAAM,YAAY,iyFA+CwB,CAAC;AAElD;+DAC+D;AAC/D,eAAO,MAAM,aAAa,wVAMgD,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,+DAA+D;IAC/D,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;sEACkE;IAClE,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoF/F"}
|
|
@@ -103,7 +103,20 @@ async function resolveOwnerTimezone(session, accountId) {
|
|
|
103
103
|
* destroy the operator's own caption on the next version bump; and the
|
|
104
104
|
* scheduling plugin's one-shot `converge-routine-description` has already given
|
|
105
105
|
* every pre-existing row a description, so no row is left holding only a
|
|
106
|
-
* title.
|
|
106
|
+
* title.
|
|
107
|
+
*
|
|
108
|
+
* The gate (Task 2379) is written by a `SET` after the MERGE rather than inside
|
|
109
|
+
* either branch, because both branches need `e.eventId` and only one of them
|
|
110
|
+
* has just minted it. `writing` is the same condition the prompt follows, so a
|
|
111
|
+
* gate is written on create, refreshed on a version bump of an unedited row,
|
|
112
|
+
* and never touched on an operator-edited one.
|
|
113
|
+
*
|
|
114
|
+
* Two details are load-bearing. The null branch is symmetric on purpose: a
|
|
115
|
+
* template reclassified gateless must have its three properties cleared, or the
|
|
116
|
+
* row keeps a gate its template no longer declares and nothing reports it. And
|
|
117
|
+
* the commit token is substituted from the same `row.gateChecks` the gate is
|
|
118
|
+
* built from, so the precondition and the turn's own commit call cannot
|
|
119
|
+
* disagree about what this routine checks. */
|
|
107
120
|
exports.MERGE_CYPHER = `
|
|
108
121
|
UNWIND $rows AS row
|
|
109
122
|
OPTIONAL MATCH (pre:Event {accountId: $accountId, routineTemplate: row.key})
|
|
@@ -139,6 +152,13 @@ MERGE (e:Event {accountId: $accountId, routineTemplate: row.key})
|
|
|
139
152
|
e.description = CASE WHEN refreshing THEN row.description ELSE e.description END,
|
|
140
153
|
e.routineTemplateVersion = CASE WHEN refreshing THEN $version ELSE e.routineTemplateVersion END,
|
|
141
154
|
e.updatedAt = CASE WHEN refreshing THEN $now ELSE e.updatedAt END
|
|
155
|
+
WITH row, e, existed, priorVersion, edited, (NOT existed OR refreshing) AS writing
|
|
156
|
+
SET e.gatePlugin = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling' END) ELSE e.gatePlugin END,
|
|
157
|
+
e.gateTool = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling-gate' END) ELSE e.gateTool END,
|
|
158
|
+
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,
|
|
159
|
+
e.agentPrompt = CASE WHEN writing AND row.gateChecks IS NOT NULL
|
|
160
|
+
THEN replace(e.agentPrompt, '<<gateCommit>>', '{"eventId":"' + e.eventId + '","checks":' + row.gateChecks + ',"commit":true}')
|
|
161
|
+
ELSE e.agentPrompt END
|
|
142
162
|
RETURN row.key AS key,
|
|
143
163
|
e.eventId AS eventId,
|
|
144
164
|
CASE WHEN NOT existed THEN 'create'
|
|
@@ -185,6 +205,10 @@ async function seedRoutineRoster(args) {
|
|
|
185
205
|
description: r.description,
|
|
186
206
|
prompt: r.prompt,
|
|
187
207
|
recurrence: r.recurrence,
|
|
208
|
+
// Task 2379 — the only place the checks are serialised. Null for a
|
|
209
|
+
// gateless template, which the MERGE reads as "clear the three gate
|
|
210
|
+
// properties on the write path".
|
|
211
|
+
gateChecks: r.gate ? JSON.stringify(r.gate.checks) : null,
|
|
188
212
|
})),
|
|
189
213
|
});
|
|
190
214
|
const merges = mergeRes.records.map((rec) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA8GA,0BAEC;AAaD,oDAgBC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,62 @@
|
|
|
34
34
|
* routine's prompt only when the stored `routineTemplateVersion` is BELOW this
|
|
35
35
|
* and no operator has edited the row, so an unbumped edit ships to new installs
|
|
36
36
|
* and never reaches existing ones — bump it in the same commit as the edit. */
|
|
37
|
-
export declare const ROUTINE_TEMPLATE_VERSION =
|
|
37
|
+
export declare const ROUTINE_TEMPLATE_VERSION = 3;
|
|
38
|
+
/**
|
|
39
|
+
* Task 2379 — the check shapes a shipped template may name.
|
|
40
|
+
*
|
|
41
|
+
* Declared here rather than imported from the scheduling plugin:
|
|
42
|
+
* `routine-templates` is a `platform/lib` package and importing from
|
|
43
|
+
* `platform/plugins` would invert the dependency direction and break the lib
|
|
44
|
+
* build, which has no plugin on its path. The roster test reads the tool's own
|
|
45
|
+
* source and asserts every type used here is one the tool declares, which is the
|
|
46
|
+
* same drift control this file already applies to tool names.
|
|
47
|
+
*/
|
|
48
|
+
export interface RoutineMailCheck {
|
|
49
|
+
readonly type: "mail";
|
|
50
|
+
readonly mailbox: string;
|
|
51
|
+
readonly folder?: string;
|
|
52
|
+
readonly subjectPrefixes?: readonly string[];
|
|
53
|
+
}
|
|
54
|
+
export interface RoutineD1Check {
|
|
55
|
+
readonly type: "d1";
|
|
56
|
+
readonly database: string;
|
|
57
|
+
readonly sql: string;
|
|
58
|
+
}
|
|
59
|
+
export interface RoutineWhatsappCheck {
|
|
60
|
+
readonly type: "whatsapp";
|
|
61
|
+
readonly scope: "inbound" | "status";
|
|
62
|
+
}
|
|
63
|
+
export interface RoutineCalendarCheck {
|
|
64
|
+
readonly type: "calendar";
|
|
65
|
+
readonly connector: string;
|
|
66
|
+
}
|
|
67
|
+
export type RoutineGateCheck = RoutineMailCheck | RoutineD1Check | RoutineWhatsappCheck | RoutineCalendarCheck;
|
|
68
|
+
/** The plugin and the tool are constants for every roster gate, so a template
|
|
69
|
+
* carries neither. `hasWork` is true when ANY check is true. */
|
|
70
|
+
export interface RoutineGate {
|
|
71
|
+
readonly checks: readonly RoutineGateCheck[];
|
|
72
|
+
}
|
|
73
|
+
/** Substituted by the seed with the full `scheduling-gate` argument object,
|
|
74
|
+
* including the row's own event id.
|
|
75
|
+
*
|
|
76
|
+
* A template cannot write that id: it is minted by the MERGE. Nor can the turn
|
|
77
|
+
* supply it, because the only place a scheduled turn sees its own event is the
|
|
78
|
+
* provenance preamble, which carries the first eight characters. The watermark
|
|
79
|
+
* file is named from the whole id, so a turn committing against the prefix
|
|
80
|
+
* would write a file the next gate never reads and the routine would report
|
|
81
|
+
* work for ever. */
|
|
82
|
+
export declare const GATE_COMMIT_TOKEN = "<<gateCommit>>";
|
|
83
|
+
/** True when the check compares against a stored position rather than reading a
|
|
84
|
+
* current one.
|
|
85
|
+
*
|
|
86
|
+
* A watermarked check reads its stored value or zero, so with no watermark file
|
|
87
|
+
* it reports work on every fire until something commits: such a gate is inert
|
|
88
|
+
* until its routine's prompt carries the commit line. Mirrors `probe`'s `mark`
|
|
89
|
+
* field in the scheduling plugin's `tools/scheduling-gate.ts`, which is a
|
|
90
|
+
* function for exactly these three and null for the other two. */
|
|
91
|
+
export declare function isWatermarkedCheck(check: RoutineGateCheck): boolean;
|
|
92
|
+
export declare function gateNeedsCommit(gate: RoutineGate): boolean;
|
|
38
93
|
export interface RoutineTemplate {
|
|
39
94
|
/** Stable identity. Half of the MERGE key `(accountId, routineTemplate)`, so
|
|
40
95
|
* it is never renamed: a renamed key seeds a duplicate row and orphans the
|
|
@@ -52,7 +107,27 @@ export interface RoutineTemplate {
|
|
|
52
107
|
readonly recurrence: string;
|
|
53
108
|
/** The injected turn. Refreshed on a version bump when the row is unedited. */
|
|
54
109
|
readonly prompt: string;
|
|
110
|
+
/** Task 2379 — the precondition, present when this routine's work is
|
|
111
|
+
* conditional AND the check vocabulary can express its source without
|
|
112
|
+
* per-account data. Seeded onto `gatePlugin`/`gateTool`/`gateArgs` under the
|
|
113
|
+
* same rule the prompt follows: written on create, refreshed only on a
|
|
114
|
+
* version bump of an unedited row. */
|
|
115
|
+
readonly gate?: RoutineGate;
|
|
116
|
+
/** Why this template ships with no gate. Exactly one of `gate` and `gateless`
|
|
117
|
+
* is present on every template, and the roster test fails one carrying
|
|
118
|
+
* neither, so a template added later cannot skip the decision. A field rather
|
|
119
|
+
* than a comment because a comment cannot be asserted. */
|
|
120
|
+
readonly gateless?: string;
|
|
55
121
|
}
|
|
122
|
+
/** A template is classified when it carries exactly one of `gate` and a
|
|
123
|
+
* non-empty `gateless`.
|
|
124
|
+
*
|
|
125
|
+
* The rule lives here, in one function, rather than inline in the assertion
|
|
126
|
+
* that walks the roster. A predicate the test only ever feeds passing input
|
|
127
|
+
* reports clean while checking nothing, so the roster test asserts this both
|
|
128
|
+
* ways: true for all thirteen, and false for a template carrying neither, both
|
|
129
|
+
* and an empty reason. */
|
|
130
|
+
export declare function isClassified(template: RoutineTemplate): boolean;
|
|
56
131
|
/** The thirteen. Order is the display order on `/routines` before the operator
|
|
57
132
|
* retimes anything: the daily rhythm first, then the reconciles, then the
|
|
58
133
|
* weekly, then the standing check, then the two health reports.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster.d.ts","sourceRoot":"","sources":["../src/roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH;;;gFAGgF;AAChF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B;;mEAE+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;6EAGyE;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;wEACoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"roster.d.ts","sourceRoot":"","sources":["../src/roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH;;;gFAGgF;AAChF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;CACtC;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,oBAAoB,CAAC;AAEzB;iEACiE;AACjE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAED;;;;;;;;qBAQqB;AACrB,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD;;;;;;;mEAOmE;AACnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAGnE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAE1D;AAED,MAAM,WAAW,eAAe;IAC9B;;mEAE+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;6EAGyE;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;wEACoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;2CAIuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B;;;+DAG2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;2BAO2B;AAC3B,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAI/D;AAkKD;;;;;;;;iFAQiF;AACjF,eAAO,MAAM,cAAc,EAAE,SAAS,eAAe,EAsHpD,CAAC;AAEF;;6DAE6D;AAC7D,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAqC,CAAC"}
|
|
@@ -32,12 +32,54 @@
|
|
|
32
32
|
* shipping a prompt that reaches for a tool no install serves.
|
|
33
33
|
*/
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.ROUTINE_ROSTER_KEYS = exports.ROUTINE_ROSTER = exports.ROUTINE_TEMPLATE_VERSION = void 0;
|
|
35
|
+
exports.ROUTINE_ROSTER_KEYS = exports.ROUTINE_ROSTER = exports.GATE_COMMIT_TOKEN = exports.ROUTINE_TEMPLATE_VERSION = void 0;
|
|
36
|
+
exports.isWatermarkedCheck = isWatermarkedCheck;
|
|
37
|
+
exports.gateNeedsCommit = gateNeedsCommit;
|
|
38
|
+
exports.isClassified = isClassified;
|
|
36
39
|
/** Bumped whenever any prompt in the roster changes. The seed refreshes a
|
|
37
40
|
* routine's prompt only when the stored `routineTemplateVersion` is BELOW this
|
|
38
41
|
* and no operator has edited the row, so an unbumped edit ships to new installs
|
|
39
42
|
* and never reaches existing ones — bump it in the same commit as the edit. */
|
|
40
|
-
exports.ROUTINE_TEMPLATE_VERSION =
|
|
43
|
+
exports.ROUTINE_TEMPLATE_VERSION = 3;
|
|
44
|
+
/** Substituted by the seed with the full `scheduling-gate` argument object,
|
|
45
|
+
* including the row's own event id.
|
|
46
|
+
*
|
|
47
|
+
* A template cannot write that id: it is minted by the MERGE. Nor can the turn
|
|
48
|
+
* supply it, because the only place a scheduled turn sees its own event is the
|
|
49
|
+
* provenance preamble, which carries the first eight characters. The watermark
|
|
50
|
+
* file is named from the whole id, so a turn committing against the prefix
|
|
51
|
+
* would write a file the next gate never reads and the routine would report
|
|
52
|
+
* work for ever. */
|
|
53
|
+
exports.GATE_COMMIT_TOKEN = "<<gateCommit>>";
|
|
54
|
+
/** True when the check compares against a stored position rather than reading a
|
|
55
|
+
* current one.
|
|
56
|
+
*
|
|
57
|
+
* A watermarked check reads its stored value or zero, so with no watermark file
|
|
58
|
+
* it reports work on every fire until something commits: such a gate is inert
|
|
59
|
+
* until its routine's prompt carries the commit line. Mirrors `probe`'s `mark`
|
|
60
|
+
* field in the scheduling plugin's `tools/scheduling-gate.ts`, which is a
|
|
61
|
+
* function for exactly these three and null for the other two. */
|
|
62
|
+
function isWatermarkedCheck(check) {
|
|
63
|
+
if (check.type === "whatsapp")
|
|
64
|
+
return check.scope === "inbound";
|
|
65
|
+
return check.type === "mail" || check.type === "calendar";
|
|
66
|
+
}
|
|
67
|
+
function gateNeedsCommit(gate) {
|
|
68
|
+
return gate.checks.some(isWatermarkedCheck);
|
|
69
|
+
}
|
|
70
|
+
/** A template is classified when it carries exactly one of `gate` and a
|
|
71
|
+
* non-empty `gateless`.
|
|
72
|
+
*
|
|
73
|
+
* The rule lives here, in one function, rather than inline in the assertion
|
|
74
|
+
* that walks the roster. A predicate the test only ever feeds passing input
|
|
75
|
+
* reports clean while checking nothing, so the roster test asserts this both
|
|
76
|
+
* ways: true for all thirteen, and false for a template carrying neither, both
|
|
77
|
+
* and an empty reason. */
|
|
78
|
+
function isClassified(template) {
|
|
79
|
+
const gated = template.gate != null;
|
|
80
|
+
const declaredGateless = typeof template.gateless === "string" && template.gateless.trim() !== "";
|
|
81
|
+
return gated !== declaredGateless;
|
|
82
|
+
}
|
|
41
83
|
const START_OF_DAY = `Prepare the operator's morning briefing and reply with it as a single message.
|
|
42
84
|
|
|
43
85
|
Call capabilities-here first and work only with the plugins it reports as enabled. Nothing below is mandatory: each part is included when its surface is present and skipped in silence when it is not.
|
|
@@ -105,7 +147,9 @@ An appointment on the provider calendar with no counterpart in the graph is invi
|
|
|
105
147
|
|
|
106
148
|
If the account has a busy-time sync configured, run schedule-connector-busy-sync so availability reflects what was just reconciled.
|
|
107
149
|
|
|
108
|
-
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
|
|
150
|
+
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.
|
|
151
|
+
|
|
152
|
+
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.`;
|
|
109
153
|
const CONTACT_RECONCILE = `Reconcile the people the business actually deals with against the people it has recorded.
|
|
110
154
|
|
|
111
155
|
Call capabilities-here first. If neither a mail plugin nor the contacts plugin is enabled, end the turn without replying.
|
|
@@ -199,6 +243,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
199
243
|
description: "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.",
|
|
200
244
|
recurrence: "30 7 * * 1-5",
|
|
201
245
|
prompt: START_OF_DAY,
|
|
246
|
+
gateless: "A morning briefing is judgement every fire, so a gate would either always pass or suppress the briefing.",
|
|
202
247
|
},
|
|
203
248
|
{
|
|
204
249
|
key: "inbound-check",
|
|
@@ -206,6 +251,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
206
251
|
description: "Triages mail that arrived since the last check and writes replies for you to approve; it never sends anything itself.",
|
|
207
252
|
recurrence: "*/30 9-17 * * 1-5",
|
|
208
253
|
prompt: INBOUND_CHECK,
|
|
254
|
+
gateless: "Conditional on new mail, but the mail check matches an exact mailbox address and no shipped template can name one (Task 2389).",
|
|
209
255
|
},
|
|
210
256
|
{
|
|
211
257
|
key: "end-of-day",
|
|
@@ -213,6 +259,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
213
259
|
description: "Closes the day with your unsent drafts, overdue work and tomorrow's diary; says nothing when all three are empty.",
|
|
214
260
|
recurrence: "0 18 * * 1-5",
|
|
215
261
|
prompt: END_OF_DAY,
|
|
262
|
+
gateless: "A wrap-up is judgement every fire, so no cheap check stands in for reading the three surfaces it reports.",
|
|
216
263
|
},
|
|
217
264
|
{
|
|
218
265
|
key: "appointment-reminder",
|
|
@@ -220,6 +267,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
220
267
|
description: "Reminds each attendee once before a booked appointment, on a route they already use; it never opens a conversation with a stranger.",
|
|
221
268
|
recurrence: "0 * * * *",
|
|
222
269
|
prompt: APPOINTMENT_REMINDER,
|
|
270
|
+
gateless: "Conditional on an appointment falling in the window, but no check type reads appointments held in the graph (Task 2389).",
|
|
223
271
|
},
|
|
224
272
|
{
|
|
225
273
|
key: "commitment-chase",
|
|
@@ -227,6 +275,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
227
275
|
description: "Surfaces promises the business made and did not keep, and promises made to it that nobody kept; it reports them rather than chasing them.",
|
|
228
276
|
recurrence: "0 10 * * 2",
|
|
229
277
|
prompt: COMMITMENT_CHASE,
|
|
278
|
+
gateless: "Whether a promise has been dropped is the judgement itself, so no check can answer it more cheaply.",
|
|
230
279
|
},
|
|
231
280
|
{
|
|
232
281
|
key: "calendar-reconcile",
|
|
@@ -234,6 +283,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
234
283
|
description: "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.",
|
|
235
284
|
recurrence: "*/15 * * * *",
|
|
236
285
|
prompt: CALENDAR_RECONCILE,
|
|
286
|
+
gate: { checks: [{ type: "calendar", connector: "account" }] },
|
|
237
287
|
},
|
|
238
288
|
{
|
|
239
289
|
key: "contact-reconcile",
|
|
@@ -241,6 +291,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
241
291
|
description: "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.",
|
|
242
292
|
recurrence: "45 6 * * 1-5",
|
|
243
293
|
prompt: CONTACT_RECONCILE,
|
|
294
|
+
gateless: "Conditional on new correspondence, but no check type reads correspondence (Task 2389).",
|
|
244
295
|
},
|
|
245
296
|
{
|
|
246
297
|
key: "crm-reconcile",
|
|
@@ -248,6 +299,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
248
299
|
description: "Brings across what changed in whichever operational system this business runs; it reads only and never writes back to that system.",
|
|
249
300
|
recurrence: "0 3 * * *",
|
|
250
301
|
prompt: CRM_RECONCILE,
|
|
302
|
+
gateless: "Conditional on connector movement, but no check type reads a connector queue (Task 2389).",
|
|
251
303
|
},
|
|
252
304
|
{
|
|
253
305
|
key: "finance-reconcile",
|
|
@@ -255,6 +307,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
255
307
|
description: "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.",
|
|
256
308
|
recurrence: "0 4 * * 1",
|
|
257
309
|
prompt: FINANCE_RECONCILE,
|
|
310
|
+
gateless: "Conditional on accounting movement, but no check type reads an accounting ledger (Task 2389).",
|
|
258
311
|
},
|
|
259
312
|
{
|
|
260
313
|
key: "weekly-digest",
|
|
@@ -262,6 +315,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
262
315
|
description: "Writes the week in three paragraphs at most: what changed, what is stuck, and what next week turns on.",
|
|
263
316
|
recurrence: "0 16 * * 5",
|
|
264
317
|
prompt: WEEKLY_DIGEST,
|
|
318
|
+
gateless: "A digest is judgement every fire, and a gate would suppress the report it exists to send.",
|
|
265
319
|
},
|
|
266
320
|
{
|
|
267
321
|
key: "channel-link-check",
|
|
@@ -269,6 +323,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
269
323
|
description: "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.",
|
|
270
324
|
recurrence: "*/15 * * * *",
|
|
271
325
|
prompt: CHANNEL_LINK_CHECK,
|
|
326
|
+
gate: { checks: [{ type: "whatsapp", scope: "status" }] },
|
|
272
327
|
},
|
|
273
328
|
{
|
|
274
329
|
key: "graph-health",
|
|
@@ -276,6 +331,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
276
331
|
description: "Reports what the hourly graph sweep last did and what is waiting for review; it reads only and never runs the sweep itself.",
|
|
277
332
|
recurrence: "0 9 * * 1",
|
|
278
333
|
prompt: GRAPH_HEALTH,
|
|
334
|
+
gateless: "Reports the sweep's state every fire by design, so there is nothing conditional to check.",
|
|
279
335
|
},
|
|
280
336
|
{
|
|
281
337
|
key: "filesystem-health",
|
|
@@ -283,6 +339,7 @@ exports.ROUTINE_ROSTER = [
|
|
|
283
339
|
description: "Reports what has grown under the account directory and which paths are worth attention; it deletes nothing.",
|
|
284
340
|
recurrence: "0 9 * * 1",
|
|
285
341
|
prompt: FILESYSTEM_HEALTH,
|
|
342
|
+
gateless: "Reports what has grown every fire by design, so there is nothing conditional to check.",
|
|
286
343
|
},
|
|
287
344
|
];
|
|
288
345
|
/** Every roster key, in roster order. The scheduling heartbeat's `op=roster`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster.js","sourceRoot":"","sources":["../src/roster.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;
|
|
1
|
+
{"version":3,"file":"roster.js","sourceRoot":"","sources":["../src/roster.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;AAoEH,gDAGC;AAED,0CAEC;AAwCD,oCAIC;AArHD;;;gFAGgF;AACnE,QAAA,wBAAwB,GAAG,CAAC,CAAC;AA2C1C;;;;;;;;qBAQqB;AACR,QAAA,iBAAiB,GAAG,gBAAgB,CAAC;AAElD;;;;;;;mEAOmE;AACnE,SAAgB,kBAAkB,CAAC,KAAuB;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;IAChE,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;AAC5D,CAAC;AAED,SAAgB,eAAe,CAAC,IAAiB;IAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAgCD;;;;;;;2BAO2B;AAC3B,SAAgB,YAAY,CAAC,QAAyB;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IACpC,MAAM,gBAAgB,GAAG,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAClG,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACpC,CAAC;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;4OAWuN,CAAC;AAE7O,MAAM,aAAa,GAAG;;;;;;;;;;2NAUqM,CAAC;AAE5N,MAAM,UAAU,GAAG;;;;;;;;;;gGAU6E,CAAC;AAEjG,MAAM,oBAAoB,GAAG;;;;;;;;;;gJAUmH,CAAC;AAEjJ,MAAM,gBAAgB,GAAG;;;;;;;;;;;4DAWmC,CAAC;AAE7D,MAAM,kBAAkB,GAAG;;;;;;;;;;;;+RAYoQ,CAAC;AAEhS,MAAM,iBAAiB,GAAG;;;;;;;;;;4JAUkI,CAAC;AAE7J,MAAM,aAAa,GAAG;;;;;;;;2HAQqG,CAAC;AAE5H,MAAM,iBAAiB,GAAG;;;;;;;;;;gHAUsF,CAAC;AAEjH,MAAM,aAAa,GAAG;;;;;;;;;;;;gEAY0C,CAAC;AAEjE,MAAM,kBAAkB,GAAG;;;;;;;;;;sHAU2F,CAAC;AAEvH,MAAM,YAAY,GAAG;;;;;;;;;;gJAU2H,CAAC;AAEjJ,MAAM,iBAAiB,GAAG;;;;;;;;;;mFAUyD,CAAC;AAEpF;;;;;;;;iFAQiF;AACpE,QAAA,cAAc,GAA+B;IACxD;QACE,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,2JAA2J;QAC7J,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,0GAA0G;KACrH;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACT,uHAAuH;QACzH,UAAU,EAAE,mBAAmB;QAC/B,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,gIAAgI;KAC3I;IACD;QACE,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,2GAA2G;KACtH;IACD;QACE,GAAG,EAAE,sBAAsB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,qIAAqI;QACvI,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,oBAAoB;QAC5B,QAAQ,EAAE,0HAA0H;KACrI;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,2IAA2I;QAC7I,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,qGAAqG;KAChH;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,gKAAgK;QAClK,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE;KAC/D;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,+JAA+J;QACjK,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,wFAAwF;KACnG;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,oIAAoI;QACtI,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,2FAA2F;KACtG;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,sJAAsJ;QACxJ,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,+FAA+F;KAC1G;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,wGAAwG;QAC1G,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,2FAA2F;KACtG;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,qIAAqI;QACvI,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;KAC1D;IACD;QACE,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,6HAA6H;QAC/H,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,2FAA2F;KACtG;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,6GAA6G;QAC/G,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,wFAAwF;KACnG;CACF,CAAC;AAEF;;6DAE6D;AAChD,QAAA,mBAAmB,GAAsB,sBAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -10,7 +10,15 @@
|
|
|
10
10
|
import { readFileSync } from "node:fs";
|
|
11
11
|
import { resolve } from "node:path";
|
|
12
12
|
import { describe, expect, it } from "vitest";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
GATE_COMMIT_TOKEN,
|
|
15
|
+
gateNeedsCommit,
|
|
16
|
+
isClassified,
|
|
17
|
+
isWatermarkedCheck,
|
|
18
|
+
ROUTINE_ROSTER,
|
|
19
|
+
ROUTINE_ROSTER_KEYS,
|
|
20
|
+
ROUTINE_TEMPLATE_VERSION,
|
|
21
|
+
} from "../roster.js";
|
|
14
22
|
|
|
15
23
|
/** Every canonical maxy tool name, read from the generated registry rather than
|
|
16
24
|
* re-listed here. A list re-typed in this file would drift from the registry,
|
|
@@ -45,6 +53,10 @@ function citedToolCandidates(prompt: string): string[] {
|
|
|
45
53
|
"outlook-",
|
|
46
54
|
"google-",
|
|
47
55
|
"schedule-",
|
|
56
|
+
// Task 2379 — the calendar template's commit sentence is the first prompt to
|
|
57
|
+
// cite `scheduling-gate`. Without this prefix the token is collected by
|
|
58
|
+
// nothing and the registry assertion passes over it without looking.
|
|
59
|
+
"scheduling-",
|
|
48
60
|
"work-",
|
|
49
61
|
"contact-",
|
|
50
62
|
"connector-",
|
|
@@ -211,3 +223,83 @@ describe("routine prompts are generic", () => {
|
|
|
211
223
|
expect(hits).toEqual([]);
|
|
212
224
|
});
|
|
213
225
|
});
|
|
226
|
+
|
|
227
|
+
describe("routine gate classification", () => {
|
|
228
|
+
// Task 2379 — a template is either gated or explicitly not, and the reason
|
|
229
|
+
// for the second is a field rather than a comment because a comment cannot be
|
|
230
|
+
// asserted. The failure this prevents is silent: a conditional template that
|
|
231
|
+
// ships ungated is correct in every other respect and simply costs a full
|
|
232
|
+
// model turn per fire once enabled.
|
|
233
|
+
it("every template is classified exactly once, gated or gateless", () => {
|
|
234
|
+
for (const r of ROUTINE_ROSTER) {
|
|
235
|
+
expect(isClassified(r), `${r.key} must carry exactly one of gate and gateless`).toBe(true);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
it("rejects a template that is unclassified, doubly classified, or has an empty reason", () => {
|
|
240
|
+
// The corpus passing proves nothing about the control: a predicate fed only
|
|
241
|
+
// passing input reports clean while checking nothing. These are the three
|
|
242
|
+
// ways a later template could slip past the rule.
|
|
243
|
+
const base = { key: "x", name: "X", description: "X.", recurrence: "0 9 * * 1", prompt: "p" };
|
|
244
|
+
const gate = { checks: [{ type: "whatsapp", scope: "status" }] } as const;
|
|
245
|
+
expect(isClassified(base), "neither").toBe(false);
|
|
246
|
+
expect(isClassified({ ...base, gate, gateless: "Because." }), "both").toBe(false);
|
|
247
|
+
expect(isClassified({ ...base, gateless: " " }), "blank reason").toBe(false);
|
|
248
|
+
expect(isClassified({ ...base, gate }), "gate only").toBe(true);
|
|
249
|
+
expect(isClassified({ ...base, gateless: "Judgement every fire." }), "reason only").toBe(true);
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
it("gates exactly the two quarter-hourly conditional rows", () => {
|
|
253
|
+
const gatedKeys = ROUTINE_ROSTER.filter((r) => r.gate != null)
|
|
254
|
+
.map((r) => r.key)
|
|
255
|
+
.sort();
|
|
256
|
+
expect(gatedKeys).toEqual(["calendar-reconcile", "channel-link-check"]);
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
it("every gateless reason is a sentence, not a placeholder", () => {
|
|
260
|
+
for (const r of ROUTINE_ROSTER) {
|
|
261
|
+
if (r.gate != null) continue;
|
|
262
|
+
expect(r.gateless!.length, `${r.key} gateless reason`).toBeGreaterThan(20);
|
|
263
|
+
expect(r.gateless!.endsWith("."), `${r.key} gateless reason must end in a full stop`).toBe(true);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
it("uses no check type the shipped tool does not declare", () => {
|
|
268
|
+
// Read as text, the same way CANONICAL_TOOL_NAMES is read. routine-templates
|
|
269
|
+
// is a platform/lib package; importing from platform/plugins would invert
|
|
270
|
+
// the dependency direction and break the lib build.
|
|
271
|
+
const toolSrc = readFileSync(
|
|
272
|
+
resolve(process.cwd(), "../../plugins/scheduling/mcp/src/tools/scheduling-gate.ts"),
|
|
273
|
+
"utf-8",
|
|
274
|
+
);
|
|
275
|
+
const declared = new Set([...toolSrc.matchAll(/type:\s*"([a-z]+)"/g)].map((m) => m[1]));
|
|
276
|
+
expect(declared.size, "the tool must declare check types").toBeGreaterThan(0);
|
|
277
|
+
for (const r of ROUTINE_ROSTER) {
|
|
278
|
+
for (const c of r.gate?.checks ?? []) {
|
|
279
|
+
expect(declared, `${r.key} check ${c.type}`).toContain(c.type);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
it("a watermarked gate carries the commit token and a stateless one does not", () => {
|
|
285
|
+
// A watermarked check reads `stored ?? 0` and reports work on every fire
|
|
286
|
+
// until something commits, so a gate holding one is inert without the line.
|
|
287
|
+
// A stateless check has nothing to advance, so a token there would ask the
|
|
288
|
+
// turn to make a call that does nothing.
|
|
289
|
+
for (const r of ROUTINE_ROSTER) {
|
|
290
|
+
if (r.gate == null) {
|
|
291
|
+
expect(r.prompt, `${r.key} has no gate so must carry no token`).not.toContain(GATE_COMMIT_TOKEN);
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
expect(r.prompt.includes(GATE_COMMIT_TOKEN), `${r.key} token presence`).toBe(gateNeedsCommit(r.gate));
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
it("classifies which checks hold a watermark", () => {
|
|
299
|
+
expect(isWatermarkedCheck({ type: "whatsapp", scope: "status" })).toBe(false);
|
|
300
|
+
expect(isWatermarkedCheck({ type: "whatsapp", scope: "inbound" })).toBe(true);
|
|
301
|
+
expect(isWatermarkedCheck({ type: "d1", database: "d", sql: "SELECT count(*) FROM t" })).toBe(false);
|
|
302
|
+
expect(isWatermarkedCheck({ type: "calendar", connector: "account" })).toBe(true);
|
|
303
|
+
expect(isWatermarkedCheck({ type: "mail", mailbox: "m" })).toBe(true);
|
|
304
|
+
});
|
|
305
|
+
});
|
|
@@ -342,3 +342,77 @@ describe("seedRoutineRoster", () => {
|
|
|
342
342
|
expect(lines.find((l) => l.includes("op=end"))).toContain("ranMs=42");
|
|
343
343
|
});
|
|
344
344
|
});
|
|
345
|
+
|
|
346
|
+
describe("gate seeding", () => {
|
|
347
|
+
/** The gate block runs after the MERGE, where `e.eventId` is bound on both
|
|
348
|
+
* branches. Its runtime semantics belong to Neo4j, as for the rest of this
|
|
349
|
+
* statement; what is testable here, and what a later edit would break
|
|
350
|
+
* silently, is its shape. */
|
|
351
|
+
function gateBlock(): string {
|
|
352
|
+
const start = MERGE_CYPHER.indexOf("AS writing");
|
|
353
|
+
expect(start, "the post-MERGE gate block must be present").toBeGreaterThan(-1);
|
|
354
|
+
return MERGE_CYPHER.slice(start, MERGE_CYPHER.indexOf("RETURN row.key"));
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
it("writes the gate only when the prompt would also be written", () => {
|
|
358
|
+
expect(MERGE_CYPHER).toContain("(NOT existed OR refreshing) AS writing");
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
it("stamps the row's own eventId into gateArgs", () => {
|
|
362
|
+
// The tool declares eventId as required and names the watermark file from
|
|
363
|
+
// it. A template cannot know one, so the seed is the only place it can come
|
|
364
|
+
// from, and it must be the whole id rather than the eight-character prefix
|
|
365
|
+
// a turn can read from its own provenance preamble.
|
|
366
|
+
expect(gateBlock()).toContain(`'{"eventId":"' + e.eventId + '","checks":' + row.gateChecks + '}'`);
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
it("clears the three properties when a template is reclassified gateless", () => {
|
|
370
|
+
// Asymmetric handling would leave a row carrying a gate its template no
|
|
371
|
+
// longer declares, with nothing to say so.
|
|
372
|
+
const body = gateBlock();
|
|
373
|
+
for (const prop of ["gatePlugin", "gateTool", "gateArgs"]) {
|
|
374
|
+
expect(body, `${prop} must have a null branch`).toMatch(
|
|
375
|
+
new RegExp(`e\\.${prop} = CASE WHEN writing THEN \\(CASE WHEN row\\.gateChecks IS NULL THEN null`),
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
it("leaves every gate property alone when not writing", () => {
|
|
381
|
+
const body = gateBlock();
|
|
382
|
+
for (const prop of ["gatePlugin", "gateTool", "gateArgs"]) {
|
|
383
|
+
expect(body, `${prop} must fall through to itself`).toContain(`ELSE e.${prop} END`);
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
|
|
387
|
+
it("substitutes the commit token with the same eventId and checks", () => {
|
|
388
|
+
expect(gateBlock()).toContain("replace(e.agentPrompt, '<<gateCommit>>'");
|
|
389
|
+
expect(gateBlock()).toContain(`,"commit":true}'`);
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
it("passes serialised checks for a gated row and null for a gateless one", async () => {
|
|
393
|
+
const { session, calls } = fakeSession({
|
|
394
|
+
timezone: { timezone: "Europe/Lisbon", timezoneSource: "owner-set" },
|
|
395
|
+
merges: allUnchanged,
|
|
396
|
+
verify: cleanVerify,
|
|
397
|
+
});
|
|
398
|
+
await seedRoutineRoster({
|
|
399
|
+
session,
|
|
400
|
+
accountId: "abcd1234-0000-0000-0000-000000000000",
|
|
401
|
+
now: "2026-08-02T00:00:00.000Z",
|
|
402
|
+
log: () => {},
|
|
403
|
+
});
|
|
404
|
+
const merge = calls.find((c) => c.query.includes("MERGE (e:Event"))!;
|
|
405
|
+
const rows = merge.params.rows as Array<{ key: string; gateChecks: string | null }>;
|
|
406
|
+
const byKey = new Map(rows.map((r) => [r.key, r.gateChecks]));
|
|
407
|
+
expect(byKey.get("channel-link-check")).toBe('[{"type":"whatsapp","scope":"status"}]');
|
|
408
|
+
expect(byKey.get("calendar-reconcile")).toBe('[{"type":"calendar","connector":"account"}]');
|
|
409
|
+
expect(byKey.get("weekly-digest")).toBeNull();
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
it("serialises the checks in exactly one place", () => {
|
|
413
|
+
// The gate and the prompt's commit call must not be able to disagree about
|
|
414
|
+
// what this routine checks, so both read the same row.gateChecks.
|
|
415
|
+
const occurrences = MERGE_CYPHER.split("row.gateChecks").length - 1;
|
|
416
|
+
expect(occurrences).toBeGreaterThanOrEqual(4);
|
|
417
|
+
});
|
|
418
|
+
});
|