@rubytech/create-sitedesk-code 0.1.523 → 0.1.524

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.
Files changed (690) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts +99 -0
  3. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -0
  4. package/payload/platform/lib/agent-dispatch-rule/dist/index.js +228 -0
  5. package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -0
  6. package/payload/platform/lib/agent-dispatch-rule/package.json +6 -0
  7. package/payload/platform/lib/agent-dispatch-rule/src/__tests__/rule.test.ts +384 -0
  8. package/payload/platform/lib/agent-dispatch-rule/src/index.ts +269 -0
  9. package/payload/platform/lib/agent-dispatch-rule/tsconfig.json +9 -0
  10. package/payload/platform/lib/agent-dispatch-rule/vitest.config.ts +9 -0
  11. package/payload/platform/lib/routine-templates/dist/roster.js +1 -1
  12. package/payload/platform/lib/routine-templates/src/roster.ts +1 -1
  13. package/payload/platform/package.json +2 -2
  14. package/payload/platform/plugins/admin/PLUGIN.md +1 -0
  15. package/payload/platform/plugins/admin/hooks/__tests__/mailbox-inject.test.sh +501 -0
  16. package/payload/platform/plugins/admin/hooks/mailbox-inject.sh +299 -0
  17. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +54 -21
  18. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +6 -0
  19. package/payload/platform/plugins/docs/references/admin-ui.md +49 -18
  20. package/payload/platform/plugins/docs/references/workflows.md +4 -2
  21. package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js +72 -1
  22. package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js.map +1 -1
  23. package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js +4 -1
  24. package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js.map +1 -1
  25. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
  26. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +4 -2
  27. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
  28. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +0 -6
  29. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -1
  30. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +24 -2
  31. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -1
  32. package/payload/platform/plugins/email/references/email-reference.md +1 -1
  33. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts +2 -0
  34. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts.map +1 -0
  35. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js +322 -0
  36. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js.map +1 -0
  37. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js +21 -1
  38. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js.map +1 -1
  39. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts +13 -0
  40. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts.map +1 -1
  41. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js +16 -0
  42. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js.map +1 -1
  43. package/payload/platform/plugins/outlook/mcp/dist/index.js +5 -5
  44. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
  45. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
  46. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +6 -0
  47. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
  48. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts +7 -0
  49. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -1
  50. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +122 -8
  51. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -1
  52. package/payload/platform/plugins/scheduling/PLUGIN.md +20 -1
  53. package/payload/platform/plugins/scheduling/mcp/dist/index.js +6 -4
  54. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  55. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js +8 -36
  56. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js.map +1 -1
  57. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +10 -65
  58. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
  59. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +29 -122
  60. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
  61. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts +2 -0
  62. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts.map +1 -0
  63. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js +305 -0
  64. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js.map +1 -0
  65. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +46 -1
  66. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  67. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +172 -4
  68. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  69. package/payload/platform/plugins/scheduling/skills/routine-control/SKILL.md +48 -0
  70. package/payload/platform/plugins/sweep/skills/email-graph-sweep/SKILL.md +21 -7
  71. package/payload/platform/scripts/__tests__/mailbox-inject-registered.test.sh +80 -0
  72. package/payload/platform/scripts/lib/__tests__/account-settings-mailbox-inject.test.sh +166 -0
  73. package/payload/platform/scripts/lib/account-settings-mailbox-inject.sh +91 -0
  74. package/payload/platform/scripts/lib/provision-account-dir.sh +1 -0
  75. package/payload/platform/scripts/setup-account.sh +15 -0
  76. package/payload/server/public/activity.html +5 -5
  77. package/payload/server/public/agents.html +4 -4
  78. package/payload/server/public/assets/{AdminLoginScreens-uknqh2Pm.js → AdminLoginScreens-BgDjueVe.js} +1 -1
  79. package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.br +0 -0
  80. package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.gz +0 -0
  81. package/payload/server/public/assets/{AdminShell-GqtMImyQ.js → AdminShell-YctTrR-D.js} +1 -1
  82. package/payload/server/public/assets/AdminShell-YctTrR-D.js.br +0 -0
  83. package/payload/server/public/assets/AdminShell-YctTrR-D.js.gz +0 -0
  84. package/payload/server/public/assets/{activity-B4KfMJqO.js → activity-DGQt5ys_.js} +1 -1
  85. package/payload/server/public/assets/activity-DGQt5ys_.js.br +0 -0
  86. package/payload/server/public/assets/activity-DGQt5ys_.js.gz +0 -0
  87. package/payload/server/public/assets/admin-DnUxbB3P.js +1 -0
  88. package/payload/server/public/assets/admin-DnUxbB3P.js.br +0 -0
  89. package/payload/server/public/assets/admin-DnUxbB3P.js.gz +0 -0
  90. package/payload/server/public/assets/agents-Bc2LZjwC.js +1 -0
  91. package/payload/server/public/assets/agents-Bc2LZjwC.js.br +0 -0
  92. package/payload/server/public/assets/agents-Bc2LZjwC.js.gz +0 -0
  93. package/payload/server/public/assets/{arc-DaI5MLTq.js → arc-DaudCnXg.js} +1 -1
  94. package/payload/server/public/assets/arc-DaudCnXg.js.br +0 -0
  95. package/payload/server/public/assets/arc-DaudCnXg.js.gz +0 -0
  96. package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js +1 -0
  97. package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
  98. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CBGVUEN9.js → architectureDiagram-Q4EWVU46-BEEC3s7i.js} +1 -1
  99. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.br +0 -0
  100. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.gz +0 -0
  101. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DS6dS4GZ.js → blockDiagram-DXYQGD6D-BIWyfb18.js} +1 -1
  102. package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.br +0 -0
  103. package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.gz +0 -0
  104. package/payload/server/public/assets/{browser-B3hSzI3O.js → browser-BtF7SzvG.js} +1 -1
  105. package/payload/server/public/assets/browser-BtF7SzvG.js.br +0 -0
  106. package/payload/server/public/assets/browser-BtF7SzvG.js.gz +0 -0
  107. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js → c4Diagram-AHTNJAMY--h6oE2cv.js} +1 -1
  108. package/payload/server/public/assets/c4Diagram-AHTNJAMY--h6oE2cv.js.br +0 -0
  109. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js.gz → c4Diagram-AHTNJAMY--h6oE2cv.js.gz} +0 -0
  110. package/payload/server/public/assets/{calendar-BggxXxhS.js → calendar-D25EhXbD.js} +1 -1
  111. package/payload/server/public/assets/calendar-D25EhXbD.js.br +0 -0
  112. package/payload/server/public/assets/calendar-D25EhXbD.js.gz +0 -0
  113. package/payload/server/public/assets/channel-TwxCDSpK.js +1 -0
  114. package/payload/server/public/assets/channel-TwxCDSpK.js.br +0 -0
  115. package/payload/server/public/assets/chat-z4jsHFXg.js +1 -0
  116. package/payload/server/public/assets/chat-z4jsHFXg.js.br +0 -0
  117. package/payload/server/public/assets/chat-z4jsHFXg.js.gz +0 -0
  118. package/payload/server/public/assets/chevron-left-BD09SN6R.js +1 -0
  119. package/payload/server/public/assets/chevron-right-ChmWeo7T.js +1 -0
  120. package/payload/server/public/assets/chevron-right-ChmWeo7T.js.br +0 -0
  121. package/payload/server/public/assets/{chunk-2KRD3SAO-B6koUoB7.js → chunk-2KRD3SAO-BwEVlnxo.js} +1 -1
  122. package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.br +0 -0
  123. package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.gz +0 -0
  124. package/payload/server/public/assets/{chunk-336JU56O-BF6BRh8u.js → chunk-336JU56O-DQddTATH.js} +2 -2
  125. package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.br +0 -0
  126. package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.gz +0 -0
  127. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js +1 -0
  128. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.br +0 -0
  129. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.gz +0 -0
  130. package/payload/server/public/assets/{chunk-4BX2VUAB-7sO95xR2.js → chunk-4BX2VUAB-C5p3xTC6.js} +1 -1
  131. package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.br +0 -0
  132. package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.gz +0 -0
  133. package/payload/server/public/assets/{chunk-4TB4RGXK-GCTndJYx.js → chunk-4TB4RGXK-gClfNc1w.js} +1 -1
  134. package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.br +0 -0
  135. package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.gz +0 -0
  136. package/payload/server/public/assets/{chunk-55IACEB6-ggIJf_TC.js → chunk-55IACEB6-DDU_m1ra.js} +1 -1
  137. package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.br +0 -0
  138. package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.gz +0 -0
  139. package/payload/server/public/assets/{chunk-5FUZZQ4R-DeGmkimt.js → chunk-5FUZZQ4R-CZ2jQWNR.js} +1 -1
  140. package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.br +0 -0
  141. package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.gz +0 -0
  142. package/payload/server/public/assets/{chunk-5PVQY5BW-aFIQKk_U.js → chunk-5PVQY5BW-kcZ5kfTg.js} +1 -1
  143. package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.br +0 -0
  144. package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.gz +0 -0
  145. package/payload/server/public/assets/{chunk-67CJDMHE-LS8rUbii.js → chunk-67CJDMHE-9W0Qv0jm.js} +1 -1
  146. package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.br +0 -0
  147. package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.gz +0 -0
  148. package/payload/server/public/assets/{chunk-7N4EOEYR-JKOVngS0.js → chunk-7N4EOEYR-B3gqydR3.js} +1 -1
  149. package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.br +0 -0
  150. package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.gz +0 -0
  151. package/payload/server/public/assets/{chunk-AA7GKIK3-CoXnTVK6.js → chunk-AA7GKIK3-DW8a-2NK.js} +1 -1
  152. package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.br +4 -0
  153. package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
  154. package/payload/server/public/assets/{chunk-BSJP7CBP-CcsqObFg.js → chunk-BSJP7CBP-DqXIO_5R.js} +1 -1
  155. package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.br +0 -0
  156. package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.gz +0 -0
  157. package/payload/server/public/assets/{chunk-CIAEETIT-CpsybR7q.js → chunk-CIAEETIT-BMJfgj2u.js} +1 -1
  158. package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.br +0 -0
  159. package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.gz +0 -0
  160. package/payload/server/public/assets/{chunk-EDXVE4YY-BZ2I9PSq.js → chunk-EDXVE4YY-BxdLPk0b.js} +1 -1
  161. package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.br +0 -0
  162. package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.gz +0 -0
  163. package/payload/server/public/assets/{chunk-ENJZ2VHE-DbTwt6OZ.js → chunk-ENJZ2VHE-Cfe2DCjQ.js} +1 -1
  164. package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.br +0 -0
  165. package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.gz +0 -0
  166. package/payload/server/public/assets/{chunk-FMBD7UC4-D27VnSCa.js → chunk-FMBD7UC4-CdPjwbtf.js} +1 -1
  167. package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.br +0 -0
  168. package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.gz +0 -0
  169. package/payload/server/public/assets/{chunk-FOC6F5B3-C0tU2UFl.js → chunk-FOC6F5B3-Dl6l1KAh.js} +1 -1
  170. package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.br +0 -0
  171. package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.gz +0 -0
  172. package/payload/server/public/assets/{chunk-ICPOFSXX-UPPu2OIq.js → chunk-ICPOFSXX-PnsGrqtx.js} +2 -2
  173. package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.br +0 -0
  174. package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.gz +0 -0
  175. package/payload/server/public/assets/{chunk-K5T4RW27-DIKxqyYw.js → chunk-K5T4RW27--g29_wjW.js} +1 -1
  176. package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.br +0 -0
  177. package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.gz +0 -0
  178. package/payload/server/public/assets/{chunk-KGLVRYIC-CiL4YVLo.js → chunk-KGLVRYIC-CI77ENeO.js} +1 -1
  179. package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.br +3 -0
  180. package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
  181. package/payload/server/public/assets/{chunk-LIHQZDEY-ejKezVlD.js → chunk-LIHQZDEY-CE-XByg6.js} +1 -1
  182. package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.br +0 -0
  183. package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.gz +0 -0
  184. package/payload/server/public/assets/{chunk-ORNJ4GCN-Cc0vqc-D.js → chunk-ORNJ4GCN-DkjJQQSm.js} +1 -1
  185. package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.br +0 -0
  186. package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.gz +0 -0
  187. package/payload/server/public/assets/{chunk-OYMX7WX6-Drxn1qG0.js → chunk-OYMX7WX6-DhogFeD7.js} +1 -1
  188. package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.br +0 -0
  189. package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.gz +0 -0
  190. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js +1 -0
  191. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.br +0 -0
  192. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.gz +0 -0
  193. package/payload/server/public/assets/{chunk-U2HBQHQK-DnbQIkRP.js → chunk-U2HBQHQK-CeaRXuiO.js} +1 -1
  194. package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.br +0 -0
  195. package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.gz +0 -0
  196. package/payload/server/public/assets/{chunk-X2U36JSP-CauTSVWg.js → chunk-X2U36JSP-BqxXeOqf.js} +1 -1
  197. package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.br +0 -0
  198. package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.gz +0 -0
  199. package/payload/server/public/assets/{chunk-XPW4576I-DZqqB9Zi.js → chunk-XPW4576I-DtqJwn2x.js} +1 -1
  200. package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.br +0 -0
  201. package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.gz +0 -0
  202. package/payload/server/public/assets/{chunk-YZCP3GAM-BGHo4Li-.js → chunk-YZCP3GAM-COBlEwQw.js} +1 -1
  203. package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.br +0 -0
  204. package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.gz +0 -0
  205. package/payload/server/public/assets/{chunk-ZZ45TVLE-DWGJKPd7.js → chunk-ZZ45TVLE-CcL088y6.js} +1 -1
  206. package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.br +0 -0
  207. package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.gz +0 -0
  208. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js +1 -0
  209. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.br +0 -0
  210. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.gz +0 -0
  211. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js +1 -0
  212. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.br +0 -0
  213. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.gz +0 -0
  214. package/payload/server/public/assets/clock-Yqf7Ke7I.js +1 -0
  215. package/payload/server/public/assets/clock-Yqf7Ke7I.js.br +0 -0
  216. package/payload/server/public/assets/clock-Yqf7Ke7I.js.gz +0 -0
  217. package/payload/server/public/assets/clone-B3vq32j7.js +1 -0
  218. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-D-95BzXL.js → cose-bilkent-S5V4N54A-kEHVkDNn.js} +1 -1
  219. package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.br +0 -0
  220. package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.gz +0 -0
  221. package/payload/server/public/assets/{dagre-BZYNBHvT.js → dagre-D2wUw1zC.js} +1 -1
  222. package/payload/server/public/assets/dagre-D2wUw1zC.js.br +0 -0
  223. package/payload/server/public/assets/dagre-D2wUw1zC.js.gz +0 -0
  224. package/payload/server/public/assets/{dagre-KV5264BT-DyU4HQLQ.js → dagre-KV5264BT-BWfTDwEs.js} +1 -1
  225. package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.br +0 -0
  226. package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.gz +0 -0
  227. package/payload/server/public/assets/data-RmnKj5nC.js +1 -0
  228. package/payload/server/public/assets/data-RmnKj5nC.js.br +2 -0
  229. package/payload/server/public/assets/data-RmnKj5nC.js.gz +0 -0
  230. package/payload/server/public/assets/{diagram-5BDNPKRD-CCttJ9XA.js → diagram-5BDNPKRD-Tl9dS8w0.js} +1 -1
  231. package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.br +0 -0
  232. package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.gz +0 -0
  233. package/payload/server/public/assets/{diagram-G4DWMVQ6-DvkpgSLO.js → diagram-G4DWMVQ6-CeSe6TMu.js} +1 -1
  234. package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.br +0 -0
  235. package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.gz +0 -0
  236. package/payload/server/public/assets/{diagram-MMDJMWI5-DHmW5Y9k.js → diagram-MMDJMWI5-DYBNJCmk.js} +1 -1
  237. package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.br +0 -0
  238. package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.gz +0 -0
  239. package/payload/server/public/assets/{diagram-TYMM5635-C6T4hwzO.js → diagram-TYMM5635-BmpUGltx.js} +1 -1
  240. package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.br +0 -0
  241. package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.gz +0 -0
  242. package/payload/server/public/assets/{erDiagram-SMLLAGMA-5v_o7s3T.js → erDiagram-SMLLAGMA-DuwuNGqx.js} +1 -1
  243. package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.br +0 -0
  244. package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.gz +0 -0
  245. package/payload/server/public/assets/file-download-CiGklOfA.js +1 -0
  246. package/payload/server/public/assets/file-download-CiGklOfA.js.br +0 -0
  247. package/payload/server/public/assets/file-download-CiGklOfA.js.gz +0 -0
  248. package/payload/server/public/assets/{file-text-BKs9eyiw.js → file-text-XjJPULAZ.js} +1 -1
  249. package/payload/server/public/assets/file-text-XjJPULAZ.js.br +0 -0
  250. package/payload/server/public/assets/file-text-XjJPULAZ.js.gz +0 -0
  251. package/payload/server/public/assets/{flatten-BtIc9jX7.js → flatten-Bu-b1uTY.js} +1 -1
  252. package/payload/server/public/assets/flatten-Bu-b1uTY.js.br +0 -0
  253. package/payload/server/public/assets/flatten-Bu-b1uTY.js.gz +0 -0
  254. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-3UhCDsjt.js → flowDiagram-DWJPFMVM-Bpp8P6Ba.js} +1 -1
  255. package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.br +0 -0
  256. package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.gz +0 -0
  257. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-F2zgHIIQ.js → ganttDiagram-T4ZO3ILL-CE6ppjB4.js} +1 -1
  258. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.br +0 -0
  259. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.gz +0 -0
  260. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js +1 -0
  261. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
  262. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-oQc1N3dT.js → gitGraphDiagram-UUTBAWPF-BdK1GjPr.js} +1 -1
  263. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.br +0 -0
  264. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.gz +0 -0
  265. package/payload/server/public/assets/{graph-DTi71NaZ.js → graph-BjHJ0z_6.js} +1 -1
  266. package/payload/server/public/assets/graph-BjHJ0z_6.js.br +0 -0
  267. package/payload/server/public/assets/graph-BjHJ0z_6.js.gz +0 -0
  268. package/payload/server/public/assets/{graph-labels-BT3S6e9H.js → graph-labels-D-0u37KA.js} +1 -1
  269. package/payload/server/public/assets/graph-labels-D-0u37KA.js.br +0 -0
  270. package/payload/server/public/assets/graph-labels-D-0u37KA.js.gz +0 -0
  271. package/payload/server/public/assets/{graphlib-DY4-AT2Q.js → graphlib-CHEXylyU.js} +1 -1
  272. package/payload/server/public/assets/graphlib-CHEXylyU.js.br +0 -0
  273. package/payload/server/public/assets/graphlib-CHEXylyU.js.gz +0 -0
  274. package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js +1 -0
  275. package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
  276. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js +2 -0
  277. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.br +0 -0
  278. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.gz +0 -0
  279. package/payload/server/public/assets/{isEmpty-Bu4fZ8Kf.js → isEmpty-CjH0UASp.js} +1 -1
  280. package/payload/server/public/assets/isEmpty-CjH0UASp.js.br +0 -0
  281. package/payload/server/public/assets/isEmpty-CjH0UASp.js.gz +0 -0
  282. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-wJhSOkuw.js → ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js} +1 -1
  283. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.br +0 -0
  284. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.gz +0 -0
  285. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DgadC6Pz.js → journeyDiagram-VCZTEJTY-ByUPv8q6.js} +1 -1
  286. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.br +0 -0
  287. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.gz +0 -0
  288. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Bs4nQqXI.js → kanban-definition-6JOO6SKY-CFinqhpu.js} +1 -1
  289. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.br +0 -0
  290. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.gz +0 -0
  291. package/payload/server/public/assets/{line-Bnmxy1hO.js → line-Y4ns5Ghi.js} +1 -1
  292. package/payload/server/public/assets/line-Y4ns5Ghi.js.br +0 -0
  293. package/payload/server/public/assets/line-Y4ns5Ghi.js.gz +0 -0
  294. package/payload/server/public/assets/{linear-RvwZxFzh.js → linear-l39GooQ5.js} +1 -1
  295. package/payload/server/public/assets/linear-l39GooQ5.js.br +0 -0
  296. package/payload/server/public/assets/linear-l39GooQ5.js.gz +0 -0
  297. package/payload/server/public/assets/{maximize-2-zC94tsxY.js → maximize-2-BJ9S-nfS.js} +1 -1
  298. package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.br +0 -0
  299. package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.gz +0 -0
  300. package/payload/server/public/assets/{mermaid-parser.core-DeNV8RtA.js → mermaid-parser.core-5w0T1dRj.js} +2 -2
  301. package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.br +0 -0
  302. package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.gz +0 -0
  303. package/payload/server/public/assets/{mermaid.core-BU9IiSCP.js → mermaid.core-DBADY5VW.js} +3 -3
  304. package/payload/server/public/assets/mermaid.core-DBADY5VW.js.br +0 -0
  305. package/payload/server/public/assets/mermaid.core-DBADY5VW.js.gz +0 -0
  306. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-D1PMUxxm.js → mindmap-definition-QFDTVHPH-rHz37loq.js} +1 -1
  307. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.br +0 -0
  308. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.gz +0 -0
  309. package/payload/server/public/assets/{operator-BtWNEMh-.js → operator-Cay4rOOK.js} +1 -1
  310. package/payload/server/public/assets/operator-Cay4rOOK.js.br +0 -0
  311. package/payload/server/public/assets/operator-Cay4rOOK.js.gz +0 -0
  312. package/payload/server/public/assets/{ordinal-C2TEWKNu.js → ordinal-D6D6WcTC.js} +1 -1
  313. package/payload/server/public/assets/ordinal-D6D6WcTC.js.br +0 -0
  314. package/payload/server/public/assets/ordinal-D6D6WcTC.js.gz +0 -0
  315. package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js +1 -0
  316. package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
  317. package/payload/server/public/assets/{page-Ccl0FazM.js → page-Cci_j_y7.js} +3 -3
  318. package/payload/server/public/assets/page-Cci_j_y7.js.br +0 -0
  319. package/payload/server/public/assets/page-Cci_j_y7.js.gz +0 -0
  320. package/payload/server/public/assets/page-shuh4ES9.js +1 -0
  321. package/payload/server/public/assets/page-shuh4ES9.js.br +0 -0
  322. package/payload/server/public/assets/page-shuh4ES9.js.gz +0 -0
  323. package/payload/server/public/assets/{pdf-render-C257cidb.js → pdf-render-BSgBp8Fr.js} +1 -1
  324. package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.br +0 -0
  325. package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.gz +0 -0
  326. package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js +1 -0
  327. package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
  328. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BzdNzoKA.js → pieDiagram-DEJITSTG-as0e_DSH.js} +1 -1
  329. package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.br +0 -0
  330. package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.gz +0 -0
  331. package/payload/server/public/assets/{public-BpC6cn9S.js → public-BbJcQGsO.js} +1 -1
  332. package/payload/server/public/assets/public-BbJcQGsO.js.br +0 -0
  333. package/payload/server/public/assets/public-BbJcQGsO.js.gz +0 -0
  334. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-oFr1MJRO.js → quadrantDiagram-34T5L4WZ-B4t8HO9J.js} +1 -1
  335. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.br +0 -0
  336. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.gz +0 -0
  337. package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js +1 -0
  338. package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
  339. package/payload/server/public/assets/{reduce-BGpN5lgn.js → reduce-BtXXK8Ma.js} +1 -1
  340. package/payload/server/public/assets/reduce-BtXXK8Ma.js.br +0 -0
  341. package/payload/server/public/assets/reduce-BtXXK8Ma.js.gz +0 -0
  342. package/payload/server/public/assets/{requirementDiagram-MS252O5E-C9QBQxDh.js → requirementDiagram-MS252O5E-yxh30zHX.js} +1 -1
  343. package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.br +0 -0
  344. package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.gz +0 -0
  345. package/payload/server/public/assets/{rotate-ccw-BNcqbHkZ.js → rotate-ccw-jeSVwUAv.js} +1 -1
  346. package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.br +0 -0
  347. package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.gz +0 -0
  348. package/payload/server/public/assets/routines-D3M1Wh3a.js +1 -0
  349. package/payload/server/public/assets/routines-D3M1Wh3a.js.br +0 -0
  350. package/payload/server/public/assets/routines-D3M1Wh3a.js.gz +0 -0
  351. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-c_y3bvVv.js → sankeyDiagram-XADWPNL6-j-k9Wfty.js} +1 -1
  352. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.br +0 -0
  353. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.gz +0 -0
  354. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-YwlCBPHE.js → sequenceDiagram-FGHM5R23-DGLgcLhC.js} +1 -1
  355. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.br +0 -0
  356. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.gz +0 -0
  357. package/payload/server/public/assets/{skills-COLAw_jt.js → skills-Bhej2ub1.js} +1 -1
  358. package/payload/server/public/assets/skills-Bhej2ub1.js.br +0 -0
  359. package/payload/server/public/assets/skills-Bhej2ub1.js.gz +0 -0
  360. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BFE3e-FM.js → stateDiagram-FHFEXIEX-C9p1OUMI.js} +1 -1
  361. package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.br +0 -0
  362. package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.gz +0 -0
  363. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js +1 -0
  364. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.br +0 -0
  365. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.gz +0 -0
  366. package/payload/server/public/assets/{tasks-CZDQI4nB.js → tasks-qY-dtOI2.js} +1 -1
  367. package/payload/server/public/assets/tasks-qY-dtOI2.js.br +0 -0
  368. package/payload/server/public/assets/tasks-qY-dtOI2.js.gz +0 -0
  369. package/payload/server/public/assets/{time-entry-format-laTFzawg.js → time-entry-format-r5UY9rjG.js} +1 -1
  370. package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.br +0 -0
  371. package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.gz +0 -0
  372. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-azqhmRwZ.js → timeline-definition-GMOUNBTQ-B1g7pgkH.js} +1 -1
  373. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.br +0 -0
  374. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.gz +0 -0
  375. package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js +1 -0
  376. package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
  377. package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +1 -0
  378. package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
  379. package/payload/server/public/assets/{triangle-alert-DrwqhEog.js → triangle-alert--PCKaewD.js} +1 -1
  380. package/payload/server/public/assets/triangle-alert--PCKaewD.js.br +2 -0
  381. package/payload/server/public/assets/triangle-alert--PCKaewD.js.gz +0 -0
  382. package/payload/server/public/assets/{useCopyFeedback-Cxme5GK6.js → useCopyFeedback-Dg5lNgqH.js} +1 -1
  383. package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.br +0 -0
  384. package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.gz +0 -0
  385. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css +1 -0
  386. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.br +0 -0
  387. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.gz +0 -0
  388. package/payload/server/public/assets/{useVoiceRecorder-DUBpVa2T.js → useVoiceRecorder-BY6ZsGMH.js} +2 -2
  389. package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.br +0 -0
  390. package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.gz +0 -0
  391. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-Da2RfFs8.js → vennDiagram-DHZGUBPP-D2ZjFfh4.js} +1 -1
  392. package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.br +0 -0
  393. package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.gz +0 -0
  394. package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js +1 -0
  395. package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
  396. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-HdrdBYES.js → wardleyDiagram-NUSXRM2D-BFAhfkD8.js} +1 -1
  397. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.br +0 -0
  398. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.gz +0 -0
  399. package/payload/server/public/assets/{wrench-DWuxPnzF.js → wrench-Bw1FMolk.js} +1 -1
  400. package/payload/server/public/assets/wrench-Bw1FMolk.js.br +0 -0
  401. package/payload/server/public/assets/wrench-Bw1FMolk.js.gz +0 -0
  402. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DMk6rTcQ.js → xychartDiagram-5P7HB3ND-Dt94h2RQ.js} +1 -1
  403. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.br +0 -0
  404. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.gz +0 -0
  405. package/payload/server/public/brand-defaults.css +1 -0
  406. package/payload/server/public/browser.html +4 -4
  407. package/payload/server/public/calendar.html +7 -7
  408. package/payload/server/public/chat.html +14 -14
  409. package/payload/server/public/data.html +13 -12
  410. package/payload/server/public/graph.html +9 -9
  411. package/payload/server/public/index.html +16 -15
  412. package/payload/server/public/operator.html +15 -15
  413. package/payload/server/public/public.html +14 -14
  414. package/payload/server/public/routines.html +7 -6
  415. package/payload/server/public/skills.html +5 -5
  416. package/payload/server/public/tasks.html +6 -6
  417. package/payload/server/server.js +744 -425
  418. package/payload/server/public/assets/AdminLoginScreens-uknqh2Pm.js.br +0 -0
  419. package/payload/server/public/assets/AdminLoginScreens-uknqh2Pm.js.gz +0 -0
  420. package/payload/server/public/assets/AdminShell-GqtMImyQ.js.br +0 -0
  421. package/payload/server/public/assets/AdminShell-GqtMImyQ.js.gz +0 -0
  422. package/payload/server/public/assets/activity-B4KfMJqO.js.br +0 -0
  423. package/payload/server/public/assets/activity-B4KfMJqO.js.gz +0 -0
  424. package/payload/server/public/assets/admin-DxCZeVw0.js +0 -1
  425. package/payload/server/public/assets/admin-DxCZeVw0.js.br +0 -0
  426. package/payload/server/public/assets/admin-DxCZeVw0.js.gz +0 -0
  427. package/payload/server/public/assets/agents-BtwBuO4G.js +0 -1
  428. package/payload/server/public/assets/agents-BtwBuO4G.js.br +0 -0
  429. package/payload/server/public/assets/agents-BtwBuO4G.js.gz +0 -0
  430. package/payload/server/public/assets/arc-DaI5MLTq.js.br +0 -0
  431. package/payload/server/public/assets/arc-DaI5MLTq.js.gz +0 -0
  432. package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js +0 -1
  433. package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js.br +0 -0
  434. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.br +0 -0
  435. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.gz +0 -0
  436. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.br +0 -0
  437. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.gz +0 -0
  438. package/payload/server/public/assets/browser-B3hSzI3O.js.br +0 -0
  439. package/payload/server/public/assets/browser-B3hSzI3O.js.gz +0 -0
  440. package/payload/server/public/assets/c4Diagram-AHTNJAMY-hBSBUZPt.js.br +0 -0
  441. package/payload/server/public/assets/calendar-BggxXxhS.js.br +0 -0
  442. package/payload/server/public/assets/calendar-BggxXxhS.js.gz +0 -0
  443. package/payload/server/public/assets/channel-BEokjAeE.js +0 -1
  444. package/payload/server/public/assets/channel-BEokjAeE.js.br +0 -0
  445. package/payload/server/public/assets/chat-flivHt0t.js +0 -1
  446. package/payload/server/public/assets/chat-flivHt0t.js.br +0 -0
  447. package/payload/server/public/assets/chat-flivHt0t.js.gz +0 -0
  448. package/payload/server/public/assets/chevron-left-nVRThX7f.js +0 -1
  449. package/payload/server/public/assets/chevron-right-CLqfrkRA.js +0 -1
  450. package/payload/server/public/assets/chevron-right-CLqfrkRA.js.br +0 -0
  451. package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.br +0 -0
  452. package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.gz +0 -0
  453. package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.br +0 -0
  454. package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.gz +0 -0
  455. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js +0 -1
  456. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.br +0 -0
  457. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.gz +0 -0
  458. package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.br +0 -0
  459. package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.gz +0 -0
  460. package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.br +0 -0
  461. package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.gz +0 -0
  462. package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.br +0 -0
  463. package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.gz +0 -0
  464. package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.br +0 -0
  465. package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.gz +0 -0
  466. package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.br +0 -0
  467. package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.gz +0 -0
  468. package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.br +0 -2
  469. package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.gz +0 -0
  470. package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.br +0 -2
  471. package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.gz +0 -0
  472. package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.br +0 -0
  473. package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.gz +0 -0
  474. package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.br +0 -0
  475. package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.gz +0 -0
  476. package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.br +0 -0
  477. package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.gz +0 -0
  478. package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.br +0 -0
  479. package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.gz +0 -0
  480. package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.br +0 -0
  481. package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.gz +0 -0
  482. package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.br +0 -0
  483. package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.gz +0 -0
  484. package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.br +0 -0
  485. package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.gz +0 -0
  486. package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.br +0 -0
  487. package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.gz +0 -0
  488. package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.br +0 -0
  489. package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.gz +0 -0
  490. package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.br +0 -0
  491. package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.gz +0 -0
  492. package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.br +0 -0
  493. package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.gz +0 -0
  494. package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.br +0 -0
  495. package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.gz +0 -0
  496. package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.br +0 -0
  497. package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.gz +0 -0
  498. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js +0 -1
  499. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.br +0 -0
  500. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.gz +0 -0
  501. package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.br +0 -0
  502. package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.gz +0 -0
  503. package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.br +0 -0
  504. package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.gz +0 -0
  505. package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.br +0 -0
  506. package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.gz +0 -0
  507. package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.br +0 -0
  508. package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.gz +0 -0
  509. package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.br +0 -0
  510. package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.gz +0 -0
  511. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js +0 -1
  512. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.br +0 -0
  513. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.gz +0 -0
  514. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js +0 -1
  515. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.br +0 -0
  516. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.gz +0 -0
  517. package/payload/server/public/assets/clock-Dj3SRZKo.js +0 -1
  518. package/payload/server/public/assets/clock-Dj3SRZKo.js.br +0 -0
  519. package/payload/server/public/assets/clock-Dj3SRZKo.js.gz +0 -0
  520. package/payload/server/public/assets/clone-Bn7XXVhr.js +0 -1
  521. package/payload/server/public/assets/clone-Bn7XXVhr.js.br +0 -0
  522. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.br +0 -0
  523. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.gz +0 -0
  524. package/payload/server/public/assets/dagre-BZYNBHvT.js.br +0 -0
  525. package/payload/server/public/assets/dagre-BZYNBHvT.js.gz +0 -0
  526. package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.br +0 -0
  527. package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.gz +0 -0
  528. package/payload/server/public/assets/data-Ckjkne54.js +0 -1
  529. package/payload/server/public/assets/data-Ckjkne54.js.br +0 -3
  530. package/payload/server/public/assets/data-Ckjkne54.js.gz +0 -0
  531. package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.br +0 -0
  532. package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.gz +0 -0
  533. package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.br +0 -0
  534. package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.gz +0 -0
  535. package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.br +0 -0
  536. package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.gz +0 -0
  537. package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.br +0 -0
  538. package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.gz +0 -0
  539. package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.br +0 -0
  540. package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.gz +0 -0
  541. package/payload/server/public/assets/file-text-BKs9eyiw.js.br +0 -0
  542. package/payload/server/public/assets/file-text-BKs9eyiw.js.gz +0 -0
  543. package/payload/server/public/assets/flatten-BtIc9jX7.js.br +0 -0
  544. package/payload/server/public/assets/flatten-BtIc9jX7.js.gz +0 -0
  545. package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.br +0 -0
  546. package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.gz +0 -0
  547. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.br +0 -0
  548. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.gz +0 -0
  549. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js +0 -1
  550. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js.br +0 -0
  551. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.br +0 -0
  552. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.gz +0 -0
  553. package/payload/server/public/assets/graph-DTi71NaZ.js.br +0 -0
  554. package/payload/server/public/assets/graph-DTi71NaZ.js.gz +0 -0
  555. package/payload/server/public/assets/graph-labels-BT3S6e9H.js.br +0 -0
  556. package/payload/server/public/assets/graph-labels-BT3S6e9H.js.gz +0 -0
  557. package/payload/server/public/assets/graphlib-DY4-AT2Q.js.br +0 -0
  558. package/payload/server/public/assets/graphlib-DY4-AT2Q.js.gz +0 -0
  559. package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js +0 -1
  560. package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js.br +0 -0
  561. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js +0 -2
  562. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.br +0 -0
  563. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.gz +0 -0
  564. package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.br +0 -0
  565. package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.gz +0 -0
  566. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.br +0 -0
  567. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.gz +0 -0
  568. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.br +0 -0
  569. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.gz +0 -0
  570. package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.br +0 -0
  571. package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.gz +0 -0
  572. package/payload/server/public/assets/line-Bnmxy1hO.js.br +0 -0
  573. package/payload/server/public/assets/line-Bnmxy1hO.js.gz +0 -0
  574. package/payload/server/public/assets/linear-RvwZxFzh.js.br +0 -0
  575. package/payload/server/public/assets/linear-RvwZxFzh.js.gz +0 -0
  576. package/payload/server/public/assets/maximize-2-zC94tsxY.js.br +0 -0
  577. package/payload/server/public/assets/maximize-2-zC94tsxY.js.gz +0 -0
  578. package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.br +0 -0
  579. package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.gz +0 -0
  580. package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.br +0 -0
  581. package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.gz +0 -0
  582. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.br +0 -0
  583. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.gz +0 -0
  584. package/payload/server/public/assets/operator-BtWNEMh-.js.br +0 -0
  585. package/payload/server/public/assets/operator-BtWNEMh-.js.gz +0 -0
  586. package/payload/server/public/assets/ordinal-C2TEWKNu.js.br +0 -0
  587. package/payload/server/public/assets/ordinal-C2TEWKNu.js.gz +0 -0
  588. package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js +0 -1
  589. package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js.br +0 -0
  590. package/payload/server/public/assets/page-BFm91p0e.js +0 -1
  591. package/payload/server/public/assets/page-BFm91p0e.js.br +0 -0
  592. package/payload/server/public/assets/page-BFm91p0e.js.gz +0 -0
  593. package/payload/server/public/assets/page-Ccl0FazM.js.br +0 -0
  594. package/payload/server/public/assets/page-Ccl0FazM.js.gz +0 -0
  595. package/payload/server/public/assets/pdf-render-C257cidb.js.br +0 -0
  596. package/payload/server/public/assets/pdf-render-C257cidb.js.gz +0 -0
  597. package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js +0 -1
  598. package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js.br +0 -0
  599. package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.br +0 -0
  600. package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.gz +0 -0
  601. package/payload/server/public/assets/public-BpC6cn9S.js.br +0 -0
  602. package/payload/server/public/assets/public-BpC6cn9S.js.gz +0 -0
  603. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.br +0 -0
  604. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.gz +0 -0
  605. package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js +0 -1
  606. package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js.br +0 -0
  607. package/payload/server/public/assets/reduce-BGpN5lgn.js.br +0 -0
  608. package/payload/server/public/assets/reduce-BGpN5lgn.js.gz +0 -0
  609. package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.br +0 -0
  610. package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.gz +0 -0
  611. package/payload/server/public/assets/rotate-ccw-BNcqbHkZ.js.br +0 -0
  612. package/payload/server/public/assets/rotate-ccw-BNcqbHkZ.js.gz +0 -0
  613. package/payload/server/public/assets/routines-D5iia-XG.js +0 -1
  614. package/payload/server/public/assets/routines-D5iia-XG.js.br +0 -0
  615. package/payload/server/public/assets/routines-D5iia-XG.js.gz +0 -0
  616. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.br +0 -0
  617. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.gz +0 -0
  618. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.br +0 -0
  619. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.gz +0 -0
  620. package/payload/server/public/assets/skills-COLAw_jt.js.br +0 -0
  621. package/payload/server/public/assets/skills-COLAw_jt.js.gz +0 -0
  622. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.br +0 -0
  623. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.gz +0 -0
  624. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js +0 -1
  625. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.br +0 -4
  626. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.gz +0 -0
  627. package/payload/server/public/assets/tasks-CZDQI4nB.js.br +0 -0
  628. package/payload/server/public/assets/tasks-CZDQI4nB.js.gz +0 -0
  629. package/payload/server/public/assets/time-entry-format-laTFzawg.js.br +0 -0
  630. package/payload/server/public/assets/time-entry-format-laTFzawg.js.gz +0 -0
  631. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.br +0 -0
  632. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.gz +0 -0
  633. package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js +0 -1
  634. package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js.br +0 -0
  635. package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js +0 -1
  636. package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js.br +0 -0
  637. package/payload/server/public/assets/triangle-alert-DrwqhEog.js.br +0 -0
  638. package/payload/server/public/assets/triangle-alert-DrwqhEog.js.gz +0 -0
  639. package/payload/server/public/assets/useCopyFeedback-Cxme5GK6.js.br +0 -0
  640. package/payload/server/public/assets/useCopyFeedback-Cxme5GK6.js.gz +0 -0
  641. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css +0 -1
  642. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css.br +0 -0
  643. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css.gz +0 -0
  644. package/payload/server/public/assets/useVoiceRecorder-DUBpVa2T.js.br +0 -0
  645. package/payload/server/public/assets/useVoiceRecorder-DUBpVa2T.js.gz +0 -0
  646. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.br +0 -0
  647. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.gz +0 -0
  648. package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js +0 -1
  649. package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js.br +0 -0
  650. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.br +0 -0
  651. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.gz +0 -0
  652. package/payload/server/public/assets/wrench-DWuxPnzF.js.br +0 -0
  653. package/payload/server/public/assets/wrench-DWuxPnzF.js.gz +0 -0
  654. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.br +0 -0
  655. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.gz +0 -0
  656. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js → _baseFor-B12He5Rp.js} +0 -0
  657. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.br → _baseFor-B12He5Rp.js.br} +0 -0
  658. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.gz → _baseFor-B12He5Rp.js.gz} +0 -0
  659. /package/payload/server/public/assets/{array-X0JlPOfd.js → array-DO1uCttT.js} +0 -0
  660. /package/payload/server/public/assets/{array-X0JlPOfd.js.br → array-DO1uCttT.js.br} +0 -0
  661. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js → cytoscape.esm-DFn2foqy.js} +0 -0
  662. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.br → cytoscape.esm-DFn2foqy.js.br} +0 -0
  663. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.gz → cytoscape.esm-DFn2foqy.js.gz} +0 -0
  664. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js → defaultLocale-ieI3yFoA.js} +0 -0
  665. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.br → defaultLocale-ieI3yFoA.js.br} +0 -0
  666. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.gz → defaultLocale-ieI3yFoA.js.gz} +0 -0
  667. /package/payload/server/public/assets/{dist-QvbmK1IP.js → dist-DlU7AEeD.js} +0 -0
  668. /package/payload/server/public/assets/{dist-QvbmK1IP.js.br → dist-DlU7AEeD.js.br} +0 -0
  669. /package/payload/server/public/assets/{dist-QvbmK1IP.js.gz → dist-DlU7AEeD.js.gz} +0 -0
  670. /package/payload/server/public/assets/{init-BmUWJJHz.js → init-BCRlEgNP.js} +0 -0
  671. /package/payload/server/public/assets/{init-BmUWJJHz.js.br → init-BCRlEgNP.js.br} +0 -0
  672. /package/payload/server/public/assets/{init-BmUWJJHz.js.gz → init-BCRlEgNP.js.gz} +0 -0
  673. /package/payload/server/public/assets/{katex-BjZuzSQn.js → katex-gkTaZgi6.js} +0 -0
  674. /package/payload/server/public/assets/{katex-BjZuzSQn.js.br → katex-gkTaZgi6.js.br} +0 -0
  675. /package/payload/server/public/assets/{katex-BjZuzSQn.js.gz → katex-gkTaZgi6.js.gz} +0 -0
  676. /package/payload/server/public/assets/{path-CoPyR7c2.js → path-DTmzQFjQ.js} +0 -0
  677. /package/payload/server/public/assets/{path-CoPyR7c2.js.br → path-DTmzQFjQ.js.br} +0 -0
  678. /package/payload/server/public/assets/{path-CoPyR7c2.js.gz → path-DTmzQFjQ.js.gz} +0 -0
  679. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js → preload-helper-eAV8hweq.js} +0 -0
  680. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.br → preload-helper-eAV8hweq.js.br} +0 -0
  681. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.gz → preload-helper-eAV8hweq.js.gz} +0 -0
  682. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js → rough.esm-BFJ-MgcB.js} +0 -0
  683. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.br → rough.esm-BFJ-MgcB.js.br} +0 -0
  684. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.gz → rough.esm-BFJ-MgcB.js.gz} +0 -0
  685. /package/payload/server/public/assets/{src-C2WwTWSY.js → src-9CNk4JU0.js} +0 -0
  686. /package/payload/server/public/assets/{src-C2WwTWSY.js.br → src-9CNk4JU0.js.br} +0 -0
  687. /package/payload/server/public/assets/{src-C2WwTWSY.js.gz → src-9CNk4JU0.js.gz} +0 -0
  688. /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js → useSubAccountSwitcher-CnpeWIYq.js} +0 -0
  689. /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js.br → useSubAccountSwitcher-CnpeWIYq.js.br} +0 -0
  690. /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js.gz → useSubAccountSwitcher-CnpeWIYq.js.gz} +0 -0
@@ -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 scheduling MCP cannot import `platform/ui` (plugin boundary), so this
6
- * module replicates the minimal E.164 matching from
7
- * `platform/ui/app/lib/whatsapp/normalize.ts`. For WhatsApp the authoritative
8
- * `adminPhones` + `accountManagers` lists live ONLY on the socket-owning house
9
- * account (Tasks 1377/1382), so the validator resolves the house via
10
- * `resolveHouseOrSoleAccountId` the same authority the inbound gate uses — and
11
- * reads its config, NOT the event's own account. It then requires the
12
- * destination's registered account to match the account that created the
13
- * schedule (the house/owner account excepted), so a schedule created in account
14
- * X cannot message another account's people. One `validateAgentDestination` is
15
- * shared by `schedule-event`, `schedule-update`, and the dispatcher's standing
16
- * audit so create-time and fire-time cannot diverge on rule or reason codes.
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
- * Replica of `normalize.ts:normalizeE164` strip whitespace/dashes/parens, a
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
- * - whatsapp: resolve the socket-owning house, read ITS authoritative lists,
94
- * and compute the destination's registered account. `not-registered` if it
95
- * is in no house list. Otherwise valid iff the creator IS the house (owner
96
- * exception: it owns the single line and may target any registered
97
- * admin/manager) OR the registered account equals the creating account.
98
- * Any other case is `cross-account`.
99
- * - telegram: house-only (Task 1378; 1380 deferred). Reads the creating
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
- if (channel === "whatsapp") {
106
- const houseAccountId = resolveHouseOrSoleAccountId(accountsDir);
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":"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"}
1
+ {"version":3,"file":"agent-dispatch.js","sourceRoot":"","sources":["../../src/lib/agent-dispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schedule-update-status.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-update-status.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/schedule-update-status.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,305 @@
1
+ // Task 2134 — the agent-facing reversible pause.
2
+ //
3
+ // `schedule-update` wrote `eventStatus` as an unvalidated free string, and the
4
+ // only stop value the enum offered was `cancelled` — the same literal a real
5
+ // cancellation and a lifecycle plugin-disable write. These assert the three
6
+ // things that made the old behaviour dangerous: an arbitrary value could
7
+ // permanently disarm a routine, a cancelled series could be re-armed by writing
8
+ // `scheduled` back onto it, and a resume restored a stale `nextRun` that the
9
+ // sweep fires on the next tick.
10
+ //
11
+ // The sweep's own side is asserted in scripts/__tests__/sweep-excludes-suspended.ts
12
+ // (Task 2106) and is not duplicated here.
13
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
14
+ const runCalls = [];
15
+ // The row the pre-read returns. `null` means no :Event matched that id.
16
+ let storedRow = null;
17
+ vi.mock("../../lib/embedding.js", () => ({
18
+ computeEmbedding: vi.fn(async () => []),
19
+ }));
20
+ vi.mock("../../lib/neo4j.js", () => ({
21
+ getSession: () => ({
22
+ run: vi.fn(async (query, params) => {
23
+ runCalls.push({ query, params });
24
+ // The pre-read is the only RETURN-without-SET against :Event.
25
+ if (query.includes("RETURN e.eventStatus AS eventStatus")) {
26
+ if (!storedRow)
27
+ return { records: [] };
28
+ return {
29
+ records: [{ get: (k) => storedRow[k] ?? null }],
30
+ };
31
+ }
32
+ if (query.includes("MATCH (m:Meeting"))
33
+ return { records: [] };
34
+ // An id that matched no row on the pre-read matches none on the SET
35
+ // either — the same MATCH, one statement later.
36
+ if (query.includes("MATCH (e:Event") && !storedRow)
37
+ return { records: [] };
38
+ return { records: [{ get: () => null }] };
39
+ }),
40
+ close: vi.fn(async () => { }),
41
+ }),
42
+ }));
43
+ import cronParser from "cron-parser";
44
+ import { scheduleUpdate, EVENT_STATUSES, planResume } from "../schedule-update.js";
45
+ const ACCOUNT_ID = "11111111-1111-4111-8111-111111111111";
46
+ const EVENT_ID = "22222222-2222-4222-8222-222222222222";
47
+ /**
48
+ * A zone assertion is only worth anything if the zone disagrees with the host's.
49
+ * Asserting "the London hour is 08" on a machine already running in London
50
+ * passes whether the code honours the stored zone or falls back to the server's,
51
+ * which is the exact regression these tests exist to catch. This picks a zone
52
+ * that provably disagrees on THIS host and fails loudly if none does, so the
53
+ * test can never go quietly vacuous on someone else's machine.
54
+ */
55
+ function discriminatingZone(cron) {
56
+ const serverSide = cronParser.parseExpression(cron, { currentDate: new Date() }).next().toISOString();
57
+ for (const tz of ["Asia/Tokyo", "America/Los_Angeles", "Pacific/Kiritimati"]) {
58
+ const zoned = cronParser.parseExpression(cron, { currentDate: new Date(), tz }).next().toISOString();
59
+ if (zoned !== serverSide)
60
+ return tz;
61
+ }
62
+ throw new Error(`No candidate zone disagrees with the host zone for "${cron}" — this assertion would be vacuous`);
63
+ }
64
+ /** The hour `instant` reads as in `tz`, two digits, 24-hour. */
65
+ function hourIn(instant, tz) {
66
+ return new Intl.DateTimeFormat("en-GB", { timeZone: tz, hour: "2-digit", hour12: false }).format(instant);
67
+ }
68
+ /** The SET statement the updater ran against :Event (never the pre-read). */
69
+ function setCall() {
70
+ const hit = runCalls.filter((c) => c.query.includes("SET ") && c.query.includes("MATCH (e:Event"));
71
+ return hit[hit.length - 1];
72
+ }
73
+ let logs = [];
74
+ beforeEach(() => {
75
+ runCalls.length = 0;
76
+ logs = [];
77
+ vi.spyOn(console, "error").mockImplementation((...args) => {
78
+ logs.push(args.map(String).join(" "));
79
+ });
80
+ storedRow = { eventStatus: "scheduled", recurrence: "*/15 * * * *", timezone: "Europe/London", startDate: null };
81
+ });
82
+ afterEach(() => {
83
+ vi.restoreAllMocks();
84
+ });
85
+ describe("the status vocabulary", () => {
86
+ it("carries suspended, the literal Task 2106 already writes", () => {
87
+ expect(EVENT_STATUSES).toContain("suspended");
88
+ });
89
+ it("keeps the four statuses that were already permitted", () => {
90
+ for (const s of ["scheduled", "due", "completed", "cancelled"]) {
91
+ expect(EVENT_STATUSES).toContain(s);
92
+ }
93
+ });
94
+ });
95
+ describe("suspend", () => {
96
+ it("writes the suspended literal", async () => {
97
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "suspended" });
98
+ const { query, params } = setCall();
99
+ expect(query).toContain("e.eventStatus = $eventStatus");
100
+ expect(params.eventStatus).toBe("suspended");
101
+ });
102
+ // Task 2106's resume-all selects `eventStatus = 'suspended' AND
103
+ // suspendedInBulk = true`. A chat suspend that left the marker set would be
104
+ // swept up by a dashboard Resume all the operator meant for the bulk set.
105
+ it("clears the bulk marker so Resume all leaves it alone", async () => {
106
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "suspended" });
107
+ expect(setCall().query).toContain("e.suspendedInBulk = null");
108
+ });
109
+ it("records the transition in the log", async () => {
110
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "suspended" });
111
+ expect(logs.some((l) => /op=status .*from=scheduled to=suspended outcome=applied/.test(l))).toBe(true);
112
+ });
113
+ });
114
+ describe("resume", () => {
115
+ beforeEach(() => {
116
+ storedRow = { eventStatus: "suspended", recurrence: "*/15 * * * *", timezone: "Europe/London", startDate: null };
117
+ });
118
+ // The sweep advances a recurring routine from its STORED nextRun
119
+ // (check-due-events.ts:805-809), so re-arming with a value 30 days behind
120
+ // fires once per tick until it catches up. Resume must schedule forward.
121
+ it("schedules forward from now, not from the stale stored value", async () => {
122
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" });
123
+ const { query, params } = setCall();
124
+ expect(query).toContain("e.nextRun = $resumeNextRun");
125
+ expect(Date.parse(params.resumeNextRun)).toBeGreaterThan(Date.now());
126
+ // A quarter-hourly routine's next occurrence is within the quarter hour.
127
+ expect(Date.parse(params.resumeNextRun)).toBeLessThan(Date.now() + 16 * 60_000);
128
+ });
129
+ it("reports a positive aheadMin, the replay signature caught at the write", async () => {
130
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" });
131
+ const line = logs.find((l) => l.includes("op=resume"));
132
+ expect(line).toBeDefined();
133
+ expect(line).toContain("tz=Europe/London");
134
+ const ahead = Number(/aheadMin=(-?\d+)/.exec(line)[1]);
135
+ expect(ahead).toBeGreaterThan(0);
136
+ });
137
+ // The routine's own stored timezone governs, never the server's. The zone is
138
+ // chosen to disagree with this host, so falling back to `tz: undefined` moves
139
+ // the instant and fails the assertion.
140
+ it("recomputes in the routine's stored zone, not the server's", async () => {
141
+ const tz = discriminatingZone("0 8 * * *");
142
+ storedRow = { eventStatus: "suspended", recurrence: "0 8 * * *", timezone: tz, startDate: null };
143
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" });
144
+ const next = new Date(setCall().params.resumeNextRun);
145
+ expect(hourIn(next, tz)).toBe("08");
146
+ // The instant a server-zone fallback would have produced, named explicitly
147
+ // so the test states what it is discriminating against.
148
+ const serverSide = cronParser.parseExpression("0 8 * * *", { currentDate: new Date() }).next().toISOString();
149
+ expect(next.toISOString()).not.toBe(serverSide);
150
+ });
151
+ it("clears the bulk marker", async () => {
152
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" });
153
+ expect(setCall().query).toContain("e.suspendedInBulk = null");
154
+ });
155
+ // The seeded roster ships suspended with a null nextRun (Task 2130). Enabling
156
+ // one is this exact call, and it must produce a forward nextRun.
157
+ it("arms a seeded routine that has no stored nextRun", async () => {
158
+ storedRow = { eventStatus: "suspended", recurrence: "0 7 * * 1-5", timezone: "Europe/London", startDate: null };
159
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" });
160
+ expect(Date.parse(setCall().params.resumeNextRun)).toBeGreaterThan(Date.now());
161
+ });
162
+ // The roster seeds no timezone, and a resume with none resolves the cron in
163
+ // the server's zone (Task 2130's op=null-timezone alarm). The documented
164
+ // enable call therefore supplies one, and it must govern both the stored
165
+ // property and the recompute in the same call.
166
+ it("applies a timezone supplied alongside the resume, without a recurrence", async () => {
167
+ const tz = discriminatingZone("0 7 * * 1-5");
168
+ storedRow = { eventStatus: "suspended", recurrence: "0 7 * * 1-5", timezone: null, startDate: null };
169
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled", timezone: tz });
170
+ const { query, params } = setCall();
171
+ expect(query).toContain("e.timezone = $timezone");
172
+ const next = new Date(params.resumeNextRun);
173
+ expect(hourIn(next, tz)).toBe("07");
174
+ const serverSide = cronParser.parseExpression("0 7 * * 1-5", { currentDate: new Date() }).next().toISOString();
175
+ expect(next.toISOString()).not.toBe(serverSide);
176
+ expect(logs.some((l) => l.includes("op=resume") && l.includes(`tz=${tz}`))).toBe(true);
177
+ });
178
+ // A one-time routine has no cron to advance and the sweep fires it on
179
+ // `startDate <= now`. Resuming one whose date has passed dispatches it within
180
+ // the tick, which is the missed window a resume must never run.
181
+ it("refuses a one-time routine whose date has passed, naming the date", async () => {
182
+ storedRow = { eventStatus: "suspended", recurrence: null, timezone: null, startDate: "2020-01-01T00:00:00.000Z" };
183
+ await expect(scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" })).rejects.toThrow(/2020-01-01T00:00:00.000Z/);
184
+ expect(logs.some((l) => l.includes("outcome=refused reason=past-one-time"))).toBe(true);
185
+ });
186
+ it("leaves a future one-time routine's stored date alone", async () => {
187
+ storedRow = { eventStatus: "suspended", recurrence: null, timezone: null, startDate: "2099-01-01T00:00:00.000Z" };
188
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" });
189
+ expect(setCall().query).not.toContain("e.nextRun");
190
+ });
191
+ });
192
+ describe("the transition gate", () => {
193
+ it("refuses a value outside the enum, naming the permitted ones", async () => {
194
+ await expect(scheduleUpdate({
195
+ accountId: ACCOUNT_ID,
196
+ eventId: EVENT_ID,
197
+ eventStatus: "paused",
198
+ })).rejects.toThrow(/suspended/);
199
+ expect(logs.some((l) => l.includes("outcome=refused reason=out-of-enum"))).toBe(true);
200
+ });
201
+ // schedule-cancel terminates a series. Writing 'scheduled' back onto a
202
+ // cancelled routine would re-arm what cancel was supposed to have killed.
203
+ it("refuses to re-arm a cancelled routine", async () => {
204
+ storedRow = { eventStatus: "cancelled", recurrence: "*/15 * * * *", timezone: null, startDate: null };
205
+ await expect(scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" })).rejects.toThrow(/cancelled/);
206
+ expect(logs.some((l) => l.includes("outcome=refused reason=unsupported-transition"))).toBe(true);
207
+ });
208
+ it("refuses to cancel through the update tool, naming schedule-cancel", async () => {
209
+ await expect(scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "cancelled" })).rejects.toThrow(/schedule-cancel/);
210
+ expect(logs.some((l) => l.includes("outcome=refused reason=use-schedule-cancel"))).toBe(true);
211
+ });
212
+ it("refuses a no-op restatement of the current status", async () => {
213
+ await expect(scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "scheduled" })).rejects.toThrow(/already/);
214
+ expect(logs.some((l) => l.includes("outcome=refused reason=already-scheduled"))).toBe(true);
215
+ });
216
+ // A routine created before eventStatus was written carries no property. The
217
+ // list surface reads that as 'scheduled' (index.ts:227); so does the gate.
218
+ it("treats an absent status as scheduled", async () => {
219
+ storedRow = { eventStatus: null, recurrence: "*/15 * * * *", timezone: null, startDate: null };
220
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "suspended" });
221
+ expect(setCall().params.eventStatus).toBe("suspended");
222
+ });
223
+ it("writes nothing when the id matches no event", async () => {
224
+ storedRow = null;
225
+ await expect(scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, eventStatus: "suspended" })).rejects.toThrow();
226
+ expect(logs.some((l) => l.includes("outcome=refused reason=no-event"))).toBe(true);
227
+ });
228
+ });
229
+ describe("the cron recompute reads the stored zone", () => {
230
+ // The old code passed `tz: updates.timezone ?? undefined`, so changing a
231
+ // recurrence without restating the timezone recomputed in the server's zone.
232
+ it("uses the routine's stored timezone when the caller does not restate it", async () => {
233
+ storedRow = { eventStatus: "scheduled", recurrence: "0 8 * * *", timezone: "Asia/Tokyo", startDate: null };
234
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "0 9 * * *" });
235
+ const next = new Date(setCall().params.newNextRun);
236
+ const tokyoHour = new Intl.DateTimeFormat("en-GB", {
237
+ timeZone: "Asia/Tokyo",
238
+ hour: "2-digit",
239
+ hour12: false,
240
+ }).format(next);
241
+ expect(tokyoHour).toBe("09");
242
+ });
243
+ it("prefers an explicitly supplied timezone over the stored one", async () => {
244
+ storedRow = { eventStatus: "scheduled", recurrence: "0 8 * * *", timezone: "Asia/Tokyo", startDate: null };
245
+ await scheduleUpdate({
246
+ accountId: ACCOUNT_ID,
247
+ eventId: EVENT_ID,
248
+ recurrence: "0 9 * * *",
249
+ timezone: "Europe/London",
250
+ });
251
+ const next = new Date(setCall().params.newNextRun);
252
+ const londonHour = new Intl.DateTimeFormat("en-GB", {
253
+ timeZone: "Europe/London",
254
+ hour: "2-digit",
255
+ hour12: false,
256
+ }).format(next);
257
+ expect(londonHour).toBe("09");
258
+ });
259
+ // One writer per property. A resume that also changed the recurrence would
260
+ // otherwise push two SET clauses on e.nextRun and the later would silently win.
261
+ it("does not write nextRun twice when a resume also changes the recurrence", async () => {
262
+ storedRow = { eventStatus: "suspended", recurrence: "*/15 * * * *", timezone: "Europe/London", startDate: null };
263
+ await scheduleUpdate({
264
+ accountId: ACCOUNT_ID,
265
+ eventId: EVENT_ID,
266
+ eventStatus: "scheduled",
267
+ recurrence: "0 9 * * *",
268
+ });
269
+ const clauses = setCall().query.split(",").filter((c) => c.includes("e.nextRun ="));
270
+ expect(clauses).toHaveLength(1);
271
+ });
272
+ });
273
+ describe("notes", () => {
274
+ it("records the suspension and the caller's own note in one append", async () => {
275
+ await scheduleUpdate({
276
+ accountId: ACCOUNT_ID,
277
+ eventId: EVENT_ID,
278
+ eventStatus: "suspended",
279
+ note: "operator asked in chat",
280
+ });
281
+ const { query, params } = setCall();
282
+ expect(query.split(",").filter((c) => c.includes("e.notes ="))).toHaveLength(1);
283
+ expect(params.noteEntry).toContain("Suspended");
284
+ expect(params.noteEntry).toContain("operator asked in chat");
285
+ });
286
+ });
287
+ // planResume is exported so the decision is testable without a driver, the same
288
+ // shape as its twin in platform/ui/server/routes/admin/routines.ts.
289
+ describe("planResume", () => {
290
+ it("refuses an unparseable cron rather than arming an invalid schedule", () => {
291
+ const plan = planResume({ recurrence: "not a cron", timezone: null, startDate: null }, new Date());
292
+ expect(plan.ok).toBe(false);
293
+ if (!plan.ok)
294
+ expect(plan.reason).toBe("invalid-cron");
295
+ });
296
+ // startDate is stored verbatim and can carry a non-UTC offset. An instant
297
+ // comparison disagrees with the sweep's string comparison on exactly those
298
+ // rows, so the sweep's own predicate is the one used.
299
+ it("compares startDate as the sweep does, by string", () => {
300
+ const now = new Date("2026-07-29T03:00:00.000Z");
301
+ const plan = planResume({ recurrence: null, timezone: null, startDate: "2026-07-28T23:00:00-05:00" }, now);
302
+ expect(plan.ok).toBe(false);
303
+ });
304
+ });
305
+ //# sourceMappingURL=schedule-update-status.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-update-status.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/schedule-update-status.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,22 @@
1
1
  import type { EventAction, AgentDispatch } from "./schedule-event.js";
2
+ /**
3
+ * Task 2134 — the status vocabulary, in one place.
4
+ *
5
+ * `suspended` is the reversible stop: the sweep selects `eventStatus =
6
+ * 'scheduled'` by equality in all four of its predicates
7
+ * (check-due-events.ts:502, :567, :704, :768), so a suspended row is excluded by
8
+ * construction and restoring `scheduled` re-arms it. It is the same literal Task
9
+ * 2106's dashboard controls write and the shipped routine roster seeds with; a
10
+ * second name would be a defect, not a synonym.
11
+ *
12
+ * `cancelled` is the terminal stop and belongs to `schedule-cancel`. The two are
13
+ * different intents and this list is what keeps them apart.
14
+ *
15
+ * The tool schema in index.ts is built from this array, so the enum the agent
16
+ * sees and the enum the library enforces cannot drift.
17
+ */
18
+ export declare const EVENT_STATUSES: readonly ["scheduled", "due", "completed", "cancelled", "suspended"];
19
+ export type EventStatus = (typeof EVENT_STATUSES)[number];
2
20
  export interface ScheduleUpdateParams {
3
21
  accountId: string;
4
22
  eventId: string;
@@ -7,7 +25,7 @@ export interface ScheduleUpdateParams {
7
25
  startDate?: string;
8
26
  endDate?: string;
9
27
  location?: string;
10
- eventStatus?: string;
28
+ eventStatus?: EventStatus;
11
29
  recurrence?: string;
12
30
  timezone?: string;
13
31
  skipNext?: boolean;
@@ -15,5 +33,32 @@ export interface ScheduleUpdateParams {
15
33
  action?: EventAction | null;
16
34
  agentDispatch?: AgentDispatch | null;
17
35
  }
36
+ /**
37
+ * Task 2134 — the resume decision, separated from the write so it is testable
38
+ * without a driver.
39
+ *
40
+ * Twin of `planResume` in platform/ui/server/routes/admin/routines.ts:61-102.
41
+ * The two live across the plugin boundary and cannot share a module — the same
42
+ * constraint that file records at :14-16 for the cron block it already
43
+ * duplicates from here. A change to one is a change to the pair.
44
+ *
45
+ * Resume never reuses the stored `nextRun`. The sweep advances a recurring
46
+ * routine from its STORED value (check-due-events.ts:805-809), so a row re-armed
47
+ * with a value far in the past fires once per tick until it catches up. Task
48
+ * 2130's `op=replay-suspect` alarm at :840-844 exists for exactly that.
49
+ */
50
+ export type ResumePlan = {
51
+ ok: true;
52
+ nextRun: string | null;
53
+ } | {
54
+ ok: false;
55
+ reason: "past-one-time" | "invalid-cron";
56
+ message: string;
57
+ };
58
+ export declare function planResume(row: {
59
+ recurrence: string | null;
60
+ timezone: string | null;
61
+ startDate: string | null;
62
+ }, now: Date): ResumePlan;
18
63
  export declare function scheduleUpdate(params: ScheduleUpdateParams): Promise<void>;
19
64
  //# sourceMappingURL=schedule-update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-update.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGtE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyQhF"}
1
+ {"version":3,"file":"schedule-update.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGtE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,sEAAuE,CAAC;AAEnG,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,UAAU,CACxB,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACrF,GAAG,EAAE,IAAI,GACR,UAAU,CAmCZ;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgZhF"}