@rubytech/create-maxy-code 0.1.553 → 0.1.555
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/agent-dispatch-rule/dist/index.d.ts +41 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js +42 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -1
- package/payload/platform/lib/agent-dispatch-rule/src/__tests__/dispatch-gap.test.ts +89 -0
- package/payload/platform/lib/agent-dispatch-rule/src/index.ts +59 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +24 -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/docs/references/platform.md +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +11 -44
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-render.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-render.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-render.test.js +72 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-render.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-render.d.ts +5 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-render.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-render.js +63 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-render.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/null-startdate-audit.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/null-startdate-audit.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/null-startdate-audit.test.js +83 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/null-startdate-audit.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +31 -11
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +69 -25
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +14 -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-list.test.js +6 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js +92 -9
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.d.ts +6 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.js +15 -5
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +6 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +6 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +14 -2
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.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 +50 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/platform/scripts/check-no-esm-require.mjs +6 -0
- package/payload/server/public/activity.html +5 -5
- package/payload/server/public/agents.html +4 -4
- package/payload/server/public/assets/{AdminLoginScreens-Ca2QhL18.js → AdminLoginScreens-DrF7rAcb.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-DrF7rAcb.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-DrF7rAcb.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-BVKfxSgh.js +2 -0
- package/payload/server/public/assets/AdminShell-BVKfxSgh.js.br +0 -0
- package/payload/server/public/assets/AdminShell-BVKfxSgh.js.gz +0 -0
- package/payload/server/public/assets/{activity-TSDKmIYb.js → activity-CBcvL5MZ.js} +1 -1
- package/payload/server/public/assets/activity-CBcvL5MZ.js.br +0 -0
- package/payload/server/public/assets/activity-CBcvL5MZ.js.gz +0 -0
- package/payload/server/public/assets/admin-CCB9k3GB.js +1 -0
- package/payload/server/public/assets/admin-CCB9k3GB.js.br +0 -0
- package/payload/server/public/assets/admin-CCB9k3GB.js.gz +0 -0
- package/payload/server/public/assets/{agents-9hlQHOS5.js → agents-Dzx8Uxgz.js} +1 -1
- package/payload/server/public/assets/agents-Dzx8Uxgz.js.br +0 -0
- package/payload/server/public/assets/agents-Dzx8Uxgz.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-BrqoCsqh.js → browser-B7EsGyVd.js} +1 -1
- package/payload/server/public/assets/browser-B7EsGyVd.js.br +0 -0
- package/payload/server/public/assets/browser-B7EsGyVd.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-D4qD0upn.js +1 -0
- package/payload/server/public/assets/calendar-D4qD0upn.js.br +0 -0
- package/payload/server/public/assets/calendar-D4qD0upn.js.gz +0 -0
- package/payload/server/public/assets/channel-DnchwXmx.js +1 -0
- package/payload/server/public/assets/chat-BgOUm7r1.js +1 -0
- package/payload/server/public/assets/chat-BgOUm7r1.js.br +0 -0
- package/payload/server/public/assets/chat-BgOUm7r1.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-CGsW9Vsp.js +1 -0
- package/payload/server/public/assets/chevron-left-CGsW9Vsp.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-B_xWWLQW.js +1 -0
- package/payload/server/public/assets/clock-B_xWWLQW.js.br +0 -0
- package/payload/server/public/assets/clock-B_xWWLQW.js.gz +0 -0
- package/payload/server/public/assets/clone-C-YfAPQ_.js +1 -0
- package/payload/server/public/assets/{copy-BkbgmpJo.js → copy-CG2tAK16.js} +1 -1
- package/payload/server/public/assets/copy-CG2tAK16.js.br +0 -0
- package/payload/server/public/assets/copy-CG2tAK16.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-YEC6LkxI.js +1 -0
- package/payload/server/public/assets/data-YEC6LkxI.js.br +0 -0
- package/payload/server/public/assets/data-YEC6LkxI.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-DDCrqbWB.js → file-text-47cIljhV.js} +1 -1
- package/payload/server/public/assets/file-text-47cIljhV.js.br +0 -0
- package/payload/server/public/assets/file-text-47cIljhV.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-BKPdL5ph.js → graph-CDbi-eqF.js} +2 -2
- package/payload/server/public/assets/graph-CDbi-eqF.js.br +0 -0
- package/payload/server/public/assets/graph-CDbi-eqF.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-B2PrHK6O.js → graph-labels-Byp2RkVg.js} +1 -1
- package/payload/server/public/assets/graph-labels-Byp2RkVg.js.br +0 -0
- package/payload/server/public/assets/graph-labels-Byp2RkVg.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-BVULmN09.js → operator-B0oOVB8R.js} +1 -1
- package/payload/server/public/assets/operator-B0oOVB8R.js.br +0 -0
- package/payload/server/public/assets/operator-B0oOVB8R.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-BbzdSxuU.js → page-Dfce3YQd.js} +3 -3
- package/payload/server/public/assets/page-Dfce3YQd.js.br +0 -0
- package/payload/server/public/assets/page-Dfce3YQd.js.gz +0 -0
- package/payload/server/public/assets/{page-baQ9FQIg.js → page-DrbfHSQ9.js} +1 -1
- package/payload/server/public/assets/page-DrbfHSQ9.js.br +0 -0
- package/payload/server/public/assets/page-DrbfHSQ9.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-Bankj0zU.js +1 -0
- package/payload/server/public/assets/play-Bankj0zU.js.br +0 -0
- package/payload/server/public/assets/play-Bankj0zU.js.gz +0 -0
- package/payload/server/public/assets/{public-B_SEBxWy.js → public-DJwMfl-4.js} +1 -1
- package/payload/server/public/assets/public-DJwMfl-4.js.br +0 -0
- package/payload/server/public/assets/public-DJwMfl-4.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-DzXTXh3g.js → rotate-ccw-Dbj7NrEB.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-Dbj7NrEB.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-Dbj7NrEB.js.gz +0 -0
- package/payload/server/public/assets/routines-YdqrwNi2.js +2 -0
- package/payload/server/public/assets/routines-YdqrwNi2.js.br +0 -0
- package/payload/server/public/assets/routines-YdqrwNi2.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-yCZhYVIs.js → skills-EtKyNK_3.js} +1 -1
- package/payload/server/public/assets/skills-EtKyNK_3.js.br +0 -0
- package/payload/server/public/assets/skills-EtKyNK_3.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-DxNFLsHv.js → tasks-U0poqfi9.js} +2 -2
- package/payload/server/public/assets/tasks-U0poqfi9.js.br +0 -0
- package/payload/server/public/assets/tasks-U0poqfi9.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-CYwHTcvU.js → triangle-alert-D7zwttJW.js} +1 -1
- package/payload/server/public/assets/triangle-alert-D7zwttJW.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-D7zwttJW.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-BCRjKc-H.js → useCopyFeedback-Ae_va0Ps.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-Ae_va0Ps.js.br +4 -0
- package/payload/server/public/assets/useCopyFeedback-Ae_va0Ps.js.gz +0 -0
- package/payload/server/public/assets/{useMediaQuery-Vxpamxqq.css → useMediaQuery-HRgPNA8l.css} +1 -1
- package/payload/server/public/assets/useMediaQuery-HRgPNA8l.css.br +0 -0
- package/payload/server/public/assets/useMediaQuery-HRgPNA8l.css.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-9qVOHhkb.js +2 -0
- package/payload/server/public/assets/useVoiceRecorder-9qVOHhkb.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-9qVOHhkb.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-iI-vx-g2.js → wrench-BmXV4Tmh.js} +1 -1
- package/payload/server/public/assets/wrench-BmXV4Tmh.js.br +0 -0
- package/payload/server/public/assets/wrench-BmXV4Tmh.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 +8 -7
- package/payload/server/public/skills.html +5 -5
- package/payload/server/public/tasks.html +6 -6
- package/payload/server/server.js +5515 -4918
- package/payload/server/public/assets/AdminLoginScreens-Ca2QhL18.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-Ca2QhL18.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-Dc5du5xX.js +0 -2
- package/payload/server/public/assets/AdminShell-Dc5du5xX.js.br +0 -0
- package/payload/server/public/assets/AdminShell-Dc5du5xX.js.gz +0 -0
- package/payload/server/public/assets/activity-TSDKmIYb.js.br +0 -0
- package/payload/server/public/assets/activity-TSDKmIYb.js.gz +0 -0
- package/payload/server/public/assets/admin-Ba729Eyg.js +0 -1
- package/payload/server/public/assets/admin-Ba729Eyg.js.br +0 -0
- package/payload/server/public/assets/admin-Ba729Eyg.js.gz +0 -0
- package/payload/server/public/assets/agents-9hlQHOS5.js.br +0 -0
- package/payload/server/public/assets/agents-9hlQHOS5.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-BrqoCsqh.js.br +0 -0
- package/payload/server/public/assets/browser-BrqoCsqh.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-DOObQ_m8.js +0 -1
- package/payload/server/public/assets/calendar-DOObQ_m8.js.br +0 -0
- package/payload/server/public/assets/calendar-DOObQ_m8.js.gz +0 -0
- package/payload/server/public/assets/channel-D08XWP9e.js +0 -1
- package/payload/server/public/assets/chat-Xaul2lLF.js +0 -1
- package/payload/server/public/assets/chat-Xaul2lLF.js.br +0 -3
- package/payload/server/public/assets/chat-Xaul2lLF.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-BYH5vH4S.js +0 -1
- package/payload/server/public/assets/chevron-left-BYH5vH4S.js.br +0 -0
- package/payload/server/public/assets/chevron-right-XxQPHfNH.js +0 -1
- package/payload/server/public/assets/chevron-right-XxQPHfNH.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-BNp2JTKh.js +0 -1
- package/payload/server/public/assets/clock-BNp2JTKh.js.br +0 -0
- package/payload/server/public/assets/clock-BNp2JTKh.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-BkbgmpJo.js.br +0 -0
- package/payload/server/public/assets/copy-BkbgmpJo.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-yuHj8g0C.js +0 -1
- package/payload/server/public/assets/data-yuHj8g0C.js.br +0 -3
- package/payload/server/public/assets/data-yuHj8g0C.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-DDCrqbWB.js.br +0 -0
- package/payload/server/public/assets/file-text-DDCrqbWB.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-BKPdL5ph.js.br +0 -0
- package/payload/server/public/assets/graph-BKPdL5ph.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-B2PrHK6O.js.br +0 -0
- package/payload/server/public/assets/graph-labels-B2PrHK6O.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-BVULmN09.js.br +0 -0
- package/payload/server/public/assets/operator-BVULmN09.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-BbzdSxuU.js.br +0 -0
- package/payload/server/public/assets/page-BbzdSxuU.js.gz +0 -0
- package/payload/server/public/assets/page-baQ9FQIg.js.br +0 -0
- package/payload/server/public/assets/page-baQ9FQIg.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-3hlqzxLI.js +0 -1
- package/payload/server/public/assets/play-3hlqzxLI.js.br +0 -0
- package/payload/server/public/assets/play-3hlqzxLI.js.gz +0 -0
- package/payload/server/public/assets/public-B_SEBxWy.js.br +0 -0
- package/payload/server/public/assets/public-B_SEBxWy.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-DzXTXh3g.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-DzXTXh3g.js.gz +0 -0
- package/payload/server/public/assets/routines-BQzE0xzC.js +0 -2
- package/payload/server/public/assets/routines-BQzE0xzC.js.br +0 -0
- package/payload/server/public/assets/routines-BQzE0xzC.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-yCZhYVIs.js.br +0 -0
- package/payload/server/public/assets/skills-yCZhYVIs.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-DxNFLsHv.js.br +0 -0
- package/payload/server/public/assets/tasks-DxNFLsHv.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-CYwHTcvU.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CYwHTcvU.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-BCRjKc-H.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-BCRjKc-H.js.gz +0 -0
- package/payload/server/public/assets/useMediaQuery-Vxpamxqq.css.br +0 -0
- package/payload/server/public/assets/useMediaQuery-Vxpamxqq.css.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BaAtMu9T.js +0 -2
- package/payload/server/public/assets/useVoiceRecorder-BaAtMu9T.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BaAtMu9T.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-iI-vx-g2.js.br +0 -0
- package/payload/server/public/assets/wrench-iI-vx-g2.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-Baf4Huvv.js → useMediaQuery-DIm6yGOl.js} +0 -0
- /package/payload/server/public/assets/{useMediaQuery-Baf4Huvv.js.br → useMediaQuery-DIm6yGOl.js.br} +0 -0
- /package/payload/server/public/assets/{useMediaQuery-Baf4Huvv.js.gz → useMediaQuery-DIm6yGOl.js.gz} +0 -0
package/package.json
CHANGED
|
@@ -114,5 +114,46 @@ export declare function listDispatchDestinations(input: {
|
|
|
114
114
|
houseAccountId: string | null;
|
|
115
115
|
accountId: string;
|
|
116
116
|
}): DispatchDestination[];
|
|
117
|
+
/**
|
|
118
|
+
* Task 2393 — the five fields that decide whether an automation `:Event` can
|
|
119
|
+
* deliver anything, and which one is missing when it cannot.
|
|
120
|
+
*
|
|
121
|
+
* Both consumers of this rule already import this package: the scheduling
|
|
122
|
+
* plugin at `plugins/scheduling/mcp/src/lib/agent-dispatch.ts` and `platform/ui`
|
|
123
|
+
* at `server/routes/admin/routines.ts`. So the rule lives here once rather than
|
|
124
|
+
* in the plugin with a copy on the UI side — there is no second definition for
|
|
125
|
+
* a drift test to police.
|
|
126
|
+
*
|
|
127
|
+
* `actionArgs` is deliberately absent: neither function reads it, and requiring
|
|
128
|
+
* callers to project it would make the arming routes read a column for nothing.
|
|
129
|
+
*/
|
|
130
|
+
export interface DispatchFields {
|
|
131
|
+
agentChannel: string | null;
|
|
132
|
+
agentDestination: string | null;
|
|
133
|
+
agentPrompt: string | null;
|
|
134
|
+
actionPlugin: string | null;
|
|
135
|
+
actionTool: string | null;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Can this row deliver? Channel AND destination AND prompt, or plugin AND tool.
|
|
139
|
+
* Exactly the condition under which `chooseDispatchMode` returns something
|
|
140
|
+
* other than `{kind:'none'}`, which is what makes a fire silent.
|
|
141
|
+
*/
|
|
142
|
+
export declare function isDispatchable(fields: DispatchFields): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Task 2130 — which missing field makes this row undispatchable.
|
|
145
|
+
*
|
|
146
|
+
* A fixed `reason=no-destination` would be wrong roughly as often as it is
|
|
147
|
+
* right: an agent turn needs channel AND destination AND prompt, so the label
|
|
148
|
+
* sends an operator to bind a destination on a routine whose prompt is what is
|
|
149
|
+
* absent, and the next fire is just as silent. Agent dispatch is reported first
|
|
150
|
+
* because a partially-configured routine — any agent field set but not all
|
|
151
|
+
* three — is almost always reaching for that mode. A row with nothing set at
|
|
152
|
+
* all is an automation event carrying no dispatch of either kind.
|
|
153
|
+
*
|
|
154
|
+
* Moved here from `plugins/scheduling/mcp/src/scripts/agent-turn-dispatch.ts`
|
|
155
|
+
* (Task 2393), which re-exports it so its fire-site callers are unchanged.
|
|
156
|
+
*/
|
|
157
|
+
export declare function dispatchGapReason(fields: DispatchFields): string;
|
|
117
158
|
export {};
|
|
118
159
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GACf;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG;wCACwC;AACxC,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;gBAGY;IACZ,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACvD;AAED,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;uCAEuC;AACvC,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,cAAc,CAAC;AAC3F,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,cAAc,CAAC;AA6E3F;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAOf;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMzF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAkBrB;AAED;;uDAEuD;AACvD,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEjF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB;8CAC0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;iFAG6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,mBAAmB,EAAE,CA+CxB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ exports.registeredAccountForDestination = registeredAccountForDestination;
|
|
|
7
7
|
exports.boundSubAccountFor = boundSubAccountFor;
|
|
8
8
|
exports.validateAgentDestination = validateAgentDestination;
|
|
9
9
|
exports.listDispatchDestinations = listDispatchDestinations;
|
|
10
|
+
exports.isDispatchable = isDispatchable;
|
|
11
|
+
exports.dispatchGapReason = dispatchGapReason;
|
|
10
12
|
/**
|
|
11
13
|
* The dispatch-destination rule, shared by the scheduling plugin and the admin
|
|
12
14
|
* UI so create-time, fire-time and dashboard-time cannot diverge on the rule or
|
|
@@ -259,4 +261,44 @@ function listDispatchDestinations(input) {
|
|
|
259
261
|
const byDestination = (a, b) => a.destination.localeCompare(b.destination);
|
|
260
262
|
return [...managers.sort(byDestination), ...admins.sort(byDestination), ...telegram];
|
|
261
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* Can this row deliver? Channel AND destination AND prompt, or plugin AND tool.
|
|
266
|
+
* Exactly the condition under which `chooseDispatchMode` returns something
|
|
267
|
+
* other than `{kind:'none'}`, which is what makes a fire silent.
|
|
268
|
+
*/
|
|
269
|
+
function isDispatchable(fields) {
|
|
270
|
+
if (fields.agentChannel && fields.agentDestination && fields.agentPrompt)
|
|
271
|
+
return true;
|
|
272
|
+
return Boolean(fields.actionPlugin && fields.actionTool);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Task 2130 — which missing field makes this row undispatchable.
|
|
276
|
+
*
|
|
277
|
+
* A fixed `reason=no-destination` would be wrong roughly as often as it is
|
|
278
|
+
* right: an agent turn needs channel AND destination AND prompt, so the label
|
|
279
|
+
* sends an operator to bind a destination on a routine whose prompt is what is
|
|
280
|
+
* absent, and the next fire is just as silent. Agent dispatch is reported first
|
|
281
|
+
* because a partially-configured routine — any agent field set but not all
|
|
282
|
+
* three — is almost always reaching for that mode. A row with nothing set at
|
|
283
|
+
* all is an automation event carrying no dispatch of either kind.
|
|
284
|
+
*
|
|
285
|
+
* Moved here from `plugins/scheduling/mcp/src/scripts/agent-turn-dispatch.ts`
|
|
286
|
+
* (Task 2393), which re-exports it so its fire-site callers are unchanged.
|
|
287
|
+
*/
|
|
288
|
+
function dispatchGapReason(fields) {
|
|
289
|
+
if (fields.agentChannel || fields.agentDestination || fields.agentPrompt) {
|
|
290
|
+
const missing = [];
|
|
291
|
+
if (!fields.agentChannel)
|
|
292
|
+
missing.push("channel");
|
|
293
|
+
if (!fields.agentDestination)
|
|
294
|
+
missing.push("destination");
|
|
295
|
+
if (!fields.agentPrompt)
|
|
296
|
+
missing.push("prompt");
|
|
297
|
+
return `no-${missing.join("+")}`;
|
|
298
|
+
}
|
|
299
|
+
if (fields.actionPlugin || fields.actionTool) {
|
|
300
|
+
return fields.actionTool ? "no-action-plugin" : "no-action-tool";
|
|
301
|
+
}
|
|
302
|
+
return "no-dispatch-configured";
|
|
303
|
+
}
|
|
262
304
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AA4CA,sCAOC;AAGD,kCAIC;AAuBD,8CA0EC;AASD,0EAWC;AAOD,gDAMC;AAsBD,4DAwBC;AAgCD,4DAmDC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task 2393 — the dispatchability rule, in the one place both the scheduling
|
|
3
|
+
* plugin and the admin UI read it.
|
|
4
|
+
*
|
|
5
|
+
* `dispatchGapReason` moved here from
|
|
6
|
+
* `plugins/scheduling/mcp/src/scripts/agent-turn-dispatch.ts`, which now
|
|
7
|
+
* re-exports it. The token vocabulary is asserted here rather than in two
|
|
8
|
+
* places, because two copies is the drift this move removes.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect } from "vitest";
|
|
11
|
+
import { isDispatchable, dispatchGapReason, type DispatchFields } from "../index.js";
|
|
12
|
+
|
|
13
|
+
function fields(over: Partial<DispatchFields> = {}): DispatchFields {
|
|
14
|
+
return {
|
|
15
|
+
agentChannel: null,
|
|
16
|
+
agentDestination: null,
|
|
17
|
+
agentPrompt: null,
|
|
18
|
+
actionPlugin: null,
|
|
19
|
+
actionTool: null,
|
|
20
|
+
...over,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
describe("isDispatchable", () => {
|
|
25
|
+
it("is true for a complete agent dispatch", () => {
|
|
26
|
+
expect(
|
|
27
|
+
isDispatchable(
|
|
28
|
+
fields({
|
|
29
|
+
agentChannel: "whatsapp",
|
|
30
|
+
agentDestination: "+447700900123",
|
|
31
|
+
agentPrompt: "Send it.",
|
|
32
|
+
}),
|
|
33
|
+
),
|
|
34
|
+
).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it("is true for a complete tool action", () => {
|
|
38
|
+
expect(isDispatchable(fields({ actionPlugin: "scheduling", actionTool: "schedule-list" }))).toBe(
|
|
39
|
+
true,
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it("is false when the agent dispatch is missing any one of its three fields", () => {
|
|
44
|
+
expect(
|
|
45
|
+
isDispatchable(fields({ agentDestination: "+447700900123", agentPrompt: "Send it." })),
|
|
46
|
+
).toBe(false);
|
|
47
|
+
expect(isDispatchable(fields({ agentChannel: "whatsapp", agentPrompt: "Send it." }))).toBe(false);
|
|
48
|
+
expect(
|
|
49
|
+
isDispatchable(fields({ agentChannel: "whatsapp", agentDestination: "+447700900123" })),
|
|
50
|
+
).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("is false when the action names a plugin without a tool, or a tool without a plugin", () => {
|
|
54
|
+
expect(isDispatchable(fields({ actionPlugin: "scheduling" }))).toBe(false);
|
|
55
|
+
expect(isDispatchable(fields({ actionTool: "schedule-list" }))).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("is false for a row carrying nothing", () => {
|
|
59
|
+
expect(isDispatchable(fields())).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
describe("dispatchGapReason", () => {
|
|
64
|
+
it("names every missing agent field, in field order, joined by +", () => {
|
|
65
|
+
expect(dispatchGapReason(fields({ agentPrompt: "Send it." }))).toBe("no-channel+destination");
|
|
66
|
+
expect(dispatchGapReason(fields({ agentChannel: "whatsapp" }))).toBe("no-destination+prompt");
|
|
67
|
+
expect(
|
|
68
|
+
dispatchGapReason(fields({ agentChannel: "whatsapp", agentDestination: "+447700900123" })),
|
|
69
|
+
).toBe("no-prompt");
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("reports the action gap when only action fields are present", () => {
|
|
73
|
+
expect(dispatchGapReason(fields({ actionPlugin: "scheduling" }))).toBe("no-action-tool");
|
|
74
|
+
expect(dispatchGapReason(fields({ actionTool: "schedule-list" }))).toBe("no-action-plugin");
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("reports no-dispatch-configured for a row carrying neither mode", () => {
|
|
78
|
+
expect(dispatchGapReason(fields())).toBe("no-dispatch-configured");
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("prefers the agent gap when both modes are partially set", () => {
|
|
82
|
+
// A partially-configured agent routine is almost always reaching for that
|
|
83
|
+
// mode; the fire-site behaviour this preserves is chooseDispatchMode's own
|
|
84
|
+
// agent-first ordering.
|
|
85
|
+
expect(dispatchGapReason(fields({ agentChannel: "whatsapp", actionPlugin: "scheduling" }))).toBe(
|
|
86
|
+
"no-destination+prompt",
|
|
87
|
+
);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
@@ -316,3 +316,62 @@ export function listDispatchDestinations(input: {
|
|
|
316
316
|
a.destination.localeCompare(b.destination);
|
|
317
317
|
return [...managers.sort(byDestination), ...admins.sort(byDestination), ...telegram];
|
|
318
318
|
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Task 2393 — the five fields that decide whether an automation `:Event` can
|
|
322
|
+
* deliver anything, and which one is missing when it cannot.
|
|
323
|
+
*
|
|
324
|
+
* Both consumers of this rule already import this package: the scheduling
|
|
325
|
+
* plugin at `plugins/scheduling/mcp/src/lib/agent-dispatch.ts` and `platform/ui`
|
|
326
|
+
* at `server/routes/admin/routines.ts`. So the rule lives here once rather than
|
|
327
|
+
* in the plugin with a copy on the UI side — there is no second definition for
|
|
328
|
+
* a drift test to police.
|
|
329
|
+
*
|
|
330
|
+
* `actionArgs` is deliberately absent: neither function reads it, and requiring
|
|
331
|
+
* callers to project it would make the arming routes read a column for nothing.
|
|
332
|
+
*/
|
|
333
|
+
export interface DispatchFields {
|
|
334
|
+
agentChannel: string | null;
|
|
335
|
+
agentDestination: string | null;
|
|
336
|
+
agentPrompt: string | null;
|
|
337
|
+
actionPlugin: string | null;
|
|
338
|
+
actionTool: string | null;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Can this row deliver? Channel AND destination AND prompt, or plugin AND tool.
|
|
343
|
+
* Exactly the condition under which `chooseDispatchMode` returns something
|
|
344
|
+
* other than `{kind:'none'}`, which is what makes a fire silent.
|
|
345
|
+
*/
|
|
346
|
+
export function isDispatchable(fields: DispatchFields): boolean {
|
|
347
|
+
if (fields.agentChannel && fields.agentDestination && fields.agentPrompt) return true;
|
|
348
|
+
return Boolean(fields.actionPlugin && fields.actionTool);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Task 2130 — which missing field makes this row undispatchable.
|
|
353
|
+
*
|
|
354
|
+
* A fixed `reason=no-destination` would be wrong roughly as often as it is
|
|
355
|
+
* right: an agent turn needs channel AND destination AND prompt, so the label
|
|
356
|
+
* sends an operator to bind a destination on a routine whose prompt is what is
|
|
357
|
+
* absent, and the next fire is just as silent. Agent dispatch is reported first
|
|
358
|
+
* because a partially-configured routine — any agent field set but not all
|
|
359
|
+
* three — is almost always reaching for that mode. A row with nothing set at
|
|
360
|
+
* all is an automation event carrying no dispatch of either kind.
|
|
361
|
+
*
|
|
362
|
+
* Moved here from `plugins/scheduling/mcp/src/scripts/agent-turn-dispatch.ts`
|
|
363
|
+
* (Task 2393), which re-exports it so its fire-site callers are unchanged.
|
|
364
|
+
*/
|
|
365
|
+
export function dispatchGapReason(fields: DispatchFields): string {
|
|
366
|
+
if (fields.agentChannel || fields.agentDestination || fields.agentPrompt) {
|
|
367
|
+
const missing: string[] = [];
|
|
368
|
+
if (!fields.agentChannel) missing.push("channel");
|
|
369
|
+
if (!fields.agentDestination) missing.push("destination");
|
|
370
|
+
if (!fields.agentPrompt) missing.push("prompt");
|
|
371
|
+
return `no-${missing.join("+")}`;
|
|
372
|
+
}
|
|
373
|
+
if (fields.actionPlugin || fields.actionTool) {
|
|
374
|
+
return fields.actionTool ? "no-action-plugin" : "no-action-tool";
|
|
375
|
+
}
|
|
376
|
+
return "no-dispatch-configured";
|
|
377
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: platform-architecture
|
|
3
3
|
description: Use when grounding any documented-surface claim about what Maxy ships — plugins, skills, specialists, install/deploy flows, internals. This is the install catalogue, not evidence of what is enabled on the current account. For install state on this account, call `capabilities-here`; for documented surface, cite the `Source:` URL inline.
|
|
4
|
-
content-hash: sha256:
|
|
4
|
+
content-hash: sha256:954efb55d2fa57e9dcf65b855682a265cc70e1b6739d32bce4a59fcd2b0297c6
|
|
5
5
|
brand: maxy-code
|
|
6
6
|
product-name: Maxy
|
|
7
7
|
---
|
|
@@ -212,6 +212,8 @@ There is no dashboard, no settings panel, no menus. Everything is done through c
|
|
|
212
212
|
|
|
213
213
|
The chat input auto-grows as you type — it expands to fit your message and shrinks back when you delete text. You can also drag the resize handle above the input to set a custom height.
|
|
214
214
|
|
|
215
|
+
Long conversations open at the newest messages rather than loading the whole history first, so a chat that has been running for months appears as quickly as a fresh one. Scroll up and the earlier messages load in a page at a time, with a brief "Loading earlier messages…" line while each one arrives. Your place in the conversation is kept as they load, so the message you were reading stays where it is instead of jumping. Keep scrolling and you will reach the very first message. This applies to the admin chat, the visitor-facing public chats, and the WhatsApp conversation reader. Searching a conversation still only looks at the messages already loaded, so scroll back first if you are hunting for something old.
|
|
216
|
+
|
|
215
217
|
The admin interface is a three-pane layout: a sidebar on the left with navigation (Sessions, People, Agents, Projects, Tasks, Artefacts) and your recent conversations; the chat in the middle; and an artefact pane on the right that opens when you select a document, click a project, or open Browser, Data, or Graph from the menu, holding the surface side-by-side with the conversation so the chat stays live while you work in it. At the very top of the sidebar — above the nav rows — a borderless row holds two controls: a "+ New session" button on the left that spawns a fresh Claude Code session, and a Mode trigger on the right showing the current permission mode (Ask, Accept edits, Plan, or Auto). The sidebar's vertical order is: new-session strip first, then the nav (Sessions, People, Agents, Projects, Tasks, Artefacts), then the sessions list, then the footer. Both controls render as plain text-plus-icon affordances with no surrounding rectangle. The "+ New session" button is a text-width hit target — its clickable area is exactly the icon plus label, not the whole row — and shows no hover fill; the only hover feedback is the pointer cursor. The Mode trigger is pushed flush to the right edge of the row. Clicking the Mode trigger opens a popover downward from the row whose header reads "Mode" and lists the four permission modes with the current selection check-marked. The sidebar's nav rows swap the list view in place: Sessions shows recent conversations, Projects shows your active work projects, and Artefacts lists every KnowledgeDocument plus this account's agent templates (your admin agent's IDENTITY, SOUL, and KNOWLEDGE files plus one entry per enabled specialist). Each recent session row carries a three-state indicator: three pulsing dots when the session is busy (currently processing a turn), a solid sage dot when it is idle (live PTY waiting for input), and a hollow ring when it is archived (PTY exited, JSONL on disk for audit). The list itself splits into three views via a segmented control above the rows: **Active** shows every live session, **Archived** shows every JSONL on disk whose PTY has exited, and **All** shows both. The view choice persists across reloads. An "Include subagents" toggle inside the Active view surfaces specialist spawns (database-operator, premium-plugin agents, anything spawned with a `--agent` flag) which are hidden by default so the list reflects what you started directly. Each row also carries a small uppercase badge — `admin` for operator-driven sessions, the specialist name (for example `db-op`) for background work — so the source of any row is unambiguous at a glance. The People, Agents, and Tasks rows are graph shortcuts: clicking each opens the artefact-pane Graph filtered to every Person, every public Agent, or every Task in your account respectively, with no side-list, because the graph itself is the result. Public agents become first-class graph entities the moment you create them, with edges to their IDENTITY/SOUL/KNOWLEDGE files, edges to every knowledge document they have access to, and edges from every conversation they have handled, so a single Agents click reveals the whole shape of who knows what and who has been talking to whom. Click an artefact row to open the document. KnowledgeDocuments and your admin agent's templates are editable: type in the document and changes save automatically; specialist agent templates are read-only because they ship with Maxy and your edits would be overwritten on the next install. PDF artefacts render inline so you can read them without leaving the pane. If your browser doesn't have a built-in PDF viewer, a Download button appears instead. Artefacts that have no readable file backing them (orphan rows, files removed from disk, unsupported content types) show a one-line banner explaining the skip instead of opening to a blank pane. Click a project row to open the Graph view focused on that project's neighbourhood; clicking a second project swaps the focus rather than stacking on top. The sidebar's right edge is drag-resizable on every shell-hosted admin page (Sessions root, Chat, Graph, Browser, and Data): drag the handle to widen or narrow the sidebar, and your chosen width is remembered across reloads and shared across all of them. AdminShell mounts the drag handle itself, so every route that wraps its content in `<AdminShell>` gets sidebar resize for free; the handle does not render in the mobile drawer. The chat and artefact divider is also drag-resizable: drag the line between the columns to make either side wider; double-click it to reset to half of the available width (viewport minus sidebar), clamped to the chat and artefact min-width floors. Your chosen width is remembered across reloads. The conversation column on the Chat page has its own width control: a small handle sits half way up the page just inside each side of the column, and dragging either one widens or narrows the reading measure. The column stays centred, so both handles do the same thing — dragging the left one out and the right one out by the same distance give the same width. It will not go below its default 760px and will not go wider than the chat panel itself; the messages, the input box and the jump-to-latest button all move together. Double-click either handle to go back to 760px. Your chosen width is remembered across reloads. The handles do not appear on a phone (below 640px), where the conversation already fills the width. On wider screens (>1280px) all three panes are visible. The sidebar narrows at 1280px, the artefact pane hides at 1080px (Browser, Data, and Graph then open as full-window pages instead), and the sidebar collapses to a 56px icon rail at 820px. On every viewport the chat header reads left to right as a triptych: a dedicated sidebar toggle (the panel-right icon, which swaps to panel-right-open when the sidebar is showing), the brand mark next to the title in the centre, and the menu burger on the right. This header toggle is the sole sidebar-toggle button; the sidebar itself no longer carries a duplicate. The burger opens the navigation flyout: Dashboard, Data, Graph, Browser, and Chat at the top — Dashboard routes back to `/`, so every satellite page keeps a one-click way home, and the Chat item carries the Claude mark rather than a generic icon — then Public (the agents list) between the two dividers, and below the second divider the version row, Disconnect Claude, and Log out. Tap the sidebar toggle to show or hide the sidebar: on phones (<720px) it slides the drawer in or out, on wider screens it collapses or expands the sidebar column. The brand mark in the centre is decorative; clicks go through the dedicated toggle so the affordance is unambiguous. The drawer animation only fires on tap (220ms slide in or out); resizing your window across the 720px boundary snaps the layout without animation, so you never see a half-open flash. At ≤640px the session metadata pane stacks each label above its value instead of the desktop two-column grid, and the row of action buttons (Open in new tab / Download JSONL / View JSONL / Rename / Pin / Archive / End or Purge) collapses behind a single Actions trigger that opens a popover upward from the foot of the pane. Breakpoint summary: >1280px = full sidebar + chat + artefact pane (drag-resizable divider); 1280px→1080px = sidebar narrows; 1080px→820px = artefact pane hides (Browser/Data/Graph open as full-window pages instead); 820px→720px = sidebar collapses to 56px icon rail; ≤720px = sidebar becomes off-canvas drawer (vertical stack of nav, recents list, foot, the same shape as the desktop sidebar, just on top of the chat instead of beside it).
|
|
216
218
|
|
|
217
219
|
Page titles are brand-aware: the browser tab shows your product name (e.g. `Real Agent` instead of `Maxy`) on every shell — chat, graph, and data — so a non-default brand never leaks the default name in tab strips or browser history.
|
|
@@ -3484,15 +3486,23 @@ The Routines surface (`/routines`) is the admin view of the account's
|
|
|
3484
3486
|
automation `:Event` nodes — the device's scheduled agent turns and tool
|
|
3485
3487
|
dispatches, which the Calendar surface deliberately excludes (`calendar.ts`
|
|
3486
3488
|
unions only appointment events, `actionPlugin IS NULL`). It renders one card per
|
|
3487
|
-
routine (title, its one-line description where it has
|
|
3488
|
-
|
|
3489
|
-
modal modeled on the calendar `EventDetailModal`.
|
|
3490
|
-
|
|
3491
|
-
|
|
3489
|
+
routine (title, human-readable schedule, its one-line description where it has
|
|
3490
|
+
one, next run, channel/destination or tool, status); a card opens a detail
|
|
3491
|
+
modal modeled on the calendar `EventDetailModal`.
|
|
3492
|
+
|
|
3493
|
+
Every card on the page is the same height, whatever its description says. The
|
|
3494
|
+
title takes its own row and truncates to one line with an ellipsis, with the
|
|
3495
|
+
full text on hover and in the modal; the schedule reads directly beneath it; the
|
|
3496
|
+
description is clamped to three lines; and the status line is pinned to the
|
|
3497
|
+
card's bottom edge, so a column of cards shares one baseline for "Next:".
|
|
3498
|
+
|
|
3499
|
+
A shipped routine is seeded with a name and a description, and the operator can
|
|
3500
|
+
rewrite either from the modal; a routine nobody has captioned renders with no
|
|
3501
|
+
description line and no placeholder. Editing either stamps the row
|
|
3492
3502
|
operator-owned, so the next roster refresh leaves the operator's wording alone,
|
|
3493
3503
|
and recomputes the row's search vector, which is built from the name and the
|
|
3494
|
-
description. A description is never dispatched: `agentPrompt` is the
|
|
3495
|
-
fire sends.
|
|
3504
|
+
description together. A description is never dispatched: `agentPrompt` is the
|
|
3505
|
+
only text a fire sends.
|
|
3496
3506
|
The read-only view shows two prose blocks, each under its own heading, in the
|
|
3497
3507
|
order **Description** then **Instruction sent to the agent**. Both use the same
|
|
3498
3508
|
header-above-prose shape, so neither reads as a different kind of thing from the
|
|
@@ -3511,7 +3521,10 @@ daily/weekly/monthly, day-of-week, day-of-month, time) that falls back to a
|
|
|
3511
3521
|
raw-cron field for patterns it cannot represent. The binding control appears on
|
|
3512
3522
|
an agent routine and on a routine with no dispatch at all; a tool-action
|
|
3513
3523
|
routine's dispatch stays read-only, because an agent binding takes precedence at
|
|
3514
|
-
fire time and would stop the tool running.
|
|
3524
|
+
fire time and would stop the tool running. The **Name** box is the first field
|
|
3525
|
+
in the edit form: it is bounded at 200 characters, Save is blocked while it is
|
|
3526
|
+
empty, and renaming stamps the row operator-owned so the next roster version
|
|
3527
|
+
bump cannot put the seeded name back.
|
|
3515
3528
|
|
|
3516
3529
|
**The status dot.** The card and the modal each carry a dot ahead of
|
|
3517
3530
|
the raw status word, so a grid of eight routines can be read without reading
|
|
@@ -3525,8 +3538,8 @@ render it through one `RoutineStatusDot`, which is what stops them drifting:
|
|
|
3525
3538
|
| `cancelled`, `completed` | solid grey (`--text-tertiary`) | deliberately stopped or finished |
|
|
3526
3539
|
| anything else, and `null` | grey ring, no fill | no reading taken |
|
|
3527
3540
|
|
|
3528
|
-
**The run recap.**
|
|
3529
|
-
|
|
3541
|
+
**The run recap.** The detail modal's **Runs** button opens that routine's run
|
|
3542
|
+
history, and it is the only way in: the card face carries no control. A run
|
|
3530
3543
|
shows what it sent — the message text itself, on the row and in full in the run
|
|
3531
3544
|
dialog — and a run that finished having sent nothing says so, which is a
|
|
3532
3545
|
different statement from a run whose outcome is not yet known. Both the routine
|
|
@@ -9,6 +9,18 @@ Invoked by the admin agent directly.
|
|
|
9
9
|
|
|
10
10
|
This is the platform's release timeline, newest first. Each entry shows the date it shipped and the version it shipped in, so you can tell the operator how current their install is. To compare, read the installed version from `capabilities-here` and match it against the versions below. Keep answers high level and in plain English; this is a summary, not a full commit log.
|
|
11
11
|
|
|
12
|
+
## 2026-08-03 (0.1.555)
|
|
13
|
+
|
|
14
|
+
- Long conversations now open at the most recent messages and load older ones as you scroll back, rather than loading the whole history at once.
|
|
15
|
+
- A routine that is switched on but has no way to deliver is now refused and marked on its card, instead of arming silently and never reaching you.
|
|
16
|
+
- A calendar entry with no date now shows rather than breaking the list it appears in, and a standing check counts them.
|
|
17
|
+
|
|
18
|
+
## 2026-08-03 (0.1.554)
|
|
19
|
+
|
|
20
|
+
- You can now rename a routine from its detail view, and your name is kept when the built-in list is next refreshed.
|
|
21
|
+
- Routine cards are now equal height with the title on its own row and past runs reached from the detail view rather than the card face.
|
|
22
|
+
- The sidebar menu can now be collapsed to an icon rail, and your choice is remembered.
|
|
23
|
+
|
|
12
24
|
## 2026-08-03 (0.1.553)
|
|
13
25
|
|
|
14
26
|
- Each routine now shows how it runs, what its precondition checks, and how often it fired in the last day, so a routine that skipped can be told apart from one that ran quietly.
|
|
@@ -99,15 +99,23 @@ The Routines surface (`/routines`) is the admin view of the account's
|
|
|
99
99
|
automation `:Event` nodes — the device's scheduled agent turns and tool
|
|
100
100
|
dispatches, which the Calendar surface deliberately excludes (`calendar.ts`
|
|
101
101
|
unions only appointment events, `actionPlugin IS NULL`). It renders one card per
|
|
102
|
-
routine (title, its one-line description where it has
|
|
103
|
-
|
|
104
|
-
modal modeled on the calendar `EventDetailModal`.
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
routine (title, human-readable schedule, its one-line description where it has
|
|
103
|
+
one, next run, channel/destination or tool, status); a card opens a detail
|
|
104
|
+
modal modeled on the calendar `EventDetailModal`.
|
|
105
|
+
|
|
106
|
+
Every card on the page is the same height, whatever its description says. The
|
|
107
|
+
title takes its own row and truncates to one line with an ellipsis, with the
|
|
108
|
+
full text on hover and in the modal; the schedule reads directly beneath it; the
|
|
109
|
+
description is clamped to three lines; and the status line is pinned to the
|
|
110
|
+
card's bottom edge, so a column of cards shares one baseline for "Next:".
|
|
111
|
+
|
|
112
|
+
A shipped routine is seeded with a name and a description, and the operator can
|
|
113
|
+
rewrite either from the modal; a routine nobody has captioned renders with no
|
|
114
|
+
description line and no placeholder. Editing either stamps the row
|
|
107
115
|
operator-owned, so the next roster refresh leaves the operator's wording alone,
|
|
108
116
|
and recomputes the row's search vector, which is built from the name and the
|
|
109
|
-
description. A description is never dispatched: `agentPrompt` is the
|
|
110
|
-
fire sends.
|
|
117
|
+
description together. A description is never dispatched: `agentPrompt` is the
|
|
118
|
+
only text a fire sends.
|
|
111
119
|
The read-only view shows two prose blocks, each under its own heading, in the
|
|
112
120
|
order **Description** then **Instruction sent to the agent**. Both use the same
|
|
113
121
|
header-above-prose shape, so neither reads as a different kind of thing from the
|
|
@@ -126,7 +134,10 @@ daily/weekly/monthly, day-of-week, day-of-month, time) that falls back to a
|
|
|
126
134
|
raw-cron field for patterns it cannot represent. The binding control appears on
|
|
127
135
|
an agent routine and on a routine with no dispatch at all; a tool-action
|
|
128
136
|
routine's dispatch stays read-only, because an agent binding takes precedence at
|
|
129
|
-
fire time and would stop the tool running.
|
|
137
|
+
fire time and would stop the tool running. The **Name** box is the first field
|
|
138
|
+
in the edit form: it is bounded at 200 characters, Save is blocked while it is
|
|
139
|
+
empty, and renaming stamps the row operator-owned so the next roster version
|
|
140
|
+
bump cannot put the seeded name back.
|
|
130
141
|
|
|
131
142
|
**The status dot.** The card and the modal each carry a dot ahead of
|
|
132
143
|
the raw status word, so a grid of eight routines can be read without reading
|
|
@@ -140,8 +151,8 @@ render it through one `RoutineStatusDot`, which is what stops them drifting:
|
|
|
140
151
|
| `cancelled`, `completed` | solid grey (`--text-tertiary`) | deliberately stopped or finished |
|
|
141
152
|
| anything else, and `null` | grey ring, no fill | no reading taken |
|
|
142
153
|
|
|
143
|
-
**The run recap.**
|
|
144
|
-
|
|
154
|
+
**The run recap.** The detail modal's **Runs** button opens that routine's run
|
|
155
|
+
history, and it is the only way in: the card face carries no control. A run
|
|
145
156
|
shows what it sent — the message text itself, on the row and in full in the run
|
|
146
157
|
dialog — and a run that finished having sent nothing says so, which is a
|
|
147
158
|
different statement from a run whose outcome is not yet known. Both the routine
|
|
@@ -85,6 +85,8 @@ There is no dashboard, no settings panel, no menus. Everything is done through c
|
|
|
85
85
|
|
|
86
86
|
The chat input auto-grows as you type — it expands to fit your message and shrinks back when you delete text. You can also drag the resize handle above the input to set a custom height.
|
|
87
87
|
|
|
88
|
+
Long conversations open at the newest messages rather than loading the whole history first, so a chat that has been running for months appears as quickly as a fresh one. Scroll up and the earlier messages load in a page at a time, with a brief "Loading earlier messages…" line while each one arrives. Your place in the conversation is kept as they load, so the message you were reading stays where it is instead of jumping. Keep scrolling and you will reach the very first message. This applies to the admin chat, the visitor-facing public chats, and the WhatsApp conversation reader. Searching a conversation still only looks at the messages already loaded, so scroll back first if you are hunting for something old.
|
|
89
|
+
|
|
88
90
|
The admin interface is a three-pane layout: a sidebar on the left with navigation (Sessions, People, Agents, Projects, Tasks, Artefacts) and your recent conversations; the chat in the middle; and an artefact pane on the right that opens when you select a document, click a project, or open Browser, Data, or Graph from the menu, holding the surface side-by-side with the conversation so the chat stays live while you work in it. At the very top of the sidebar — above the nav rows — a borderless row holds two controls: a "+ New session" button on the left that spawns a fresh Claude Code session, and a Mode trigger on the right showing the current permission mode (Ask, Accept edits, Plan, or Auto). The sidebar's vertical order is: new-session strip first, then the nav (Sessions, People, Agents, Projects, Tasks, Artefacts), then the sessions list, then the footer. Both controls render as plain text-plus-icon affordances with no surrounding rectangle. The "+ New session" button is a text-width hit target — its clickable area is exactly the icon plus label, not the whole row — and shows no hover fill; the only hover feedback is the pointer cursor. The Mode trigger is pushed flush to the right edge of the row. Clicking the Mode trigger opens a popover downward from the row whose header reads "Mode" and lists the four permission modes with the current selection check-marked. The sidebar's nav rows swap the list view in place: Sessions shows recent conversations, Projects shows your active work projects, and Artefacts lists every KnowledgeDocument plus this account's agent templates (your admin agent's IDENTITY, SOUL, and KNOWLEDGE files plus one entry per enabled specialist). Each recent session row carries a three-state indicator: three pulsing dots when the session is busy (currently processing a turn), a solid sage dot when it is idle (live PTY waiting for input), and a hollow ring when it is archived (PTY exited, JSONL on disk for audit). The list itself splits into three views via a segmented control above the rows: **Active** shows every live session, **Archived** shows every JSONL on disk whose PTY has exited, and **All** shows both. The view choice persists across reloads. An "Include subagents" toggle inside the Active view surfaces specialist spawns (database-operator, premium-plugin agents, anything spawned with a `--agent` flag) which are hidden by default so the list reflects what you started directly. Each row also carries a small uppercase badge — `admin` for operator-driven sessions, the specialist name (for example `db-op`) for background work — so the source of any row is unambiguous at a glance. The People, Agents, and Tasks rows are graph shortcuts: clicking each opens the artefact-pane Graph filtered to every Person, every public Agent, or every Task in your account respectively, with no side-list, because the graph itself is the result. Public agents become first-class graph entities the moment you create them, with edges to their IDENTITY/SOUL/KNOWLEDGE files, edges to every knowledge document they have access to, and edges from every conversation they have handled, so a single Agents click reveals the whole shape of who knows what and who has been talking to whom. Click an artefact row to open the document. KnowledgeDocuments and your admin agent's templates are editable: type in the document and changes save automatically; specialist agent templates are read-only because they ship with Maxy and your edits would be overwritten on the next install. PDF artefacts render inline so you can read them without leaving the pane. If your browser doesn't have a built-in PDF viewer, a Download button appears instead. Artefacts that have no readable file backing them (orphan rows, files removed from disk, unsupported content types) show a one-line banner explaining the skip instead of opening to a blank pane. Click a project row to open the Graph view focused on that project's neighbourhood; clicking a second project swaps the focus rather than stacking on top. The sidebar's right edge is drag-resizable on every shell-hosted admin page (Sessions root, Chat, Graph, Browser, and Data): drag the handle to widen or narrow the sidebar, and your chosen width is remembered across reloads and shared across all of them. AdminShell mounts the drag handle itself, so every route that wraps its content in `<AdminShell>` gets sidebar resize for free; the handle does not render in the mobile drawer. The chat and artefact divider is also drag-resizable: drag the line between the columns to make either side wider; double-click it to reset to half of the available width (viewport minus sidebar), clamped to the chat and artefact min-width floors. Your chosen width is remembered across reloads. The conversation column on the Chat page has its own width control: a small handle sits half way up the page just inside each side of the column, and dragging either one widens or narrows the reading measure. The column stays centred, so both handles do the same thing — dragging the left one out and the right one out by the same distance give the same width. It will not go below its default 760px and will not go wider than the chat panel itself; the messages, the input box and the jump-to-latest button all move together. Double-click either handle to go back to 760px. Your chosen width is remembered across reloads. The handles do not appear on a phone (below 640px), where the conversation already fills the width. On wider screens (>1280px) all three panes are visible. The sidebar narrows at 1280px, the artefact pane hides at 1080px (Browser, Data, and Graph then open as full-window pages instead), and the sidebar collapses to a 56px icon rail at 820px. On every viewport the chat header reads left to right as a triptych: a dedicated sidebar toggle (the panel-right icon, which swaps to panel-right-open when the sidebar is showing), the brand mark next to the title in the centre, and the menu burger on the right. This header toggle is the sole sidebar-toggle button; the sidebar itself no longer carries a duplicate. The burger opens the navigation flyout: Dashboard, Data, Graph, Browser, and Chat at the top — Dashboard routes back to `/`, so every satellite page keeps a one-click way home, and the Chat item carries the Claude mark rather than a generic icon — then Public (the agents list) between the two dividers, and below the second divider the version row, Disconnect Claude, and Log out. Tap the sidebar toggle to show or hide the sidebar: on phones (<720px) it slides the drawer in or out, on wider screens it collapses or expands the sidebar column. The brand mark in the centre is decorative; clicks go through the dedicated toggle so the affordance is unambiguous. The drawer animation only fires on tap (220ms slide in or out); resizing your window across the 720px boundary snaps the layout without animation, so you never see a half-open flash. At ≤640px the session metadata pane stacks each label above its value instead of the desktop two-column grid, and the row of action buttons (Open in new tab / Download JSONL / View JSONL / Rename / Pin / Archive / End or Purge) collapses behind a single Actions trigger that opens a popover upward from the foot of the pane. Breakpoint summary: >1280px = full sidebar + chat + artefact pane (drag-resizable divider); 1280px→1080px = sidebar narrows; 1080px→820px = artefact pane hides (Browser/Data/Graph open as full-window pages instead); 820px→720px = sidebar collapses to 56px icon rail; ≤720px = sidebar becomes off-canvas drawer (vertical stack of nav, recents list, foot, the same shape as the desktop sidebar, just on top of the chat instead of beside it).
|
|
89
91
|
|
|
90
92
|
Page titles are brand-aware: the browser tab shows your product name (e.g. `Real Agent` instead of `Maxy`) on every shell — chat, graph, and data — so a non-default brand never leaks the default name in tab strips or browser history.
|
|
@@ -17,6 +17,7 @@ import { resolveAndSyncConnectorBusy, syncConnectorBusy, } from "./tools/schedul
|
|
|
17
17
|
import { resolveConnector, spawnProviderCall } from "./lib/connector-freebusy.js";
|
|
18
18
|
import { closeDriver, getUserTimezone, getSession } from "./lib/neo4j.js";
|
|
19
19
|
import { formatCombined } from "./lib/time-format.js";
|
|
20
|
+
import { eventListLine, eventDetailText } from "./lib/schedule-render.js";
|
|
20
21
|
import { join, resolve } from "node:path";
|
|
21
22
|
// Cast to `any` to avoid TS2589. TypeScript hits its 50-level instantiation
|
|
22
23
|
// limit when accumulating typed tool signatures on a generic McpServer.
|
|
@@ -243,16 +244,9 @@ eagerTool(server, "schedule-list", "List the calendar: scheduled events (reminde
|
|
|
243
244
|
if (events.length === 0) {
|
|
244
245
|
return { content: [{ type: "text", text: "No events match the filters." }] };
|
|
245
246
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
const ends = e.endDate ? ` → ${formatCombined(e.endDate, timezone)}` : "";
|
|
250
|
-
return `MEETING — ${e.name} (${formatCombined(e.startDate, timezone)})${ends}${loc} (${e.eventId})`;
|
|
251
|
-
}
|
|
252
|
-
const recur = e.recurrence ? ` [recurring: ${e.recurrence}]` : "";
|
|
253
|
-
const next = e.nextRun ? ` next: ${formatCombined(e.nextRun, timezone)}` : "";
|
|
254
|
-
return `${(e.eventStatus ?? "scheduled").toUpperCase()} — ${e.name} (${formatCombined(e.startDate, timezone)})${loc}${recur}${next} (${e.eventId})`;
|
|
255
|
-
});
|
|
247
|
+
// Task 2393 — the row builder lives in lib/schedule-render.ts so it can be
|
|
248
|
+
// tested; this module connects a transport at import time and cannot be.
|
|
249
|
+
const lines = events.map((e) => eventListLine(e, timezone));
|
|
256
250
|
return { content: [{ type: "text", text: `${events.length} entr(ies):\n\n${lines.join("\n")}` }] };
|
|
257
251
|
}
|
|
258
252
|
catch (err) {
|
|
@@ -277,40 +271,9 @@ eagerTool(server, "schedule-get", "Fetch a single event or meeting with its full
|
|
|
277
271
|
if (!event) {
|
|
278
272
|
return { content: [{ type: "text", text: `Not found: ${eventId}` }] };
|
|
279
273
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
.join("\n")
|
|
284
|
-
: " (none)";
|
|
285
|
-
const parts = [
|
|
286
|
-
`${event.kind === "meeting" ? "Meeting" : "Event"}: ${event.name}`,
|
|
287
|
-
`ID: ${event.eventId}`,
|
|
288
|
-
event.eventStatus ? `Status: ${event.eventStatus}` : null,
|
|
289
|
-
event.description ? `Description: ${event.description}` : null,
|
|
290
|
-
`Starts: ${formatCombined(event.startDate, timezone)}`,
|
|
291
|
-
event.endDate ? `Ends: ${formatCombined(event.endDate, timezone)}` : null,
|
|
292
|
-
event.location ? `Location: ${event.location}` : null,
|
|
293
|
-
event.recurrence ? `Recurrence: ${event.recurrence}` : null,
|
|
294
|
-
event.timezone ? `Timezone: ${event.timezone}` : null,
|
|
295
|
-
event.nextRun ? `Next run: ${formatCombined(event.nextRun, timezone)}` : null,
|
|
296
|
-
event.lastTriggered ? `Last triggered: ${formatCombined(event.lastTriggered, timezone)}` : null,
|
|
297
|
-
event.skipNext ? `Skip next: yes` : null,
|
|
298
|
-
// Task 2136 — the last fire's real outcome, from the run record rather
|
|
299
|
-
// than the notes prose. `runCount` is present on every event (0
|
|
300
|
-
// included) so "never fired" is stated rather than inferred from a gap.
|
|
301
|
-
event.runCount !== undefined ? `Runs recorded: ${event.runCount}` : null,
|
|
302
|
-
event.lastRun
|
|
303
|
-
? `Last run: ${formatCombined(event.lastRun.startedAt, timezone)} — ${event.lastRun.status}` +
|
|
304
|
-
(event.lastRun.ranMs !== null ? ` (${event.lastRun.ranMs}ms)` : "") +
|
|
305
|
-
(event.lastRun.error ? ` — ${event.lastRun.error}` : "")
|
|
306
|
-
: null,
|
|
307
|
-
event.notes ? `\nNotes:\n${event.notes}` : null,
|
|
308
|
-
``,
|
|
309
|
-
`Relationships:\n${relLines}`,
|
|
310
|
-
``,
|
|
311
|
-
`Created: ${formatCombined(event.createdAt, timezone)} | Updated: ${formatCombined(event.updatedAt, timezone)}`,
|
|
312
|
-
].filter((line) => line !== null);
|
|
313
|
-
return { content: [{ type: "text", text: parts.join("\n") }] };
|
|
274
|
+
// Task 2393 — see schedule-list above: the detail builder lives in
|
|
275
|
+
// lib/schedule-render.ts so the NULL-startDate guard can be tested.
|
|
276
|
+
return { content: [{ type: "text", text: eventDetailText(event, timezone) }] };
|
|
314
277
|
}
|
|
315
278
|
catch (err) {
|
|
316
279
|
return {
|
|
@@ -515,6 +478,10 @@ eagerTool(server, "schedule-export-ics", "Export one or more scheduled events as
|
|
|
515
478
|
parts.push(`${result.rruleFallback} recurring event(s) expanded to individual occurrences`);
|
|
516
479
|
if (result.notFound.length > 0)
|
|
517
480
|
parts.push(`Not found: ${result.notFound.join(", ")}`);
|
|
481
|
+
// Task 2393 — named separately from Not found: these events exist, they
|
|
482
|
+
// just carry no start date, which iCalendar requires.
|
|
483
|
+
if (result.noStartDate.length > 0)
|
|
484
|
+
parts.push(`No start date, not exportable: ${result.noStartDate.join(", ")}`);
|
|
518
485
|
parts.push(`\nThe .ics is at ${result.outputPath}. Tell the operator that exact path and that it is in their Artefacts panel (downloadable), reachable on their file share if set up.`);
|
|
519
486
|
return { content: [{ type: "text", text: parts.join("\n") }] };
|
|
520
487
|
}
|