@rubytech/create-sitedesk-code 0.1.523 → 0.1.525
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts +99 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js +228 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -0
- package/payload/platform/lib/agent-dispatch-rule/package.json +6 -0
- package/payload/platform/lib/agent-dispatch-rule/src/__tests__/rule.test.ts +384 -0
- package/payload/platform/lib/agent-dispatch-rule/src/index.ts +269 -0
- package/payload/platform/lib/agent-dispatch-rule/tsconfig.json +9 -0
- package/payload/platform/lib/agent-dispatch-rule/vitest.config.ts +9 -0
- package/payload/platform/lib/routine-templates/dist/roster.js +1 -1
- package/payload/platform/lib/routine-templates/src/roster.ts +1 -1
- package/payload/platform/package.json +2 -2
- package/payload/platform/plugins/admin/PLUGIN.md +1 -0
- package/payload/platform/plugins/admin/hooks/__tests__/mailbox-inject.test.sh +501 -0
- package/payload/platform/plugins/admin/hooks/mailbox-inject.sh +299 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +54 -21
- package/payload/platform/plugins/admin/skills/superpowers-sprint/SKILL.md +26 -0
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +49 -18
- package/payload/platform/plugins/docs/references/workflows.md +4 -2
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js +72 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js +4 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +4 -2
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +0 -6
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +24 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -1
- package/payload/platform/plugins/email/references/email-reference.md +1 -1
- package/payload/platform/plugins/memory/PLUGIN.md +10 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js +5 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/temporal-type-preserve.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/temporal-type-preserve.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/temporal-type-preserve.test.js +141 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/temporal-type-preserve.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js +6 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/temporal-type-preserve.d.ts +45 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/temporal-type-preserve.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/temporal-type-preserve.js +122 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/temporal-type-preserve.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js +26 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-type-preserve.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-type-preserve.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-type-preserve.test.js +201 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-type-preserve.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +89 -33
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js +322 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js +21 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts +13 -0
- package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js +16 -0
- package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/index.js +5 -5
- package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +6 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts +7 -0
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +122 -8
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -1
- package/payload/platform/plugins/scheduling/PLUGIN.md +26 -1
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +6 -4
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js +8 -36
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/meeting-retype.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/meeting-retype.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/meeting-retype.test.js +148 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/meeting-retype.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +10 -65
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +29 -122
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.d.ts +83 -6
- package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.js +90 -5
- package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js +111 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +38 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +116 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +13 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +81 -8
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-agent.test.js +39 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-agent.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js +305 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +9 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +46 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +172 -4
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/platform/plugins/scheduling/skills/routine-control/SKILL.md +48 -0
- package/payload/platform/plugins/sweep/skills/email-graph-sweep/SKILL.md +21 -7
- package/payload/platform/scripts/__tests__/check-canonical-tool-names.test.sh +162 -0
- package/payload/platform/scripts/__tests__/check-no-task-id-leaks.test.sh +53 -0
- package/payload/platform/scripts/__tests__/mailbox-inject-registered.test.sh +80 -0
- package/payload/platform/scripts/__tests__/task-id-citation.test.sh +72 -0
- package/payload/platform/scripts/check-canonical-tool-names.mjs +36 -4
- package/payload/platform/scripts/check-no-task-id-leaks.mjs +80 -62
- package/payload/platform/scripts/lib/__tests__/account-settings-mailbox-inject.test.sh +166 -0
- package/payload/platform/scripts/lib/account-settings-mailbox-inject.sh +91 -0
- package/payload/platform/scripts/lib/canonical-tool-names.mjs +130 -26
- package/payload/platform/scripts/lib/provision-account-dir.sh +1 -0
- package/payload/platform/scripts/lib/task-id-citation.mjs +67 -0
- package/payload/platform/scripts/setup-account.sh +15 -0
- package/payload/server/public/activity.html +5 -5
- package/payload/server/public/agents.html +4 -4
- package/payload/server/public/assets/{AdminLoginScreens-uknqh2Pm.js → AdminLoginScreens-BgDjueVe.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.gz +0 -0
- package/payload/server/public/assets/{AdminShell-GqtMImyQ.js → AdminShell-YctTrR-D.js} +1 -1
- package/payload/server/public/assets/AdminShell-YctTrR-D.js.br +0 -0
- package/payload/server/public/assets/AdminShell-YctTrR-D.js.gz +0 -0
- package/payload/server/public/assets/{activity-B4KfMJqO.js → activity-DGQt5ys_.js} +1 -1
- package/payload/server/public/assets/activity-DGQt5ys_.js.br +0 -0
- package/payload/server/public/assets/activity-DGQt5ys_.js.gz +0 -0
- package/payload/server/public/assets/admin-DnUxbB3P.js +1 -0
- package/payload/server/public/assets/admin-DnUxbB3P.js.br +0 -0
- package/payload/server/public/assets/admin-DnUxbB3P.js.gz +0 -0
- package/payload/server/public/assets/agents-Bc2LZjwC.js +1 -0
- package/payload/server/public/assets/agents-Bc2LZjwC.js.br +0 -0
- package/payload/server/public/assets/agents-Bc2LZjwC.js.gz +0 -0
- package/payload/server/public/assets/{arc-DaI5MLTq.js → arc-DaudCnXg.js} +1 -1
- package/payload/server/public/assets/arc-DaudCnXg.js.br +0 -0
- package/payload/server/public/assets/arc-DaudCnXg.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js +1 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CBGVUEN9.js → architectureDiagram-Q4EWVU46-BEEC3s7i.js} +1 -1
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.gz +0 -0
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DS6dS4GZ.js → blockDiagram-DXYQGD6D-BIWyfb18.js} +1 -1
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.gz +0 -0
- package/payload/server/public/assets/{browser-B3hSzI3O.js → browser-BtF7SzvG.js} +1 -1
- package/payload/server/public/assets/browser-BtF7SzvG.js.br +0 -0
- package/payload/server/public/assets/browser-BtF7SzvG.js.gz +0 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js → c4Diagram-AHTNJAMY--h6oE2cv.js} +1 -1
- package/payload/server/public/assets/c4Diagram-AHTNJAMY--h6oE2cv.js.br +0 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js.gz → c4Diagram-AHTNJAMY--h6oE2cv.js.gz} +0 -0
- package/payload/server/public/assets/{calendar-BggxXxhS.js → calendar-D25EhXbD.js} +1 -1
- package/payload/server/public/assets/calendar-D25EhXbD.js.br +0 -0
- package/payload/server/public/assets/calendar-D25EhXbD.js.gz +0 -0
- package/payload/server/public/assets/channel-TwxCDSpK.js +1 -0
- package/payload/server/public/assets/channel-TwxCDSpK.js.br +0 -0
- package/payload/server/public/assets/chat-z4jsHFXg.js +1 -0
- package/payload/server/public/assets/chat-z4jsHFXg.js.br +0 -0
- package/payload/server/public/assets/chat-z4jsHFXg.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-BD09SN6R.js +1 -0
- package/payload/server/public/assets/chevron-right-ChmWeo7T.js +1 -0
- package/payload/server/public/assets/chevron-right-ChmWeo7T.js.br +0 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-B6koUoB7.js → chunk-2KRD3SAO-BwEVlnxo.js} +1 -1
- package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.gz +0 -0
- package/payload/server/public/assets/{chunk-336JU56O-BF6BRh8u.js → chunk-336JU56O-DQddTATH.js} +2 -2
- package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js +1 -0
- package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-7sO95xR2.js → chunk-4BX2VUAB-C5p3xTC6.js} +1 -1
- package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4TB4RGXK-GCTndJYx.js → chunk-4TB4RGXK-gClfNc1w.js} +1 -1
- package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.gz +0 -0
- package/payload/server/public/assets/{chunk-55IACEB6-ggIJf_TC.js → chunk-55IACEB6-DDU_m1ra.js} +1 -1
- package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5FUZZQ4R-DeGmkimt.js → chunk-5FUZZQ4R-CZ2jQWNR.js} +1 -1
- package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5PVQY5BW-aFIQKk_U.js → chunk-5PVQY5BW-kcZ5kfTg.js} +1 -1
- package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.gz +0 -0
- package/payload/server/public/assets/{chunk-67CJDMHE-LS8rUbii.js → chunk-67CJDMHE-9W0Qv0jm.js} +1 -1
- package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.br +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.gz +0 -0
- package/payload/server/public/assets/{chunk-7N4EOEYR-JKOVngS0.js → chunk-7N4EOEYR-B3gqydR3.js} +1 -1
- package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.br +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.gz +0 -0
- package/payload/server/public/assets/{chunk-AA7GKIK3-CoXnTVK6.js → chunk-AA7GKIK3-DW8a-2NK.js} +1 -1
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.br +4 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
- package/payload/server/public/assets/{chunk-BSJP7CBP-CcsqObFg.js → chunk-BSJP7CBP-DqXIO_5R.js} +1 -1
- package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.gz +0 -0
- package/payload/server/public/assets/{chunk-CIAEETIT-CpsybR7q.js → chunk-CIAEETIT-BMJfgj2u.js} +1 -1
- package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.gz +0 -0
- package/payload/server/public/assets/{chunk-EDXVE4YY-BZ2I9PSq.js → chunk-EDXVE4YY-BxdLPk0b.js} +1 -1
- package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.br +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ENJZ2VHE-DbTwt6OZ.js → chunk-ENJZ2VHE-Cfe2DCjQ.js} +1 -1
- package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FMBD7UC4-D27VnSCa.js → chunk-FMBD7UC4-CdPjwbtf.js} +1 -1
- package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FOC6F5B3-C0tU2UFl.js → chunk-FOC6F5B3-Dl6l1KAh.js} +1 -1
- package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ICPOFSXX-UPPu2OIq.js → chunk-ICPOFSXX-PnsGrqtx.js} +2 -2
- package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.gz +0 -0
- package/payload/server/public/assets/{chunk-K5T4RW27-DIKxqyYw.js → chunk-K5T4RW27--g29_wjW.js} +1 -1
- package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.gz +0 -0
- package/payload/server/public/assets/{chunk-KGLVRYIC-CiL4YVLo.js → chunk-KGLVRYIC-CI77ENeO.js} +1 -1
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.br +3 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
- package/payload/server/public/assets/{chunk-LIHQZDEY-ejKezVlD.js → chunk-LIHQZDEY-CE-XByg6.js} +1 -1
- package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ORNJ4GCN-Cc0vqc-D.js → chunk-ORNJ4GCN-DkjJQQSm.js} +1 -1
- package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.gz +0 -0
- package/payload/server/public/assets/{chunk-OYMX7WX6-Drxn1qG0.js → chunk-OYMX7WX6-DhogFeD7.js} +1 -1
- package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js +1 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.gz +0 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-DnbQIkRP.js → chunk-U2HBQHQK-CeaRXuiO.js} +1 -1
- package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.gz +0 -0
- package/payload/server/public/assets/{chunk-X2U36JSP-CauTSVWg.js → chunk-X2U36JSP-BqxXeOqf.js} +1 -1
- package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.gz +0 -0
- package/payload/server/public/assets/{chunk-XPW4576I-DZqqB9Zi.js → chunk-XPW4576I-DtqJwn2x.js} +1 -1
- package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.gz +0 -0
- package/payload/server/public/assets/{chunk-YZCP3GAM-BGHo4Li-.js → chunk-YZCP3GAM-COBlEwQw.js} +1 -1
- package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ZZ45TVLE-DWGJKPd7.js → chunk-ZZ45TVLE-CcL088y6.js} +1 -1
- package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js +1 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.gz +0 -0
- package/payload/server/public/assets/clock-Yqf7Ke7I.js +1 -0
- package/payload/server/public/assets/clock-Yqf7Ke7I.js.br +0 -0
- package/payload/server/public/assets/clock-Yqf7Ke7I.js.gz +0 -0
- package/payload/server/public/assets/clone-B3vq32j7.js +1 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-D-95BzXL.js → cose-bilkent-S5V4N54A-kEHVkDNn.js} +1 -1
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.gz +0 -0
- package/payload/server/public/assets/{dagre-BZYNBHvT.js → dagre-D2wUw1zC.js} +1 -1
- package/payload/server/public/assets/dagre-D2wUw1zC.js.br +0 -0
- package/payload/server/public/assets/dagre-D2wUw1zC.js.gz +0 -0
- package/payload/server/public/assets/{dagre-KV5264BT-DyU4HQLQ.js → dagre-KV5264BT-BWfTDwEs.js} +1 -1
- package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.gz +0 -0
- package/payload/server/public/assets/data-RmnKj5nC.js +1 -0
- package/payload/server/public/assets/data-RmnKj5nC.js.br +2 -0
- package/payload/server/public/assets/data-RmnKj5nC.js.gz +0 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-CCttJ9XA.js → diagram-5BDNPKRD-Tl9dS8w0.js} +1 -1
- package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.gz +0 -0
- package/payload/server/public/assets/{diagram-G4DWMVQ6-DvkpgSLO.js → diagram-G4DWMVQ6-CeSe6TMu.js} +1 -1
- package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.gz +0 -0
- package/payload/server/public/assets/{diagram-MMDJMWI5-DHmW5Y9k.js → diagram-MMDJMWI5-DYBNJCmk.js} +1 -1
- package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.gz +0 -0
- package/payload/server/public/assets/{diagram-TYMM5635-C6T4hwzO.js → diagram-TYMM5635-BmpUGltx.js} +1 -1
- package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.gz +0 -0
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-5v_o7s3T.js → erDiagram-SMLLAGMA-DuwuNGqx.js} +1 -1
- package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.gz +0 -0
- package/payload/server/public/assets/file-download-CiGklOfA.js +1 -0
- package/payload/server/public/assets/file-download-CiGklOfA.js.br +0 -0
- package/payload/server/public/assets/file-download-CiGklOfA.js.gz +0 -0
- package/payload/server/public/assets/{file-text-BKs9eyiw.js → file-text-XjJPULAZ.js} +1 -1
- package/payload/server/public/assets/file-text-XjJPULAZ.js.br +0 -0
- package/payload/server/public/assets/file-text-XjJPULAZ.js.gz +0 -0
- package/payload/server/public/assets/{flatten-BtIc9jX7.js → flatten-Bu-b1uTY.js} +1 -1
- package/payload/server/public/assets/flatten-Bu-b1uTY.js.br +0 -0
- package/payload/server/public/assets/flatten-Bu-b1uTY.js.gz +0 -0
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-3UhCDsjt.js → flowDiagram-DWJPFMVM-Bpp8P6Ba.js} +1 -1
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.gz +0 -0
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-F2zgHIIQ.js → ganttDiagram-T4ZO3ILL-CE6ppjB4.js} +1 -1
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js +1 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-oQc1N3dT.js → gitGraphDiagram-UUTBAWPF-BdK1GjPr.js} +1 -1
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.gz +0 -0
- package/payload/server/public/assets/{graph-DTi71NaZ.js → graph-BjHJ0z_6.js} +1 -1
- package/payload/server/public/assets/graph-BjHJ0z_6.js.br +0 -0
- package/payload/server/public/assets/graph-BjHJ0z_6.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-BT3S6e9H.js → graph-labels-D-0u37KA.js} +1 -1
- package/payload/server/public/assets/graph-labels-D-0u37KA.js.br +0 -0
- package/payload/server/public/assets/graph-labels-D-0u37KA.js.gz +0 -0
- package/payload/server/public/assets/{graphlib-DY4-AT2Q.js → graphlib-CHEXylyU.js} +1 -1
- package/payload/server/public/assets/graphlib-CHEXylyU.js.br +0 -0
- package/payload/server/public/assets/graphlib-CHEXylyU.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js +1 -0
- package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js +2 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.gz +0 -0
- package/payload/server/public/assets/{isEmpty-Bu4fZ8Kf.js → isEmpty-CjH0UASp.js} +1 -1
- package/payload/server/public/assets/isEmpty-CjH0UASp.js.br +0 -0
- package/payload/server/public/assets/isEmpty-CjH0UASp.js.gz +0 -0
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-wJhSOkuw.js → ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js} +1 -1
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.gz +0 -0
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DgadC6Pz.js → journeyDiagram-VCZTEJTY-ByUPv8q6.js} +1 -1
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.gz +0 -0
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Bs4nQqXI.js → kanban-definition-6JOO6SKY-CFinqhpu.js} +1 -1
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.gz +0 -0
- package/payload/server/public/assets/{line-Bnmxy1hO.js → line-Y4ns5Ghi.js} +1 -1
- package/payload/server/public/assets/line-Y4ns5Ghi.js.br +0 -0
- package/payload/server/public/assets/line-Y4ns5Ghi.js.gz +0 -0
- package/payload/server/public/assets/{linear-RvwZxFzh.js → linear-l39GooQ5.js} +1 -1
- package/payload/server/public/assets/linear-l39GooQ5.js.br +0 -0
- package/payload/server/public/assets/linear-l39GooQ5.js.gz +0 -0
- package/payload/server/public/assets/{maximize-2-zC94tsxY.js → maximize-2-BJ9S-nfS.js} +1 -1
- package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.br +0 -0
- package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.gz +0 -0
- package/payload/server/public/assets/{mermaid-parser.core-DeNV8RtA.js → mermaid-parser.core-5w0T1dRj.js} +2 -2
- package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.gz +0 -0
- package/payload/server/public/assets/{mermaid.core-BU9IiSCP.js → mermaid.core-DBADY5VW.js} +3 -3
- package/payload/server/public/assets/mermaid.core-DBADY5VW.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-DBADY5VW.js.gz +0 -0
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-D1PMUxxm.js → mindmap-definition-QFDTVHPH-rHz37loq.js} +1 -1
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.gz +0 -0
- package/payload/server/public/assets/{operator-BtWNEMh-.js → operator-Cay4rOOK.js} +1 -1
- package/payload/server/public/assets/operator-Cay4rOOK.js.br +0 -0
- package/payload/server/public/assets/operator-Cay4rOOK.js.gz +0 -0
- package/payload/server/public/assets/{ordinal-C2TEWKNu.js → ordinal-D6D6WcTC.js} +1 -1
- package/payload/server/public/assets/ordinal-D6D6WcTC.js.br +0 -0
- package/payload/server/public/assets/ordinal-D6D6WcTC.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js +1 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
- package/payload/server/public/assets/{page-Ccl0FazM.js → page-Cci_j_y7.js} +3 -3
- package/payload/server/public/assets/page-Cci_j_y7.js.br +0 -0
- package/payload/server/public/assets/page-Cci_j_y7.js.gz +0 -0
- package/payload/server/public/assets/page-shuh4ES9.js +1 -0
- package/payload/server/public/assets/page-shuh4ES9.js.br +0 -0
- package/payload/server/public/assets/page-shuh4ES9.js.gz +0 -0
- package/payload/server/public/assets/{pdf-render-C257cidb.js → pdf-render-BSgBp8Fr.js} +1 -1
- package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.br +0 -0
- package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js +1 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-BzdNzoKA.js → pieDiagram-DEJITSTG-as0e_DSH.js} +1 -1
- package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.gz +0 -0
- package/payload/server/public/assets/{public-BpC6cn9S.js → public-BbJcQGsO.js} +1 -1
- package/payload/server/public/assets/public-BbJcQGsO.js.br +0 -0
- package/payload/server/public/assets/public-BbJcQGsO.js.gz +0 -0
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-oFr1MJRO.js → quadrantDiagram-34T5L4WZ-B4t8HO9J.js} +1 -1
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js +1 -0
- package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
- package/payload/server/public/assets/{reduce-BGpN5lgn.js → reduce-BtXXK8Ma.js} +1 -1
- package/payload/server/public/assets/reduce-BtXXK8Ma.js.br +0 -0
- package/payload/server/public/assets/reduce-BtXXK8Ma.js.gz +0 -0
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-C9QBQxDh.js → requirementDiagram-MS252O5E-yxh30zHX.js} +1 -1
- package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-BNcqbHkZ.js → rotate-ccw-jeSVwUAv.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.gz +0 -0
- package/payload/server/public/assets/routines-D3M1Wh3a.js +1 -0
- package/payload/server/public/assets/routines-D3M1Wh3a.js.br +0 -0
- package/payload/server/public/assets/routines-D3M1Wh3a.js.gz +0 -0
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-c_y3bvVv.js → sankeyDiagram-XADWPNL6-j-k9Wfty.js} +1 -1
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.gz +0 -0
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-YwlCBPHE.js → sequenceDiagram-FGHM5R23-DGLgcLhC.js} +1 -1
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.gz +0 -0
- package/payload/server/public/assets/{skills-COLAw_jt.js → skills-Bhej2ub1.js} +1 -1
- package/payload/server/public/assets/skills-Bhej2ub1.js.br +0 -0
- package/payload/server/public/assets/skills-Bhej2ub1.js.gz +0 -0
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BFE3e-FM.js → stateDiagram-FHFEXIEX-C9p1OUMI.js} +1 -1
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js +1 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.gz +0 -0
- package/payload/server/public/assets/{tasks-CZDQI4nB.js → tasks-qY-dtOI2.js} +1 -1
- package/payload/server/public/assets/tasks-qY-dtOI2.js.br +0 -0
- package/payload/server/public/assets/tasks-qY-dtOI2.js.gz +0 -0
- package/payload/server/public/assets/{time-entry-format-laTFzawg.js → time-entry-format-r5UY9rjG.js} +1 -1
- package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.gz +0 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-azqhmRwZ.js → timeline-definition-GMOUNBTQ-B1g7pgkH.js} +1 -1
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js +1 -0
- package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
- package/payload/server/public/assets/{triangle-alert-DrwqhEog.js → triangle-alert--PCKaewD.js} +1 -1
- package/payload/server/public/assets/triangle-alert--PCKaewD.js.br +2 -0
- package/payload/server/public/assets/triangle-alert--PCKaewD.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-Cxme5GK6.js → useCopyFeedback-Dg5lNgqH.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css +1 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.gz +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-DUBpVa2T.js → useVoiceRecorder-BY6ZsGMH.js} +2 -2
- package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.gz +0 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-Da2RfFs8.js → vennDiagram-DHZGUBPP-D2ZjFfh4.js} +1 -1
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js +1 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-HdrdBYES.js → wardleyDiagram-NUSXRM2D-BFAhfkD8.js} +1 -1
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.gz +0 -0
- package/payload/server/public/assets/{wrench-DWuxPnzF.js → wrench-Bw1FMolk.js} +1 -1
- package/payload/server/public/assets/wrench-Bw1FMolk.js.br +0 -0
- package/payload/server/public/assets/wrench-Bw1FMolk.js.gz +0 -0
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DMk6rTcQ.js → xychartDiagram-5P7HB3ND-Dt94h2RQ.js} +1 -1
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.gz +0 -0
- package/payload/server/public/brand-defaults.css +1 -0
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +7 -7
- package/payload/server/public/chat.html +14 -14
- package/payload/server/public/data.html +13 -12
- package/payload/server/public/graph.html +9 -9
- package/payload/server/public/index.html +16 -15
- package/payload/server/public/operator.html +15 -15
- package/payload/server/public/public.html +14 -14
- package/payload/server/public/routines.html +7 -6
- package/payload/server/public/skills.html +5 -5
- package/payload/server/public/tasks.html +6 -6
- package/payload/server/server.js +744 -425
- package/payload/platform/.docs/search-surface-contract.md +0 -58
- package/payload/platform/docs/superpowers/plans/2026-06-02-task-610-follower-202-retry.md +0 -372
- package/payload/platform/docs/superpowers/plans/2026-06-04-public-agent-knowledge-delivery.md +0 -230
- package/payload/platform/docs/superpowers/plans/2026-06-23-account-filesystem-schema.md +0 -544
- package/payload/platform/docs/superpowers/plans/2026-07-11-task-1557-operator-on-behalf-preference-attribution.md +0 -542
- package/payload/platform/docs/superpowers/plans/2026-07-13-account-schema-ontology-projection.md +0 -547
- package/payload/platform/docs/superpowers/plans/2026-07-14-graph-top-level-labels-ontology-single-source.md +0 -458
- package/payload/platform/docs/superpowers/plans/2026-07-17-task-1736-retire-mcp-stderr-tee.md +0 -397
- package/payload/platform/docs/superpowers/plans/2026-07-18-graph-native-ledger.md +0 -807
- package/payload/platform/docs/superpowers/plans/2026-07-18-ledger-write-path-fix.md +0 -109
- package/payload/platform/docs/superpowers/plans/2026-07-20-storage-pages-create.md +0 -82
- package/payload/platform/docs/superpowers/plans/2026-07-20-task-1704-data-portal-standing-audit.md +0 -673
- package/payload/platform/docs/superpowers/plans/2026-07-20-task-1789-reseat-channel-row-fork.md +0 -1244
- package/payload/platform/docs/superpowers/plans/2026-07-20-task-1818-loop-gate-app-routes.md +0 -462
- package/payload/platform/docs/superpowers/plans/2026-07-20-task-1819-top-level-label-allowlist.md +0 -321
- package/payload/platform/docs/superpowers/plans/2026-07-20-task-1829-platform-ui-typecheck.md +0 -830
- package/payload/platform/docs/superpowers/plans/2026-07-20-task-1831-data-portal-class-derived-allowlist.md +0 -2177
- package/payload/platform/docs/superpowers/plans/2026-07-21-graph-caption-resolver.md +0 -124
- package/payload/platform/docs/superpowers/plans/2026-07-21-task-1877-bash-schema-enforcement.md +0 -107
- package/payload/platform/docs/superpowers/plans/2026-07-21-task-1887-reconcile-allowed-top-level.md +0 -205
- package/payload/platform/docs/superpowers/plans/2026-07-22-task-1899-reconcile-report-only.md +0 -748
- package/payload/platform/docs/superpowers/plans/2026-07-22-task-1910-two-way-portal-exchange.md +0 -1716
- package/payload/platform/docs/superpowers/plans/2026-07-23-task-1930-adherence-enforcement.md +0 -422
- package/payload/platform/docs/superpowers/plans/2026-07-24-task-1942-subaccount-switcher-brand-head.md +0 -327
- package/payload/platform/docs/superpowers/plans/2026-07-25-task-1974-uploads-intake-inbox.md +0 -235
- package/payload/platform/docs/superpowers/plans/2026-07-25-task-1976-intra-folder-hygiene.md +0 -215
- package/payload/platform/docs/superpowers/plans/2026-07-26-task-1902-account-owned-entry-declarations.md +0 -555
- package/payload/platform/docs/superpowers/plans/2026-07-26-task-1926-portal-push-concurrency-guard.md +0 -482
- package/payload/platform/docs/superpowers/plans/2026-07-26-task-2023-sidebar-sessions-async-reads.md +0 -394
- package/payload/platform/docs/superpowers/plans/2026-07-27-task-2016-disabled-agent-routing.md +0 -624
- package/payload/platform/docs/superpowers/plans/2026-07-27-task-2028-declared-file-write-deny.md +0 -303
- package/payload/platform/docs/superpowers/plans/2026-07-27-task-2052-account-machinery-write-fence.md +0 -250
- package/payload/platform/docs/superpowers/plans/2026-07-28-task-2097-email-signature-set.md +0 -65
- package/payload/platform/docs/superpowers/specs/2026-06-02-task-610-follower-202-retry-design.md +0 -116
- package/payload/platform/docs/superpowers/specs/2026-06-23-account-filesystem-schema-design.md +0 -170
- package/payload/platform/docs/superpowers/specs/2026-07-11-task-1557-operator-on-behalf-preference-attribution-design.md +0 -90
- package/payload/platform/docs/superpowers/specs/2026-07-13-account-schema-ontology-projection-design.md +0 -178
- package/payload/platform/docs/superpowers/specs/2026-07-14-graph-top-level-labels-ontology-single-source-design.md +0 -119
- package/payload/platform/docs/superpowers/specs/2026-07-17-task-1736-retire-mcp-stderr-tee-design.md +0 -128
- package/payload/platform/docs/superpowers/specs/2026-07-18-graph-native-ledger-design.md +0 -241
- package/payload/platform/docs/superpowers/specs/2026-07-20-task-1704-data-portal-standing-audit-design.md +0 -177
- package/payload/platform/docs/superpowers/specs/2026-07-20-task-1789-reseat-channel-row-fork-design.md +0 -201
- package/payload/platform/docs/superpowers/specs/2026-07-20-task-1818-loop-gate-app-routes-design.md +0 -217
- package/payload/platform/docs/superpowers/specs/2026-07-20-task-1819-top-level-label-allowlist-design.md +0 -80
- package/payload/platform/docs/superpowers/specs/2026-07-20-task-1820-cpu-triage-admin-tools-design.md +0 -97
- package/payload/platform/docs/superpowers/specs/2026-07-20-task-1829-platform-ui-typecheck-design.md +0 -163
- package/payload/platform/docs/superpowers/specs/2026-07-20-task-1831-data-portal-class-derived-allowlist-design.md +0 -163
- package/payload/platform/docs/superpowers/specs/2026-07-22-task-1899-reconcile-report-only-design.md +0 -121
- package/payload/platform/docs/superpowers/specs/2026-07-22-task-1910-two-way-portal-exchange-design.md +0 -103
- package/payload/platform/docs/superpowers/specs/2026-07-23-task-1930-adherence-enforcement-design.md +0 -81
- package/payload/platform/docs/superpowers/specs/2026-07-24-task-1942-subaccount-switcher-brand-head-design.md +0 -35
- package/payload/platform/docs/superpowers/specs/2026-07-26-task-1902-account-owned-entry-declarations-design.md +0 -232
- package/payload/platform/docs/superpowers/specs/2026-07-26-task-1926-portal-push-concurrency-guard-design.md +0 -200
- package/payload/platform/docs/superpowers/specs/2026-07-26-task-2014-ui-suite-nondeterminism-design.md +0 -169
- package/payload/platform/docs/superpowers/specs/2026-07-27-task-2016-disabled-agent-routing-design.md +0 -139
- package/payload/platform/docs/superpowers/specs/2026-07-27-task-2028-declared-file-write-deny-design.md +0 -127
- package/payload/platform/docs/superpowers/specs/2026-07-27-task-2052-account-machinery-write-fence-design.md +0 -150
- package/payload/platform/docs/superpowers/specs/2026-07-28-task-2097-email-signature-set-design.md +0 -155
- package/payload/server/public/assets/AdminLoginScreens-uknqh2Pm.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-uknqh2Pm.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-GqtMImyQ.js.br +0 -0
- package/payload/server/public/assets/AdminShell-GqtMImyQ.js.gz +0 -0
- package/payload/server/public/assets/activity-B4KfMJqO.js.br +0 -0
- package/payload/server/public/assets/activity-B4KfMJqO.js.gz +0 -0
- package/payload/server/public/assets/admin-DxCZeVw0.js +0 -1
- package/payload/server/public/assets/admin-DxCZeVw0.js.br +0 -0
- package/payload/server/public/assets/admin-DxCZeVw0.js.gz +0 -0
- package/payload/server/public/assets/agents-BtwBuO4G.js +0 -1
- package/payload/server/public/assets/agents-BtwBuO4G.js.br +0 -0
- package/payload/server/public/assets/agents-BtwBuO4G.js.gz +0 -0
- package/payload/server/public/assets/arc-DaI5MLTq.js.br +0 -0
- package/payload/server/public/assets/arc-DaI5MLTq.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.gz +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.gz +0 -0
- package/payload/server/public/assets/browser-B3hSzI3O.js.br +0 -0
- package/payload/server/public/assets/browser-B3hSzI3O.js.gz +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-hBSBUZPt.js.br +0 -0
- package/payload/server/public/assets/calendar-BggxXxhS.js.br +0 -0
- package/payload/server/public/assets/calendar-BggxXxhS.js.gz +0 -0
- package/payload/server/public/assets/channel-BEokjAeE.js +0 -1
- package/payload/server/public/assets/channel-BEokjAeE.js.br +0 -0
- package/payload/server/public/assets/chat-flivHt0t.js +0 -1
- package/payload/server/public/assets/chat-flivHt0t.js.br +0 -0
- package/payload/server/public/assets/chat-flivHt0t.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-nVRThX7f.js +0 -1
- package/payload/server/public/assets/chevron-right-CLqfrkRA.js +0 -1
- package/payload/server/public/assets/chevron-right-CLqfrkRA.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.gz +0 -0
- package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.gz +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.gz +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.gz +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.gz +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.gz +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.gz +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.br +0 -2
- package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.gz +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.br +0 -2
- package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.gz +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.br +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.gz +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.gz +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.gz +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.br +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.gz +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.gz +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.gz +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.gz +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.gz +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.gz +0 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.br +0 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.gz +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.gz +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.gz +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.gz +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.gz +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.gz +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.gz +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.gz +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.gz +0 -0
- package/payload/server/public/assets/clock-Dj3SRZKo.js +0 -1
- package/payload/server/public/assets/clock-Dj3SRZKo.js.br +0 -0
- package/payload/server/public/assets/clock-Dj3SRZKo.js.gz +0 -0
- package/payload/server/public/assets/clone-Bn7XXVhr.js +0 -1
- package/payload/server/public/assets/clone-Bn7XXVhr.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.gz +0 -0
- package/payload/server/public/assets/dagre-BZYNBHvT.js.br +0 -0
- package/payload/server/public/assets/dagre-BZYNBHvT.js.gz +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.gz +0 -0
- package/payload/server/public/assets/data-Ckjkne54.js +0 -1
- package/payload/server/public/assets/data-Ckjkne54.js.br +0 -3
- package/payload/server/public/assets/data-Ckjkne54.js.gz +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.gz +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.gz +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.gz +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.gz +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.gz +0 -0
- package/payload/server/public/assets/file-text-BKs9eyiw.js.br +0 -0
- package/payload/server/public/assets/file-text-BKs9eyiw.js.gz +0 -0
- package/payload/server/public/assets/flatten-BtIc9jX7.js.br +0 -0
- package/payload/server/public/assets/flatten-BtIc9jX7.js.gz +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.gz +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.gz +0 -0
- package/payload/server/public/assets/graph-DTi71NaZ.js.br +0 -0
- package/payload/server/public/assets/graph-DTi71NaZ.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-BT3S6e9H.js.br +0 -0
- package/payload/server/public/assets/graph-labels-BT3S6e9H.js.gz +0 -0
- package/payload/server/public/assets/graphlib-DY4-AT2Q.js.br +0 -0
- package/payload/server/public/assets/graphlib-DY4-AT2Q.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js +0 -2
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.gz +0 -0
- package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.br +0 -0
- package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.gz +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.gz +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.gz +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.gz +0 -0
- package/payload/server/public/assets/line-Bnmxy1hO.js.br +0 -0
- package/payload/server/public/assets/line-Bnmxy1hO.js.gz +0 -0
- package/payload/server/public/assets/linear-RvwZxFzh.js.br +0 -0
- package/payload/server/public/assets/linear-RvwZxFzh.js.gz +0 -0
- package/payload/server/public/assets/maximize-2-zC94tsxY.js.br +0 -0
- package/payload/server/public/assets/maximize-2-zC94tsxY.js.gz +0 -0
- package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.gz +0 -0
- package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.gz +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.gz +0 -0
- package/payload/server/public/assets/operator-BtWNEMh-.js.br +0 -0
- package/payload/server/public/assets/operator-BtWNEMh-.js.gz +0 -0
- package/payload/server/public/assets/ordinal-C2TEWKNu.js.br +0 -0
- package/payload/server/public/assets/ordinal-C2TEWKNu.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js +0 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js.br +0 -0
- package/payload/server/public/assets/page-BFm91p0e.js +0 -1
- package/payload/server/public/assets/page-BFm91p0e.js.br +0 -0
- package/payload/server/public/assets/page-BFm91p0e.js.gz +0 -0
- package/payload/server/public/assets/page-Ccl0FazM.js.br +0 -0
- package/payload/server/public/assets/page-Ccl0FazM.js.gz +0 -0
- package/payload/server/public/assets/pdf-render-C257cidb.js.br +0 -0
- package/payload/server/public/assets/pdf-render-C257cidb.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.gz +0 -0
- package/payload/server/public/assets/public-BpC6cn9S.js.br +0 -0
- package/payload/server/public/assets/public-BpC6cn9S.js.gz +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js.br +0 -0
- package/payload/server/public/assets/reduce-BGpN5lgn.js.br +0 -0
- package/payload/server/public/assets/reduce-BGpN5lgn.js.gz +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-BNcqbHkZ.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-BNcqbHkZ.js.gz +0 -0
- package/payload/server/public/assets/routines-D5iia-XG.js +0 -1
- package/payload/server/public/assets/routines-D5iia-XG.js.br +0 -0
- package/payload/server/public/assets/routines-D5iia-XG.js.gz +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.gz +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.gz +0 -0
- package/payload/server/public/assets/skills-COLAw_jt.js.br +0 -0
- package/payload/server/public/assets/skills-COLAw_jt.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.br +0 -4
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.gz +0 -0
- package/payload/server/public/assets/tasks-CZDQI4nB.js.br +0 -0
- package/payload/server/public/assets/tasks-CZDQI4nB.js.gz +0 -0
- package/payload/server/public/assets/time-entry-format-laTFzawg.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-laTFzawg.js.gz +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-DrwqhEog.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-DrwqhEog.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-Cxme5GK6.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-Cxme5GK6.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css +0 -1
- package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DUBpVa2T.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DUBpVa2T.js.gz +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js +0 -1
- package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.gz +0 -0
- package/payload/server/public/assets/wrench-DWuxPnzF.js.br +0 -0
- package/payload/server/public/assets/wrench-DWuxPnzF.js.gz +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.gz +0 -0
- /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js → _baseFor-B12He5Rp.js} +0 -0
- /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.br → _baseFor-B12He5Rp.js.br} +0 -0
- /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.gz → _baseFor-B12He5Rp.js.gz} +0 -0
- /package/payload/server/public/assets/{array-X0JlPOfd.js → array-DO1uCttT.js} +0 -0
- /package/payload/server/public/assets/{array-X0JlPOfd.js.br → array-DO1uCttT.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js → cytoscape.esm-DFn2foqy.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.br → cytoscape.esm-DFn2foqy.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.gz → cytoscape.esm-DFn2foqy.js.gz} +0 -0
- /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js → defaultLocale-ieI3yFoA.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.br → defaultLocale-ieI3yFoA.js.br} +0 -0
- /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.gz → defaultLocale-ieI3yFoA.js.gz} +0 -0
- /package/payload/server/public/assets/{dist-QvbmK1IP.js → dist-DlU7AEeD.js} +0 -0
- /package/payload/server/public/assets/{dist-QvbmK1IP.js.br → dist-DlU7AEeD.js.br} +0 -0
- /package/payload/server/public/assets/{dist-QvbmK1IP.js.gz → dist-DlU7AEeD.js.gz} +0 -0
- /package/payload/server/public/assets/{init-BmUWJJHz.js → init-BCRlEgNP.js} +0 -0
- /package/payload/server/public/assets/{init-BmUWJJHz.js.br → init-BCRlEgNP.js.br} +0 -0
- /package/payload/server/public/assets/{init-BmUWJJHz.js.gz → init-BCRlEgNP.js.gz} +0 -0
- /package/payload/server/public/assets/{katex-BjZuzSQn.js → katex-gkTaZgi6.js} +0 -0
- /package/payload/server/public/assets/{katex-BjZuzSQn.js.br → katex-gkTaZgi6.js.br} +0 -0
- /package/payload/server/public/assets/{katex-BjZuzSQn.js.gz → katex-gkTaZgi6.js.gz} +0 -0
- /package/payload/server/public/assets/{path-CoPyR7c2.js → path-DTmzQFjQ.js} +0 -0
- /package/payload/server/public/assets/{path-CoPyR7c2.js.br → path-DTmzQFjQ.js.br} +0 -0
- /package/payload/server/public/assets/{path-CoPyR7c2.js.gz → path-DTmzQFjQ.js.gz} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js → preload-helper-eAV8hweq.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.br → preload-helper-eAV8hweq.js.br} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.gz → preload-helper-eAV8hweq.js.gz} +0 -0
- /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js → rough.esm-BFJ-MgcB.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.br → rough.esm-BFJ-MgcB.js.br} +0 -0
- /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.gz → rough.esm-BFJ-MgcB.js.gz} +0 -0
- /package/payload/server/public/assets/{src-C2WwTWSY.js → src-9CNk4JU0.js} +0 -0
- /package/payload/server/public/assets/{src-C2WwTWSY.js.br → src-9CNk4JU0.js.br} +0 -0
- /package/payload/server/public/assets/{src-C2WwTWSY.js.gz → src-9CNk4JU0.js.gz} +0 -0
- /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js → useSubAccountSwitcher-CnpeWIYq.js} +0 -0
- /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js.br → useSubAccountSwitcher-CnpeWIYq.js.br} +0 -0
- /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js.gz → useSubAccountSwitcher-CnpeWIYq.js.gz} +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// Task 2148 — two halves of the same blindness.
|
|
2
|
+
//
|
|
3
|
+
// `memory-update` retyped five :Meeting timestamps to strings on one account.
|
|
4
|
+
// A STRING-to-DATETIME comparison in Neo4j is NULL, so every calendar reader
|
|
5
|
+
// dropped those rows silently and the booking page published a golf afternoon
|
|
6
|
+
// as open time. The standing drift audit that exists to catch exactly that read
|
|
7
|
+
// `MATCH (b:ConnectorBusy ...)` and nothing else, so it reported
|
|
8
|
+
// `busy=3 conflicts=0 outcome=verified` throughout — an all-clear that was
|
|
9
|
+
// structurally incapable of seeing a meeting.
|
|
10
|
+
//
|
|
11
|
+
// `classifyMeetingRetype` decides which corrupted rows the standing repair can
|
|
12
|
+
// restore. `censusBusyIntervals` splits the busy census by source, so one total
|
|
13
|
+
// can no longer read as healthy when the meeting leg is empty.
|
|
14
|
+
import { describe, it, expect } from "vitest";
|
|
15
|
+
import { classifyRetypeError, censusBusyIntervals, classifyPublishedDrift, planBlockWrites, MEETING_RETYPE_SELECT, MEETING_RETYPE_APPLY, BUSY_UNION_SELECT, } from "../booking-reconcile.js";
|
|
16
|
+
describe("classifyRetypeError", () => {
|
|
17
|
+
it("calls a Neo4j client error a verdict on the value", () => {
|
|
18
|
+
const err = Object.assign(new Error("Text cannot be parsed to a DateTime"), {
|
|
19
|
+
code: "Neo.ClientError.Statement.ArgumentError",
|
|
20
|
+
});
|
|
21
|
+
expect(classifyRetypeError(err)).toBe("unparseable");
|
|
22
|
+
});
|
|
23
|
+
it("calls anything else a failed write, not a bad value", () => {
|
|
24
|
+
// A timeout says nothing about the timestamp. Counting it as unparseable
|
|
25
|
+
// would tell the operator a row needs a human when it needs a retry.
|
|
26
|
+
const transient = Object.assign(new Error("Connection was closed"), {
|
|
27
|
+
code: "Neo.TransientError.General.DatabaseUnavailable",
|
|
28
|
+
});
|
|
29
|
+
expect(classifyRetypeError(transient)).toBe("failed");
|
|
30
|
+
expect(classifyRetypeError(new Error("socket hang up"))).toBe("failed");
|
|
31
|
+
expect(classifyRetypeError(null)).toBe("failed");
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe("the retype Cypher", () => {
|
|
35
|
+
it("selects only meetings whose bounds are stored as strings", () => {
|
|
36
|
+
// A repaired row stops matching, which is what keeps this a standing repair
|
|
37
|
+
// rather than a migration someone has to remember to delete.
|
|
38
|
+
expect(MEETING_RETYPE_SELECT).toContain("MATCH (m:Meeting {accountId: $accountId})");
|
|
39
|
+
expect(MEETING_RETYPE_SELECT).toContain("valueType(m.startsAt) STARTS WITH 'STRING'");
|
|
40
|
+
expect(MEETING_RETYPE_SELECT).toContain("valueType(m.endsAt) STARTS WITH 'STRING'");
|
|
41
|
+
});
|
|
42
|
+
it("rebuilds each string bound with datetime() and leaves a null bound alone", () => {
|
|
43
|
+
expect(MEETING_RETYPE_APPLY).toContain("datetime($startsAt)");
|
|
44
|
+
expect(MEETING_RETYPE_APPLY).toContain("datetime($endsAt)");
|
|
45
|
+
expect(MEETING_RETYPE_APPLY).toContain("$startsAt IS NULL");
|
|
46
|
+
expect(MEETING_RETYPE_APPLY).toContain("$endsAt IS NULL");
|
|
47
|
+
});
|
|
48
|
+
it("re-asserts the label and account on the write, not just on the select", () => {
|
|
49
|
+
// Account scope is a property; a write carrying none cannot enforce it.
|
|
50
|
+
expect(MEETING_RETYPE_APPLY).toContain("MATCH (m:Meeting {accountId: $accountId})");
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe("censusBusyIntervals", () => {
|
|
54
|
+
const meeting = (start, end) => ({ start, end, src: "meeting" });
|
|
55
|
+
const connector = (start, end) => ({ start, end, src: "connector" });
|
|
56
|
+
it("splits the census by source so one total cannot hide an empty meeting leg", () => {
|
|
57
|
+
const census = censusBusyIntervals([
|
|
58
|
+
meeting("2026-07-29T13:30:00Z", "2026-07-29T17:30:00Z"),
|
|
59
|
+
connector("2026-07-30T09:00:00Z", "2026-07-30T10:00:00Z"),
|
|
60
|
+
connector("2026-07-31T09:00:00Z", "2026-07-31T10:00:00Z"),
|
|
61
|
+
]);
|
|
62
|
+
expect(census.busyMeetings).toBe(1);
|
|
63
|
+
expect(census.busyConnector).toBe(2);
|
|
64
|
+
expect(census.unusable).toBe(0);
|
|
65
|
+
expect(census.usable).toHaveLength(3);
|
|
66
|
+
});
|
|
67
|
+
it("distinguishes three connector intervals from three meetings", () => {
|
|
68
|
+
// `busy=3` could mean either, which is exactly why the old line read as
|
|
69
|
+
// healthy while five meetings were invisible.
|
|
70
|
+
const connectorsOnly = censusBusyIntervals([
|
|
71
|
+
connector("2026-07-29T09:00:00Z", "2026-07-29T10:00:00Z"),
|
|
72
|
+
connector("2026-07-29T11:00:00Z", "2026-07-29T12:00:00Z"),
|
|
73
|
+
connector("2026-07-29T13:00:00Z", "2026-07-29T14:00:00Z"),
|
|
74
|
+
]);
|
|
75
|
+
expect(connectorsOnly.busyMeetings).toBe(0);
|
|
76
|
+
expect(connectorsOnly.busyConnector).toBe(3);
|
|
77
|
+
});
|
|
78
|
+
it("excludes a row with an unparseable start and counts it", () => {
|
|
79
|
+
const census = censusBusyIntervals([
|
|
80
|
+
meeting("not-a-time", "2026-07-29T17:30:00Z"),
|
|
81
|
+
meeting("2026-07-29T13:30:00Z", "2026-07-29T17:30:00Z"),
|
|
82
|
+
]);
|
|
83
|
+
expect(census.usable).toEqual([
|
|
84
|
+
{ start: "2026-07-29T13:30:00Z", end: "2026-07-29T17:30:00Z" },
|
|
85
|
+
]);
|
|
86
|
+
expect(census.busyMeetings).toBe(1);
|
|
87
|
+
expect(census.unusable).toBe(1);
|
|
88
|
+
});
|
|
89
|
+
it("gives a meeting with no end the same end the public page gives it", () => {
|
|
90
|
+
// `:Meeting.endsAt` is nullable by schema and the free/busy route substitutes
|
|
91
|
+
// start + durationMins. Dropping the row instead would make a real conflict
|
|
92
|
+
// unreportable — this task's own failure shape.
|
|
93
|
+
const census = censusBusyIntervals([{ start: "2026-07-29T13:30:00Z", end: null, src: "meeting" }], 30);
|
|
94
|
+
expect(census.usable).toEqual([
|
|
95
|
+
{ start: "2026-07-29T13:30:00Z", end: "2026-07-29T14:00:00.000Z" },
|
|
96
|
+
]);
|
|
97
|
+
expect(census.busyMeetings).toBe(1);
|
|
98
|
+
expect(census.unusable).toBe(0);
|
|
99
|
+
});
|
|
100
|
+
it("counts a no-end meeting as unusable only when no duration is configured", () => {
|
|
101
|
+
const census = censusBusyIntervals([{ start: "2026-07-29T13:30:00Z", end: null, src: "meeting" }]);
|
|
102
|
+
expect(census.usable).toEqual([]);
|
|
103
|
+
expect(census.unusable).toBe(1);
|
|
104
|
+
});
|
|
105
|
+
it("reads UNION ALL so two meetings sharing bounds are counted twice", () => {
|
|
106
|
+
// Plain UNION de-duplicates the whole result, so a double booking or a
|
|
107
|
+
// re-ingested export would collapse and the census would undercount.
|
|
108
|
+
expect(BUSY_UNION_SELECT).toContain("UNION ALL");
|
|
109
|
+
});
|
|
110
|
+
it("keeps the connector leg separate, because block-writing depends on it alone", () => {
|
|
111
|
+
// planBlockWrites treats a non-empty busy set as proof the connector sync is
|
|
112
|
+
// alive. Handed the widened set, a deauthorised connector on an account with
|
|
113
|
+
// any meeting reads as healthy and every held block row is deleted.
|
|
114
|
+
const census = censusBusyIntervals([
|
|
115
|
+
meeting("2026-07-29T13:30:00Z", "2026-07-29T17:30:00Z"),
|
|
116
|
+
]);
|
|
117
|
+
expect(census.connectorOnly).toEqual([]);
|
|
118
|
+
expect(census.usable).toHaveLength(1);
|
|
119
|
+
const plan = planBlockWrites({
|
|
120
|
+
publishedReadable: true,
|
|
121
|
+
busyReadable: true,
|
|
122
|
+
published: [{ start: "2026-07-29T14:00:00Z", end: "2026-07-29T14:30:00Z" }],
|
|
123
|
+
busy: census.connectorOnly,
|
|
124
|
+
taken: new Set(),
|
|
125
|
+
current: [{ bookingId: "blk-1", slotStart: "2026-07-29T14:00:00Z" }],
|
|
126
|
+
nowMs: Date.parse("2026-07-29T09:00:00Z"),
|
|
127
|
+
});
|
|
128
|
+
expect(plan.outcome).toBe("no-busy-data");
|
|
129
|
+
expect(plan.diff).toEqual({ toInsert: [], toDelete: [] });
|
|
130
|
+
});
|
|
131
|
+
it("makes a meeting-only conflict visible to the unchanged classifier", () => {
|
|
132
|
+
// The reported symptom, reduced: Adam's golf afternoon is a :Meeting with no
|
|
133
|
+
// :ConnectorBusy row, and the page published a slot inside it. Against the
|
|
134
|
+
// ConnectorBusy-only read the busy list was empty and conflicts was 0.
|
|
135
|
+
const published = [{ start: "2026-07-29T14:00:00Z", end: "2026-07-29T14:30:00Z" }];
|
|
136
|
+
const census = censusBusyIntervals([meeting("2026-07-29T13:30:00Z", "2026-07-29T17:30:00Z")]);
|
|
137
|
+
expect(classifyPublishedDrift(published, census.usable).conflicts).toBe(1);
|
|
138
|
+
expect(classifyPublishedDrift(published, []).conflicts).toBe(0);
|
|
139
|
+
});
|
|
140
|
+
it("reads both labels in one statement, tagged by source", () => {
|
|
141
|
+
expect(BUSY_UNION_SELECT).toContain("MATCH (m:Meeting {accountId: $accountId})");
|
|
142
|
+
expect(BUSY_UNION_SELECT).toContain("MATCH (b:ConnectorBusy {accountId: $accountId})");
|
|
143
|
+
expect(BUSY_UNION_SELECT).toContain("UNION");
|
|
144
|
+
expect(BUSY_UNION_SELECT).toContain("'meeting' AS src");
|
|
145
|
+
expect(BUSY_UNION_SELECT).toContain("'connector' AS src");
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=meeting-retype.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meeting-retype.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/meeting-retype.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,67 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* - `not-registered`: the destination is in no authoritative list (house's
|
|
5
|
-
* `adminPhones`/`accountManagers` for WhatsApp; the creating account's
|
|
6
|
-
* `telegram.adminUsers` for Telegram).
|
|
7
|
-
* - `cross-account`: the destination IS registered, but to an account other
|
|
8
|
-
* than the one that created the schedule (and the creator is not the house).
|
|
9
|
-
* Names both accounts so the mismatch is explained, not guessed.
|
|
10
|
-
*/
|
|
11
|
-
export type DestinationValidity = {
|
|
12
|
-
valid: true;
|
|
13
|
-
} | {
|
|
14
|
-
valid: false;
|
|
15
|
-
reason: "not-registered";
|
|
16
|
-
} | {
|
|
17
|
-
valid: false;
|
|
18
|
-
reason: "cross-account";
|
|
19
|
-
destinationAccount: string;
|
|
20
|
-
scheduleAccount: string;
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Replica of `normalize.ts:normalizeE164` — strip whitespace/dashes/parens, a
|
|
24
|
-
* `whatsapp:` prefix, and a leading `+` or `00`; return digits-only or `''`.
|
|
25
|
-
*/
|
|
26
|
-
export declare function normalizeE164(value: string): string;
|
|
27
|
-
/** Replica of `normalize.ts:phonesMatch` — normalized equality, non-empty. */
|
|
28
|
-
export declare function phonesMatch(a: string, b: string): boolean;
|
|
29
|
-
interface WhatsAppAdmins {
|
|
30
|
-
adminPhones: string[];
|
|
31
|
-
accountManagers: Record<string, string>;
|
|
32
|
-
}
|
|
33
|
-
/** Read the channel admin config from `<accountDir>/account.json`. Missing or
|
|
34
|
-
* malformed config yields empty lists (a fail-closed default: no destination
|
|
35
|
-
* validates against empty config). */
|
|
36
|
-
export declare function readChannelAdmins(accountDir: string, channel: "whatsapp"): WhatsAppAdmins;
|
|
37
|
-
export declare function readChannelAdmins(accountDir: string, channel: "telegram"): {
|
|
38
|
-
adminUsers: number[];
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* The account a WhatsApp `destination` is registered to on the HOUSE's lists,
|
|
42
|
-
* or null if it is in neither list. A manager binding wins over an admin match:
|
|
43
|
-
* if the number is an `accountManagers` key its registered account is the bound
|
|
44
|
-
* sub-account (the isolation-relevant fact); otherwise if it is an `adminPhones`
|
|
45
|
-
* entry its registered account is the house. `houseDir` is the house account's
|
|
46
|
-
* directory; `houseAccountId` its id.
|
|
47
|
-
*/
|
|
48
|
-
export declare function registeredAccountForDestination(houseDir: string, houseAccountId: string, destination: string): string | null;
|
|
1
|
+
import { type AgentChannel, type DestinationValidity } from "../../../../../lib/agent-dispatch-rule/dist/index.js";
|
|
2
|
+
export { normalizeE164, phonesMatch, readChannelAdmins, registeredAccountForDestination, boundSubAccountFor, } from "../../../../../lib/agent-dispatch-rule/dist/index.js";
|
|
3
|
+
export type { AgentChannel, DestinationValidity };
|
|
49
4
|
/**
|
|
50
5
|
* Validate a dispatch destination under the Task 1439 two-part rule.
|
|
51
6
|
* `accountsDir` is the PARENT accounts directory
|
|
52
7
|
* (`$PLATFORM_ROOT/../data/accounts`); `creatingAccountId` is the account that
|
|
53
8
|
* created (or owns) the schedule.
|
|
54
9
|
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* account's own `telegram.adminUsers`; there is no manager surface and thus
|
|
63
|
-
* no cross-account concept — an integer chat id present in the list is valid,
|
|
64
|
-
* anything else is `not-registered`.
|
|
10
|
+
* The house is resolved here rather than in the rule module.
|
|
11
|
+
* `resolveHouseOrSoleAccountId` throws when the install has no `role:'house'`
|
|
12
|
+
* account and does not have exactly one valid account; that throw is the
|
|
13
|
+
* caller's to handle and is deliberately not swallowed here —
|
|
14
|
+
* `connector-sync-provision.ts` already documents catching it.
|
|
15
|
+
*
|
|
16
|
+
* Telegram never consults the house, so the resolver is not called for it.
|
|
65
17
|
*/
|
|
66
18
|
export declare function validateAgentDestination(accountsDir: string, creatingAccountId: string, channel: AgentChannel, destination: string): DestinationValidity;
|
|
67
19
|
/**
|
|
@@ -113,11 +65,4 @@ export declare function resolveAccountAdminUserIds(accountsDir: string, accountI
|
|
|
113
65
|
* IO — so it is trivially unit-testable and safe to call on either write path.
|
|
114
66
|
*/
|
|
115
67
|
export declare function buildScheduleProvenance(input: ScheduleProvenance): ScheduleProvenance;
|
|
116
|
-
/**
|
|
117
|
-
* The sub-account a WhatsApp manager destination is bound to, or null. Telegram
|
|
118
|
-
* has no account-manager surface (house-only, Task 1378 scope), so it always
|
|
119
|
-
* returns null. Used by the standing audit to detect a deleted sub-account.
|
|
120
|
-
*/
|
|
121
|
-
export declare function boundSubAccountFor(accountDir: string, destination: string): string | null;
|
|
122
|
-
export {};
|
|
123
68
|
//# sourceMappingURL=agent-dispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-dispatch.d.ts","sourceRoot":"","sources":["../../src/lib/agent-dispatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-dispatch.d.ts","sourceRoot":"","sources":["../../src/lib/agent-dispatch.ts"],"names":[],"mappings":"AA0BA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,+BAA+B,EAC/B,kBAAkB,GACnB,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAIrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5E,IAAI,CAsBN;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB;iFAC6E;IAC7E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,wEAAwE;IACxE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAY3F;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAWrF"}
|
|
@@ -1,128 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Destination validation for agent-bearing scheduled dispatch.
|
|
2
3
|
* Task 1378 — agent-bearing scheduled dispatch: destination validation.
|
|
3
4
|
* Task 1439 — house single-authority + creating-account match.
|
|
4
5
|
*
|
|
5
|
-
* The
|
|
6
|
-
*
|
|
7
|
-
* `platform/
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
6
|
+
* The rule itself now lives in `platform/lib/agent-dispatch-rule`, because the
|
|
7
|
+
* admin UI needs the same rule and `platform/ui` must never import from
|
|
8
|
+
* `platform/plugins`. This module is the plugin's face onto it: it resolves the
|
|
9
|
+
* socket-owning house (the one thing the lib deliberately refuses to do) and
|
|
10
|
+
* delegates. Every exported signature here is unchanged, so `schedule-event`,
|
|
11
|
+
* `schedule-update`, the dispatcher's standing audit and the connector-sync
|
|
12
|
+
* provisioner are untouched by the move.
|
|
13
|
+
*
|
|
14
|
+
* For WhatsApp the authoritative `adminPhones` + `accountManagers` lists live
|
|
15
|
+
* ONLY on the socket-owning house account (Tasks 1377/1382), so the house is
|
|
16
|
+
* resolved via `resolveHouseOrSoleAccountId` — the same authority the inbound
|
|
17
|
+
* gate uses — and its config is read, NOT the event's own account.
|
|
18
|
+
*
|
|
19
|
+
* The provenance marker below is NOT part of the destination rule and stays
|
|
20
|
+
* here: it is stamped by this plugin's own dispatcher and travels outward on
|
|
21
|
+
* the inject POST, so it is this plugin's contract to keep, not shared logic
|
|
22
|
+
* two packages need to agree on.
|
|
17
23
|
*/
|
|
18
24
|
import { readFileSync } from "node:fs";
|
|
19
25
|
import { resolve } from "node:path";
|
|
20
26
|
import { resolveHouseOrSoleAccountId } from "../../../../../lib/account-enumeration/dist/index.js";
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
* `whatsapp:` prefix, and a leading `+` or `00`; return digits-only or `''`.
|
|
24
|
-
*/
|
|
25
|
-
export function normalizeE164(value) {
|
|
26
|
-
let candidate = value.trim().replace(/[\s\-().]/g, "");
|
|
27
|
-
candidate = candidate.replace(/^whatsapp:/i, "");
|
|
28
|
-
if (candidate.startsWith("+"))
|
|
29
|
-
candidate = candidate.slice(1);
|
|
30
|
-
else if (candidate.startsWith("00"))
|
|
31
|
-
candidate = candidate.slice(2);
|
|
32
|
-
if (!/^\d+$/.test(candidate))
|
|
33
|
-
return "";
|
|
34
|
-
return candidate;
|
|
35
|
-
}
|
|
36
|
-
/** Replica of `normalize.ts:phonesMatch` — normalized equality, non-empty. */
|
|
37
|
-
export function phonesMatch(a, b) {
|
|
38
|
-
const na = normalizeE164(a);
|
|
39
|
-
const nb = normalizeE164(b);
|
|
40
|
-
return na.length > 0 && na === nb;
|
|
41
|
-
}
|
|
42
|
-
export function readChannelAdmins(accountDir, channel) {
|
|
43
|
-
let config = {};
|
|
44
|
-
try {
|
|
45
|
-
config = JSON.parse(readFileSync(resolve(accountDir, "account.json"), "utf-8"));
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
config = {};
|
|
49
|
-
}
|
|
50
|
-
if (channel === "whatsapp") {
|
|
51
|
-
const wa = config.whatsapp ?? {};
|
|
52
|
-
const adminPhones = Array.isArray(wa.adminPhones)
|
|
53
|
-
? wa.adminPhones.filter((p) => typeof p === "string")
|
|
54
|
-
: [];
|
|
55
|
-
const managersRaw = wa.accountManagers ?? {};
|
|
56
|
-
const accountManagers = {};
|
|
57
|
-
for (const [k, v] of Object.entries(managersRaw)) {
|
|
58
|
-
if (typeof v === "string")
|
|
59
|
-
accountManagers[k] = v;
|
|
60
|
-
}
|
|
61
|
-
return { adminPhones, accountManagers };
|
|
62
|
-
}
|
|
63
|
-
const tg = config.telegram ?? {};
|
|
64
|
-
const adminUsers = Array.isArray(tg.adminUsers)
|
|
65
|
-
? tg.adminUsers.filter((u) => typeof u === "number")
|
|
66
|
-
: [];
|
|
67
|
-
return { adminUsers };
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* The account a WhatsApp `destination` is registered to on the HOUSE's lists,
|
|
71
|
-
* or null if it is in neither list. A manager binding wins over an admin match:
|
|
72
|
-
* if the number is an `accountManagers` key its registered account is the bound
|
|
73
|
-
* sub-account (the isolation-relevant fact); otherwise if it is an `adminPhones`
|
|
74
|
-
* entry its registered account is the house. `houseDir` is the house account's
|
|
75
|
-
* directory; `houseAccountId` its id.
|
|
76
|
-
*/
|
|
77
|
-
export function registeredAccountForDestination(houseDir, houseAccountId, destination) {
|
|
78
|
-
const { adminPhones, accountManagers } = readChannelAdmins(houseDir, "whatsapp");
|
|
79
|
-
for (const [managerPhone, subAccountId] of Object.entries(accountManagers)) {
|
|
80
|
-
if (subAccountId && phonesMatch(managerPhone, destination))
|
|
81
|
-
return subAccountId;
|
|
82
|
-
}
|
|
83
|
-
if (adminPhones.some((p) => phonesMatch(p, destination)))
|
|
84
|
-
return houseAccountId;
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
27
|
+
import { validateAgentDestination as validateAgainstHouse, } from "../../../../../lib/agent-dispatch-rule/dist/index.js";
|
|
28
|
+
export { normalizeE164, phonesMatch, readChannelAdmins, registeredAccountForDestination, boundSubAccountFor, } from "../../../../../lib/agent-dispatch-rule/dist/index.js";
|
|
87
29
|
/**
|
|
88
30
|
* Validate a dispatch destination under the Task 1439 two-part rule.
|
|
89
31
|
* `accountsDir` is the PARENT accounts directory
|
|
90
32
|
* (`$PLATFORM_ROOT/../data/accounts`); `creatingAccountId` is the account that
|
|
91
33
|
* created (or owns) the schedule.
|
|
92
34
|
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* account's own `telegram.adminUsers`; there is no manager surface and thus
|
|
101
|
-
* no cross-account concept — an integer chat id present in the list is valid,
|
|
102
|
-
* anything else is `not-registered`.
|
|
35
|
+
* The house is resolved here rather than in the rule module.
|
|
36
|
+
* `resolveHouseOrSoleAccountId` throws when the install has no `role:'house'`
|
|
37
|
+
* account and does not have exactly one valid account; that throw is the
|
|
38
|
+
* caller's to handle and is deliberately not swallowed here —
|
|
39
|
+
* `connector-sync-provision.ts` already documents catching it.
|
|
40
|
+
*
|
|
41
|
+
* Telegram never consults the house, so the resolver is not called for it.
|
|
103
42
|
*/
|
|
104
43
|
export function validateAgentDestination(accountsDir, creatingAccountId, channel, destination) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const houseDir = resolve(accountsDir, houseAccountId);
|
|
108
|
-
const registered = registeredAccountForDestination(houseDir, houseAccountId, destination);
|
|
109
|
-
if (registered === null)
|
|
110
|
-
return { valid: false, reason: "not-registered" };
|
|
111
|
-
if (creatingAccountId === houseAccountId)
|
|
112
|
-
return { valid: true };
|
|
113
|
-
if (registered === creatingAccountId)
|
|
114
|
-
return { valid: true };
|
|
115
|
-
return {
|
|
116
|
-
valid: false,
|
|
117
|
-
reason: "cross-account",
|
|
118
|
-
destinationAccount: registered,
|
|
119
|
-
scheduleAccount: creatingAccountId,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
const { adminUsers } = readChannelAdmins(resolve(accountsDir, creatingAccountId), "telegram");
|
|
123
|
-
const asNumber = Number(destination);
|
|
124
|
-
const ok = Number.isInteger(asNumber) && adminUsers.includes(asNumber);
|
|
125
|
-
return ok ? { valid: true } : { valid: false, reason: "not-registered" };
|
|
44
|
+
const houseAccountId = channel === "whatsapp" ? resolveHouseOrSoleAccountId(accountsDir) : creatingAccountId;
|
|
45
|
+
return validateAgainstHouse(accountsDir, houseAccountId, creatingAccountId, channel, destination);
|
|
126
46
|
}
|
|
127
47
|
/**
|
|
128
48
|
* Validate an `agentDispatch` at write time (shared by `schedule-event` and
|
|
@@ -188,17 +108,4 @@ export function buildScheduleProvenance(input) {
|
|
|
188
108
|
dispatchedAt: input.dispatchedAt,
|
|
189
109
|
};
|
|
190
110
|
}
|
|
191
|
-
/**
|
|
192
|
-
* The sub-account a WhatsApp manager destination is bound to, or null. Telegram
|
|
193
|
-
* has no account-manager surface (house-only, Task 1378 scope), so it always
|
|
194
|
-
* returns null. Used by the standing audit to detect a deleted sub-account.
|
|
195
|
-
*/
|
|
196
|
-
export function boundSubAccountFor(accountDir, destination) {
|
|
197
|
-
const { accountManagers } = readChannelAdmins(accountDir, "whatsapp");
|
|
198
|
-
for (const [managerPhone, subAccountId] of Object.entries(accountManagers)) {
|
|
199
|
-
if (subAccountId && phonesMatch(managerPhone, destination))
|
|
200
|
-
return subAccountId;
|
|
201
|
-
}
|
|
202
|
-
return null;
|
|
203
|
-
}
|
|
204
111
|
//# sourceMappingURL=agent-dispatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-dispatch.js","sourceRoot":"","sources":["../../src/lib/agent-dispatch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-dispatch.js","sourceRoot":"","sources":["../../src/lib/agent-dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,20 +140,97 @@ export interface PublishedDrift {
|
|
|
140
140
|
outcome: PublishedDriftOutcome;
|
|
141
141
|
/** Size of the published-open set the comparison ran against. */
|
|
142
142
|
published: number;
|
|
143
|
-
/** Size of the
|
|
143
|
+
/** Size of the busy set the comparison ran against, both labels together.
|
|
144
|
+
* Task 2148 split the reported census into `busyMeetings` / `busyConnector`
|
|
145
|
+
* at the call site: one total cannot distinguish "3 connector intervals, no
|
|
146
|
+
* meetings" from "3 meetings, no connector", and that ambiguity is what made
|
|
147
|
+
* `busy=3 conflicts=0` read as healthy while five meetings were invisible. */
|
|
144
148
|
busy: number;
|
|
145
149
|
/** Published-open slots overlapping any busy interval. Necessarily 0 on the
|
|
146
150
|
* two degraded outcomes, which is why the outcome token has to be read. */
|
|
147
151
|
conflicts: number;
|
|
148
152
|
}
|
|
149
153
|
/**
|
|
150
|
-
* Classify published-open booking slots against the
|
|
151
|
-
*
|
|
152
|
-
* `
|
|
153
|
-
*
|
|
154
|
-
*
|
|
154
|
+
* Classify published-open booking slots against the busy set — the drift the
|
|
155
|
+
* standing audit reports. The busy set is both labels the public free/busy page
|
|
156
|
+
* subtracts, `:Meeting` and `:ConnectorBusy`, so `outcome: "verified"` with a
|
|
157
|
+
* nonzero `conflicts` means the booking page is currently offering a slot that
|
|
158
|
+
* is genuinely taken, whether by a meeting or by a connector block. An empty
|
|
159
|
+
* published set reports `no-published-slots` even when the busy set is also
|
|
160
|
+
* empty: the site never publishing is the upstream condition. `no-busy-data`
|
|
161
|
+
* now means neither label held a usable interval.
|
|
155
162
|
*/
|
|
156
163
|
export declare function classifyPublishedDrift(published: BusyInterval[], busy: BusyInterval[]): PublishedDrift;
|
|
164
|
+
/** A `:Meeting` with at least one string-typed bound. A null member means that
|
|
165
|
+
* bound already carries a temporal type and must be left alone. */
|
|
166
|
+
export interface MeetingRetypeRow {
|
|
167
|
+
meetingId: string;
|
|
168
|
+
startsAt: string | null;
|
|
169
|
+
endsAt: string | null;
|
|
170
|
+
}
|
|
171
|
+
/** Meetings still holding a string bound. A repaired row stops matching, which
|
|
172
|
+
* is what lets this stay a standing repair rather than a one-off migration. */
|
|
173
|
+
export declare const MEETING_RETYPE_SELECT = "\n MATCH (m:Meeting {accountId: $accountId})\n WHERE valueType(m.startsAt) STARTS WITH 'STRING' OR valueType(m.endsAt) STARTS WITH 'STRING'\n RETURN elementId(m) AS meetingId,\n CASE WHEN valueType(m.startsAt) STARTS WITH 'STRING' THEN m.startsAt ELSE null END AS startsAt,\n CASE WHEN valueType(m.endsAt) STARTS WITH 'STRING' THEN m.endsAt ELSE null END AS endsAt\n";
|
|
174
|
+
/** Rebuild each string bound as a ZONED DATETIME. A null param leaves that
|
|
175
|
+
* bound exactly as it is, so a half-corrupted row is half-repaired and its
|
|
176
|
+
* correctly-typed bound is never rewritten. The label and `accountId` are
|
|
177
|
+
* re-asserted here rather than trusted from the select: account scope is a
|
|
178
|
+
* property, and a write that carries no property cannot enforce it. */
|
|
179
|
+
export declare const MEETING_RETYPE_APPLY = "\n MATCH (m:Meeting {accountId: $accountId}) WHERE elementId(m) = $meetingId\n SET m.startsAt = CASE WHEN $startsAt IS NULL THEN m.startsAt ELSE datetime($startsAt) END,\n m.endsAt = CASE WHEN $endsAt IS NULL THEN m.endsAt ELSE datetime($endsAt) END\n";
|
|
180
|
+
/** Why a scanned row was not repaired. `unparseable` is a value no `datetime()`
|
|
181
|
+
* can rebuild and needs a human; `failed` is the write not landing — a driver
|
|
182
|
+
* timeout, a disconnect — which says nothing about the value and will be
|
|
183
|
+
* retried on the next tick. Neo4j names the difference in the error code, so
|
|
184
|
+
* the two are never reported under one count. */
|
|
185
|
+
export type RetypeFailure = "unparseable" | "failed";
|
|
186
|
+
export declare function classifyRetypeError(err: unknown): RetypeFailure;
|
|
187
|
+
/** A raw busy row, tagged with the label it came from. `end` is nullable here
|
|
188
|
+
* and nowhere downstream: `:Meeting.endsAt` is null when the event carries no
|
|
189
|
+
* end, and `censusBusyIntervals` resolves that before any comparison. */
|
|
190
|
+
export interface BusySourceRow {
|
|
191
|
+
start: string;
|
|
192
|
+
end: string | null;
|
|
193
|
+
src: "meeting" | "connector";
|
|
194
|
+
}
|
|
195
|
+
/** The busy set the public free/busy page computes from: meetings AND connector
|
|
196
|
+
* blocks. The old audit read only the second, so any meeting conflict was
|
|
197
|
+
* outside what it could measure.
|
|
198
|
+
*
|
|
199
|
+
* `UNION ALL`, not `UNION`: plain `UNION` de-duplicates the whole result, so two
|
|
200
|
+
* distinct meetings sharing bounds (a double booking, a re-ingested export)
|
|
201
|
+
* would collapse and be counted once. The census only earns its keep if the
|
|
202
|
+
* count is trustworthy, and the `src` column alone prevents cross-leg collapse,
|
|
203
|
+
* not collapse within a leg. */
|
|
204
|
+
export declare const BUSY_UNION_SELECT = "\n MATCH (m:Meeting {accountId: $accountId})\n RETURN toString(m.startsAt) AS start, toString(m.endsAt) AS end, 'meeting' AS src\n UNION ALL\n MATCH (b:ConnectorBusy {accountId: $accountId})\n RETURN toString(b.startsAt) AS start, toString(b.endsAt) AS end, 'connector' AS src\n";
|
|
205
|
+
export interface BusyCensus {
|
|
206
|
+
/** Every usable interval, both legs — what `classifyPublishedDrift` compares. */
|
|
207
|
+
usable: BusyInterval[];
|
|
208
|
+
/** The connector leg alone. `planBlockWrites` must keep reading this and not
|
|
209
|
+
* `usable`: its empty-set rule is a liveness test for the connector sync, and
|
|
210
|
+
* a set widened with meetings would report a deauthorised connector as live
|
|
211
|
+
* and delete every held block row. */
|
|
212
|
+
connectorOnly: BusyInterval[];
|
|
213
|
+
/** Counts are over `usable` only: a count that included rows the comparison
|
|
214
|
+
* ignored would be the same unqualified number this audit exists to remove. */
|
|
215
|
+
busyMeetings: number;
|
|
216
|
+
busyConnector: number;
|
|
217
|
+
/** Rows excluded for a bound no substitution could resolve. Reported on the
|
|
218
|
+
* audit line — an interval dropped without a count is the silent drop this
|
|
219
|
+
* task exists to remove. */
|
|
220
|
+
unusable: number;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Reduce the raw busy rows to the intervals the comparison can run against.
|
|
224
|
+
*
|
|
225
|
+
* `:Meeting.endsAt` is nullable by schema — `writeMeeting` stores null when an
|
|
226
|
+
* event carries no end — and the public free/busy route substitutes
|
|
227
|
+
* `start + durationMins` for those rows rather than ignoring them. This mirrors
|
|
228
|
+
* that substitution, because a no-end meeting IS busy on the page: dropping it
|
|
229
|
+
* would make a real conflict unreportable, which is this task's own failure
|
|
230
|
+
* shape. `durationMins` comes from the same `calendar-availability.json` the
|
|
231
|
+
* page reads; when it is absent the row has no resolvable end and is counted.
|
|
232
|
+
*/
|
|
233
|
+
export declare function censusBusyIntervals(rows: BusySourceRow[], durationMins?: number): BusyCensus;
|
|
157
234
|
/** A slot as it appears in the published `availability_snapshot` payload. */
|
|
158
235
|
export interface PublishedSlot {
|
|
159
236
|
start: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booking-reconcile.d.ts","sourceRoot":"","sources":["../../src/lib/booking-reconcile.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,eAAe,CAAC,CAqD1B;AAMD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,yCAAyC,CAAC;AAEjF;8EAC8E;AAC9E,eAAO,MAAM,uBAAuB,sJAC0G,CAAC;AAE/I;yDACyD;AACzD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMpG;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,IAAI,EAAE,CAAC,EAAE,EACT,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,CAAC,EAAE,CAEL;AAED;;gFAEgF;AAChF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B;;qFAEiF;IACjF,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;OAgBG;IACH,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,eAAe,EAAE,EAC3B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,GACZ,WAAW,CAiBb;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAI5C,CAAC;AAEF;+CAC+C;AAC/C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;4DAE4D;AAC5D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/D;AAMD;;qFAEqF;AACrF,eAAO,MAAM,qBAAqB,QAMmB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,GAAG,qBAAqB,CAAC,CA4ChD;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAcD;;8DAE8D;AAC9D,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,cAAc,GAAG,oBAAoB,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB
|
|
1
|
+
{"version":3,"file":"booking-reconcile.d.ts","sourceRoot":"","sources":["../../src/lib/booking-reconcile.ts"],"names":[],"mappings":"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"}
|