@rubytech/create-realagent-code 0.1.574 → 0.1.575
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/dist/index.js +14 -0
- package/package.json +1 -1
- package/payload/platform/lib/canonical-instant/dist/index.d.ts +57 -0
- package/payload/platform/lib/canonical-instant/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/canonical-instant/dist/index.js +139 -0
- package/payload/platform/lib/canonical-instant/dist/index.js.map +1 -0
- package/payload/platform/lib/canonical-instant/src/__tests__/normalise-instant.test.ts +158 -0
- package/payload/platform/lib/canonical-instant/src/index.ts +147 -0
- package/payload/platform/lib/canonical-instant/tsconfig.json +9 -0
- package/payload/platform/lib/canonical-instant/vitest.config.ts +9 -0
- package/payload/platform/lib/dispatch-read/dist/geo.d.ts +34 -0
- package/payload/platform/lib/dispatch-read/dist/geo.d.ts.map +1 -0
- package/payload/platform/lib/dispatch-read/dist/geo.js +27 -0
- package/payload/platform/lib/dispatch-read/dist/geo.js.map +1 -0
- package/payload/platform/lib/dispatch-read/dist/index.d.ts +6 -2
- package/payload/platform/lib/dispatch-read/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/dispatch-read/dist/index.js +21 -1
- package/payload/platform/lib/dispatch-read/dist/index.js.map +1 -1
- package/payload/platform/lib/dispatch-read/dist/keyboard.d.ts +66 -0
- package/payload/platform/lib/dispatch-read/dist/keyboard.d.ts.map +1 -0
- package/payload/platform/lib/dispatch-read/dist/keyboard.js +64 -0
- package/payload/platform/lib/dispatch-read/dist/keyboard.js.map +1 -0
- package/payload/platform/lib/dispatch-read/dist/read.d.ts +144 -9
- package/payload/platform/lib/dispatch-read/dist/read.d.ts.map +1 -1
- package/payload/platform/lib/dispatch-read/dist/read.js +437 -118
- package/payload/platform/lib/dispatch-read/dist/read.js.map +1 -1
- package/payload/platform/lib/dispatch-read/dist/types.d.ts +80 -11
- package/payload/platform/lib/dispatch-read/dist/types.d.ts.map +1 -1
- package/payload/platform/lib/dispatch-read/src/__tests__/geo.test.ts +86 -0
- package/payload/platform/lib/dispatch-read/src/__tests__/keyboard.test.ts +124 -0
- package/payload/platform/lib/dispatch-read/src/__tests__/previous-visit.test.ts +98 -0
- package/payload/platform/lib/dispatch-read/src/__tests__/read.test.ts +107 -8
- package/payload/platform/lib/dispatch-read/src/__tests__/worker-day.test.ts +215 -10
- package/payload/platform/lib/dispatch-read/src/geo.ts +56 -0
- package/payload/platform/lib/dispatch-read/src/index.ts +25 -1
- package/payload/platform/lib/dispatch-read/src/keyboard.ts +98 -0
- package/payload/platform/lib/dispatch-read/src/read.ts +522 -119
- package/payload/platform/lib/dispatch-read/src/types.ts +83 -11
- package/payload/platform/lib/dispatch-write/dist/write.d.ts +14 -0
- package/payload/platform/lib/dispatch-write/dist/write.d.ts.map +1 -1
- package/payload/platform/lib/dispatch-write/dist/write.js +50 -11
- package/payload/platform/lib/dispatch-write/dist/write.js.map +1 -1
- package/payload/platform/lib/dispatch-write/src/__tests__/write.test.ts +72 -2
- package/payload/platform/lib/dispatch-write/src/write.ts +79 -14
- package/payload/platform/neo4j/schema.cypher +66 -1
- package/payload/platform/package.json +2 -2
- package/payload/platform/plugins/admin/PLUGIN.md +3 -0
- package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard-bash.test.sh +106 -0
- package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +66 -0
- package/payload/platform/plugins/admin/hooks/fs-schema-guard-bash-post.sh +85 -12
- package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +18 -0
- package/payload/platform/plugins/admin/mcp/dist/index.js +2 -2
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +10 -11
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +106 -36
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +8 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visits-scope.test.ts +130 -1
- package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +63 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visits.ts +104 -3
- package/payload/platform/plugins/dispatch/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/dispatch/PLUGIN.md +49 -6
- package/payload/platform/plugins/dispatch/mcp/dist/index.js +200 -2
- package/payload/platform/plugins/dispatch/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts +22 -4
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js +4 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.d.ts +10 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.js +47 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.js.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/config.d.ts.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/config.js +12 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/config.js.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.d.ts +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.d.ts.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.js +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.js.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.d.ts +36 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.js +36 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.js.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.d.ts +11 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.js +10 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.js.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/read.d.ts +2 -2
- package/payload/platform/plugins/dispatch/mcp/dist/lib/read.d.ts.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/read.js +9 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/read.js.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.d.ts +43 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.js +53 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.js.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/types.d.ts +13 -2
- package/payload/platform/plugins/dispatch/mcp/dist/lib/types.d.ts.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.d.ts +6 -0
- package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.js +102 -0
- package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.js.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.d.ts +18 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.d.ts.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.js +251 -40
- package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.js.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.d.ts +75 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.js +194 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.js.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.d.ts +61 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.js +130 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.js.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.d.ts +28 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.js +44 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.js.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.d.ts +43 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.d.ts.map +1 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.js +139 -0
- package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.js.map +1 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-page/SKILL.md +85 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.css +97 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.html +59 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.js +343 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-setup/SKILL.md +9 -4
- package/payload/platform/plugins/docs/references/channel-wake-and-prompt.md +11 -20
- package/payload/platform/plugins/docs/references/dispatch.md +94 -15
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/dispatch-vertical-coverage.test.js +4 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/dispatch-vertical-coverage.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js +24 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js.map +1 -1
- package/payload/platform/plugins/memory/references/schema-dispatch.md +70 -4
- package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts +2 -35
- package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js +6 -114
- package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js +3 -3
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +2 -2
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +3 -3
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.d.ts +40 -6
- package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.js +116 -15
- package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +6 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/services/telegram-channel/dist/notification.d.ts +0 -12
- package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/telegram-channel/dist/notification.js +8 -29
- package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
- package/payload/platform/services/telegram-channel/dist/server.d.ts.map +1 -1
- package/payload/platform/services/telegram-channel/dist/server.js +8 -11
- package/payload/platform/services/telegram-channel/dist/server.js.map +1 -1
- package/payload/server/public/activity.html +7 -7
- package/payload/server/public/agents.html +6 -6
- package/payload/server/public/assets/{AdminLoginScreens-Dp6k1XgD.js → AdminLoginScreens-BLGZEaKU.js} +1 -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 +3 -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-BJxhblz-.js → activity-BL6qbB9a.js} +1 -1
- 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 +1 -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-DTL8kjfD.js → agents-BzhfKZDN.js} +1 -1
- 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/{arc-CWXBKNZd.js → arc-Bge2fWf4.js} +1 -1
- package/payload/server/public/assets/arc-Bge2fWf4.js.br +0 -0
- package/payload/server/public/assets/arc-Bge2fWf4.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-B9jqFTbw.js +1 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-B9jqFTbw.js.br +0 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-C-KPMyG4.js → architectureDiagram-Q4EWVU46-BRauf5b8.js} +1 -1
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BRauf5b8.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BRauf5b8.js.gz +0 -0
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DkYbV9Sf.js → blockDiagram-DXYQGD6D-CUJ554WZ.js} +1 -1
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-CUJ554WZ.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-CUJ554WZ.js.gz +0 -0
- package/payload/server/public/assets/{browser-UZp75zhx.js → browser-C-6io2B9.js} +1 -1
- 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/{c4Diagram-AHTNJAMY-EYW4kdlx.js → c4Diagram-AHTNJAMY-CV9gKsKo.js} +1 -1
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-CV9gKsKo.js.br +0 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-EYW4kdlx.js.gz → c4Diagram-AHTNJAMY-CV9gKsKo.js.gz} +0 -0
- package/payload/server/public/assets/{calendar-Dfo0O2K_.js → calendar-Dt3gS88s.js} +1 -1
- 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/channel-DUwJcjZw.js +1 -0
- package/payload/server/public/assets/channel-DUwJcjZw.js.br +0 -0
- package/payload/server/public/assets/chat-IUOvVkL-.js +1 -0
- package/payload/server/public/assets/chat-IUOvVkL-.js.br +1 -0
- package/payload/server/public/assets/chat-IUOvVkL-.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-DSzR9zR7.js +1 -0
- package/payload/server/public/assets/chevron-left-DSzR9zR7.js.br +0 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-CmAF1UmH.js → chunk-2KRD3SAO-HzWGrran.js} +1 -1
- package/payload/server/public/assets/chunk-2KRD3SAO-HzWGrran.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-HzWGrran.js.gz +0 -0
- package/payload/server/public/assets/{chunk-336JU56O-CyhmJeMM.js → chunk-336JU56O-ChGDYu_S.js} +2 -2
- package/payload/server/public/assets/chunk-336JU56O-ChGDYu_S.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-ChGDYu_S.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js +1 -0
- package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-DCzC40-Y.js → chunk-4BX2VUAB-BJunAy2u.js} +1 -1
- package/payload/server/public/assets/chunk-4BX2VUAB-BJunAy2u.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-BJunAy2u.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4TB4RGXK-D9BXrSA_.js → chunk-4TB4RGXK-Df9Ew0fN.js} +1 -1
- package/payload/server/public/assets/chunk-4TB4RGXK-Df9Ew0fN.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-Df9Ew0fN.js.gz +0 -0
- package/payload/server/public/assets/{chunk-55IACEB6-BwXC-qTZ.js → chunk-55IACEB6-DtquCg7p.js} +1 -1
- package/payload/server/public/assets/chunk-55IACEB6-DtquCg7p.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-DtquCg7p.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5FUZZQ4R-De7QtXxM.js → chunk-5FUZZQ4R-B3s1YuQa.js} +1 -1
- package/payload/server/public/assets/chunk-5FUZZQ4R-B3s1YuQa.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-B3s1YuQa.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5PVQY5BW-B5tsJiCq.js → chunk-5PVQY5BW-C0bRnMKQ.js} +1 -1
- package/payload/server/public/assets/chunk-5PVQY5BW-C0bRnMKQ.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-C0bRnMKQ.js.gz +0 -0
- package/payload/server/public/assets/{chunk-67CJDMHE-BjTh9STV.js → chunk-67CJDMHE-B9jxnEpu.js} +1 -1
- package/payload/server/public/assets/chunk-67CJDMHE-B9jxnEpu.js.br +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-B9jxnEpu.js.gz +0 -0
- package/payload/server/public/assets/{chunk-7N4EOEYR-91klRswn.js → chunk-7N4EOEYR-DaimaIlO.js} +1 -1
- package/payload/server/public/assets/chunk-7N4EOEYR-DaimaIlO.js.br +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-DaimaIlO.js.gz +0 -0
- package/payload/server/public/assets/{chunk-AA7GKIK3-XFPGEoBu.js → chunk-AA7GKIK3-htgz4y5z.js} +1 -1
- package/payload/server/public/assets/chunk-AA7GKIK3-htgz4y5z.js.br +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-htgz4y5z.js.gz +0 -0
- package/payload/server/public/assets/{chunk-BSJP7CBP-B7wgMyWq.js → chunk-BSJP7CBP-0xBlnKJN.js} +1 -1
- package/payload/server/public/assets/chunk-BSJP7CBP-0xBlnKJN.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-0xBlnKJN.js.gz +0 -0
- package/payload/server/public/assets/{chunk-CIAEETIT-WPy9vcOo.js → chunk-CIAEETIT-HZOrcAzJ.js} +1 -1
- package/payload/server/public/assets/chunk-CIAEETIT-HZOrcAzJ.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-HZOrcAzJ.js.gz +0 -0
- package/payload/server/public/assets/{chunk-EDXVE4YY-D_2JIFFG.js → chunk-EDXVE4YY-CC8hCcuU.js} +1 -1
- package/payload/server/public/assets/chunk-EDXVE4YY-CC8hCcuU.js.br +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-CC8hCcuU.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ENJZ2VHE-xORReRt0.js → chunk-ENJZ2VHE-BdPfdZYB.js} +1 -1
- package/payload/server/public/assets/chunk-ENJZ2VHE-BdPfdZYB.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-BdPfdZYB.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FMBD7UC4-BZsDu4nl.js → chunk-FMBD7UC4-MHdn_KgF.js} +1 -1
- package/payload/server/public/assets/chunk-FMBD7UC4-MHdn_KgF.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-MHdn_KgF.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FOC6F5B3-QzUp8wXX.js → chunk-FOC6F5B3-Ti8BlQKX.js} +1 -1
- package/payload/server/public/assets/chunk-FOC6F5B3-Ti8BlQKX.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-Ti8BlQKX.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ICPOFSXX-B64S7i7x.js → chunk-ICPOFSXX-BP8A8zb1.js} +2 -2
- package/payload/server/public/assets/chunk-ICPOFSXX-BP8A8zb1.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-BP8A8zb1.js.gz +0 -0
- package/payload/server/public/assets/{chunk-K5T4RW27-DzPc6X1_.js → chunk-K5T4RW27-F30EnSBL.js} +1 -1
- package/payload/server/public/assets/chunk-K5T4RW27-F30EnSBL.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-F30EnSBL.js.gz +0 -0
- package/payload/server/public/assets/{chunk-KGLVRYIC-A2rPnD7k.js → chunk-KGLVRYIC-DNSEkg2Q.js} +1 -1
- package/payload/server/public/assets/chunk-KGLVRYIC-DNSEkg2Q.js.br +2 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-DNSEkg2Q.js.gz +0 -0
- package/payload/server/public/assets/{chunk-LIHQZDEY-CaWX327m.js → chunk-LIHQZDEY-DM7b0dec.js} +1 -1
- package/payload/server/public/assets/chunk-LIHQZDEY-DM7b0dec.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-DM7b0dec.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ORNJ4GCN-zrWhdmnc.js → chunk-ORNJ4GCN-B0qoI_vp.js} +1 -1
- package/payload/server/public/assets/chunk-ORNJ4GCN-B0qoI_vp.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-B0qoI_vp.js.gz +0 -0
- package/payload/server/public/assets/{chunk-OYMX7WX6-B_2qQir6.js → chunk-OYMX7WX6-Bfzo53eI.js} +1 -1
- package/payload/server/public/assets/chunk-OYMX7WX6-Bfzo53eI.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Bfzo53eI.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js +1 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js.gz +0 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-B-IYgxsc.js → chunk-U2HBQHQK-DcqGPXEy.js} +1 -1
- package/payload/server/public/assets/chunk-U2HBQHQK-DcqGPXEy.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-DcqGPXEy.js.gz +0 -0
- package/payload/server/public/assets/{chunk-X2U36JSP-Y9Y1_EuG.js → chunk-X2U36JSP-DtRi7n5Z.js} +1 -1
- package/payload/server/public/assets/chunk-X2U36JSP-DtRi7n5Z.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-DtRi7n5Z.js.gz +0 -0
- package/payload/server/public/assets/{chunk-XPW4576I-C-6yETG_.js → chunk-XPW4576I-DmuDCcY3.js} +1 -1
- package/payload/server/public/assets/chunk-XPW4576I-DmuDCcY3.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DmuDCcY3.js.gz +0 -0
- package/payload/server/public/assets/{chunk-YZCP3GAM-KAuQIU5n.js → chunk-YZCP3GAM-oKk9Gv_e.js} +1 -1
- package/payload/server/public/assets/chunk-YZCP3GAM-oKk9Gv_e.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-oKk9Gv_e.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ZZ45TVLE-BJcH3KDH.js → chunk-ZZ45TVLE-teET41Yh.js} +1 -1
- package/payload/server/public/assets/chunk-ZZ45TVLE-teET41Yh.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-teET41Yh.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js +1 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js.gz +0 -0
- package/payload/server/public/assets/clock-C5xE5p2I.js +1 -0
- package/payload/server/public/assets/clock-C5xE5p2I.js.br +0 -0
- package/payload/server/public/assets/clone-BORhq8On.js +1 -0
- package/payload/server/public/assets/clone-BORhq8On.js.br +0 -0
- package/payload/server/public/assets/{copy-CGI2jioK.js → copy-TkPJgllS.js} +1 -1
- 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/{cose-bilkent-S5V4N54A-CcXj8vHa.js → cose-bilkent-S5V4N54A-D1xLpHGm.js} +1 -1
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-D1xLpHGm.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-D1xLpHGm.js.gz +0 -0
- package/payload/server/public/assets/{dagre-KV5264BT-BOhQs4rS.js → dagre-KV5264BT-Byl65NKT.js} +1 -1
- package/payload/server/public/assets/dagre-KV5264BT-Byl65NKT.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-Byl65NKT.js.gz +0 -0
- package/payload/server/public/assets/{dagre-DOtq9kYX.js → dagre-ZzXkSDir.js} +1 -1
- package/payload/server/public/assets/dagre-ZzXkSDir.js.br +0 -0
- package/payload/server/public/assets/dagre-ZzXkSDir.js.gz +0 -0
- package/payload/server/public/assets/data-Bhv0Pvfl.js +1 -0
- 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/{diagram-5BDNPKRD-CqJFt5ZM.js → diagram-5BDNPKRD-BFNkV5GK.js} +1 -1
- package/payload/server/public/assets/diagram-5BDNPKRD-BFNkV5GK.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-BFNkV5GK.js.gz +0 -0
- package/payload/server/public/assets/{diagram-G4DWMVQ6-WQIyAZMn.js → diagram-G4DWMVQ6-1n6vHXzR.js} +1 -1
- package/payload/server/public/assets/diagram-G4DWMVQ6-1n6vHXzR.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-1n6vHXzR.js.gz +0 -0
- package/payload/server/public/assets/{diagram-MMDJMWI5-jcKc4a2w.js → diagram-MMDJMWI5-D4QOzaw0.js} +1 -1
- package/payload/server/public/assets/diagram-MMDJMWI5-D4QOzaw0.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-D4QOzaw0.js.gz +0 -0
- package/payload/server/public/assets/{diagram-TYMM5635-Bbt2KuWe.js → diagram-TYMM5635-z8lBRsaV.js} +1 -1
- package/payload/server/public/assets/diagram-TYMM5635-z8lBRsaV.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-z8lBRsaV.js.gz +0 -0
- package/payload/server/public/assets/{dist-9RiN6lky.js → dist-DjYA4E4S.js} +1 -1
- package/payload/server/public/assets/dist-DjYA4E4S.js.br +0 -0
- package/payload/server/public/assets/dist-DjYA4E4S.js.gz +0 -0
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-BBm6azPJ.js → erDiagram-SMLLAGMA-CXj3tbtX.js} +1 -1
- package/payload/server/public/assets/erDiagram-SMLLAGMA-CXj3tbtX.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-CXj3tbtX.js.gz +0 -0
- package/payload/server/public/assets/field-B490-evJ.js +1 -0
- package/payload/server/public/assets/field-B490-evJ.js.br +0 -0
- package/payload/server/public/assets/field-B490-evJ.js.gz +0 -0
- package/payload/server/public/assets/{file-text-RWintp9q.js → file-text-DyAL2DCh.js} +1 -1
- 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/{flatten-BurGKeIy.js → flatten-UdUTbm8v.js} +1 -1
- package/payload/server/public/assets/flatten-UdUTbm8v.js.br +0 -0
- package/payload/server/public/assets/flatten-UdUTbm8v.js.gz +0 -0
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-_r45DYJ8.js → flowDiagram-DWJPFMVM-DnySI-I4.js} +1 -1
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-DnySI-I4.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-DnySI-I4.js.gz +0 -0
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-Bjgj9Bej.js → ganttDiagram-T4ZO3ILL-BIE2Q78F.js} +1 -1
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-BIE2Q78F.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-BIE2Q78F.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-Ua2z-DNt.js +1 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-Ua2z-DNt.js.br +0 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DTRdhGJA.js → gitGraphDiagram-UUTBAWPF-B2RTRpyG.js} +1 -1
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-B2RTRpyG.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-B2RTRpyG.js.gz +0 -0
- package/payload/server/public/assets/{graph-CpBlfYrJ.js → graph-PiNIcCfX.js} +1 -1
- 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-BOMyPppX.js → graph-labels-8jKFrLHn.js} +1 -1
- 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/{graphlib-DT4h6-4N.js → graphlib-SOh92ucm.js} +1 -1
- package/payload/server/public/assets/graphlib-SOh92ucm.js.br +0 -0
- package/payload/server/public/assets/graphlib-SOh92ucm.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-CNYp42iX.js +1 -0
- package/payload/server/public/assets/info-OMHHGYJF-CNYp42iX.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js +2 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js.gz +0 -0
- package/payload/server/public/assets/{isEmpty-C5v0-EY7.js → isEmpty-DY_Xp9Na.js} +1 -1
- package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.br +0 -0
- package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.gz +0 -0
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BklHzVHm.js → ishikawaDiagram-UXIWVN3A-KAC06i3M.js} +1 -1
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-KAC06i3M.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-KAC06i3M.js.gz +0 -0
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-Ckxx2CmV.js → journeyDiagram-VCZTEJTY-cA37ob8S.js} +1 -1
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-cA37ob8S.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-cA37ob8S.js.gz +0 -0
- package/payload/server/public/assets/{jsx-runtime-DxsQ5Y-z.css → jsx-runtime-ChVh0xOm.css} +1 -1
- package/payload/server/public/assets/jsx-runtime-ChVh0xOm.css.br +0 -0
- package/payload/server/public/assets/{jsx-runtime-DxsQ5Y-z.css.gz → jsx-runtime-ChVh0xOm.css.gz} +0 -0
- package/payload/server/public/assets/{jsx-runtime-5lmxFBIw.js → jsx-runtime-YcUntiud.js} +1 -1
- package/payload/server/public/assets/jsx-runtime-YcUntiud.js.br +0 -0
- package/payload/server/public/assets/jsx-runtime-YcUntiud.js.gz +0 -0
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-BLELXpqn.js → kanban-definition-6JOO6SKY-CBjL70wU.js} +1 -1
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-CBjL70wU.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-CBjL70wU.js.gz +0 -0
- package/payload/server/public/assets/{line-BkI5icOY.js → line-K8229GLG.js} +1 -1
- package/payload/server/public/assets/line-K8229GLG.js.br +0 -0
- package/payload/server/public/assets/line-K8229GLG.js.gz +0 -0
- package/payload/server/public/assets/{linear-B64ANRVs.js → linear-DeX7Wdt6.js} +1 -1
- package/payload/server/public/assets/linear-DeX7Wdt6.js.br +0 -0
- package/payload/server/public/assets/linear-DeX7Wdt6.js.gz +0 -0
- package/payload/server/public/assets/{mermaid-parser.core-qXPKkdJe.js → mermaid-parser.core-OnNOAzPX.js} +2 -2
- package/payload/server/public/assets/mermaid-parser.core-OnNOAzPX.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-OnNOAzPX.js.gz +0 -0
- package/payload/server/public/assets/{mermaid.core-BMsz65Wy.js → mermaid.core-DA-Gezeo.js} +3 -3
- package/payload/server/public/assets/mermaid.core-DA-Gezeo.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-DA-Gezeo.js.gz +0 -0
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-DhFTS2sx.js → mindmap-definition-QFDTVHPH-C24TcDyS.js} +1 -1
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-C24TcDyS.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-C24TcDyS.js.gz +0 -0
- package/payload/server/public/assets/operator-DKGKGzrb.js +1 -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/{ordinal-CJ_pL32Z.js → ordinal-gnpqfIHn.js} +1 -1
- package/payload/server/public/assets/ordinal-gnpqfIHn.js.br +0 -0
- package/payload/server/public/assets/ordinal-gnpqfIHn.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-B3ZAElsg.js +1 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-B3ZAElsg.js.br +0 -0
- package/payload/server/public/assets/{page-BRShHSH0.js → page-BU5vlY9Y.js} +1 -1
- 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-BbBCu9iP.js → page-DXz_K10G.js} +3 -3
- 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/{pdf-render-ynIPXfRA.js → pdf-render-B5af7vu1.js} +1 -1
- package/payload/server/public/assets/pdf-render-B5af7vu1.js.br +0 -0
- package/payload/server/public/assets/pdf-render-B5af7vu1.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-BWsRCj8p.js +1 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-BWsRCj8p.js.br +0 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-B2TxkbHK.js → pieDiagram-DEJITSTG-ChS9jalQ.js} +1 -1
- package/payload/server/public/assets/pieDiagram-DEJITSTG-ChS9jalQ.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-ChS9jalQ.js.gz +0 -0
- package/payload/server/public/assets/play-CmSyYrB6.js +1 -0
- 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-DkObqkzL.js → public-BmA3-jLj.js} +1 -1
- 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/{quadrantDiagram-34T5L4WZ-GsMxIJuS.js → quadrantDiagram-34T5L4WZ-BxLfRK0z.js} +1 -1
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-BxLfRK0z.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-BxLfRK0z.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-Gxbt2rGT.js +1 -0
- package/payload/server/public/assets/radar-PYXPWWZC-Gxbt2rGT.js.br +0 -0
- package/payload/server/public/assets/{reduce-CfkEiHc9.js → reduce-BvezuHIe.js} +1 -1
- package/payload/server/public/assets/reduce-BvezuHIe.js.br +0 -0
- package/payload/server/public/assets/reduce-BvezuHIe.js.gz +0 -0
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-DqNprm-1.js → requirementDiagram-MS252O5E-CWy48VI3.js} +1 -1
- package/payload/server/public/assets/requirementDiagram-MS252O5E-CWy48VI3.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-CWy48VI3.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-DgMO69nh.js → rotate-ccw-fCH0LSMq.js} +1 -1
- 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-D9kvg_Xu.js → routines-BeFrmkls.js} +1 -1
- 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/{sankeyDiagram-XADWPNL6-B-kRuiuz.js → sankeyDiagram-XADWPNL6-BBCLEJA3.js} +1 -1
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-BBCLEJA3.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-BBCLEJA3.js.gz +0 -0
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DEhL9g3K.js → sequenceDiagram-FGHM5R23-wu64F04G.js} +1 -1
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-wu64F04G.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-wu64F04G.js.gz +0 -0
- package/payload/server/public/assets/{skills-l5I9HZ3D.js → skills-mjls5HBa.js} +1 -1
- 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/{src-BrAT6wKv.js → src-BvINb2fL.js} +1 -1
- package/payload/server/public/assets/src-BvINb2fL.js.br +0 -0
- package/payload/server/public/assets/src-BvINb2fL.js.gz +0 -0
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-Q-g6BHdz.js → stateDiagram-FHFEXIEX-Bq6BFFDC.js} +1 -1
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-Bq6BFFDC.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-Bq6BFFDC.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js +1 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js.gz +0 -0
- package/payload/server/public/assets/{tasks-C2qJMv6i.js → tasks-p6puHHD0.js} +1 -1
- 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/{timeline-definition-GMOUNBTQ-B3-52q4Q.js → timeline-definition-GMOUNBTQ-DTdvVZp-.js} +1 -1
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DTdvVZp-.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DTdvVZp-.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-Bl-aPmE3.js +1 -0
- package/payload/server/public/assets/treeView-SZITEDCU-Bl-aPmE3.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-CUxE8Ofg.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-CUxE8Ofg.js.br +0 -0
- package/payload/server/public/assets/{triangle-alert-BnC67uSs.js → triangle-alert-CrZ1ewbd.js} +1 -1
- 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-1RmgkTFh.js → useCopyFeedback-zOQNrIwd.js} +1 -1
- 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-BQslddHQ.js → useMediaQuery-BmG090FR.js} +1 -1
- package/payload/server/public/assets/useMediaQuery-BmG090FR.js.br +0 -0
- package/payload/server/public/assets/useMediaQuery-BmG090FR.js.gz +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-BeZNQEC4.js → useVoiceRecorder-9pf6FFJ-.js} +2 -2
- 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/{vennDiagram-DHZGUBPP-Bzm1VDi1.js → vennDiagram-DHZGUBPP-CigqIBdl.js} +1 -1
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-CigqIBdl.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-CigqIBdl.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DPB13D22.js +1 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DPB13D22.js.br +0 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-DIqGZr4v.js → wardleyDiagram-NUSXRM2D-VhV1plUD.js} +1 -1
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-VhV1plUD.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-VhV1plUD.js.gz +0 -0
- package/payload/server/public/assets/{wrench-D4ufQG6C.js → wrench-k4GYG5rc.js} +1 -1
- package/payload/server/public/assets/wrench-k4GYG5rc.js.br +0 -0
- package/payload/server/public/assets/wrench-k4GYG5rc.js.gz +0 -0
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-0W2L2hQA.js → xychartDiagram-5P7HB3ND-DGkkNLZt.js} +1 -1
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DGkkNLZt.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DGkkNLZt.js.gz +0 -0
- package/payload/server/public/browser.html +6 -6
- package/payload/server/public/calendar.html +9 -9
- package/payload/server/public/chat.html +16 -16
- package/payload/server/public/data.html +15 -15
- package/payload/server/public/field.html +4 -4
- package/payload/server/public/graph.html +11 -11
- package/payload/server/public/index.html +17 -17
- package/payload/server/public/operator.html +17 -17
- package/payload/server/public/public.html +16 -16
- package/payload/server/public/routines.html +10 -10
- package/payload/server/public/skills.html +7 -7
- package/payload/server/public/tasks.html +8 -8
- package/payload/server/server.js +2930 -2125
- package/payload/platform/lib/dispatch-read/src/config.d.ts +0 -26
- package/payload/platform/lib/dispatch-read/src/types.d.ts +0 -143
- package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-D-wB90c3.js +0 -3
- package/payload/server/public/assets/AdminShell-D-wB90c3.js.br +0 -0
- package/payload/server/public/assets/AdminShell-D-wB90c3.js.gz +0 -0
- package/payload/server/public/assets/activity-BJxhblz-.js.br +0 -0
- package/payload/server/public/assets/activity-BJxhblz-.js.gz +0 -0
- package/payload/server/public/assets/admin-DzEi8shs.js +0 -1
- package/payload/server/public/assets/admin-DzEi8shs.js.br +0 -0
- package/payload/server/public/assets/admin-DzEi8shs.js.gz +0 -0
- package/payload/server/public/assets/agents-DTL8kjfD.js.br +0 -0
- package/payload/server/public/assets/agents-DTL8kjfD.js.gz +0 -0
- package/payload/server/public/assets/arc-CWXBKNZd.js.br +0 -0
- package/payload/server/public/assets/arc-CWXBKNZd.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-CIL4I0fc.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-CIL4I0fc.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-C-KPMyG4.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-C-KPMyG4.js.gz +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-DkYbV9Sf.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-DkYbV9Sf.js.gz +0 -0
- package/payload/server/public/assets/browser-UZp75zhx.js.br +0 -0
- package/payload/server/public/assets/browser-UZp75zhx.js.gz +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-EYW4kdlx.js.br +0 -0
- package/payload/server/public/assets/calendar-Dfo0O2K_.js.br +0 -0
- package/payload/server/public/assets/calendar-Dfo0O2K_.js.gz +0 -0
- package/payload/server/public/assets/channel-CbHmRjy_.js +0 -1
- package/payload/server/public/assets/channel-CbHmRjy_.js.br +0 -0
- package/payload/server/public/assets/chat-ByJAvEWZ.js +0 -1
- package/payload/server/public/assets/chat-ByJAvEWZ.js.br +0 -0
- package/payload/server/public/assets/chat-ByJAvEWZ.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-iG7sYNm7.js +0 -1
- package/payload/server/public/assets/chevron-left-iG7sYNm7.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-CmAF1UmH.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-CmAF1UmH.js.gz +0 -0
- package/payload/server/public/assets/chunk-336JU56O-CyhmJeMM.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-CyhmJeMM.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js.gz +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-DCzC40-Y.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-DCzC40-Y.js.gz +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-D9BXrSA_.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-D9BXrSA_.js.gz +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-BwXC-qTZ.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-BwXC-qTZ.js.gz +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-De7QtXxM.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-De7QtXxM.js.gz +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-B5tsJiCq.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-B5tsJiCq.js.gz +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-BjTh9STV.js.br +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-BjTh9STV.js.gz +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-91klRswn.js.br +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-91klRswn.js.gz +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-XFPGEoBu.js.br +0 -3
- package/payload/server/public/assets/chunk-AA7GKIK3-XFPGEoBu.js.gz +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-B7wgMyWq.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-B7wgMyWq.js.gz +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-WPy9vcOo.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-WPy9vcOo.js.gz +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-D_2JIFFG.js.br +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-D_2JIFFG.js.gz +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-xORReRt0.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-xORReRt0.js.gz +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-BZsDu4nl.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-BZsDu4nl.js.gz +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-QzUp8wXX.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-QzUp8wXX.js.gz +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-B64S7i7x.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-B64S7i7x.js.gz +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-DzPc6X1_.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-DzPc6X1_.js.gz +0 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-A2rPnD7k.js.br +0 -1
- package/payload/server/public/assets/chunk-KGLVRYIC-A2rPnD7k.js.gz +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CaWX327m.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CaWX327m.js.gz +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-zrWhdmnc.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-zrWhdmnc.js.gz +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-B_2qQir6.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-B_2qQir6.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js.gz +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-B-IYgxsc.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-B-IYgxsc.js.gz +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-Y9Y1_EuG.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-Y9Y1_EuG.js.gz +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-C-6yETG_.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-C-6yETG_.js.gz +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-KAuQIU5n.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-KAuQIU5n.js.gz +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-BJcH3KDH.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-BJcH3KDH.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js.gz +0 -0
- package/payload/server/public/assets/clock-xSs0UF10.js +0 -1
- package/payload/server/public/assets/clock-xSs0UF10.js.br +0 -0
- package/payload/server/public/assets/clock-xSs0UF10.js.gz +0 -0
- package/payload/server/public/assets/clone-QdOE5SXR.js +0 -1
- package/payload/server/public/assets/copy-CGI2jioK.js.br +0 -0
- package/payload/server/public/assets/copy-CGI2jioK.js.gz +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-CcXj8vHa.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-CcXj8vHa.js.gz +0 -0
- package/payload/server/public/assets/dagre-DOtq9kYX.js.br +0 -0
- package/payload/server/public/assets/dagre-DOtq9kYX.js.gz +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-BOhQs4rS.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-BOhQs4rS.js.gz +0 -0
- package/payload/server/public/assets/data-dvwK4BcP.js +0 -1
- package/payload/server/public/assets/data-dvwK4BcP.js.br +0 -0
- package/payload/server/public/assets/data-dvwK4BcP.js.gz +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-CqJFt5ZM.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-CqJFt5ZM.js.gz +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-WQIyAZMn.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-WQIyAZMn.js.gz +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-jcKc4a2w.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-jcKc4a2w.js.gz +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-Bbt2KuWe.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-Bbt2KuWe.js.gz +0 -0
- package/payload/server/public/assets/dispatch-Dx9-ty1K.js +0 -1
- package/payload/server/public/assets/dispatch-Dx9-ty1K.js.br +0 -0
- package/payload/server/public/assets/dispatch-Dx9-ty1K.js.gz +0 -0
- package/payload/server/public/assets/dist-9RiN6lky.js.br +0 -0
- package/payload/server/public/assets/dist-9RiN6lky.js.gz +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-BBm6azPJ.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-BBm6azPJ.js.gz +0 -0
- package/payload/server/public/assets/field-D-P6CsWA.js +0 -1
- package/payload/server/public/assets/field-D-P6CsWA.js.br +0 -0
- package/payload/server/public/assets/field-D-P6CsWA.js.gz +0 -0
- package/payload/server/public/assets/file-text-RWintp9q.js.br +0 -0
- package/payload/server/public/assets/file-text-RWintp9q.js.gz +0 -0
- package/payload/server/public/assets/flatten-BurGKeIy.js.br +0 -0
- package/payload/server/public/assets/flatten-BurGKeIy.js.gz +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-_r45DYJ8.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-_r45DYJ8.js.gz +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-Bjgj9Bej.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-Bjgj9Bej.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-DdbK59od.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-DdbK59od.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DTRdhGJA.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DTRdhGJA.js.gz +0 -0
- package/payload/server/public/assets/graph-CpBlfYrJ.js.br +0 -0
- package/payload/server/public/assets/graph-CpBlfYrJ.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-BOMyPppX.js.br +0 -0
- package/payload/server/public/assets/graph-labels-BOMyPppX.js.gz +0 -0
- package/payload/server/public/assets/graphlib-DT4h6-4N.js.br +0 -0
- package/payload/server/public/assets/graphlib-DT4h6-4N.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-BR8gm0wj.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-BR8gm0wj.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js +0 -2
- package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js.gz +0 -0
- package/payload/server/public/assets/isEmpty-C5v0-EY7.js.br +0 -0
- package/payload/server/public/assets/isEmpty-C5v0-EY7.js.gz +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-BklHzVHm.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-BklHzVHm.js.gz +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-Ckxx2CmV.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-Ckxx2CmV.js.gz +0 -0
- package/payload/server/public/assets/jsx-runtime-5lmxFBIw.js.br +0 -0
- package/payload/server/public/assets/jsx-runtime-5lmxFBIw.js.gz +0 -0
- package/payload/server/public/assets/jsx-runtime-DxsQ5Y-z.css.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-BLELXpqn.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-BLELXpqn.js.gz +0 -0
- package/payload/server/public/assets/line-BkI5icOY.js.br +0 -0
- package/payload/server/public/assets/line-BkI5icOY.js.gz +0 -0
- package/payload/server/public/assets/linear-B64ANRVs.js.br +0 -0
- package/payload/server/public/assets/linear-B64ANRVs.js.gz +0 -0
- package/payload/server/public/assets/mermaid-parser.core-qXPKkdJe.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-qXPKkdJe.js.gz +0 -0
- package/payload/server/public/assets/mermaid.core-BMsz65Wy.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-BMsz65Wy.js.gz +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-DhFTS2sx.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-DhFTS2sx.js.gz +0 -0
- package/payload/server/public/assets/operator-DFgW6GiH.js +0 -1
- package/payload/server/public/assets/operator-DFgW6GiH.js.br +0 -0
- package/payload/server/public/assets/operator-DFgW6GiH.js.gz +0 -0
- package/payload/server/public/assets/ordinal-CJ_pL32Z.js.br +0 -0
- package/payload/server/public/assets/ordinal-CJ_pL32Z.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-B31PbAeA.js +0 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-B31PbAeA.js.br +0 -0
- package/payload/server/public/assets/page-BRShHSH0.js.br +0 -0
- package/payload/server/public/assets/page-BRShHSH0.js.gz +0 -0
- package/payload/server/public/assets/page-BbBCu9iP.js.br +0 -0
- package/payload/server/public/assets/page-BbBCu9iP.js.gz +0 -0
- package/payload/server/public/assets/pdf-render-ynIPXfRA.js.br +0 -0
- package/payload/server/public/assets/pdf-render-ynIPXfRA.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-BbSc1VXl.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-BbSc1VXl.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-B2TxkbHK.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-B2TxkbHK.js.gz +0 -0
- package/payload/server/public/assets/play-BJxUaf6-.js +0 -1
- package/payload/server/public/assets/play-BJxUaf6-.js.br +0 -0
- package/payload/server/public/assets/play-BJxUaf6-.js.gz +0 -0
- package/payload/server/public/assets/public-DkObqkzL.js.br +0 -0
- package/payload/server/public/assets/public-DkObqkzL.js.gz +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-GsMxIJuS.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-GsMxIJuS.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-B0La8_mZ.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-B0La8_mZ.js.br +0 -0
- package/payload/server/public/assets/reduce-CfkEiHc9.js.br +0 -0
- package/payload/server/public/assets/reduce-CfkEiHc9.js.gz +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-DqNprm-1.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-DqNprm-1.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-DgMO69nh.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-DgMO69nh.js.gz +0 -0
- package/payload/server/public/assets/routines-D9kvg_Xu.js.br +0 -0
- package/payload/server/public/assets/routines-D9kvg_Xu.js.gz +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-B-kRuiuz.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-B-kRuiuz.js.gz +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DEhL9g3K.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DEhL9g3K.js.gz +0 -0
- package/payload/server/public/assets/skills-l5I9HZ3D.js.br +0 -0
- package/payload/server/public/assets/skills-l5I9HZ3D.js.gz +0 -0
- package/payload/server/public/assets/src-BrAT6wKv.js.br +0 -0
- package/payload/server/public/assets/src-BrAT6wKv.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-Q-g6BHdz.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-Q-g6BHdz.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js.gz +0 -0
- package/payload/server/public/assets/tasks-C2qJMv6i.js.br +0 -0
- package/payload/server/public/assets/tasks-C2qJMv6i.js.gz +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B3-52q4Q.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B3-52q4Q.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-BBR3hu9P.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-BBR3hu9P.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-wSQMuzBT.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-wSQMuzBT.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-BnC67uSs.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-BnC67uSs.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js.gz +0 -0
- package/payload/server/public/assets/useMediaQuery-BQslddHQ.js.br +0 -0
- package/payload/server/public/assets/useMediaQuery-BQslddHQ.js.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js.gz +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-Bzm1VDi1.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-Bzm1VDi1.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-3QaECtQN.js +0 -1
- package/payload/server/public/assets/wardley-RL74JXVD-3QaECtQN.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-DIqGZr4v.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-DIqGZr4v.js.gz +0 -0
- package/payload/server/public/assets/wrench-D4ufQG6C.js.br +0 -0
- package/payload/server/public/assets/wrench-D4ufQG6C.js.gz +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0W2L2hQA.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0W2L2hQA.js.gz +0 -0
- package/payload/server/public/dispatch.html +0 -20
- /package/payload/server/public/assets/{_baseFor-D1duyODO.js → _baseFor-BApe6Tla.js} +0 -0
- /package/payload/server/public/assets/{_baseFor-D1duyODO.js.br → _baseFor-BApe6Tla.js.br} +0 -0
- /package/payload/server/public/assets/{_baseFor-D1duyODO.js.gz → _baseFor-BApe6Tla.js.gz} +0 -0
- /package/payload/server/public/assets/{array-j7Xa9Fap.js → array-eiH4WfvY.js} +0 -0
- /package/payload/server/public/assets/{array-j7Xa9Fap.js.br → array-eiH4WfvY.js.br} +0 -0
- /package/payload/server/public/assets/{chunk-DlZTsV_O.js → chunk-BycB0eMI.js} +0 -0
- /package/payload/server/public/assets/{chunk-DlZTsV_O.js.br → chunk-BycB0eMI.js.br} +0 -0
- /package/payload/server/public/assets/{chunk-DlZTsV_O.js.gz → chunk-BycB0eMI.js.gz} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js → cytoscape.esm-BZ6NYo0w.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js.br → cytoscape.esm-BZ6NYo0w.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js.gz → cytoscape.esm-BZ6NYo0w.js.gz} +0 -0
- /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js → defaultLocale-DWHqsa6O.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js.br → defaultLocale-DWHqsa6O.js.br} +0 -0
- /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js.gz → defaultLocale-DWHqsa6O.js.gz} +0 -0
- /package/payload/server/public/assets/{file-download-CN4H4Eih.js → file-download-B7zwa78w.js} +0 -0
- /package/payload/server/public/assets/{file-download-CN4H4Eih.js.br → file-download-B7zwa78w.js.br} +0 -0
- /package/payload/server/public/assets/{file-download-CN4H4Eih.js.gz → file-download-B7zwa78w.js.gz} +0 -0
- /package/payload/server/public/assets/{init-ve51bpJo.js → init-BdkYWjJJ.js} +0 -0
- /package/payload/server/public/assets/{init-ve51bpJo.js.br → init-BdkYWjJJ.js.br} +0 -0
- /package/payload/server/public/assets/{init-ve51bpJo.js.gz → init-BdkYWjJJ.js.gz} +0 -0
- /package/payload/server/public/assets/{katex-CJNaolDQ.js → katex-BCzoGtFh.js} +0 -0
- /package/payload/server/public/assets/{katex-CJNaolDQ.js.br → katex-BCzoGtFh.js.br} +0 -0
- /package/payload/server/public/assets/{katex-CJNaolDQ.js.gz → katex-BCzoGtFh.js.gz} +0 -0
- /package/payload/server/public/assets/{path-B4emajHp.js → path-DY2qBuPM.js} +0 -0
- /package/payload/server/public/assets/{path-B4emajHp.js.br → path-DY2qBuPM.js.br} +0 -0
- /package/payload/server/public/assets/{path-B4emajHp.js.gz → path-DY2qBuPM.js.gz} +0 -0
- /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js → preload-helper-eAV8hweq.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js.br → preload-helper-eAV8hweq.js.br} +0 -0
- /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js.gz → preload-helper-eAV8hweq.js.gz} +0 -0
- /package/payload/server/public/assets/{rough.esm-zabqYs6f.js → rough.esm-ec8xsRC7.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-zabqYs6f.js.br → rough.esm-ec8xsRC7.js.br} +0 -0
- /package/payload/server/public/assets/{rough.esm-zabqYs6f.js.gz → rough.esm-ec8xsRC7.js.gz} +0 -0
|
@@ -41,14 +41,18 @@ describe("projectVisit", () => {
|
|
|
41
41
|
startDate: "2026-08-07T09:00:00.000Z",
|
|
42
42
|
endDate: null,
|
|
43
43
|
purpose: null,
|
|
44
|
-
workerId: "W1",
|
|
45
44
|
siteName: null,
|
|
46
45
|
customerId: null,
|
|
47
46
|
customerName: null,
|
|
48
47
|
jobType: null,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
attendances: [
|
|
49
|
+
{
|
|
50
|
+
workerId: "W1",
|
|
51
|
+
arrivedPressedAt: "2026-08-07T09:05:00.000Z",
|
|
52
|
+
arrivedObservedAt: "2026-08-07T08:58:00.000Z",
|
|
53
|
+
arrivedObservedDistanceM: 42,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
52
56
|
}),
|
|
53
57
|
);
|
|
54
58
|
expect(v.arrivedPressedAt).toBe("2026-08-07T09:05:00.000Z");
|
|
@@ -65,19 +69,114 @@ describe("projectVisit", () => {
|
|
|
65
69
|
startDate: null,
|
|
66
70
|
endDate: null,
|
|
67
71
|
purpose: null,
|
|
68
|
-
workerId: null,
|
|
69
72
|
siteName: null,
|
|
70
73
|
customerId: null,
|
|
71
74
|
customerName: null,
|
|
72
75
|
jobType: null,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
attendances: [
|
|
77
|
+
{
|
|
78
|
+
workerId: "W1",
|
|
79
|
+
arrivedPressedAt: null,
|
|
80
|
+
arrivedObservedAt: null,
|
|
81
|
+
arrivedObservedDistanceM: { low: 137, high: 0 },
|
|
82
|
+
},
|
|
83
|
+
],
|
|
76
84
|
}),
|
|
77
85
|
);
|
|
78
86
|
expect(v.arrivedObservedDistanceM).toBe(137);
|
|
79
87
|
});
|
|
80
88
|
|
|
89
|
+
// Task 2512. The shipped projection returned a scalar `workerId` off a second
|
|
90
|
+
// ATTENDED_BY edge, so a two-worker visit arrived as two records sharing one
|
|
91
|
+
// set of times and drew as two separate visits.
|
|
92
|
+
it("projects a single-attendance visit exactly as Task 2499 returned it", () => {
|
|
93
|
+
const v = projectVisit(
|
|
94
|
+
row({
|
|
95
|
+
visitId: "V5",
|
|
96
|
+
jobId: "J5",
|
|
97
|
+
status: "On site",
|
|
98
|
+
startDate: "2026-08-07T09:00:00.000Z",
|
|
99
|
+
endDate: null,
|
|
100
|
+
purpose: null,
|
|
101
|
+
siteName: null,
|
|
102
|
+
customerId: null,
|
|
103
|
+
customerName: null,
|
|
104
|
+
jobType: null,
|
|
105
|
+
attendances: [
|
|
106
|
+
{
|
|
107
|
+
workerId: "W1",
|
|
108
|
+
arrivedPressedAt: "2026-08-07T09:05:00.000Z",
|
|
109
|
+
arrivedObservedAt: null,
|
|
110
|
+
arrivedObservedDistanceM: null,
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
}),
|
|
114
|
+
);
|
|
115
|
+
expect(v.workerId).toBe("W1");
|
|
116
|
+
expect(v.arrivedPressedAt).toBe("2026-08-07T09:05:00.000Z");
|
|
117
|
+
expect(v.attendances).toHaveLength(1);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it("carries two workers on one visit, each with their own arrival", () => {
|
|
121
|
+
const v = projectVisit(
|
|
122
|
+
row({
|
|
123
|
+
visitId: "V6",
|
|
124
|
+
jobId: "J6",
|
|
125
|
+
status: "On site",
|
|
126
|
+
startDate: "2026-08-07T09:00:00.000Z",
|
|
127
|
+
endDate: null,
|
|
128
|
+
purpose: null,
|
|
129
|
+
siteName: null,
|
|
130
|
+
customerId: null,
|
|
131
|
+
customerName: null,
|
|
132
|
+
jobType: null,
|
|
133
|
+
attendances: [
|
|
134
|
+
{
|
|
135
|
+
workerId: "W2",
|
|
136
|
+
arrivedPressedAt: "2026-08-07T09:20:00.000Z",
|
|
137
|
+
arrivedObservedAt: null,
|
|
138
|
+
arrivedObservedDistanceM: null,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
workerId: "W1",
|
|
142
|
+
arrivedPressedAt: "2026-08-07T09:05:00.000Z",
|
|
143
|
+
arrivedObservedAt: null,
|
|
144
|
+
arrivedObservedDistanceM: null,
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
}),
|
|
148
|
+
);
|
|
149
|
+
expect(v.attendances).toHaveLength(2);
|
|
150
|
+
// Sorted, so two reads of one visit cannot order the names differently.
|
|
151
|
+
expect(v.attendances.map((a) => a.workerId)).toEqual(["W1", "W2"]);
|
|
152
|
+
expect(v.attendances[0].arrivedPressedAt).toBe("2026-08-07T09:05:00.000Z");
|
|
153
|
+
expect(v.attendances[1].arrivedPressedAt).toBe("2026-08-07T09:20:00.000Z");
|
|
154
|
+
// The sole-attendee scalars go null rather than picking one of the two: a
|
|
155
|
+
// silent cross-assignment shows one worker another's arrival.
|
|
156
|
+
expect(v.workerId).toBeNull();
|
|
157
|
+
expect(v.arrivedPressedAt).toBeNull();
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it("returns no attendances for an unallocated visit, never a list holding an empty entry", () => {
|
|
161
|
+
const v = projectVisit(
|
|
162
|
+
row({
|
|
163
|
+
visitId: "V7",
|
|
164
|
+
jobId: null,
|
|
165
|
+
status: "New",
|
|
166
|
+
startDate: null,
|
|
167
|
+
endDate: null,
|
|
168
|
+
purpose: null,
|
|
169
|
+
siteName: null,
|
|
170
|
+
customerId: null,
|
|
171
|
+
customerName: null,
|
|
172
|
+
jobType: null,
|
|
173
|
+
attendances: [],
|
|
174
|
+
}),
|
|
175
|
+
);
|
|
176
|
+
expect(v.attendances).toEqual([]);
|
|
177
|
+
expect(v.workerId).toBeNull();
|
|
178
|
+
});
|
|
179
|
+
|
|
81
180
|
it("renders an empty string as null so a blank never reads as a real value", () => {
|
|
82
181
|
const v = projectVisit(
|
|
83
182
|
row({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it, vi } from "vitest";
|
|
2
2
|
import { __setDriverForTests } from "../session.js";
|
|
3
|
-
import { readWorkerDay, readSiteHistory } from "../read.js";
|
|
3
|
+
import { readWorkerDay, readSiteHistory, readFieldVisit } from "../read.js";
|
|
4
4
|
import { workerForTelegramUser } from "../config.js";
|
|
5
5
|
import type { DispatchConfig } from "../types.js";
|
|
6
6
|
|
|
@@ -31,8 +31,23 @@ const ROW = {
|
|
|
31
31
|
customerName: "Acme",
|
|
32
32
|
contactName: "Jo Bell",
|
|
33
33
|
contactTelephone: "01234 567890",
|
|
34
|
+
addressed: false,
|
|
35
|
+
streetAddress: null,
|
|
36
|
+
addressLocality: null,
|
|
37
|
+
postalCode: null,
|
|
34
38
|
};
|
|
35
39
|
|
|
40
|
+
const ADDRESSED = {
|
|
41
|
+
...ROW,
|
|
42
|
+
addressed: true,
|
|
43
|
+
streetAddress: "12 High Street",
|
|
44
|
+
addressLocality: "Dunmow",
|
|
45
|
+
postalCode: "CM6 1EJ",
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const FROM = "2026-08-07T00:00:00.000Z";
|
|
49
|
+
const TO = "2026-08-08T00:00:00.000Z";
|
|
50
|
+
|
|
36
51
|
describe("readWorkerDay", () => {
|
|
37
52
|
it("returns the field card shape", async () => {
|
|
38
53
|
__setDriverForTests(driverReturning([ROW]));
|
|
@@ -48,17 +63,39 @@ describe("readWorkerDay", () => {
|
|
|
48
63
|
__setDriverForTests(null);
|
|
49
64
|
});
|
|
50
65
|
|
|
51
|
-
it("carries no address
|
|
66
|
+
it("carries no address key when the site has no AT_ADDRESS edge", async () => {
|
|
52
67
|
__setDriverForTests(driverReturning([ROW]));
|
|
53
|
-
const [visit] = await readWorkerDay(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
//
|
|
57
|
-
// keys must be ABSENT, not null, so the deferral to task 2514 cannot be
|
|
58
|
-
// half-implemented as an always-empty column that reads to a worker as
|
|
59
|
-
// "this site has no address".
|
|
68
|
+
const [visit] = await readWorkerDay("a1", "w1", FROM, TO);
|
|
69
|
+
// ABSENT, not null. An always-present key holding nulls reads to a worker
|
|
70
|
+
// as "this site has no address" rather than "we hold none for it", which is
|
|
71
|
+
// the reason task 2502 shipped no column at all.
|
|
60
72
|
expect(Object.keys(visit)).not.toContain("address");
|
|
61
|
-
|
|
73
|
+
__setDriverForTests(null);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("carries the address as one object when the edge exists", async () => {
|
|
77
|
+
__setDriverForTests(driverReturning([ADDRESSED]));
|
|
78
|
+
const [visit] = await readWorkerDay("a1", "w1", FROM, TO);
|
|
79
|
+
expect(visit.address).toEqual({
|
|
80
|
+
streetAddress: "12 High Street",
|
|
81
|
+
addressLocality: "Dunmow",
|
|
82
|
+
postalCode: "CM6 1EJ",
|
|
83
|
+
});
|
|
84
|
+
__setDriverForTests(null);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it("carries the address whole when the edge exists but a part is missing", async () => {
|
|
88
|
+
// The edge is what decides the key. A PostalAddress written without its
|
|
89
|
+
// locality is still an address the worker can drive to, and dropping the
|
|
90
|
+
// key would report the site as unaddressed while the census counted it
|
|
91
|
+
// addressed — the two would disagree.
|
|
92
|
+
__setDriverForTests(driverReturning([{ ...ADDRESSED, addressLocality: null }]));
|
|
93
|
+
const [visit] = await readWorkerDay("a1", "w1", FROM, TO);
|
|
94
|
+
expect(visit.address).toEqual({
|
|
95
|
+
streetAddress: "12 High Street",
|
|
96
|
+
addressLocality: null,
|
|
97
|
+
postalCode: "CM6 1EJ",
|
|
98
|
+
});
|
|
62
99
|
__setDriverForTests(null);
|
|
63
100
|
});
|
|
64
101
|
|
|
@@ -76,6 +113,128 @@ describe("readWorkerDay", () => {
|
|
|
76
113
|
expect(visit.contactName).toBeNull();
|
|
77
114
|
__setDriverForTests(null);
|
|
78
115
|
});
|
|
116
|
+
|
|
117
|
+
it("shows the caller their OWN arrival on a visit they share (Task 2512)", async () => {
|
|
118
|
+
// The sole-attendee rule returns null at two attendances, and a sheet
|
|
119
|
+
// showing no arrival to the worker who pressed it reads as a lost press.
|
|
120
|
+
// The worker day therefore reads arrival off the caller's own attendance,
|
|
121
|
+
// which the query returns in the `own*` columns.
|
|
122
|
+
__setDriverForTests(driverReturning([
|
|
123
|
+
{
|
|
124
|
+
...ROW,
|
|
125
|
+
attendances: [
|
|
126
|
+
{ workerId: "w1", arrivedPressedAt: "2026-08-07T08:12:00.000Z",
|
|
127
|
+
arrivedObservedAt: null, arrivedObservedDistanceM: null },
|
|
128
|
+
{ workerId: "w2", arrivedPressedAt: "2026-08-07T08:40:00.000Z",
|
|
129
|
+
arrivedObservedAt: null, arrivedObservedDistanceM: null },
|
|
130
|
+
],
|
|
131
|
+
ownArrivedPressedAt: "2026-08-07T08:12:00.000Z",
|
|
132
|
+
ownArrivedObservedAt: null,
|
|
133
|
+
ownArrivedObservedDistanceM: null,
|
|
134
|
+
},
|
|
135
|
+
]));
|
|
136
|
+
const [visit] = await readWorkerDay("a1", "w1", FROM, TO);
|
|
137
|
+
expect(visit.workerId).toBe("w1");
|
|
138
|
+
expect(visit.arrivedPressedAt).toBe("2026-08-07T08:12:00.000Z");
|
|
139
|
+
// Both workers reach the sheet, so it can name who they are working with.
|
|
140
|
+
expect(visit.attendances.map((a) => a.workerId)).toEqual(["w1", "w2"]);
|
|
141
|
+
__setDriverForTests(null);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it("is ONE card for a shared visit, never one per worker", async () => {
|
|
145
|
+
// The failure the task exists to end: a row per attendance rendered as two
|
|
146
|
+
// separate visits sharing one set of times.
|
|
147
|
+
__setDriverForTests(driverReturning([
|
|
148
|
+
{
|
|
149
|
+
...ROW,
|
|
150
|
+
attendances: [
|
|
151
|
+
{ workerId: "w1", arrivedPressedAt: null, arrivedObservedAt: null,
|
|
152
|
+
arrivedObservedDistanceM: null },
|
|
153
|
+
{ workerId: "w2", arrivedPressedAt: null, arrivedObservedAt: null,
|
|
154
|
+
arrivedObservedDistanceM: null },
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
]));
|
|
158
|
+
const visits = await readWorkerDay("a1", "w1", FROM, TO);
|
|
159
|
+
expect(visits).toHaveLength(1);
|
|
160
|
+
__setDriverForTests(null);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
describe("readFieldVisit", () => {
|
|
165
|
+
// The job sheet's read. It exists so the sheet and the today list share one
|
|
166
|
+
// projection: the sheet served a plain visit row, so its site name, customer
|
|
167
|
+
// and contact rendered as absent on every card since the sheet shipped.
|
|
168
|
+
it("returns the same field shape as the day read, for one visit", async () => {
|
|
169
|
+
const session = {
|
|
170
|
+
run: vi.fn(async () => ({
|
|
171
|
+
records: [{ get: (k: string) => (ADDRESSED as Record<string, unknown>)[k] }],
|
|
172
|
+
})),
|
|
173
|
+
} as never;
|
|
174
|
+
const visit = await readFieldVisit(session, "a1", "v1");
|
|
175
|
+
expect(visit?.siteName).toBe("Ladywell Prospect");
|
|
176
|
+
expect(visit?.contactTelephone).toBe("01234 567890");
|
|
177
|
+
expect(visit?.address?.postalCode).toBe("CM6 1EJ");
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
it("omits the address key for a site with no edge", async () => {
|
|
181
|
+
const session = {
|
|
182
|
+
run: vi.fn(async () => ({
|
|
183
|
+
records: [{ get: (k: string) => (ROW as Record<string, unknown>)[k] }],
|
|
184
|
+
})),
|
|
185
|
+
} as never;
|
|
186
|
+
const visit = await readFieldVisit(session, "a1", "v1");
|
|
187
|
+
expect(Object.keys(visit ?? {})).not.toContain("address");
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
it("returns null for a visit that is not on this account", async () => {
|
|
191
|
+
const session = { run: vi.fn(async () => ({ records: [] })) } as never;
|
|
192
|
+
expect(await readFieldVisit(session, "a1", "nope")).toBeNull();
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
it("names no single worker on a shared visit, and lists both (Task 2512)", async () => {
|
|
196
|
+
// This read applies no worker filter — the route does its own ownership
|
|
197
|
+
// check — so there is no "my" attendance to prefer. Answering "which single
|
|
198
|
+
// worker?" with either one would be a silent cross-assignment, so it
|
|
199
|
+
// answers with nothing and the list carries both.
|
|
200
|
+
const row = {
|
|
201
|
+
...ROW,
|
|
202
|
+
attendances: [
|
|
203
|
+
{ workerId: "w2", arrivedPressedAt: "2026-08-07T08:40:00.000Z",
|
|
204
|
+
arrivedObservedAt: null, arrivedObservedDistanceM: null },
|
|
205
|
+
{ workerId: "w1", arrivedPressedAt: "2026-08-07T08:12:00.000Z",
|
|
206
|
+
arrivedObservedAt: null, arrivedObservedDistanceM: null },
|
|
207
|
+
],
|
|
208
|
+
};
|
|
209
|
+
const session = {
|
|
210
|
+
run: vi.fn(async () => ({
|
|
211
|
+
records: [{ get: (k: string) => (row as Record<string, unknown>)[k] }],
|
|
212
|
+
})),
|
|
213
|
+
} as never;
|
|
214
|
+
const visit = await readFieldVisit(session, "a1", "v1");
|
|
215
|
+
expect(visit?.workerId).toBeNull();
|
|
216
|
+
expect(visit?.arrivedPressedAt).toBeNull();
|
|
217
|
+
// Sorted, so two reads of one visit cannot order the workers differently.
|
|
218
|
+
expect(visit?.attendances.map((a) => a.workerId)).toEqual(["w1", "w2"]);
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
it("still projects a one-worker visit exactly as before", async () => {
|
|
222
|
+
const row = {
|
|
223
|
+
...ROW,
|
|
224
|
+
attendances: [
|
|
225
|
+
{ workerId: "w1", arrivedPressedAt: "2026-08-07T08:12:00.000Z",
|
|
226
|
+
arrivedObservedAt: null, arrivedObservedDistanceM: null },
|
|
227
|
+
],
|
|
228
|
+
};
|
|
229
|
+
const session = {
|
|
230
|
+
run: vi.fn(async () => ({
|
|
231
|
+
records: [{ get: (k: string) => (row as Record<string, unknown>)[k] }],
|
|
232
|
+
})),
|
|
233
|
+
} as never;
|
|
234
|
+
const visit = await readFieldVisit(session, "a1", "v1");
|
|
235
|
+
expect(visit?.workerId).toBe("w1");
|
|
236
|
+
expect(visit?.arrivedPressedAt).toBe("2026-08-07T08:12:00.000Z");
|
|
237
|
+
});
|
|
79
238
|
});
|
|
80
239
|
|
|
81
240
|
describe("readSiteHistory", () => {
|
|
@@ -139,3 +298,49 @@ describe("workerForTelegramUser", () => {
|
|
|
139
298
|
expect(workerForTelegramUser(cfg, "")).toBeNull();
|
|
140
299
|
});
|
|
141
300
|
});
|
|
301
|
+
|
|
302
|
+
describe("a site with more than one address", () => {
|
|
303
|
+
// An OPTIONAL MATCH that finds two nodes returns two rows, so a site holding
|
|
304
|
+
// two AT_ADDRESS edges would put the same visit on a worker's list twice,
|
|
305
|
+
// each copy showing a different address. That state is reachable:
|
|
306
|
+
// `memory-write`'s edge check is warn-only, so nothing blocks a second edge.
|
|
307
|
+
//
|
|
308
|
+
// The collapse is in Cypher, so the query is what carries it. Asserting a row
|
|
309
|
+
// count against the fake driver would prove nothing — the fake returns the
|
|
310
|
+
// rows it was handed and models no aggregation.
|
|
311
|
+
function captureQuery() {
|
|
312
|
+
const seen: string[] = [];
|
|
313
|
+
__setDriverForTests({
|
|
314
|
+
session: () => ({
|
|
315
|
+
run: vi.fn(async (q: string) => {
|
|
316
|
+
seen.push(q);
|
|
317
|
+
return { records: [] };
|
|
318
|
+
}),
|
|
319
|
+
close: vi.fn(async () => {}),
|
|
320
|
+
}),
|
|
321
|
+
} as never);
|
|
322
|
+
return seen;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
it("collapses the day read to one address and one contact per visit", async () => {
|
|
326
|
+
const seen = captureQuery();
|
|
327
|
+
await readWorkerDay("a1", "w1", FROM, TO);
|
|
328
|
+
__setDriverForTests(null);
|
|
329
|
+
expect(seen, "no query was captured").toHaveLength(1);
|
|
330
|
+
expect(seen[0]).toContain("head(collect(DISTINCT pa0)) AS pa");
|
|
331
|
+
expect(seen[0]).toContain("head(collect(DISTINCT ct0)) AS ct");
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
it("collapses the sheet read the same way", async () => {
|
|
335
|
+
const seen: string[] = [];
|
|
336
|
+
const session = {
|
|
337
|
+
run: vi.fn(async (q: string) => {
|
|
338
|
+
seen.push(q);
|
|
339
|
+
return { records: [] };
|
|
340
|
+
}),
|
|
341
|
+
} as never;
|
|
342
|
+
await readFieldVisit(session, "a1", "v1");
|
|
343
|
+
expect(seen, "no query was captured").toHaveLength(1);
|
|
344
|
+
expect(seen[0]).toContain("head(collect(DISTINCT pa0)) AS pa");
|
|
345
|
+
});
|
|
346
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Distance to a site, and whether that counts as being there.
|
|
3
|
+
*
|
|
4
|
+
* The verdict names why it could not fire rather than returning a bare false.
|
|
5
|
+
* "This site has no coordinates", "this account configured no radius" and "the
|
|
6
|
+
* worker is four kilometres away" are three different problems with three
|
|
7
|
+
* different fixes, and a single boolean sends an operator to the wrong one.
|
|
8
|
+
*/
|
|
9
|
+
import type { DispatchConfig, SiteLocation } from "./types.js";
|
|
10
|
+
|
|
11
|
+
const EARTH_RADIUS_M = 6_371_000;
|
|
12
|
+
|
|
13
|
+
const toRad = (deg: number): number => (deg * Math.PI) / 180;
|
|
14
|
+
|
|
15
|
+
/** Great-circle distance in metres, rounded. */
|
|
16
|
+
export function distanceM(
|
|
17
|
+
a: { latitude: number; longitude: number },
|
|
18
|
+
b: { latitude: number; longitude: number },
|
|
19
|
+
): number {
|
|
20
|
+
const dLat = toRad(b.latitude - a.latitude);
|
|
21
|
+
const dLon = toRad(b.longitude - a.longitude);
|
|
22
|
+
const lat1 = toRad(a.latitude);
|
|
23
|
+
const lat2 = toRad(b.latitude);
|
|
24
|
+
const h =
|
|
25
|
+
Math.sin(dLat / 2) ** 2 + Math.sin(dLon / 2) ** 2 * Math.cos(lat1) * Math.cos(lat2);
|
|
26
|
+
return Math.round(2 * EARTH_RADIUS_M * Math.asin(Math.sqrt(h)));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface GeofenceVerdict {
|
|
30
|
+
siteHasCoords: boolean;
|
|
31
|
+
/** The site's own radius, else the account default, else null. */
|
|
32
|
+
radiusM: number | null;
|
|
33
|
+
/** Null when there is nothing to measure against. */
|
|
34
|
+
distanceM: number | null;
|
|
35
|
+
inside: boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function geofenceVerdict(p: {
|
|
39
|
+
site: SiteLocation | null;
|
|
40
|
+
cfg: DispatchConfig;
|
|
41
|
+
at: { latitude: number; longitude: number };
|
|
42
|
+
}): GeofenceVerdict {
|
|
43
|
+
const siteHasCoords =
|
|
44
|
+
p.site !== null && p.site.latitude !== null && p.site.longitude !== null;
|
|
45
|
+
const radiusM = p.site?.geofenceRadiusM ?? p.cfg.vehicles?.defaultGeofenceRadiusM ?? null;
|
|
46
|
+
if (!siteHasCoords) {
|
|
47
|
+
return { siteHasCoords: false, radiusM, distanceM: null, inside: false };
|
|
48
|
+
}
|
|
49
|
+
const d = distanceM(
|
|
50
|
+
{ latitude: p.site!.latitude as number, longitude: p.site!.longitude as number },
|
|
51
|
+
p.at,
|
|
52
|
+
);
|
|
53
|
+
// A distance with no radius to compare it against cannot say whether anybody
|
|
54
|
+
// arrived. Reported, never assumed.
|
|
55
|
+
return { siteHasCoords: true, radiusM, distanceM: d, inside: radiusM !== null && d <= radiusM };
|
|
56
|
+
}
|
|
@@ -18,6 +18,18 @@ export {
|
|
|
18
18
|
workerForTelegramUser,
|
|
19
19
|
} from "./config.js";
|
|
20
20
|
export type { RecordableField } from "./config.js";
|
|
21
|
+
|
|
22
|
+
// Task 2510 — the card's buttons and the press's wire format. Config-derived
|
|
23
|
+
// and pure, so the plugin that draws a card and the route that reads a press
|
|
24
|
+
// share one implementation rather than two encoders that can drift.
|
|
25
|
+
export {
|
|
26
|
+
CALLBACK_DATA_MAX_BYTES,
|
|
27
|
+
buildVisitKeyboard,
|
|
28
|
+
dispatchCallbackData,
|
|
29
|
+
parseDispatchCallback,
|
|
30
|
+
} from "./keyboard.js";
|
|
31
|
+
export type { DispatchButton, VisitKeyboard } from "./keyboard.js";
|
|
32
|
+
|
|
21
33
|
export { withSession } from "./session.js";
|
|
22
34
|
export { resolveAccountZone } from "./zone.js";
|
|
23
35
|
export {
|
|
@@ -34,21 +46,33 @@ export {
|
|
|
34
46
|
// Session-taking reads: the dispatch plugin's, moved here unchanged.
|
|
35
47
|
export {
|
|
36
48
|
buildJobListQuery,
|
|
49
|
+
projectFieldVisit,
|
|
37
50
|
projectJob,
|
|
38
51
|
projectVisit,
|
|
39
52
|
readCommitments,
|
|
53
|
+
readDraft,
|
|
54
|
+
readDrafts,
|
|
55
|
+
readFieldVisit,
|
|
40
56
|
readJob,
|
|
41
57
|
readJobs,
|
|
42
58
|
readNodeId,
|
|
59
|
+
readOpenVisitsForWorker,
|
|
60
|
+
readPreviousVisits,
|
|
43
61
|
readSiteHistory,
|
|
62
|
+
readSiteLocation,
|
|
44
63
|
readVisit,
|
|
45
64
|
readVisitRecordState,
|
|
46
65
|
readVisitsForJob,
|
|
47
66
|
readVisitsInWindow,
|
|
48
67
|
} from "./read.js";
|
|
49
68
|
|
|
69
|
+
// Task 2510 — the geofence maths. Pure, so it is asserted against real
|
|
70
|
+
// coordinates rather than against a mocked graph.
|
|
71
|
+
export { distanceM, geofenceVerdict } from "./geo.js";
|
|
72
|
+
export type { GeofenceVerdict } from "./geo.js";
|
|
73
|
+
|
|
50
74
|
// Session-owning reads: the planner's, so a route holds no graph access.
|
|
51
75
|
export { nonZuluStarts, readCounts, readDay, readJobList, readWorkerDay } from "./read.js";
|
|
52
76
|
|
|
53
|
-
export type { Commitment, VisitRecordState } from "./read.js";
|
|
77
|
+
export type { Commitment, DraftRow, PreviousVisit, VisitRecordState } from "./read.js";
|
|
54
78
|
export type * from "./types.js";
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The buttons on a dispatch card, and the wire format a press comes back on.
|
|
3
|
+
*
|
|
4
|
+
* One implementation for two processes. The dispatch MCP plugin draws the card;
|
|
5
|
+
* the UI server's webhook route reads the press and redraws it. Two encoders
|
|
6
|
+
* would be two authorities for one wire format, and the failure would be a
|
|
7
|
+
* button that does nothing with no line anywhere saying why.
|
|
8
|
+
*
|
|
9
|
+
* No status string appears below. The buttons are the account's own configured
|
|
10
|
+
* transitions out of the visit's current status, labelled with the account's own
|
|
11
|
+
* status names.
|
|
12
|
+
*/
|
|
13
|
+
import type { DispatchConfig } from "./types.js";
|
|
14
|
+
|
|
15
|
+
/** Bot API: "Data to be sent in a callback query to the bot when the button is
|
|
16
|
+
* pressed, UTF-8 1-64 bytes." Telegram refuses a longer button at send time
|
|
17
|
+
* with nothing in our logs to explain it, so the builder measures instead. */
|
|
18
|
+
export const CALLBACK_DATA_MAX_BYTES = 64;
|
|
19
|
+
|
|
20
|
+
/** The prefix that makes a press ours. A press without it belongs to some other
|
|
21
|
+
* keyboard and falls through the route untouched. */
|
|
22
|
+
const PREFIX = "d";
|
|
23
|
+
|
|
24
|
+
const SEP = ":";
|
|
25
|
+
|
|
26
|
+
export interface DispatchButton {
|
|
27
|
+
text: string;
|
|
28
|
+
callbackData?: string;
|
|
29
|
+
webAppUrl?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface VisitKeyboard {
|
|
33
|
+
rows: DispatchButton[][];
|
|
34
|
+
/** Transitions whose encoded data exceeded the cap. Named, never silent: a
|
|
35
|
+
* dropped button is a worker who cannot close a job. */
|
|
36
|
+
dropped: Array<{ status: string; bytes: number }>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* `d:<visitId>:<to>:<drawnFor>`.
|
|
41
|
+
*
|
|
42
|
+
* Status NAMES rather than indices into `cfg.statuses.visit`. Indices always fit
|
|
43
|
+
* the 64 bytes, but an operator reordering the status list would silently
|
|
44
|
+
* repoint every live button, and the stale check exists to catch a visit that
|
|
45
|
+
* moved on, not a config that did.
|
|
46
|
+
*/
|
|
47
|
+
export function dispatchCallbackData(p: {
|
|
48
|
+
visitId: string;
|
|
49
|
+
to: string;
|
|
50
|
+
drawnFor: string;
|
|
51
|
+
}): string {
|
|
52
|
+
return [PREFIX, p.visitId, p.to, p.drawnFor].join(SEP);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Null means "not ours". A status name containing a colon would split wrongly,
|
|
56
|
+
* so the parse requires exactly four parts rather than joining the tail. */
|
|
57
|
+
export function parseDispatchCallback(
|
|
58
|
+
data: string | null,
|
|
59
|
+
): { visitId: string; to: string; drawnFor: string } | null {
|
|
60
|
+
if (data === null) return null;
|
|
61
|
+
const parts = data.split(SEP);
|
|
62
|
+
if (parts.length !== 4 || parts[0] !== PREFIX) return null;
|
|
63
|
+
const [, visitId, to, drawnFor] = parts;
|
|
64
|
+
if (!visitId || !to || !drawnFor) return null;
|
|
65
|
+
return { visitId, to, drawnFor };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The card's buttons for a visit at `status`.
|
|
70
|
+
*
|
|
71
|
+
* One button per legal transition out of `status`, plus one `web_app` button
|
|
72
|
+
* opening the job sheet. `web_app` and never `url`: a `url` button sends the
|
|
73
|
+
* worker to the device browser, where Telegram has signed nothing and the sheet
|
|
74
|
+
* refuses him.
|
|
75
|
+
*/
|
|
76
|
+
export function buildVisitKeyboard(p: {
|
|
77
|
+
cfg: DispatchConfig;
|
|
78
|
+
visitId: string;
|
|
79
|
+
status: string;
|
|
80
|
+
sheetUrl: string;
|
|
81
|
+
}): VisitKeyboard {
|
|
82
|
+
const rows: DispatchButton[][] = [];
|
|
83
|
+
const dropped: Array<{ status: string; bytes: number }> = [];
|
|
84
|
+
|
|
85
|
+
for (const [from, to] of p.cfg.statuses.visitTransitions) {
|
|
86
|
+
if (from !== p.status) continue;
|
|
87
|
+
const callbackData = dispatchCallbackData({ visitId: p.visitId, to, drawnFor: p.status });
|
|
88
|
+
const bytes = Buffer.byteLength(callbackData, "utf8");
|
|
89
|
+
if (bytes > CALLBACK_DATA_MAX_BYTES) {
|
|
90
|
+
dropped.push({ status: to, bytes });
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
rows.push([{ text: to, callbackData }]);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
rows.push([{ text: p.cfg.vocabulary.visit, webAppUrl: p.sheetUrl }]);
|
|
97
|
+
return { rows, dropped };
|
|
98
|
+
}
|