@rubytech/create-maxy-code 0.1.552 → 0.1.553

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 (247) 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/whats-new/SKILL.md +6 -0
  15. package/payload/platform/plugins/scheduling/PLUGIN.md +50 -4
  16. package/payload/platform/plugins/scheduling/mcp/dist/index.js +51 -6
  17. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  18. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.d.ts +2 -0
  19. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.d.ts.map +1 -0
  20. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.js +216 -0
  21. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-freebusy.test.js.map +1 -0
  22. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.d.ts +2 -0
  23. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.d.ts.map +1 -0
  24. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.js +44 -0
  25. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/fires-per-day.test.js.map +1 -0
  26. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.d.ts +2 -0
  27. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.d.ts.map +1 -0
  28. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.js +92 -0
  29. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.js.map +1 -0
  30. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js +210 -2
  31. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js.map +1 -1
  32. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/update-summary.test.js +18 -1
  33. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/update-summary.test.js.map +1 -1
  34. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.d.ts +86 -0
  35. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.d.ts.map +1 -0
  36. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.js +240 -0
  37. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-freebusy.js.map +1 -0
  38. package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.d.ts +2 -0
  39. package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.d.ts.map +1 -0
  40. package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.js +47 -0
  41. package/payload/platform/plugins/scheduling/mcp/dist/lib/fires-per-day.js.map +1 -0
  42. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts +1 -1
  43. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts.map +1 -1
  44. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js +9 -1
  45. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js.map +1 -1
  46. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts +103 -0
  47. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts.map +1 -1
  48. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js +307 -0
  49. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js.map +1 -1
  50. package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.d.ts.map +1 -1
  51. package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.js +11 -1
  52. package/payload/platform/plugins/scheduling/mcp/dist/lib/update-summary.js.map +1 -1
  53. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +41 -1
  54. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  55. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-connector-busy-sync.test.js +84 -1
  56. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-connector-busy-sync.test.js.map +1 -1
  57. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.d.ts +2 -0
  58. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.d.ts.map +1 -0
  59. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.js +200 -0
  60. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.js.map +1 -0
  61. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js +21 -1
  62. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js.map +1 -1
  63. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.d.ts +2 -0
  64. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.d.ts.map +1 -0
  65. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.js +208 -0
  66. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-recurrence-record.test.js.map +1 -0
  67. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.d.ts +26 -2
  68. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.d.ts.map +1 -1
  69. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.js +51 -2
  70. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-connector-busy-sync.js.map +1 -1
  71. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +40 -0
  72. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  73. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +70 -5
  74. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  75. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  76. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +67 -0
  77. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  78. package/payload/platform/plugins/workflows/skills/workflow-manager/SKILL.md +4 -0
  79. package/payload/server/public/activity.html +5 -5
  80. package/payload/server/public/agents.html +4 -4
  81. package/payload/server/public/assets/{AdminLoginScreens-Bjcs9ta9.js → AdminLoginScreens-Ca2QhL18.js} +1 -1
  82. package/payload/server/public/assets/AdminLoginScreens-Ca2QhL18.js.br +0 -0
  83. package/payload/server/public/assets/AdminLoginScreens-Ca2QhL18.js.gz +0 -0
  84. package/payload/server/public/assets/{AdminShell-DVBAMUCy.js → AdminShell-Dc5du5xX.js} +1 -1
  85. package/payload/server/public/assets/AdminShell-Dc5du5xX.js.br +0 -0
  86. package/payload/server/public/assets/AdminShell-Dc5du5xX.js.gz +0 -0
  87. package/payload/server/public/assets/{activity-C8E8-EwQ.js → activity-TSDKmIYb.js} +1 -1
  88. package/payload/server/public/assets/activity-TSDKmIYb.js.br +0 -0
  89. package/payload/server/public/assets/activity-TSDKmIYb.js.gz +0 -0
  90. package/payload/server/public/assets/{admin-CeWAlpRS.js → admin-Ba729Eyg.js} +1 -1
  91. package/payload/server/public/assets/admin-Ba729Eyg.js.br +0 -0
  92. package/payload/server/public/assets/admin-Ba729Eyg.js.gz +0 -0
  93. package/payload/server/public/assets/{agents-DuN92iFb.js → agents-9hlQHOS5.js} +1 -1
  94. package/payload/server/public/assets/agents-9hlQHOS5.js.br +0 -0
  95. package/payload/server/public/assets/agents-9hlQHOS5.js.gz +0 -0
  96. package/payload/server/public/assets/{browser-BxebdKbh.js → browser-BrqoCsqh.js} +1 -1
  97. package/payload/server/public/assets/browser-BrqoCsqh.js.br +0 -0
  98. package/payload/server/public/assets/browser-BrqoCsqh.js.gz +0 -0
  99. package/payload/server/public/assets/{calendar-BtFZQ5Np.js → calendar-DOObQ_m8.js} +1 -1
  100. package/payload/server/public/assets/calendar-DOObQ_m8.js.br +0 -0
  101. package/payload/server/public/assets/calendar-DOObQ_m8.js.gz +0 -0
  102. package/payload/server/public/assets/chat-Xaul2lLF.js +1 -0
  103. package/payload/server/public/assets/chat-Xaul2lLF.js.br +3 -0
  104. package/payload/server/public/assets/chat-Xaul2lLF.js.gz +0 -0
  105. package/payload/server/public/assets/chevron-left-BYH5vH4S.js +1 -0
  106. package/payload/server/public/assets/chevron-left-BYH5vH4S.js.br +0 -0
  107. package/payload/server/public/assets/chevron-right-XxQPHfNH.js +1 -0
  108. package/payload/server/public/assets/chevron-right-XxQPHfNH.js.br +0 -0
  109. package/payload/server/public/assets/clock-BNp2JTKh.js +1 -0
  110. package/payload/server/public/assets/clock-BNp2JTKh.js.br +0 -0
  111. package/payload/server/public/assets/clock-BNp2JTKh.js.gz +0 -0
  112. package/payload/server/public/assets/{copy-DCDHXq3O.js → copy-BkbgmpJo.js} +1 -1
  113. package/payload/server/public/assets/copy-BkbgmpJo.js.br +0 -0
  114. package/payload/server/public/assets/copy-BkbgmpJo.js.gz +0 -0
  115. package/payload/server/public/assets/data-yuHj8g0C.js +1 -0
  116. package/payload/server/public/assets/data-yuHj8g0C.js.br +3 -0
  117. package/payload/server/public/assets/data-yuHj8g0C.js.gz +0 -0
  118. package/payload/server/public/assets/{file-text-zQgEQWCF.js → file-text-DDCrqbWB.js} +1 -1
  119. package/payload/server/public/assets/file-text-DDCrqbWB.js.br +0 -0
  120. package/payload/server/public/assets/file-text-DDCrqbWB.js.gz +0 -0
  121. package/payload/server/public/assets/{graph-CFCEh_YI.js → graph-BKPdL5ph.js} +1 -1
  122. package/payload/server/public/assets/graph-BKPdL5ph.js.br +0 -0
  123. package/payload/server/public/assets/graph-BKPdL5ph.js.gz +0 -0
  124. package/payload/server/public/assets/{graph-labels-CA1UcDuS.js → graph-labels-B2PrHK6O.js} +1 -1
  125. package/payload/server/public/assets/graph-labels-B2PrHK6O.js.br +0 -0
  126. package/payload/server/public/assets/graph-labels-B2PrHK6O.js.gz +0 -0
  127. package/payload/server/public/assets/{operator-hFXPDc2X.js → operator-BVULmN09.js} +1 -1
  128. package/payload/server/public/assets/operator-BVULmN09.js.br +0 -0
  129. package/payload/server/public/assets/operator-BVULmN09.js.gz +0 -0
  130. package/payload/server/public/assets/{page-ne7I_r9L.js → page-BbzdSxuU.js} +1 -1
  131. package/payload/server/public/assets/page-BbzdSxuU.js.br +0 -0
  132. package/payload/server/public/assets/page-BbzdSxuU.js.gz +0 -0
  133. package/payload/server/public/assets/{page-C8jyPH_3.js → page-baQ9FQIg.js} +1 -1
  134. package/payload/server/public/assets/page-baQ9FQIg.js.br +0 -0
  135. package/payload/server/public/assets/page-baQ9FQIg.js.gz +0 -0
  136. package/payload/server/public/assets/play-3hlqzxLI.js +1 -0
  137. package/payload/server/public/assets/play-3hlqzxLI.js.br +0 -0
  138. package/payload/server/public/assets/play-3hlqzxLI.js.gz +0 -0
  139. package/payload/server/public/assets/{public-BgnqjAal.js → public-B_SEBxWy.js} +1 -1
  140. package/payload/server/public/assets/public-B_SEBxWy.js.br +0 -0
  141. package/payload/server/public/assets/public-B_SEBxWy.js.gz +0 -0
  142. package/payload/server/public/assets/{rotate-ccw-DfJWjXAg.js → rotate-ccw-DzXTXh3g.js} +1 -1
  143. package/payload/server/public/assets/rotate-ccw-DzXTXh3g.js.br +0 -0
  144. package/payload/server/public/assets/rotate-ccw-DzXTXh3g.js.gz +0 -0
  145. package/payload/server/public/assets/routines-BQzE0xzC.js +2 -0
  146. package/payload/server/public/assets/routines-BQzE0xzC.js.br +0 -0
  147. package/payload/server/public/assets/routines-BQzE0xzC.js.gz +0 -0
  148. package/payload/server/public/assets/{skills-D-6EbgfP.js → skills-yCZhYVIs.js} +1 -1
  149. package/payload/server/public/assets/skills-yCZhYVIs.js.br +0 -0
  150. package/payload/server/public/assets/skills-yCZhYVIs.js.gz +0 -0
  151. package/payload/server/public/assets/{tasks-DnN5Fyds.js → tasks-DxNFLsHv.js} +1 -1
  152. package/payload/server/public/assets/tasks-DxNFLsHv.js.br +0 -0
  153. package/payload/server/public/assets/tasks-DxNFLsHv.js.gz +0 -0
  154. package/payload/server/public/assets/{triangle-alert-eh9UOKDT.js → triangle-alert-CYwHTcvU.js} +1 -1
  155. package/payload/server/public/assets/triangle-alert-CYwHTcvU.js.br +0 -0
  156. package/payload/server/public/assets/triangle-alert-CYwHTcvU.js.gz +0 -0
  157. package/payload/server/public/assets/{useCopyFeedback-Bz9OJHBb.js → useCopyFeedback-BCRjKc-H.js} +1 -1
  158. package/payload/server/public/assets/useCopyFeedback-BCRjKc-H.js.br +0 -0
  159. package/payload/server/public/assets/useCopyFeedback-BCRjKc-H.js.gz +0 -0
  160. package/payload/server/public/assets/{useMediaQuery-CNxsjKZp.css → useMediaQuery-Vxpamxqq.css} +1 -1
  161. package/payload/server/public/assets/useMediaQuery-Vxpamxqq.css.br +0 -0
  162. package/payload/server/public/assets/{useMediaQuery-CNxsjKZp.css.gz → useMediaQuery-Vxpamxqq.css.gz} +0 -0
  163. package/payload/server/public/assets/{useVoiceRecorder-BaDpMYxX.js → useVoiceRecorder-BaAtMu9T.js} +1 -1
  164. package/payload/server/public/assets/useVoiceRecorder-BaAtMu9T.js.br +0 -0
  165. package/payload/server/public/assets/useVoiceRecorder-BaAtMu9T.js.gz +0 -0
  166. package/payload/server/public/assets/{wrench-BO-l46rF.js → wrench-iI-vx-g2.js} +1 -1
  167. package/payload/server/public/assets/wrench-iI-vx-g2.js.br +0 -0
  168. package/payload/server/public/assets/wrench-iI-vx-g2.js.gz +0 -0
  169. package/payload/server/public/browser.html +4 -4
  170. package/payload/server/public/calendar.html +8 -8
  171. package/payload/server/public/chat.html +13 -13
  172. package/payload/server/public/data.html +11 -11
  173. package/payload/server/public/graph.html +9 -9
  174. package/payload/server/public/index.html +14 -14
  175. package/payload/server/public/operator.html +14 -14
  176. package/payload/server/public/public.html +13 -13
  177. package/payload/server/public/routines.html +6 -6
  178. package/payload/server/public/skills.html +5 -5
  179. package/payload/server/public/tasks.html +6 -6
  180. package/payload/server/server.js +36 -5
  181. package/payload/server/public/assets/AdminLoginScreens-Bjcs9ta9.js.br +0 -0
  182. package/payload/server/public/assets/AdminLoginScreens-Bjcs9ta9.js.gz +0 -0
  183. package/payload/server/public/assets/AdminShell-DVBAMUCy.js.br +0 -0
  184. package/payload/server/public/assets/AdminShell-DVBAMUCy.js.gz +0 -0
  185. package/payload/server/public/assets/activity-C8E8-EwQ.js.br +0 -0
  186. package/payload/server/public/assets/activity-C8E8-EwQ.js.gz +0 -0
  187. package/payload/server/public/assets/admin-CeWAlpRS.js.br +0 -0
  188. package/payload/server/public/assets/admin-CeWAlpRS.js.gz +0 -0
  189. package/payload/server/public/assets/agents-DuN92iFb.js.br +0 -0
  190. package/payload/server/public/assets/agents-DuN92iFb.js.gz +0 -0
  191. package/payload/server/public/assets/browser-BxebdKbh.js.br +0 -0
  192. package/payload/server/public/assets/browser-BxebdKbh.js.gz +0 -0
  193. package/payload/server/public/assets/calendar-BtFZQ5Np.js.br +0 -0
  194. package/payload/server/public/assets/calendar-BtFZQ5Np.js.gz +0 -0
  195. package/payload/server/public/assets/chat-CGIwynaH.js +0 -1
  196. package/payload/server/public/assets/chat-CGIwynaH.js.br +0 -3
  197. package/payload/server/public/assets/chat-CGIwynaH.js.gz +0 -0
  198. package/payload/server/public/assets/chevron-left-DaNP1zDb.js +0 -1
  199. package/payload/server/public/assets/chevron-left-DaNP1zDb.js.br +0 -0
  200. package/payload/server/public/assets/chevron-right-BbbuTUnt.js +0 -1
  201. package/payload/server/public/assets/chevron-right-BbbuTUnt.js.br +0 -0
  202. package/payload/server/public/assets/clock-CfDdatjp.js +0 -1
  203. package/payload/server/public/assets/clock-CfDdatjp.js.br +0 -0
  204. package/payload/server/public/assets/clock-CfDdatjp.js.gz +0 -0
  205. package/payload/server/public/assets/copy-DCDHXq3O.js.br +0 -0
  206. package/payload/server/public/assets/copy-DCDHXq3O.js.gz +0 -0
  207. package/payload/server/public/assets/data-BchSWOju.js +0 -1
  208. package/payload/server/public/assets/data-BchSWOju.js.br +0 -1
  209. package/payload/server/public/assets/data-BchSWOju.js.gz +0 -0
  210. package/payload/server/public/assets/file-text-zQgEQWCF.js.br +0 -0
  211. package/payload/server/public/assets/file-text-zQgEQWCF.js.gz +0 -0
  212. package/payload/server/public/assets/graph-CFCEh_YI.js.br +0 -0
  213. package/payload/server/public/assets/graph-CFCEh_YI.js.gz +0 -0
  214. package/payload/server/public/assets/graph-labels-CA1UcDuS.js.br +0 -0
  215. package/payload/server/public/assets/graph-labels-CA1UcDuS.js.gz +0 -0
  216. package/payload/server/public/assets/operator-hFXPDc2X.js.br +0 -0
  217. package/payload/server/public/assets/operator-hFXPDc2X.js.gz +0 -0
  218. package/payload/server/public/assets/page-C8jyPH_3.js.br +0 -0
  219. package/payload/server/public/assets/page-C8jyPH_3.js.gz +0 -0
  220. package/payload/server/public/assets/page-ne7I_r9L.js.br +0 -0
  221. package/payload/server/public/assets/page-ne7I_r9L.js.gz +0 -0
  222. package/payload/server/public/assets/play-Ep0SZTbr.js +0 -1
  223. package/payload/server/public/assets/play-Ep0SZTbr.js.br +0 -0
  224. package/payload/server/public/assets/play-Ep0SZTbr.js.gz +0 -0
  225. package/payload/server/public/assets/public-BgnqjAal.js.br +0 -0
  226. package/payload/server/public/assets/public-BgnqjAal.js.gz +0 -0
  227. package/payload/server/public/assets/rotate-ccw-DfJWjXAg.js.br +0 -0
  228. package/payload/server/public/assets/rotate-ccw-DfJWjXAg.js.gz +0 -0
  229. package/payload/server/public/assets/routines-OGFXwTFO.js +0 -2
  230. package/payload/server/public/assets/routines-OGFXwTFO.js.br +0 -0
  231. package/payload/server/public/assets/routines-OGFXwTFO.js.gz +0 -0
  232. package/payload/server/public/assets/skills-D-6EbgfP.js.br +0 -0
  233. package/payload/server/public/assets/skills-D-6EbgfP.js.gz +0 -0
  234. package/payload/server/public/assets/tasks-DnN5Fyds.js.br +0 -0
  235. package/payload/server/public/assets/tasks-DnN5Fyds.js.gz +0 -0
  236. package/payload/server/public/assets/triangle-alert-eh9UOKDT.js.br +0 -0
  237. package/payload/server/public/assets/triangle-alert-eh9UOKDT.js.gz +0 -0
  238. package/payload/server/public/assets/useCopyFeedback-Bz9OJHBb.js.br +0 -0
  239. package/payload/server/public/assets/useCopyFeedback-Bz9OJHBb.js.gz +0 -0
  240. package/payload/server/public/assets/useMediaQuery-CNxsjKZp.css.br +0 -0
  241. package/payload/server/public/assets/useVoiceRecorder-BaDpMYxX.js.br +0 -0
  242. package/payload/server/public/assets/useVoiceRecorder-BaDpMYxX.js.gz +0 -0
  243. package/payload/server/public/assets/wrench-BO-l46rF.js.br +0 -0
  244. package/payload/server/public/assets/wrench-BO-l46rF.js.gz +0 -0
  245. /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js → useMediaQuery-Baf4Huvv.js} +0 -0
  246. /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js.br → useMediaQuery-Baf4Huvv.js.br} +0 -0
  247. /package/payload/server/public/assets/{useMediaQuery-_mMln3Fu.js.gz → useMediaQuery-Baf4Huvv.js.gz} +0 -0
@@ -0,0 +1,208 @@
1
+ // Task 2380 — the change that left no record.
2
+ //
3
+ // Event 65ef758c went from `0 * * * *` to `*/15 * * * *` on 2026-07-28 and the
4
+ // row kept nothing: no previous value, no changed-at stamp, no line.
5
+ // `e.updatedAt` is bumped by every fire, so it cannot date the edit either, and
6
+ // the quadrupling was reconstructed a week later by hand from nextRun values in
7
+ // check-due-events.log.
8
+ //
9
+ // The clock is frozen on an ordinary day. Every per-day count here is a real
10
+ // assertion about the routine's zone, and on a live clock two days a year would
11
+ // legitimately produce different numbers.
12
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
13
+ import { mkdtempSync, mkdirSync } from "node:fs";
14
+ import { tmpdir } from "node:os";
15
+ import { join } from "node:path";
16
+ const runCalls = [];
17
+ let storedRow = null;
18
+ vi.mock("../../lib/embedding.js", () => ({
19
+ computeEmbedding: vi.fn(async () => []),
20
+ }));
21
+ // The destination rule resolves the socket-owning house off disk. This file
22
+ // asserts what the recurrence branch records, not who may be dispatched to —
23
+ // that rule is covered by schedule-update-agent.test.ts against a seeded
24
+ // accounts directory.
25
+ vi.mock("../../lib/agent-dispatch.js", () => ({
26
+ validateAgentDispatch: vi.fn(() => { }),
27
+ }));
28
+ vi.mock("../../lib/neo4j.js", () => ({
29
+ getSession: () => ({
30
+ run: vi.fn(async (query, params) => {
31
+ runCalls.push({ query, params });
32
+ // The pre-read is the only RETURN-without-SET against :Event.
33
+ if (query.includes("RETURN e.eventStatus AS eventStatus")) {
34
+ if (!storedRow)
35
+ return { records: [] };
36
+ return {
37
+ records: [{ get: (k) => storedRow[k] ?? null }],
38
+ };
39
+ }
40
+ if (query.includes("MATCH (m:Meeting"))
41
+ return { records: [] };
42
+ // An id that matched no row on the pre-read matches none on the SET
43
+ // either — the same MATCH, one statement later.
44
+ if (query.includes("MATCH (e:Event") && !storedRow)
45
+ return { records: [] };
46
+ return { records: [{ get: () => null }] };
47
+ }),
48
+ close: vi.fn(async () => { }),
49
+ }),
50
+ }));
51
+ import { scheduleUpdate } from "../schedule-update.js";
52
+ const ACCOUNT_ID = "11111111-1111-4111-8111-111111111111";
53
+ const EVENT_ID = "22222222-2222-4222-8222-222222222222";
54
+ /** The SET statement the updater ran against :Event (never the pre-read). */
55
+ function setCall() {
56
+ const hit = runCalls.filter((c) => c.query.includes("SET ") && c.query.includes("MATCH (e:Event"));
57
+ return hit[hit.length - 1];
58
+ }
59
+ let logs = [];
60
+ const recurrenceLine = () => logs.find((l) => l.includes("op=recurrence-changed"));
61
+ const row = (over = {}) => ({
62
+ eventStatus: "scheduled",
63
+ recurrence: "0 * * * *",
64
+ timezone: "Europe/London",
65
+ startDate: null,
66
+ name: "sweep",
67
+ description: null,
68
+ agentChannel: null,
69
+ agentDestination: null,
70
+ agentPrompt: null,
71
+ ...over,
72
+ });
73
+ beforeEach(() => {
74
+ runCalls.length = 0;
75
+ logs = [];
76
+ // Only Date is faked: faking timers wholesale would stall the awaited mocks.
77
+ vi.useFakeTimers({ toFake: ["Date"] });
78
+ vi.setSystemTime(new Date("2026-08-02T12:00:00Z"));
79
+ vi.spyOn(console, "error").mockImplementation((...args) => {
80
+ logs.push(args.map(String).join(" "));
81
+ });
82
+ storedRow = row();
83
+ });
84
+ afterEach(() => {
85
+ vi.useRealTimers();
86
+ vi.restoreAllMocks();
87
+ });
88
+ describe("recording a recurrence change (Task 2380)", () => {
89
+ it("stamps the previous expression and the time it changed", async () => {
90
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "*/15 * * * *" });
91
+ const { query, params } = setCall();
92
+ expect(query).toContain("e.recurrencePrevious = $recurrencePrevious");
93
+ expect(params.recurrencePrevious).toBe("0 * * * *");
94
+ expect(query).toContain("e.recurrenceChangedAt = $now");
95
+ expect(typeof params.now).toBe("string");
96
+ });
97
+ it("logs the cost delta that IS the incident", async () => {
98
+ await scheduleUpdate({
99
+ accountId: ACCOUNT_ID,
100
+ eventId: EVENT_ID,
101
+ recurrence: "*/15 * * * *",
102
+ agentDispatch: { channel: "whatsapp", destination: "admin", prompt: "sweep" },
103
+ });
104
+ expect(recurrenceLine()).toContain("from=0 * * * * to=*/15 * * * *");
105
+ expect(recurrenceLine()).toContain("firesPerDayFrom=24 firesPerDayTo=96");
106
+ expect(recurrenceLine()).toContain("agentBearing=true");
107
+ });
108
+ it("writes neither property and logs nothing when the value is unchanged", async () => {
109
+ // A line on every no-op edit would bury the real ones, so the absence is
110
+ // the assertion.
111
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "0 * * * *" });
112
+ const { query } = setCall();
113
+ expect(query).not.toContain("e.recurrencePrevious");
114
+ expect(query).not.toContain("e.recurrenceChangedAt");
115
+ expect(recurrenceLine()).toBeUndefined();
116
+ });
117
+ it("writes neither property and logs nothing on an unrelated edit", async () => {
118
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, name: "renamed" });
119
+ const { query } = setCall();
120
+ expect(query).not.toContain("e.recurrencePrevious");
121
+ expect(query).not.toContain("e.recurrenceChangedAt");
122
+ expect(recurrenceLine()).toBeUndefined();
123
+ });
124
+ it("treats a one-time routine gaining a cron as a change with no previous value", async () => {
125
+ storedRow = row({ recurrence: null });
126
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "0 * * * *" });
127
+ const { query } = setCall();
128
+ // Cypher SET x = null REMOVES the property, so a null previous records
129
+ // nothing and is not written at all.
130
+ expect(query).not.toContain("e.recurrencePrevious");
131
+ expect(query).toContain("e.recurrenceChangedAt = $now");
132
+ expect(recurrenceLine()).toContain("from=- to=0 * * * *");
133
+ expect(recurrenceLine()).toContain("firesPerDayFrom=0 firesPerDayTo=24");
134
+ });
135
+ it("counts the day in the routine's own zone, so a clock-change day is 25", async () => {
136
+ // Asserted as the number rather than assumed to be 24, or the count drifts
137
+ // twice a year with nothing saying so.
138
+ vi.setSystemTime(new Date("2026-10-25T12:00:00Z"));
139
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "*/15 * * * *" });
140
+ expect(recurrenceLine()).toContain("firesPerDayFrom=25 firesPerDayTo=100");
141
+ });
142
+ it("reports the count as - when the STORED expression no longer parses", async () => {
143
+ // Reachable: the blind spot this task names is a writer that bypasses the
144
+ // tool. A throw here would make a cron written that way unfixable through
145
+ // the tool that exists to fix it.
146
+ storedRow = row({ recurrence: "not a cron" });
147
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "0 * * * *" });
148
+ expect(recurrenceLine()).toContain("firesPerDayFrom=- firesPerDayTo=24");
149
+ });
150
+ it("writes nothing when the id matches no :Event", async () => {
151
+ storedRow = null;
152
+ await expect(scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "*/15 * * * *" })).rejects.toThrow();
153
+ expect(recurrenceLine()).toBeUndefined();
154
+ });
155
+ });
156
+ describe("agentBearing on the recurrence-changed line (Task 2380)", () => {
157
+ it("reads the stored row when the call does not touch dispatch", async () => {
158
+ storedRow = row({ agentChannel: "whatsapp", agentDestination: "admin", agentPrompt: "sweep" });
159
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "*/15 * * * *" });
160
+ expect(recurrenceLine()).toContain("agentBearing=true");
161
+ });
162
+ it("is false on a stored row carrying only part of a dispatch", async () => {
163
+ storedRow = row({ agentChannel: "whatsapp", agentDestination: "admin", agentPrompt: null });
164
+ await scheduleUpdate({ accountId: ACCOUNT_ID, eventId: EVENT_ID, recurrence: "*/15 * * * *" });
165
+ expect(recurrenceLine()).toContain("agentBearing=false");
166
+ });
167
+ it("is false when the same call sets an action, which clears the dispatch", async () => {
168
+ // The action branch writes agentChannel/Destination/Prompt to null, so a row
169
+ // that was agent-bearing before this call is not agent-bearing after it.
170
+ // Reading the stored triple alone would report the new rate as costing model
171
+ // turns when it will cost headless tool calls.
172
+ // The action branch resolves the plugin directory on disk before writing.
173
+ const platformRoot = join(mkdtempSync(join(tmpdir(), "sched-rec-")), "platform");
174
+ mkdirSync(join(platformRoot, "plugins", "scheduling"), { recursive: true });
175
+ process.env.PLATFORM_ROOT = platformRoot;
176
+ storedRow = row({ agentChannel: "whatsapp", agentDestination: "admin", agentPrompt: "sweep" });
177
+ await scheduleUpdate({
178
+ accountId: ACCOUNT_ID,
179
+ eventId: EVENT_ID,
180
+ recurrence: "*/15 * * * *",
181
+ action: { plugin: "scheduling", tool: "schedule-list" },
182
+ });
183
+ expect(recurrenceLine()).toContain("agentBearing=false");
184
+ });
185
+ it("still reads the stored triple when the same call CLEARS an action", async () => {
186
+ // `action: null` clears only the action's three properties; the agent fields
187
+ // are untouched, so the row keeps whatever dispatch it had.
188
+ storedRow = row({ agentChannel: "whatsapp", agentDestination: "admin", agentPrompt: "sweep" });
189
+ await scheduleUpdate({
190
+ accountId: ACCOUNT_ID,
191
+ eventId: EVENT_ID,
192
+ recurrence: "*/15 * * * *",
193
+ action: null,
194
+ });
195
+ expect(recurrenceLine()).toContain("agentBearing=true");
196
+ });
197
+ it("is false when the same call clears the dispatch", async () => {
198
+ storedRow = row({ agentChannel: "whatsapp", agentDestination: "admin", agentPrompt: "sweep" });
199
+ await scheduleUpdate({
200
+ accountId: ACCOUNT_ID,
201
+ eventId: EVENT_ID,
202
+ recurrence: "*/15 * * * *",
203
+ agentDispatch: null,
204
+ });
205
+ expect(recurrenceLine()).toContain("agentBearing=false");
206
+ });
207
+ });
208
+ //# sourceMappingURL=schedule-update-recurrence-record.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-update-recurrence-record.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/schedule-update-recurrence-record.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Session } from "neo4j-driver";
2
+ import { type ProviderCall } from "../lib/connector-freebusy.js";
2
3
  export type ConnectorKind = "google" | "m365" | "none";
3
4
  export interface BusyInterval {
4
5
  start: string;
@@ -15,7 +16,7 @@ export interface SyncResult {
15
16
  }
16
17
  /**
17
18
  * Wholesale-replace the account's :ConnectorBusy nodes with the busy intervals
18
- * the admin turn read from its calendar connector. Delete-then-insert so an
19
+ * its calendar connector reported. Delete-then-insert so an
19
20
  * upstream-deleted connector event stops blocking on the next sync, and a
20
21
  * deauthorised connector (connector='none', busy=[]) clears all blocks.
21
22
  *
@@ -25,7 +26,30 @@ export interface SyncResult {
25
26
  * busy time as an open slot), and a mid-write failure rolls back to the prior
26
27
  * complete set rather than leaving a partial one.
27
28
  *
28
- * The LLM read the connector; this write and the counts are deterministic.
29
+ * Task 2381 the read is deterministic too now. `resolveAndSyncConnectorBusy`
30
+ * below resolves the connector and reads it without a model turn; a caller that
31
+ * has already read the intervals still calls this directly.
29
32
  */
30
33
  export declare function syncConnectorBusy(session: Session, accountId: string, input: ConnectorBusyInput): Promise<SyncResult>;
34
+ export interface ResolveAndSyncOptions {
35
+ accountsDir: string;
36
+ platformRoot: string;
37
+ now: Date;
38
+ call: ProviderCall;
39
+ windowDays?: number;
40
+ }
41
+ /**
42
+ * Task 2381 — read the account's own connector, then sync what it returned.
43
+ *
44
+ * This is the branch that takes the model out of the routine. The connector is
45
+ * resolved from the account's authorised token directories rather than chosen by
46
+ * a model reading a prompt, and the window is a constant rather than a sentence
47
+ * re-interpreted on every fire.
48
+ *
49
+ * A failed read throws BEFORE `syncConnectorBusy` is reached, so the stored busy
50
+ * set survives a transient provider outage. `connector='none'` is NOT a failure:
51
+ * it syncs an empty set, which is how a deauthorised connector's stale blocks are
52
+ * cleared, and it is the case the routine's prompt covers today.
53
+ */
54
+ export declare function resolveAndSyncConnectorBusy(session: Session, accountId: string, opts: ResolveAndSyncOptions): Promise<SyncResult>;
31
55
  //# sourceMappingURL=schedule-connector-busy-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-connector-busy-sync.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-connector-busy-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,UAAU,CAAC,CAsBrB"}
1
+ {"version":3,"file":"schedule-connector-busy-sync.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-connector-busy-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,UAAU,CAAC,CAsBrB;AAMD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,IAAI,CAAC;IACV,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,UAAU,CAAC,CA+BrB"}
@@ -1,3 +1,5 @@
1
+ import { join } from "node:path";
2
+ import { readConnectorBusy, resolveConnector, } from "../lib/connector-freebusy.js";
1
3
  /** A busy interval is valid iff both ends parse as ISO and start < end. */
2
4
  function isValidInterval(iv) {
3
5
  const s = Date.parse(iv.start);
@@ -6,7 +8,7 @@ function isValidInterval(iv) {
6
8
  }
7
9
  /**
8
10
  * Wholesale-replace the account's :ConnectorBusy nodes with the busy intervals
9
- * the admin turn read from its calendar connector. Delete-then-insert so an
11
+ * its calendar connector reported. Delete-then-insert so an
10
12
  * upstream-deleted connector event stops blocking on the next sync, and a
11
13
  * deauthorised connector (connector='none', busy=[]) clears all blocks.
12
14
  *
@@ -16,7 +18,9 @@ function isValidInterval(iv) {
16
18
  * busy time as an open slot), and a mid-write failure rolls back to the prior
17
19
  * complete set rather than leaving a partial one.
18
20
  *
19
- * The LLM read the connector; this write and the counts are deterministic.
21
+ * Task 2381 the read is deterministic too now. `resolveAndSyncConnectorBusy`
22
+ * below resolves the connector and reads it without a model turn; a caller that
23
+ * has already read the intervals still calls this directly.
20
24
  */
21
25
  export async function syncConnectorBusy(session, accountId, input) {
22
26
  const now = new Date().toISOString();
@@ -38,4 +42,49 @@ export async function syncConnectorBusy(session, accountId, input) {
38
42
  });
39
43
  return { connector: input.connector, busyBlocks: input.busy.length, reflected: valid.length };
40
44
  }
45
+ /** The window the booking page publishes. Fixed here rather than restated in an
46
+ * agent prompt on every fire. */
47
+ const DEFAULT_WINDOW_DAYS = 15;
48
+ /**
49
+ * Task 2381 — read the account's own connector, then sync what it returned.
50
+ *
51
+ * This is the branch that takes the model out of the routine. The connector is
52
+ * resolved from the account's authorised token directories rather than chosen by
53
+ * a model reading a prompt, and the window is a constant rather than a sentence
54
+ * re-interpreted on every fire.
55
+ *
56
+ * A failed read throws BEFORE `syncConnectorBusy` is reached, so the stored busy
57
+ * set survives a transient provider outage. `connector='none'` is NOT a failure:
58
+ * it syncs an empty set, which is how a deauthorised connector's stale blocks are
59
+ * cleared, and it is the case the routine's prompt covers today.
60
+ */
61
+ export async function resolveAndSyncConnectorBusy(session, accountId, opts) {
62
+ const startedMs = opts.now.getTime();
63
+ const days = opts.windowDays ?? DEFAULT_WINDOW_DAYS;
64
+ const { connector, skipped } = resolveConnector(join(opts.accountsDir, accountId));
65
+ let busy = [];
66
+ if (connector !== "none") {
67
+ try {
68
+ busy = await readConnectorBusy({
69
+ connector,
70
+ platformRoot: opts.platformRoot,
71
+ accountId,
72
+ from: opts.now.toISOString(),
73
+ to: new Date(startedMs + days * 24 * 60 * 60 * 1000).toISOString(),
74
+ call: opts.call,
75
+ });
76
+ }
77
+ catch (err) {
78
+ // `synced=false` is stated because the whole point of this branch is that
79
+ // it does not write: wiping a booking page's availability on a transient
80
+ // provider failure is worse than not syncing at all.
81
+ console.error(`[connector-busy-sync] op=read-failed connector=${connector} ` +
82
+ `detail=${JSON.stringify(err instanceof Error ? err.message : String(err))} synced=false`);
83
+ throw err;
84
+ }
85
+ }
86
+ console.error(`[connector-busy-sync] op=resolved connector=${connector} source=account-auth days=${days} ` +
87
+ `intervals=${busy.length} skipped=${skipped ?? "-"} ms=${Date.now() - startedMs}`);
88
+ return syncConnectorBusy(session, accountId, { connector, busy });
89
+ }
41
90
  //# sourceMappingURL=schedule-connector-busy-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-connector-busy-sync.js","sourceRoot":"","sources":["../../src/tools/schedule-connector-busy-sync.ts"],"names":[],"mappings":"AAoBA,2EAA2E;AAC3E,SAAS,eAAe,CAAC,EAAgB;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAgB,EAChB,SAAiB,EACjB,KAAyB;IAEzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,2EAA2E;IAC3E,gDAAgD;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACjG,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACtC,MAAM,EAAE,CAAC,GAAG,CAAC,0DAA0D,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACxF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,EAAE,CAAC,GAAG,CACV;;;;;;;YAOI,EACJ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"schedule-connector-busy-sync.js","sourceRoot":"","sources":["../../src/tools/schedule-connector-busy-sync.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,40 @@ export declare function validateGate(gate: EventGate, ctx: {
41
41
  hasAction: boolean;
42
42
  hasCompleteAgentDispatch: boolean;
43
43
  }): void;
44
+ /**
45
+ * Task 2383 — a waiver is a reason, not a flag.
46
+ *
47
+ * Blank is treated as absent because the whole control is a required answer: a
48
+ * `gateWaived` that accepted `""` would be a one-character bypass, and the
49
+ * stamped row would carry no record of why the exception was taken.
50
+ */
51
+ export declare function normaliseGateWaiver(raw: string | undefined): string | undefined;
52
+ /**
53
+ * Task 2383 — the two questions, asked separately.
54
+ *
55
+ * `PLUGIN.md` framed one question over two decisions: whether to run at all, and
56
+ * what to say once it runs. An author with a conditional sweep answers yes,
57
+ * because composing the message does need a model, and never notices that the
58
+ * check does not. All 16 live bespoke routines follow that shape and none is
59
+ * gated; one cost 13.41M output tokens in a week on fires that sent nothing.
60
+ *
61
+ * Prose in a doc drifts and cannot be measured, so the question is a required
62
+ * argument instead: either a `gate` the dispatcher evaluates, or an explicit
63
+ * `gateWaived` reason stamped on the row and counted by `auditGateClassification`.
64
+ * Both are answers; only silence is refused.
65
+ *
66
+ * Recurring only. A one-time agent event is never gated — `check-due-events`
67
+ * passes null on that path unconditionally, because the row is already `due` by
68
+ * selection time and a skip there drops the routine for good — so asking its
69
+ * author about a check the dispatcher will never run would teach the wrong rule
70
+ * and store properties nothing reads.
71
+ */
72
+ export declare function requireGateAnswer(ctx: {
73
+ hasRecurrence: boolean;
74
+ hasCompleteAgentDispatch: boolean;
75
+ hasGate: boolean;
76
+ waiver: string | undefined;
77
+ }): void;
44
78
  export interface ScheduleEventParams {
45
79
  accountId: string;
46
80
  name: string;
@@ -63,6 +97,12 @@ export interface ScheduleEventParams {
63
97
  action?: EventAction;
64
98
  agentDispatch?: AgentDispatch;
65
99
  gate?: EventGate;
100
+ /**
101
+ * Task 2383 — the declared exception to the gate rule. Stored trimmed on
102
+ * `e.gateWaived`, so every deliberate ungated routine leaves a readable record
103
+ * and the standing census can count them.
104
+ */
105
+ gateWaived?: string;
66
106
  attendees?: ScheduleAttendee[];
67
107
  createdBy: CreatedBy;
68
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-event.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-event.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,8CAA8C,CAAC;AAGtD,OAAO,EAAyB,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE/G,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,GAAG,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,wBAAwB,EAAE,OAAO,CAAA;CAAE,GAC7D,IAAI,CAcN;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqO7F"}
1
+ {"version":3,"file":"schedule-event.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-event.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,8CAA8C,CAAC;AAGtD,OAAO,EAAyB,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE/G,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,GAAG,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,wBAAwB,EAAE,OAAO,CAAA;CAAE,GAC7D,IAAI,CAcN;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG/E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,wBAAwB,EAAE,OAAO,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,GAAG,IAAI,CAUP;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkQ7F"}
@@ -35,8 +35,50 @@ export function validateGate(gate, ctx) {
35
35
  throw new Error("A gate requires a complete agentDispatch (channel, destination and prompt) — the gate is only evaluated on the agent dispatch path.");
36
36
  }
37
37
  }
38
+ /**
39
+ * Task 2383 — a waiver is a reason, not a flag.
40
+ *
41
+ * Blank is treated as absent because the whole control is a required answer: a
42
+ * `gateWaived` that accepted `""` would be a one-character bypass, and the
43
+ * stamped row would carry no record of why the exception was taken.
44
+ */
45
+ export function normaliseGateWaiver(raw) {
46
+ const trimmed = raw?.trim();
47
+ return trimmed ? trimmed : undefined;
48
+ }
49
+ /**
50
+ * Task 2383 — the two questions, asked separately.
51
+ *
52
+ * `PLUGIN.md` framed one question over two decisions: whether to run at all, and
53
+ * what to say once it runs. An author with a conditional sweep answers yes,
54
+ * because composing the message does need a model, and never notices that the
55
+ * check does not. All 16 live bespoke routines follow that shape and none is
56
+ * gated; one cost 13.41M output tokens in a week on fires that sent nothing.
57
+ *
58
+ * Prose in a doc drifts and cannot be measured, so the question is a required
59
+ * argument instead: either a `gate` the dispatcher evaluates, or an explicit
60
+ * `gateWaived` reason stamped on the row and counted by `auditGateClassification`.
61
+ * Both are answers; only silence is refused.
62
+ *
63
+ * Recurring only. A one-time agent event is never gated — `check-due-events`
64
+ * passes null on that path unconditionally, because the row is already `due` by
65
+ * selection time and a skip there drops the routine for good — so asking its
66
+ * author about a check the dispatcher will never run would teach the wrong rule
67
+ * and store properties nothing reads.
68
+ */
69
+ export function requireGateAnswer(ctx) {
70
+ if (!ctx.hasRecurrence || !ctx.hasCompleteAgentDispatch)
71
+ return;
72
+ if (ctx.hasGate || ctx.waiver)
73
+ return;
74
+ throw new Error("A recurring agentDispatch must answer whether it should run at all, not only what to say once it runs. " +
75
+ "Pass a 'gate' — a tool the dispatcher calls headlessly before spawning the turn, skipping the fire when it " +
76
+ "answers hasWork:false — for anything conditional. Or pass 'gateWaived: \"<reason>\"' when the routine has " +
77
+ "judgement to apply on every fire, such as a daily briefing or a weekly digest; the reason is stored on the " +
78
+ "event and counted by the standing gate-classification check.");
79
+ }
38
80
  export async function scheduleEvent(params) {
39
- const { accountId, name, description, startDate, endDate, location, recurrence, timezone, accountTimezone, sessionKey, action, agentDispatch, gate, attendees, createdBy, } = params;
81
+ const { accountId, name, description, startDate, endDate, location, recurrence, timezone, accountTimezone, sessionKey, action, agentDispatch, gate, gateWaived, attendees, createdBy, } = params;
40
82
  // Decide the bucket up front. A genuine meeting (a resolvable counterparty, or
41
83
  // a bounded start+end with no trigger) lands as a :Meeting; a recurrence/action/
42
84
  // agentDispatch or a bare one-time reminder lands as an :Event.
@@ -76,15 +118,28 @@ export async function scheduleEvent(params) {
76
118
  if (agentDispatch) {
77
119
  validateAgentDispatch(accountId, agentDispatch);
78
120
  }
121
+ const hasCompleteAgentDispatch = Boolean(agentDispatch?.channel && agentDispatch?.destination && agentDispatch?.prompt);
79
122
  // Task 2378 — refused before the action block below, so a call setting both a
80
123
  // gate and an action is told about the gate rather than about an incidental
81
124
  // plugin-directory miss.
82
125
  if (gate) {
83
- validateGate(gate, {
84
- hasAction: Boolean(action),
85
- hasCompleteAgentDispatch: Boolean(agentDispatch?.channel && agentDispatch?.destination && agentDispatch?.prompt),
86
- });
126
+ validateGate(gate, { hasAction: Boolean(action), hasCompleteAgentDispatch });
127
+ }
128
+ // Task 2383 the four states an agent-bearing creation can be in, decided
129
+ // once and reported on both sides of the refusal below.
130
+ const waiver = normaliseGateWaiver(gateWaived);
131
+ const gateState = !recurrence ? "one-time" : gate ? "yes" : waiver ? "waived" : "refused";
132
+ // A refused write never becomes a row, so this line is its only record. It is
133
+ // emitted before the throw and carries no event id, because none is minted.
134
+ if (hasCompleteAgentDispatch && gateState === "refused") {
135
+ console.error("[schedule-authoring] op=create eventId=- mode=agent gate=refused reason=-");
87
136
  }
137
+ requireGateAnswer({
138
+ hasRecurrence: Boolean(recurrence),
139
+ hasCompleteAgentDispatch,
140
+ hasGate: Boolean(gate),
141
+ waiver,
142
+ });
88
143
  if (action) {
89
144
  if (!action.plugin || !action.tool) {
90
145
  throw new Error("Action requires both 'plugin' and 'tool' fields");
@@ -184,6 +239,14 @@ export async function scheduleEvent(params) {
184
239
  props.gateArgs = JSON.stringify(gate.args);
185
240
  }
186
241
  }
242
+ if (waiver)
243
+ props.gateWaived = waiver;
244
+ // Task 2383 — the accepted twin of the refusal line above, emitted where the
245
+ // event id exists so a creation can be correlated with its later fires.
246
+ if (hasCompleteAgentDispatch) {
247
+ console.error(`[schedule-authoring] op=create eventId=${eventId.slice(0, 8)} mode=agent ` +
248
+ `gate=${gateState} reason=${waiver ?? "-"}`);
249
+ }
187
250
  const parts = [`Event: ${name}`];
188
251
  if (description)
189
252
  parts.push(description);
@@ -198,6 +261,8 @@ export async function scheduleEvent(params) {
198
261
  parts.push(`agent dispatch: ${agentDispatch.channel} → ${agentDispatch.destination}`);
199
262
  if (gate)
200
263
  parts.push(`gate: ${gate.plugin}/${gate.tool}`);
264
+ if (waiver)
265
+ parts.push(`gate waived: ${waiver}`);
201
266
  const embedding = await computeEmbedding(parts.join(" — "));
202
267
  if (embedding.length > 0)
203
268
  props.embedding = embedding;
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-event.js","sourceRoot":"","sources":["../../src/tools/schedule-event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule-event.js","sourceRoot":"","sources":["../../src/tools/schedule-event.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-update.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMpF,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIjF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,sEAAuE,CAAC;AAEnG,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,UAAU,CACxB,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACrF,GAAG,EAAE,IAAI,GACR,UAAU,CAmCZ;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+hBhG"}
1
+ {"version":3,"file":"schedule-update.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAOpF,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIjF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,sEAAuE,CAAC;AAEnG,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,UAAU,CACxB,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACrF,GAAG,EAAE,IAAI,GACR,UAAU,CAmCZ;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqmBhG"}