@rubytech/create-realagent-code 0.1.589 → 0.1.591

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 (216) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/routine-templates/dist/roster.d.ts +12 -2
  3. package/payload/platform/lib/routine-templates/dist/roster.d.ts.map +1 -1
  4. package/payload/platform/lib/routine-templates/dist/roster.js +6 -2
  5. package/payload/platform/lib/routine-templates/dist/roster.js.map +1 -1
  6. package/payload/platform/lib/routine-templates/src/roster.ts +14 -3
  7. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +14 -0
  8. package/payload/platform/plugins/outlook/.claude-plugin/plugin.json +1 -1
  9. package/payload/platform/plugins/outlook/PLUGIN.md +6 -1
  10. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-gate-probe.test.d.ts +2 -0
  11. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-gate-probe.test.d.ts.map +1 -0
  12. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-gate-probe.test.js +75 -0
  13. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-gate-probe.test.js.map +1 -0
  14. package/payload/platform/plugins/outlook/mcp/dist/index.js +14 -0
  15. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
  16. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-gate-probe.d.ts +33 -0
  17. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-gate-probe.d.ts.map +1 -0
  18. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-gate-probe.js +32 -0
  19. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-gate-probe.js.map +1 -0
  20. package/payload/platform/plugins/scheduling/PLUGIN.md +12 -2
  21. package/payload/platform/plugins/scheduling/mcp/dist/index.js +2 -2
  22. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  23. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js +386 -1
  24. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js.map +1 -1
  25. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js +569 -16
  26. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js.map +1 -1
  27. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +61 -0
  28. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  29. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +163 -0
  30. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  31. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  32. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +4 -1
  33. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  34. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts +252 -16
  35. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts.map +1 -1
  36. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js +411 -22
  37. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js.map +1 -1
  38. package/payload/platform/scripts/check-specialist-tool-surface.mjs +15 -1
  39. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  40. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
  41. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  42. package/payload/server/public/activity.html +6 -6
  43. package/payload/server/public/agents.html +5 -5
  44. package/payload/server/public/assets/{AdminLoginScreens-CemYu7ho.js → AdminLoginScreens-dBZJlMbp.js} +1 -1
  45. package/payload/server/public/assets/AdminLoginScreens-dBZJlMbp.js.br +0 -0
  46. package/payload/server/public/assets/AdminLoginScreens-dBZJlMbp.js.gz +0 -0
  47. package/payload/server/public/assets/{AdminShell-B5vEeSLw.js → AdminShell-D94sgtsb.js} +1 -1
  48. package/payload/server/public/assets/AdminShell-D94sgtsb.js.br +0 -0
  49. package/payload/server/public/assets/AdminShell-D94sgtsb.js.gz +0 -0
  50. package/payload/server/public/assets/{activity-BHSuZrqG.js → activity-D6NEUvT7.js} +1 -1
  51. package/payload/server/public/assets/activity-D6NEUvT7.js.br +0 -0
  52. package/payload/server/public/assets/activity-D6NEUvT7.js.gz +0 -0
  53. package/payload/server/public/assets/{admin-DnvauP59.js → admin-BluqXSKn.js} +1 -1
  54. package/payload/server/public/assets/admin-BluqXSKn.js.br +0 -0
  55. package/payload/server/public/assets/admin-BluqXSKn.js.gz +0 -0
  56. package/payload/server/public/assets/{agents-CwTJjfyV.js → agents-D_6V66dr.js} +1 -1
  57. package/payload/server/public/assets/agents-D_6V66dr.js.br +0 -0
  58. package/payload/server/public/assets/agents-D_6V66dr.js.gz +0 -0
  59. package/payload/server/public/assets/{browser-D4yjnKEH.js → browser-Bz9s6ztS.js} +1 -1
  60. package/payload/server/public/assets/browser-Bz9s6ztS.js.br +0 -0
  61. package/payload/server/public/assets/browser-Bz9s6ztS.js.gz +0 -0
  62. package/payload/server/public/assets/{calendar-DUi1XFyY.js → calendar-D5OCrmwA.js} +1 -1
  63. package/payload/server/public/assets/calendar-D5OCrmwA.js.br +0 -0
  64. package/payload/server/public/assets/calendar-D5OCrmwA.js.gz +0 -0
  65. package/payload/server/public/assets/chat-CjlbEzZ-.js +1 -0
  66. package/payload/server/public/assets/chat-CjlbEzZ-.js.br +1 -0
  67. package/payload/server/public/assets/chat-CjlbEzZ-.js.gz +0 -0
  68. package/payload/server/public/assets/chevron-left-b_r2jNvg.js +1 -0
  69. package/payload/server/public/assets/chevron-left-b_r2jNvg.js.br +0 -0
  70. package/payload/server/public/assets/clock-D8tMbEZD.js +1 -0
  71. package/payload/server/public/assets/clock-D8tMbEZD.js.br +0 -0
  72. package/payload/server/public/assets/clock-D8tMbEZD.js.gz +0 -0
  73. package/payload/server/public/assets/{copy-Bw2h4ofb.js → copy-CXBu2lHL.js} +1 -1
  74. package/payload/server/public/assets/copy-CXBu2lHL.js.br +0 -0
  75. package/payload/server/public/assets/copy-CXBu2lHL.js.gz +0 -0
  76. package/payload/server/public/assets/data-ChHg_Lq9.js +1 -0
  77. package/payload/server/public/assets/data-ChHg_Lq9.js.br +0 -0
  78. package/payload/server/public/assets/data-ChHg_Lq9.js.gz +0 -0
  79. package/payload/server/public/assets/{field-BS-mu5Jx.js → field-D4fXu_SP.js} +1 -1
  80. package/payload/server/public/assets/field-D4fXu_SP.js.br +0 -0
  81. package/payload/server/public/assets/field-D4fXu_SP.js.gz +0 -0
  82. package/payload/server/public/assets/{file-text-xUlDn7ui.js → file-text-BxZ1UMcQ.js} +1 -1
  83. package/payload/server/public/assets/file-text-BxZ1UMcQ.js.br +0 -0
  84. package/payload/server/public/assets/file-text-BxZ1UMcQ.js.gz +0 -0
  85. package/payload/server/public/assets/{graph-DEEXiQLx.js → graph-DMleOCBZ.js} +1 -1
  86. package/payload/server/public/assets/graph-DMleOCBZ.js.br +0 -0
  87. package/payload/server/public/assets/graph-DMleOCBZ.js.gz +0 -0
  88. package/payload/server/public/assets/{graph-labels-F6hQJKCn.js → graph-labels-BHapdrTm.js} +1 -1
  89. package/payload/server/public/assets/graph-labels-BHapdrTm.js.br +0 -0
  90. package/payload/server/public/assets/graph-labels-BHapdrTm.js.gz +0 -0
  91. package/payload/server/public/assets/{jsx-runtime-DDrveXI8.css → jsx-runtime-gqFnq1MC.css} +1 -1
  92. package/payload/server/public/assets/jsx-runtime-gqFnq1MC.css.br +0 -0
  93. package/payload/server/public/assets/{jsx-runtime-DDrveXI8.css.gz → jsx-runtime-gqFnq1MC.css.gz} +0 -0
  94. package/payload/server/public/assets/{operator-CkWK9uRB.js → operator-BpZTRiga.js} +1 -1
  95. package/payload/server/public/assets/operator-BpZTRiga.js.br +0 -0
  96. package/payload/server/public/assets/operator-BpZTRiga.js.gz +0 -0
  97. package/payload/server/public/assets/{page-Dh6fCuUi.js → page-CsHWZZ0U.js} +1 -1
  98. package/payload/server/public/assets/page-CsHWZZ0U.js.br +0 -0
  99. package/payload/server/public/assets/page-CsHWZZ0U.js.gz +0 -0
  100. package/payload/server/public/assets/{page-DbWIOK60.js → page-Dczx6CPP.js} +1 -1
  101. package/payload/server/public/assets/page-Dczx6CPP.js.br +0 -0
  102. package/payload/server/public/assets/page-Dczx6CPP.js.gz +0 -0
  103. package/payload/server/public/assets/play-D_xdb6gy.js +1 -0
  104. package/payload/server/public/assets/play-D_xdb6gy.js.br +0 -0
  105. package/payload/server/public/assets/play-D_xdb6gy.js.gz +0 -0
  106. package/payload/server/public/assets/{public-DmD6vvFM.js → public-BzpELWaZ.js} +1 -1
  107. package/payload/server/public/assets/public-BzpELWaZ.js.br +0 -0
  108. package/payload/server/public/assets/public-BzpELWaZ.js.gz +0 -0
  109. package/payload/server/public/assets/{rotate-ccw-BDdOWTDl.js → rotate-ccw-Bkpst1na.js} +1 -1
  110. package/payload/server/public/assets/rotate-ccw-Bkpst1na.js.br +0 -0
  111. package/payload/server/public/assets/rotate-ccw-Bkpst1na.js.gz +0 -0
  112. package/payload/server/public/assets/{routines-CZoKUK0p.js → routines-Cmuf8pPP.js} +2 -2
  113. package/payload/server/public/assets/routines-Cmuf8pPP.js.br +0 -0
  114. package/payload/server/public/assets/routines-Cmuf8pPP.js.gz +0 -0
  115. package/payload/server/public/assets/{skills-D0yS0qLX.js → skills-Bfq3Pbw-.js} +1 -1
  116. package/payload/server/public/assets/skills-Bfq3Pbw-.js.br +0 -0
  117. package/payload/server/public/assets/skills-Bfq3Pbw-.js.gz +0 -0
  118. package/payload/server/public/assets/{tasks-Dtn1uDRY.js → tasks-nyWLrolq.js} +1 -1
  119. package/payload/server/public/assets/tasks-nyWLrolq.js.br +0 -0
  120. package/payload/server/public/assets/tasks-nyWLrolq.js.gz +0 -0
  121. package/payload/server/public/assets/{triangle-alert-DN-Eswuf.js → triangle-alert-DkENIQJ6.js} +1 -1
  122. package/payload/server/public/assets/triangle-alert-DkENIQJ6.js.br +0 -0
  123. package/payload/server/public/assets/triangle-alert-DkENIQJ6.js.gz +0 -0
  124. package/payload/server/public/assets/{useCopyFeedback-BmOZr_Mw.js → useCopyFeedback-DmNjbXe9.js} +1 -1
  125. package/payload/server/public/assets/useCopyFeedback-DmNjbXe9.js.br +1 -0
  126. package/payload/server/public/assets/useCopyFeedback-DmNjbXe9.js.gz +0 -0
  127. package/payload/server/public/assets/{useMediaQuery-fFM7rxUD.js → useMediaQuery-DL-C1y_F.js} +1 -1
  128. package/payload/server/public/assets/useMediaQuery-DL-C1y_F.js.br +0 -0
  129. package/payload/server/public/assets/useMediaQuery-DL-C1y_F.js.gz +0 -0
  130. package/payload/server/public/assets/{useVoiceRecorder-D0MWFIde.js → useVoiceRecorder-DseLVULD.js} +1 -1
  131. package/payload/server/public/assets/useVoiceRecorder-DseLVULD.js.br +0 -0
  132. package/payload/server/public/assets/useVoiceRecorder-DseLVULD.js.gz +0 -0
  133. package/payload/server/public/assets/{wrench-C-yn7q1Q.js → wrench-C7tdp6z9.js} +1 -1
  134. package/payload/server/public/assets/wrench-C7tdp6z9.js.br +0 -0
  135. package/payload/server/public/assets/wrench-C7tdp6z9.js.gz +0 -0
  136. package/payload/server/public/browser.html +5 -5
  137. package/payload/server/public/calendar.html +8 -8
  138. package/payload/server/public/chat.html +14 -14
  139. package/payload/server/public/data.html +12 -12
  140. package/payload/server/public/field.html +3 -3
  141. package/payload/server/public/graph.html +10 -10
  142. package/payload/server/public/index.html +14 -14
  143. package/payload/server/public/operator.html +16 -16
  144. package/payload/server/public/public.html +14 -14
  145. package/payload/server/public/routines.html +8 -8
  146. package/payload/server/public/skills.html +6 -6
  147. package/payload/server/public/tasks.html +7 -7
  148. package/payload/server/server.js +62 -0
  149. package/payload/server/public/assets/AdminLoginScreens-CemYu7ho.js.br +0 -0
  150. package/payload/server/public/assets/AdminLoginScreens-CemYu7ho.js.gz +0 -0
  151. package/payload/server/public/assets/AdminShell-B5vEeSLw.js.br +0 -0
  152. package/payload/server/public/assets/AdminShell-B5vEeSLw.js.gz +0 -0
  153. package/payload/server/public/assets/activity-BHSuZrqG.js.br +0 -0
  154. package/payload/server/public/assets/activity-BHSuZrqG.js.gz +0 -0
  155. package/payload/server/public/assets/admin-DnvauP59.js.br +0 -0
  156. package/payload/server/public/assets/admin-DnvauP59.js.gz +0 -0
  157. package/payload/server/public/assets/agents-CwTJjfyV.js.br +0 -0
  158. package/payload/server/public/assets/agents-CwTJjfyV.js.gz +0 -0
  159. package/payload/server/public/assets/browser-D4yjnKEH.js.br +0 -0
  160. package/payload/server/public/assets/browser-D4yjnKEH.js.gz +0 -0
  161. package/payload/server/public/assets/calendar-DUi1XFyY.js.br +0 -0
  162. package/payload/server/public/assets/calendar-DUi1XFyY.js.gz +0 -0
  163. package/payload/server/public/assets/chat-BJ1p4kuh.js +0 -1
  164. package/payload/server/public/assets/chat-BJ1p4kuh.js.br +0 -1
  165. package/payload/server/public/assets/chat-BJ1p4kuh.js.gz +0 -0
  166. package/payload/server/public/assets/chevron-left-Ctw-3JsV.js +0 -1
  167. package/payload/server/public/assets/chevron-left-Ctw-3JsV.js.br +0 -0
  168. package/payload/server/public/assets/clock-BLOp42yY.js +0 -1
  169. package/payload/server/public/assets/clock-BLOp42yY.js.br +0 -0
  170. package/payload/server/public/assets/clock-BLOp42yY.js.gz +0 -0
  171. package/payload/server/public/assets/copy-Bw2h4ofb.js.br +0 -0
  172. package/payload/server/public/assets/copy-Bw2h4ofb.js.gz +0 -0
  173. package/payload/server/public/assets/data-uR7BZKVU.js +0 -1
  174. package/payload/server/public/assets/data-uR7BZKVU.js.br +0 -0
  175. package/payload/server/public/assets/data-uR7BZKVU.js.gz +0 -0
  176. package/payload/server/public/assets/field-BS-mu5Jx.js.br +0 -0
  177. package/payload/server/public/assets/field-BS-mu5Jx.js.gz +0 -0
  178. package/payload/server/public/assets/file-text-xUlDn7ui.js.br +0 -0
  179. package/payload/server/public/assets/file-text-xUlDn7ui.js.gz +0 -0
  180. package/payload/server/public/assets/graph-DEEXiQLx.js.br +0 -0
  181. package/payload/server/public/assets/graph-DEEXiQLx.js.gz +0 -0
  182. package/payload/server/public/assets/graph-labels-F6hQJKCn.js.br +0 -0
  183. package/payload/server/public/assets/graph-labels-F6hQJKCn.js.gz +0 -0
  184. package/payload/server/public/assets/jsx-runtime-DDrveXI8.css.br +0 -0
  185. package/payload/server/public/assets/operator-CkWK9uRB.js.br +0 -0
  186. package/payload/server/public/assets/operator-CkWK9uRB.js.gz +0 -0
  187. package/payload/server/public/assets/page-DbWIOK60.js.br +0 -0
  188. package/payload/server/public/assets/page-DbWIOK60.js.gz +0 -0
  189. package/payload/server/public/assets/page-Dh6fCuUi.js.br +0 -0
  190. package/payload/server/public/assets/page-Dh6fCuUi.js.gz +0 -0
  191. package/payload/server/public/assets/play-fy3tdi7M.js +0 -1
  192. package/payload/server/public/assets/play-fy3tdi7M.js.br +0 -0
  193. package/payload/server/public/assets/play-fy3tdi7M.js.gz +0 -0
  194. package/payload/server/public/assets/public-DmD6vvFM.js.br +0 -0
  195. package/payload/server/public/assets/public-DmD6vvFM.js.gz +0 -0
  196. package/payload/server/public/assets/rotate-ccw-BDdOWTDl.js.br +0 -0
  197. package/payload/server/public/assets/rotate-ccw-BDdOWTDl.js.gz +0 -0
  198. package/payload/server/public/assets/routines-CZoKUK0p.js.br +0 -0
  199. package/payload/server/public/assets/routines-CZoKUK0p.js.gz +0 -0
  200. package/payload/server/public/assets/skills-D0yS0qLX.js.br +0 -0
  201. package/payload/server/public/assets/skills-D0yS0qLX.js.gz +0 -0
  202. package/payload/server/public/assets/tasks-Dtn1uDRY.js.br +0 -0
  203. package/payload/server/public/assets/tasks-Dtn1uDRY.js.gz +0 -0
  204. package/payload/server/public/assets/triangle-alert-DN-Eswuf.js.br +0 -0
  205. package/payload/server/public/assets/triangle-alert-DN-Eswuf.js.gz +0 -0
  206. package/payload/server/public/assets/useCopyFeedback-BmOZr_Mw.js.br +0 -0
  207. package/payload/server/public/assets/useCopyFeedback-BmOZr_Mw.js.gz +0 -0
  208. package/payload/server/public/assets/useMediaQuery-fFM7rxUD.js.br +0 -0
  209. package/payload/server/public/assets/useMediaQuery-fFM7rxUD.js.gz +0 -0
  210. package/payload/server/public/assets/useVoiceRecorder-D0MWFIde.js.br +0 -0
  211. package/payload/server/public/assets/useVoiceRecorder-D0MWFIde.js.gz +0 -0
  212. package/payload/server/public/assets/wrench-C-yn7q1Q.js.br +0 -0
  213. package/payload/server/public/assets/wrench-C-yn7q1Q.js.gz +0 -0
  214. /package/payload/server/public/assets/{jsx-runtime-DXWyHqht.js → jsx-runtime-BcrVQeV-.js} +0 -0
  215. /package/payload/server/public/assets/{jsx-runtime-DXWyHqht.js.br → jsx-runtime-BcrVQeV-.js.br} +0 -0
  216. /package/payload/server/public/assets/{jsx-runtime-DXWyHqht.js.gz → jsx-runtime-BcrVQeV-.js.gz} +0 -0
@@ -21,7 +21,51 @@
21
21
  import { createHash } from "node:crypto";
22
22
  import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
23
23
  import { dirname, resolve } from "node:path";
24
+ import { spawnProviderCall } from "../lib/connector-freebusy.js";
24
25
  import { getSession } from "../lib/neo4j.js";
26
+ /**
27
+ * Task 2653 — the accepted `type` values, in one place.
28
+ *
29
+ * Two callers need the same list and had none: `probe()`'s default arm, which
30
+ * names it in the error a bound-too-early row produces at fire time, and
31
+ * `validateGate` (`schedule-event.ts`), which refuses an unknown type at write
32
+ * time. A second hand-maintained copy is how a type accepted by the writer
33
+ * becomes a type the prober cannot answer.
34
+ */
35
+ export const ACCEPTED_CHECK_TYPES = ["mail", "d1", "whatsapp", "calendar", "telegram"];
36
+ /**
37
+ * Task 2657 — the accepted `provider` values on a `mail` check, in one place.
38
+ *
39
+ * The same single-sourcing `ACCEPTED_CHECK_TYPES` has: `probe()`'s mail arm
40
+ * selects on it, and `validateGate` (`schedule-event.ts`) refuses anything
41
+ * outside it at write time. A second hand-maintained copy is how a provider the
42
+ * writer accepts becomes a provider the prober cannot answer.
43
+ */
44
+ export const ACCEPTED_MAIL_PROVIDERS = ["imap", "outlook"];
45
+ /**
46
+ * Task 2662 — every key each check type's prober actually reads.
47
+ *
48
+ * `checks` is `z.array(z.record(z.unknown()))`, so before this any other key was
49
+ * accepted and dropped. An operator passed a `botId` to a telegram check and
50
+ * watched it report work with the field discarded, then passed a bot id that
51
+ * does not exist and watched it report work again. A gate that looks scoped and
52
+ * is not is worse than one that is refused, because nothing anywhere says so.
53
+ *
54
+ * This REVERSES Task 2657's narrower decision, which allowed a stray `provider`
55
+ * on a non-mail check on the grounds that refusing it would reject a valid gate.
56
+ * A gate carrying a field nothing reads is not valid, it is misleading, and
57
+ * `provider` on a `d1` check is the same defect the operator reported.
58
+ *
59
+ * Adding a field to a check means adding it here in the same edit, or the
60
+ * writer refuses what the prober is about to read.
61
+ */
62
+ export const ACCEPTED_CHECK_FIELDS = {
63
+ mail: ["type", "mailbox", "folder", "subjectPrefixes", "provider"],
64
+ d1: ["type", "database", "sql"],
65
+ whatsapp: ["type", "scope"],
66
+ calendar: ["type", "connector"],
67
+ telegram: ["type", "scope", "botId"],
68
+ };
25
69
  /**
26
70
  * Rooted at the INSTALL, not at the account.
27
71
  *
@@ -106,6 +150,147 @@ function writeWatermarks(eventId, platformRoot, marks) {
106
150
  mkdirSync(dirname(path), { recursive: true });
107
151
  writeFileSync(path, JSON.stringify(marks, null, 2));
108
152
  }
153
+ export function observationPath(eventId, platformRoot) {
154
+ return resolve(platformRoot, "..", "state", "scheduling-gate", `${eventId}.observed.json`);
155
+ }
156
+ /**
157
+ * The positions the last gate call recorded, or an empty set.
158
+ *
159
+ * No file is a first fire, and an unreadable one must not be a hard error: an
160
+ * empty observation advances nothing, which leaves every watermark where it is
161
+ * and makes the next fire report the work again.
162
+ */
163
+ export function readObservation(eventId, platformRoot) {
164
+ const unreadable = (reason) => {
165
+ // A file that is present but unusable stops EVERY watermark advancing, while
166
+ // the commit still prints an empty `advanced=` — which is exactly what a
167
+ // healthy first commit prints. Without a line of its own the fault reads as
168
+ // a routine that simply has not committed yet.
169
+ console.error(`[scheduling-gate] op=observation-unreadable eventId=${eventId.slice(0, 8)} reason=${reason}`);
170
+ return {};
171
+ };
172
+ try {
173
+ const raw = readFileSync(observationPath(eventId, platformRoot), "utf-8");
174
+ const parsed = JSON.parse(raw);
175
+ const marks = parsed?.marks;
176
+ if (marks && typeof marks === "object")
177
+ return marks;
178
+ return unreadable("no-marks-object");
179
+ }
180
+ catch (err) {
181
+ // A missing file is the first fire of a gate, and of every gate that existed
182
+ // before this file did. It is silent because it is the expected state, not a
183
+ // fault.
184
+ if (err?.code === "ENOENT")
185
+ return {};
186
+ return unreadable(err instanceof Error ? err.message : String(err));
187
+ }
188
+ }
189
+ function writeObservation(eventId, platformRoot, marks) {
190
+ const path = observationPath(eventId, platformRoot);
191
+ mkdirSync(dirname(path), { recursive: true });
192
+ writeFileSync(path, JSON.stringify({ at: new Date().toISOString(), marks }, null, 2));
193
+ }
194
+ /**
195
+ * The name this slot answers to in `advanced` and in `op=commit … positions=`.
196
+ *
197
+ * Both mail providers answer to the same `<mailbox>|<folder>` key, because that
198
+ * is the binding an operator reads in the log and one mailbox is served by one
199
+ * provider. They occupy different watermark subtrees, so the key is not what
200
+ * keeps them apart.
201
+ */
202
+ export function slotKey(slot) {
203
+ if (slot.kind === "mail" || slot.kind === "mailOutlook")
204
+ return slot.key;
205
+ // Task 2662 — a scoped telegram check answers to `telegram:<botId>`, so a
206
+ // commit over two bots names two entries rather than one repeated twice.
207
+ if (slot.kind === "telegram" && slot.botId !== undefined)
208
+ return `telegram:${slot.botId}`;
209
+ return slot.kind;
210
+ }
211
+ /**
212
+ * The printable position `marks` holds at `slot`, or null when it holds none.
213
+ *
214
+ * A mail UID and a WhatsApp epoch second print as their numbers and a Telegram
215
+ * `createdAt` verbatim, because each is the value the comparison is made on. A
216
+ * calendar digest is truncated to eight characters: the whole sha256 tells a
217
+ * reader nothing the first eight do not, and the full value is in the file.
218
+ */
219
+ export function slotPosition(slot, marks) {
220
+ switch (slot.kind) {
221
+ case "mail": {
222
+ const entry = marks.mail?.[slot.key];
223
+ return entry === undefined ? null : String(entry.uid);
224
+ }
225
+ case "mailOutlook":
226
+ // Task 2657's Graph position is an ISO `receivedAt`, printed verbatim for
227
+ // the reason the Telegram one is: it IS the value the comparison is made
228
+ // on.
229
+ return marks.mailOutlook?.[slot.key]?.receivedAt ?? null;
230
+ case "whatsapp":
231
+ return marks.whatsapp?.inbound === undefined ? null : String(marks.whatsapp.inbound);
232
+ case "telegram":
233
+ return ((slot.botId === undefined ? marks.telegram?.inbound : marks.telegram?.byBot?.[slot.botId]) ??
234
+ null);
235
+ case "calendar":
236
+ return marks.calendar?.digest?.slice(0, 8) ?? null;
237
+ }
238
+ }
239
+ /**
240
+ * Copy one slot's value from `from` into `into`. False when `from` holds none,
241
+ * in which case `into` is untouched — the caller advances nothing rather than
242
+ * writing a position it never observed.
243
+ */
244
+ export function promoteSlot(slot, from, into) {
245
+ switch (slot.kind) {
246
+ case "mail": {
247
+ const entry = from.mail?.[slot.key];
248
+ if (entry === undefined)
249
+ return false;
250
+ into.mail = { ...(into.mail ?? {}), [slot.key]: entry };
251
+ return true;
252
+ }
253
+ case "mailOutlook": {
254
+ const entry = from.mailOutlook?.[slot.key];
255
+ if (entry === undefined)
256
+ return false;
257
+ into.mailOutlook = { ...(into.mailOutlook ?? {}), [slot.key]: entry };
258
+ return true;
259
+ }
260
+ case "whatsapp": {
261
+ const at = from.whatsapp?.inbound;
262
+ if (at === undefined)
263
+ return false;
264
+ into.whatsapp = { ...(into.whatsapp ?? {}), inbound: at };
265
+ return true;
266
+ }
267
+ case "telegram": {
268
+ // Task 2662 — promoted at the same scope it was observed at.
269
+ if (slot.botId !== undefined) {
270
+ const at = from.telegram?.byBot?.[slot.botId];
271
+ if (at === undefined)
272
+ return false;
273
+ into.telegram = {
274
+ ...(into.telegram ?? {}),
275
+ byBot: { ...(into.telegram?.byBot ?? {}), [slot.botId]: at },
276
+ };
277
+ return true;
278
+ }
279
+ const at = from.telegram?.inbound;
280
+ if (at === undefined)
281
+ return false;
282
+ into.telegram = { ...(into.telegram ?? {}), inbound: at };
283
+ return true;
284
+ }
285
+ case "calendar": {
286
+ const digest = from.calendar?.digest;
287
+ if (digest === undefined)
288
+ return false;
289
+ into.calendar = { ...(into.calendar ?? {}), digest };
290
+ return true;
291
+ }
292
+ }
293
+ }
109
294
  // ---------------------------------------------------------------------------
110
295
  // Real sources
111
296
  // ---------------------------------------------------------------------------
@@ -320,6 +505,30 @@ const realMail = async (check, sinceUid, accountId) => {
320
505
  };
321
506
  export const REAL_SOURCES = {
322
507
  mail: realMail,
508
+ // Task 2657 — the provider owns the decryption of its own tokens, so this is
509
+ // a SPAWN of the outlook plugin's own MCP server: not an import (no plugin in
510
+ // this tree imports another plugin's source) and not a loopback route, which
511
+ // would reimplement token decryption and refresh in a second process and race
512
+ // the refresh lock. `spawnProviderCall` is the transport `connector-freebusy`
513
+ // already runs from this same heartbeat — same timeout, same ACCOUNT_ID
514
+ // scoping, same captured child stderr, same PLATFORM_PORT bridge.
515
+ mailOutlook: async (check, accountId) => {
516
+ const call = spawnProviderCall(process.env.PLATFORM_ROOT, accountId, "m365");
517
+ const payload = await call("outlook", "outlook-mail-probe", {
518
+ mailbox: check.mailbox,
519
+ ...(check.folder === undefined ? {} : { folder: check.folder }),
520
+ });
521
+ const at = payload?.newestReceivedAt;
522
+ if (at === null)
523
+ return { newestReceivedAt: null };
524
+ // A shape this cannot read throws, and a throw counts as work. Coercing an
525
+ // unexpected value to null would answer "quiet" about a mailbox this never
526
+ // understood, which is the one answer that loses a message.
527
+ if (typeof at !== "string") {
528
+ throw new Error(`outlook-mail-probe returned newestReceivedAt of type ${typeof at}`);
529
+ }
530
+ return { newestReceivedAt: at };
531
+ },
323
532
  d1: async (check, accountId) => {
324
533
  const body = await postJson("/api/storage/d1/query", accountId, {
325
534
  name: check.database,
@@ -375,6 +584,33 @@ export const REAL_SOURCES = {
375
584
  }
376
585
  return { latest, newer };
377
586
  },
587
+ // Task 2653 — the Telegram store is JSONL on disk and is deliberately NOT in
588
+ // Neo4j (`app/lib/telegram/message-store.ts`), so there is no graph query for
589
+ // this and the read goes over the same loopback transport the WhatsApp check
590
+ // uses. Re-deriving the store path inside this plugin was the alternative and
591
+ // is rejected: Task 2644 is exactly that divergence, and Task 2625 moved the
592
+ // path rule into `platform/lib/telegram-reach` to stop a second copy existing.
593
+ telegramInbound: async (accountId, botId) => {
594
+ // Task 2662 — the bot scope travels as a query param. The route answers 404
595
+ // for an id the account does not hold and 403 for one belonging elsewhere,
596
+ // and `getJson` throws on any non-200, so a wrong id reaches `probe`'s error
597
+ // arm and counts as WORK. That is the only safe direction: answering quiet
598
+ // would mute the routine for ever.
599
+ const path = botId === undefined
600
+ ? "/api/telegram-reader/gate-probe"
601
+ : `/api/telegram-reader/gate-probe?botId=${encodeURIComponent(botId)}`;
602
+ const body = await getJson(path, accountId);
603
+ const at = body.newestInboundAt;
604
+ if (at === null)
605
+ return { newestInboundAt: null };
606
+ // A shape this cannot read throws, and a throw counts as work. Coercing an
607
+ // unexpected value to null would answer "quiet" about a store this never
608
+ // understood, which is the one answer that loses a message.
609
+ if (typeof at !== "string") {
610
+ throw new Error(`gate-probe returned newestInboundAt of type ${typeof at}`);
611
+ }
612
+ return { newestInboundAt: at };
613
+ },
378
614
  calendarDigest: async (check, accountId) => {
379
615
  const session = getSession();
380
616
  try {
@@ -390,13 +626,63 @@ export const REAL_SOURCES = {
390
626
  // ---------------------------------------------------------------------------
391
627
  // Evaluation
392
628
  // ---------------------------------------------------------------------------
629
+ /**
630
+ * Task 2657 — an ISO instant as epoch milliseconds.
631
+ *
632
+ * Compared numerically rather than lexically because Graph documents
633
+ * `receivedDateTime` only as "ISO 8601" and pins no precision
634
+ * (`plugins/outlook/references/graph-surfaces.md:58`). A fractional-second value
635
+ * sorts BELOW a whole-second one lexically ('.' is 0x2E, 'Z' is 0x5A), so a
636
+ * lexical test would read a newer message as older and mute the routine. A
637
+ * value this cannot parse throws, and a throw counts as work: answering "quiet"
638
+ * about a timestamp it never understood is the one answer that loses mail.
639
+ */
640
+ export function instantOf(iso) {
641
+ const ms = Date.parse(iso);
642
+ if (Number.isNaN(ms))
643
+ throw new Error(`not an ISO instant: ${iso}`);
644
+ return ms;
645
+ }
393
646
  async function probe(check, marks, accountId, sources) {
394
647
  switch (check.type) {
395
648
  case "mail": {
396
649
  // Task 2635 — the folder segment lower-cases, so a binding that writes
397
650
  // "inbox" and one that writes "INBOX" address one entry. The mailbox
398
- // segment is left alone: a local part is case-sensitive.
651
+ // segment is left alone: a local part is case-sensitive. One expression
652
+ // serves both providers: IMAP's default folder is INBOX and Graph's is
653
+ // Inbox, and both lower-case to the same segment.
399
654
  const key = `${check.mailbox}|${(check.folder ?? "INBOX").toLowerCase()}`;
655
+ const provider = check.provider ?? "imap";
656
+ // Task 2657 — a provider outside the two, reachable only by a direct tool
657
+ // call now that `validateGate` refuses one at write time. Throwing HERE
658
+ // puts it inside `runSchedulingGate`'s try, where the error arm logs it
659
+ // and counts it as work — the shape the unknown-check-type default has.
660
+ if (!ACCEPTED_MAIL_PROVIDERS.includes(provider)) {
661
+ throw new Error(`unknown mail provider ${JSON.stringify(provider)} — accepted: ${ACCEPTED_MAIL_PROVIDERS.join(", ")}`);
662
+ }
663
+ if (provider === "outlook") {
664
+ const { newestReceivedAt } = await sources.mailOutlook(check, accountId);
665
+ // A folder holding no message has no position to record, so this reports
666
+ // as `skipped` on a commit rather than advancing onto nothing — the same
667
+ // shape the `telegram` arm has, and for the same reason. Writing null
668
+ // would drop a real watermark and replay every stored message next fire.
669
+ if (newestReceivedAt === null)
670
+ return { hasWork: false, mark: null };
671
+ const storedAt = marks.mailOutlook?.[key]?.receivedAt;
672
+ return {
673
+ // `>`, never `>=`. The stored value IS the newest message the model has
674
+ // already seen, so `>=` re-reports it on every fire and the gate could
675
+ // never go quiet (the Task 2471 class). An absent watermark is a first
676
+ // run: everything already waiting counts as work.
677
+ hasWork: storedAt === undefined || instantOf(newestReceivedAt) > instantOf(storedAt),
678
+ mark: {
679
+ slot: { kind: "mailOutlook", key },
680
+ write: (m) => {
681
+ m.mailOutlook = { ...(m.mailOutlook ?? {}), [key]: { receivedAt: newestReceivedAt } };
682
+ },
683
+ },
684
+ };
685
+ }
400
686
  const stored = marks.mail?.[key];
401
687
  const since = stored?.uid ?? 0;
402
688
  const res = await sources.mail(check, since, accountId);
@@ -407,9 +693,11 @@ async function probe(check, marks, accountId, sources) {
407
693
  const renumbered = stored != null && stored.uidValidity != null && res.uidValidity !== stored.uidValidity;
408
694
  return {
409
695
  hasWork: res.matched || renumbered,
410
- mark: (m) => {
411
- m.mail = { ...(m.mail ?? {}), [key]: { uid: res.highestUid, uidValidity: res.uidValidity } };
412
- return key;
696
+ mark: {
697
+ slot: { kind: "mail", key },
698
+ write: (m) => {
699
+ m.mail = { ...(m.mail ?? {}), [key]: { uid: res.highestUid, uidValidity: res.uidValidity } };
700
+ },
413
701
  },
414
702
  };
415
703
  }
@@ -426,9 +714,47 @@ async function probe(check, marks, accountId, sources) {
426
714
  const res = await sources.whatsappInbound(accountId, since);
427
715
  return {
428
716
  hasWork: res.newer,
429
- mark: (m) => {
430
- m.whatsapp = { ...(m.whatsapp ?? {}), inbound: res.latest };
431
- return "whatsapp";
717
+ mark: {
718
+ slot: { kind: "whatsapp" },
719
+ write: (m) => {
720
+ m.whatsapp = { ...(m.whatsapp ?? {}), inbound: res.latest };
721
+ },
722
+ },
723
+ };
724
+ }
725
+ case "telegram": {
726
+ // Task 2662 — the position for THIS scope. An account-wide check reads
727
+ // `inbound`; a scoped one reads its own `byBot` entry and never the
728
+ // account-wide mark, which was measured across bots this check ignores.
729
+ const since = check.botId === undefined
730
+ ? marks.telegram?.inbound
731
+ : marks.telegram?.byBot?.[check.botId];
732
+ const { newestInboundAt } = await sources.telegramInbound(accountId, check.botId);
733
+ // An account with no inbound row has no position to record, so this
734
+ // reports as `skipped` on a commit rather than advancing onto nothing —
735
+ // the same shape `d1` has, and for the same reason. Writing null here
736
+ // would drop a real watermark and replay every stored message next fire.
737
+ if (newestInboundAt === null)
738
+ return { hasWork: false, mark: null };
739
+ return {
740
+ // `>`, never `>=`. The stored value IS the newest message the model has
741
+ // already seen, so `>=` would re-report it on every fire and the gate
742
+ // could never go quiet (the Task 2471 class). An absent watermark is a
743
+ // first run: everything already waiting counts as work.
744
+ hasWork: since === undefined || newestInboundAt > since,
745
+ mark: {
746
+ // Task 2662 — the bot rides on the slot, so one event carrying two
747
+ // scoped checks holds two positions and neither overwrites the other.
748
+ slot: { kind: "telegram", botId: check.botId },
749
+ write: (m) => {
750
+ m.telegram =
751
+ check.botId === undefined
752
+ ? { ...(m.telegram ?? {}), inbound: newestInboundAt }
753
+ : {
754
+ ...(m.telegram ?? {}),
755
+ byBot: { ...(m.telegram?.byBot ?? {}), [check.botId]: newestInboundAt },
756
+ };
757
+ },
432
758
  },
433
759
  };
434
760
  }
@@ -437,12 +763,29 @@ async function probe(check, marks, accountId, sources) {
437
763
  const stored = marks.calendar?.digest;
438
764
  return {
439
765
  hasWork: stored !== digest,
440
- mark: (m) => {
441
- m.calendar = { ...(m.calendar ?? {}), digest };
442
- return "calendar";
766
+ mark: {
767
+ slot: { kind: "calendar" },
768
+ write: (m) => {
769
+ m.calendar = { ...(m.calendar ?? {}), digest };
770
+ },
443
771
  },
444
772
  };
445
773
  }
774
+ // Task 2653 — a type outside the union. The switch was exhaustive over
775
+ // `GateCheck` and had no default, so `probe` returned `undefined` and the
776
+ // caller's `outcome.hasWork` read threw OUTSIDE its own try: the TypeError
777
+ // escaped `runSchedulingGate` entirely, so no `op=check-error` and no
778
+ // `op=checked` was written and the whole failure was invisible in the log.
779
+ // Throwing HERE puts it inside that try, where the existing error arm
780
+ // already logs it and counts it as work.
781
+ //
782
+ // `validateGate` now refuses an unknown type at write time, so this is
783
+ // reached only by a row bound before that guard existed, or by a direct
784
+ // tool call. Both must answer, not crash.
785
+ default: {
786
+ const seen = check.type;
787
+ throw new Error(`unknown check type ${JSON.stringify(seen)} — accepted: ${ACCEPTED_CHECK_TYPES.join(", ")}`);
788
+ }
446
789
  }
447
790
  }
448
791
  /**
@@ -452,17 +795,37 @@ async function probe(check, marks, accountId, sources) {
452
795
  * every binding: a routine names the sources it cares about and the disjunction
453
796
  * is the routine's precondition.
454
797
  *
455
- * On a commit, every named check is re-probed and its current position written.
456
- * Re-probing rather than reusing an earlier read is the point — the commit runs
457
- * at the END of the agent turn, and anything that arrived while the turn ran has
458
- * not been seen by the model, so it must stay above the watermark.
798
+ * On a commit, every named check is still probed that is what measures
799
+ * `hasWork` and what keeps a check that errors out of `advanced` but the
800
+ * position WRITTEN comes from the observation the gate call recorded, never from
801
+ * the commit's own probe. The commit runs at the END of the agent turn, so its
802
+ * probe already includes anything that arrived while the turn ran; writing that
803
+ * would put the arrival below the watermark and no later fire would report it
804
+ * (Task 2654). A check with no recorded observation advances nothing, which
805
+ * leaves the work above the watermark and is the fail-open direction.
459
806
  */
460
807
  export async function runSchedulingGate(params, accountId, platformRoot, sources = REAL_SOURCES) {
461
808
  const started = Date.now();
809
+ const id8 = params.eventId.slice(0, 8);
462
810
  const marks = readWatermarks(params.eventId, platformRoot);
811
+ // Task 2654 — what the LAST gate call saw. A commit promotes from here rather
812
+ // than from its own probe: its own probe runs at the end of the agent turn and
813
+ // already includes whatever arrived while the turn ran.
814
+ const observed = params.commit ? readObservation(params.eventId, platformRoot) : {};
815
+ // This call's own readings, written to the observation file on a plain call.
816
+ // Fresh rather than the read watermarks, so a check that is not named this
817
+ // fire leaves no stale position behind.
818
+ const fresh = {};
463
819
  const reasons = [];
820
+ const errored = [];
464
821
  const advanced = [];
465
822
  const skipped = [];
823
+ /**
824
+ * Task 2654 — the position actually written per advanced check, so a watermark
825
+ * that jumped past a window the model never saw is legible after the fact
826
+ * without reproducing it. Pairs with `op=gate-read` on the same eventId.
827
+ */
828
+ const positions = [];
466
829
  let hasWork = false;
467
830
  for (const check of params.checks) {
468
831
  let outcome;
@@ -475,6 +838,10 @@ export async function runSchedulingGate(params, accountId, platformRoot, sources
475
838
  hasWork = true;
476
839
  if (!reasons.includes(check.type))
477
840
  reasons.push(check.type);
841
+ // Task 2658 — one entry per erroring CHECK, not per kind, and never
842
+ // deduplicated: two `d1` checks against two databases can fail for two
843
+ // different reasons, and a single `d1` entry would name one of them.
844
+ errored.push({ kind: check.type, detail });
478
845
  continue;
479
846
  }
480
847
  if (outcome.hasWork) {
@@ -484,21 +851,43 @@ export async function runSchedulingGate(params, accountId, platformRoot, sources
484
851
  }
485
852
  // A check that threw took the `continue` above, so it reaches neither list:
486
853
  // its position is unknown, not absent.
487
- if (params.commit) {
488
- if (outcome.mark)
489
- advanced.push(outcome.mark(marks));
490
- else
491
- skipped.push(check.type);
854
+ if (outcome.mark) {
855
+ // Every probe records what it saw, commit or not: the position is a fact
856
+ // about the source, not about the verdict.
857
+ outcome.mark.write(fresh);
858
+ console.error(`[scheduling-gate] op=gate-read eventId=${id8} check=${check.type} ` +
859
+ `position=${slotPosition(outcome.mark.slot, fresh)}`);
860
+ if (params.commit) {
861
+ // The OBSERVED position, never this probe's. Absent means no gate call
862
+ // recorded one, so nothing advances and the next fire reports it again.
863
+ if (promoteSlot(outcome.mark.slot, observed, marks)) {
864
+ const key = slotKey(outcome.mark.slot);
865
+ advanced.push(key);
866
+ positions.push(`${key}:${slotPosition(outcome.mark.slot, marks)}`);
867
+ }
868
+ }
492
869
  }
870
+ else if (params.commit) {
871
+ skipped.push(check.type);
872
+ }
873
+ }
874
+ if (!params.commit) {
875
+ // A commit never writes this file. Writing its own end-of-turn probe here
876
+ // would put the swallowed position back in the one place the next commit
877
+ // trusts.
878
+ writeObservation(params.eventId, platformRoot, fresh);
493
879
  }
494
880
  if (params.commit) {
495
881
  marks.lastCommitAt = new Date().toISOString();
496
882
  writeWatermarks(params.eventId, platformRoot, marks);
497
- console.error(`[scheduling-gate] op=commit eventId=${params.eventId.slice(0, 8)} ` +
498
- `advanced=${advanced.join(",")} skipped=${skipped.join(",")}`);
883
+ console.error(`[scheduling-gate] op=commit eventId=${id8} ` +
884
+ `advanced=${advanced.join(",")} skipped=${skipped.join(",")} ` +
885
+ `positions=${positions.join(",")}`);
499
886
  }
500
887
  console.error(`[scheduling-gate] op=checked hasWork=${hasWork} reasons=${reasons.join(",")} ` +
501
888
  `checks=${params.checks.length} ms=${Date.now() - started}`);
502
- return params.commit ? { hasWork, reasons, advanced, skipped } : { hasWork, reasons };
889
+ return params.commit
890
+ ? { hasWork, reasons, errored, advanced, skipped }
891
+ : { hasWork, reasons, errored };
503
892
  }
504
893
  //# sourceMappingURL=scheduling-gate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling-gate.js","sourceRoot":"","sources":["../../src/tools/scheduling-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduling-gate.js","sourceRoot":"","sources":["../../src/tools/scheduling-gate.ts"],"names":[],"mappings":"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"}
@@ -192,7 +192,21 @@ export function collectGrantedTools(agentDirs) {
192
192
  // name why the tool is deliberately callable by nobody, and an entry whose
193
193
  // tool has since been granted is itself reported, because a suppression that
194
194
  // outlives its cause re-creates the blind spot.
195
- const REACHABILITY_EXCEPTIONS = new Map([]);
195
+ const REACHABILITY_EXCEPTIONS = new Map([
196
+ [
197
+ "mcp__plugin_outlook_outlook__outlook-mail-probe",
198
+ // Task 2657 — machine-to-machine by construction. The scheduling gate's
199
+ // `mail` check with `provider: outlook` reaches it by SPAWNING the outlook
200
+ // plugin's own MCP server (`spawnProviderCall`, scheduling-gate.ts), because
201
+ // the provider owns the decryption of its own tokens. No agent turn is in
202
+ // that path, so granting it to a specialist or putting it on the admin
203
+ // surface would add a tool no one should call by hand: it returns one
204
+ // folder's newest `receivedDateTime` and nothing else, and a non-null answer
205
+ // is not evidence of work — the arrival test is the caller's comparison
206
+ // against its own stored watermark, which an agent does not hold.
207
+ "called by the scheduling gate through a spawned outlook MCP server, never by an agent turn",
208
+ ],
209
+ ]);
196
210
 
197
211
  export function findUnreachableTools(specialistOnlyAll, granted) {
198
212
  const unreachable = [];