@rubytech/create-maxy-code 0.1.576 → 0.1.578
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/active-rules/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/active-rules/dist/index.js +32 -1
- package/payload/platform/lib/active-rules/dist/index.js.map +1 -1
- package/payload/platform/lib/active-rules/src/index.test.ts +52 -3
- package/payload/platform/lib/active-rules/src/index.ts +36 -2
- package/payload/platform/lib/dispatch-read/dist/allocate.d.ts +57 -0
- package/payload/platform/lib/dispatch-read/dist/allocate.d.ts.map +1 -0
- package/payload/platform/lib/dispatch-read/dist/allocate.js +33 -0
- package/payload/platform/lib/dispatch-read/dist/allocate.js.map +1 -0
- package/payload/platform/lib/dispatch-read/dist/index.d.ts +2 -0
- package/payload/platform/lib/dispatch-read/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/dispatch-read/dist/index.js +10 -1
- package/payload/platform/lib/dispatch-read/dist/index.js.map +1 -1
- package/payload/platform/lib/dispatch-read/src/__tests__/allocate.test.ts +41 -0
- package/payload/platform/lib/dispatch-read/src/allocate.ts +89 -0
- package/payload/platform/lib/dispatch-read/src/index.ts +14 -0
- package/payload/platform/lib/routine-templates/dist/index.d.ts +4 -4
- package/payload/platform/lib/routine-templates/dist/index.js +4 -4
- package/payload/platform/lib/routine-templates/src/index.ts +4 -4
- package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-compliance.test.sh +7 -2
- package/payload/platform/plugins/admin/hooks/prompt-optimiser-compliance.sh +8 -2
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +4 -2
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +17 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visit-status-write.test.ts +333 -22
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visits-scope.test.ts +262 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +126 -21
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visit-status.ts +142 -2
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visits.ts +118 -6
- package/payload/platform/plugins/dispatch/PLUGIN.md +2 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts +19 -50
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js +1 -28
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js.map +1 -1
- package/payload/platform/plugins/dispatch/skills/dispatch-page/SKILL.md +45 -6
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.css +60 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.html +13 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.js +203 -5
- package/payload/platform/plugins/docs/references/internals.md +1 -1
- package/payload/platform/plugins/docs/references/platform.md +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +0 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-path.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-path.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-path.test.js +19 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-path.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-register.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-register.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-register.test.js +110 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-register.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-verdict.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-verdict.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-verdict.test.js +22 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-verdict.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/index.js +19 -163
- package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts +9 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js +11 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.d.ts +30 -3
- package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.js +29 -4
- package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.d.ts +33 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.js +145 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.js.map +1 -0
- package/payload/platform/plugins/telegram/skills/configure/SKILL.md +4 -2
- package/payload/platform/services/telegram-channel/dist/notification.d.ts +35 -3
- package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/telegram-channel/dist/notification.js +38 -5
- package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
- package/payload/platform/services/telegram-channel/dist/server.js +1 -1
- package/payload/platform/services/telegram-channel/dist/server.js.map +1 -1
- package/payload/platform/services/webchat-channel/dist/notification.d.ts +2 -1
- package/payload/platform/services/webchat-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/webchat-channel/dist/notification.js.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +2 -2
- package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
- package/payload/server/public/activity.html +4 -4
- package/payload/server/public/agents.html +3 -3
- package/payload/server/public/assets/{AdminLoginScreens-BLGZEaKU.js → AdminLoginScreens-CAZ3DSwA.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-CAZ3DSwA.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-CAZ3DSwA.js.gz +0 -0
- package/payload/server/public/assets/{AdminShell-C_M7YE5Z.js → AdminShell-BLs5v0qF.js} +1 -1
- package/payload/server/public/assets/AdminShell-BLs5v0qF.js.br +0 -0
- package/payload/server/public/assets/AdminShell-BLs5v0qF.js.gz +0 -0
- package/payload/server/public/assets/{activity-BL6qbB9a.js → activity-BwPck2yT.js} +1 -1
- package/payload/server/public/assets/activity-BwPck2yT.js.br +0 -0
- package/payload/server/public/assets/activity-BwPck2yT.js.gz +0 -0
- package/payload/server/public/assets/{admin-jnJ3P2u4.js → admin-DjtOoabA.js} +1 -1
- package/payload/server/public/assets/admin-DjtOoabA.js.br +0 -0
- package/payload/server/public/assets/admin-DjtOoabA.js.gz +0 -0
- package/payload/server/public/assets/{agents-BzhfKZDN.js → agents-IQYaRvoh.js} +1 -1
- package/payload/server/public/assets/agents-IQYaRvoh.js.br +0 -0
- package/payload/server/public/assets/agents-IQYaRvoh.js.gz +0 -0
- package/payload/server/public/assets/{browser-C-6io2B9.js → browser-CPG8w8rQ.js} +1 -1
- package/payload/server/public/assets/browser-CPG8w8rQ.js.br +0 -0
- package/payload/server/public/assets/browser-CPG8w8rQ.js.gz +0 -0
- package/payload/server/public/assets/{calendar-Dt3gS88s.js → calendar-CRwrgNdq.js} +1 -1
- package/payload/server/public/assets/calendar-CRwrgNdq.js.br +0 -0
- package/payload/server/public/assets/calendar-CRwrgNdq.js.gz +0 -0
- package/payload/server/public/assets/chat-B7yZ4KLl.js +1 -0
- package/payload/server/public/assets/chat-B7yZ4KLl.js.br +3 -0
- package/payload/server/public/assets/chat-B7yZ4KLl.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-BzKUQqLy.js +1 -0
- package/payload/server/public/assets/chevron-left-BzKUQqLy.js.br +0 -0
- package/payload/server/public/assets/clock-BafWFNGo.js +1 -0
- package/payload/server/public/assets/clock-BafWFNGo.js.br +0 -0
- package/payload/server/public/assets/{copy-TkPJgllS.js → copy-JyiMTV0k.js} +1 -1
- package/payload/server/public/assets/copy-JyiMTV0k.js.br +0 -0
- package/payload/server/public/assets/copy-JyiMTV0k.js.gz +0 -0
- package/payload/server/public/assets/data-DHtGCVrl.js +1 -0
- package/payload/server/public/assets/data-DHtGCVrl.js.br +0 -0
- package/payload/server/public/assets/data-DHtGCVrl.js.gz +0 -0
- package/payload/server/public/assets/{file-text-DyAL2DCh.js → file-text-cnHv9ZS6.js} +1 -1
- package/payload/server/public/assets/file-text-cnHv9ZS6.js.br +0 -0
- package/payload/server/public/assets/file-text-cnHv9ZS6.js.gz +0 -0
- package/payload/server/public/assets/{graph-PiNIcCfX.js → graph-lFwEUDSH.js} +1 -1
- package/payload/server/public/assets/graph-lFwEUDSH.js.br +0 -0
- package/payload/server/public/assets/graph-lFwEUDSH.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-8jKFrLHn.js → graph-labels-C6qUA0vO.js} +1 -1
- package/payload/server/public/assets/graph-labels-C6qUA0vO.js.br +0 -0
- package/payload/server/public/assets/graph-labels-C6qUA0vO.js.gz +0 -0
- package/payload/server/public/assets/{operator-DKGKGzrb.js → operator-BdoEy5mh.js} +1 -1
- package/payload/server/public/assets/operator-BdoEy5mh.js.br +0 -0
- package/payload/server/public/assets/operator-BdoEy5mh.js.gz +0 -0
- package/payload/server/public/assets/{page-DXz_K10G.js → page-DMrnnXNA.js} +1 -1
- package/payload/server/public/assets/page-DMrnnXNA.js.br +0 -0
- package/payload/server/public/assets/page-DMrnnXNA.js.gz +0 -0
- package/payload/server/public/assets/{page-BU5vlY9Y.js → page-DeMikGYL.js} +1 -1
- package/payload/server/public/assets/page-DeMikGYL.js.br +0 -0
- package/payload/server/public/assets/page-DeMikGYL.js.gz +0 -0
- package/payload/server/public/assets/play-D6OAQVJ_.js +1 -0
- package/payload/server/public/assets/play-D6OAQVJ_.js.br +0 -0
- package/payload/server/public/assets/play-D6OAQVJ_.js.gz +0 -0
- package/payload/server/public/assets/{public-BmA3-jLj.js → public-B-X1Cxfw.js} +1 -1
- package/payload/server/public/assets/public-B-X1Cxfw.js.br +0 -0
- package/payload/server/public/assets/public-B-X1Cxfw.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-fCH0LSMq.js → rotate-ccw-DVFvQAHG.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-DVFvQAHG.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-DVFvQAHG.js.gz +0 -0
- package/payload/server/public/assets/{routines-BeFrmkls.js → routines-CgkkGJaS.js} +1 -1
- package/payload/server/public/assets/routines-CgkkGJaS.js.br +0 -0
- package/payload/server/public/assets/routines-CgkkGJaS.js.gz +0 -0
- package/payload/server/public/assets/{skills-mjls5HBa.js → skills-CW7gVcaG.js} +1 -1
- package/payload/server/public/assets/skills-CW7gVcaG.js.br +0 -0
- package/payload/server/public/assets/skills-CW7gVcaG.js.gz +0 -0
- package/payload/server/public/assets/{tasks-p6puHHD0.js → tasks-Ddjp0Rwh.js} +1 -1
- package/payload/server/public/assets/tasks-Ddjp0Rwh.js.br +0 -0
- package/payload/server/public/assets/tasks-Ddjp0Rwh.js.gz +0 -0
- package/payload/server/public/assets/{triangle-alert-CrZ1ewbd.js → triangle-alert-DUrUutX4.js} +1 -1
- package/payload/server/public/assets/triangle-alert-DUrUutX4.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-DUrUutX4.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-zOQNrIwd.js → useCopyFeedback-ClVINDrQ.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-ClVINDrQ.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-ClVINDrQ.js.gz +0 -0
- package/payload/server/public/assets/{useMediaQuery-BmG090FR.js → useMediaQuery-BUFkZYRs.js} +1 -1
- package/payload/server/public/assets/useMediaQuery-BUFkZYRs.js.br +0 -0
- package/payload/server/public/assets/{useMediaQuery-BmG090FR.js.gz → useMediaQuery-BUFkZYRs.js.gz} +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-9pf6FFJ-.js → useVoiceRecorder-DnyqQFet.js} +1 -1
- package/payload/server/public/assets/useVoiceRecorder-DnyqQFet.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DnyqQFet.js.gz +0 -0
- package/payload/server/public/assets/{wrench-k4GYG5rc.js → wrench-BW28s_d0.js} +1 -1
- package/payload/server/public/assets/wrench-BW28s_d0.js.br +0 -0
- package/payload/server/public/assets/wrench-BW28s_d0.js.gz +0 -0
- package/payload/server/public/browser.html +3 -3
- package/payload/server/public/calendar.html +6 -6
- package/payload/server/public/chat.html +12 -12
- package/payload/server/public/data.html +10 -10
- package/payload/server/public/graph.html +8 -8
- package/payload/server/public/index.html +12 -12
- package/payload/server/public/operator.html +13 -13
- package/payload/server/public/public.html +12 -12
- package/payload/server/public/routines.html +6 -6
- package/payload/server/public/skills.html +4 -4
- package/payload/server/public/tasks.html +5 -5
- package/payload/server/server.js +1014 -375
- package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.d.ts +0 -6
- package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.d.ts.map +0 -1
- package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.js +0 -102
- package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.js.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-routine-description.test.d.ts +0 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-routine-description.test.d.ts.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-routine-description.test.js +0 -87
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-routine-description.test.js.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.d.ts +0 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.d.ts.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.js +0 -79
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.js.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-routine-description.d.ts +0 -35
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-routine-description.d.ts.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-routine-description.js +0 -56
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-routine-description.js.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts +0 -24
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js +0 -87
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js.map +0 -1
- package/payload/server/public/assets/AdminLoginScreens-BLGZEaKU.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-BLGZEaKU.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-C_M7YE5Z.js.br +0 -0
- package/payload/server/public/assets/AdminShell-C_M7YE5Z.js.gz +0 -0
- package/payload/server/public/assets/activity-BL6qbB9a.js.br +0 -0
- package/payload/server/public/assets/activity-BL6qbB9a.js.gz +0 -0
- package/payload/server/public/assets/admin-jnJ3P2u4.js.br +0 -0
- package/payload/server/public/assets/admin-jnJ3P2u4.js.gz +0 -0
- package/payload/server/public/assets/agents-BzhfKZDN.js.br +0 -0
- package/payload/server/public/assets/agents-BzhfKZDN.js.gz +0 -0
- package/payload/server/public/assets/browser-C-6io2B9.js.br +0 -0
- package/payload/server/public/assets/browser-C-6io2B9.js.gz +0 -0
- package/payload/server/public/assets/calendar-Dt3gS88s.js.br +0 -0
- package/payload/server/public/assets/calendar-Dt3gS88s.js.gz +0 -0
- package/payload/server/public/assets/chat-IUOvVkL-.js +0 -1
- package/payload/server/public/assets/chat-IUOvVkL-.js.br +0 -1
- package/payload/server/public/assets/chat-IUOvVkL-.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-DSzR9zR7.js +0 -1
- package/payload/server/public/assets/chevron-left-DSzR9zR7.js.br +0 -0
- package/payload/server/public/assets/clock-C5xE5p2I.js +0 -1
- package/payload/server/public/assets/clock-C5xE5p2I.js.br +0 -0
- package/payload/server/public/assets/copy-TkPJgllS.js.br +0 -0
- package/payload/server/public/assets/copy-TkPJgllS.js.gz +0 -0
- package/payload/server/public/assets/data-Bhv0Pvfl.js +0 -1
- package/payload/server/public/assets/data-Bhv0Pvfl.js.br +0 -0
- package/payload/server/public/assets/data-Bhv0Pvfl.js.gz +0 -0
- package/payload/server/public/assets/file-text-DyAL2DCh.js.br +0 -0
- package/payload/server/public/assets/file-text-DyAL2DCh.js.gz +0 -0
- package/payload/server/public/assets/graph-PiNIcCfX.js.br +0 -0
- package/payload/server/public/assets/graph-PiNIcCfX.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-8jKFrLHn.js.br +0 -0
- package/payload/server/public/assets/graph-labels-8jKFrLHn.js.gz +0 -0
- package/payload/server/public/assets/operator-DKGKGzrb.js.br +0 -0
- package/payload/server/public/assets/operator-DKGKGzrb.js.gz +0 -0
- package/payload/server/public/assets/page-BU5vlY9Y.js.br +0 -0
- package/payload/server/public/assets/page-BU5vlY9Y.js.gz +0 -0
- package/payload/server/public/assets/page-DXz_K10G.js.br +0 -0
- package/payload/server/public/assets/page-DXz_K10G.js.gz +0 -0
- package/payload/server/public/assets/play-CmSyYrB6.js +0 -1
- package/payload/server/public/assets/play-CmSyYrB6.js.br +0 -0
- package/payload/server/public/assets/play-CmSyYrB6.js.gz +0 -0
- package/payload/server/public/assets/public-BmA3-jLj.js.br +0 -0
- package/payload/server/public/assets/public-BmA3-jLj.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-fCH0LSMq.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-fCH0LSMq.js.gz +0 -0
- package/payload/server/public/assets/routines-BeFrmkls.js.br +0 -0
- package/payload/server/public/assets/routines-BeFrmkls.js.gz +0 -0
- package/payload/server/public/assets/skills-mjls5HBa.js.br +0 -0
- package/payload/server/public/assets/skills-mjls5HBa.js.gz +0 -0
- package/payload/server/public/assets/tasks-p6puHHD0.js.br +0 -0
- package/payload/server/public/assets/tasks-p6puHHD0.js.gz +0 -0
- package/payload/server/public/assets/triangle-alert-CrZ1ewbd.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CrZ1ewbd.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-zOQNrIwd.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-zOQNrIwd.js.gz +0 -0
- package/payload/server/public/assets/useMediaQuery-BmG090FR.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-9pf6FFJ-.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-9pf6FFJ-.js.gz +0 -0
- package/payload/server/public/assets/wrench-k4GYG5rc.js.br +0 -0
- package/payload/server/public/assets/wrench-k4GYG5rc.js.gz +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-visit-instants.d.ts","sourceRoot":"","sources":["../../src/scripts/converge-visit-instants.ts"],"names":[],"mappings":"AAqCA,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAqEtE"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Task 2513 — one-shot convergence of `:Visit.startDate` and `:Visit.endDate`
|
|
3
|
-
* onto canonical UTC.
|
|
4
|
-
*
|
|
5
|
-
* Run by the installer immediately after `seed-neo4j.sh`, beside Task 2213's
|
|
6
|
-
* `:Event` convergence. It is an installer step, not a
|
|
7
|
-
* `platform/scripts/backfill-*`, because nothing invokes anything in that
|
|
8
|
-
* directory: those run only when an operator SSHes in, which leaves the rows
|
|
9
|
-
* wrong on every box nobody visits. The shape follows Task 1623's
|
|
10
|
-
* `converge-client-admins.ts` — "reaching all installs and brands without a
|
|
11
|
-
* per-box script".
|
|
12
|
-
*
|
|
13
|
-
* It needs no connection code of its own. `dispatch-read`'s `withSession`
|
|
14
|
-
* already refuses to default `NEO4J_URI`, which is what keeps a co-resident
|
|
15
|
-
* brand's graph untouched, and resolves the password from `PLATFORM_ROOT`.
|
|
16
|
-
*
|
|
17
|
-
* It imports the same `normaliseInstant` the writer uses, so the migration and
|
|
18
|
-
* the writer cannot disagree about what canonical means.
|
|
19
|
-
*
|
|
20
|
-
* PLATFORM_ROOT=... NEO4J_URI=... node dist/scripts/converge-visit-instants.js
|
|
21
|
-
*/
|
|
22
|
-
import { resolve } from "node:path";
|
|
23
|
-
import { isCanonicalInstant, normaliseInstant, } from "../../../../../lib/canonical-instant/dist/index.js";
|
|
24
|
-
import { resolveAccountZone, withSession } from "../../../../../lib/dispatch-read/dist/index.js";
|
|
25
|
-
import { enumerateValidAccountIds } from "../../../../../lib/account-enumeration/dist/index.js";
|
|
26
|
-
const TAG = "[dispatch]";
|
|
27
|
-
export async function convergeVisitInstants(accountIds) {
|
|
28
|
-
let scanned = 0;
|
|
29
|
-
let rewritten = 0;
|
|
30
|
-
let unparseable = 0;
|
|
31
|
-
for (const accountId of accountIds) {
|
|
32
|
-
const zone = await resolveAccountZone(accountId);
|
|
33
|
-
const rows = await withSession(async (session) => {
|
|
34
|
-
const r = await session.run(`MATCH (v:Visit {accountId: $accountId})
|
|
35
|
-
RETURN v.visitId AS visitId, v.startDate AS startDate, v.endDate AS endDate`, { accountId });
|
|
36
|
-
return r.records.map((g) => ({
|
|
37
|
-
visitId: String(g.get("visitId")),
|
|
38
|
-
startDate: g.get("startDate") ?? null,
|
|
39
|
-
endDate: g.get("endDate") ?? null,
|
|
40
|
-
}));
|
|
41
|
-
});
|
|
42
|
-
for (const row of rows) {
|
|
43
|
-
scanned++;
|
|
44
|
-
// A NULL instant is not a defect: a visit can carry no end. Only a stored
|
|
45
|
-
// value that is not canonical is in scope.
|
|
46
|
-
const needsStart = row.startDate !== null && !isCanonicalInstant(row.startDate);
|
|
47
|
-
const needsEnd = row.endDate !== null && !isCanonicalInstant(row.endDate);
|
|
48
|
-
if (!needsStart && !needsEnd)
|
|
49
|
-
continue;
|
|
50
|
-
let startOut = row.startDate;
|
|
51
|
-
let endOut = row.endDate;
|
|
52
|
-
try {
|
|
53
|
-
if (needsStart)
|
|
54
|
-
startOut = normaliseInstant(row.startDate, zone);
|
|
55
|
-
if (needsEnd)
|
|
56
|
-
endOut = normaliseInstant(row.endDate, zone);
|
|
57
|
-
}
|
|
58
|
-
catch (err) {
|
|
59
|
-
// Counted apart from `rewritten`, always. A row nobody could fix must
|
|
60
|
-
// never be reported as fixed.
|
|
61
|
-
unparseable++;
|
|
62
|
-
console.error(`${TAG} op=migration-refused visitId=${row.visitId} account=${accountId} ` +
|
|
63
|
-
`startIn=${row.startDate ?? "-"} endIn=${row.endDate ?? "-"} tz=${zone ?? "none"} ` +
|
|
64
|
-
`detail=${err instanceof Error ? err.message : String(err)}`);
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
await withSession(async (session) => {
|
|
68
|
-
await session.run(`MATCH (v:Visit {accountId: $accountId, visitId: $visitId})
|
|
69
|
-
SET v.startDate = $startDate, v.endDate = $endDate`, { accountId, visitId: row.visitId, startDate: startOut, endDate: endOut });
|
|
70
|
-
});
|
|
71
|
-
rewritten++;
|
|
72
|
-
console.error(`${TAG} op=rewrite visitId=${row.visitId} account=${accountId} ` +
|
|
73
|
-
`startIn=${row.startDate ?? "-"} startOut=${startOut ?? "-"} ` +
|
|
74
|
-
`endIn=${row.endDate ?? "-"} endOut=${endOut ?? "-"} tz=${zone ?? "none"}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// Printed even when nothing changed. A run that says nothing is
|
|
78
|
-
// indistinguishable from a run that never happened.
|
|
79
|
-
console.error(`${TAG} op=start-migration scanned=${scanned} rewritten=${rewritten} unparseable=${unparseable}`);
|
|
80
|
-
return { scanned, rewritten, unparseable };
|
|
81
|
-
}
|
|
82
|
-
async function main() {
|
|
83
|
-
// The accounts directory is derived from PLATFORM_ROOT, which is what the
|
|
84
|
-
// installer exports. `getAccountsDirFromEnv` is NOT used: it reads
|
|
85
|
-
// MAXY_PLATFORM_ROOT and loud-throws when unset, so calling it here would
|
|
86
|
-
// abort the migration on every install. Same resolution as
|
|
87
|
-
// `listLocalAccountIds` in the scheduling plugin's dispatcher-env.
|
|
88
|
-
const root = process.env.PLATFORM_ROOT;
|
|
89
|
-
if (!root) {
|
|
90
|
-
throw new Error("PLATFORM_ROOT environment variable is required");
|
|
91
|
-
}
|
|
92
|
-
await convergeVisitInstants(enumerateValidAccountIds(resolve(root, "..", "data/accounts")));
|
|
93
|
-
}
|
|
94
|
-
// Entry point only when executed directly, so the test can import the function
|
|
95
|
-
// without running a migration.
|
|
96
|
-
if (process.argv[1] && process.argv[1].endsWith("converge-visit-instants.js")) {
|
|
97
|
-
main().catch((err) => {
|
|
98
|
-
console.error(`${TAG} op=migration-fatal detail=${err instanceof Error ? err.message : String(err)}`);
|
|
99
|
-
process.exit(1);
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=converge-visit-instants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-visit-instants.js","sourceRoot":"","sources":["../../src/scripts/converge-visit-instants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-routine-description.test.d.ts","sourceRoot":"","sources":["../../../src/scripts/__tests__/converge-routine-description.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
// @vitest-environment node
|
|
2
|
-
// Task 2361. The convergence must prefer a description the operator or the agent
|
|
3
|
-
// wrote over the template's, must remove the old property, and must report zero
|
|
4
|
-
// on a second run — a migration that cannot say "nothing left to do" is
|
|
5
|
-
// indistinguishable from one that never ran.
|
|
6
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
7
|
-
import { convergeRoutineDescriptions } from "../converge-routine-description.js";
|
|
8
|
-
const ACCT = "aaaaaaaa-1111-4111-8111-111111111111";
|
|
9
|
-
/** A driver over an in-memory row set. One statement both writes and removes, so
|
|
10
|
-
* the fake applies the coalesce and the REMOVE itself and returns the count the
|
|
11
|
-
* real statement returns. */
|
|
12
|
-
function fakeDriver(rows, capture) {
|
|
13
|
-
return {
|
|
14
|
-
session: () => ({
|
|
15
|
-
run: vi.fn(async (cypher) => {
|
|
16
|
-
capture?.cypher.push(String(cypher));
|
|
17
|
-
const touched = rows.filter((r) => r.routineDescription !== null);
|
|
18
|
-
for (const r of touched) {
|
|
19
|
-
r.description = r.description ?? r.routineDescription;
|
|
20
|
-
r.routineDescription = null;
|
|
21
|
-
}
|
|
22
|
-
return { records: [{ get: () => touched.length }] };
|
|
23
|
-
}),
|
|
24
|
-
close: vi.fn(async () => { }),
|
|
25
|
-
}),
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
let errSpy;
|
|
29
|
-
function lines() {
|
|
30
|
-
return errSpy.mock.calls.map((c) => String(c[0]));
|
|
31
|
-
}
|
|
32
|
-
beforeEach(() => {
|
|
33
|
-
errSpy = vi.spyOn(console, "error").mockImplementation(() => { });
|
|
34
|
-
});
|
|
35
|
-
afterEach(() => {
|
|
36
|
-
errSpy.mockRestore();
|
|
37
|
-
});
|
|
38
|
-
describe("convergeRoutineDescriptions", () => {
|
|
39
|
-
it("keeps an operator-written description and takes the template's where there is none", async () => {
|
|
40
|
-
const rows = [
|
|
41
|
-
{
|
|
42
|
-
eventId: "e-operator",
|
|
43
|
-
description: "The operator's own words.",
|
|
44
|
-
routineDescription: "Template words.",
|
|
45
|
-
},
|
|
46
|
-
{ eventId: "e-template", description: null, routineDescription: "Template words." },
|
|
47
|
-
{ eventId: "e-neither", description: null, routineDescription: null },
|
|
48
|
-
];
|
|
49
|
-
const r = await convergeRoutineDescriptions(fakeDriver(rows), [ACCT]);
|
|
50
|
-
expect(rows.find((x) => x.eventId === "e-operator").description).toBe("The operator's own words.");
|
|
51
|
-
expect(rows.find((x) => x.eventId === "e-template").description).toBe("Template words.");
|
|
52
|
-
expect(rows.find((x) => x.eventId === "e-neither").description).toBeNull();
|
|
53
|
-
expect(rows.every((x) => x.routineDescription === null)).toBe(true);
|
|
54
|
-
expect(r.converged).toBe(2);
|
|
55
|
-
});
|
|
56
|
-
it("uses coalesce so the precedence is in the statement, not in a loop", async () => {
|
|
57
|
-
// The precedence is the whole point of the migration, and a per-row loop
|
|
58
|
-
// could get it right for the rows the test happens to supply while the
|
|
59
|
-
// statement got it wrong. Assert the statement.
|
|
60
|
-
const capture = { cypher: [] };
|
|
61
|
-
await convergeRoutineDescriptions(fakeDriver([], capture), [ACCT]);
|
|
62
|
-
expect(capture.cypher[0]).toContain("SET e.description = coalesce(e.description, e.routineDescription)");
|
|
63
|
-
expect(capture.cypher[0]).toContain("REMOVE e.routineDescription");
|
|
64
|
-
expect(capture.cypher[0]).toContain("e.accountId IN $localAccountIds");
|
|
65
|
-
});
|
|
66
|
-
it("reports zero on a second run and writes nothing", async () => {
|
|
67
|
-
const rows = [
|
|
68
|
-
{ eventId: "e-done", description: "Already here.", routineDescription: null },
|
|
69
|
-
];
|
|
70
|
-
expect((await convergeRoutineDescriptions(fakeDriver(rows), [ACCT])).converged).toBe(0);
|
|
71
|
-
expect(rows[0].description).toBe("Already here.");
|
|
72
|
-
});
|
|
73
|
-
it("is a no-op with no local accounts, so a shared Neo4j is never swept", async () => {
|
|
74
|
-
const rows = [{ eventId: "e-foreign", description: null, routineDescription: "Theirs." }];
|
|
75
|
-
expect((await convergeRoutineDescriptions(fakeDriver(rows), [])).converged).toBe(0);
|
|
76
|
-
expect(rows[0].routineDescription).toBe("Theirs.");
|
|
77
|
-
});
|
|
78
|
-
it("prints op=done even when it converged nothing", async () => {
|
|
79
|
-
await convergeRoutineDescriptions(fakeDriver([]), [ACCT]);
|
|
80
|
-
expect(lines()).toContain("[converge-routine-description] op=done converged=0");
|
|
81
|
-
});
|
|
82
|
-
it("prints op=done with a reason when there are no local accounts", async () => {
|
|
83
|
-
await convergeRoutineDescriptions(fakeDriver([]), []);
|
|
84
|
-
expect(lines()).toContain("[converge-routine-description] op=done converged=0 reason=no-local-accounts");
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
//# sourceMappingURL=converge-routine-description.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-routine-description.test.js","sourceRoot":"","sources":["../../../src/scripts/__tests__/converge-routine-description.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-startdate-utc.test.d.ts","sourceRoot":"","sources":["../../../src/scripts/__tests__/converge-startdate-utc.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
// Task 2213. The migration must be idempotent and must never guess a zone.
|
|
2
|
-
import { describe, it, expect, vi } from "vitest";
|
|
3
|
-
import { convergeStartDates } from "../converge-startdate-utc.js";
|
|
4
|
-
const ACCT = "acct-2213-aaaa";
|
|
5
|
-
/** A driver over an in-memory row set; SET writes mutate the rows. */
|
|
6
|
-
function fakeDriver(rows) {
|
|
7
|
-
return {
|
|
8
|
-
session: () => ({
|
|
9
|
-
run: vi.fn(async (cypher, params) => {
|
|
10
|
-
if (String(cypher).includes("SET e.startDate")) {
|
|
11
|
-
const row = rows.find((r) => r.eventId === params.eventId);
|
|
12
|
-
if (row)
|
|
13
|
-
row.startDate = params.startDate;
|
|
14
|
-
return { records: [] };
|
|
15
|
-
}
|
|
16
|
-
return {
|
|
17
|
-
records: rows
|
|
18
|
-
.filter((r) => r.startDate !== null)
|
|
19
|
-
.map((r) => ({ get: (k) => r[k] })),
|
|
20
|
-
};
|
|
21
|
-
}),
|
|
22
|
-
close: vi.fn(async () => { }),
|
|
23
|
-
}),
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
describe("convergeStartDates", () => {
|
|
27
|
-
it("rewrites every non-canonical form and leaves canonical and null alone", async () => {
|
|
28
|
-
const rows = [
|
|
29
|
-
{ eventId: "e-offset", startDate: "2026-07-06T09:50:00+01:00", timezone: "Europe/London" },
|
|
30
|
-
{ eventId: "e-zoneless", startDate: "2026-07-20T09:00:00", timezone: "Europe/London" },
|
|
31
|
-
{
|
|
32
|
-
eventId: "e-ms-offset",
|
|
33
|
-
startDate: "2026-08-02T19:00:00.000+01:00",
|
|
34
|
-
timezone: "Europe/London",
|
|
35
|
-
},
|
|
36
|
-
{ eventId: "e-canonical", startDate: "2026-06-28T05:00:00.000Z", timezone: "UTC" },
|
|
37
|
-
{ eventId: "e-null", startDate: null, timezone: "Europe/London" },
|
|
38
|
-
];
|
|
39
|
-
const r = await convergeStartDates(fakeDriver(rows), [ACCT]);
|
|
40
|
-
expect(rows.find((x) => x.eventId === "e-offset").startDate).toBe("2026-07-06T08:50:00.000Z");
|
|
41
|
-
expect(rows.find((x) => x.eventId === "e-zoneless").startDate).toBe("2026-07-20T08:00:00.000Z");
|
|
42
|
-
expect(rows.find((x) => x.eventId === "e-ms-offset").startDate).toBe("2026-08-02T18:00:00.000Z");
|
|
43
|
-
expect(rows.find((x) => x.eventId === "e-canonical").startDate).toBe("2026-06-28T05:00:00.000Z");
|
|
44
|
-
expect(rows.find((x) => x.eventId === "e-null").startDate).toBeNull();
|
|
45
|
-
expect(r.rewritten).toBe(3);
|
|
46
|
-
});
|
|
47
|
-
it("is idempotent — a second run rewrites nothing", async () => {
|
|
48
|
-
const rows = [
|
|
49
|
-
{ eventId: "e-offset", startDate: "2026-07-06T09:50:00+01:00", timezone: "Europe/London" },
|
|
50
|
-
];
|
|
51
|
-
const driver = fakeDriver(rows);
|
|
52
|
-
await convergeStartDates(driver, [ACCT]);
|
|
53
|
-
const second = await convergeStartDates(driver, [ACCT]);
|
|
54
|
-
expect(second.rewritten).toBe(0);
|
|
55
|
-
expect(rows[0].startDate).toBe("2026-07-06T08:50:00.000Z");
|
|
56
|
-
});
|
|
57
|
-
it("refuses a zoneless row with no timezone instead of guessing", async () => {
|
|
58
|
-
const rows = [
|
|
59
|
-
{ eventId: "e-nozone", startDate: "2026-07-20T09:00:00", timezone: null },
|
|
60
|
-
];
|
|
61
|
-
const err = vi.spyOn(console, "error").mockImplementation(() => { });
|
|
62
|
-
const r = await convergeStartDates(fakeDriver(rows), [ACCT]);
|
|
63
|
-
expect(r.refused).toBe(1);
|
|
64
|
-
expect(rows[0].startDate).toBe("2026-07-20T09:00:00");
|
|
65
|
-
expect(err.mock.calls.map(String).some((l) => l.includes("op=refuse") && l.includes("e-nozone"))).toBe(true);
|
|
66
|
-
err.mockRestore();
|
|
67
|
-
});
|
|
68
|
-
it("prints a summary even when it changes nothing", async () => {
|
|
69
|
-
const err = vi.spyOn(console, "error").mockImplementation(() => { });
|
|
70
|
-
await convergeStartDates(fakeDriver([]), [ACCT]);
|
|
71
|
-
expect(err.mock.calls.map(String).some((l) => l.includes("op=done") && l.includes("rewritten=0"))).toBe(true);
|
|
72
|
-
err.mockRestore();
|
|
73
|
-
});
|
|
74
|
-
it("is a no-op with no local accounts", async () => {
|
|
75
|
-
const r = await convergeStartDates({ session: vi.fn() }, []);
|
|
76
|
-
expect(r).toEqual({ scanned: 0, rewritten: 0, refused: 0 });
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
//# sourceMappingURL=converge-startdate-utc.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-startdate-utc.test.js","sourceRoot":"","sources":["../../../src/scripts/__tests__/converge-startdate-utc.test.ts"],"names":[],"mappings":"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"}
|
package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-routine-description.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Task 2361 — one-shot convergence of the routine caption onto
|
|
3
|
-
* `:Event.description`.
|
|
4
|
-
*
|
|
5
|
-
* Two properties held a routine's description and neither reached both a writer
|
|
6
|
-
* and a reader. `routineDescription` was written only by the roster seed and
|
|
7
|
-
* drawn only on the routines card, and the PATCH route refused it, so no
|
|
8
|
-
* operator could ever write one. `description` was written only by
|
|
9
|
-
* `schedule-event` and `schedule-update`, fed the row's search embedding, and
|
|
10
|
-
* reached no routines surface at all. `description` survives, because the
|
|
11
|
-
* operator and the agent can both write it and the calendar route already reads
|
|
12
|
-
* it.
|
|
13
|
-
*
|
|
14
|
-
* `coalesce` is the whole point: where a row carries both, the one the operator
|
|
15
|
-
* or the agent wrote wins over the template's. Expressing the precedence in the
|
|
16
|
-
* statement rather than in a per-row loop is deliberate — there is no decision to
|
|
17
|
-
* make per row, and a loop would be a second place for the rule to be wrong.
|
|
18
|
-
*
|
|
19
|
-
* Run by the installer immediately after `seed-neo4j.sh`, with the same
|
|
20
|
-
* NEO4J_URI / NEO4J_PASSWORD env that step already builds. It is an installer
|
|
21
|
-
* step, not a script under `platform/scripts`, for the reason the sibling
|
|
22
|
-
* `converge-startdate-utc.ts` records: nothing invokes anything in that
|
|
23
|
-
* directory except an operator over SSH, which leaves the rows wrong on every
|
|
24
|
-
* box nobody visits.
|
|
25
|
-
*
|
|
26
|
-
* Scoped to this install's accounts, so a co-resident brand sharing one Neo4j is
|
|
27
|
-
* never touched.
|
|
28
|
-
*
|
|
29
|
-
* PLATFORM_ROOT=... NEO4J_URI=... node dist/scripts/converge-routine-description.js
|
|
30
|
-
*/
|
|
31
|
-
import type { Driver } from "neo4j-driver";
|
|
32
|
-
export declare function convergeRoutineDescriptions(driver: Driver, localAccountIds: string[]): Promise<{
|
|
33
|
-
converged: number;
|
|
34
|
-
}>;
|
|
35
|
-
//# sourceMappingURL=converge-routine-description.d.ts.map
|
package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-routine-description.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-routine-description.d.ts","sourceRoot":"","sources":["../../src/scripts/converge-routine-description.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAuChC"}
|
package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-routine-description.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { connectNeo4j, listLocalAccountIds } from "../lib/dispatcher-env.js";
|
|
2
|
-
export async function convergeRoutineDescriptions(driver, localAccountIds) {
|
|
3
|
-
if (localAccountIds.length === 0) {
|
|
4
|
-
// Printed even here. An install that resolved no accounts must not look the
|
|
5
|
-
// same as one where the convergence never ran, and the reason is what tells
|
|
6
|
-
// the two apart.
|
|
7
|
-
console.error("[converge-routine-description] op=done converged=0 reason=no-local-accounts");
|
|
8
|
-
return { converged: 0 };
|
|
9
|
-
}
|
|
10
|
-
const session = driver.session();
|
|
11
|
-
let converged = 0;
|
|
12
|
-
try {
|
|
13
|
-
const res = await session.run(`MATCH (e:Event)
|
|
14
|
-
WHERE e.accountId IN $localAccountIds AND e.routineDescription IS NOT NULL
|
|
15
|
-
SET e.description = coalesce(e.description, e.routineDescription)
|
|
16
|
-
REMOVE e.routineDescription
|
|
17
|
-
RETURN count(e) AS converged`, { localAccountIds });
|
|
18
|
-
const raw = res.records[0]?.get("converged");
|
|
19
|
-
converged =
|
|
20
|
-
typeof raw === "number"
|
|
21
|
-
? raw
|
|
22
|
-
: raw && typeof raw.toNumber === "function"
|
|
23
|
-
? raw.toNumber()
|
|
24
|
-
: Number(raw ?? 0);
|
|
25
|
-
}
|
|
26
|
-
finally {
|
|
27
|
-
try {
|
|
28
|
-
await session.close();
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
// ignore
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// Printed even when nothing changed. A run that says nothing is
|
|
35
|
-
// indistinguishable from a run that never happened.
|
|
36
|
-
console.error(`[converge-routine-description] op=done converged=${converged}`);
|
|
37
|
-
return { converged };
|
|
38
|
-
}
|
|
39
|
-
async function main() {
|
|
40
|
-
const driver = connectNeo4j("converge-routine-description");
|
|
41
|
-
try {
|
|
42
|
-
await convergeRoutineDescriptions(driver, listLocalAccountIds(process.env.PLATFORM_ROOT));
|
|
43
|
-
}
|
|
44
|
-
finally {
|
|
45
|
-
await driver.close();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// Entry point only when executed directly, so the test can import the function
|
|
49
|
-
// without running a migration.
|
|
50
|
-
if (process.argv[1] && process.argv[1].endsWith("converge-routine-description.js")) {
|
|
51
|
-
main().catch((err) => {
|
|
52
|
-
console.error(`[converge-routine-description] op=fatal detail=${err instanceof Error ? err.message : String(err)}`);
|
|
53
|
-
process.exit(1);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=converge-routine-description.js.map
|
package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-routine-description.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-routine-description.js","sourceRoot":"","sources":["../../src/scripts/converge-routine-description.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAc,EACd,eAAyB;IAEzB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,4EAA4E;QAC5E,4EAA4E;QAC5E,iBAAiB;QACjB,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAC7F,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B;;;;oCAI8B,EAC9B,EAAE,eAAe,EAAE,CACpB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7C,SAAS;YACP,OAAO,GAAG,KAAK,QAAQ;gBACrB,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,GAAG,IAAI,OAAQ,GAAmC,CAAC,QAAQ,KAAK,UAAU;oBAC1E,CAAC,CAAE,GAAkC,CAAC,QAAQ,EAAE;oBAChD,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,oDAAoD;IACpD,OAAO,CAAC,KAAK,CAAC,oDAAoD,SAAS,EAAE,CAAC,CAAC;IAC/E,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,aAAc,CAAC,CAAC,CAAC;IAC7F,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,+BAA+B;AAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC;IACnF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CACX,kDAAkD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrG,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Task 2213 — one-shot convergence of `:Event.startDate` onto canonical UTC.
|
|
3
|
-
*
|
|
4
|
-
* Run by the installer immediately after `seed-neo4j.sh`, with the same
|
|
5
|
-
* NEO4J_URI / NEO4J_PASSWORD env that step already builds. It is an installer
|
|
6
|
-
* step, not a `platform/scripts/backfill-*.sh`, because nothing invokes anything
|
|
7
|
-
* in that directory: `backfill-bypass-permissions.sh`, `backfill-task-ids.sh`
|
|
8
|
-
* and `migrate-whatsapp-to-disk.mjs` all run only when an operator SSHes in,
|
|
9
|
-
* which leaves the rows wrong on every box nobody visits. The shape follows Task
|
|
10
|
-
* 1623's `converge-client-admins.ts` — "reaching all installs and brands without
|
|
11
|
-
* a per-box script".
|
|
12
|
-
*
|
|
13
|
-
* It imports the same `normaliseInstant` the two writers use, so the migration
|
|
14
|
-
* and the writers cannot disagree about what canonical means.
|
|
15
|
-
*
|
|
16
|
-
* PLATFORM_ROOT=... NEO4J_URI=... node dist/scripts/converge-startdate-utc.js
|
|
17
|
-
*/
|
|
18
|
-
import type { Driver } from "neo4j-driver";
|
|
19
|
-
export declare function convergeStartDates(driver: Driver, localAccountIds: string[]): Promise<{
|
|
20
|
-
scanned: number;
|
|
21
|
-
rewritten: number;
|
|
22
|
-
refused: number;
|
|
23
|
-
}>;
|
|
24
|
-
//# sourceMappingURL=converge-startdate-utc.d.ts.map
|
package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-startdate-utc.d.ts","sourceRoot":"","sources":["../../src/scripts/converge-startdate-utc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAyElE"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { connectNeo4j, listLocalAccountIds } from "../lib/dispatcher-env.js";
|
|
2
|
-
import { normaliseInstant, isCanonicalInstant } from "../../../../../lib/canonical-instant/dist/index.js";
|
|
3
|
-
export async function convergeStartDates(driver, localAccountIds) {
|
|
4
|
-
if (localAccountIds.length === 0) {
|
|
5
|
-
return { scanned: 0, rewritten: 0, refused: 0 };
|
|
6
|
-
}
|
|
7
|
-
let scanned = 0;
|
|
8
|
-
let rewritten = 0;
|
|
9
|
-
let refused = 0;
|
|
10
|
-
const readSession = driver.session();
|
|
11
|
-
let rows = [];
|
|
12
|
-
try {
|
|
13
|
-
const res = await readSession.run(`MATCH (e:Event)
|
|
14
|
-
WHERE e.accountId IN $localAccountIds AND e.startDate IS NOT NULL
|
|
15
|
-
RETURN e.eventId AS eventId, e.startDate AS startDate, e.timezone AS timezone`, { localAccountIds });
|
|
16
|
-
rows = res.records.map((r) => ({
|
|
17
|
-
eventId: r.get("eventId"),
|
|
18
|
-
startDate: r.get("startDate"),
|
|
19
|
-
timezone: r.get("timezone") ?? null,
|
|
20
|
-
}));
|
|
21
|
-
}
|
|
22
|
-
finally {
|
|
23
|
-
try {
|
|
24
|
-
await readSession.close();
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
// ignore
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
for (const row of rows) {
|
|
31
|
-
scanned++;
|
|
32
|
-
if (isCanonicalInstant(row.startDate)) {
|
|
33
|
-
console.error(`[converge-startdate] op=skip eventId=${row.eventId} reason=canonical`);
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
let canonical;
|
|
37
|
-
try {
|
|
38
|
-
canonical = normaliseInstant(row.startDate, row.timezone);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
refused++;
|
|
42
|
-
console.error(`[converge-startdate] op=refuse eventId=${row.eventId} reason=no-zone ` +
|
|
43
|
-
`in=${row.startDate} detail=${err instanceof Error ? err.message : String(err)}`);
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
const writeSession = driver.session();
|
|
47
|
-
try {
|
|
48
|
-
await writeSession.run(`MATCH (e:Event {eventId: $eventId}) SET e.startDate = $startDate`, {
|
|
49
|
-
eventId: row.eventId,
|
|
50
|
-
startDate: canonical,
|
|
51
|
-
});
|
|
52
|
-
rewritten++;
|
|
53
|
-
console.error(`[converge-startdate] op=rewrite eventId=${row.eventId} in=${row.startDate} ` +
|
|
54
|
-
`out=${canonical} tz=${row.timezone ?? "-"}`);
|
|
55
|
-
}
|
|
56
|
-
finally {
|
|
57
|
-
try {
|
|
58
|
-
await writeSession.close();
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// ignore
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// Printed even when nothing changed. A run that says nothing is
|
|
66
|
-
// indistinguishable from a run that never happened.
|
|
67
|
-
console.error(`[converge-startdate] op=done scanned=${scanned} rewritten=${rewritten} refused=${refused}`);
|
|
68
|
-
return { scanned, rewritten, refused };
|
|
69
|
-
}
|
|
70
|
-
async function main() {
|
|
71
|
-
const driver = connectNeo4j("converge-startdate-utc");
|
|
72
|
-
try {
|
|
73
|
-
await convergeStartDates(driver, listLocalAccountIds(process.env.PLATFORM_ROOT));
|
|
74
|
-
}
|
|
75
|
-
finally {
|
|
76
|
-
await driver.close();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Entry point only when executed directly, so the test can import the function
|
|
80
|
-
// without running a migration.
|
|
81
|
-
if (process.argv[1] && process.argv[1].endsWith("converge-startdate-utc.js")) {
|
|
82
|
-
main().catch((err) => {
|
|
83
|
-
console.error(`[converge-startdate] op=fatal detail=${err instanceof Error ? err.message : String(err)}`);
|
|
84
|
-
process.exit(1);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=converge-startdate-utc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converge-startdate-utc.js","sourceRoot":"","sources":["../../src/scripts/converge-startdate-utc.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./jsx-runtime-YcUntiud.js";import"./useMediaQuery-BmG090FR.js";import"./useVoiceRecorder-9pf6FFJ-.js";import"./AdminShell-C_M7YE5Z.js";import{n}from"./page-DXz_K10G.js";import"./useCopyFeedback-zOQNrIwd.js";var r=e(),i=t();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
=`dU��V�b)N����;`��_�<y�▕b���r[A��L_�E���{��WnNom�3as}��~��؞��z��͕w�$��9AD�J��>)Zb����2��U�:-�D"��`W�>�7F�y��:�}�t��>ì$&K�*�ӎ�b�pI?g���_�9��n"�3�R�x�1�]�����e�r��������8
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Z as e}from"./useMediaQuery-BmG090FR.js";var t=e(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]);export{t};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Z as e}from"./useMediaQuery-BmG090FR.js";var t=e(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]);export{t};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./jsx-runtime-YcUntiud.js";import"./useMediaQuery-BmG090FR.js";import"./useVoiceRecorder-9pf6FFJ-.js";import{t as n}from"./page-BU5vlY9Y.js";import"./graph-labels-8jKFrLHn.js";var r=e(),i=t();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
|
|
Binary file
|