@rubytech/create-maxy-code 0.1.552 → 0.1.554

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/routine-templates/dist/index.d.ts +15 -2
  3. package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -1
  4. package/payload/platform/lib/routine-templates/dist/index.js +25 -1
  5. package/payload/platform/lib/routine-templates/dist/index.js.map +1 -1
  6. package/payload/platform/lib/routine-templates/dist/roster.d.ts +76 -1
  7. package/payload/platform/lib/routine-templates/dist/roster.d.ts.map +1 -1
  8. package/payload/platform/lib/routine-templates/dist/roster.js +60 -3
  9. package/payload/platform/lib/routine-templates/dist/roster.js.map +1 -1
  10. package/payload/platform/lib/routine-templates/src/__tests__/roster.test.ts +93 -1
  11. package/payload/platform/lib/routine-templates/src/__tests__/seed.test.ts +74 -0
  12. package/payload/platform/lib/routine-templates/src/index.ts +25 -1
  13. package/payload/platform/lib/routine-templates/src/roster.ts +111 -2
  14. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +22 -11
  15. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
  16. package/payload/platform/plugins/docs/references/admin-ui.md +21 -10
  17. package/payload/platform/plugins/scheduling/PLUGIN.md +50 -4
  18. package/payload/platform/plugins/scheduling/mcp/dist/index.js +51 -6
  19. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  20. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.d.ts +2 -0
  21. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.d.ts.map +1 -0
  22. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.js +216 -0
  23. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.js.map +1 -0
  24. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.d.ts +2 -0
  25. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.d.ts.map +1 -0
  26. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.js +44 -0
  27. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.js.map +1 -0
  28. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.d.ts +2 -0
  29. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.d.ts.map +1 -0
  30. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.js +92 -0
  31. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.js.map +1 -0
  32. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js +210 -2
  33. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js.map +1 -1
  34. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/update-summary.test.js +18 -1
  35. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/update-summary.test.js.map +1 -1
  36. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.d.ts +86 -0
  37. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.d.ts.map +1 -0
  38. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.js +240 -0
  39. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.js.map +1 -0
  40. package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.d.ts +2 -0
  41. package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.d.ts.map +1 -0
  42. package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.js +47 -0
  43. package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.js.map +1 -0
  44. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts +1 -1
  45. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts.map +1 -1
  46. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js +9 -1
  47. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js.map +1 -1
  48. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts +103 -0
  49. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts.map +1 -1
  50. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js +307 -0
  51. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js.map +1 -1
  52. package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.d.ts.map +1 -1
  53. package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.js +11 -1
  54. package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.js.map +1 -1
  55. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +41 -1
  56. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  57. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-connector-busy-sync.test.js +84 -1
  58. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-connector-busy-sync.test.js.map +1 -1
  59. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.d.ts +2 -0
  60. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.d.ts.map +1 -0
  61. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.js +200 -0
  62. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.js.map +1 -0
  63. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js +21 -1
  64. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js.map +1 -1
  65. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.d.ts +2 -0
  66. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.d.ts.map +1 -0
  67. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.js +208 -0
  68. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.js.map +1 -0
  69. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.d.ts +26 -2
  70. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.d.ts.map +1 -1
  71. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.js +51 -2
  72. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.js.map +1 -1
  73. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +40 -0
  74. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  75. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +70 -5
  76. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  77. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  78. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +67 -0
  79. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  80. package/payload/platform/plugins/workflows/skills/workflow-manager/SKILL.md +4 -0
  81. package/payload/server/public/activity.html +5 -5
  82. package/payload/server/public/agents.html +4 -4
  83. package/payload/server/public/assets/{AdminLoginScreens-Bjcs9ta9.js → AdminLoginScreens-BDaJlf67.js} +1 -1
  84. package/payload/server/public/assets/AdminLoginScreens-BDaJlf67.js.br +0 -0
  85. package/payload/server/public/assets/AdminLoginScreens-BDaJlf67.js.gz +0 -0
  86. package/payload/server/public/assets/AdminShell-DUUw6WNs.js +2 -0
  87. package/payload/server/public/assets/AdminShell-DUUw6WNs.js.br +0 -0
  88. package/payload/server/public/assets/AdminShell-DUUw6WNs.js.gz +0 -0
  89. package/payload/server/public/assets/{activity-C8E8-EwQ.js → activity-JpRW4yeS.js} +1 -1
  90. package/payload/server/public/assets/activity-JpRW4yeS.js.br +0 -0
  91. package/payload/server/public/assets/activity-JpRW4yeS.js.gz +0 -0
  92. package/payload/server/public/assets/admin-BH4gL0c2.js +1 -0
  93. package/payload/server/public/assets/admin-BH4gL0c2.js.br +0 -0
  94. package/payload/server/public/assets/admin-BH4gL0c2.js.gz +0 -0
  95. package/payload/server/public/assets/{agents-DuN92iFb.js → agents-EtIviAPH.js} +1 -1
  96. package/payload/server/public/assets/agents-EtIviAPH.js.br +0 -0
  97. package/payload/server/public/assets/agents-EtIviAPH.js.gz +0 -0
  98. package/payload/server/public/assets/{arc-DaudCnXg.js → arc-DaI5MLTq.js} +1 -1
  99. package/payload/server/public/assets/arc-DaI5MLTq.js.br +0 -0
  100. package/payload/server/public/assets/arc-DaI5MLTq.js.gz +0 -0
  101. package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js +1 -0
  102. package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js.br +0 -0
  103. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Dj9L_JR0.js → architectureDiagram-Q4EWVU46-xZ0gDnJQ.js} +1 -1
  104. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-xZ0gDnJQ.js.br +0 -0
  105. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-xZ0gDnJQ.js.gz +0 -0
  106. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BTXKYwrR.js → blockDiagram-DXYQGD6D-DwWtWBJp.js} +1 -1
  107. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DwWtWBJp.js.br +0 -0
  108. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DwWtWBJp.js.gz +0 -0
  109. package/payload/server/public/assets/{browser-BxebdKbh.js → browser-DntnPrfU.js} +1 -1
  110. package/payload/server/public/assets/browser-DntnPrfU.js.br +0 -0
  111. package/payload/server/public/assets/browser-DntnPrfU.js.gz +0 -0
  112. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-BN7XeOWV.js → c4Diagram-AHTNJAMY-qRseEjtL.js} +1 -1
  113. package/payload/server/public/assets/c4Diagram-AHTNJAMY-qRseEjtL.js.br +0 -0
  114. package/payload/server/public/assets/c4Diagram-AHTNJAMY-qRseEjtL.js.gz +0 -0
  115. package/payload/server/public/assets/calendar-DnmkfQAe.js +1 -0
  116. package/payload/server/public/assets/calendar-DnmkfQAe.js.br +0 -0
  117. package/payload/server/public/assets/calendar-DnmkfQAe.js.gz +0 -0
  118. package/payload/server/public/assets/channel-DnchwXmx.js +1 -0
  119. package/payload/server/public/assets/chat-_Ok0sVx2.js +1 -0
  120. package/payload/server/public/assets/chat-_Ok0sVx2.js.br +2 -0
  121. package/payload/server/public/assets/chat-_Ok0sVx2.js.gz +0 -0
  122. package/payload/server/public/assets/chevron-left-udrHmjzu.js +1 -0
  123. package/payload/server/public/assets/chevron-left-udrHmjzu.js.br +0 -0
  124. package/payload/server/public/assets/{chunk-2KRD3SAO-BwEVlnxo.js → chunk-2KRD3SAO-B6koUoB7.js} +1 -1
  125. package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.br +0 -0
  126. package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.gz +0 -0
  127. package/payload/server/public/assets/{chunk-336JU56O-DR5EUh9D.js → chunk-336JU56O-ByZrJI-3.js} +2 -2
  128. package/payload/server/public/assets/chunk-336JU56O-ByZrJI-3.js.br +0 -0
  129. package/payload/server/public/assets/chunk-336JU56O-ByZrJI-3.js.gz +0 -0
  130. package/payload/server/public/assets/chunk-426QAEUC-fNi5i3SA.js +1 -0
  131. package/payload/server/public/assets/chunk-426QAEUC-fNi5i3SA.js.br +0 -0
  132. package/payload/server/public/assets/chunk-426QAEUC-fNi5i3SA.js.gz +0 -0
  133. package/payload/server/public/assets/{chunk-4BX2VUAB-C5p3xTC6.js → chunk-4BX2VUAB-7sO95xR2.js} +1 -1
  134. package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.br +0 -0
  135. package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.gz +0 -0
  136. package/payload/server/public/assets/{chunk-4TB4RGXK-CqrBvvGI.js → chunk-4TB4RGXK-KqKMvkA_.js} +1 -1
  137. package/payload/server/public/assets/chunk-4TB4RGXK-KqKMvkA_.js.br +0 -0
  138. package/payload/server/public/assets/chunk-4TB4RGXK-KqKMvkA_.js.gz +0 -0
  139. package/payload/server/public/assets/{chunk-55IACEB6-DDU_m1ra.js → chunk-55IACEB6-ggIJf_TC.js} +1 -1
  140. package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.br +0 -0
  141. package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.gz +0 -0
  142. package/payload/server/public/assets/{chunk-5FUZZQ4R-B21kX6ld.js → chunk-5FUZZQ4R-CEIokxZS.js} +1 -1
  143. package/payload/server/public/assets/chunk-5FUZZQ4R-CEIokxZS.js.br +0 -0
  144. package/payload/server/public/assets/chunk-5FUZZQ4R-CEIokxZS.js.gz +0 -0
  145. package/payload/server/public/assets/{chunk-5PVQY5BW-CYusrVbq.js → chunk-5PVQY5BW-BEsb0aTb.js} +1 -1
  146. package/payload/server/public/assets/chunk-5PVQY5BW-BEsb0aTb.js.br +0 -0
  147. package/payload/server/public/assets/chunk-5PVQY5BW-BEsb0aTb.js.gz +0 -0
  148. package/payload/server/public/assets/{chunk-67CJDMHE-9W0Qv0jm.js → chunk-67CJDMHE-LS8rUbii.js} +1 -1
  149. package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.br +2 -0
  150. package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.gz +0 -0
  151. package/payload/server/public/assets/{chunk-7N4EOEYR-B3gqydR3.js → chunk-7N4EOEYR-JKOVngS0.js} +1 -1
  152. package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.br +2 -0
  153. package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.gz +0 -0
  154. package/payload/server/public/assets/{chunk-AA7GKIK3-DW8a-2NK.js → chunk-AA7GKIK3-CoXnTVK6.js} +1 -1
  155. package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.br +0 -0
  156. package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.gz +0 -0
  157. package/payload/server/public/assets/{chunk-BSJP7CBP-DqXIO_5R.js → chunk-BSJP7CBP-CcsqObFg.js} +1 -1
  158. package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.br +0 -0
  159. package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.gz +0 -0
  160. package/payload/server/public/assets/{chunk-CIAEETIT-BMJfgj2u.js → chunk-CIAEETIT-CpsybR7q.js} +1 -1
  161. package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.br +0 -0
  162. package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.gz +0 -0
  163. package/payload/server/public/assets/{chunk-EDXVE4YY-CyjTyMkv.js → chunk-EDXVE4YY-CCCHYEbG.js} +1 -1
  164. package/payload/server/public/assets/chunk-EDXVE4YY-CCCHYEbG.js.br +2 -0
  165. package/payload/server/public/assets/chunk-EDXVE4YY-CCCHYEbG.js.gz +0 -0
  166. package/payload/server/public/assets/{chunk-ENJZ2VHE-B-k8uOTF.js → chunk-ENJZ2VHE-yVekovt2.js} +1 -1
  167. package/payload/server/public/assets/chunk-ENJZ2VHE-yVekovt2.js.br +0 -0
  168. package/payload/server/public/assets/chunk-ENJZ2VHE-yVekovt2.js.gz +0 -0
  169. package/payload/server/public/assets/{chunk-FMBD7UC4-CdPjwbtf.js → chunk-FMBD7UC4-D27VnSCa.js} +1 -1
  170. package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.br +0 -0
  171. package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.gz +0 -0
  172. package/payload/server/public/assets/{chunk-FOC6F5B3-Dl6l1KAh.js → chunk-FOC6F5B3-C0tU2UFl.js} +1 -1
  173. package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.br +0 -0
  174. package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.gz +0 -0
  175. package/payload/server/public/assets/{chunk-ICPOFSXX-CKQWnR1l.js → chunk-ICPOFSXX-BmWvYe_5.js} +2 -2
  176. package/payload/server/public/assets/chunk-ICPOFSXX-BmWvYe_5.js.br +0 -0
  177. package/payload/server/public/assets/chunk-ICPOFSXX-BmWvYe_5.js.gz +0 -0
  178. package/payload/server/public/assets/{chunk-K5T4RW27--g29_wjW.js → chunk-K5T4RW27-DIKxqyYw.js} +1 -1
  179. package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.br +0 -0
  180. package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.gz +0 -0
  181. package/payload/server/public/assets/{chunk-KGLVRYIC-CI77ENeO.js → chunk-KGLVRYIC-CiL4YVLo.js} +1 -1
  182. package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.br +0 -0
  183. package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.gz +0 -0
  184. package/payload/server/public/assets/{chunk-LIHQZDEY-CE-XByg6.js → chunk-LIHQZDEY-ejKezVlD.js} +1 -1
  185. package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.br +0 -0
  186. package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.gz +0 -0
  187. package/payload/server/public/assets/{chunk-ORNJ4GCN-DkjJQQSm.js → chunk-ORNJ4GCN-Cc0vqc-D.js} +1 -1
  188. package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.br +0 -0
  189. package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.gz +0 -0
  190. package/payload/server/public/assets/{chunk-OYMX7WX6-Dis40FU5.js → chunk-OYMX7WX6-BE4b8qC9.js} +1 -1
  191. package/payload/server/public/assets/chunk-OYMX7WX6-BE4b8qC9.js.br +0 -0
  192. package/payload/server/public/assets/chunk-OYMX7WX6-BE4b8qC9.js.gz +0 -0
  193. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js +1 -0
  194. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.br +0 -0
  195. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.gz +0 -0
  196. package/payload/server/public/assets/{chunk-U2HBQHQK-DT3NLMic.js → chunk-U2HBQHQK-DcEL3so-.js} +1 -1
  197. package/payload/server/public/assets/chunk-U2HBQHQK-DcEL3so-.js.br +0 -0
  198. package/payload/server/public/assets/chunk-U2HBQHQK-DcEL3so-.js.gz +0 -0
  199. package/payload/server/public/assets/{chunk-X2U36JSP-Dxaab1tD.js → chunk-X2U36JSP-D0X5qpg6.js} +1 -1
  200. package/payload/server/public/assets/chunk-X2U36JSP-D0X5qpg6.js.br +0 -0
  201. package/payload/server/public/assets/chunk-X2U36JSP-D0X5qpg6.js.gz +0 -0
  202. package/payload/server/public/assets/{chunk-XPW4576I-DtqJwn2x.js → chunk-XPW4576I-DZqqB9Zi.js} +1 -1
  203. package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.br +0 -0
  204. package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.gz +0 -0
  205. package/payload/server/public/assets/{chunk-YZCP3GAM-CEEcRrOH.js → chunk-YZCP3GAM-BTxWHFTx.js} +1 -1
  206. package/payload/server/public/assets/chunk-YZCP3GAM-BTxWHFTx.js.br +0 -0
  207. package/payload/server/public/assets/chunk-YZCP3GAM-BTxWHFTx.js.gz +0 -0
  208. package/payload/server/public/assets/{chunk-ZZ45TVLE-CVhqjM4L.js → chunk-ZZ45TVLE-D8nE76c5.js} +1 -1
  209. package/payload/server/public/assets/chunk-ZZ45TVLE-D8nE76c5.js.br +0 -0
  210. package/payload/server/public/assets/chunk-ZZ45TVLE-D8nE76c5.js.gz +0 -0
  211. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D9OvkaTQ.js +1 -0
  212. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D9OvkaTQ.js.br +0 -0
  213. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D9OvkaTQ.js.gz +0 -0
  214. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BEuoBAgN.js +1 -0
  215. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BEuoBAgN.js.br +0 -0
  216. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BEuoBAgN.js.gz +0 -0
  217. package/payload/server/public/assets/clock-BmdrE7vz.js +1 -0
  218. package/payload/server/public/assets/clock-BmdrE7vz.js.br +0 -0
  219. package/payload/server/public/assets/clock-BmdrE7vz.js.gz +0 -0
  220. package/payload/server/public/assets/clone-C-YfAPQ_.js +1 -0
  221. package/payload/server/public/assets/{copy-DCDHXq3O.js → copy-BiOI6GeQ.js} +1 -1
  222. package/payload/server/public/assets/copy-BiOI6GeQ.js.br +0 -0
  223. package/payload/server/public/assets/copy-BiOI6GeQ.js.gz +0 -0
  224. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-kEHVkDNn.js → cose-bilkent-S5V4N54A-D-95BzXL.js} +1 -1
  225. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.br +0 -0
  226. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.gz +0 -0
  227. package/payload/server/public/assets/{dagre-BgQxtxH1.js → dagre-CrjQCEN9.js} +1 -1
  228. package/payload/server/public/assets/dagre-CrjQCEN9.js.br +0 -0
  229. package/payload/server/public/assets/dagre-CrjQCEN9.js.gz +0 -0
  230. package/payload/server/public/assets/{dagre-KV5264BT-CgxwoTcv.js → dagre-KV5264BT-mcGXOajA.js} +1 -1
  231. package/payload/server/public/assets/dagre-KV5264BT-mcGXOajA.js.br +0 -0
  232. package/payload/server/public/assets/dagre-KV5264BT-mcGXOajA.js.gz +0 -0
  233. package/payload/server/public/assets/data-Za62pAv5.js +1 -0
  234. package/payload/server/public/assets/data-Za62pAv5.js.br +2 -0
  235. package/payload/server/public/assets/data-Za62pAv5.js.gz +0 -0
  236. package/payload/server/public/assets/{diagram-5BDNPKRD-MEZ1cQGO.js → diagram-5BDNPKRD-Colq2XR9.js} +1 -1
  237. package/payload/server/public/assets/diagram-5BDNPKRD-Colq2XR9.js.br +0 -0
  238. package/payload/server/public/assets/diagram-5BDNPKRD-Colq2XR9.js.gz +0 -0
  239. package/payload/server/public/assets/{diagram-G4DWMVQ6-DbZg9hWP.js → diagram-G4DWMVQ6-DafrIgN8.js} +1 -1
  240. package/payload/server/public/assets/diagram-G4DWMVQ6-DafrIgN8.js.br +0 -0
  241. package/payload/server/public/assets/diagram-G4DWMVQ6-DafrIgN8.js.gz +0 -0
  242. package/payload/server/public/assets/{diagram-MMDJMWI5-Bb1y8DFy.js → diagram-MMDJMWI5-CD9pSd2z.js} +1 -1
  243. package/payload/server/public/assets/diagram-MMDJMWI5-CD9pSd2z.js.br +0 -0
  244. package/payload/server/public/assets/diagram-MMDJMWI5-CD9pSd2z.js.gz +0 -0
  245. package/payload/server/public/assets/{diagram-TYMM5635-tbStCw5U.js → diagram-TYMM5635-DqhsN-Il.js} +1 -1
  246. package/payload/server/public/assets/diagram-TYMM5635-DqhsN-Il.js.br +0 -0
  247. package/payload/server/public/assets/diagram-TYMM5635-DqhsN-Il.js.gz +0 -0
  248. package/payload/server/public/assets/{erDiagram-SMLLAGMA-ClEFo_Bw.js → erDiagram-SMLLAGMA-mf9kQrIs.js} +1 -1
  249. package/payload/server/public/assets/erDiagram-SMLLAGMA-mf9kQrIs.js.br +0 -0
  250. package/payload/server/public/assets/erDiagram-SMLLAGMA-mf9kQrIs.js.gz +0 -0
  251. package/payload/server/public/assets/{file-text-zQgEQWCF.js → file-text-s2dqE-bu.js} +1 -1
  252. package/payload/server/public/assets/file-text-s2dqE-bu.js.br +0 -0
  253. package/payload/server/public/assets/file-text-s2dqE-bu.js.gz +0 -0
  254. package/payload/server/public/assets/{flatten-Bu-b1uTY.js → flatten-BtIc9jX7.js} +1 -1
  255. package/payload/server/public/assets/flatten-BtIc9jX7.js.br +0 -0
  256. package/payload/server/public/assets/flatten-BtIc9jX7.js.gz +0 -0
  257. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-9yr262Ji.js → flowDiagram-DWJPFMVM-CJLkGmFm.js} +1 -1
  258. package/payload/server/public/assets/flowDiagram-DWJPFMVM-CJLkGmFm.js.br +0 -0
  259. package/payload/server/public/assets/flowDiagram-DWJPFMVM-CJLkGmFm.js.gz +0 -0
  260. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-ZCSA0DtG.js → ganttDiagram-T4ZO3ILL-JV6PUFic.js} +1 -1
  261. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-JV6PUFic.js.br +0 -0
  262. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-ZCSA0DtG.js.gz → ganttDiagram-T4ZO3ILL-JV6PUFic.js.gz} +0 -0
  263. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js +1 -0
  264. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js.br +0 -0
  265. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-0KvpzpaU.js → gitGraphDiagram-UUTBAWPF-JhiumTtl.js} +1 -1
  266. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-JhiumTtl.js.br +0 -0
  267. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-JhiumTtl.js.gz +0 -0
  268. package/payload/server/public/assets/{graph-CFCEh_YI.js → graph-ClX4Zn0s.js} +2 -2
  269. package/payload/server/public/assets/graph-ClX4Zn0s.js.br +0 -0
  270. package/payload/server/public/assets/graph-ClX4Zn0s.js.gz +0 -0
  271. package/payload/server/public/assets/{graph-labels-CA1UcDuS.js → graph-labels-BdLfJumr.js} +1 -1
  272. package/payload/server/public/assets/graph-labels-BdLfJumr.js.br +0 -0
  273. package/payload/server/public/assets/graph-labels-BdLfJumr.js.gz +0 -0
  274. package/payload/server/public/assets/{graphlib-B3SsCJOd.js → graphlib-Z7cApv13.js} +1 -1
  275. package/payload/server/public/assets/graphlib-Z7cApv13.js.br +0 -0
  276. package/payload/server/public/assets/graphlib-Z7cApv13.js.gz +0 -0
  277. package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js +1 -0
  278. package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js.br +0 -0
  279. package/payload/server/public/assets/infoDiagram-42DDH7IO-B-6k2hmd.js +2 -0
  280. package/payload/server/public/assets/infoDiagram-42DDH7IO-B-6k2hmd.js.br +0 -0
  281. package/payload/server/public/assets/infoDiagram-42DDH7IO-B-6k2hmd.js.gz +0 -0
  282. package/payload/server/public/assets/{isEmpty-CjH0UASp.js → isEmpty-Bu4fZ8Kf.js} +1 -1
  283. package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.br +0 -0
  284. package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.gz +0 -0
  285. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DsDoNemz.js → ishikawaDiagram-UXIWVN3A-CQIGY8NI.js} +1 -1
  286. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CQIGY8NI.js.br +0 -0
  287. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CQIGY8NI.js.gz +0 -0
  288. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-xyayGhw3.js → journeyDiagram-VCZTEJTY-O5rEHC1o.js} +1 -1
  289. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-O5rEHC1o.js.br +0 -0
  290. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-O5rEHC1o.js.gz +0 -0
  291. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DuV3Go_1.js → kanban-definition-6JOO6SKY-BS7huuG7.js} +1 -1
  292. package/payload/server/public/assets/kanban-definition-6JOO6SKY-BS7huuG7.js.br +0 -0
  293. package/payload/server/public/assets/kanban-definition-6JOO6SKY-BS7huuG7.js.gz +0 -0
  294. package/payload/server/public/assets/{line-Cpb8GRkf.js → line-DjHTnO_W.js} +1 -1
  295. package/payload/server/public/assets/line-DjHTnO_W.js.br +0 -0
  296. package/payload/server/public/assets/line-DjHTnO_W.js.gz +0 -0
  297. package/payload/server/public/assets/{linear-l39GooQ5.js → linear-RvwZxFzh.js} +1 -1
  298. package/payload/server/public/assets/linear-RvwZxFzh.js.br +0 -0
  299. package/payload/server/public/assets/linear-RvwZxFzh.js.gz +0 -0
  300. package/payload/server/public/assets/{mermaid-parser.core-9hkxt3j1.js → mermaid-parser.core-CUoZE61Z.js} +2 -2
  301. package/payload/server/public/assets/mermaid-parser.core-CUoZE61Z.js.br +0 -0
  302. package/payload/server/public/assets/mermaid-parser.core-CUoZE61Z.js.gz +0 -0
  303. package/payload/server/public/assets/{mermaid.core-iR6TQesD.js → mermaid.core-CHquUUrw.js} +3 -3
  304. package/payload/server/public/assets/mermaid.core-CHquUUrw.js.br +0 -0
  305. package/payload/server/public/assets/mermaid.core-CHquUUrw.js.gz +0 -0
  306. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-LCKhTYzs.js → mindmap-definition-QFDTVHPH-pHUJa3IP.js} +1 -1
  307. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-pHUJa3IP.js.br +0 -0
  308. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-pHUJa3IP.js.gz +0 -0
  309. package/payload/server/public/assets/{operator-hFXPDc2X.js → operator-BQtleyx3.js} +1 -1
  310. package/payload/server/public/assets/operator-BQtleyx3.js.br +0 -0
  311. package/payload/server/public/assets/operator-BQtleyx3.js.gz +0 -0
  312. package/payload/server/public/assets/{ordinal-D6D6WcTC.js → ordinal-C2TEWKNu.js} +1 -1
  313. package/payload/server/public/assets/ordinal-C2TEWKNu.js.br +0 -0
  314. package/payload/server/public/assets/ordinal-C2TEWKNu.js.gz +0 -0
  315. package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js +1 -0
  316. package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js.br +0 -0
  317. package/payload/server/public/assets/{page-C8jyPH_3.js → page-BkMbmVu6.js} +1 -1
  318. package/payload/server/public/assets/page-BkMbmVu6.js.br +0 -0
  319. package/payload/server/public/assets/page-BkMbmVu6.js.gz +0 -0
  320. package/payload/server/public/assets/{page-ne7I_r9L.js → page-C-jQaGZ4.js} +3 -3
  321. package/payload/server/public/assets/page-C-jQaGZ4.js.br +0 -0
  322. package/payload/server/public/assets/page-C-jQaGZ4.js.gz +0 -0
  323. package/payload/server/public/assets/{pdf-render-DanMu_cf.js → pdf-render-Bwg_xv1L.js} +1 -1
  324. package/payload/server/public/assets/pdf-render-Bwg_xv1L.js.br +0 -0
  325. package/payload/server/public/assets/{pdf-render-DanMu_cf.js.gz → pdf-render-Bwg_xv1L.js.gz} +0 -0
  326. package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js +1 -0
  327. package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js.br +0 -0
  328. package/payload/server/public/assets/{pieDiagram-DEJITSTG-Oo7wgo0C.js → pieDiagram-DEJITSTG-DRIRqqhQ.js} +1 -1
  329. package/payload/server/public/assets/pieDiagram-DEJITSTG-DRIRqqhQ.js.br +0 -0
  330. package/payload/server/public/assets/pieDiagram-DEJITSTG-DRIRqqhQ.js.gz +0 -0
  331. package/payload/server/public/assets/play-Da69rmat.js +1 -0
  332. package/payload/server/public/assets/play-Da69rmat.js.br +0 -0
  333. package/payload/server/public/assets/play-Da69rmat.js.gz +0 -0
  334. package/payload/server/public/assets/{public-BgnqjAal.js → public-BPlCLx7p.js} +1 -1
  335. package/payload/server/public/assets/public-BPlCLx7p.js.br +0 -0
  336. package/payload/server/public/assets/public-BPlCLx7p.js.gz +0 -0
  337. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-B2hs2ord.js → quadrantDiagram-34T5L4WZ-7WHBrI_9.js} +1 -1
  338. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-7WHBrI_9.js.br +0 -0
  339. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-7WHBrI_9.js.gz +0 -0
  340. package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js +1 -0
  341. package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js.br +0 -0
  342. package/payload/server/public/assets/{reduce-BtXXK8Ma.js → reduce-BGpN5lgn.js} +1 -1
  343. package/payload/server/public/assets/reduce-BGpN5lgn.js.br +0 -0
  344. package/payload/server/public/assets/reduce-BGpN5lgn.js.gz +0 -0
  345. package/payload/server/public/assets/{requirementDiagram-MS252O5E-B8UkCUzW.js → requirementDiagram-MS252O5E-CatBEoHm.js} +1 -1
  346. package/payload/server/public/assets/requirementDiagram-MS252O5E-CatBEoHm.js.br +0 -0
  347. package/payload/server/public/assets/requirementDiagram-MS252O5E-CatBEoHm.js.gz +0 -0
  348. package/payload/server/public/assets/{rotate-ccw-DfJWjXAg.js → rotate-ccw-DpTlNy-M.js} +1 -1
  349. package/payload/server/public/assets/rotate-ccw-DpTlNy-M.js.br +0 -0
  350. package/payload/server/public/assets/rotate-ccw-DpTlNy-M.js.gz +0 -0
  351. package/payload/server/public/assets/routines-YlXtcZNz.js +2 -0
  352. package/payload/server/public/assets/routines-YlXtcZNz.js.br +0 -0
  353. package/payload/server/public/assets/routines-YlXtcZNz.js.gz +0 -0
  354. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-Cojqqz7t.js → sankeyDiagram-XADWPNL6-DfefvhQ6.js} +1 -1
  355. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-DfefvhQ6.js.br +0 -0
  356. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-DfefvhQ6.js.gz +0 -0
  357. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-C7ODsPjE.js → sequenceDiagram-FGHM5R23-51FmBwFt.js} +1 -1
  358. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-51FmBwFt.js.br +0 -0
  359. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-51FmBwFt.js.gz +0 -0
  360. package/payload/server/public/assets/{skills-D-6EbgfP.js → skills-CX4p0a2M.js} +1 -1
  361. package/payload/server/public/assets/skills-CX4p0a2M.js.br +0 -0
  362. package/payload/server/public/assets/skills-CX4p0a2M.js.gz +0 -0
  363. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BC8a_P9c.js → stateDiagram-FHFEXIEX-CPgxX16e.js} +1 -1
  364. package/payload/server/public/assets/stateDiagram-FHFEXIEX-CPgxX16e.js.br +0 -0
  365. package/payload/server/public/assets/stateDiagram-FHFEXIEX-CPgxX16e.js.gz +0 -0
  366. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DrQl9xC9.js +1 -0
  367. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DrQl9xC9.js.br +0 -0
  368. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DrQl9xC9.js.gz +0 -0
  369. package/payload/server/public/assets/{tasks-DnN5Fyds.js → tasks-B51N5DIO.js} +2 -2
  370. package/payload/server/public/assets/tasks-B51N5DIO.js.br +0 -0
  371. package/payload/server/public/assets/tasks-B51N5DIO.js.gz +0 -0
  372. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BMxUC3ri.js → timeline-definition-GMOUNBTQ-DC4gTR2m.js} +1 -1
  373. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DC4gTR2m.js.br +0 -0
  374. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DC4gTR2m.js.gz +0 -0
  375. package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js +1 -0
  376. package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js.br +0 -0
  377. package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js +1 -0
  378. package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js.br +0 -0
  379. package/payload/server/public/assets/{triangle-alert-eh9UOKDT.js → triangle-alert-CkE_tzl3.js} +1 -1
  380. package/payload/server/public/assets/triangle-alert-CkE_tzl3.js.br +0 -0
  381. package/payload/server/public/assets/triangle-alert-CkE_tzl3.js.gz +0 -0
  382. package/payload/server/public/assets/{useCopyFeedback-Bz9OJHBb.js → useCopyFeedback-3B_lN6ri.js} +1 -1
  383. package/payload/server/public/assets/useCopyFeedback-3B_lN6ri.js.br +0 -0
  384. package/payload/server/public/assets/useCopyFeedback-3B_lN6ri.js.gz +0 -0
  385. package/payload/server/public/assets/{useMediaQuery-CNxsjKZp.css → useMediaQuery-AAUlD_Av.css} +1 -1
  386. package/payload/server/public/assets/useMediaQuery-AAUlD_Av.css.br +0 -0
  387. package/payload/server/public/assets/useMediaQuery-AAUlD_Av.css.gz +0 -0
  388. package/payload/server/public/assets/{useVoiceRecorder-BaDpMYxX.js → useVoiceRecorder-DtP2IN-j.js} +2 -2
  389. package/payload/server/public/assets/useVoiceRecorder-DtP2IN-j.js.br +0 -0
  390. package/payload/server/public/assets/useVoiceRecorder-DtP2IN-j.js.gz +0 -0
  391. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-BsRGBF0K.js → vennDiagram-DHZGUBPP-CADQLMv_.js} +1 -1
  392. package/payload/server/public/assets/vennDiagram-DHZGUBPP-CADQLMv_.js.br +0 -0
  393. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-BsRGBF0K.js.gz → vennDiagram-DHZGUBPP-CADQLMv_.js.gz} +0 -0
  394. package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js +1 -0
  395. package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js.br +0 -0
  396. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-oQh9A-Mq.js → wardleyDiagram-NUSXRM2D-Cs5AyyGo.js} +1 -1
  397. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-Cs5AyyGo.js.br +0 -0
  398. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-Cs5AyyGo.js.gz +0 -0
  399. package/payload/server/public/assets/{wrench-BO-l46rF.js → wrench-B_4KM-f7.js} +1 -1
  400. package/payload/server/public/assets/wrench-B_4KM-f7.js.br +0 -0
  401. package/payload/server/public/assets/wrench-B_4KM-f7.js.gz +0 -0
  402. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-0K87OmFI.js → xychartDiagram-5P7HB3ND-Bp_VDbBp.js} +1 -1
  403. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Bp_VDbBp.js.br +0 -0
  404. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Bp_VDbBp.js.gz +0 -0
  405. package/payload/server/public/browser.html +4 -4
  406. package/payload/server/public/calendar.html +7 -8
  407. package/payload/server/public/chat.html +14 -14
  408. package/payload/server/public/data.html +13 -13
  409. package/payload/server/public/graph.html +9 -9
  410. package/payload/server/public/index.html +15 -16
  411. package/payload/server/public/operator.html +15 -15
  412. package/payload/server/public/public.html +14 -14
  413. package/payload/server/public/routines.html +7 -7
  414. package/payload/server/public/skills.html +5 -5
  415. package/payload/server/public/tasks.html +6 -6
  416. package/payload/server/server.js +73 -16
  417. package/payload/server/public/assets/AdminLoginScreens-Bjcs9ta9.js.br +0 -0
  418. package/payload/server/public/assets/AdminLoginScreens-Bjcs9ta9.js.gz +0 -0
  419. package/payload/server/public/assets/AdminShell-DVBAMUCy.js +0 -2
  420. package/payload/server/public/assets/AdminShell-DVBAMUCy.js.br +0 -0
  421. package/payload/server/public/assets/AdminShell-DVBAMUCy.js.gz +0 -0
  422. package/payload/server/public/assets/activity-C8E8-EwQ.js.br +0 -0
  423. package/payload/server/public/assets/activity-C8E8-EwQ.js.gz +0 -0
  424. package/payload/server/public/assets/admin-CeWAlpRS.js +0 -1
  425. package/payload/server/public/assets/admin-CeWAlpRS.js.br +0 -0
  426. package/payload/server/public/assets/admin-CeWAlpRS.js.gz +0 -0
  427. package/payload/server/public/assets/agents-DuN92iFb.js.br +0 -0
  428. package/payload/server/public/assets/agents-DuN92iFb.js.gz +0 -0
  429. package/payload/server/public/assets/arc-DaudCnXg.js.br +0 -0
  430. package/payload/server/public/assets/arc-DaudCnXg.js.gz +0 -0
  431. package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js +0 -1
  432. package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
  433. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-Dj9L_JR0.js.br +0 -0
  434. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-Dj9L_JR0.js.gz +0 -0
  435. package/payload/server/public/assets/blockDiagram-DXYQGD6D-BTXKYwrR.js.br +0 -0
  436. package/payload/server/public/assets/blockDiagram-DXYQGD6D-BTXKYwrR.js.gz +0 -0
  437. package/payload/server/public/assets/browser-BxebdKbh.js.br +0 -0
  438. package/payload/server/public/assets/browser-BxebdKbh.js.gz +0 -0
  439. package/payload/server/public/assets/c4Diagram-AHTNJAMY-BN7XeOWV.js.br +0 -0
  440. package/payload/server/public/assets/c4Diagram-AHTNJAMY-BN7XeOWV.js.gz +0 -0
  441. package/payload/server/public/assets/calendar-BtFZQ5Np.js +0 -1
  442. package/payload/server/public/assets/calendar-BtFZQ5Np.js.br +0 -0
  443. package/payload/server/public/assets/calendar-BtFZQ5Np.js.gz +0 -0
  444. package/payload/server/public/assets/channel-D08XWP9e.js +0 -1
  445. package/payload/server/public/assets/chat-CGIwynaH.js +0 -1
  446. package/payload/server/public/assets/chat-CGIwynaH.js.br +0 -3
  447. package/payload/server/public/assets/chat-CGIwynaH.js.gz +0 -0
  448. package/payload/server/public/assets/chevron-left-DaNP1zDb.js +0 -1
  449. package/payload/server/public/assets/chevron-left-DaNP1zDb.js.br +0 -0
  450. package/payload/server/public/assets/chevron-right-BbbuTUnt.js +0 -1
  451. package/payload/server/public/assets/chevron-right-BbbuTUnt.js.br +0 -0
  452. package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.br +0 -0
  453. package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.gz +0 -0
  454. package/payload/server/public/assets/chunk-336JU56O-DR5EUh9D.js.br +0 -0
  455. package/payload/server/public/assets/chunk-336JU56O-DR5EUh9D.js.gz +0 -0
  456. package/payload/server/public/assets/chunk-426QAEUC-YPE0DZOq.js +0 -1
  457. package/payload/server/public/assets/chunk-426QAEUC-YPE0DZOq.js.br +0 -0
  458. package/payload/server/public/assets/chunk-426QAEUC-YPE0DZOq.js.gz +0 -0
  459. package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.br +0 -0
  460. package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.gz +0 -0
  461. package/payload/server/public/assets/chunk-4TB4RGXK-CqrBvvGI.js.br +0 -0
  462. package/payload/server/public/assets/chunk-4TB4RGXK-CqrBvvGI.js.gz +0 -0
  463. package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.br +0 -0
  464. package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.gz +0 -0
  465. package/payload/server/public/assets/chunk-5FUZZQ4R-B21kX6ld.js.br +0 -0
  466. package/payload/server/public/assets/chunk-5FUZZQ4R-B21kX6ld.js.gz +0 -0
  467. package/payload/server/public/assets/chunk-5PVQY5BW-CYusrVbq.js.br +0 -0
  468. package/payload/server/public/assets/chunk-5PVQY5BW-CYusrVbq.js.gz +0 -0
  469. package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.br +0 -0
  470. package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.gz +0 -0
  471. package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.br +0 -0
  472. package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.gz +0 -0
  473. package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.br +0 -4
  474. package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
  475. package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.br +0 -0
  476. package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.gz +0 -0
  477. package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.br +0 -0
  478. package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.gz +0 -0
  479. package/payload/server/public/assets/chunk-EDXVE4YY-CyjTyMkv.js.br +0 -0
  480. package/payload/server/public/assets/chunk-EDXVE4YY-CyjTyMkv.js.gz +0 -0
  481. package/payload/server/public/assets/chunk-ENJZ2VHE-B-k8uOTF.js.br +0 -0
  482. package/payload/server/public/assets/chunk-ENJZ2VHE-B-k8uOTF.js.gz +0 -0
  483. package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.br +0 -0
  484. package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.gz +0 -0
  485. package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.br +0 -0
  486. package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.gz +0 -0
  487. package/payload/server/public/assets/chunk-ICPOFSXX-CKQWnR1l.js.br +0 -0
  488. package/payload/server/public/assets/chunk-ICPOFSXX-CKQWnR1l.js.gz +0 -0
  489. package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.br +0 -0
  490. package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.gz +0 -0
  491. package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.br +0 -3
  492. package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
  493. package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.br +0 -0
  494. package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.gz +0 -0
  495. package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.br +0 -0
  496. package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.gz +0 -0
  497. package/payload/server/public/assets/chunk-OYMX7WX6-Dis40FU5.js.br +0 -0
  498. package/payload/server/public/assets/chunk-OYMX7WX6-Dis40FU5.js.gz +0 -0
  499. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js +0 -1
  500. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.br +0 -0
  501. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.gz +0 -0
  502. package/payload/server/public/assets/chunk-U2HBQHQK-DT3NLMic.js.br +0 -0
  503. package/payload/server/public/assets/chunk-U2HBQHQK-DT3NLMic.js.gz +0 -0
  504. package/payload/server/public/assets/chunk-X2U36JSP-Dxaab1tD.js.br +0 -0
  505. package/payload/server/public/assets/chunk-X2U36JSP-Dxaab1tD.js.gz +0 -0
  506. package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.br +0 -0
  507. package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.gz +0 -0
  508. package/payload/server/public/assets/chunk-YZCP3GAM-CEEcRrOH.js.br +0 -0
  509. package/payload/server/public/assets/chunk-YZCP3GAM-CEEcRrOH.js.gz +0 -0
  510. package/payload/server/public/assets/chunk-ZZ45TVLE-CVhqjM4L.js.br +0 -0
  511. package/payload/server/public/assets/chunk-ZZ45TVLE-CVhqjM4L.js.gz +0 -0
  512. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BPY9jtfT.js +0 -1
  513. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BPY9jtfT.js.br +0 -0
  514. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BPY9jtfT.js.gz +0 -0
  515. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CLgDbwDp.js +0 -1
  516. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CLgDbwDp.js.br +0 -0
  517. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CLgDbwDp.js.gz +0 -0
  518. package/payload/server/public/assets/clock-CfDdatjp.js +0 -1
  519. package/payload/server/public/assets/clock-CfDdatjp.js.br +0 -0
  520. package/payload/server/public/assets/clock-CfDdatjp.js.gz +0 -0
  521. package/payload/server/public/assets/clone-B6yMH1PX.js +0 -1
  522. package/payload/server/public/assets/clone-B6yMH1PX.js.br +0 -0
  523. package/payload/server/public/assets/copy-DCDHXq3O.js.br +0 -0
  524. package/payload/server/public/assets/copy-DCDHXq3O.js.gz +0 -0
  525. package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.br +0 -0
  526. package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.gz +0 -0
  527. package/payload/server/public/assets/dagre-BgQxtxH1.js.br +0 -0
  528. package/payload/server/public/assets/dagre-BgQxtxH1.js.gz +0 -0
  529. package/payload/server/public/assets/dagre-KV5264BT-CgxwoTcv.js.br +0 -0
  530. package/payload/server/public/assets/dagre-KV5264BT-CgxwoTcv.js.gz +0 -0
  531. package/payload/server/public/assets/data-BchSWOju.js +0 -1
  532. package/payload/server/public/assets/data-BchSWOju.js.br +0 -1
  533. package/payload/server/public/assets/data-BchSWOju.js.gz +0 -0
  534. package/payload/server/public/assets/diagram-5BDNPKRD-MEZ1cQGO.js.br +0 -0
  535. package/payload/server/public/assets/diagram-5BDNPKRD-MEZ1cQGO.js.gz +0 -0
  536. package/payload/server/public/assets/diagram-G4DWMVQ6-DbZg9hWP.js.br +0 -0
  537. package/payload/server/public/assets/diagram-G4DWMVQ6-DbZg9hWP.js.gz +0 -0
  538. package/payload/server/public/assets/diagram-MMDJMWI5-Bb1y8DFy.js.br +0 -0
  539. package/payload/server/public/assets/diagram-MMDJMWI5-Bb1y8DFy.js.gz +0 -0
  540. package/payload/server/public/assets/diagram-TYMM5635-tbStCw5U.js.br +0 -0
  541. package/payload/server/public/assets/diagram-TYMM5635-tbStCw5U.js.gz +0 -0
  542. package/payload/server/public/assets/erDiagram-SMLLAGMA-ClEFo_Bw.js.br +0 -0
  543. package/payload/server/public/assets/erDiagram-SMLLAGMA-ClEFo_Bw.js.gz +0 -0
  544. package/payload/server/public/assets/file-text-zQgEQWCF.js.br +0 -0
  545. package/payload/server/public/assets/file-text-zQgEQWCF.js.gz +0 -0
  546. package/payload/server/public/assets/flatten-Bu-b1uTY.js.br +0 -0
  547. package/payload/server/public/assets/flatten-Bu-b1uTY.js.gz +0 -0
  548. package/payload/server/public/assets/flowDiagram-DWJPFMVM-9yr262Ji.js.br +0 -0
  549. package/payload/server/public/assets/flowDiagram-DWJPFMVM-9yr262Ji.js.gz +0 -0
  550. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-ZCSA0DtG.js.br +0 -0
  551. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js +0 -1
  552. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
  553. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-0KvpzpaU.js.br +0 -0
  554. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-0KvpzpaU.js.gz +0 -0
  555. package/payload/server/public/assets/graph-CFCEh_YI.js.br +0 -0
  556. package/payload/server/public/assets/graph-CFCEh_YI.js.gz +0 -0
  557. package/payload/server/public/assets/graph-labels-CA1UcDuS.js.br +0 -0
  558. package/payload/server/public/assets/graph-labels-CA1UcDuS.js.gz +0 -0
  559. package/payload/server/public/assets/graphlib-B3SsCJOd.js.br +0 -0
  560. package/payload/server/public/assets/graphlib-B3SsCJOd.js.gz +0 -0
  561. package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js +0 -1
  562. package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
  563. package/payload/server/public/assets/infoDiagram-42DDH7IO-B607bZBJ.js +0 -2
  564. package/payload/server/public/assets/infoDiagram-42DDH7IO-B607bZBJ.js.br +0 -0
  565. package/payload/server/public/assets/infoDiagram-42DDH7IO-B607bZBJ.js.gz +0 -0
  566. package/payload/server/public/assets/isEmpty-CjH0UASp.js.br +0 -0
  567. package/payload/server/public/assets/isEmpty-CjH0UASp.js.gz +0 -0
  568. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-DsDoNemz.js.br +0 -0
  569. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-DsDoNemz.js.gz +0 -0
  570. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-xyayGhw3.js.br +0 -0
  571. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-xyayGhw3.js.gz +0 -0
  572. package/payload/server/public/assets/kanban-definition-6JOO6SKY-DuV3Go_1.js.br +0 -0
  573. package/payload/server/public/assets/kanban-definition-6JOO6SKY-DuV3Go_1.js.gz +0 -0
  574. package/payload/server/public/assets/line-Cpb8GRkf.js.br +0 -0
  575. package/payload/server/public/assets/line-Cpb8GRkf.js.gz +0 -0
  576. package/payload/server/public/assets/linear-l39GooQ5.js.br +0 -0
  577. package/payload/server/public/assets/linear-l39GooQ5.js.gz +0 -0
  578. package/payload/server/public/assets/mermaid-parser.core-9hkxt3j1.js.br +0 -0
  579. package/payload/server/public/assets/mermaid-parser.core-9hkxt3j1.js.gz +0 -0
  580. package/payload/server/public/assets/mermaid.core-iR6TQesD.js.br +0 -0
  581. package/payload/server/public/assets/mermaid.core-iR6TQesD.js.gz +0 -0
  582. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-LCKhTYzs.js.br +0 -0
  583. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-LCKhTYzs.js.gz +0 -0
  584. package/payload/server/public/assets/operator-hFXPDc2X.js.br +0 -0
  585. package/payload/server/public/assets/operator-hFXPDc2X.js.gz +0 -0
  586. package/payload/server/public/assets/ordinal-D6D6WcTC.js.br +0 -0
  587. package/payload/server/public/assets/ordinal-D6D6WcTC.js.gz +0 -0
  588. package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js +0 -1
  589. package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
  590. package/payload/server/public/assets/page-C8jyPH_3.js.br +0 -0
  591. package/payload/server/public/assets/page-C8jyPH_3.js.gz +0 -0
  592. package/payload/server/public/assets/page-ne7I_r9L.js.br +0 -0
  593. package/payload/server/public/assets/page-ne7I_r9L.js.gz +0 -0
  594. package/payload/server/public/assets/pdf-render-DanMu_cf.js.br +0 -0
  595. package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js +0 -1
  596. package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
  597. package/payload/server/public/assets/pieDiagram-DEJITSTG-Oo7wgo0C.js.br +0 -0
  598. package/payload/server/public/assets/pieDiagram-DEJITSTG-Oo7wgo0C.js.gz +0 -0
  599. package/payload/server/public/assets/play-Ep0SZTbr.js +0 -1
  600. package/payload/server/public/assets/play-Ep0SZTbr.js.br +0 -0
  601. package/payload/server/public/assets/play-Ep0SZTbr.js.gz +0 -0
  602. package/payload/server/public/assets/public-BgnqjAal.js.br +0 -0
  603. package/payload/server/public/assets/public-BgnqjAal.js.gz +0 -0
  604. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B2hs2ord.js.br +0 -0
  605. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B2hs2ord.js.gz +0 -0
  606. package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js +0 -1
  607. package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
  608. package/payload/server/public/assets/reduce-BtXXK8Ma.js.br +0 -0
  609. package/payload/server/public/assets/reduce-BtXXK8Ma.js.gz +0 -0
  610. package/payload/server/public/assets/requirementDiagram-MS252O5E-B8UkCUzW.js.br +0 -0
  611. package/payload/server/public/assets/requirementDiagram-MS252O5E-B8UkCUzW.js.gz +0 -0
  612. package/payload/server/public/assets/rotate-ccw-DfJWjXAg.js.br +0 -0
  613. package/payload/server/public/assets/rotate-ccw-DfJWjXAg.js.gz +0 -0
  614. package/payload/server/public/assets/routines-OGFXwTFO.js +0 -2
  615. package/payload/server/public/assets/routines-OGFXwTFO.js.br +0 -0
  616. package/payload/server/public/assets/routines-OGFXwTFO.js.gz +0 -0
  617. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-Cojqqz7t.js.br +0 -0
  618. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-Cojqqz7t.js.gz +0 -0
  619. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-C7ODsPjE.js.br +0 -0
  620. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-C7ODsPjE.js.gz +0 -0
  621. package/payload/server/public/assets/skills-D-6EbgfP.js.br +0 -0
  622. package/payload/server/public/assets/skills-D-6EbgfP.js.gz +0 -0
  623. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BC8a_P9c.js.br +0 -0
  624. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BC8a_P9c.js.gz +0 -0
  625. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C7KvMtT5.js +0 -1
  626. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C7KvMtT5.js.br +0 -0
  627. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C7KvMtT5.js.gz +0 -0
  628. package/payload/server/public/assets/tasks-DnN5Fyds.js.br +0 -0
  629. package/payload/server/public/assets/tasks-DnN5Fyds.js.gz +0 -0
  630. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-BMxUC3ri.js.br +0 -0
  631. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-BMxUC3ri.js.gz +0 -0
  632. package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js +0 -1
  633. package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
  634. package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +0 -1
  635. package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
  636. package/payload/server/public/assets/triangle-alert-eh9UOKDT.js.br +0 -0
  637. package/payload/server/public/assets/triangle-alert-eh9UOKDT.js.gz +0 -0
  638. package/payload/server/public/assets/useCopyFeedback-Bz9OJHBb.js.br +0 -0
  639. package/payload/server/public/assets/useCopyFeedback-Bz9OJHBb.js.gz +0 -0
  640. package/payload/server/public/assets/useMediaQuery-CNxsjKZp.css.br +0 -0
  641. package/payload/server/public/assets/useMediaQuery-CNxsjKZp.css.gz +0 -0
  642. package/payload/server/public/assets/useVoiceRecorder-BaDpMYxX.js.br +0 -0
  643. package/payload/server/public/assets/useVoiceRecorder-BaDpMYxX.js.gz +0 -0
  644. package/payload/server/public/assets/vennDiagram-DHZGUBPP-BsRGBF0K.js.br +0 -0
  645. package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js +0 -1
  646. package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
  647. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-oQh9A-Mq.js.br +0 -0
  648. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-oQh9A-Mq.js.gz +0 -0
  649. package/payload/server/public/assets/wrench-BO-l46rF.js.br +0 -0
  650. package/payload/server/public/assets/wrench-BO-l46rF.js.gz +0 -0
  651. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0K87OmFI.js.br +0 -0
  652. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0K87OmFI.js.gz +0 -0
  653. /package/payload/server/public/assets/{_baseFor-B12He5Rp.js → _baseFor-Be3EKK3K.js} +0 -0
  654. /package/payload/server/public/assets/{_baseFor-B12He5Rp.js.br → _baseFor-Be3EKK3K.js.br} +0 -0
  655. /package/payload/server/public/assets/{_baseFor-B12He5Rp.js.gz → _baseFor-Be3EKK3K.js.gz} +0 -0
  656. /package/payload/server/public/assets/{array-DO1uCttT.js → array-X0JlPOfd.js} +0 -0
  657. /package/payload/server/public/assets/{array-DO1uCttT.js.br → array-X0JlPOfd.js.br} +0 -0
  658. /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js → cytoscape.esm-CI2IWMLB.js} +0 -0
  659. /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js.br → cytoscape.esm-CI2IWMLB.js.br} +0 -0
  660. /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js.gz → cytoscape.esm-CI2IWMLB.js.gz} +0 -0
  661. /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js → defaultLocale-B6RGN4id.js} +0 -0
  662. /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js.br → defaultLocale-B6RGN4id.js.br} +0 -0
  663. /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js.gz → defaultLocale-B6RGN4id.js.gz} +0 -0
  664. /package/payload/server/public/assets/{dist-DlU7AEeD.js → dist-QvbmK1IP.js} +0 -0
  665. /package/payload/server/public/assets/{dist-DlU7AEeD.js.br → dist-QvbmK1IP.js.br} +0 -0
  666. /package/payload/server/public/assets/{dist-DlU7AEeD.js.gz → dist-QvbmK1IP.js.gz} +0 -0
  667. /package/payload/server/public/assets/{file-download-DbNIjWiK.js → file-download-DiQesOd2.js} +0 -0
  668. /package/payload/server/public/assets/{file-download-DbNIjWiK.js.br → file-download-DiQesOd2.js.br} +0 -0
  669. /package/payload/server/public/assets/{file-download-DbNIjWiK.js.gz → file-download-DiQesOd2.js.gz} +0 -0
  670. /package/payload/server/public/assets/{init-BCRlEgNP.js → init-BmUWJJHz.js} +0 -0
  671. /package/payload/server/public/assets/{init-BCRlEgNP.js.br → init-BmUWJJHz.js.br} +0 -0
  672. /package/payload/server/public/assets/{init-BCRlEgNP.js.gz → init-BmUWJJHz.js.gz} +0 -0
  673. /package/payload/server/public/assets/{katex-gkTaZgi6.js → katex-BjZuzSQn.js} +0 -0
  674. /package/payload/server/public/assets/{katex-gkTaZgi6.js.br → katex-BjZuzSQn.js.br} +0 -0
  675. /package/payload/server/public/assets/{katex-gkTaZgi6.js.gz → katex-BjZuzSQn.js.gz} +0 -0
  676. /package/payload/server/public/assets/{path-DTmzQFjQ.js → path-CoPyR7c2.js} +0 -0
  677. /package/payload/server/public/assets/{path-DTmzQFjQ.js.br → path-CoPyR7c2.js.br} +0 -0
  678. /package/payload/server/public/assets/{path-DTmzQFjQ.js.gz → path-CoPyR7c2.js.gz} +0 -0
  679. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js → preload-helper-BJ2zoBc3.js} +0 -0
  680. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.br → preload-helper-BJ2zoBc3.js.br} +0 -0
  681. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.gz → preload-helper-BJ2zoBc3.js.gz} +0 -0
  682. /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js → rough.esm-jSt7UMyi.js} +0 -0
  683. /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js.br → rough.esm-jSt7UMyi.js.br} +0 -0
  684. /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js.gz → rough.esm-jSt7UMyi.js.gz} +0 -0
  685. /package/payload/server/public/assets/{src-9CNk4JU0.js → src-C2WwTWSY.js} +0 -0
  686. /package/payload/server/public/assets/{src-9CNk4JU0.js.br → src-C2WwTWSY.js.br} +0 -0
  687. /package/payload/server/public/assets/{src-9CNk4JU0.js.gz → src-C2WwTWSY.js.gz} +0 -0
  688. /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js → useMediaQuery-CLxecNeT.js} +0 -0
  689. /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js.br → useMediaQuery-CLxecNeT.js.br} +0 -0
  690. /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js.gz → useMediaQuery-CLxecNeT.js.gz} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy-code",
3
- "version": "0.1.552",
3
+ "version": "0.1.554",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy-code": "./dist/index.js"
@@ -136,8 +136,21 @@ export declare function resolveOwnerTimezone(session: SeedSessionLike, accountId
136
136
  * destroy the operator's own caption on the next version bump; and the
137
137
  * scheduling plugin's one-shot `converge-routine-description` has already given
138
138
  * every pre-existing row a description, so no row is left holding only a
139
- * title. */
140
- export declare const MERGE_CYPHER = "\nUNWIND $rows AS row\nOPTIONAL MATCH (pre:Event {accountId: $accountId, routineTemplate: row.key})\nWITH row,\n pre IS NOT NULL AS existed,\n coalesce(pre.routineTemplateVersion, 0) AS priorVersion,\n pre.operatorEdited IS NOT NULL AS edited\nWITH row, existed, priorVersion, edited,\n (existed AND NOT edited AND priorVersion < $version) AS refreshing\nMERGE (e:Event {accountId: $accountId, routineTemplate: row.key})\n ON CREATE SET e.eventId = randomUUID(),\n e.name = row.name,\n e.description = row.description,\n e.agentPrompt = row.prompt,\n e.recurrence = row.recurrence,\n e.routineTemplateVersion = $version,\n e.eventStatus = 'suspended',\n e.nextRun = null,\n e.agentChannel = null,\n e.agentDestination = null,\n e.actionPlugin = null,\n e.actionTool = null,\n e.actionArgs = null,\n e.sourcePlugin = null,\n e.timezone = $timezone,\n e.createdBySource = 'installer',\n e.createdByAgent = 'system',\n e.createdByTool = 'routine-roster-seed',\n e.createdAt = $now,\n e.updatedAt = $now\n ON MATCH SET e.agentPrompt = CASE WHEN refreshing THEN row.prompt ELSE e.agentPrompt END,\n e.name = CASE WHEN refreshing THEN row.name ELSE e.name END,\n e.description = CASE WHEN refreshing THEN row.description ELSE e.description END,\n e.routineTemplateVersion = CASE WHEN refreshing THEN $version ELSE e.routineTemplateVersion END,\n e.updatedAt = CASE WHEN refreshing THEN $now ELSE e.updatedAt END\nRETURN row.key AS key,\n e.eventId AS eventId,\n CASE WHEN NOT existed THEN 'create'\n WHEN priorVersion >= $version THEN 'unchanged'\n WHEN edited THEN 'skip-operator-edited'\n ELSE 'refresh-version' END AS action";
139
+ * title.
140
+ *
141
+ * The gate (Task 2379) is written by a `SET` after the MERGE rather than inside
142
+ * either branch, because both branches need `e.eventId` and only one of them
143
+ * has just minted it. `writing` is the same condition the prompt follows, so a
144
+ * gate is written on create, refreshed on a version bump of an unedited row,
145
+ * and never touched on an operator-edited one.
146
+ *
147
+ * Two details are load-bearing. The null branch is symmetric on purpose: a
148
+ * template reclassified gateless must have its three properties cleared, or the
149
+ * row keeps a gate its template no longer declares and nothing reports it. And
150
+ * the commit token is substituted from the same `row.gateChecks` the gate is
151
+ * built from, so the precondition and the turn's own commit call cannot
152
+ * disagree about what this routine checks. */
153
+ export declare const MERGE_CYPHER = "\nUNWIND $rows AS row\nOPTIONAL MATCH (pre:Event {accountId: $accountId, routineTemplate: row.key})\nWITH row,\n pre IS NOT NULL AS existed,\n coalesce(pre.routineTemplateVersion, 0) AS priorVersion,\n pre.operatorEdited IS NOT NULL AS edited\nWITH row, existed, priorVersion, edited,\n (existed AND NOT edited AND priorVersion < $version) AS refreshing\nMERGE (e:Event {accountId: $accountId, routineTemplate: row.key})\n ON CREATE SET e.eventId = randomUUID(),\n e.name = row.name,\n e.description = row.description,\n e.agentPrompt = row.prompt,\n e.recurrence = row.recurrence,\n e.routineTemplateVersion = $version,\n e.eventStatus = 'suspended',\n e.nextRun = null,\n e.agentChannel = null,\n e.agentDestination = null,\n e.actionPlugin = null,\n e.actionTool = null,\n e.actionArgs = null,\n e.sourcePlugin = null,\n e.timezone = $timezone,\n e.createdBySource = 'installer',\n e.createdByAgent = 'system',\n e.createdByTool = 'routine-roster-seed',\n e.createdAt = $now,\n e.updatedAt = $now\n ON MATCH SET e.agentPrompt = CASE WHEN refreshing THEN row.prompt ELSE e.agentPrompt END,\n e.name = CASE WHEN refreshing THEN row.name ELSE e.name END,\n e.description = CASE WHEN refreshing THEN row.description ELSE e.description END,\n e.routineTemplateVersion = CASE WHEN refreshing THEN $version ELSE e.routineTemplateVersion END,\n e.updatedAt = CASE WHEN refreshing THEN $now ELSE e.updatedAt END\nWITH row, e, existed, priorVersion, edited, (NOT existed OR refreshing) AS writing\nSET e.gatePlugin = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling' END) ELSE e.gatePlugin END,\n e.gateTool = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling-gate' END) ELSE e.gateTool END,\n e.gateArgs = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE '{\"eventId\":\"' + e.eventId + '\",\"checks\":' + row.gateChecks + '}' END) ELSE e.gateArgs END,\n e.agentPrompt = CASE WHEN writing AND row.gateChecks IS NOT NULL\n THEN replace(e.agentPrompt, '<<gateCommit>>', '{\"eventId\":\"' + e.eventId + '\",\"checks\":' + row.gateChecks + ',\"commit\":true}')\n ELSE e.agentPrompt END\nRETURN row.key AS key,\n e.eventId AS eventId,\n CASE WHEN NOT existed THEN 'create'\n WHEN priorVersion >= $version THEN 'unchanged'\n WHEN edited THEN 'skip-operator-edited'\n ELSE 'refresh-version' END AS action";
141
154
  /** The post-condition read. Counts every roster row the account actually holds,
142
155
  * independently of what the MERGE above believes it wrote. */
143
156
  export declare const VERIFY_CYPHER = "\nMATCH (e:Event {accountId: $accountId})\nWHERE e.routineTemplate IS NOT NULL\nRETURN count(e) AS actual,\n sum(CASE WHEN e.eventStatus = 'suspended' THEN 1 ELSE 0 END) AS suspended,\n sum(CASE WHEN e.nextRun IS NULL THEN 1 ELSE 0 END) AS nextRunNull,\n sum(CASE WHEN e.description IS NULL THEN 1 ELSE 0 END) AS descNull";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;2EAG2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAClH;AAED;;;;;;;4EAO4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,WAAW,CAAC;AAErG,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;;;0EAM0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;kEAO8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,eAAe,GAAG,QAAQ,CAAC;IAC3C,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAYD;4DAC4D;AAC5D,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAAA;CAAE,CAAC,CAa1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;aAyBa;AACb,eAAO,MAAM,YAAY,8+DAwCwB,CAAC;AAElD;+DAC+D;AAC/D,eAAO,MAAM,aAAa,wVAMgD,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,+DAA+D;IAC/D,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;sEACkE;IAClE,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgF/F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;2EAG2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAClH;AAED;;;;;;;4EAO4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,WAAW,CAAC;AAErG,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;;;0EAM0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;kEAO8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,eAAe,GAAG,QAAQ,CAAC;IAC3C,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAYD;4DAC4D;AAC5D,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAAA;CAAE,CAAC,CAa1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAsC+C;AAC/C,eAAO,MAAM,YAAY,iyFA+CwB,CAAC;AAElD;+DAC+D;AAC/D,eAAO,MAAM,aAAa,wVAMgD,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,+DAA+D;IAC/D,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;sEACkE;IAClE,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoF/F"}
@@ -103,7 +103,20 @@ async function resolveOwnerTimezone(session, accountId) {
103
103
  * destroy the operator's own caption on the next version bump; and the
104
104
  * scheduling plugin's one-shot `converge-routine-description` has already given
105
105
  * every pre-existing row a description, so no row is left holding only a
106
- * title. */
106
+ * title.
107
+ *
108
+ * The gate (Task 2379) is written by a `SET` after the MERGE rather than inside
109
+ * either branch, because both branches need `e.eventId` and only one of them
110
+ * has just minted it. `writing` is the same condition the prompt follows, so a
111
+ * gate is written on create, refreshed on a version bump of an unedited row,
112
+ * and never touched on an operator-edited one.
113
+ *
114
+ * Two details are load-bearing. The null branch is symmetric on purpose: a
115
+ * template reclassified gateless must have its three properties cleared, or the
116
+ * row keeps a gate its template no longer declares and nothing reports it. And
117
+ * the commit token is substituted from the same `row.gateChecks` the gate is
118
+ * built from, so the precondition and the turn's own commit call cannot
119
+ * disagree about what this routine checks. */
107
120
  exports.MERGE_CYPHER = `
108
121
  UNWIND $rows AS row
109
122
  OPTIONAL MATCH (pre:Event {accountId: $accountId, routineTemplate: row.key})
@@ -139,6 +152,13 @@ MERGE (e:Event {accountId: $accountId, routineTemplate: row.key})
139
152
  e.description = CASE WHEN refreshing THEN row.description ELSE e.description END,
140
153
  e.routineTemplateVersion = CASE WHEN refreshing THEN $version ELSE e.routineTemplateVersion END,
141
154
  e.updatedAt = CASE WHEN refreshing THEN $now ELSE e.updatedAt END
155
+ WITH row, e, existed, priorVersion, edited, (NOT existed OR refreshing) AS writing
156
+ SET e.gatePlugin = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling' END) ELSE e.gatePlugin END,
157
+ e.gateTool = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE 'scheduling-gate' END) ELSE e.gateTool END,
158
+ e.gateArgs = CASE WHEN writing THEN (CASE WHEN row.gateChecks IS NULL THEN null ELSE '{"eventId":"' + e.eventId + '","checks":' + row.gateChecks + '}' END) ELSE e.gateArgs END,
159
+ e.agentPrompt = CASE WHEN writing AND row.gateChecks IS NOT NULL
160
+ THEN replace(e.agentPrompt, '<<gateCommit>>', '{"eventId":"' + e.eventId + '","checks":' + row.gateChecks + ',"commit":true}')
161
+ ELSE e.agentPrompt END
142
162
  RETURN row.key AS key,
143
163
  e.eventId AS eventId,
144
164
  CASE WHEN NOT existed THEN 'create'
@@ -185,6 +205,10 @@ async function seedRoutineRoster(args) {
185
205
  description: r.description,
186
206
  prompt: r.prompt,
187
207
  recurrence: r.recurrence,
208
+ // Task 2379 — the only place the checks are serialised. Null for a
209
+ // gateless template, which the MERGE reads as "clear the three gate
210
+ // properties on the write path".
211
+ gateChecks: r.gate ? JSON.stringify(r.gate.checks) : null,
188
212
  })),
189
213
  });
190
214
  const merges = mergeRes.records.map((rec) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,62 @@
34
34
  * routine's prompt only when the stored `routineTemplateVersion` is BELOW this
35
35
  * and no operator has edited the row, so an unbumped edit ships to new installs
36
36
  * and never reaches existing ones — bump it in the same commit as the edit. */
37
- export declare const ROUTINE_TEMPLATE_VERSION = 2;
37
+ export declare const ROUTINE_TEMPLATE_VERSION = 3;
38
+ /**
39
+ * Task 2379 — the check shapes a shipped template may name.
40
+ *
41
+ * Declared here rather than imported from the scheduling plugin:
42
+ * `routine-templates` is a `platform/lib` package and importing from
43
+ * `platform/plugins` would invert the dependency direction and break the lib
44
+ * build, which has no plugin on its path. The roster test reads the tool's own
45
+ * source and asserts every type used here is one the tool declares, which is the
46
+ * same drift control this file already applies to tool names.
47
+ */
48
+ export interface RoutineMailCheck {
49
+ readonly type: "mail";
50
+ readonly mailbox: string;
51
+ readonly folder?: string;
52
+ readonly subjectPrefixes?: readonly string[];
53
+ }
54
+ export interface RoutineD1Check {
55
+ readonly type: "d1";
56
+ readonly database: string;
57
+ readonly sql: string;
58
+ }
59
+ export interface RoutineWhatsappCheck {
60
+ readonly type: "whatsapp";
61
+ readonly scope: "inbound" | "status";
62
+ }
63
+ export interface RoutineCalendarCheck {
64
+ readonly type: "calendar";
65
+ readonly connector: string;
66
+ }
67
+ export type RoutineGateCheck = RoutineMailCheck | RoutineD1Check | RoutineWhatsappCheck | RoutineCalendarCheck;
68
+ /** The plugin and the tool are constants for every roster gate, so a template
69
+ * carries neither. `hasWork` is true when ANY check is true. */
70
+ export interface RoutineGate {
71
+ readonly checks: readonly RoutineGateCheck[];
72
+ }
73
+ /** Substituted by the seed with the full `scheduling-gate` argument object,
74
+ * including the row's own event id.
75
+ *
76
+ * A template cannot write that id: it is minted by the MERGE. Nor can the turn
77
+ * supply it, because the only place a scheduled turn sees its own event is the
78
+ * provenance preamble, which carries the first eight characters. The watermark
79
+ * file is named from the whole id, so a turn committing against the prefix
80
+ * would write a file the next gate never reads and the routine would report
81
+ * work for ever. */
82
+ export declare const GATE_COMMIT_TOKEN = "<<gateCommit>>";
83
+ /** True when the check compares against a stored position rather than reading a
84
+ * current one.
85
+ *
86
+ * A watermarked check reads its stored value or zero, so with no watermark file
87
+ * it reports work on every fire until something commits: such a gate is inert
88
+ * until its routine's prompt carries the commit line. Mirrors `probe`'s `mark`
89
+ * field in the scheduling plugin's `tools/scheduling-gate.ts`, which is a
90
+ * function for exactly these three and null for the other two. */
91
+ export declare function isWatermarkedCheck(check: RoutineGateCheck): boolean;
92
+ export declare function gateNeedsCommit(gate: RoutineGate): boolean;
38
93
  export interface RoutineTemplate {
39
94
  /** Stable identity. Half of the MERGE key `(accountId, routineTemplate)`, so
40
95
  * it is never renamed: a renamed key seeds a duplicate row and orphans the
@@ -52,7 +107,27 @@ export interface RoutineTemplate {
52
107
  readonly recurrence: string;
53
108
  /** The injected turn. Refreshed on a version bump when the row is unedited. */
54
109
  readonly prompt: string;
110
+ /** Task 2379 — the precondition, present when this routine's work is
111
+ * conditional AND the check vocabulary can express its source without
112
+ * per-account data. Seeded onto `gatePlugin`/`gateTool`/`gateArgs` under the
113
+ * same rule the prompt follows: written on create, refreshed only on a
114
+ * version bump of an unedited row. */
115
+ readonly gate?: RoutineGate;
116
+ /** Why this template ships with no gate. Exactly one of `gate` and `gateless`
117
+ * is present on every template, and the roster test fails one carrying
118
+ * neither, so a template added later cannot skip the decision. A field rather
119
+ * than a comment because a comment cannot be asserted. */
120
+ readonly gateless?: string;
55
121
  }
122
+ /** A template is classified when it carries exactly one of `gate` and a
123
+ * non-empty `gateless`.
124
+ *
125
+ * The rule lives here, in one function, rather than inline in the assertion
126
+ * that walks the roster. A predicate the test only ever feeds passing input
127
+ * reports clean while checking nothing, so the roster test asserts this both
128
+ * ways: true for all thirteen, and false for a template carrying neither, both
129
+ * and an empty reason. */
130
+ export declare function isClassified(template: RoutineTemplate): boolean;
56
131
  /** The thirteen. Order is the display order on `/routines` before the operator
57
132
  * retimes anything: the daily rhythm first, then the reconciles, then the
58
133
  * weekly, then the standing check, then the two health reports.
@@ -1 +1 @@
1
- {"version":3,"file":"roster.d.ts","sourceRoot":"","sources":["../src/roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH;;;gFAGgF;AAChF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B;;mEAE+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;6EAGyE;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;wEACoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAgKD;;;;;;;;iFAQiF;AACjF,eAAO,MAAM,cAAc,EAAE,SAAS,eAAe,EAyGpD,CAAC;AAEF;;6DAE6D;AAC7D,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAqC,CAAC"}
1
+ {"version":3,"file":"roster.d.ts","sourceRoot":"","sources":["../src/roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH;;;gFAGgF;AAChF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;CACtC;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,oBAAoB,CAAC;AAEzB;iEACiE;AACjE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAED;;;;;;;;qBAQqB;AACrB,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD;;;;;;;mEAOmE;AACnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAGnE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAE1D;AAED,MAAM,WAAW,eAAe;IAC9B;;mEAE+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;6EAGyE;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;wEACoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;2CAIuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B;;;+DAG2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;2BAO2B;AAC3B,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAI/D;AAkKD;;;;;;;;iFAQiF;AACjF,eAAO,MAAM,cAAc,EAAE,SAAS,eAAe,EAsHpD,CAAC;AAEF;;6DAE6D;AAC7D,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAqC,CAAC"}
@@ -32,12 +32,54 @@
32
32
  * shipping a prompt that reaches for a tool no install serves.
33
33
  */
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.ROUTINE_ROSTER_KEYS = exports.ROUTINE_ROSTER = exports.ROUTINE_TEMPLATE_VERSION = void 0;
35
+ exports.ROUTINE_ROSTER_KEYS = exports.ROUTINE_ROSTER = exports.GATE_COMMIT_TOKEN = exports.ROUTINE_TEMPLATE_VERSION = void 0;
36
+ exports.isWatermarkedCheck = isWatermarkedCheck;
37
+ exports.gateNeedsCommit = gateNeedsCommit;
38
+ exports.isClassified = isClassified;
36
39
  /** Bumped whenever any prompt in the roster changes. The seed refreshes a
37
40
  * routine's prompt only when the stored `routineTemplateVersion` is BELOW this
38
41
  * and no operator has edited the row, so an unbumped edit ships to new installs
39
42
  * and never reaches existing ones — bump it in the same commit as the edit. */
40
- exports.ROUTINE_TEMPLATE_VERSION = 2;
43
+ exports.ROUTINE_TEMPLATE_VERSION = 3;
44
+ /** Substituted by the seed with the full `scheduling-gate` argument object,
45
+ * including the row's own event id.
46
+ *
47
+ * A template cannot write that id: it is minted by the MERGE. Nor can the turn
48
+ * supply it, because the only place a scheduled turn sees its own event is the
49
+ * provenance preamble, which carries the first eight characters. The watermark
50
+ * file is named from the whole id, so a turn committing against the prefix
51
+ * would write a file the next gate never reads and the routine would report
52
+ * work for ever. */
53
+ exports.GATE_COMMIT_TOKEN = "<<gateCommit>>";
54
+ /** True when the check compares against a stored position rather than reading a
55
+ * current one.
56
+ *
57
+ * A watermarked check reads its stored value or zero, so with no watermark file
58
+ * it reports work on every fire until something commits: such a gate is inert
59
+ * until its routine's prompt carries the commit line. Mirrors `probe`'s `mark`
60
+ * field in the scheduling plugin's `tools/scheduling-gate.ts`, which is a
61
+ * function for exactly these three and null for the other two. */
62
+ function isWatermarkedCheck(check) {
63
+ if (check.type === "whatsapp")
64
+ return check.scope === "inbound";
65
+ return check.type === "mail" || check.type === "calendar";
66
+ }
67
+ function gateNeedsCommit(gate) {
68
+ return gate.checks.some(isWatermarkedCheck);
69
+ }
70
+ /** A template is classified when it carries exactly one of `gate` and a
71
+ * non-empty `gateless`.
72
+ *
73
+ * The rule lives here, in one function, rather than inline in the assertion
74
+ * that walks the roster. A predicate the test only ever feeds passing input
75
+ * reports clean while checking nothing, so the roster test asserts this both
76
+ * ways: true for all thirteen, and false for a template carrying neither, both
77
+ * and an empty reason. */
78
+ function isClassified(template) {
79
+ const gated = template.gate != null;
80
+ const declaredGateless = typeof template.gateless === "string" && template.gateless.trim() !== "";
81
+ return gated !== declaredGateless;
82
+ }
41
83
  const START_OF_DAY = `Prepare the operator's morning briefing and reply with it as a single message.
42
84
 
43
85
  Call capabilities-here first and work only with the plugins it reports as enabled. Nothing below is mandatory: each part is included when its surface is present and skipped in silence when it is not.
@@ -105,7 +147,9 @@ An appointment on the provider calendar with no counterpart in the graph is invi
105
147
 
106
148
  If the account has a busy-time sync configured, run schedule-connector-busy-sync so availability reflects what was just reconciled.
107
149
 
108
- Reply only when something was actually changed, naming what and why. A clean reconcile ends the turn without replying, every time. This routine runs often, so a message on every clean run trains the operator to ignore it.`;
150
+ Reply only when something was actually changed, naming what and why. A clean reconcile ends the turn without replying, every time. This routine runs often, so a message on every clean run trains the operator to ignore it.
151
+
152
+ When the run has finished and nothing failed, call scheduling-gate with <<gateCommit>> so the next run does not re-examine what you have just reconciled. Do not call it after a run that failed or that you stopped early: the work would be marked as handled without anyone having seen it.`;
109
153
  const CONTACT_RECONCILE = `Reconcile the people the business actually deals with against the people it has recorded.
110
154
 
111
155
  Call capabilities-here first. If neither a mail plugin nor the contacts plugin is enabled, end the turn without replying.
@@ -199,6 +243,7 @@ exports.ROUTINE_ROSTER = [
199
243
  description: "Sends one morning message covering what needs a decision, what is time-bound and what changed overnight; stays silent when there is nothing worth saying.",
200
244
  recurrence: "30 7 * * 1-5",
201
245
  prompt: START_OF_DAY,
246
+ gateless: "A morning briefing is judgement every fire, so a gate would either always pass or suppress the briefing.",
202
247
  },
203
248
  {
204
249
  key: "inbound-check",
@@ -206,6 +251,7 @@ exports.ROUTINE_ROSTER = [
206
251
  description: "Triages mail that arrived since the last check and writes replies for you to approve; it never sends anything itself.",
207
252
  recurrence: "*/30 9-17 * * 1-5",
208
253
  prompt: INBOUND_CHECK,
254
+ gateless: "Conditional on new mail, but the mail check matches an exact mailbox address and no shipped template can name one (Task 2389).",
209
255
  },
210
256
  {
211
257
  key: "end-of-day",
@@ -213,6 +259,7 @@ exports.ROUTINE_ROSTER = [
213
259
  description: "Closes the day with your unsent drafts, overdue work and tomorrow's diary; says nothing when all three are empty.",
214
260
  recurrence: "0 18 * * 1-5",
215
261
  prompt: END_OF_DAY,
262
+ gateless: "A wrap-up is judgement every fire, so no cheap check stands in for reading the three surfaces it reports.",
216
263
  },
217
264
  {
218
265
  key: "appointment-reminder",
@@ -220,6 +267,7 @@ exports.ROUTINE_ROSTER = [
220
267
  description: "Reminds each attendee once before a booked appointment, on a route they already use; it never opens a conversation with a stranger.",
221
268
  recurrence: "0 * * * *",
222
269
  prompt: APPOINTMENT_REMINDER,
270
+ gateless: "Conditional on an appointment falling in the window, but no check type reads appointments held in the graph (Task 2389).",
223
271
  },
224
272
  {
225
273
  key: "commitment-chase",
@@ -227,6 +275,7 @@ exports.ROUTINE_ROSTER = [
227
275
  description: "Surfaces promises the business made and did not keep, and promises made to it that nobody kept; it reports them rather than chasing them.",
228
276
  recurrence: "0 10 * * 2",
229
277
  prompt: COMMITMENT_CHASE,
278
+ gateless: "Whether a promise has been dropped is the judgement itself, so no check can answer it more cheaply.",
230
279
  },
231
280
  {
232
281
  key: "calendar-reconcile",
@@ -234,6 +283,7 @@ exports.ROUTINE_ROSTER = [
234
283
  description: "Reconciles the provider calendar against the appointments held in the graph, writing what is missing and marking what was cancelled; a clean run says nothing.",
235
284
  recurrence: "*/15 * * * *",
236
285
  prompt: CALENDAR_RECONCILE,
286
+ gate: { checks: [{ type: "calendar", connector: "account" }] },
237
287
  },
238
288
  {
239
289
  key: "contact-reconcile",
@@ -241,6 +291,7 @@ exports.ROUTINE_ROSTER = [
241
291
  description: "Reconciles the people you correspond with against the people on record, creating and updating contacts; it never merges two records that might be two people.",
242
292
  recurrence: "45 6 * * 1-5",
243
293
  prompt: CONTACT_RECONCILE,
294
+ gateless: "Conditional on new correspondence, but no check type reads correspondence (Task 2389).",
244
295
  },
245
296
  {
246
297
  key: "crm-reconcile",
@@ -248,6 +299,7 @@ exports.ROUTINE_ROSTER = [
248
299
  description: "Brings across what changed in whichever operational system this business runs; it reads only and never writes back to that system.",
249
300
  recurrence: "0 3 * * *",
250
301
  prompt: CRM_RECONCILE,
302
+ gateless: "Conditional on connector movement, but no check type reads a connector queue (Task 2389).",
251
303
  },
252
304
  {
253
305
  key: "finance-reconcile",
@@ -255,6 +307,7 @@ exports.ROUTINE_ROSTER = [
255
307
  description: "Reconciles the accounting system against the internal ledger and reports what does not agree; it never adjusts an entry to make the two sides match.",
256
308
  recurrence: "0 4 * * 1",
257
309
  prompt: FINANCE_RECONCILE,
310
+ gateless: "Conditional on accounting movement, but no check type reads an accounting ledger (Task 2389).",
258
311
  },
259
312
  {
260
313
  key: "weekly-digest",
@@ -262,6 +315,7 @@ exports.ROUTINE_ROSTER = [
262
315
  description: "Writes the week in three paragraphs at most: what changed, what is stuck, and what next week turns on.",
263
316
  recurrence: "0 16 * * 5",
264
317
  prompt: WEEKLY_DIGEST,
318
+ gateless: "A digest is judgement every fire, and a gate would suppress the report it exists to send.",
265
319
  },
266
320
  {
267
321
  key: "channel-link-check",
@@ -269,6 +323,7 @@ exports.ROUTINE_ROSTER = [
269
323
  description: "Reports a messaging link that has gone down and whether it can recover on its own; it never disconnects a link or starts a re-pair.",
270
324
  recurrence: "*/15 * * * *",
271
325
  prompt: CHANNEL_LINK_CHECK,
326
+ gate: { checks: [{ type: "whatsapp", scope: "status" }] },
272
327
  },
273
328
  {
274
329
  key: "graph-health",
@@ -276,6 +331,7 @@ exports.ROUTINE_ROSTER = [
276
331
  description: "Reports what the hourly graph sweep last did and what is waiting for review; it reads only and never runs the sweep itself.",
277
332
  recurrence: "0 9 * * 1",
278
333
  prompt: GRAPH_HEALTH,
334
+ gateless: "Reports the sweep's state every fire by design, so there is nothing conditional to check.",
279
335
  },
280
336
  {
281
337
  key: "filesystem-health",
@@ -283,6 +339,7 @@ exports.ROUTINE_ROSTER = [
283
339
  description: "Reports what has grown under the account directory and which paths are worth attention; it deletes nothing.",
284
340
  recurrence: "0 9 * * 1",
285
341
  prompt: FILESYSTEM_HEALTH,
342
+ gateless: "Reports what has grown every fire by design, so there is nothing conditional to check.",
286
343
  },
287
344
  ];
288
345
  /** Every roster key, in roster order. The scheduling heartbeat's `op=roster`
@@ -1 +1 @@
1
- {"version":3,"file":"roster.js","sourceRoot":"","sources":["../src/roster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roster.js","sourceRoot":"","sources":["../src/roster.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;AAoEH,gDAGC;AAED,0CAEC;AAwCD,oCAIC;AArHD;;;gFAGgF;AACnE,QAAA,wBAAwB,GAAG,CAAC,CAAC;AA2C1C;;;;;;;;qBAQqB;AACR,QAAA,iBAAiB,GAAG,gBAAgB,CAAC;AAElD;;;;;;;mEAOmE;AACnE,SAAgB,kBAAkB,CAAC,KAAuB;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;IAChE,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;AAC5D,CAAC;AAED,SAAgB,eAAe,CAAC,IAAiB;IAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAgCD;;;;;;;2BAO2B;AAC3B,SAAgB,YAAY,CAAC,QAAyB;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IACpC,MAAM,gBAAgB,GAAG,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAClG,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACpC,CAAC;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;4OAWuN,CAAC;AAE7O,MAAM,aAAa,GAAG;;;;;;;;;;2NAUqM,CAAC;AAE5N,MAAM,UAAU,GAAG;;;;;;;;;;gGAU6E,CAAC;AAEjG,MAAM,oBAAoB,GAAG;;;;;;;;;;gJAUmH,CAAC;AAEjJ,MAAM,gBAAgB,GAAG;;;;;;;;;;;4DAWmC,CAAC;AAE7D,MAAM,kBAAkB,GAAG;;;;;;;;;;;;+RAYoQ,CAAC;AAEhS,MAAM,iBAAiB,GAAG;;;;;;;;;;4JAUkI,CAAC;AAE7J,MAAM,aAAa,GAAG;;;;;;;;2HAQqG,CAAC;AAE5H,MAAM,iBAAiB,GAAG;;;;;;;;;;gHAUsF,CAAC;AAEjH,MAAM,aAAa,GAAG;;;;;;;;;;;;gEAY0C,CAAC;AAEjE,MAAM,kBAAkB,GAAG;;;;;;;;;;sHAU2F,CAAC;AAEvH,MAAM,YAAY,GAAG;;;;;;;;;;gJAU2H,CAAC;AAEjJ,MAAM,iBAAiB,GAAG;;;;;;;;;;mFAUyD,CAAC;AAEpF;;;;;;;;iFAQiF;AACpE,QAAA,cAAc,GAA+B;IACxD;QACE,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,2JAA2J;QAC7J,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,0GAA0G;KACrH;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACT,uHAAuH;QACzH,UAAU,EAAE,mBAAmB;QAC/B,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,gIAAgI;KAC3I;IACD;QACE,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,2GAA2G;KACtH;IACD;QACE,GAAG,EAAE,sBAAsB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,qIAAqI;QACvI,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,oBAAoB;QAC5B,QAAQ,EAAE,0HAA0H;KACrI;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,2IAA2I;QAC7I,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,qGAAqG;KAChH;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,gKAAgK;QAClK,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE;KAC/D;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,+JAA+J;QACjK,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,wFAAwF;KACnG;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,oIAAoI;QACtI,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,2FAA2F;KACtG;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,sJAAsJ;QACxJ,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,+FAA+F;KAC1G;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,wGAAwG;QAC1G,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,2FAA2F;KACtG;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,qIAAqI;QACvI,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;KAC1D;IACD;QACE,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,6HAA6H;QAC/H,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,2FAA2F;KACtG;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,6GAA6G;QAC/G,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,wFAAwF;KACnG;CACF,CAAC;AAEF;;6DAE6D;AAChD,QAAA,mBAAmB,GAAsB,sBAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC"}
@@ -10,7 +10,15 @@
10
10
  import { readFileSync } from "node:fs";
11
11
  import { resolve } from "node:path";
12
12
  import { describe, expect, it } from "vitest";
13
- import { ROUTINE_ROSTER, ROUTINE_ROSTER_KEYS, ROUTINE_TEMPLATE_VERSION } from "../roster.js";
13
+ import {
14
+ GATE_COMMIT_TOKEN,
15
+ gateNeedsCommit,
16
+ isClassified,
17
+ isWatermarkedCheck,
18
+ ROUTINE_ROSTER,
19
+ ROUTINE_ROSTER_KEYS,
20
+ ROUTINE_TEMPLATE_VERSION,
21
+ } from "../roster.js";
14
22
 
15
23
  /** Every canonical maxy tool name, read from the generated registry rather than
16
24
  * re-listed here. A list re-typed in this file would drift from the registry,
@@ -45,6 +53,10 @@ function citedToolCandidates(prompt: string): string[] {
45
53
  "outlook-",
46
54
  "google-",
47
55
  "schedule-",
56
+ // Task 2379 — the calendar template's commit sentence is the first prompt to
57
+ // cite `scheduling-gate`. Without this prefix the token is collected by
58
+ // nothing and the registry assertion passes over it without looking.
59
+ "scheduling-",
48
60
  "work-",
49
61
  "contact-",
50
62
  "connector-",
@@ -211,3 +223,83 @@ describe("routine prompts are generic", () => {
211
223
  expect(hits).toEqual([]);
212
224
  });
213
225
  });
226
+
227
+ describe("routine gate classification", () => {
228
+ // Task 2379 — a template is either gated or explicitly not, and the reason
229
+ // for the second is a field rather than a comment because a comment cannot be
230
+ // asserted. The failure this prevents is silent: a conditional template that
231
+ // ships ungated is correct in every other respect and simply costs a full
232
+ // model turn per fire once enabled.
233
+ it("every template is classified exactly once, gated or gateless", () => {
234
+ for (const r of ROUTINE_ROSTER) {
235
+ expect(isClassified(r), `${r.key} must carry exactly one of gate and gateless`).toBe(true);
236
+ }
237
+ });
238
+
239
+ it("rejects a template that is unclassified, doubly classified, or has an empty reason", () => {
240
+ // The corpus passing proves nothing about the control: a predicate fed only
241
+ // passing input reports clean while checking nothing. These are the three
242
+ // ways a later template could slip past the rule.
243
+ const base = { key: "x", name: "X", description: "X.", recurrence: "0 9 * * 1", prompt: "p" };
244
+ const gate = { checks: [{ type: "whatsapp", scope: "status" }] } as const;
245
+ expect(isClassified(base), "neither").toBe(false);
246
+ expect(isClassified({ ...base, gate, gateless: "Because." }), "both").toBe(false);
247
+ expect(isClassified({ ...base, gateless: " " }), "blank reason").toBe(false);
248
+ expect(isClassified({ ...base, gate }), "gate only").toBe(true);
249
+ expect(isClassified({ ...base, gateless: "Judgement every fire." }), "reason only").toBe(true);
250
+ });
251
+
252
+ it("gates exactly the two quarter-hourly conditional rows", () => {
253
+ const gatedKeys = ROUTINE_ROSTER.filter((r) => r.gate != null)
254
+ .map((r) => r.key)
255
+ .sort();
256
+ expect(gatedKeys).toEqual(["calendar-reconcile", "channel-link-check"]);
257
+ });
258
+
259
+ it("every gateless reason is a sentence, not a placeholder", () => {
260
+ for (const r of ROUTINE_ROSTER) {
261
+ if (r.gate != null) continue;
262
+ expect(r.gateless!.length, `${r.key} gateless reason`).toBeGreaterThan(20);
263
+ expect(r.gateless!.endsWith("."), `${r.key} gateless reason must end in a full stop`).toBe(true);
264
+ }
265
+ });
266
+
267
+ it("uses no check type the shipped tool does not declare", () => {
268
+ // Read as text, the same way CANONICAL_TOOL_NAMES is read. routine-templates
269
+ // is a platform/lib package; importing from platform/plugins would invert
270
+ // the dependency direction and break the lib build.
271
+ const toolSrc = readFileSync(
272
+ resolve(process.cwd(), "../../plugins/scheduling/mcp/src/tools/scheduling-gate.ts"),
273
+ "utf-8",
274
+ );
275
+ const declared = new Set([...toolSrc.matchAll(/type:\s*"([a-z]+)"/g)].map((m) => m[1]));
276
+ expect(declared.size, "the tool must declare check types").toBeGreaterThan(0);
277
+ for (const r of ROUTINE_ROSTER) {
278
+ for (const c of r.gate?.checks ?? []) {
279
+ expect(declared, `${r.key} check ${c.type}`).toContain(c.type);
280
+ }
281
+ }
282
+ });
283
+
284
+ it("a watermarked gate carries the commit token and a stateless one does not", () => {
285
+ // A watermarked check reads `stored ?? 0` and reports work on every fire
286
+ // until something commits, so a gate holding one is inert without the line.
287
+ // A stateless check has nothing to advance, so a token there would ask the
288
+ // turn to make a call that does nothing.
289
+ for (const r of ROUTINE_ROSTER) {
290
+ if (r.gate == null) {
291
+ expect(r.prompt, `${r.key} has no gate so must carry no token`).not.toContain(GATE_COMMIT_TOKEN);
292
+ continue;
293
+ }
294
+ expect(r.prompt.includes(GATE_COMMIT_TOKEN), `${r.key} token presence`).toBe(gateNeedsCommit(r.gate));
295
+ }
296
+ });
297
+
298
+ it("classifies which checks hold a watermark", () => {
299
+ expect(isWatermarkedCheck({ type: "whatsapp", scope: "status" })).toBe(false);
300
+ expect(isWatermarkedCheck({ type: "whatsapp", scope: "inbound" })).toBe(true);
301
+ expect(isWatermarkedCheck({ type: "d1", database: "d", sql: "SELECT count(*) FROM t" })).toBe(false);
302
+ expect(isWatermarkedCheck({ type: "calendar", connector: "account" })).toBe(true);
303
+ expect(isWatermarkedCheck({ type: "mail", mailbox: "m" })).toBe(true);
304
+ });
305
+ });
@@ -342,3 +342,77 @@ describe("seedRoutineRoster", () => {
342
342
  expect(lines.find((l) => l.includes("op=end"))).toContain("ranMs=42");
343
343
  });
344
344
  });
345
+
346
+ describe("gate seeding", () => {
347
+ /** The gate block runs after the MERGE, where `e.eventId` is bound on both
348
+ * branches. Its runtime semantics belong to Neo4j, as for the rest of this
349
+ * statement; what is testable here, and what a later edit would break
350
+ * silently, is its shape. */
351
+ function gateBlock(): string {
352
+ const start = MERGE_CYPHER.indexOf("AS writing");
353
+ expect(start, "the post-MERGE gate block must be present").toBeGreaterThan(-1);
354
+ return MERGE_CYPHER.slice(start, MERGE_CYPHER.indexOf("RETURN row.key"));
355
+ }
356
+
357
+ it("writes the gate only when the prompt would also be written", () => {
358
+ expect(MERGE_CYPHER).toContain("(NOT existed OR refreshing) AS writing");
359
+ });
360
+
361
+ it("stamps the row's own eventId into gateArgs", () => {
362
+ // The tool declares eventId as required and names the watermark file from
363
+ // it. A template cannot know one, so the seed is the only place it can come
364
+ // from, and it must be the whole id rather than the eight-character prefix
365
+ // a turn can read from its own provenance preamble.
366
+ expect(gateBlock()).toContain(`'{"eventId":"' + e.eventId + '","checks":' + row.gateChecks + '}'`);
367
+ });
368
+
369
+ it("clears the three properties when a template is reclassified gateless", () => {
370
+ // Asymmetric handling would leave a row carrying a gate its template no
371
+ // longer declares, with nothing to say so.
372
+ const body = gateBlock();
373
+ for (const prop of ["gatePlugin", "gateTool", "gateArgs"]) {
374
+ expect(body, `${prop} must have a null branch`).toMatch(
375
+ new RegExp(`e\\.${prop} = CASE WHEN writing THEN \\(CASE WHEN row\\.gateChecks IS NULL THEN null`),
376
+ );
377
+ }
378
+ });
379
+
380
+ it("leaves every gate property alone when not writing", () => {
381
+ const body = gateBlock();
382
+ for (const prop of ["gatePlugin", "gateTool", "gateArgs"]) {
383
+ expect(body, `${prop} must fall through to itself`).toContain(`ELSE e.${prop} END`);
384
+ }
385
+ });
386
+
387
+ it("substitutes the commit token with the same eventId and checks", () => {
388
+ expect(gateBlock()).toContain("replace(e.agentPrompt, '<<gateCommit>>'");
389
+ expect(gateBlock()).toContain(`,"commit":true}'`);
390
+ });
391
+
392
+ it("passes serialised checks for a gated row and null for a gateless one", async () => {
393
+ const { session, calls } = fakeSession({
394
+ timezone: { timezone: "Europe/Lisbon", timezoneSource: "owner-set" },
395
+ merges: allUnchanged,
396
+ verify: cleanVerify,
397
+ });
398
+ await seedRoutineRoster({
399
+ session,
400
+ accountId: "abcd1234-0000-0000-0000-000000000000",
401
+ now: "2026-08-02T00:00:00.000Z",
402
+ log: () => {},
403
+ });
404
+ const merge = calls.find((c) => c.query.includes("MERGE (e:Event"))!;
405
+ const rows = merge.params.rows as Array<{ key: string; gateChecks: string | null }>;
406
+ const byKey = new Map(rows.map((r) => [r.key, r.gateChecks]));
407
+ expect(byKey.get("channel-link-check")).toBe('[{"type":"whatsapp","scope":"status"}]');
408
+ expect(byKey.get("calendar-reconcile")).toBe('[{"type":"calendar","connector":"account"}]');
409
+ expect(byKey.get("weekly-digest")).toBeNull();
410
+ });
411
+
412
+ it("serialises the checks in exactly one place", () => {
413
+ // The gate and the prompt's commit call must not be able to disagree about
414
+ // what this routine checks, so both read the same row.gateChecks.
415
+ const occurrences = MERGE_CYPHER.split("row.gateChecks").length - 1;
416
+ expect(occurrences).toBeGreaterThanOrEqual(4);
417
+ });
418
+ });