@rubytech/create-sitedesk-code 0.1.521 → 0.1.523

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 (416) hide show
  1. package/dist/index.js +17 -3
  2. package/package.json +1 -1
  3. package/payload/platform/lib/account-schema-regions/package-lock.json +12 -0
  4. package/payload/platform/lib/active-rules/package-lock.json +12 -0
  5. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
  6. package/payload/platform/lib/graph-style/dist/index.js +28 -0
  7. package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
  8. package/payload/platform/lib/graph-style/src/__tests__/caption-coverage.test.ts +7 -0
  9. package/payload/platform/lib/graph-style/src/index.ts +24 -0
  10. package/payload/platform/lib/graph-write/dist/__tests__/merge-on.test.d.ts.map +1 -0
  11. package/payload/platform/lib/graph-write/dist/__tests__/merge-on.test.js.map +1 -0
  12. package/payload/platform/lib/graph-write/dist/index.d.ts +16 -0
  13. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  14. package/payload/platform/lib/graph-write/dist/index.js +83 -6
  15. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  16. package/payload/platform/lib/graph-write/src/index.ts +117 -10
  17. package/payload/platform/lib/mcp-lifeline/package-lock.json +12 -0
  18. package/payload/platform/lib/routine-templates/dist/index.d.ts +151 -0
  19. package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -0
  20. package/payload/platform/lib/routine-templates/dist/index.js +207 -0
  21. package/payload/platform/lib/routine-templates/dist/index.js.map +1 -0
  22. package/payload/platform/lib/routine-templates/dist/roster.d.ts +57 -0
  23. package/payload/platform/lib/routine-templates/dist/roster.d.ts.map +1 -0
  24. package/payload/platform/lib/routine-templates/dist/roster.js +182 -0
  25. package/payload/platform/lib/routine-templates/dist/roster.js.map +1 -0
  26. package/payload/platform/lib/routine-templates/dist/seed-cli.d.ts +2 -0
  27. package/payload/platform/lib/routine-templates/dist/seed-cli.d.ts.map +1 -0
  28. package/payload/platform/lib/routine-templates/dist/seed-cli.js +64 -0
  29. package/payload/platform/lib/routine-templates/dist/seed-cli.js.map +1 -0
  30. package/payload/platform/lib/routine-templates/package.json +6 -0
  31. package/payload/platform/lib/routine-templates/src/__tests__/roster.test.ts +170 -0
  32. package/payload/platform/lib/routine-templates/src/__tests__/seed.test.ts +298 -0
  33. package/payload/platform/lib/routine-templates/src/index.ts +299 -0
  34. package/payload/platform/lib/routine-templates/src/roster.ts +206 -0
  35. package/payload/platform/lib/routine-templates/src/seed-cli.ts +65 -0
  36. package/payload/platform/lib/routine-templates/tsconfig.json +9 -0
  37. package/payload/platform/lib/routine-templates/vitest.config.ts +9 -0
  38. package/payload/platform/neo4j/edge-annotations.json +2 -2
  39. package/payload/platform/neo4j/schema.cypher +25 -1
  40. package/payload/platform/package.json +3 -2
  41. package/payload/platform/plugins/admin/PLUGIN.md +2 -2
  42. package/payload/platform/plugins/admin/mcp/dist/index.js +39 -1
  43. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  44. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +319 -66
  45. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
  46. package/payload/platform/plugins/docs/references/admin-ui.md +275 -59
  47. package/payload/platform/plugins/docs/references/internals.md +4 -0
  48. package/payload/platform/plugins/docs/references/memory-guide.md +11 -1
  49. package/payload/platform/plugins/docs/references/outlook-guide.md +27 -4
  50. package/payload/platform/plugins/graph/.claude-plugin/plugin.json +1 -1
  51. package/payload/platform/plugins/graph/PLUGIN.md +1 -1
  52. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  53. package/payload/platform/plugins/memory/mcp/dist/index.js +12 -5
  54. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  55. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.d.ts +2 -0
  56. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.d.ts.map +1 -0
  57. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.js +197 -0
  58. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.js.map +1 -0
  59. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +55 -9
  60. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -1
  61. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +96 -0
  62. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -1
  63. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts +7 -0
  64. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts.map +1 -1
  65. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.d.ts +29 -0
  66. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.d.ts.map +1 -0
  67. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.js +126 -0
  68. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.js.map +1 -0
  69. package/payload/platform/plugins/memory/mcp/dist/scripts/dream-cycle-sweep.js +7 -4
  70. package/payload/platform/plugins/memory/mcp/dist/scripts/dream-cycle-sweep.js.map +1 -1
  71. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts +1 -0
  72. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts.map +1 -1
  73. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js +18 -1
  74. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js.map +1 -1
  75. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +7 -0
  76. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  77. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +4 -3
  78. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  79. package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -0
  80. package/payload/platform/plugins/memory/references/schema-estate-agent.md +2 -2
  81. package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +4 -4
  82. package/payload/platform/plugins/outlook/.claude-plugin/plugin.json +1 -1
  83. package/payload/platform/plugins/outlook/PLUGIN.md +9 -1
  84. package/payload/platform/plugins/outlook/mcp/dist/__tests__/delegated-resolve.test.d.ts +2 -0
  85. package/payload/platform/plugins/outlook/mcp/dist/__tests__/delegated-resolve.test.d.ts.map +1 -0
  86. package/payload/platform/plugins/outlook/mcp/dist/__tests__/delegated-resolve.test.js +151 -0
  87. package/payload/platform/plugins/outlook/mcp/dist/__tests__/delegated-resolve.test.js.map +1 -0
  88. package/payload/platform/plugins/outlook/mcp/dist/__tests__/delegated-store.test.d.ts +2 -0
  89. package/payload/platform/plugins/outlook/mcp/dist/__tests__/delegated-store.test.d.ts.map +1 -0
  90. package/payload/platform/plugins/outlook/mcp/dist/__tests__/delegated-store.test.js +151 -0
  91. package/payload/platform/plugins/outlook/mcp/dist/__tests__/delegated-store.test.js.map +1 -0
  92. package/payload/platform/plugins/outlook/mcp/dist/__tests__/device-flow.test.js +38 -4
  93. package/payload/platform/plugins/outlook/mcp/dist/__tests__/device-flow.test.js.map +1 -1
  94. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-prefix-wiring.test.d.ts +2 -0
  95. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-prefix-wiring.test.d.ts.map +1 -0
  96. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-prefix-wiring.test.js +146 -0
  97. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-prefix-wiring.test.js.map +1 -0
  98. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-list-delegated.test.d.ts +2 -0
  99. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-list-delegated.test.d.ts.map +1 -0
  100. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-list-delegated.test.js +120 -0
  101. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-list-delegated.test.js.map +1 -0
  102. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-list.test.js +8 -8
  103. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-list.test.js.map +1 -1
  104. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-path-prefix.test.d.ts +2 -0
  105. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-path-prefix.test.d.ts.map +1 -0
  106. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-path-prefix.test.js +27 -0
  107. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-path-prefix.test.js.map +1 -0
  108. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mail-only-guard.test.d.ts +2 -0
  109. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mail-only-guard.test.d.ts.map +1 -0
  110. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mail-only-guard.test.js +70 -0
  111. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mail-only-guard.test.js.map +1 -0
  112. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mailbox-add.test.d.ts +2 -0
  113. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mailbox-add.test.d.ts.map +1 -0
  114. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mailbox-add.test.js +152 -0
  115. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mailbox-add.test.js.map +1 -0
  116. package/payload/platform/plugins/outlook/mcp/dist/auth/delegated-store.d.ts +57 -0
  117. package/payload/platform/plugins/outlook/mcp/dist/auth/delegated-store.d.ts.map +1 -0
  118. package/payload/platform/plugins/outlook/mcp/dist/auth/delegated-store.js +163 -0
  119. package/payload/platform/plugins/outlook/mcp/dist/auth/delegated-store.js.map +1 -0
  120. package/payload/platform/plugins/outlook/mcp/dist/auth/device-flow.d.ts +12 -0
  121. package/payload/platform/plugins/outlook/mcp/dist/auth/device-flow.d.ts.map +1 -1
  122. package/payload/platform/plugins/outlook/mcp/dist/auth/device-flow.js +21 -1
  123. package/payload/platform/plugins/outlook/mcp/dist/auth/device-flow.js.map +1 -1
  124. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts +35 -4
  125. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts.map +1 -1
  126. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js +92 -10
  127. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js.map +1 -1
  128. package/payload/platform/plugins/outlook/mcp/dist/index.js +106 -3
  129. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
  130. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts +49 -0
  131. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
  132. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +126 -8
  133. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
  134. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.d.ts +13 -0
  135. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.d.ts.map +1 -1
  136. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.js +9 -0
  137. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.js.map +1 -1
  138. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-list.d.ts +42 -8
  139. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-list.d.ts.map +1 -1
  140. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-list.js +59 -19
  141. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-list.js.map +1 -1
  142. package/payload/platform/plugins/outlook/mcp/dist/tools/shared-mailbox-add.d.ts +47 -0
  143. package/payload/platform/plugins/outlook/mcp/dist/tools/shared-mailbox-add.d.ts.map +1 -0
  144. package/payload/platform/plugins/outlook/mcp/dist/tools/shared-mailbox-add.js +67 -0
  145. package/payload/platform/plugins/outlook/mcp/dist/tools/shared-mailbox-add.js.map +1 -0
  146. package/payload/platform/plugins/outlook/mcp/dist/tools/shared-mailbox-remove.d.ts +12 -0
  147. package/payload/platform/plugins/outlook/mcp/dist/tools/shared-mailbox-remove.d.ts.map +1 -0
  148. package/payload/platform/plugins/outlook/mcp/dist/tools/shared-mailbox-remove.js +18 -0
  149. package/payload/platform/plugins/outlook/mcp/dist/tools/shared-mailbox-remove.js.map +1 -0
  150. package/payload/platform/plugins/outlook/references/auth.md +15 -2
  151. package/payload/platform/plugins/outlook/references/graph-surfaces.md +8 -0
  152. package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +21 -1
  153. package/payload/platform/plugins/quickbooks/PLUGIN.md +10 -10
  154. package/payload/platform/plugins/scheduling/PLUGIN.md +49 -1
  155. package/payload/platform/plugins/scheduling/mcp/dist/index.js +48 -0
  156. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  157. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.d.ts +2 -0
  158. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.d.ts.map +1 -0
  159. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.js +78 -0
  160. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.js.map +1 -0
  161. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.d.ts +2 -0
  162. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.d.ts.map +1 -0
  163. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js +457 -0
  164. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js.map +1 -0
  165. package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.d.ts +35 -0
  166. package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.d.ts.map +1 -0
  167. package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.js +39 -0
  168. package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.js.map +1 -0
  169. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts +175 -0
  170. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts.map +1 -0
  171. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js +533 -0
  172. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js.map +1 -0
  173. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +123 -9
  174. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
  175. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.d.ts +2 -0
  176. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.d.ts.map +1 -0
  177. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js +189 -0
  178. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js.map +1 -0
  179. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.d.ts +2 -0
  180. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.d.ts.map +1 -0
  181. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.js +95 -0
  182. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.js.map +1 -0
  183. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.d.ts +2 -0
  184. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.d.ts.map +1 -0
  185. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.js +114 -0
  186. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.js.map +1 -0
  187. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +109 -2
  188. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  189. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +340 -9
  190. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  191. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +9 -1
  192. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -1
  193. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +210 -45
  194. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  195. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +43 -1
  196. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
  197. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.js +55 -7
  198. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.js.map +1 -1
  199. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js +45 -1
  200. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js.map +1 -1
  201. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.d.ts +2 -0
  202. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.d.ts.map +1 -0
  203. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.js +96 -0
  204. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.js.map +1 -0
  205. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -1
  206. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +2 -1
  207. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -1
  208. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +5 -0
  209. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
  210. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +13 -0
  211. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
  212. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +4 -0
  213. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -1
  214. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +24 -3
  215. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -1
  216. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.d.ts +33 -0
  217. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.d.ts.map +1 -0
  218. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.js +51 -0
  219. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.js.map +1 -0
  220. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  221. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +12 -2
  222. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  223. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +30 -2
  224. package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +1 -1
  225. package/payload/platform/scripts/check-specialist-tool-surface.mjs +92 -16
  226. package/payload/platform/scripts/seed-neo4j.sh +41 -0
  227. package/payload/platform/scripts/verify-skill-tool-surface.sh +91 -2
  228. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  229. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +3 -0
  230. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  231. package/payload/platform/templates/specialists/agents/librarian.md +1 -1
  232. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  233. package/payload/server/{chunk-AZLT4LVO.js → chunk-VUXKXOJU.js} +755 -335
  234. package/payload/server/{chunk-UX2FRNO7.js → chunk-WT2PFGY4.js} +37 -265
  235. package/payload/server/{chunk-PXNY2TAP.js → chunk-XCR5D2G3.js} +239 -10
  236. package/payload/server/{manager-CQBSUJXR.js → manager-4TJK3YOY.js} +4 -2
  237. package/payload/server/maxy-edge.js +2 -2
  238. package/payload/server/public/activity.html +5 -5
  239. package/payload/server/public/agents.html +4 -4
  240. package/payload/server/public/assets/{AdminLoginScreens-Dar_MMJm.js → AdminLoginScreens-uknqh2Pm.js} +1 -1
  241. package/payload/server/public/assets/AdminLoginScreens-uknqh2Pm.js.br +0 -0
  242. package/payload/server/public/assets/AdminLoginScreens-uknqh2Pm.js.gz +0 -0
  243. package/payload/server/public/assets/AdminShell-GqtMImyQ.js +2 -0
  244. package/payload/server/public/assets/AdminShell-GqtMImyQ.js.br +0 -0
  245. package/payload/server/public/assets/AdminShell-GqtMImyQ.js.gz +0 -0
  246. package/payload/server/public/assets/{activity-B1rt4GIy.js → activity-B4KfMJqO.js} +1 -1
  247. package/payload/server/public/assets/activity-B4KfMJqO.js.br +0 -0
  248. package/payload/server/public/assets/activity-B4KfMJqO.js.gz +0 -0
  249. package/payload/server/public/assets/admin-DxCZeVw0.js +1 -0
  250. package/payload/server/public/assets/admin-DxCZeVw0.js.br +0 -0
  251. package/payload/server/public/assets/admin-DxCZeVw0.js.gz +0 -0
  252. package/payload/server/public/assets/agents-BtwBuO4G.js +1 -0
  253. package/payload/server/public/assets/agents-BtwBuO4G.js.br +0 -0
  254. package/payload/server/public/assets/agents-BtwBuO4G.js.gz +0 -0
  255. package/payload/server/public/assets/{browser-1QSCPl3X.js → browser-B3hSzI3O.js} +1 -1
  256. package/payload/server/public/assets/browser-B3hSzI3O.js.br +0 -0
  257. package/payload/server/public/assets/browser-B3hSzI3O.js.gz +0 -0
  258. package/payload/server/public/assets/{calendar-D009qWVV.js → calendar-BggxXxhS.js} +1 -1
  259. package/payload/server/public/assets/calendar-BggxXxhS.js.br +0 -0
  260. package/payload/server/public/assets/calendar-BggxXxhS.js.gz +0 -0
  261. package/payload/server/public/assets/chat-flivHt0t.js +1 -0
  262. package/payload/server/public/assets/chat-flivHt0t.js.br +0 -0
  263. package/payload/server/public/assets/chat-flivHt0t.js.gz +0 -0
  264. package/payload/server/public/assets/chevron-left-nVRThX7f.js +1 -0
  265. package/payload/server/public/assets/chevron-right-CLqfrkRA.js +1 -0
  266. package/payload/server/public/assets/chevron-right-CLqfrkRA.js.br +0 -0
  267. package/payload/server/public/assets/clock-Dj3SRZKo.js +1 -0
  268. package/payload/server/public/assets/clock-Dj3SRZKo.js.br +0 -0
  269. package/payload/server/public/assets/clock-Dj3SRZKo.js.gz +0 -0
  270. package/payload/server/public/assets/data-Ckjkne54.js +1 -0
  271. package/payload/server/public/assets/data-Ckjkne54.js.br +3 -0
  272. package/payload/server/public/assets/data-Ckjkne54.js.gz +0 -0
  273. package/payload/server/public/assets/{file-text-DwGAfCsd.js → file-text-BKs9eyiw.js} +1 -1
  274. package/payload/server/public/assets/file-text-BKs9eyiw.js.br +0 -0
  275. package/payload/server/public/assets/file-text-BKs9eyiw.js.gz +0 -0
  276. package/payload/server/public/assets/{graph-D-DGlfhW.js → graph-DTi71NaZ.js} +3 -3
  277. package/payload/server/public/assets/graph-DTi71NaZ.js.br +0 -0
  278. package/payload/server/public/assets/graph-DTi71NaZ.js.gz +0 -0
  279. package/payload/server/public/assets/graph-labels-BT3S6e9H.js +1 -0
  280. package/payload/server/public/assets/graph-labels-BT3S6e9H.js.br +0 -0
  281. package/payload/server/public/assets/graph-labels-BT3S6e9H.js.gz +0 -0
  282. package/payload/server/public/assets/{maximize-2-C_-KapxH.js → maximize-2-zC94tsxY.js} +1 -1
  283. package/payload/server/public/assets/maximize-2-zC94tsxY.js.br +0 -0
  284. package/payload/server/public/assets/maximize-2-zC94tsxY.js.gz +0 -0
  285. package/payload/server/public/assets/operator-BtWNEMh-.js +1 -0
  286. package/payload/server/public/assets/operator-BtWNEMh-.js.br +0 -0
  287. package/payload/server/public/assets/operator-BtWNEMh-.js.gz +0 -0
  288. package/payload/server/public/assets/page-BFm91p0e.js +1 -0
  289. package/payload/server/public/assets/page-BFm91p0e.js.br +0 -0
  290. package/payload/server/public/assets/page-BFm91p0e.js.gz +0 -0
  291. package/payload/server/public/assets/{page-E74MYB18.js → page-Ccl0FazM.js} +3 -3
  292. package/payload/server/public/assets/page-Ccl0FazM.js.br +0 -0
  293. package/payload/server/public/assets/page-Ccl0FazM.js.gz +0 -0
  294. package/payload/server/public/assets/{public-CI6K1sNW.js → public-BpC6cn9S.js} +1 -1
  295. package/payload/server/public/assets/public-BpC6cn9S.js.br +0 -0
  296. package/payload/server/public/assets/public-BpC6cn9S.js.gz +0 -0
  297. package/payload/server/public/assets/{rotate-ccw-PWu_QGrD.js → rotate-ccw-BNcqbHkZ.js} +1 -1
  298. package/payload/server/public/assets/rotate-ccw-BNcqbHkZ.js.br +0 -0
  299. package/payload/server/public/assets/rotate-ccw-BNcqbHkZ.js.gz +0 -0
  300. package/payload/server/public/assets/routines-D5iia-XG.js +1 -0
  301. package/payload/server/public/assets/routines-D5iia-XG.js.br +0 -0
  302. package/payload/server/public/assets/routines-D5iia-XG.js.gz +0 -0
  303. package/payload/server/public/assets/{skills-g8HvunPA.js → skills-COLAw_jt.js} +1 -1
  304. package/payload/server/public/assets/skills-COLAw_jt.js.br +0 -0
  305. package/payload/server/public/assets/skills-COLAw_jt.js.gz +0 -0
  306. package/payload/server/public/assets/tasks-CZDQI4nB.js +1 -0
  307. package/payload/server/public/assets/tasks-CZDQI4nB.js.br +0 -0
  308. package/payload/server/public/assets/tasks-CZDQI4nB.js.gz +0 -0
  309. package/payload/server/public/assets/{time-entry-format-BXWuQ6Sw.js → time-entry-format-laTFzawg.js} +1 -1
  310. package/payload/server/public/assets/time-entry-format-laTFzawg.js.br +0 -0
  311. package/payload/server/public/assets/time-entry-format-laTFzawg.js.gz +0 -0
  312. package/payload/server/public/assets/{triangle-alert-BNshRC13.js → triangle-alert-DrwqhEog.js} +1 -1
  313. package/payload/server/public/assets/triangle-alert-DrwqhEog.js.br +0 -0
  314. package/payload/server/public/assets/triangle-alert-DrwqhEog.js.gz +0 -0
  315. package/payload/server/public/assets/{useCopyFeedback-CwTZ9DqH.js → useCopyFeedback-Cxme5GK6.js} +1 -1
  316. package/payload/server/public/assets/useCopyFeedback-Cxme5GK6.js.br +0 -0
  317. package/payload/server/public/assets/useCopyFeedback-Cxme5GK6.js.gz +0 -0
  318. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css +1 -0
  319. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css.br +0 -0
  320. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css.gz +0 -0
  321. package/payload/server/public/assets/useSubAccountSwitcher-C_1E11Dv.js +14 -0
  322. package/payload/server/public/assets/useSubAccountSwitcher-C_1E11Dv.js.br +0 -0
  323. package/payload/server/public/assets/useSubAccountSwitcher-C_1E11Dv.js.gz +0 -0
  324. package/payload/server/public/assets/{useVoiceRecorder-BGqV5R6u.js → useVoiceRecorder-DUBpVa2T.js} +1 -1
  325. package/payload/server/public/assets/useVoiceRecorder-DUBpVa2T.js.br +0 -0
  326. package/payload/server/public/assets/useVoiceRecorder-DUBpVa2T.js.gz +0 -0
  327. package/payload/server/public/assets/{wrench-DQ045Pyk.js → wrench-DWuxPnzF.js} +1 -1
  328. package/payload/server/public/assets/wrench-DWuxPnzF.js.br +0 -0
  329. package/payload/server/public/assets/wrench-DWuxPnzF.js.gz +0 -0
  330. package/payload/server/public/browser.html +4 -4
  331. package/payload/server/public/calendar.html +7 -7
  332. package/payload/server/public/chat.html +13 -13
  333. package/payload/server/public/data.html +11 -11
  334. package/payload/server/public/graph.html +9 -9
  335. package/payload/server/public/index.html +14 -14
  336. package/payload/server/public/operator.html +14 -14
  337. package/payload/server/public/public.html +13 -13
  338. package/payload/server/public/routines.html +6 -6
  339. package/payload/server/public/skills.html +5 -5
  340. package/payload/server/public/tasks.html +6 -6
  341. package/payload/server/server.js +6631 -5690
  342. package/payload/server/public/assets/AdminLoginScreens-Dar_MMJm.js.br +0 -0
  343. package/payload/server/public/assets/AdminLoginScreens-Dar_MMJm.js.gz +0 -0
  344. package/payload/server/public/assets/AdminShell-CpaI2F_p.js +0 -2
  345. package/payload/server/public/assets/AdminShell-CpaI2F_p.js.br +0 -0
  346. package/payload/server/public/assets/AdminShell-CpaI2F_p.js.gz +0 -0
  347. package/payload/server/public/assets/activity-B1rt4GIy.js.br +0 -0
  348. package/payload/server/public/assets/activity-B1rt4GIy.js.gz +0 -0
  349. package/payload/server/public/assets/admin-DE3lLNje.js +0 -1
  350. package/payload/server/public/assets/admin-DE3lLNje.js.br +0 -0
  351. package/payload/server/public/assets/admin-DE3lLNje.js.gz +0 -0
  352. package/payload/server/public/assets/agents-BXq8woVf.js +0 -1
  353. package/payload/server/public/assets/agents-BXq8woVf.js.br +0 -0
  354. package/payload/server/public/assets/agents-BXq8woVf.js.gz +0 -0
  355. package/payload/server/public/assets/browser-1QSCPl3X.js.br +0 -0
  356. package/payload/server/public/assets/browser-1QSCPl3X.js.gz +0 -0
  357. package/payload/server/public/assets/calendar-D009qWVV.js.br +0 -0
  358. package/payload/server/public/assets/calendar-D009qWVV.js.gz +0 -0
  359. package/payload/server/public/assets/chat-CUg1fTqJ.js +0 -1
  360. package/payload/server/public/assets/chat-CUg1fTqJ.js.br +0 -1
  361. package/payload/server/public/assets/chat-CUg1fTqJ.js.gz +0 -0
  362. package/payload/server/public/assets/chevron-left-C2JEy7uU.js +0 -1
  363. package/payload/server/public/assets/chevron-left-C2JEy7uU.js.br +0 -0
  364. package/payload/server/public/assets/chevron-right-DWa047Ys.js +0 -1
  365. package/payload/server/public/assets/chevron-right-DWa047Ys.js.br +0 -0
  366. package/payload/server/public/assets/clock-C3OqfCnn.js +0 -1
  367. package/payload/server/public/assets/clock-C3OqfCnn.js.br +0 -0
  368. package/payload/server/public/assets/clock-C3OqfCnn.js.gz +0 -0
  369. package/payload/server/public/assets/data-Bu_yCScC.js +0 -1
  370. package/payload/server/public/assets/data-Bu_yCScC.js.br +0 -0
  371. package/payload/server/public/assets/data-Bu_yCScC.js.gz +0 -0
  372. package/payload/server/public/assets/file-text-DwGAfCsd.js.br +0 -0
  373. package/payload/server/public/assets/file-text-DwGAfCsd.js.gz +0 -0
  374. package/payload/server/public/assets/graph-D-DGlfhW.js.br +0 -0
  375. package/payload/server/public/assets/graph-D-DGlfhW.js.gz +0 -0
  376. package/payload/server/public/assets/graph-labels-BbX3fXzl.js +0 -1
  377. package/payload/server/public/assets/graph-labels-BbX3fXzl.js.br +0 -0
  378. package/payload/server/public/assets/graph-labels-BbX3fXzl.js.gz +0 -0
  379. package/payload/server/public/assets/maximize-2-C_-KapxH.js.br +0 -0
  380. package/payload/server/public/assets/maximize-2-C_-KapxH.js.gz +0 -0
  381. package/payload/server/public/assets/operator-CFrZVcv6.js +0 -1
  382. package/payload/server/public/assets/operator-CFrZVcv6.js.br +0 -0
  383. package/payload/server/public/assets/operator-CFrZVcv6.js.gz +0 -0
  384. package/payload/server/public/assets/page-CHt62f1_.js +0 -1
  385. package/payload/server/public/assets/page-CHt62f1_.js.br +0 -0
  386. package/payload/server/public/assets/page-CHt62f1_.js.gz +0 -0
  387. package/payload/server/public/assets/page-E74MYB18.js.br +0 -0
  388. package/payload/server/public/assets/page-E74MYB18.js.gz +0 -0
  389. package/payload/server/public/assets/public-CI6K1sNW.js.br +0 -0
  390. package/payload/server/public/assets/public-CI6K1sNW.js.gz +0 -0
  391. package/payload/server/public/assets/rotate-ccw-PWu_QGrD.js.br +0 -0
  392. package/payload/server/public/assets/rotate-ccw-PWu_QGrD.js.gz +0 -0
  393. package/payload/server/public/assets/routines-Cp3_XS7S.js +0 -1
  394. package/payload/server/public/assets/routines-Cp3_XS7S.js.br +0 -0
  395. package/payload/server/public/assets/routines-Cp3_XS7S.js.gz +0 -0
  396. package/payload/server/public/assets/skills-g8HvunPA.js.br +0 -0
  397. package/payload/server/public/assets/skills-g8HvunPA.js.gz +0 -0
  398. package/payload/server/public/assets/tasks-CMC_jDVm.js +0 -1
  399. package/payload/server/public/assets/tasks-CMC_jDVm.js.br +0 -0
  400. package/payload/server/public/assets/tasks-CMC_jDVm.js.gz +0 -0
  401. package/payload/server/public/assets/time-entry-format-BXWuQ6Sw.js.br +0 -2
  402. package/payload/server/public/assets/time-entry-format-BXWuQ6Sw.js.gz +0 -0
  403. package/payload/server/public/assets/triangle-alert-BNshRC13.js.br +0 -0
  404. package/payload/server/public/assets/triangle-alert-BNshRC13.js.gz +0 -0
  405. package/payload/server/public/assets/useCopyFeedback-CwTZ9DqH.js.br +0 -0
  406. package/payload/server/public/assets/useCopyFeedback-CwTZ9DqH.js.gz +0 -0
  407. package/payload/server/public/assets/useSubAccountSwitcher-BuUYMDWl.js +0 -14
  408. package/payload/server/public/assets/useSubAccountSwitcher-BuUYMDWl.js.br +0 -0
  409. package/payload/server/public/assets/useSubAccountSwitcher-BuUYMDWl.js.gz +0 -0
  410. package/payload/server/public/assets/useSubAccountSwitcher-dzDnmWq9.css +0 -1
  411. package/payload/server/public/assets/useSubAccountSwitcher-dzDnmWq9.css.br +0 -0
  412. package/payload/server/public/assets/useSubAccountSwitcher-dzDnmWq9.css.gz +0 -0
  413. package/payload/server/public/assets/useVoiceRecorder-BGqV5R6u.js.br +0 -0
  414. package/payload/server/public/assets/useVoiceRecorder-BGqV5R6u.js.gz +0 -0
  415. package/payload/server/public/assets/wrench-DQ045Pyk.js.br +0 -0
  416. package/payload/server/public/assets/wrench-DQ045Pyk.js.gz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"graph-client.js","sourceRoot":"","sources":["../../src/lib/graph-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE/E,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AA0C/B,0EAA0E;AAC1E,SAAS,mBAAmB,CAAC,GAAY;IACvC,MAAM,CAAC,GAAG,GAOT,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IAEjD,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAkC,CAAC;YACnE,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzC,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAC3D,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;QAC3D,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC;IAClE,CAAC;SAAM,IAAI,CAAC,CAAC,OAAO,YAAY,GAAG,EAAE,CAAC;QACpC,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;QACxF,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC;IAC/D,CAAC;SAAM,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAiC,CAAC;QAC9C,gBAAgB;YACd,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;QACnE,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC;IAC3E,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAEtE,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,iBAAiB,EAAE,CAAC;IACvE,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC7C,OAAO;oBACL,IAAI,EAAE,wBAAwB;oBAC9B,UAAU;oBACV,YAAY,EAAE,OAAO,GAAG,IAAI;iBAC7B,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,IAAI,IAAI,KAAK,6BAA6B,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,IAAI,SAAS,EAAE,CAAC;IACpF,CAAC;IACD,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,qEAAqE;IACrE,oEAAoE;IACpE,IAAI,UAAU,KAAK,GAAG,IAAI,IAAI,KAAK,4BAA4B,EAAE,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,uEAAuE;IACvE,uEAAuE;IACvE,2EAA2E;IAC3E,uEAAuE;IACvE,2EAA2E;IAC3E,gEAAgE;IAChE,IAAI,UAAU,KAAK,GAAG,IAAI,IAAI,KAAK,mCAAmC,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACpD,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,mBAAmB,EAAE,CAAC;IACvF,CAAC;IACD,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,aAAa,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC;QACjB,sEAAsE;QACtE,4EAA4E;QAC5E,6EAA6E;QAC7E,yEAAyE;QACzE,wEAAwE;QACxE,2EAA2E;QAC3E,mDAAmD;QACnD,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE;QAC1D,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAY,EAAE,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;2EAC2E;AAC3E,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;AACvC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAyB,EACzB,YAAY,GAAG,KAAK;IAEpB,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,oDAAoD,SAAS,iCAAiC,CAC/F,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,4DAA4D,SAAS,iCAAiC,CACvG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,8EAA8E;IAC9E,wEAAwE;IACxE,qCAAqC;IACrC,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACxC,GAAG,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,OAAO,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;IAClG,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,wEAAwE;IACxE,kEAAkE;IAClE,IAAI,CAAC;QACH,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,4DAA4D,SAAS,iCAAiC,CACvG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;YAChD,GAAG,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/D,OAAO,OAAO,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC;gBACzC,QAAQ;gBACR,QAAQ;gBACR,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAC9B,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,EAC/C,SAAS,CAAC,UAAU,EACpB,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CACjF,CAAC;YACF,GAAG,CAAC;gBACF,KAAK,EAAE,iBAAiB;gBACxB,OAAO,EAAE,SAAS;gBAClB,SAAS;gBACT,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,WAAW,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED;oCACoC;AACpC,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,OAAO,IAAI,KAAK,CACd,6DAA6D,SAAS,oCAAoC,CAC3G,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,kBAAkB,CAC/B,MAAyB,EACzB,mBAA2B,EAC3B,MAAc,EACd,MAAc;IAEd,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IACrC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;YACvD,GAAG,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC,WAAW,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;YAClC,uEAAuE;YACvE,qEAAqE;YACrE,wEAAwE;YACxE,0DAA0D;YAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;gBAC3D,GAAG,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAClE,OAAO,OAAO,CAAC,WAAW,CAAC;YAC7B,CAAC;YACD,GAAG,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAChE,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,GAAG,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAAC,GAAY,EAAE,UAAsB,EAAE,SAAiB;IACnF,MAAM,KAAK,GAAG,GAAG,YAAY,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;QAC7C,GAAG,CAAC;YACF,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,MAAM,EAAG,GAAa,CAAC,OAAO;SAC/B,CAAC,CAAC;QACH,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,KAAK,CACd,4CAA4C,SAAS,qBAAqB,CAC3E,CAAC;IACJ,CAAC;IACD,GAAG,CAAC;QACF,KAAK,EAAE,yBAAyB;QAChC,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI;QAChC,UAAU,EAAE,KAAK,EAAE,UAAU,IAAI,IAAI;QACrC,MAAM,EAAG,GAAa,CAAC,OAAO;KAC/B,CAAC,CAAC;IACH,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAyB,EACzB,MAAsC,EACtC,OAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IAEvC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,6EAA6E;IAC7E,OAAO,IAAI,EAAE,CAAC;QACZ,QAAQ,IAAI,CAAC,CAAC;QACd,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACpC,GAAG,CAAC;gBACF,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,MAAM,CAAC,SAAS;gBACzB,MAAM,EAAE,GAAG,CAAC,UAAU;gBACtB,IAAI,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACzB,YAAY,EAAE,GAAG,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;gBAC7E,sEAAsE;gBACtE,mEAAmE;gBACnE,uEAAuE;gBACvE,uEAAuE;gBACvE,oEAAoE;gBACpE,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc;aACvC,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC3B,GAAG,CAAC;oBACF,KAAK,EAAE,kBAAkB;oBACzB,OAAO,EAAE,MAAM,CAAC,SAAS;oBACzB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;iBACxC,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACb,qEAAqE,MAAM,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,6IAA6I,CACtP,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,0DAA0D,MAAM,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,IAAI,CAClG,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,+CAA+C,MAAM,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,qRAAqR,CACxW,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACtC,kEAAkE;gBAClE,kEAAkE;gBAClE,kEAAkE;gBAClE,uEAAuE;gBACvE,kBAAkB;gBAClB,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;oBACrD,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;wBACrB,CAAC,CAAC,gBAAgB;wBAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;4BACjC,CAAC,CAAC,qBAAqB;4BACvB,CAAC,CAAC,IAAI,CAAC;gBACf,GAAG,CAAC;oBACF,KAAK,EAAE,oBAAoB;oBAC3B,OAAO,EAAE,MAAM,CAAC,SAAS;oBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,OAAO,IAAI,SAAS;oBAC7B,sEAAsE;oBACtE,oEAAoE;oBACpE,oEAAoE;oBACpE,mDAAmD;oBACnD,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC,CAAC;gBACH,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CACb,WAAW,OAAO,kCAAkC,MAAM,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,yDAAyD,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,SAAS,CACzM,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,2CAA2C,MAAM,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,uFAAuF,CACtK,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1C,mEAAmE;gBACnE,iEAAiE;gBACjE,oEAAoE;gBACpE,wEAAwE;gBACxE,MAAM,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC5C,SAAS;YACX,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,CAAC,SAAS,iCAAiC,CACtF,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzD,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAyB,EACzB,YAA6D,EAC7D,OAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IAEvC,OAAO,SAAS,CACd,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,GAAG,GAAG,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAG5C,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9E,CAAC,EACD,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,UAAU,CACvB,MAAyB,EACzB,MAAmC,EACnC,IAAY,EACZ,IAAwB,EACxB,IAAmB;IAEnB,OAAO,SAAS,CACd,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;YACrC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;YACd,CAAC,CAAC,MAAM,KAAK,OAAO;gBAClB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACjB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAa,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,wEAAwE;YACxE,uEAAuE;YACvE,mEAAmE;YACnE,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,SAAS,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,kBAAkB,EAAE,CACF,CAAC;YAClF,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;YAC5B,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,GAAG,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,IAAI,GAAY,IAAI,CAAC;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7C,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,0EAA0E;IAC1E,4CAA4C;IAC5C,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CACjD,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAyB,EACzB,IAAY,EACZ,IAAwB,EACxB,OAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IAEvC,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAyB,EACzB,IAAY,EACZ,IAAwB,EACxB,OAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IAEvC,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,yCAAyC;AACzC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAyB,EACzB,IAAY,EACZ,OAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IAEvC,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"graph-client.js","sourceRoot":"","sources":["../../src/lib/graph-client.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,19 @@ export interface MailboxInfo {
9
9
  refreshTokenExpSec: number | null;
10
10
  tokenWithinRefreshWindow: boolean;
11
11
  folderCount: number | null;
12
+ /**
13
+ * Which mailbox the CREDENTIAL fields above describe, and which mailbox
14
+ * `folderCount` was counted in. They are the same mailbox for a signed-in
15
+ * one, and different for a delegated one: a shared mailbox holds no
16
+ * credential, so every auth field belongs to the delegator while the folder
17
+ * count belongs to the shared mailbox. Reporting both in one flat object
18
+ * without saying so invited reading a healthy token as proof the shared
19
+ * mailbox is reachable (Task 2122).
20
+ */
21
+ credentialsOf: "signed-in" | "delegator";
22
+ /** The mailbox `folderCount` was counted in, when it is not the credential
23
+ * holder's own. Null for a signed-in mailbox. */
24
+ foldersOf: string | null;
12
25
  }
13
26
  /**
14
27
  * Health probe: answers "did account X auth?" + "is the token in the
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-info.d.ts","sourceRoot":"","sources":["../../src/tools/mailbox-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,MAAM,WAAW,eAAe;CAE/B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wBAAwB,EAAE,OAAO,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAWD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAwDpF"}
1
+ {"version":3,"file":"mailbox-info.d.ts","sourceRoot":"","sources":["../../src/tools/mailbox-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,MAAM,WAAW,eAAe;CAE/B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wBAAwB,EAAE,OAAO,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;OAQG;IACH,aAAa,EAAE,WAAW,GAAG,WAAW,CAAC;IACzC;qDACiD;IACjD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAWD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkEpF"}
@@ -8,6 +8,11 @@ import { log } from "../lib/log.js";
8
8
  export async function runMailboxInfo(config) {
9
9
  const blob = config.tokenStore.read();
10
10
  const startMs = Date.now();
11
+ // A non-default prefix means the folder count will be read from a shared
12
+ // mailbox while every credential field below belongs to the delegator.
13
+ const delegatedTo = config.mailboxPathPrefix && config.mailboxPathPrefix !== "/me"
14
+ ? decodeURIComponent(config.mailboxPathPrefix.replace(/^\/users\//, ""))
15
+ : null;
11
16
  if (!blob) {
12
17
  log({
13
18
  event: "mailbox-info",
@@ -23,6 +28,8 @@ export async function runMailboxInfo(config) {
23
28
  refreshTokenExpSec: null,
24
29
  tokenWithinRefreshWindow: false,
25
30
  folderCount: null,
31
+ credentialsOf: delegatedTo ? "delegator" : "signed-in",
32
+ foldersOf: delegatedTo,
26
33
  };
27
34
  }
28
35
  let folderCount = null;
@@ -53,6 +60,8 @@ export async function runMailboxInfo(config) {
53
60
  refreshTokenExpSec: Math.floor(blob.refreshTokenExpiry / 1000),
54
61
  tokenWithinRefreshWindow,
55
62
  folderCount,
63
+ credentialsOf: delegatedTo ? "delegator" : "signed-in",
64
+ foldersOf: delegatedTo,
56
65
  };
57
66
  }
58
67
  //# sourceMappingURL=mailbox-info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-info.js","sourceRoot":"","sources":["../../src/tools/mailbox-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAyBpC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAyB;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC;YACF,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,MAAM,CAAC,SAAS;YACzB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;QACH,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,IAAI;YACjB,kBAAkB,EAAE,IAAI;YACxB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE;YACf,OAAO,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAiC,CAAC;QAC1G,CAAC,EACD,EAAE,IAAI,EAAE,cAAc,EAAE,CACzB,CAAC;QACF,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,0CAA0C;QAC1C,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,MAAM,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IAClE,GAAG,CAAC;QACF,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,wBAAwB;QACxB,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC;QAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;KAChC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACtD,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC9D,wBAAwB;QACxB,WAAW;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mailbox-info.js","sourceRoot":"","sources":["../../src/tools/mailbox-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAsCpC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAyB;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,WAAW,GACf,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,KAAK,KAAK;QAC5D,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC;YACF,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,MAAM,CAAC,SAAS;YACzB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;QACH,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,IAAI;YACjB,kBAAkB,EAAE,IAAI;YACxB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;YACtD,SAAS,EAAE,WAAW;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE;YACf,OAAO,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAiC,CAAC;QAC1G,CAAC,EACD,EAAE,IAAI,EAAE,cAAc,EAAE,CACzB,CAAC;QACF,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,0CAA0C;QAC1C,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,MAAM,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IAClE,GAAG,CAAC;QACF,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,wBAAwB;QACxB,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC;QAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;KAChC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACtD,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC9D,wBAAwB;QACxB,WAAW;QACX,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;QACtD,SAAS,EAAE,WAAW;KACvB,CAAC;AACJ,CAAC"}
@@ -1,6 +1,16 @@
1
1
  import { type MailboxStatus } from "../auth/mailbox-registry.js";
2
+ /**
3
+ * A listed mailbox's usability. The two additions to `MailboxStatus` describe
4
+ * states only a delegated record can be in: `delegated` (attached and its
5
+ * delegator is connected) and `delegator-missing` (attached, but the mailbox
6
+ * that reaches it is no longer connected, so nothing can address it until the
7
+ * delegator is re-registered or the record is removed).
8
+ */
9
+ export type MailboxListStatus = MailboxStatus | "delegated" | "delegator-missing";
2
10
  export interface MailboxListItem {
3
- /** Opaque directory handle under mailboxes/ — stable even when unreadable. */
11
+ /** Opaque directory handle under mailboxes/ — stable even when unreadable.
12
+ * For a delegated entry this is the DELEGATOR's key, since a shared mailbox
13
+ * owns no directory of its own. */
4
14
  mailboxKey: string;
5
15
  /** The mailbox email address, when the blob is readable. */
6
16
  mailbox: string | null;
@@ -10,24 +20,48 @@ export interface MailboxListItem {
10
20
  refreshExpired: boolean;
11
21
  readable: boolean;
12
22
  /** Usability at a glance — only `ok` is addressable by email right now. */
13
- status: MailboxStatus;
23
+ status: MailboxListStatus;
24
+ /** Whether this mailbox signed in, or is reached through one that did. */
25
+ kind: "signed-in" | "delegated";
26
+ /** The delegator's identity for a delegated entry, else null. */
27
+ via: string | null;
28
+ /** Only set for a delegated entry under `verify`. Null means "not probed",
29
+ * never "unreachable". */
30
+ reachable: boolean | null;
14
31
  }
15
32
  export interface MailboxListResult {
16
33
  count: number;
17
34
  /** How many blobs are on disk but do not decrypt/parse — an orphaned store. */
18
35
  unreadable: number;
19
- /** How many mailboxes are usable by their email now (status `ok`). A record
20
- * present but blank-email or refresh-expired counts in `count`, not here — so
21
- * a bare `count` is never mistaken for "connected and addressable". */
36
+ /** How many SIGNED-IN mailboxes are usable by their email now (status `ok`).
37
+ * A record present but blank-email or refresh-expired counts in `count`, not
38
+ * here — so a bare `count` is never mistaken for "connected and addressable".
39
+ * Delegated records are counted by `delegated`, never here. */
22
40
  addressable: number;
41
+ /** How many entries are delegated shared mailboxes. */
42
+ delegated: number;
23
43
  mailboxes: MailboxListItem[];
24
44
  }
45
+ export interface MailboxListOpts {
46
+ /** Probe every delegated entry against Graph and report `reachable`. Off by
47
+ * default: the listing is a local reconcile and must stay usable when Graph
48
+ * is unreachable. */
49
+ verify?: boolean;
50
+ /** Injected, so the local listing carries no Graph dependency of its own. */
51
+ probe?: (address: string, viaMailboxKey: string) => Promise<boolean>;
52
+ }
25
53
  /**
26
- * List every Outlook mailbox attached to this account. Local only reads the
27
- * on-disk stores, never Graph so it reconciles what is stored against what the
54
+ * List every Outlook mailbox attached to this account: the ones that signed in,
55
+ * and the shared ones reached through them. Local by default reads the stored
56
+ * records, never the network — so it reconciles what is stored against what the
28
57
  * agent can address even when Graph is unreachable. An unreadable blob is
29
58
  * surfaced (`readable:false`) rather than dropped, closing the no-event blind
30
59
  * spot where a mailbox silently falls out of addressability.
60
+ *
61
+ * `verify` is the on-demand reconcile for the one drift this cannot see from
62
+ * disk: Full Access revoked in Exchange after the mailbox was attached. There is
63
+ * deliberately no timer doing this in the background — it would spend Graph
64
+ * quota continuously on a condition the operator changes rarely.
31
65
  */
32
- export declare function runMailboxList(accountId: string, accountsDir: string): MailboxListResult;
66
+ export declare function runMailboxList(accountId: string, accountsDir: string, opts?: MailboxListOpts): Promise<MailboxListResult>;
33
67
  //# sourceMappingURL=mailbox-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-list.d.ts","sourceRoot":"","sources":["../../src/tools/mailbox-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGlF,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB;;2EAEuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAoBxF"}
1
+ {"version":3,"file":"mailbox-list.d.ts","sourceRoot":"","sources":["../../src/tools/mailbox-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAIlF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B;;uCAEmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,MAAM,EAAE,iBAAiB,CAAC;IAC1B,0EAA0E;IAC1E,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAChC,iEAAiE;IACjE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB;8BAC0B;IAC1B,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB;;;mEAG+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B;;yBAEqB;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAyD5B"}
@@ -1,31 +1,71 @@
1
1
  import { MailboxRegistry } from "../auth/mailbox-registry.js";
2
+ import { DelegatedStore } from "../auth/delegated-store.js";
2
3
  import { log } from "../lib/log.js";
3
4
  /**
4
- * List every Outlook mailbox attached to this account. Local only reads the
5
- * on-disk stores, never Graph so it reconciles what is stored against what the
5
+ * List every Outlook mailbox attached to this account: the ones that signed in,
6
+ * and the shared ones reached through them. Local by default reads the stored
7
+ * records, never the network — so it reconciles what is stored against what the
6
8
  * agent can address even when Graph is unreachable. An unreadable blob is
7
9
  * surfaced (`readable:false`) rather than dropped, closing the no-event blind
8
10
  * spot where a mailbox silently falls out of addressability.
11
+ *
12
+ * `verify` is the on-demand reconcile for the one drift this cannot see from
13
+ * disk: Full Access revoked in Exchange after the mailbox was attached. There is
14
+ * deliberately no timer doing this in the background — it would spend Graph
15
+ * quota continuously on a condition the operator changes rarely.
9
16
  */
10
- export function runMailboxList(accountId, accountsDir) {
17
+ export async function runMailboxList(accountId, accountsDir, opts = {}) {
11
18
  const boxes = new MailboxRegistry(accountId, accountsDir).list();
12
- const unreadable = boxes.filter((b) => !b.readable).length;
13
- const addressable = boxes.filter((b) => b.status === "ok").length;
14
- log({ event: "mailbox-list", account: accountId, count: boxes.length, unreadable, addressable });
15
- return {
16
- count: boxes.length,
19
+ const delegatedMap = new DelegatedStore(accountId, accountsDir).read();
20
+ const signedIn = boxes.map((b) => ({
21
+ mailboxKey: b.mailboxKey,
22
+ mailbox: b.mail,
23
+ graphUserId: b.graphUserId,
24
+ scopes: b.scopes,
25
+ tokenExpSec: b.tokenExpSec,
26
+ refreshExpired: b.refreshExpired,
27
+ readable: b.readable,
28
+ status: b.status,
29
+ kind: "signed-in",
30
+ via: null,
31
+ reachable: null,
32
+ }));
33
+ const delegated = [];
34
+ for (const [address, entry] of Object.entries(delegatedMap)) {
35
+ // Only a readable delegator can address anything, and only a readable one
36
+ // can be probed — there would be no token to probe with otherwise.
37
+ const delegator = boxes.find((b) => b.mailboxKey === entry.viaMailboxKey && b.readable);
38
+ const reachable = delegator && opts.verify && opts.probe
39
+ ? await opts.probe(address, entry.viaMailboxKey)
40
+ : null;
41
+ delegated.push({
42
+ mailboxKey: entry.viaMailboxKey,
43
+ mailbox: address,
44
+ graphUserId: null,
45
+ scopes: delegator?.scopes ?? [],
46
+ tokenExpSec: null,
47
+ refreshExpired: delegator?.refreshExpired ?? false,
48
+ readable: Boolean(delegator),
49
+ status: delegator ? "delegated" : "delegator-missing",
50
+ kind: "delegated",
51
+ via: delegator
52
+ ? (delegator.mail ?? delegator.graphUserId ?? delegator.mailboxKey)
53
+ : entry.viaMailboxKey,
54
+ reachable,
55
+ });
56
+ }
57
+ const mailboxes = [...signedIn, ...delegated];
58
+ const unreadable = signedIn.filter((b) => !b.readable).length;
59
+ const addressable = signedIn.filter((b) => b.status === "ok").length;
60
+ log({
61
+ event: "mailbox-list",
62
+ account: accountId,
63
+ count: mailboxes.length,
17
64
  unreadable,
18
65
  addressable,
19
- mailboxes: boxes.map((b) => ({
20
- mailboxKey: b.mailboxKey,
21
- mailbox: b.mail,
22
- graphUserId: b.graphUserId,
23
- scopes: b.scopes,
24
- tokenExpSec: b.tokenExpSec,
25
- refreshExpired: b.refreshExpired,
26
- readable: b.readable,
27
- status: b.status,
28
- })),
29
- };
66
+ delegated: delegated.length,
67
+ verified: opts.verify ? delegated.filter((d) => d.reachable !== null).length : 0,
68
+ });
69
+ return { count: mailboxes.length, unreadable, addressable, delegated: delegated.length, mailboxes };
30
70
  }
31
71
  //# sourceMappingURL=mailbox-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-list.js","sourceRoot":"","sources":["../../src/tools/mailbox-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AA2BpC;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,WAAmB;IACnE,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IAClE,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IACjG,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,UAAU;QACV,WAAW;QACX,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,OAAO,EAAE,CAAC,CAAC,IAAI;YACf,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mailbox-list.js","sourceRoot":"","sources":["../../src/tools/mailbox-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Attach a shared or delegated Microsoft 365 mailbox to this account.
3
+ *
4
+ * A shared mailbox has no sign-in, so nothing is registered here and no token is
5
+ * minted. What is attached is a pointer to the signed-in mailbox whose Exchange
6
+ * Full Access reaches it. Access is PROVED before anything is written: the
7
+ * operator learning at attach time that the delegation is missing is the whole
8
+ * point, because the alternative is a bare 403 days later on an ordinary mail
9
+ * call, which reads as a broken connection rather than a missing permission.
10
+ */
11
+ import { type GraphClientConfig } from "../lib/graph-client.js";
12
+ /** The delegated scope every shared-mailbox read and write depends on. */
13
+ export declare const SHARED_MAIL_SCOPE = "Mail.ReadWrite.Shared";
14
+ export interface SharedAddDeps {
15
+ /** The DELEGATOR's config: its tokens are what address the shared mailbox. */
16
+ config: GraphClientConfig;
17
+ accountsDir: string;
18
+ viaMailboxKey: string;
19
+ viaIdentity: string;
20
+ viaScopes: string[];
21
+ nowMs: number;
22
+ /**
23
+ * Proves the delegator can actually open the shared mailbox. Injected rather
24
+ * than called directly so this tool is exercisable without a network, and so
25
+ * the Graph dependency stays with the caller that already owns one.
26
+ */
27
+ probe: (probeConfig: GraphClientConfig, address: string) => Promise<void>;
28
+ }
29
+ export interface SharedMailboxAddResult {
30
+ address: string;
31
+ via: string;
32
+ /** True when the address was already attached. The probe still ran, so a
33
+ * re-add doubles as a re-check that the delegation still holds. */
34
+ alreadyAttached: boolean;
35
+ }
36
+ /**
37
+ * The real probe: open the shared mailbox's Inbox through the delegator's
38
+ * tokens. Exported so `index.ts` supplies it and the tool stays injectable.
39
+ * Deliberately reads `/me/mailFolders/Inbox` — the prefix on `probeConfig`
40
+ * rewrites it to `/users/<address>/…`, so a success here is evidence about the
41
+ * exact path `outlook-mail-list` will take, not an approximation of it.
42
+ */
43
+ export declare function graphInboxProbe(probeConfig: GraphClientConfig, address: string): Promise<void>;
44
+ export declare function runSharedMailboxAdd(deps: SharedAddDeps, args: {
45
+ address: string;
46
+ }): Promise<SharedMailboxAddResult>;
47
+ //# sourceMappingURL=shared-mailbox-add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-mailbox-add.d.ts","sourceRoot":"","sources":["../../src/tools/shared-mailbox-add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAIhC,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ;uEACmE;IACnE,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAiDjC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Attach a shared or delegated Microsoft 365 mailbox to this account.
3
+ *
4
+ * A shared mailbox has no sign-in, so nothing is registered here and no token is
5
+ * minted. What is attached is a pointer to the signed-in mailbox whose Exchange
6
+ * Full Access reaches it. Access is PROVED before anything is written: the
7
+ * operator learning at attach time that the delegation is missing is the whole
8
+ * point, because the alternative is a bare 403 days later on an ordinary mail
9
+ * call, which reads as a broken connection rather than a missing permission.
10
+ */
11
+ import { callGraph, classifyGraphError, sharedMailboxPrefix, } from "../lib/graph-client.js";
12
+ import { DelegatedStore, normalizeAddress } from "../auth/delegated-store.js";
13
+ import { log } from "../lib/log.js";
14
+ /** The delegated scope every shared-mailbox read and write depends on. */
15
+ export const SHARED_MAIL_SCOPE = "Mail.ReadWrite.Shared";
16
+ /**
17
+ * The real probe: open the shared mailbox's Inbox through the delegator's
18
+ * tokens. Exported so `index.ts` supplies it and the tool stays injectable.
19
+ * Deliberately reads `/me/mailFolders/Inbox` — the prefix on `probeConfig`
20
+ * rewrites it to `/users/<address>/…`, so a success here is evidence about the
21
+ * exact path `outlook-mail-list` will take, not an approximation of it.
22
+ */
23
+ export async function graphInboxProbe(probeConfig, address) {
24
+ await callGraph(probeConfig, async (client) => client.api("/me/mailFolders/Inbox").select("id").get(), { tool: "shared-mailbox-add", target: address });
25
+ }
26
+ export async function runSharedMailboxAdd(deps, args) {
27
+ const address = normalizeAddress(args.address);
28
+ const account = deps.config.accountId;
29
+ if (!deps.viaScopes.includes(SHARED_MAIL_SCOPE)) {
30
+ log({ event: "shared-add", account, address, via: deps.viaMailboxKey, outcome: "no-scope" });
31
+ throw new Error(`The mailbox ${deps.viaIdentity} was connected without the ${SHARED_MAIL_SCOPE} scope, so it cannot reach a shared mailbox. Re-run outlook-account-register for ${deps.viaIdentity} and consent again. If the consent screen dead-ends, revoke this app at https://account.microsoft.com/privacy/app-access and re-run it.`);
32
+ }
33
+ const probeConfig = {
34
+ ...deps.config,
35
+ mailboxPathPrefix: sharedMailboxPrefix(address),
36
+ };
37
+ try {
38
+ await deps.probe(probeConfig, address);
39
+ }
40
+ catch (err) {
41
+ // Status, never prose. A 403 here is a missing Exchange delegation and a
42
+ // 404 is a wrong address; both are the operator's to fix and each has its
43
+ // own remedy, so they must not collapse into one message.
44
+ const status = classifyGraphError(err).statusCode;
45
+ if (status === 403) {
46
+ log({ event: "shared-add", account, address, via: deps.viaMailboxKey, outcome: "forbidden" });
47
+ throw new Error(`${deps.viaIdentity} does not have Full Access to ${address}, so Graph refuses it. Grant Full Access in the Microsoft 365 admin centre (Teams & groups, Shared mailboxes, ${address}, Members / Read and manage), then run this again. No licence is needed on ${address}.`);
48
+ }
49
+ if (status === 404) {
50
+ log({ event: "shared-add", account, address, via: deps.viaMailboxKey, outcome: "not-found" });
51
+ throw new Error(`There is no mailbox with this address in the tenant: ${address}. Check the spelling, and that it is a mailbox rather than a distribution list.`);
52
+ }
53
+ throw err;
54
+ }
55
+ const store = new DelegatedStore(account, deps.accountsDir);
56
+ const alreadyAttached = address in store.read();
57
+ store.add(address, deps.viaMailboxKey, deps.nowMs);
58
+ log({
59
+ event: "shared-add",
60
+ account,
61
+ address,
62
+ via: deps.viaMailboxKey,
63
+ outcome: alreadyAttached ? "ok-reattached" : "ok",
64
+ });
65
+ return { address, via: deps.viaIdentity, alreadyAttached };
66
+ }
67
+ //# sourceMappingURL=shared-mailbox-add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-mailbox-add.js","sourceRoot":"","sources":["../../src/tools/shared-mailbox-add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Detach a shared mailbox. Drops the pointer only: no token is touched, and the
3
+ * mailbox that delegates for it keeps working exactly as before.
4
+ */
5
+ export interface SharedMailboxRemoveResult {
6
+ address: string;
7
+ /** False when the address was not attached in the first place, which is
8
+ * reported rather than treated as an error — the end state is the same. */
9
+ removed: boolean;
10
+ }
11
+ export declare function runSharedMailboxRemove(accountId: string, accountsDir: string, address: string): SharedMailboxRemoveResult;
12
+ //# sourceMappingURL=shared-mailbox-remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-mailbox-remove.d.ts","sourceRoot":"","sources":["../../src/tools/shared-mailbox-remove.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB;+EAC2E;IAC3E,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,yBAAyB,CAU3B"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Detach a shared mailbox. Drops the pointer only: no token is touched, and the
3
+ * mailbox that delegates for it keeps working exactly as before.
4
+ */
5
+ import { DelegatedStore, normalizeAddress } from "../auth/delegated-store.js";
6
+ import { log } from "../lib/log.js";
7
+ export function runSharedMailboxRemove(accountId, accountsDir, address) {
8
+ const normalized = normalizeAddress(address);
9
+ const removed = new DelegatedStore(accountId, accountsDir).remove(normalized);
10
+ log({
11
+ event: "shared-remove",
12
+ account: accountId,
13
+ address: normalized,
14
+ outcome: removed ? "ok" : "absent",
15
+ });
16
+ return { address: normalized, removed };
17
+ }
18
+ //# sourceMappingURL=shared-mailbox-remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-mailbox-remove.js","sourceRoot":"","sources":["../../src/tools/shared-mailbox-remove.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AASpC,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,WAAmB,EACnB,OAAe;IAEf,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9E,GAAG,CAAC;QACF,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;KACnC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC"}
@@ -34,8 +34,12 @@ Run once per brand to mint the app whose ID goes in that brand's `brand.json`. N
34
34
  - `User.Read`
35
35
  - `Mail.ReadWrite`
36
36
  - `Mail.Send`
37
- - `Calendars.Read`
37
+ - `Mail.ReadWrite.Shared`
38
+ - `Mail.Send.Shared`
39
+ - `Calendars.ReadWrite`
38
40
  - `Contacts.Read`
41
+
42
+ The two `.Shared` permissions are what make a shared or delegated mailbox reachable. Without them Graph returns 403 on `/users/<address>/…` even when the signed-in user holds Full Access, and the plugin can only ever see the mailbox that signed in. An app registered before these were added needs them added in the portal on the same **API permissions → Add a permission → Microsoft Graph → Delegated permissions** screen, and every mailbox connected under the old consent must be re-registered before it can attach a shared mailbox — widening the requested list does not widen a grant already given.
39
43
  9. Leave admin consent to the end user: with delegated scopes on a multi-tenant app, each end user consents for their own mailbox at first sign-in. (Frictionless cross-tenant consent is smoother once the app is publisher-verified via MPN — a separate enabling step.)
40
44
  10. Set the value in the brand's `brand.json` and re-bundle:
41
45
  ```jsonc
@@ -105,9 +109,18 @@ data/accounts/<accountId>/secrets/outlook/
105
109
  ├── mailboxes/
106
110
  │ ├── <graphUserId-A>/tokens.enc # AES-256-CBC "<iv-hex>:<cipher-hex>" of mailbox A's token JSON blob
107
111
  │ └── <graphUserId-B>/tokens.enc # mailbox B — coexists, never overwritten by A
108
- └── pending-devicecode.enc # transient — the device_code between register + poll; cleared on any terminal outcome
112
+ ├── pending-devicecode.enc # transient — the device_code between register + poll; cleared on any terminal outcome
113
+ └── delegated.json # plain JSON, 0600 — shared mailboxes reached through a signed-in one
109
114
  ```
110
115
 
116
+ **Shared mailboxes hold no credential.** A Microsoft 365 shared mailbox has no sign-in, so it can never have a `tokens.enc` of its own. `delegated.json` records only which signed-in mailbox reaches it:
117
+
118
+ ```json
119
+ { "team@company.com": { "viaMailboxKey": "<the delegator's mailboxKey>", "addedAt": 1753724400000 } }
120
+ ```
121
+
122
+ Every call it serves runs on that mailbox's tokens against `/users/<address>/…` instead of `/me/…` (`GraphClientConfig.mailboxPathPrefix`, applied inside `createGraphClient`). The file is plain JSON because it holds no secret, and is written 0600 under the same 0700 secrets directory so its permissions never widen the directory's. Removing a shared mailbox drops the pointer and touches no token. A record whose delegator is no longer connected resolves to a typed `delegator-missing` refusal naming that delegator, never a silent failure.
123
+
111
124
  **Migration.** A pre-multi-mailbox install has a single `tokens.enc` at the
112
125
  account root. On first read the registry moves it into
113
126
  `mailboxes/<graphUserId>/tokens.enc`. Because the AES key is unchanged, the
@@ -2,6 +2,14 @@
2
2
 
3
3
  Microsoft Graph endpoints used by each tool, with the response shape and the fields selected.
4
4
 
5
+ ## Mailbox path prefix
6
+
7
+ Every endpoint in this document is written `/me/…`, which is the signed-in mailbox. A shared or delegated mailbox is addressed by the same paths under a different root: `createGraphClient` rewrites a leading `/me` to `/users/<encoded address>` when the resolved mailbox is delegated (`GraphClientConfig.mailboxPathPrefix`, default `/me`). The rewrite lives in the one client factory, so read paths (`callGraph`, `callGraphPaged`), write paths (`writeGraph`) and the paginated cursor all inherit it and no call site needs to know. An absolute `@odata.nextLink` URL is returned untouched, since it already carries its own root — corrupting it is the failure this narrow rule exists to avoid.
8
+
9
+ That is why no endpoint below needs a shared-mailbox variant. Two tool families are the exception and are refused rather than rewritten: `calendar-*` and `contacts-*`, because the register flow requests `Mail.ReadWrite.Shared` and `Mail.Send.Shared` and deliberately not the Calendars or Contacts shared scopes. The refusal is raised at the top of `callGraph`, before any request is built, so neither family can reach Graph under a delegated prefix and return a bare 403.
10
+
11
+ **`outlook-shared-mailbox-add`** is the one tool that addresses a mailbox it has not resolved yet: it builds a config carrying the shared prefix and issues `GET /users/<address>/mailFolders/Inbox?$select=id` (written in source as `/me/mailFolders/Inbox`, rewritten by the prefix) to prove the delegation before writing the record. `403` is reported as a missing Full Access grant and `404` as a wrong address; both are classified by status, never by the error's prose.
12
+
5
13
  ## Item id contract
6
14
 
7
15
  Outlook item ids are **not** stable by default. Graph rotates an item's id when the item is moved or re-saved — including by the operator's own mail client, which no code here controls. A rotated id returns `404 ErrorItemNotFound`, so a handle stored moments earlier can stop resolving with nothing wrong on our side. This is exactly how a live draft appeared to "vanish" from an operator's Drafts folder: our `PATCH` returned `200`, the client rotated the id, and the next call by that id 404'd.
@@ -30,7 +30,7 @@ The client ID ships with the brand, so there is no app to register and no Azure
30
30
  Connect a mailbox via the device-code flow. The operator never needs the box's browser and never screen-shares.
31
31
 
32
32
  1. Call **`outlook-account-register`**. It returns immediately with `{ status: "pending", userCode, verificationUri, verificationUriComplete, expiresInSec, intervalSec }`. Relay the `userCode` and `verificationUri` to the operator in your reply so the sign-in can begin.
33
- 2. The operator opens `verificationUri` (`microsoft.com/devicelogin`) on any device (their phone or laptop), enters the `userCode`, signs in with the Microsoft account they want to connect, and consents to the requested scopes (`offline_access`, `User.Read`, `Mail.ReadWrite`, `Mail.Send`, `Calendars.ReadWrite`, `Contacts.Read`). `Mail.Send` enables sending and `Calendars.ReadWrite` enables calendar control; a mailbox last consented on an older read-only scope set must re-register before send or any calendar write succeeds.
33
+ 2. The operator opens `verificationUri` (`microsoft.com/devicelogin`) on any device (their phone or laptop), enters the `userCode`, signs in with the Microsoft account they want to connect, and consents to the requested scopes (`offline_access`, `User.Read`, `Mail.ReadWrite`, `Mail.Send`, `Mail.ReadWrite.Shared`, `Mail.Send.Shared`, `Calendars.ReadWrite`, `Contacts.Read`). `Mail.Send` enables sending, `Calendars.ReadWrite` enables calendar control, and the two `.Shared` scopes are what let this mailbox reach a shared mailbox it has Full Access to; a mailbox last consented on an older scope set must re-register before send, any calendar write, or any shared mailbox succeeds.
34
34
  3. **The server completes the sign-in automatically. You do not need to poll.** As soon as the code is issued in step 1, a background dispatcher on the server begins polling Microsoft on the code's own cadence and harvests the token the moment the operator finishes consenting, usually within about half a minute. The flow is poll-driven (Microsoft's confirmation page authenticates the code at Microsoft and pushes nothing back to this plugin), and the server is what polls it, so a mailbox connects on its own with no further action from you. Once the operator says they have entered the code and consented, confirm the mailbox is addressable with `outlook-mailbox-info` or `outlook-mailbox-list` (a `status:ok` entry). `outlook-account-register-poll` stays available to force an immediate check, and is the fallback if the server dispatcher is not running: `{ status: "pending" }` means still waiting, `{ status: "registered", graphUserId, scopes, tokenExpSec }` is the completion signal, `{ status: "expired" }` means the code lapsed so restart at step 1, `{ status: "denied" }` means the operator declined.
35
35
 
36
36
  **An operator "done" means confirm, not poll.** A message like "done", "he confirmed", or "she signed in" means the server has harvested the token or will within its cadence. Confirm with a read-only `outlook-mailbox-info` or `outlook-mailbox-list` check. You only need `outlook-account-register-poll` if that confirmation shows the mailbox still unregistered and you want to force the harvest immediately rather than wait for the next dispatcher tick.
@@ -47,6 +47,26 @@ The revoke path below is scoped to one specific, visible failure. It is not a ge
47
47
 
48
48
  **Microsoft mail does not use IMAP or app passwords.** Microsoft retired Basic auth for Exchange Online and app passwords stopped working. Never route a Microsoft mailbox through the `email` plugin's IMAP path, and never suggest an app password. The device-code flow above is the only supported connection.
49
49
 
50
+ ## Shared mailboxes (team@, info@, accounts@)
51
+
52
+ A shared mailbox has **no sign-in of its own**. Nobody ever signs in *as* it, so `outlook-account-register` can never connect one and a shared address will not appear in the mailbox list until it is attached. That is not a limit of Microsoft's and not a reason to buy anything.
53
+
54
+ **Never tell an operator to give a shared mailbox a licence so it can sign in.** That answer costs them a seat for a capability they already have. The supported route is delegation: whoever has Full Access to the shared mailbox connects their own mailbox normally, and the shared one is attached to it.
55
+
56
+ 1. Connect the person's own mailbox with `outlook-account-register` if it is not connected already.
57
+ 2. Call **`outlook-shared-mailbox-add address=team@company.com`**, adding `via=<their address>` when the account has more than one mailbox connected.
58
+ 3. From then on, pass the shared address as `mailbox` on any mail tool: `outlook-mail-list mailbox=team@company.com`, `outlook-mail-send mailbox=team@company.com …`. `outlook-mailbox-list` shows it with `kind:delegated` and `via`.
59
+
60
+ The add call proves the access before it stores anything, so its refusals are the real answer and should be relayed as they are:
61
+
62
+ - **"does not have Full Access"** — the delegation itself is missing. The operator grants it in the Microsoft 365 admin centre (Teams & groups → Shared mailboxes → the mailbox → Members / Read and manage). Nothing is bought and no licence is involved.
63
+ - **"no mailbox with this address in the tenant"** — the address is wrong, or it is a distribution list rather than a mailbox. A distribution list cannot be attached; it has no mailbox to read.
64
+ - **"connected without the Mail.ReadWrite.Shared scope"** — the person's mailbox was connected before this plugin asked for the shared scopes. Re-run `outlook-account-register` for that mailbox and it will work.
65
+
66
+ **What a shared mailbox does not cover.** Mail only. Calendar and contacts tools refuse on a shared mailbox with a message saying so, because this install deliberately does not ask for the Calendars or Contacts shared scopes. Detach one with `outlook-shared-mailbox-remove`; that drops the pointer and touches no credential.
67
+
68
+ If the mailbox stops answering later, the delegation was probably revoked in Exchange: `outlook-mailbox-list verify:true` probes each attached shared mailbox and reports `reachable`.
69
+
50
70
  ## Reading mail
51
71
 
52
72
  - `outlook-mail-list` — mail newest-first, default top=25, folder=Inbox. Returns Microsoft's short `bodyPreview` (~255 chars) for cheap triage. Add `since`/`before` (ISO date-times) for a date window. To reach mail older than the newest page, pass the response's `nextCursor` back as `cursor` — repeat until `nextCursor` is null. Filter by sender or subject via `outlook-mail-search`.