@rubytech/create-sitedesk-code 0.1.518 → 0.1.520

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 (346) hide show
  1. package/dist/__tests__/edge-bind-template-wiring.test.js +37 -0
  2. package/dist/__tests__/samba-provision.test.js +103 -1
  3. package/dist/index.js +19 -4
  4. package/dist/samba-provision.js +72 -0
  5. package/package.json +1 -1
  6. package/payload/platform/docs/superpowers/plans/2026-07-28-task-2097-email-signature-set.md +65 -0
  7. package/payload/platform/docs/superpowers/specs/2026-07-28-task-2097-email-signature-set-design.md +155 -0
  8. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +69 -19
  9. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
  10. package/payload/platform/plugins/cloudflare/bin/portal-assemble.mjs +187 -0
  11. package/payload/platform/plugins/cloudflare/bin/portal-enrol.mjs +46 -5
  12. package/payload/platform/plugins/cloudflare/mcp/__tests__/auth-route.test.ts +19 -7
  13. package/payload/platform/plugins/cloudflare/mcp/__tests__/authorize.test.ts +154 -38
  14. package/payload/platform/plugins/cloudflare/mcp/__tests__/file-routes.test.ts +100 -29
  15. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-assemble.test.ts +143 -0
  16. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-delete-withdraw.test.ts +12 -5
  17. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-directory-listing.test.ts +15 -3
  18. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-enrol.test.ts +105 -11
  19. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-indexed-download.test.ts +15 -2
  20. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-moved-download.test.ts +9 -5
  21. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-schema-shape.test.ts +47 -5
  22. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-session-grant.test.ts +26 -2
  23. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-target.test.ts +12 -4
  24. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-upload-multipart.test.ts +23 -15
  25. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-upload-target.test.ts +23 -15
  26. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-uploads-listing.test.ts +8 -0
  27. package/payload/platform/plugins/cloudflare/mcp/__tests__/skill-contract.test.ts +23 -6
  28. package/payload/platform/plugins/cloudflare/mcp/__tests__/upload-route.test.ts +36 -20
  29. package/payload/platform/plugins/cloudflare/skills/data-portal/SKILL.md +85 -22
  30. package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +47 -7
  31. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/authorize.ts +27 -18
  32. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/ratelimit.ts +10 -3
  33. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/session.ts +27 -11
  34. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/target.ts +18 -9
  35. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/types.ts +16 -0
  36. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/auth.ts +16 -4
  37. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/delete.ts +26 -11
  38. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/download.ts +14 -10
  39. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/files.ts +13 -9
  40. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/upload.ts +42 -22
  41. package/payload/platform/plugins/cloudflare/skills/data-portal/template/wrangler.toml +17 -4
  42. package/payload/platform/plugins/docs/references/admin-ui.md +43 -5
  43. package/payload/platform/plugins/docs/references/samba.md +2 -0
  44. package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
  45. package/payload/platform/plugins/email/PLUGIN.md +20 -1
  46. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-list-tool.test.d.ts +2 -0
  47. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-list-tool.test.d.ts.map +1 -0
  48. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-list-tool.test.js +142 -0
  49. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-list-tool.test.js.map +1 -0
  50. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-list.test.d.ts +2 -0
  51. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-list.test.d.ts.map +1 -0
  52. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-list.test.js +153 -0
  53. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-list.test.js.map +1 -0
  54. package/payload/platform/plugins/email/mcp/dist/__tests__/email-signature-set.test.d.ts +2 -0
  55. package/payload/platform/plugins/email/mcp/dist/__tests__/email-signature-set.test.d.ts.map +1 -0
  56. package/payload/platform/plugins/email/mcp/dist/__tests__/email-signature-set.test.js +203 -0
  57. package/payload/platform/plugins/email/mcp/dist/__tests__/email-signature-set.test.js.map +1 -0
  58. package/payload/platform/plugins/email/mcp/dist/index.js +69 -0
  59. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  60. package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts.map +1 -1
  61. package/payload/platform/plugins/email/mcp/dist/lib/compose.js +5 -7
  62. package/payload/platform/plugins/email/mcp/dist/lib/compose.js.map +1 -1
  63. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +42 -0
  64. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
  65. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +76 -0
  66. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
  67. package/payload/platform/plugins/email/mcp/dist/lib/signature.d.ts +38 -0
  68. package/payload/platform/plugins/email/mcp/dist/lib/signature.d.ts.map +1 -1
  69. package/payload/platform/plugins/email/mcp/dist/lib/signature.js +67 -2
  70. package/payload/platform/plugins/email/mcp/dist/lib/signature.js.map +1 -1
  71. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-list.d.ts +10 -0
  72. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-list.d.ts.map +1 -0
  73. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-list.js +73 -0
  74. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-list.js.map +1 -0
  75. package/payload/platform/plugins/email/mcp/dist/tools/email-signature-set.d.ts +18 -0
  76. package/payload/platform/plugins/email/mcp/dist/tools/email-signature-set.d.ts.map +1 -0
  77. package/payload/platform/plugins/email/mcp/dist/tools/email-signature-set.js +38 -0
  78. package/payload/platform/plugins/email/mcp/dist/tools/email-signature-set.js.map +1 -0
  79. package/payload/platform/plugins/email/references/email-reference.md +14 -2
  80. package/payload/platform/plugins/email/skills/email-composition/SKILL.md +10 -0
  81. package/payload/platform/plugins/email/skills/email-signature/SKILL.md +61 -0
  82. package/payload/platform/plugins/scheduling/PLUGIN.md +8 -0
  83. package/payload/platform/plugins/scheduling/mcp/dist/index.js +26 -15
  84. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  85. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.d.ts +2 -0
  86. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.d.ts.map +1 -0
  87. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js +48 -0
  88. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js.map +1 -0
  89. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts +24 -0
  90. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts.map +1 -0
  91. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js +33 -0
  92. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js.map +1 -0
  93. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +22 -1
  94. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
  95. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-cancel-meeting.test.d.ts +2 -0
  96. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-cancel-meeting.test.d.ts.map +1 -0
  97. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-cancel-meeting.test.js +30 -0
  98. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-cancel-meeting.test.js.map +1 -0
  99. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-meeting.test.d.ts +2 -0
  100. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-meeting.test.d.ts.map +1 -0
  101. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-meeting.test.js +43 -0
  102. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-meeting.test.js.map +1 -0
  103. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.d.ts +2 -0
  104. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.d.ts.map +1 -0
  105. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js +87 -0
  106. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js.map +1 -0
  107. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-meeting.test.d.ts +2 -0
  108. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-meeting.test.d.ts.map +1 -0
  109. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-meeting.test.js +48 -0
  110. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-meeting.test.js.map +1 -0
  111. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -1
  112. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +14 -1
  113. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -1
  114. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +4 -1
  115. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
  116. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +39 -2
  117. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
  118. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +4 -1
  119. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -1
  120. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +50 -1
  121. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -1
  122. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  123. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +43 -1
  124. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  125. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +7 -3
  126. package/payload/platform/scripts/check-no-esm-require.mjs +5 -3
  127. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  128. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +2 -0
  129. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  130. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts.map +1 -1
  131. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js +5 -3
  132. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js.map +1 -1
  133. package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
  134. package/payload/platform/services/telegram-channel/dist/instructions.js +13 -10
  135. package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
  136. package/payload/platform/services/webchat-channel/dist/instructions.d.ts +6 -2
  137. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
  138. package/payload/platform/services/webchat-channel/dist/instructions.js +66 -32
  139. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
  140. package/payload/platform/services/webchat-channel/dist/notification.d.ts +2 -1
  141. package/payload/platform/services/webchat-channel/dist/notification.d.ts.map +1 -1
  142. package/payload/platform/services/webchat-channel/dist/notification.js +11 -4
  143. package/payload/platform/services/webchat-channel/dist/notification.js.map +1 -1
  144. package/payload/platform/services/webchat-channel/dist/server.d.ts.map +1 -1
  145. package/payload/platform/services/webchat-channel/dist/server.js +30 -14
  146. package/payload/platform/services/webchat-channel/dist/server.js.map +1 -1
  147. package/payload/platform/services/webchat-channel/dist/turn-follow.d.ts.map +1 -1
  148. package/payload/platform/services/webchat-channel/dist/turn-follow.js +11 -5
  149. package/payload/platform/services/webchat-channel/dist/turn-follow.js.map +1 -1
  150. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +6 -3
  151. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  152. package/payload/platform/services/whatsapp-channel/dist/notification.js +9 -5
  153. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  154. package/payload/platform/services/whatsapp-channel/dist/server.d.ts.map +1 -1
  155. package/payload/platform/services/whatsapp-channel/dist/server.js +6 -1
  156. package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
  157. package/payload/platform/services/whatsapp-channel/dist/targets.d.ts.map +1 -1
  158. package/payload/platform/services/whatsapp-channel/dist/targets.js +8 -2
  159. package/payload/platform/services/whatsapp-channel/dist/targets.js.map +1 -1
  160. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  161. package/payload/platform/templates/systemd/edge.service.template +1 -1
  162. package/payload/server/chunk-PXNY2TAP.js +1980 -0
  163. package/payload/server/chunk-TIIWMF5G.js +4837 -0
  164. package/payload/server/{chunk-S6HYTIU3.js → chunk-UX2FRNO7.js} +72 -2031
  165. package/payload/server/manager-B6OFOXSW.js +61 -0
  166. package/payload/server/maxy-edge.js +5 -3
  167. package/payload/server/package.json +2 -1
  168. package/payload/server/public/activity.html +5 -5
  169. package/payload/server/public/agents.html +4 -4
  170. package/payload/server/public/assets/AdminLoginScreens-SW7mEMcP.js +1 -0
  171. package/payload/server/public/assets/AdminLoginScreens-SW7mEMcP.js.br +0 -0
  172. package/payload/server/public/assets/AdminLoginScreens-SW7mEMcP.js.gz +0 -0
  173. package/payload/server/public/assets/AdminShell-Djg6ndne.js +2 -0
  174. package/payload/server/public/assets/AdminShell-Djg6ndne.js.br +0 -0
  175. package/payload/server/public/assets/AdminShell-Djg6ndne.js.gz +0 -0
  176. package/payload/server/public/assets/{activity-BE9gv5xL.js → activity-sqbyX0pX.js} +1 -1
  177. package/payload/server/public/assets/activity-sqbyX0pX.js.br +0 -0
  178. package/payload/server/public/assets/activity-sqbyX0pX.js.gz +0 -0
  179. package/payload/server/public/assets/admin-D9Bt47GY.js +1 -0
  180. package/payload/server/public/assets/admin-D9Bt47GY.js.br +0 -0
  181. package/payload/server/public/assets/admin-D9Bt47GY.js.gz +0 -0
  182. package/payload/server/public/assets/{agents-B-x0Ai2v.js → agents-BFYM5EDA.js} +1 -1
  183. package/payload/server/public/assets/agents-BFYM5EDA.js.br +0 -0
  184. package/payload/server/public/assets/agents-BFYM5EDA.js.gz +0 -0
  185. package/payload/server/public/assets/{browser-ZEQUkPfs.js → browser-DP5GZe4G.js} +1 -1
  186. package/payload/server/public/assets/browser-DP5GZe4G.js.br +0 -0
  187. package/payload/server/public/assets/browser-DP5GZe4G.js.gz +0 -0
  188. package/payload/server/public/assets/calendar-BKaemLDG.js +1 -0
  189. package/payload/server/public/assets/calendar-BKaemLDG.js.br +0 -0
  190. package/payload/server/public/assets/calendar-BKaemLDG.js.gz +0 -0
  191. package/payload/server/public/assets/chat-DPhT6urD.js +1 -0
  192. package/payload/server/public/assets/chat-DPhT6urD.js.br +1 -0
  193. package/payload/server/public/assets/chat-DPhT6urD.js.gz +0 -0
  194. package/payload/server/public/assets/chevron-left-BSdXvJcH.js +1 -0
  195. package/payload/server/public/assets/chevron-right-DI7vI3IB.js +1 -0
  196. package/payload/server/public/assets/chevron-right-DI7vI3IB.js.br +0 -0
  197. package/payload/server/public/assets/clock-YUTPXZH5.js +1 -0
  198. package/payload/server/public/assets/clock-YUTPXZH5.js.br +0 -0
  199. package/payload/server/public/assets/clock-YUTPXZH5.js.gz +0 -0
  200. package/payload/server/public/assets/data-CfjttTvR.js +1 -0
  201. package/payload/server/public/assets/data-CfjttTvR.js.br +2 -0
  202. package/payload/server/public/assets/data-CfjttTvR.js.gz +0 -0
  203. package/payload/server/public/assets/{file-text-BTV6EdBv.js → file-text-BKK7R-k_.js} +1 -1
  204. package/payload/server/public/assets/file-text-BKK7R-k_.js.br +0 -0
  205. package/payload/server/public/assets/file-text-BKK7R-k_.js.gz +0 -0
  206. package/payload/server/public/assets/{graph-hD_gPbbL.js → graph-FuxYySjK.js} +3 -3
  207. package/payload/server/public/assets/graph-FuxYySjK.js.br +0 -0
  208. package/payload/server/public/assets/graph-FuxYySjK.js.gz +0 -0
  209. package/payload/server/public/assets/{graph-labels-CY1T19PY.js → graph-labels-Cip6fmKK.js} +1 -1
  210. package/payload/server/public/assets/graph-labels-Cip6fmKK.js.br +0 -0
  211. package/payload/server/public/assets/graph-labels-Cip6fmKK.js.gz +0 -0
  212. package/payload/server/public/assets/{maximize-2-BFV9VKHO.js → maximize-2-D79AhVDo.js} +1 -1
  213. package/payload/server/public/assets/maximize-2-D79AhVDo.js.br +0 -0
  214. package/payload/server/public/assets/maximize-2-D79AhVDo.js.gz +0 -0
  215. package/payload/server/public/assets/operator-BPAfgFhP.js +1 -0
  216. package/payload/server/public/assets/operator-BPAfgFhP.js.br +0 -0
  217. package/payload/server/public/assets/operator-BPAfgFhP.js.gz +0 -0
  218. package/payload/server/public/assets/page--78CbdFs.js +32 -0
  219. package/payload/server/public/assets/page--78CbdFs.js.br +0 -0
  220. package/payload/server/public/assets/page--78CbdFs.js.gz +0 -0
  221. package/payload/server/public/assets/page-BqEyS0W4.js +1 -0
  222. package/payload/server/public/assets/page-BqEyS0W4.js.br +0 -0
  223. package/payload/server/public/assets/page-BqEyS0W4.js.gz +0 -0
  224. package/payload/server/public/assets/{public-D6Tnj5LU.js → public-D1xs3FzD.js} +1 -1
  225. package/payload/server/public/assets/public-D1xs3FzD.js.br +0 -0
  226. package/payload/server/public/assets/public-D1xs3FzD.js.gz +0 -0
  227. package/payload/server/public/assets/{rotate-ccw-C-RfQUza.js → rotate-ccw-CcU_XD8B.js} +1 -1
  228. package/payload/server/public/assets/rotate-ccw-CcU_XD8B.js.br +0 -0
  229. package/payload/server/public/assets/rotate-ccw-CcU_XD8B.js.gz +0 -0
  230. package/payload/server/public/assets/{routines-NIMElUzV.js → routines-CA7D0myr.js} +1 -1
  231. package/payload/server/public/assets/routines-CA7D0myr.js.br +0 -0
  232. package/payload/server/public/assets/routines-CA7D0myr.js.gz +0 -0
  233. package/payload/server/public/assets/{skills-N0ZlHosx.js → skills-CfVPPSxO.js} +1 -1
  234. package/payload/server/public/assets/skills-CfVPPSxO.js.br +0 -0
  235. package/payload/server/public/assets/skills-CfVPPSxO.js.gz +0 -0
  236. package/payload/server/public/assets/tasks-DgieyZqz.js +1 -0
  237. package/payload/server/public/assets/tasks-DgieyZqz.js.br +0 -0
  238. package/payload/server/public/assets/tasks-DgieyZqz.js.gz +0 -0
  239. package/payload/server/public/assets/{time-entry-format-jQxlRPoI.js → time-entry-format-IFqinQJj.js} +1 -1
  240. package/payload/server/public/assets/time-entry-format-IFqinQJj.js.br +0 -0
  241. package/payload/server/public/assets/time-entry-format-IFqinQJj.js.gz +0 -0
  242. package/payload/server/public/assets/{triangle-alert-wUS4rpzv.js → triangle-alert-C5vH__sq.js} +1 -1
  243. package/payload/server/public/assets/triangle-alert-C5vH__sq.js.br +0 -0
  244. package/payload/server/public/assets/triangle-alert-C5vH__sq.js.gz +0 -0
  245. package/payload/server/public/assets/{useCopyFeedback-BRix_wIl.js → useCopyFeedback-BeL2gPl6.js} +1 -1
  246. package/payload/server/public/assets/useCopyFeedback-BeL2gPl6.js.br +0 -0
  247. package/payload/server/public/assets/useCopyFeedback-BeL2gPl6.js.gz +0 -0
  248. package/payload/server/public/assets/useSubAccountSwitcher-CH9qm2Ad.js +14 -0
  249. package/payload/server/public/assets/useSubAccountSwitcher-CH9qm2Ad.js.br +0 -0
  250. package/payload/server/public/assets/useSubAccountSwitcher-CH9qm2Ad.js.gz +0 -0
  251. package/payload/server/public/assets/useSubAccountSwitcher-DLqUQzOl.css +1 -0
  252. package/payload/server/public/assets/useSubAccountSwitcher-DLqUQzOl.css.br +0 -0
  253. package/payload/server/public/assets/useSubAccountSwitcher-DLqUQzOl.css.gz +0 -0
  254. package/payload/server/public/assets/useVoiceRecorder-Cpw3aOSt.js +2 -0
  255. package/payload/server/public/assets/useVoiceRecorder-Cpw3aOSt.js.br +0 -0
  256. package/payload/server/public/assets/useVoiceRecorder-Cpw3aOSt.js.gz +0 -0
  257. package/payload/server/public/assets/{wrench-sDivAjhf.js → wrench-BBEup3hd.js} +1 -1
  258. package/payload/server/public/assets/wrench-BBEup3hd.js.br +0 -0
  259. package/payload/server/public/assets/wrench-BBEup3hd.js.gz +0 -0
  260. package/payload/server/public/browser.html +4 -4
  261. package/payload/server/public/calendar.html +7 -7
  262. package/payload/server/public/chat.html +13 -13
  263. package/payload/server/public/data.html +11 -11
  264. package/payload/server/public/graph.html +9 -9
  265. package/payload/server/public/index.html +14 -14
  266. package/payload/server/public/operator.html +14 -14
  267. package/payload/server/public/public.html +13 -13
  268. package/payload/server/public/routines.html +6 -6
  269. package/payload/server/public/skills.html +5 -5
  270. package/payload/server/public/tasks.html +6 -6
  271. package/payload/server/server.js +8176 -11914
  272. package/payload/server/public/assets/AdminLoginScreens-CDpNkwkf.js +0 -1
  273. package/payload/server/public/assets/AdminLoginScreens-CDpNkwkf.js.br +0 -0
  274. package/payload/server/public/assets/AdminLoginScreens-CDpNkwkf.js.gz +0 -0
  275. package/payload/server/public/assets/AdminShell-TSa8KgID.js +0 -2
  276. package/payload/server/public/assets/AdminShell-TSa8KgID.js.br +0 -0
  277. package/payload/server/public/assets/AdminShell-TSa8KgID.js.gz +0 -0
  278. package/payload/server/public/assets/activity-BE9gv5xL.js.br +0 -0
  279. package/payload/server/public/assets/activity-BE9gv5xL.js.gz +0 -0
  280. package/payload/server/public/assets/admin-Cb0BZriv.js +0 -1
  281. package/payload/server/public/assets/admin-Cb0BZriv.js.br +0 -0
  282. package/payload/server/public/assets/admin-Cb0BZriv.js.gz +0 -0
  283. package/payload/server/public/assets/agents-B-x0Ai2v.js.br +0 -0
  284. package/payload/server/public/assets/agents-B-x0Ai2v.js.gz +0 -0
  285. package/payload/server/public/assets/browser-ZEQUkPfs.js.br +0 -0
  286. package/payload/server/public/assets/browser-ZEQUkPfs.js.gz +0 -0
  287. package/payload/server/public/assets/calendar-DsRxrW0G.js +0 -1
  288. package/payload/server/public/assets/calendar-DsRxrW0G.js.br +0 -0
  289. package/payload/server/public/assets/calendar-DsRxrW0G.js.gz +0 -0
  290. package/payload/server/public/assets/chat-BS9B9lDo.js +0 -1
  291. package/payload/server/public/assets/chat-BS9B9lDo.js.br +0 -1
  292. package/payload/server/public/assets/chat-BS9B9lDo.js.gz +0 -0
  293. package/payload/server/public/assets/chevron-left-DLtGuH6K.js +0 -1
  294. package/payload/server/public/assets/chevron-right-CY_trg5L.js +0 -1
  295. package/payload/server/public/assets/chevron-right-CY_trg5L.js.br +0 -0
  296. package/payload/server/public/assets/clock-oM5driJm.js +0 -1
  297. package/payload/server/public/assets/clock-oM5driJm.js.br +0 -0
  298. package/payload/server/public/assets/clock-oM5driJm.js.gz +0 -0
  299. package/payload/server/public/assets/data-Cio6PO0F.js +0 -1
  300. package/payload/server/public/assets/data-Cio6PO0F.js.br +0 -2
  301. package/payload/server/public/assets/data-Cio6PO0F.js.gz +0 -0
  302. package/payload/server/public/assets/file-text-BTV6EdBv.js.br +0 -0
  303. package/payload/server/public/assets/file-text-BTV6EdBv.js.gz +0 -0
  304. package/payload/server/public/assets/graph-hD_gPbbL.js.br +0 -0
  305. package/payload/server/public/assets/graph-hD_gPbbL.js.gz +0 -0
  306. package/payload/server/public/assets/graph-labels-CY1T19PY.js.br +0 -0
  307. package/payload/server/public/assets/graph-labels-CY1T19PY.js.gz +0 -0
  308. package/payload/server/public/assets/maximize-2-BFV9VKHO.js.br +0 -0
  309. package/payload/server/public/assets/maximize-2-BFV9VKHO.js.gz +0 -0
  310. package/payload/server/public/assets/operator-Dxze8CwV.js +0 -1
  311. package/payload/server/public/assets/operator-Dxze8CwV.js.br +0 -0
  312. package/payload/server/public/assets/operator-Dxze8CwV.js.gz +0 -0
  313. package/payload/server/public/assets/page-Bi86QF6_.js +0 -32
  314. package/payload/server/public/assets/page-Bi86QF6_.js.br +0 -0
  315. package/payload/server/public/assets/page-Bi86QF6_.js.gz +0 -0
  316. package/payload/server/public/assets/page-BnXly9aN.js +0 -1
  317. package/payload/server/public/assets/page-BnXly9aN.js.br +0 -0
  318. package/payload/server/public/assets/page-BnXly9aN.js.gz +0 -0
  319. package/payload/server/public/assets/public-D6Tnj5LU.js.br +0 -0
  320. package/payload/server/public/assets/public-D6Tnj5LU.js.gz +0 -0
  321. package/payload/server/public/assets/rotate-ccw-C-RfQUza.js.br +0 -0
  322. package/payload/server/public/assets/rotate-ccw-C-RfQUza.js.gz +0 -0
  323. package/payload/server/public/assets/routines-NIMElUzV.js.br +0 -0
  324. package/payload/server/public/assets/routines-NIMElUzV.js.gz +0 -0
  325. package/payload/server/public/assets/skills-N0ZlHosx.js.br +0 -0
  326. package/payload/server/public/assets/skills-N0ZlHosx.js.gz +0 -0
  327. package/payload/server/public/assets/tasks-BsB_0duv.js +0 -1
  328. package/payload/server/public/assets/tasks-BsB_0duv.js.br +0 -0
  329. package/payload/server/public/assets/tasks-BsB_0duv.js.gz +0 -0
  330. package/payload/server/public/assets/time-entry-format-jQxlRPoI.js.br +0 -0
  331. package/payload/server/public/assets/time-entry-format-jQxlRPoI.js.gz +0 -0
  332. package/payload/server/public/assets/triangle-alert-wUS4rpzv.js.br +0 -0
  333. package/payload/server/public/assets/triangle-alert-wUS4rpzv.js.gz +0 -0
  334. package/payload/server/public/assets/useCopyFeedback-BRix_wIl.js.br +0 -0
  335. package/payload/server/public/assets/useCopyFeedback-BRix_wIl.js.gz +0 -0
  336. package/payload/server/public/assets/useSubAccountSwitcher-DWMWxvYo.js +0 -14
  337. package/payload/server/public/assets/useSubAccountSwitcher-DWMWxvYo.js.br +0 -0
  338. package/payload/server/public/assets/useSubAccountSwitcher-DWMWxvYo.js.gz +0 -0
  339. package/payload/server/public/assets/useSubAccountSwitcher-UQQDcj0B.css +0 -1
  340. package/payload/server/public/assets/useSubAccountSwitcher-UQQDcj0B.css.br +0 -0
  341. package/payload/server/public/assets/useSubAccountSwitcher-UQQDcj0B.css.gz +0 -0
  342. package/payload/server/public/assets/useVoiceRecorder-1TAfCP2k.js +0 -2
  343. package/payload/server/public/assets/useVoiceRecorder-1TAfCP2k.js.br +0 -0
  344. package/payload/server/public/assets/useVoiceRecorder-1TAfCP2k.js.gz +0 -0
  345. package/payload/server/public/assets/wrench-sDivAjhf.js.br +0 -0
  346. package/payload/server/public/assets/wrench-sDivAjhf.js.gz +0 -0
@@ -0,0 +1,48 @@
1
+ // Task 2100. schedule-update matched :Event alone, so a meeting the agent had
2
+ // listed could not be edited. A meeting's editable fields mirror the admin
3
+ // Calendar PATCH; its uid is the idempotency key and is never rewritten.
4
+ import { describe, it, expect, vi } from "vitest";
5
+ const cyphers = [];
6
+ const params = [];
7
+ vi.mock("../../lib/embedding.js", () => ({ computeEmbedding: vi.fn(async () => []) }));
8
+ vi.mock("../../lib/neo4j.js", () => ({
9
+ getSession: () => ({
10
+ run: vi.fn(async (cypher, p) => {
11
+ cyphers.push(cypher);
12
+ params.push(p);
13
+ if (cypher.includes("MATCH (m:Meeting")) {
14
+ return {
15
+ records: p.id === "sched-abc" ? [{ get: () => "sched-abc" }] : [],
16
+ };
17
+ }
18
+ return { records: [] }; // no :Event with this id
19
+ }),
20
+ close: vi.fn(async () => { }),
21
+ }),
22
+ }));
23
+ import { scheduleUpdate } from "../schedule-update.js";
24
+ describe("scheduleUpdate — a meeting uid resolves (Task 2100)", () => {
25
+ it("sets the editable meeting fields and never rewrites uid", async () => {
26
+ cyphers.length = 0;
27
+ params.length = 0;
28
+ await scheduleUpdate({
29
+ eventId: "sched-abc",
30
+ accountId: "acct-1",
31
+ name: "Call with Rob (rescheduled)",
32
+ startDate: "2026-07-29T10:30:00Z",
33
+ location: "Zoom",
34
+ });
35
+ const c = cyphers.find((x) => x.includes("MATCH (m:Meeting"));
36
+ expect(c).toContain("m.title = $title");
37
+ expect(c).toContain("m.startsAt = datetime($startsAt)");
38
+ expect(c).toContain("m.location = $location");
39
+ expect(c).not.toContain("m.uid =");
40
+ });
41
+ it("says the id is a meeting when only event-shaped fields were supplied", async () => {
42
+ await expect(scheduleUpdate({ eventId: "sched-abc", accountId: "acct-1", note: "ran late" })).rejects.toThrow(/is a meeting: only name, startDate, endDate and location/);
43
+ });
44
+ it("throws when neither an event nor a meeting matches", async () => {
45
+ await expect(scheduleUpdate({ eventId: "nope", accountId: "acct-1", name: "x" })).rejects.toThrow(/not found/i);
46
+ });
47
+ });
48
+ //# sourceMappingURL=schedule-update-meeting.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-update-meeting.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/schedule-update-meeting.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-cancel.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-cancel.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;iEAI6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG;IAAE,eAAe,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAMvD;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhF"}
1
+ {"version":3,"file":"schedule-cancel.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-cancel.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;iEAI6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG;IAAE,eAAe,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAMvD;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEhF"}
@@ -43,7 +43,20 @@ export async function scheduleCancel(params) {
43
43
  e.notes = COALESCE(e.notes, '') + $noteEntry
44
44
  RETURN e.agentChannel AS agentChannel, e.agentDestination AS agentDestination`, { eventId, accountId, now, noteEntry });
45
45
  if (result.records.length === 0) {
46
- throw new Error(`Event not found: ${eventId}`);
46
+ // Task 2100 the id may be a meeting uid. A :Meeting has no eventStatus
47
+ // to set to 'cancelled', so cancelling one deletes it and its attendee
48
+ // adjacency, exactly as the admin Calendar delete does (calendar.ts:478).
49
+ // A booking-sourced meeting is rewritten by the next reconcile run, which
50
+ // is already what happens when the operator deletes one in the UI.
51
+ const meetingResult = await neo4jSession.run(`MATCH (m:Meeting {uid: $id, accountId: $accountId})
52
+ WITH m, m.uid AS uid
53
+ DETACH DELETE m
54
+ RETURN uid`, { id: eventId, accountId });
55
+ if (meetingResult.records.length === 0) {
56
+ throw new Error(`Event not found: ${eventId}`);
57
+ }
58
+ console.error(`[schedule-cancel] op=meeting-delete uid=${eventId}`);
59
+ return;
47
60
  }
48
61
  // Task 1516 — the self-cancel alarm. Only agent-dispatch automations can
49
62
  // self-cancel; a plain reminder cancel emits nothing. Task 1746 — the
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-cancel.js","sourceRoot":"","sources":["../../src/tools/schedule-cancel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAc7C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAKlC;IACC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IAClD,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA4B;IAC/D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,SAAS,GAAG,IAAI;QACpB,CAAC,CAAC,MAAM,GAAG,gBAAgB,IAAI,EAAE;QACjC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;IAE3B,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CACnC;;;;qFAI+E,EAC/E,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CACvC,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,yEAAyE;QACzE,sEAAsE;QACtE,4EAA4E;QAC5E,6EAA6E;QAC7E,8DAA8D;QAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAkB,CAAC;QAC5E,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAkB,CAAC;QACpF,MAAM,GAAG,GAAG,kBAAkB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5E,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CACX,sCAAsC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,GAAG,CAAC,aAAa,EAAE,CAC/F,CAAC;YACF,4EAA4E;YAC5E,4EAA4E;YAC5E,4EAA4E;YAC5E,6EAA6E;YAC7E,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACtB,MAAM,YAAY,CAAC,GAAG,CACpB;iDACuC,EACvC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAC5B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"schedule-cancel.js","sourceRoot":"","sources":["../../src/tools/schedule-cancel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAc7C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAKlC;IACC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IAClD,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA4B;IAC/D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,SAAS,GAAG,IAAI;QACpB,CAAC,CAAC,MAAM,GAAG,gBAAgB,IAAI,EAAE;QACjC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;IAE3B,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CACnC;;;;qFAI+E,EAC/E,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CACvC,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,yEAAyE;YACzE,uEAAuE;YACvE,0EAA0E;YAC1E,0EAA0E;YAC1E,mEAAmE;YACnE,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,GAAG,CAC1C;;;oBAGY,EACZ,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAC3B,CAAC;YACF,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,sEAAsE;QACtE,4EAA4E;QAC5E,6EAA6E;QAC7E,8DAA8D;QAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAkB,CAAC;QAC5E,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAkB,CAAC;QACpF,MAAM,GAAG,GAAG,kBAAkB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5E,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CACX,sCAAsC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,GAAG,CAAC,aAAa,EAAE,CAC/F,CAAC;YACF,4EAA4E;YAC5E,4EAA4E;YAC5E,4EAA4E;YAC5E,6EAA6E;YAC7E,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACtB,MAAM,YAAY,CAAC,GAAG,CACpB;iDACuC,EACvC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAC5B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -1,11 +1,14 @@
1
1
  export interface EventDetail {
2
+ /** Event id (UUID) for kind="event"; meeting uid for kind="meeting". */
2
3
  eventId: string;
4
+ kind: "meeting" | "event";
3
5
  name: string;
4
6
  description?: string;
5
7
  startDate: string;
6
8
  endDate?: string;
7
9
  location?: string;
8
- eventStatus: string;
10
+ /** Events only — a :Meeting carries no eventStatus. */
11
+ eventStatus?: string;
9
12
  recurrence?: string;
10
13
  timezone?: string;
11
14
  nextRun?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-get.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-get.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,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,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAuDjG"}
1
+ {"version":3,"file":"schedule-get.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-get.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,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,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAkGjG"}
@@ -5,13 +5,50 @@ export async function scheduleGet(eventId, accountId) {
5
5
  const result = await neo4jSession.run(`MATCH (e:Event {eventId: $eventId, accountId: $accountId})
6
6
  OPTIONAL MATCH (e)-[r]->(target)
7
7
  RETURN e, collect({type: type(r), targetLabel: labels(target)[0], targetName: target.name, targetId: elementId(target)}) AS rels`, { eventId, accountId });
8
- if (result.records.length === 0)
9
- return null;
8
+ if (result.records.length === 0) {
9
+ // Task 2100 — the id may be a meeting uid rather than an event UUID. A
10
+ // meeting has no eventStatus, no recurrence and no notes history; its
11
+ // relationships are the attendee edges.
12
+ const meetingResult = await neo4jSession.run(`MATCH (m:Meeting {uid: $id, accountId: $accountId})
13
+ OPTIONAL MATCH (p:Person)-[r:ATTENDED]->(m)
14
+ RETURN m.uid AS uid, m.title AS title, toString(m.startsAt) AS startsAt,
15
+ toString(m.endsAt) AS endsAt, m.location AS location, m.timezone AS timezone,
16
+ toString(m.createdAt) AS createdAt, toString(m.updatedAt) AS updatedAt,
17
+ collect({type: type(r), targetLabel: 'Person', targetName: coalesce(p.displayName, p.email), targetId: elementId(p)}) AS rels`, { id: eventId, accountId });
18
+ if (meetingResult.records.length === 0)
19
+ return null;
20
+ const m = meetingResult.records[0];
21
+ const mRels = m.get("rels");
22
+ const meeting = {
23
+ eventId: m.get("uid"),
24
+ kind: "meeting",
25
+ name: m.get("title"),
26
+ startDate: m.get("startsAt"),
27
+ createdAt: m.get("createdAt"),
28
+ updatedAt: m.get("updatedAt"),
29
+ relationships: mRels
30
+ .filter((r) => r.type !== null)
31
+ .map((r) => ({
32
+ type: r.type,
33
+ targetLabel: r.targetLabel ?? "Person",
34
+ targetName: r.targetName ?? undefined,
35
+ targetId: r.targetId,
36
+ })),
37
+ };
38
+ if (m.get("endsAt"))
39
+ meeting.endDate = m.get("endsAt");
40
+ if (m.get("location"))
41
+ meeting.location = m.get("location");
42
+ if (m.get("timezone"))
43
+ meeting.timezone = m.get("timezone");
44
+ return meeting;
45
+ }
10
46
  const record = result.records[0];
11
47
  const e = record.get("e").properties;
12
48
  const rels = record.get("rels");
13
49
  const detail = {
14
50
  eventId: e.eventId,
51
+ kind: "event",
15
52
  name: e.name,
16
53
  startDate: e.startDate,
17
54
  eventStatus: e.eventStatus,
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-get.js","sourceRoot":"","sources":["../../src/tools/schedule-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA8B7C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,SAAiB;IAClE,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CACnC;;wIAEkI,EAClI,EAAE,OAAO,EAAE,SAAS,EAAE,CACvB,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAK5B,CAAC;QAEH,MAAM,MAAM,GAAgB;YAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,aAAa,EAAE,IAAI;iBAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,IAAK;gBACb,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS;gBACvC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,SAAS;gBACrC,QAAQ,EAAE,CAAC,CAAC,QAAS;aACtB,CAAC,CAAC;SACN,CAAC;QAEF,IAAI,CAAC,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;QACtD,IAAI,CAAC,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,CAAC,UAAU;YAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QACnD,IAAI,CAAC,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,CAAC,aAAa;YAAE,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;QAC5D,IAAI,CAAC,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,CAAC,YAAY;YAAE,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;QACzD,IAAI,CAAC,CAAC,gBAAgB;YAAE,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;QACrE,IAAI,CAAC,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;QAEtD,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"schedule-get.js","sourceRoot":"","sources":["../../src/tools/schedule-get.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,14 @@ export interface ScheduleListParams {
7
7
  limit?: number;
8
8
  }
9
9
  export interface EventSummary {
10
+ /** Event id (UUID) for kind="event"; meeting uid (the (accountId, uid) key) for kind="meeting". */
10
11
  eventId: string;
12
+ kind: "meeting" | "event";
11
13
  name: string;
12
14
  startDate: string;
13
15
  endDate?: string;
14
- eventStatus: string;
16
+ /** Events only — a :Meeting carries no eventStatus. */
17
+ eventStatus?: string;
15
18
  recurrence?: string;
16
19
  nextRun?: string;
17
20
  location?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-list.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-list.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAyEtF"}
1
+ {"version":3,"file":"schedule-list.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-list.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,mGAAmG;IACnG,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgItF"}
@@ -50,10 +50,11 @@ export async function scheduleList(params) {
50
50
  RETURN e
51
51
  ORDER BY COALESCE(e.nextRun, e.startDate) ASC
52
52
  LIMIT $limit`, queryParams);
53
- return result.records.map((r) => {
53
+ const rows = result.records.map((r) => {
54
54
  const e = r.get("e").properties;
55
55
  const summary = {
56
56
  eventId: e.eventId,
57
+ kind: "event",
57
58
  name: e.name,
58
59
  startDate: e.startDate,
59
60
  eventStatus: e.eventStatus,
@@ -68,6 +69,54 @@ export async function scheduleList(params) {
68
69
  summary.location = e.location;
69
70
  return summary;
70
71
  });
72
+ // Task 2100 — schedule-event writes a bounded appointment as a :Meeting, so
73
+ // a list that reads :Event alone cannot see the agent's own writes. status
74
+ // is an Event-only concept (a :Meeting has no eventStatus), so a status
75
+ // filter returns events only.
76
+ if (!status) {
77
+ const mConditions = ["m.accountId = $accountId"];
78
+ const mParams = { accountId, limit: neo4j.int(limit) };
79
+ if (effectiveFrom) {
80
+ mConditions.push("m.startsAt >= datetime($from)");
81
+ mParams.from = effectiveFrom;
82
+ }
83
+ if (effectiveTo) {
84
+ mConditions.push("m.startsAt <= datetime($to)");
85
+ mParams.to = effectiveTo;
86
+ }
87
+ if (upcoming) {
88
+ mConditions.push("m.startsAt >= datetime($now)");
89
+ mParams.now = new Date().toISOString();
90
+ }
91
+ const meetingResult = await neo4jSession.run(`MATCH (m:Meeting)
92
+ WHERE ${mConditions.join(" AND ")}
93
+ RETURN m.uid AS uid, m.title AS name, toString(m.startsAt) AS startDate,
94
+ toString(m.endsAt) AS endDate, m.location AS location
95
+ ORDER BY m.startsAt ASC
96
+ LIMIT $limit`, mParams);
97
+ for (const r of meetingResult.records) {
98
+ const summary = {
99
+ eventId: r.get("uid"),
100
+ kind: "meeting",
101
+ name: r.get("name"),
102
+ startDate: r.get("startDate"),
103
+ };
104
+ const endDate = r.get("endDate");
105
+ if (endDate)
106
+ summary.endDate = endDate;
107
+ const location = r.get("location");
108
+ if (location)
109
+ summary.location = location;
110
+ rows.push(summary);
111
+ }
112
+ }
113
+ // Neo4j cannot ORDER BY across a UNION, and an :Event start may carry a
114
+ // non-UTC offset that a lexical compare would mis-order against a UTC
115
+ // sibling, so the merge is ordered on instants here rather than in Cypher
116
+ // (the same reasoning as platform/ui/server/routes/admin/calendar.ts:141).
117
+ rows.sort((a, b) => new Date(a.nextRun ?? a.startDate).getTime() -
118
+ new Date(b.nextRun ?? b.startDate).getTime());
119
+ return rows.slice(0, limit);
71
120
  }
72
121
  finally {
73
122
  await neo4jSession.close();
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-list.js","sourceRoot":"","sources":["../../src/tools/schedule-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule-list.js","sourceRoot":"","sources":["../../src/tools/schedule-list.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":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGtE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6MhF"}
1
+ {"version":3,"file":"schedule-update.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGtE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgQhF"}
@@ -188,7 +188,49 @@ export async function scheduleUpdate(params) {
188
188
  SET ${setClauses.join(", ")}
189
189
  RETURN e`, queryParams);
190
190
  if (result.records.length === 0) {
191
- throw new Error(`Event not found: ${eventId}`);
191
+ // Task 2100 the id may be a meeting uid. A :Meeting carries only
192
+ // title/startsAt/endsAt/location as editable fields, and its uid is the
193
+ // (accountId, uid) idempotency key, never rewritten by an edit — the same
194
+ // contract as the admin Calendar PATCH (calendar.ts:284-296). description,
195
+ // eventStatus, recurrence, note, action and agentDispatch have no meeting
196
+ // equivalent and do not cross over.
197
+ const meetingSets = [];
198
+ const meetingParams = { id: eventId, accountId };
199
+ if (updates.name !== undefined) {
200
+ meetingSets.push("m.title = $title");
201
+ meetingParams.title = updates.name;
202
+ }
203
+ if (updates.startDate !== undefined) {
204
+ meetingSets.push("m.startsAt = datetime($startsAt)");
205
+ meetingParams.startsAt = updates.startDate;
206
+ }
207
+ if (updates.endDate !== undefined) {
208
+ meetingSets.push("m.endsAt = datetime($endsAt)");
209
+ meetingParams.endsAt = updates.endDate;
210
+ }
211
+ if (updates.location !== undefined) {
212
+ meetingSets.push("m.location = $location");
213
+ meetingParams.location = updates.location;
214
+ }
215
+ if (meetingSets.length === 0) {
216
+ // The id may still BE a meeting, with only fields that do not apply to
217
+ // one (a note, a status, a recurrence). Saying "not found" there is
218
+ // false and sends the caller looking for the wrong problem — the same
219
+ // class of misleading signal Task 2100 exists to remove.
220
+ const exists = await neo4jSession.run(`MATCH (m:Meeting {uid: $id, accountId: $accountId}) RETURN m.uid AS uid`, { id: eventId, accountId });
221
+ if (exists.records.length > 0) {
222
+ throw new Error(`${eventId} is a meeting: only name, startDate, endDate and location can be updated on one`);
223
+ }
224
+ throw new Error(`Event not found: ${eventId}`);
225
+ }
226
+ meetingSets.push("m.updatedAt = datetime()");
227
+ const meetingResult = await neo4jSession.run(`MATCH (m:Meeting {uid: $id, accountId: $accountId})
228
+ SET ${meetingSets.join(", ")}
229
+ RETURN m.uid AS uid`, meetingParams);
230
+ if (meetingResult.records.length === 0) {
231
+ throw new Error(`Event not found: ${eventId}`);
232
+ }
233
+ console.error(`[schedule-update] op=meeting-edit uid=${eventId} fields=${meetingSets.length - 1}`);
192
234
  }
193
235
  }
194
236
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-update.js","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,MAAM,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;AAGvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAmBjE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA4B;IAC/D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC;IAEzF,+EAA+E;IAC/E,gFAAgF;IAChF,yEAAyE;IACzE,IAAI,MAAM,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IAED,sDAAsD;IACtD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,CAClC;yFACiF,EACjF,EAAE,OAAO,EAAE,SAAS,EAAE,CACvB,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YAED,yCAAyC;YACzC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAW,CAAC;YACjE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAkB,CAAC;YAC7D,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE;gBACpC,WAAW,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC;gBACrC,EAAE,EAAE,EAAE,IAAI,SAAS;aACpB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAErC,MAAM,WAAW,GAAG,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,WAAW,CAAC,GAAG,CACnB;;;;4DAIkD,EAClD;oBACE,OAAO;oBACP,SAAS;oBACT,UAAU;oBACV,GAAG;oBACH,SAAS,EAAE,MAAM,GAAG,kCAAkC,cAAc,SAAS,UAAU,GAAG;iBAC3F,CACF,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC;YACD,OAAO;QACT,CAAC;gBAAS,CAAC;YACT,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,UAAU,GAAa,CAAC,oBAAoB,CAAC,CAAC;IACpD,MAAM,WAAW,GAA4B;QAC3C,OAAO;QACP,SAAS;QACT,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC9B,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAChD,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC5C,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACxC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1C,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAChD,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,+BAA+B;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE;gBACnD,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,EAAE,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;aAClC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC3C,WAAW,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAC5C,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,mCAAmC,OAAO,CAAC,UAAU,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC/G,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1C,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAED,iCAAiC;IACjC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,mCAAmC;QACnC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAClD,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC9C,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QACzC,WAAW,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QACrC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC9C,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,0EAA0E;QAC1E,6BAA6B;QAC7B,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,iFAAiF;IACjF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,qBAAqB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChD,UAAU,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAClD,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAC1D,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAChD,WAAW,CAAC,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC;QACjD,WAAW,CAAC,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC;QACzD,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;QAC/C,0DAA0D;QAC1D,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,UAAU,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAChE,WAAW,CAAC,SAAS,GAAG,MAAM,WAAW,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,CAAC,UAAU,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1F,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC5C,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CACnC;aACO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClB,EACV,WAAW,CACZ,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"schedule-update.js","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"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"}
@@ -24,11 +24,15 @@ Outbound on an observe socket is `whatsapp-reply`: reply-only into an existing c
24
24
 
25
25
  The `whatsapp-status` output stamps each account's resolved mode (`<accountId>:up:dispatch` or `<accountId>:down:observe`), so an observe account that came up dispatching, or lost its mode across a boot, is a visible mismatch. A standing safety net at the router logs `[whatsapp:observe] op=BREACH` if any dispatch ever reaches it from an observe account; that line must never appear.
26
26
 
27
- ## Observation-only in groups
27
+ ## Observation-only in groups: the agent
28
28
 
29
- The agent **never responds in a group chat.** Every inbound group message is stored, recorded, and persisted to the graph (observation is fully preserved — `list-groups`, `whatsapp-group-info`, conversations, and the `/whatsapp` reader all still work), but it is never dispatched to a responding session and never produces an outbound message into the group. `checkGroupAccess` is a structural observe-only deny — there is no group policy, allowlist, per-group activation, or @mention setting to turn responses on. A belt invariant in the manager's `reply` closure refuses any `@g.us` recipient (`op=group-reply-blocked`).
29
+ The agent **never responds in a group chat.** Every inbound group message is stored, recorded, and persisted to the graph (observation is fully preserved — `list-groups`, `whatsapp-group-info`, conversations, and the `/whatsapp` reader all still work), but it is never dispatched to a responding session and never produces an outbound message into the group. `checkGroupAccess` is a structural observe-only deny — there is no group policy, allowlist, per-group activation, or @mention setting to turn responses on. A belt invariant in the manager's `reply` closure refuses any `@g.us` recipient (`op=group-reply-blocked`), and `admitReply` refuses one at the gateway (`group-send-blocked`).
30
30
 
31
- This is the same Meta-policy constraint as the reply-only DM posture above, applied one step further. Replying into a group from an unofficial linked device is automated business-style messaging the class of behaviour that restricted a live operator account. It is a **Meta-policy constraint, not a SiteDesk limitation.**
31
+ **The operator may send into a group by hand.** The `/whatsapp` reader's composer is enabled for group threads, and its route stamps every send `origin: 'operator-manual'`. This is a different actor, not a relaxation of the rule above: the three agent-side blocks are unchanged, and a standing audit (`op=group-outbound-audit`, on the `wa-group-outbound-audit` loop) counts group outbound records lacking that stamp. Read that count as a population, not an alarm: the operator's own phone-sent group messages land there too, so it is the delta that is worth chasing rather than the absolute value.
32
+
33
+ Understand what that costs. Meta sees one linked-device socket and cannot distinguish an operator typing from an agent posting. Replying into a group from an unofficial linked device is automated business-style messaging, the class of behaviour that restricted a live operator account. Keeping the agent blocked reduces the volume; it does not make operator group sends risk-free. Judge each group by whether a human sending there is worth that exposure.
34
+
35
+ This is the same Meta-policy constraint as the reply-only DM posture above, applied one step further. It is a **Meta-policy constraint, not a SiteDesk limitation.**
32
36
 
33
37
  For agent-driven messaging in groups or initiating conversations, **Telegram is the better channel** — it has no equivalent linked-device automation penalty, so the agent can send and respond freely there. See `platform/plugins/telegram/references/setup-guide.md`.
34
38
 
@@ -47,9 +47,11 @@ const ALLOWLIST = new Set([
47
47
  // Same vi.hoisted pattern: Task 2035's sidebar-sessions walk test pre-builds
48
48
  // its projects tmpdir before the ACCOUNTS_DIR mock is wired.
49
49
  'platform/ui/server/routes/admin/__tests__/sidebar-sessions-walk.test.ts',
50
- // Same vi.hoisted pattern: Task 2035's reader title-cache test pre-builds its
51
- // accounts tmpdir before the ACCOUNTS_DIR mock is wired.
52
- 'platform/ui/server/routes/__tests__/whatsapp-reader-title-cache.test.ts',
50
+ // Same vi.hoisted pattern: Task 2035's title-cache test pre-builds its accounts
51
+ // tmpdir before the ACCOUNTS_DIR mock is wired. Renamed from
52
+ // whatsapp-reader-title-cache.test.ts by Task 2079, which moved /conversations
53
+ // and /conversations-all into their own module.
54
+ 'platform/ui/server/routes/__tests__/operator-conversations-title-cache.test.ts',
53
55
  // Same vi.hoisted pattern: Task 684's sidebar-artefacts test pre-builds an
54
56
  // empty tmpdir for ACCOUNTS_DIR/PLATFORM_ROOT before the module's mocks fire.
55
57
  'platform/ui/server/routes/admin/__tests__/sidebar-artefacts.test.ts',
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAyB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EA+TtD,CAAA"}
1
+ {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAyB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAiUtD,CAAA"}
@@ -112,6 +112,7 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
112
112
  "mcp__plugin_email_email__email-delete",
113
113
  "mcp__plugin_email_email__email-draft",
114
114
  "mcp__plugin_email_email__email-draft-edit",
115
+ "mcp__plugin_email_email__email-draft-list",
115
116
  "mcp__plugin_email_email__email-draft-send",
116
117
  "mcp__plugin_email_email__email-fetch",
117
118
  "mcp__plugin_email_email__email-fetch-attachment",
@@ -125,6 +126,7 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
125
126
  "mcp__plugin_email_email__email-search",
126
127
  "mcp__plugin_email_email__email-send",
127
128
  "mcp__plugin_email_email__email-setup",
129
+ "mcp__plugin_email_email__email-signature-set",
128
130
  "mcp__plugin_email_email__email-status",
129
131
  "mcp__plugin_filesystem_filesystem__file-edit",
130
132
  "mcp__plugin_filesystem_filesystem__file-glob",
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"webchat-channel-mcp.d.ts","sourceRoot":"","sources":["../src/webchat-channel-mcp.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,2BAA2B,oBAAoB,CAAA;AAE5D;;uDAEuD;AACvD,eAAO,MAAM,0BAA0B,gCAA+C,CAAA;AAEtF,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAA;IACX,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAA;IAClB;;;uCAGmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf;;qEAEiE;IACjE,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAED,wBAAgB,6BAA6B,CAC3C,CAAC,EAAE,uBAAuB,GACzB,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAe9C;AAED,uEAAuE;AACvE,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CAExD;AAED;;;kCAGkC;AAClC,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;4EAC4E;AAC5E,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvE"}
1
+ {"version":3,"file":"webchat-channel-mcp.d.ts","sourceRoot":"","sources":["../src/webchat-channel-mcp.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,2BAA2B,oBAAoB,CAAA;AAE5D;;uDAEuD;AACvD,eAAO,MAAM,0BAA0B,gCAA+C,CAAA;AAEtF,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAA;IACX,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAA;IAClB;;;uCAGmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf;;qEAEiE;IACjE,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAED,wBAAgB,6BAA6B,CAC3C,CAAC,EAAE,uBAAuB,GACzB,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAiB9C;AAED,uEAAuE;AACvE,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CAExD;AAED;;;kCAGkC;AAClC,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;4EAC4E;AAC5E,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvE"}
@@ -26,9 +26,11 @@ export function buildWebchatChannelMcpServers(p) {
26
26
  WEBCHAT_CHANNEL_KEY: p.key,
27
27
  WEBCHAT_CHANNEL_GATEWAY_URL: p.gatewayUrl,
28
28
  WEBCHAT_CHANNEL_SESSION_ID: p.sessionId,
29
- // Task 756 only the public path stamps a non-admin role; the default
30
- // admin spawn omits it so its env stays byte-identical to pre-756.
31
- ...(p.role === 'public' ? { WEBCHAT_CHANNEL_ROLE: 'public' } : {}),
29
+ // Task 756 stamped the role only on the public path. Task 2075 stamps it
30
+ // for BOTH roles: resolveChannelRole now throws on an absent or
31
+ // unrecognised value rather than defaulting to admin, because that
32
+ // default is what would silently re-register the retired reply tool.
33
+ WEBCHAT_CHANNEL_ROLE: p.role === 'public' ? 'public' : 'admin',
32
34
  },
33
35
  },
34
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"webchat-channel-mcp.js","sourceRoot":"","sources":["../src/webchat-channel-mcp.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,yEAAyE;AACzE,+EAA+E;AAC/E,eAAe;AACf,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAA;AAE5D;;uDAEuD;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,2BAA2B,SAAS,CAAA;AA2BtF,MAAM,UAAU,6BAA6B,CAC3C,CAA0B;IAE1B,OAAO;QACL,CAAC,2BAA2B,CAAC,EAAE;YAC7B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE;gBACH,mBAAmB,EAAE,CAAC,CAAC,GAAG;gBAC1B,2BAA2B,EAAE,CAAC,CAAC,UAAU;gBACzC,0BAA0B,EAAE,CAAC,CAAC,SAAS;gBACvC,uEAAuE;gBACvE,mEAAmE;gBACnE,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnE;SACF;KACF,CAAA;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,6BAA6B;IAC3C,OAAO,CAAC,yCAAyC,EAAE,UAAU,2BAA2B,EAAE,CAAC,CAAA;AAC7F,CAAC;AAED;;;kCAGkC;AAClC,MAAM,UAAU,2BAA2B,CAAC,SAAiB,EAAE,GAAW;IACxE,OAAO,IAAI,CAAC,GAAG,EAAE,wBAAwB,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AAC5F,CAAC;AAED;4EAC4E;AAC5E,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,6BAA6B,EAAE,CAAC,CAAA;AAC5E,CAAC"}
1
+ {"version":3,"file":"webchat-channel-mcp.js","sourceRoot":"","sources":["../src/webchat-channel-mcp.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,yEAAyE;AACzE,+EAA+E;AAC/E,eAAe;AACf,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAA;AAE5D;;uDAEuD;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,2BAA2B,SAAS,CAAA;AA2BtF,MAAM,UAAU,6BAA6B,CAC3C,CAA0B;IAE1B,OAAO;QACL,CAAC,2BAA2B,CAAC,EAAE;YAC7B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE;gBACH,mBAAmB,EAAE,CAAC,CAAC,GAAG;gBAC1B,2BAA2B,EAAE,CAAC,CAAC,UAAU;gBACzC,0BAA0B,EAAE,CAAC,CAAC,SAAS;gBACvC,yEAAyE;gBACzE,gEAAgE;gBAChE,mEAAmE;gBACnE,qEAAqE;gBACrE,oBAAoB,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;aAC/D;SACF;KACF,CAAA;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,6BAA6B;IAC3C,OAAO,CAAC,yCAAyC,EAAE,UAAU,2BAA2B,EAAE,CAAC,CAAA;AAC7F,CAAC;AAED;;;kCAGkC;AAClC,MAAM,UAAU,2BAA2B,CAAC,SAAiB,EAAE,GAAW;IACxE,OAAO,IAAI,CAAC,GAAG,EAAE,wBAAwB,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AAC5F,CAAC;AAED;4EAC4E;AAC5E,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,6BAA6B,EAAE,CAAC,CAAA;AAC5E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEpD;mEACmE;AACnE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,CAE/E;AA8CD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAErE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAItE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAEtE;AAiBD,eAAO,MAAM,yBAAyB,QA4BR,CAAA"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEpD;mEACmE;AACnE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,CAE/E;AA8CD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAErE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAItE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAEtE;AAmBD,eAAO,MAAM,yBAAyB,QA6BR,CAAA"}
@@ -56,15 +56,17 @@ export function replyToolDescription(role) {
56
56
  export function replyTextDescription(role) {
57
57
  return role === 'public' ? 'The message to send to the visitor' : 'The message to send to the operator';
58
58
  }
59
- // Per-turn admin reframe directive, byte-identical to the webchat twin's
60
- // ADMIN_REFRAME_INSTRUCTION (both use the "operator" recipient word). The
61
- // server-level INSTRUCTIONS above are set once at MCP init; this routing +
62
- // capability guidance must ride EVERY turn, the way the WhatsApp channel's
63
- // composeAdminContent does. So composeContent wraps every ADMIN inbound as
64
- // `## Context / ## Instruction` with this text. The channels own their framing
65
- // text independently (rootDir:"src" blocks a shared module), so the six
66
- // guarantees live in each and clauses 4–6 (recipient-neutral) are drift-guarded
67
- // byte-identical by a test in each service. Compressed under Task 1497.
59
+ // Per-turn admin reframe directive (both this and the whatsapp twin use the
60
+ // "operator" recipient word). The server-level INSTRUCTIONS above are set once
61
+ // at MCP init; this routing + capability guidance must ride EVERY turn, the way
62
+ // the WhatsApp channel's composeAdminContent does. So composeContent wraps every
63
+ // ADMIN inbound as `## Context / ## Instruction` with this text. The channels own
64
+ // their framing text independently (rootDir:"src" blocks a shared module), so the
65
+ // six guarantees live in each. Clauses 5–6 are drift-guarded byte-identical
66
+ // across all three services by a test in each. Clauses 3–4 are byte-identical to
67
+ // the whatsapp twin only: Task 2075 retired admin webchat's reply tool, so webchat
68
+ // rewrote both — its peer reads the session transcript rather than reply-tool
69
+ // text. Compressed under Task 1497.
68
70
  //
69
71
  // PUBLIC IS DELIBERATELY EXCLUDED. The public reader echoes the visitor's own
70
72
  // `operator-inbound` turn back to the anonymous chat, so wrapping a public
@@ -81,7 +83,8 @@ export const ADMIN_REFRAME_INSTRUCTION = 'Dispatch the owning specialist with th
81
83
  'Acknowledge on the reply tool, a brief progress note before each long step, then the result on the reply tool too — never silent to the end. ' +
82
84
  // Channel/visibility model (Task 980): the peer sees ONLY reply-tool text, so a
83
85
  // turn-final plain text block delivers nothing. Byte-identical to the whatsapp
84
- // and webchat twins, drift-guarded by a test in each service.
86
+ // twin, drift-guarded by a test in each service. Webchat diverged under Task
87
+ // 2075, which retired its admin reply tool.
85
88
  'Over a channel, the person sees only what you send with the reply tool; ' +
86
89
  'a turn ending without a reply tool call delivers nothing. ' +
87
90
  // File delivery (Task 919): the bridge forwards a SendUserFile call as a real
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,qEAAqE;AACrE,8EAA8E;AAC9E,kCAAkC;AAIlC;mEACmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,GAAuB;IACxD,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAA;AAC9C,CAAC;AAED,MAAM,YAAY,GAChB,gGAAgG;IAChG,iGAAiG;IACjG,mGAAmG;IACnG,iGAAiG;IACjG,0EAA0E,CAAA;AAE5E,yEAAyE;AACzE,gFAAgF;AAChF,wEAAwE;AACxE,yEAAyE;AACzE,8EAA8E;AAC9E,iFAAiF;AACjF,6EAA6E;AAC7E,mFAAmF;AACnF,6EAA6E;AAC7E,MAAM,mBAAmB,GACvB,6FAA6F;IAC7F,mGAAmG;IACnG,yFAAyF;IACzF,sGAAsG,CAAA;AAExG,MAAM,kBAAkB,GACtB,mBAAmB;IACnB,iEAAiE;IACjE,mGAAmG;IACnG,+FAA+F;IAC/F,8FAA8F;IAC9F,kGAAkG;IAClG,6FAA6F;IAC7F,wFAAwF;IACxF,YAAY,CAAA;AAEd,MAAM,mBAAmB,GACvB,mBAAmB;IACnB,uEAAuE;IACvE,oGAAoG;IACpG,iGAAiG;IACjG,4FAA4F;IAC5F,kGAAkG;IAClG,iGAAiG;IACjG,oCAAoC;IACpC,YAAY,CAAA;AAEd,MAAM,UAAU,mBAAmB,CAAC,IAAyB;IAC3D,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAyB;IAC5D,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,2EAA2E;QAC7E,CAAC,CAAC,2EAA2E,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAyB;IAC5D,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,qCAAqC,CAAA;AACzG,CAAC;AAED,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,wEAAwE;AACxE,gFAAgF;AAChF,wEAAwE;AACxE,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,iFAAiF;AACjF,oCAAoC;AACpC,MAAM,CAAC,MAAM,yBAAyB,GACpC,sDAAsD;IACtD,8NAA8N;IAC9N,8EAA8E;IAC9E,2FAA2F;IAC3F,mEAAmE;IACnE,sGAAsG;IACtG,oHAAoH;IACpH,+IAA+I;IAC/I,gFAAgF;IAChF,+EAA+E;IAC/E,8DAA8D;IAC9D,0EAA0E;IAC1E,4DAA4D;IAC5D,8EAA8E;IAC9E,0EAA0E;IAC1E,uGAAuG;IACvG,iDAAiD;IACjD,gFAAgF;IAChF,mFAAmF;IACnF,oHAAoH;IACpH,yBAAyB;IACzB,+EAA+E;IAC/E,iFAAiF;IACjF,iFAAiF;IACjF,mBAAmB;IACnB,8GAA8G;IAC9G,gHAAgH;IAChH,4BAA4B,CAAA"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,qEAAqE;AACrE,8EAA8E;AAC9E,kCAAkC;AAIlC;mEACmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,GAAuB;IACxD,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAA;AAC9C,CAAC;AAED,MAAM,YAAY,GAChB,gGAAgG;IAChG,iGAAiG;IACjG,mGAAmG;IACnG,iGAAiG;IACjG,0EAA0E,CAAA;AAE5E,yEAAyE;AACzE,gFAAgF;AAChF,wEAAwE;AACxE,yEAAyE;AACzE,8EAA8E;AAC9E,iFAAiF;AACjF,6EAA6E;AAC7E,mFAAmF;AACnF,6EAA6E;AAC7E,MAAM,mBAAmB,GACvB,6FAA6F;IAC7F,mGAAmG;IACnG,yFAAyF;IACzF,sGAAsG,CAAA;AAExG,MAAM,kBAAkB,GACtB,mBAAmB;IACnB,iEAAiE;IACjE,mGAAmG;IACnG,+FAA+F;IAC/F,8FAA8F;IAC9F,kGAAkG;IAClG,6FAA6F;IAC7F,wFAAwF;IACxF,YAAY,CAAA;AAEd,MAAM,mBAAmB,GACvB,mBAAmB;IACnB,uEAAuE;IACvE,oGAAoG;IACpG,iGAAiG;IACjG,4FAA4F;IAC5F,kGAAkG;IAClG,iGAAiG;IACjG,oCAAoC;IACpC,YAAY,CAAA;AAEd,MAAM,UAAU,mBAAmB,CAAC,IAAyB;IAC3D,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAyB;IAC5D,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,2EAA2E;QAC7E,CAAC,CAAC,2EAA2E,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAyB;IAC5D,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,qCAAqC,CAAA;AACzG,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,kFAAkF;AAClF,4EAA4E;AAC5E,iFAAiF;AACjF,mFAAmF;AACnF,8EAA8E;AAC9E,oCAAoC;AACpC,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,iFAAiF;AACjF,oCAAoC;AACpC,MAAM,CAAC,MAAM,yBAAyB,GACpC,sDAAsD;IACtD,8NAA8N;IAC9N,8EAA8E;IAC9E,2FAA2F;IAC3F,mEAAmE;IACnE,sGAAsG;IACtG,oHAAoH;IACpH,+IAA+I;IAC/I,gFAAgF;IAChF,+EAA+E;IAC/E,6EAA6E;IAC7E,4CAA4C;IAC5C,0EAA0E;IAC1E,4DAA4D;IAC5D,8EAA8E;IAC9E,0EAA0E;IAC1E,uGAAuG;IACvG,iDAAiD;IACjD,gFAAgF;IAChF,mFAAmF;IACnF,oHAAoH;IACpH,yBAAyB;IACzB,+EAA+E;IAC/E,iFAAiF;IACjF,iFAAiF;IACjF,mBAAmB;IACnB,8GAA8G;IAC9G,gHAAgH;IAChH,4BAA4B,CAAA"}
@@ -1,6 +1,10 @@
1
1
  export type WebchatChannelRole = 'admin' | 'public';
2
- /** Resolve the channel role from the spawn env (WEBCHAT_CHANNEL_ROLE). Anything
3
- * other than the literal 'public' is admin the safe, pre-756 default. */
2
+ /** Resolve the channel role from the spawn env (WEBCHAT_CHANNEL_ROLE). Task 2075
3
+ * made this strict: the pre-2075 rule treated anything other than 'public' as
4
+ * admin, so an unstamped spawn booted as admin — and now that admin has no reply
5
+ * tool, that default is the one value that silently changes the delivery model.
6
+ * Both spawn paths stamp the env, so an absent or unrecognised value means the
7
+ * spawn is wrong and the channel must not boot. */
4
8
  export declare function resolveChannelRole(raw: string | undefined): WebchatChannelRole;
5
9
  export declare function channelInstructions(role: WebchatChannelRole): string;
6
10
  export declare function replyToolDescription(role: WebchatChannelRole): string;