@rubytech/create-sitedesk-code 0.1.522 → 0.1.524

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 (843) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts +99 -0
  3. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -0
  4. package/payload/platform/lib/agent-dispatch-rule/dist/index.js +228 -0
  5. package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -0
  6. package/payload/platform/lib/agent-dispatch-rule/package.json +6 -0
  7. package/payload/platform/lib/agent-dispatch-rule/src/__tests__/rule.test.ts +384 -0
  8. package/payload/platform/lib/agent-dispatch-rule/src/index.ts +269 -0
  9. package/payload/platform/lib/agent-dispatch-rule/tsconfig.json +9 -0
  10. package/payload/platform/lib/agent-dispatch-rule/vitest.config.ts +9 -0
  11. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
  12. package/payload/platform/lib/graph-style/dist/index.js +28 -0
  13. package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
  14. package/payload/platform/lib/graph-style/src/__tests__/caption-coverage.test.ts +7 -0
  15. package/payload/platform/lib/graph-style/src/index.ts +24 -0
  16. package/payload/platform/lib/graph-write/dist/__tests__/merge-on.test.d.ts.map +1 -0
  17. package/payload/platform/lib/graph-write/dist/__tests__/merge-on.test.js.map +1 -0
  18. package/payload/platform/lib/graph-write/dist/index.d.ts +16 -0
  19. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  20. package/payload/platform/lib/graph-write/dist/index.js +83 -6
  21. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  22. package/payload/platform/lib/graph-write/src/index.ts +117 -10
  23. package/payload/platform/lib/routine-templates/dist/index.d.ts +151 -0
  24. package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -0
  25. package/payload/platform/lib/routine-templates/dist/index.js +207 -0
  26. package/payload/platform/lib/routine-templates/dist/index.js.map +1 -0
  27. package/payload/platform/lib/routine-templates/dist/roster.d.ts +57 -0
  28. package/payload/platform/lib/routine-templates/dist/roster.d.ts.map +1 -0
  29. package/payload/platform/lib/routine-templates/dist/roster.js +182 -0
  30. package/payload/platform/lib/routine-templates/dist/roster.js.map +1 -0
  31. package/payload/platform/lib/routine-templates/dist/seed-cli.d.ts +2 -0
  32. package/payload/platform/lib/routine-templates/dist/seed-cli.d.ts.map +1 -0
  33. package/payload/platform/lib/routine-templates/dist/seed-cli.js +64 -0
  34. package/payload/platform/lib/routine-templates/dist/seed-cli.js.map +1 -0
  35. package/payload/platform/lib/routine-templates/package.json +6 -0
  36. package/payload/platform/lib/routine-templates/src/__tests__/roster.test.ts +170 -0
  37. package/payload/platform/lib/routine-templates/src/__tests__/seed.test.ts +298 -0
  38. package/payload/platform/lib/routine-templates/src/index.ts +299 -0
  39. package/payload/platform/lib/routine-templates/src/roster.ts +206 -0
  40. package/payload/platform/lib/routine-templates/src/seed-cli.ts +65 -0
  41. package/payload/platform/lib/routine-templates/tsconfig.json +9 -0
  42. package/payload/platform/lib/routine-templates/vitest.config.ts +9 -0
  43. package/payload/platform/neo4j/edge-annotations.json +2 -2
  44. package/payload/platform/neo4j/schema.cypher +25 -1
  45. package/payload/platform/package.json +3 -2
  46. package/payload/platform/plugins/admin/PLUGIN.md +3 -2
  47. package/payload/platform/plugins/admin/hooks/__tests__/mailbox-inject.test.sh +501 -0
  48. package/payload/platform/plugins/admin/hooks/mailbox-inject.sh +299 -0
  49. package/payload/platform/plugins/admin/mcp/dist/index.js +39 -1
  50. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  51. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +317 -68
  52. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
  53. package/payload/platform/plugins/docs/references/admin-ui.md +301 -64
  54. package/payload/platform/plugins/docs/references/memory-guide.md +11 -1
  55. package/payload/platform/plugins/docs/references/workflows.md +4 -2
  56. package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js +72 -1
  57. package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js.map +1 -1
  58. package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js +4 -1
  59. package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js.map +1 -1
  60. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
  61. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +4 -2
  62. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
  63. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +0 -6
  64. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -1
  65. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +24 -2
  66. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -1
  67. package/payload/platform/plugins/email/references/email-reference.md +1 -1
  68. package/payload/platform/plugins/graph/.claude-plugin/plugin.json +1 -1
  69. package/payload/platform/plugins/graph/PLUGIN.md +1 -1
  70. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  71. package/payload/platform/plugins/memory/mcp/dist/index.js +12 -5
  72. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  73. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.d.ts +2 -0
  74. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.d.ts.map +1 -0
  75. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.js +197 -0
  76. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.js.map +1 -0
  77. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +55 -9
  78. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -1
  79. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +96 -0
  80. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -1
  81. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts +7 -0
  82. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts.map +1 -1
  83. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.d.ts +29 -0
  84. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.d.ts.map +1 -0
  85. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.js +126 -0
  86. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.js.map +1 -0
  87. package/payload/platform/plugins/memory/mcp/dist/scripts/dream-cycle-sweep.js +7 -4
  88. package/payload/platform/plugins/memory/mcp/dist/scripts/dream-cycle-sweep.js.map +1 -1
  89. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts +1 -0
  90. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts.map +1 -1
  91. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js +18 -1
  92. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js.map +1 -1
  93. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +7 -0
  94. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  95. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +4 -3
  96. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  97. package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -0
  98. package/payload/platform/plugins/memory/references/schema-estate-agent.md +2 -2
  99. package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +4 -4
  100. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts +2 -0
  101. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts.map +1 -0
  102. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js +322 -0
  103. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js.map +1 -0
  104. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js +21 -1
  105. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js.map +1 -1
  106. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts +13 -0
  107. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts.map +1 -1
  108. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js +16 -0
  109. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js.map +1 -1
  110. package/payload/platform/plugins/outlook/mcp/dist/index.js +5 -5
  111. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
  112. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
  113. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +6 -0
  114. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
  115. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts +7 -0
  116. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -1
  117. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +122 -8
  118. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -1
  119. package/payload/platform/plugins/quickbooks/PLUGIN.md +10 -10
  120. package/payload/platform/plugins/scheduling/PLUGIN.md +69 -2
  121. package/payload/platform/plugins/scheduling/mcp/dist/index.js +54 -4
  122. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  123. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js +8 -36
  124. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js.map +1 -1
  125. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.d.ts +2 -0
  126. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.d.ts.map +1 -0
  127. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.js +78 -0
  128. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.js.map +1 -0
  129. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.d.ts +2 -0
  130. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.d.ts.map +1 -0
  131. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js +457 -0
  132. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js.map +1 -0
  133. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +10 -65
  134. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
  135. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +29 -122
  136. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
  137. package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.d.ts +35 -0
  138. package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.d.ts.map +1 -0
  139. package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.js +39 -0
  140. package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.js.map +1 -0
  141. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts +175 -0
  142. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts.map +1 -0
  143. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js +533 -0
  144. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js.map +1 -0
  145. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +123 -9
  146. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
  147. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.d.ts +2 -0
  148. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.d.ts.map +1 -0
  149. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js +189 -0
  150. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js.map +1 -0
  151. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.d.ts +2 -0
  152. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.d.ts.map +1 -0
  153. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.js +95 -0
  154. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.js.map +1 -0
  155. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.d.ts +2 -0
  156. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.d.ts.map +1 -0
  157. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.js +114 -0
  158. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.js.map +1 -0
  159. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +109 -2
  160. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  161. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +340 -9
  162. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  163. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +9 -1
  164. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -1
  165. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +210 -45
  166. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  167. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +43 -1
  168. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
  169. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.js +55 -7
  170. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.js.map +1 -1
  171. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js +45 -1
  172. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js.map +1 -1
  173. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.d.ts +2 -0
  174. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.d.ts.map +1 -0
  175. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.js +96 -0
  176. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.js.map +1 -0
  177. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts +2 -0
  178. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts.map +1 -0
  179. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js +305 -0
  180. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js.map +1 -0
  181. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -1
  182. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +2 -1
  183. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -1
  184. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +5 -0
  185. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
  186. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +13 -0
  187. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
  188. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +4 -0
  189. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -1
  190. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +24 -3
  191. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -1
  192. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.d.ts +33 -0
  193. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.d.ts.map +1 -0
  194. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.js +51 -0
  195. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.js.map +1 -0
  196. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +46 -1
  197. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  198. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +184 -6
  199. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  200. package/payload/platform/plugins/scheduling/skills/routine-control/SKILL.md +48 -0
  201. package/payload/platform/plugins/sweep/skills/email-graph-sweep/SKILL.md +21 -7
  202. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +30 -2
  203. package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +1 -1
  204. package/payload/platform/scripts/__tests__/mailbox-inject-registered.test.sh +80 -0
  205. package/payload/platform/scripts/check-specialist-tool-surface.mjs +92 -16
  206. package/payload/platform/scripts/lib/__tests__/account-settings-mailbox-inject.test.sh +166 -0
  207. package/payload/platform/scripts/lib/account-settings-mailbox-inject.sh +91 -0
  208. package/payload/platform/scripts/lib/provision-account-dir.sh +1 -0
  209. package/payload/platform/scripts/seed-neo4j.sh +41 -0
  210. package/payload/platform/scripts/setup-account.sh +15 -0
  211. package/payload/platform/scripts/verify-skill-tool-surface.sh +91 -2
  212. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  213. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
  214. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  215. package/payload/platform/templates/specialists/agents/librarian.md +1 -1
  216. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  217. package/payload/server/{chunk-K7CJGZPU.js → chunk-VUXKXOJU.js} +342 -152
  218. package/payload/server/{chunk-UX2FRNO7.js → chunk-WT2PFGY4.js} +37 -265
  219. package/payload/server/{chunk-PXNY2TAP.js → chunk-XCR5D2G3.js} +239 -10
  220. package/payload/server/{manager-RKL7JZ4Y.js → manager-4TJK3YOY.js} +2 -2
  221. package/payload/server/maxy-edge.js +2 -2
  222. package/payload/server/public/activity.html +5 -5
  223. package/payload/server/public/agents.html +4 -4
  224. package/payload/server/public/assets/{AdminLoginScreens-zc2_qqh-.js → AdminLoginScreens-BgDjueVe.js} +1 -1
  225. package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.br +0 -0
  226. package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.gz +0 -0
  227. package/payload/server/public/assets/AdminShell-YctTrR-D.js +2 -0
  228. package/payload/server/public/assets/AdminShell-YctTrR-D.js.br +0 -0
  229. package/payload/server/public/assets/AdminShell-YctTrR-D.js.gz +0 -0
  230. package/payload/server/public/assets/{activity-DVgO8YuM.js → activity-DGQt5ys_.js} +1 -1
  231. package/payload/server/public/assets/activity-DGQt5ys_.js.br +0 -0
  232. package/payload/server/public/assets/activity-DGQt5ys_.js.gz +0 -0
  233. package/payload/server/public/assets/admin-DnUxbB3P.js +1 -0
  234. package/payload/server/public/assets/admin-DnUxbB3P.js.br +0 -0
  235. package/payload/server/public/assets/admin-DnUxbB3P.js.gz +0 -0
  236. package/payload/server/public/assets/agents-Bc2LZjwC.js +1 -0
  237. package/payload/server/public/assets/agents-Bc2LZjwC.js.br +0 -0
  238. package/payload/server/public/assets/agents-Bc2LZjwC.js.gz +0 -0
  239. package/payload/server/public/assets/{arc-DaI5MLTq.js → arc-DaudCnXg.js} +1 -1
  240. package/payload/server/public/assets/arc-DaudCnXg.js.br +0 -0
  241. package/payload/server/public/assets/arc-DaudCnXg.js.gz +0 -0
  242. package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js +1 -0
  243. package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
  244. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CBGVUEN9.js → architectureDiagram-Q4EWVU46-BEEC3s7i.js} +1 -1
  245. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.br +0 -0
  246. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.gz +0 -0
  247. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DS6dS4GZ.js → blockDiagram-DXYQGD6D-BIWyfb18.js} +1 -1
  248. package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.br +0 -0
  249. package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.gz +0 -0
  250. package/payload/server/public/assets/{browser-Mw7DY3ft.js → browser-BtF7SzvG.js} +1 -1
  251. package/payload/server/public/assets/browser-BtF7SzvG.js.br +0 -0
  252. package/payload/server/public/assets/browser-BtF7SzvG.js.gz +0 -0
  253. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js → c4Diagram-AHTNJAMY--h6oE2cv.js} +1 -1
  254. package/payload/server/public/assets/c4Diagram-AHTNJAMY--h6oE2cv.js.br +0 -0
  255. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js.gz → c4Diagram-AHTNJAMY--h6oE2cv.js.gz} +0 -0
  256. package/payload/server/public/assets/{calendar-B9gvL_1_.js → calendar-D25EhXbD.js} +1 -1
  257. package/payload/server/public/assets/calendar-D25EhXbD.js.br +0 -0
  258. package/payload/server/public/assets/calendar-D25EhXbD.js.gz +0 -0
  259. package/payload/server/public/assets/channel-TwxCDSpK.js +1 -0
  260. package/payload/server/public/assets/channel-TwxCDSpK.js.br +0 -0
  261. package/payload/server/public/assets/chat-z4jsHFXg.js +1 -0
  262. package/payload/server/public/assets/chat-z4jsHFXg.js.br +0 -0
  263. package/payload/server/public/assets/chat-z4jsHFXg.js.gz +0 -0
  264. package/payload/server/public/assets/chevron-left-BD09SN6R.js +1 -0
  265. package/payload/server/public/assets/chevron-right-ChmWeo7T.js +1 -0
  266. package/payload/server/public/assets/chevron-right-ChmWeo7T.js.br +0 -0
  267. package/payload/server/public/assets/{chunk-2KRD3SAO-B6koUoB7.js → chunk-2KRD3SAO-BwEVlnxo.js} +1 -1
  268. package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.br +0 -0
  269. package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.gz +0 -0
  270. package/payload/server/public/assets/{chunk-336JU56O-BF6BRh8u.js → chunk-336JU56O-DQddTATH.js} +2 -2
  271. package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.br +0 -0
  272. package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.gz +0 -0
  273. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js +1 -0
  274. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.br +0 -0
  275. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.gz +0 -0
  276. package/payload/server/public/assets/{chunk-4BX2VUAB-7sO95xR2.js → chunk-4BX2VUAB-C5p3xTC6.js} +1 -1
  277. package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.br +0 -0
  278. package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.gz +0 -0
  279. package/payload/server/public/assets/{chunk-4TB4RGXK-GCTndJYx.js → chunk-4TB4RGXK-gClfNc1w.js} +1 -1
  280. package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.br +0 -0
  281. package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.gz +0 -0
  282. package/payload/server/public/assets/{chunk-55IACEB6-ggIJf_TC.js → chunk-55IACEB6-DDU_m1ra.js} +1 -1
  283. package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.br +0 -0
  284. package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.gz +0 -0
  285. package/payload/server/public/assets/{chunk-5FUZZQ4R-DeGmkimt.js → chunk-5FUZZQ4R-CZ2jQWNR.js} +1 -1
  286. package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.br +0 -0
  287. package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.gz +0 -0
  288. package/payload/server/public/assets/{chunk-5PVQY5BW-aFIQKk_U.js → chunk-5PVQY5BW-kcZ5kfTg.js} +1 -1
  289. package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.br +0 -0
  290. package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.gz +0 -0
  291. package/payload/server/public/assets/{chunk-67CJDMHE-LS8rUbii.js → chunk-67CJDMHE-9W0Qv0jm.js} +1 -1
  292. package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.br +0 -0
  293. package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.gz +0 -0
  294. package/payload/server/public/assets/{chunk-7N4EOEYR-JKOVngS0.js → chunk-7N4EOEYR-B3gqydR3.js} +1 -1
  295. package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.br +0 -0
  296. package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.gz +0 -0
  297. package/payload/server/public/assets/{chunk-AA7GKIK3-CoXnTVK6.js → chunk-AA7GKIK3-DW8a-2NK.js} +1 -1
  298. package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.br +4 -0
  299. package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
  300. package/payload/server/public/assets/{chunk-BSJP7CBP-CcsqObFg.js → chunk-BSJP7CBP-DqXIO_5R.js} +1 -1
  301. package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.br +0 -0
  302. package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.gz +0 -0
  303. package/payload/server/public/assets/{chunk-CIAEETIT-CpsybR7q.js → chunk-CIAEETIT-BMJfgj2u.js} +1 -1
  304. package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.br +0 -0
  305. package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.gz +0 -0
  306. package/payload/server/public/assets/{chunk-EDXVE4YY-BZ2I9PSq.js → chunk-EDXVE4YY-BxdLPk0b.js} +1 -1
  307. package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.br +0 -0
  308. package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.gz +0 -0
  309. package/payload/server/public/assets/{chunk-ENJZ2VHE-DbTwt6OZ.js → chunk-ENJZ2VHE-Cfe2DCjQ.js} +1 -1
  310. package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.br +0 -0
  311. package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.gz +0 -0
  312. package/payload/server/public/assets/{chunk-FMBD7UC4-D27VnSCa.js → chunk-FMBD7UC4-CdPjwbtf.js} +1 -1
  313. package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.br +0 -0
  314. package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.gz +0 -0
  315. package/payload/server/public/assets/{chunk-FOC6F5B3-C0tU2UFl.js → chunk-FOC6F5B3-Dl6l1KAh.js} +1 -1
  316. package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.br +0 -0
  317. package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.gz +0 -0
  318. package/payload/server/public/assets/{chunk-ICPOFSXX-UPPu2OIq.js → chunk-ICPOFSXX-PnsGrqtx.js} +2 -2
  319. package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.br +0 -0
  320. package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.gz +0 -0
  321. package/payload/server/public/assets/{chunk-K5T4RW27-DIKxqyYw.js → chunk-K5T4RW27--g29_wjW.js} +1 -1
  322. package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.br +0 -0
  323. package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.gz +0 -0
  324. package/payload/server/public/assets/{chunk-KGLVRYIC-CiL4YVLo.js → chunk-KGLVRYIC-CI77ENeO.js} +1 -1
  325. package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.br +3 -0
  326. package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
  327. package/payload/server/public/assets/{chunk-LIHQZDEY-ejKezVlD.js → chunk-LIHQZDEY-CE-XByg6.js} +1 -1
  328. package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.br +0 -0
  329. package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.gz +0 -0
  330. package/payload/server/public/assets/{chunk-ORNJ4GCN-Cc0vqc-D.js → chunk-ORNJ4GCN-DkjJQQSm.js} +1 -1
  331. package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.br +0 -0
  332. package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.gz +0 -0
  333. package/payload/server/public/assets/{chunk-OYMX7WX6-Drxn1qG0.js → chunk-OYMX7WX6-DhogFeD7.js} +1 -1
  334. package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.br +0 -0
  335. package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.gz +0 -0
  336. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js +1 -0
  337. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.br +0 -0
  338. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.gz +0 -0
  339. package/payload/server/public/assets/{chunk-U2HBQHQK-DnbQIkRP.js → chunk-U2HBQHQK-CeaRXuiO.js} +1 -1
  340. package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.br +0 -0
  341. package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.gz +0 -0
  342. package/payload/server/public/assets/{chunk-X2U36JSP-CauTSVWg.js → chunk-X2U36JSP-BqxXeOqf.js} +1 -1
  343. package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.br +0 -0
  344. package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.gz +0 -0
  345. package/payload/server/public/assets/{chunk-XPW4576I-DZqqB9Zi.js → chunk-XPW4576I-DtqJwn2x.js} +1 -1
  346. package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.br +0 -0
  347. package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.gz +0 -0
  348. package/payload/server/public/assets/{chunk-YZCP3GAM-BGHo4Li-.js → chunk-YZCP3GAM-COBlEwQw.js} +1 -1
  349. package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.br +0 -0
  350. package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.gz +0 -0
  351. package/payload/server/public/assets/{chunk-ZZ45TVLE-DWGJKPd7.js → chunk-ZZ45TVLE-CcL088y6.js} +1 -1
  352. package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.br +0 -0
  353. package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.gz +0 -0
  354. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js +1 -0
  355. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.br +0 -0
  356. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.gz +0 -0
  357. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js +1 -0
  358. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.br +0 -0
  359. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.gz +0 -0
  360. package/payload/server/public/assets/clock-Yqf7Ke7I.js +1 -0
  361. package/payload/server/public/assets/clock-Yqf7Ke7I.js.br +0 -0
  362. package/payload/server/public/assets/clock-Yqf7Ke7I.js.gz +0 -0
  363. package/payload/server/public/assets/clone-B3vq32j7.js +1 -0
  364. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-D-95BzXL.js → cose-bilkent-S5V4N54A-kEHVkDNn.js} +1 -1
  365. package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.br +0 -0
  366. package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.gz +0 -0
  367. package/payload/server/public/assets/{dagre-BZYNBHvT.js → dagre-D2wUw1zC.js} +1 -1
  368. package/payload/server/public/assets/dagre-D2wUw1zC.js.br +0 -0
  369. package/payload/server/public/assets/dagre-D2wUw1zC.js.gz +0 -0
  370. package/payload/server/public/assets/{dagre-KV5264BT-DyU4HQLQ.js → dagre-KV5264BT-BWfTDwEs.js} +1 -1
  371. package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.br +0 -0
  372. package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.gz +0 -0
  373. package/payload/server/public/assets/data-RmnKj5nC.js +1 -0
  374. package/payload/server/public/assets/data-RmnKj5nC.js.br +2 -0
  375. package/payload/server/public/assets/data-RmnKj5nC.js.gz +0 -0
  376. package/payload/server/public/assets/{diagram-5BDNPKRD-CCttJ9XA.js → diagram-5BDNPKRD-Tl9dS8w0.js} +1 -1
  377. package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.br +0 -0
  378. package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.gz +0 -0
  379. package/payload/server/public/assets/{diagram-G4DWMVQ6-DvkpgSLO.js → diagram-G4DWMVQ6-CeSe6TMu.js} +1 -1
  380. package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.br +0 -0
  381. package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.gz +0 -0
  382. package/payload/server/public/assets/{diagram-MMDJMWI5-DHmW5Y9k.js → diagram-MMDJMWI5-DYBNJCmk.js} +1 -1
  383. package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.br +0 -0
  384. package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.gz +0 -0
  385. package/payload/server/public/assets/{diagram-TYMM5635-C6T4hwzO.js → diagram-TYMM5635-BmpUGltx.js} +1 -1
  386. package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.br +0 -0
  387. package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.gz +0 -0
  388. package/payload/server/public/assets/{erDiagram-SMLLAGMA-5v_o7s3T.js → erDiagram-SMLLAGMA-DuwuNGqx.js} +1 -1
  389. package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.br +0 -0
  390. package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.gz +0 -0
  391. package/payload/server/public/assets/file-download-CiGklOfA.js +1 -0
  392. package/payload/server/public/assets/file-download-CiGklOfA.js.br +0 -0
  393. package/payload/server/public/assets/file-download-CiGklOfA.js.gz +0 -0
  394. package/payload/server/public/assets/{file-text-dYBnXNEX.js → file-text-XjJPULAZ.js} +1 -1
  395. package/payload/server/public/assets/file-text-XjJPULAZ.js.br +0 -0
  396. package/payload/server/public/assets/file-text-XjJPULAZ.js.gz +0 -0
  397. package/payload/server/public/assets/{flatten-BtIc9jX7.js → flatten-Bu-b1uTY.js} +1 -1
  398. package/payload/server/public/assets/flatten-Bu-b1uTY.js.br +0 -0
  399. package/payload/server/public/assets/flatten-Bu-b1uTY.js.gz +0 -0
  400. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-3UhCDsjt.js → flowDiagram-DWJPFMVM-Bpp8P6Ba.js} +1 -1
  401. package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.br +0 -0
  402. package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.gz +0 -0
  403. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-F2zgHIIQ.js → ganttDiagram-T4ZO3ILL-CE6ppjB4.js} +1 -1
  404. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.br +0 -0
  405. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.gz +0 -0
  406. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js +1 -0
  407. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
  408. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-oQc1N3dT.js → gitGraphDiagram-UUTBAWPF-BdK1GjPr.js} +1 -1
  409. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.br +0 -0
  410. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.gz +0 -0
  411. package/payload/server/public/assets/{graph-CDyzd1Et.js → graph-BjHJ0z_6.js} +3 -3
  412. package/payload/server/public/assets/graph-BjHJ0z_6.js.br +0 -0
  413. package/payload/server/public/assets/graph-BjHJ0z_6.js.gz +0 -0
  414. package/payload/server/public/assets/graph-labels-D-0u37KA.js +1 -0
  415. package/payload/server/public/assets/graph-labels-D-0u37KA.js.br +0 -0
  416. package/payload/server/public/assets/graph-labels-D-0u37KA.js.gz +0 -0
  417. package/payload/server/public/assets/{graphlib-DY4-AT2Q.js → graphlib-CHEXylyU.js} +1 -1
  418. package/payload/server/public/assets/graphlib-CHEXylyU.js.br +0 -0
  419. package/payload/server/public/assets/graphlib-CHEXylyU.js.gz +0 -0
  420. package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js +1 -0
  421. package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
  422. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js +2 -0
  423. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.br +0 -0
  424. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.gz +0 -0
  425. package/payload/server/public/assets/{isEmpty-Bu4fZ8Kf.js → isEmpty-CjH0UASp.js} +1 -1
  426. package/payload/server/public/assets/isEmpty-CjH0UASp.js.br +0 -0
  427. package/payload/server/public/assets/isEmpty-CjH0UASp.js.gz +0 -0
  428. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-wJhSOkuw.js → ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js} +1 -1
  429. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.br +0 -0
  430. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.gz +0 -0
  431. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DgadC6Pz.js → journeyDiagram-VCZTEJTY-ByUPv8q6.js} +1 -1
  432. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.br +0 -0
  433. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.gz +0 -0
  434. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Bs4nQqXI.js → kanban-definition-6JOO6SKY-CFinqhpu.js} +1 -1
  435. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.br +0 -0
  436. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.gz +0 -0
  437. package/payload/server/public/assets/{line-Bnmxy1hO.js → line-Y4ns5Ghi.js} +1 -1
  438. package/payload/server/public/assets/line-Y4ns5Ghi.js.br +0 -0
  439. package/payload/server/public/assets/line-Y4ns5Ghi.js.gz +0 -0
  440. package/payload/server/public/assets/{linear-RvwZxFzh.js → linear-l39GooQ5.js} +1 -1
  441. package/payload/server/public/assets/linear-l39GooQ5.js.br +0 -0
  442. package/payload/server/public/assets/linear-l39GooQ5.js.gz +0 -0
  443. package/payload/server/public/assets/{maximize-2-M-iSaznd.js → maximize-2-BJ9S-nfS.js} +1 -1
  444. package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.br +0 -0
  445. package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.gz +0 -0
  446. package/payload/server/public/assets/{mermaid-parser.core-DeNV8RtA.js → mermaid-parser.core-5w0T1dRj.js} +2 -2
  447. package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.br +0 -0
  448. package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.gz +0 -0
  449. package/payload/server/public/assets/{mermaid.core-BU9IiSCP.js → mermaid.core-DBADY5VW.js} +3 -3
  450. package/payload/server/public/assets/mermaid.core-DBADY5VW.js.br +0 -0
  451. package/payload/server/public/assets/mermaid.core-DBADY5VW.js.gz +0 -0
  452. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-D1PMUxxm.js → mindmap-definition-QFDTVHPH-rHz37loq.js} +1 -1
  453. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.br +0 -0
  454. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.gz +0 -0
  455. package/payload/server/public/assets/operator-Cay4rOOK.js +1 -0
  456. package/payload/server/public/assets/operator-Cay4rOOK.js.br +0 -0
  457. package/payload/server/public/assets/operator-Cay4rOOK.js.gz +0 -0
  458. package/payload/server/public/assets/{ordinal-C2TEWKNu.js → ordinal-D6D6WcTC.js} +1 -1
  459. package/payload/server/public/assets/ordinal-D6D6WcTC.js.br +0 -0
  460. package/payload/server/public/assets/ordinal-D6D6WcTC.js.gz +0 -0
  461. package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js +1 -0
  462. package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
  463. package/payload/server/public/assets/{page-CZ-73FAk.js → page-Cci_j_y7.js} +4 -4
  464. package/payload/server/public/assets/page-Cci_j_y7.js.br +0 -0
  465. package/payload/server/public/assets/page-Cci_j_y7.js.gz +0 -0
  466. package/payload/server/public/assets/page-shuh4ES9.js +1 -0
  467. package/payload/server/public/assets/page-shuh4ES9.js.br +0 -0
  468. package/payload/server/public/assets/page-shuh4ES9.js.gz +0 -0
  469. package/payload/server/public/assets/{pdf-render-C257cidb.js → pdf-render-BSgBp8Fr.js} +1 -1
  470. package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.br +0 -0
  471. package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.gz +0 -0
  472. package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js +1 -0
  473. package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
  474. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BzdNzoKA.js → pieDiagram-DEJITSTG-as0e_DSH.js} +1 -1
  475. package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.br +0 -0
  476. package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.gz +0 -0
  477. package/payload/server/public/assets/{public-CN-ltC8x.js → public-BbJcQGsO.js} +1 -1
  478. package/payload/server/public/assets/public-BbJcQGsO.js.br +0 -0
  479. package/payload/server/public/assets/public-BbJcQGsO.js.gz +0 -0
  480. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-oFr1MJRO.js → quadrantDiagram-34T5L4WZ-B4t8HO9J.js} +1 -1
  481. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.br +0 -0
  482. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.gz +0 -0
  483. package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js +1 -0
  484. package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
  485. package/payload/server/public/assets/{reduce-BGpN5lgn.js → reduce-BtXXK8Ma.js} +1 -1
  486. package/payload/server/public/assets/reduce-BtXXK8Ma.js.br +0 -0
  487. package/payload/server/public/assets/reduce-BtXXK8Ma.js.gz +0 -0
  488. package/payload/server/public/assets/{requirementDiagram-MS252O5E-C9QBQxDh.js → requirementDiagram-MS252O5E-yxh30zHX.js} +1 -1
  489. package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.br +0 -0
  490. package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.gz +0 -0
  491. package/payload/server/public/assets/{rotate-ccw-Buopsc22.js → rotate-ccw-jeSVwUAv.js} +1 -1
  492. package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.br +0 -0
  493. package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.gz +0 -0
  494. package/payload/server/public/assets/routines-D3M1Wh3a.js +1 -0
  495. package/payload/server/public/assets/routines-D3M1Wh3a.js.br +0 -0
  496. package/payload/server/public/assets/routines-D3M1Wh3a.js.gz +0 -0
  497. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-c_y3bvVv.js → sankeyDiagram-XADWPNL6-j-k9Wfty.js} +1 -1
  498. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.br +0 -0
  499. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.gz +0 -0
  500. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-YwlCBPHE.js → sequenceDiagram-FGHM5R23-DGLgcLhC.js} +1 -1
  501. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.br +0 -0
  502. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.gz +0 -0
  503. package/payload/server/public/assets/{skills-DiiuVzDK.js → skills-Bhej2ub1.js} +1 -1
  504. package/payload/server/public/assets/skills-Bhej2ub1.js.br +0 -0
  505. package/payload/server/public/assets/skills-Bhej2ub1.js.gz +0 -0
  506. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BFE3e-FM.js → stateDiagram-FHFEXIEX-C9p1OUMI.js} +1 -1
  507. package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.br +0 -0
  508. package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.gz +0 -0
  509. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js +1 -0
  510. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.br +0 -0
  511. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.gz +0 -0
  512. package/payload/server/public/assets/tasks-qY-dtOI2.js +1 -0
  513. package/payload/server/public/assets/tasks-qY-dtOI2.js.br +0 -0
  514. package/payload/server/public/assets/tasks-qY-dtOI2.js.gz +0 -0
  515. package/payload/server/public/assets/{time-entry-format-BBokCF-D.js → time-entry-format-r5UY9rjG.js} +1 -1
  516. package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.br +0 -0
  517. package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.gz +0 -0
  518. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-azqhmRwZ.js → timeline-definition-GMOUNBTQ-B1g7pgkH.js} +1 -1
  519. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.br +0 -0
  520. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.gz +0 -0
  521. package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js +1 -0
  522. package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
  523. package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +1 -0
  524. package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
  525. package/payload/server/public/assets/{triangle-alert-C_AcpTW5.js → triangle-alert--PCKaewD.js} +1 -1
  526. package/payload/server/public/assets/triangle-alert--PCKaewD.js.br +2 -0
  527. package/payload/server/public/assets/triangle-alert--PCKaewD.js.gz +0 -0
  528. package/payload/server/public/assets/{useCopyFeedback-TdimmPVR.js → useCopyFeedback-Dg5lNgqH.js} +1 -1
  529. package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.br +0 -0
  530. package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.gz +0 -0
  531. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css +1 -0
  532. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.br +0 -0
  533. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.gz +0 -0
  534. package/payload/server/public/assets/useSubAccountSwitcher-CnpeWIYq.js +14 -0
  535. package/payload/server/public/assets/useSubAccountSwitcher-CnpeWIYq.js.br +0 -0
  536. package/payload/server/public/assets/useSubAccountSwitcher-CnpeWIYq.js.gz +0 -0
  537. package/payload/server/public/assets/{useVoiceRecorder-BT2738ZS.js → useVoiceRecorder-BY6ZsGMH.js} +2 -2
  538. package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.br +0 -0
  539. package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.gz +0 -0
  540. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-Da2RfFs8.js → vennDiagram-DHZGUBPP-D2ZjFfh4.js} +1 -1
  541. package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.br +0 -0
  542. package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.gz +0 -0
  543. package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js +1 -0
  544. package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
  545. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-HdrdBYES.js → wardleyDiagram-NUSXRM2D-BFAhfkD8.js} +1 -1
  546. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.br +0 -0
  547. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.gz +0 -0
  548. package/payload/server/public/assets/{wrench-B51s5kGA.js → wrench-Bw1FMolk.js} +1 -1
  549. package/payload/server/public/assets/wrench-Bw1FMolk.js.br +0 -0
  550. package/payload/server/public/assets/wrench-Bw1FMolk.js.gz +0 -0
  551. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DMk6rTcQ.js → xychartDiagram-5P7HB3ND-Dt94h2RQ.js} +1 -1
  552. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.br +0 -0
  553. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.gz +0 -0
  554. package/payload/server/public/brand-defaults.css +1 -0
  555. package/payload/server/public/browser.html +4 -4
  556. package/payload/server/public/calendar.html +7 -7
  557. package/payload/server/public/chat.html +14 -14
  558. package/payload/server/public/data.html +13 -12
  559. package/payload/server/public/graph.html +9 -9
  560. package/payload/server/public/index.html +16 -15
  561. package/payload/server/public/operator.html +15 -15
  562. package/payload/server/public/public.html +14 -14
  563. package/payload/server/public/routines.html +7 -6
  564. package/payload/server/public/skills.html +5 -5
  565. package/payload/server/public/tasks.html +6 -6
  566. package/payload/server/server.js +6623 -5763
  567. package/payload/server/public/assets/AdminLoginScreens-zc2_qqh-.js.br +0 -0
  568. package/payload/server/public/assets/AdminLoginScreens-zc2_qqh-.js.gz +0 -0
  569. package/payload/server/public/assets/AdminShell-IGUdTx5q.js +0 -2
  570. package/payload/server/public/assets/AdminShell-IGUdTx5q.js.br +0 -0
  571. package/payload/server/public/assets/AdminShell-IGUdTx5q.js.gz +0 -0
  572. package/payload/server/public/assets/activity-DVgO8YuM.js.br +0 -0
  573. package/payload/server/public/assets/activity-DVgO8YuM.js.gz +0 -0
  574. package/payload/server/public/assets/admin-xtpM7fgl.js +0 -1
  575. package/payload/server/public/assets/admin-xtpM7fgl.js.br +0 -0
  576. package/payload/server/public/assets/admin-xtpM7fgl.js.gz +0 -0
  577. package/payload/server/public/assets/agents-P0nTIxo-.js +0 -1
  578. package/payload/server/public/assets/agents-P0nTIxo-.js.br +0 -0
  579. package/payload/server/public/assets/agents-P0nTIxo-.js.gz +0 -0
  580. package/payload/server/public/assets/arc-DaI5MLTq.js.br +0 -0
  581. package/payload/server/public/assets/arc-DaI5MLTq.js.gz +0 -0
  582. package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js +0 -1
  583. package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js.br +0 -0
  584. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.br +0 -0
  585. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.gz +0 -0
  586. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.br +0 -0
  587. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.gz +0 -0
  588. package/payload/server/public/assets/browser-Mw7DY3ft.js.br +0 -0
  589. package/payload/server/public/assets/browser-Mw7DY3ft.js.gz +0 -0
  590. package/payload/server/public/assets/c4Diagram-AHTNJAMY-hBSBUZPt.js.br +0 -0
  591. package/payload/server/public/assets/calendar-B9gvL_1_.js.br +0 -0
  592. package/payload/server/public/assets/calendar-B9gvL_1_.js.gz +0 -0
  593. package/payload/server/public/assets/channel-BEokjAeE.js +0 -1
  594. package/payload/server/public/assets/channel-BEokjAeE.js.br +0 -0
  595. package/payload/server/public/assets/chat-DBGqh4wg.js +0 -1
  596. package/payload/server/public/assets/chat-DBGqh4wg.js.br +0 -2
  597. package/payload/server/public/assets/chat-DBGqh4wg.js.gz +0 -0
  598. package/payload/server/public/assets/chevron-left-Bl4vpOM0.js +0 -1
  599. package/payload/server/public/assets/chevron-left-Bl4vpOM0.js.br +0 -0
  600. package/payload/server/public/assets/chevron-right-BExigCnp.js +0 -1
  601. package/payload/server/public/assets/chevron-right-BExigCnp.js.br +0 -0
  602. package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.br +0 -0
  603. package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.gz +0 -0
  604. package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.br +0 -0
  605. package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.gz +0 -0
  606. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js +0 -1
  607. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.br +0 -0
  608. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.gz +0 -0
  609. package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.br +0 -0
  610. package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.gz +0 -0
  611. package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.br +0 -0
  612. package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.gz +0 -0
  613. package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.br +0 -0
  614. package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.gz +0 -0
  615. package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.br +0 -0
  616. package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.gz +0 -0
  617. package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.br +0 -0
  618. package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.gz +0 -0
  619. package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.br +0 -2
  620. package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.gz +0 -0
  621. package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.br +0 -2
  622. package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.gz +0 -0
  623. package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.br +0 -0
  624. package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.gz +0 -0
  625. package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.br +0 -0
  626. package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.gz +0 -0
  627. package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.br +0 -0
  628. package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.gz +0 -0
  629. package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.br +0 -0
  630. package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.gz +0 -0
  631. package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.br +0 -0
  632. package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.gz +0 -0
  633. package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.br +0 -0
  634. package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.gz +0 -0
  635. package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.br +0 -0
  636. package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.gz +0 -0
  637. package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.br +0 -0
  638. package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.gz +0 -0
  639. package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.br +0 -0
  640. package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.gz +0 -0
  641. package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.br +0 -0
  642. package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.gz +0 -0
  643. package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.br +0 -0
  644. package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.gz +0 -0
  645. package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.br +0 -0
  646. package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.gz +0 -0
  647. package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.br +0 -0
  648. package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.gz +0 -0
  649. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js +0 -1
  650. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.br +0 -0
  651. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.gz +0 -0
  652. package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.br +0 -0
  653. package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.gz +0 -0
  654. package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.br +0 -0
  655. package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.gz +0 -0
  656. package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.br +0 -0
  657. package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.gz +0 -0
  658. package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.br +0 -0
  659. package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.gz +0 -0
  660. package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.br +0 -0
  661. package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.gz +0 -0
  662. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js +0 -1
  663. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.br +0 -0
  664. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.gz +0 -0
  665. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js +0 -1
  666. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.br +0 -0
  667. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.gz +0 -0
  668. package/payload/server/public/assets/clock-D8TJvgJC.js +0 -1
  669. package/payload/server/public/assets/clock-D8TJvgJC.js.br +0 -0
  670. package/payload/server/public/assets/clone-Bn7XXVhr.js +0 -1
  671. package/payload/server/public/assets/clone-Bn7XXVhr.js.br +0 -0
  672. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.br +0 -0
  673. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.gz +0 -0
  674. package/payload/server/public/assets/dagre-BZYNBHvT.js.br +0 -0
  675. package/payload/server/public/assets/dagre-BZYNBHvT.js.gz +0 -0
  676. package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.br +0 -0
  677. package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.gz +0 -0
  678. package/payload/server/public/assets/data-HfFSxaC2.js +0 -1
  679. package/payload/server/public/assets/data-HfFSxaC2.js.br +0 -0
  680. package/payload/server/public/assets/data-HfFSxaC2.js.gz +0 -0
  681. package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.br +0 -0
  682. package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.gz +0 -0
  683. package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.br +0 -0
  684. package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.gz +0 -0
  685. package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.br +0 -0
  686. package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.gz +0 -0
  687. package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.br +0 -0
  688. package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.gz +0 -0
  689. package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.br +0 -0
  690. package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.gz +0 -0
  691. package/payload/server/public/assets/file-text-dYBnXNEX.js.br +0 -0
  692. package/payload/server/public/assets/file-text-dYBnXNEX.js.gz +0 -0
  693. package/payload/server/public/assets/flatten-BtIc9jX7.js.br +0 -0
  694. package/payload/server/public/assets/flatten-BtIc9jX7.js.gz +0 -0
  695. package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.br +0 -0
  696. package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.gz +0 -0
  697. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.br +0 -0
  698. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.gz +0 -0
  699. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js +0 -1
  700. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js.br +0 -0
  701. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.br +0 -0
  702. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.gz +0 -0
  703. package/payload/server/public/assets/graph-CDyzd1Et.js.br +0 -0
  704. package/payload/server/public/assets/graph-CDyzd1Et.js.gz +0 -0
  705. package/payload/server/public/assets/graph-labels-D1LkKiJr.js +0 -1
  706. package/payload/server/public/assets/graph-labels-D1LkKiJr.js.br +0 -0
  707. package/payload/server/public/assets/graph-labels-D1LkKiJr.js.gz +0 -0
  708. package/payload/server/public/assets/graphlib-DY4-AT2Q.js.br +0 -0
  709. package/payload/server/public/assets/graphlib-DY4-AT2Q.js.gz +0 -0
  710. package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js +0 -1
  711. package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js.br +0 -0
  712. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js +0 -2
  713. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.br +0 -0
  714. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.gz +0 -0
  715. package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.br +0 -0
  716. package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.gz +0 -0
  717. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.br +0 -0
  718. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.gz +0 -0
  719. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.br +0 -0
  720. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.gz +0 -0
  721. package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.br +0 -0
  722. package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.gz +0 -0
  723. package/payload/server/public/assets/line-Bnmxy1hO.js.br +0 -0
  724. package/payload/server/public/assets/line-Bnmxy1hO.js.gz +0 -0
  725. package/payload/server/public/assets/linear-RvwZxFzh.js.br +0 -0
  726. package/payload/server/public/assets/linear-RvwZxFzh.js.gz +0 -0
  727. package/payload/server/public/assets/maximize-2-M-iSaznd.js.br +0 -0
  728. package/payload/server/public/assets/maximize-2-M-iSaznd.js.gz +0 -0
  729. package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.br +0 -0
  730. package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.gz +0 -0
  731. package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.br +0 -0
  732. package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.gz +0 -0
  733. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.br +0 -0
  734. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.gz +0 -0
  735. package/payload/server/public/assets/operator-9jfCv1Fg.js +0 -1
  736. package/payload/server/public/assets/operator-9jfCv1Fg.js.br +0 -0
  737. package/payload/server/public/assets/operator-9jfCv1Fg.js.gz +0 -0
  738. package/payload/server/public/assets/ordinal-C2TEWKNu.js.br +0 -0
  739. package/payload/server/public/assets/ordinal-C2TEWKNu.js.gz +0 -0
  740. package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js +0 -1
  741. package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js.br +0 -0
  742. package/payload/server/public/assets/page-CZ-73FAk.js.br +0 -0
  743. package/payload/server/public/assets/page-CZ-73FAk.js.gz +0 -0
  744. package/payload/server/public/assets/page-CjwSt7kx.js +0 -1
  745. package/payload/server/public/assets/page-CjwSt7kx.js.br +0 -0
  746. package/payload/server/public/assets/page-CjwSt7kx.js.gz +0 -0
  747. package/payload/server/public/assets/pdf-render-C257cidb.js.br +0 -0
  748. package/payload/server/public/assets/pdf-render-C257cidb.js.gz +0 -0
  749. package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js +0 -1
  750. package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js.br +0 -0
  751. package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.br +0 -0
  752. package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.gz +0 -0
  753. package/payload/server/public/assets/public-CN-ltC8x.js.br +0 -0
  754. package/payload/server/public/assets/public-CN-ltC8x.js.gz +0 -0
  755. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.br +0 -0
  756. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.gz +0 -0
  757. package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js +0 -1
  758. package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js.br +0 -0
  759. package/payload/server/public/assets/reduce-BGpN5lgn.js.br +0 -0
  760. package/payload/server/public/assets/reduce-BGpN5lgn.js.gz +0 -0
  761. package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.br +0 -0
  762. package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.gz +0 -0
  763. package/payload/server/public/assets/rotate-ccw-Buopsc22.js.br +0 -0
  764. package/payload/server/public/assets/rotate-ccw-Buopsc22.js.gz +0 -0
  765. package/payload/server/public/assets/routines-C-yr8ddT.js +0 -1
  766. package/payload/server/public/assets/routines-C-yr8ddT.js.br +0 -0
  767. package/payload/server/public/assets/routines-C-yr8ddT.js.gz +0 -0
  768. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.br +0 -0
  769. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.gz +0 -0
  770. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.br +0 -0
  771. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.gz +0 -0
  772. package/payload/server/public/assets/skills-DiiuVzDK.js.br +0 -0
  773. package/payload/server/public/assets/skills-DiiuVzDK.js.gz +0 -0
  774. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.br +0 -0
  775. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.gz +0 -0
  776. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js +0 -1
  777. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.br +0 -4
  778. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.gz +0 -0
  779. package/payload/server/public/assets/tasks-CnHIfn2_.js +0 -1
  780. package/payload/server/public/assets/tasks-CnHIfn2_.js.br +0 -0
  781. package/payload/server/public/assets/tasks-CnHIfn2_.js.gz +0 -0
  782. package/payload/server/public/assets/time-entry-format-BBokCF-D.js.br +0 -0
  783. package/payload/server/public/assets/time-entry-format-BBokCF-D.js.gz +0 -0
  784. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.br +0 -0
  785. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.gz +0 -0
  786. package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js +0 -1
  787. package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js.br +0 -0
  788. package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js +0 -1
  789. package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js.br +0 -0
  790. package/payload/server/public/assets/triangle-alert-C_AcpTW5.js.br +0 -0
  791. package/payload/server/public/assets/triangle-alert-C_AcpTW5.js.gz +0 -0
  792. package/payload/server/public/assets/useCopyFeedback-TdimmPVR.js.br +0 -0
  793. package/payload/server/public/assets/useCopyFeedback-TdimmPVR.js.gz +0 -0
  794. package/payload/server/public/assets/useSubAccountSwitcher-BwHqV55p.js +0 -14
  795. package/payload/server/public/assets/useSubAccountSwitcher-BwHqV55p.js.br +0 -0
  796. package/payload/server/public/assets/useSubAccountSwitcher-BwHqV55p.js.gz +0 -0
  797. package/payload/server/public/assets/useSubAccountSwitcher-CsrPYqtm.css +0 -1
  798. package/payload/server/public/assets/useSubAccountSwitcher-CsrPYqtm.css.br +0 -0
  799. package/payload/server/public/assets/useSubAccountSwitcher-CsrPYqtm.css.gz +0 -0
  800. package/payload/server/public/assets/useVoiceRecorder-BT2738ZS.js.br +0 -0
  801. package/payload/server/public/assets/useVoiceRecorder-BT2738ZS.js.gz +0 -0
  802. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.br +0 -0
  803. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.gz +0 -0
  804. package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js +0 -1
  805. package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js.br +0 -0
  806. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.br +0 -0
  807. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.gz +0 -0
  808. package/payload/server/public/assets/wrench-B51s5kGA.js.br +0 -0
  809. package/payload/server/public/assets/wrench-B51s5kGA.js.gz +0 -0
  810. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.br +0 -0
  811. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.gz +0 -0
  812. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js → _baseFor-B12He5Rp.js} +0 -0
  813. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.br → _baseFor-B12He5Rp.js.br} +0 -0
  814. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.gz → _baseFor-B12He5Rp.js.gz} +0 -0
  815. /package/payload/server/public/assets/{array-X0JlPOfd.js → array-DO1uCttT.js} +0 -0
  816. /package/payload/server/public/assets/{array-X0JlPOfd.js.br → array-DO1uCttT.js.br} +0 -0
  817. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js → cytoscape.esm-DFn2foqy.js} +0 -0
  818. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.br → cytoscape.esm-DFn2foqy.js.br} +0 -0
  819. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.gz → cytoscape.esm-DFn2foqy.js.gz} +0 -0
  820. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js → defaultLocale-ieI3yFoA.js} +0 -0
  821. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.br → defaultLocale-ieI3yFoA.js.br} +0 -0
  822. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.gz → defaultLocale-ieI3yFoA.js.gz} +0 -0
  823. /package/payload/server/public/assets/{dist-QvbmK1IP.js → dist-DlU7AEeD.js} +0 -0
  824. /package/payload/server/public/assets/{dist-QvbmK1IP.js.br → dist-DlU7AEeD.js.br} +0 -0
  825. /package/payload/server/public/assets/{dist-QvbmK1IP.js.gz → dist-DlU7AEeD.js.gz} +0 -0
  826. /package/payload/server/public/assets/{init-BmUWJJHz.js → init-BCRlEgNP.js} +0 -0
  827. /package/payload/server/public/assets/{init-BmUWJJHz.js.br → init-BCRlEgNP.js.br} +0 -0
  828. /package/payload/server/public/assets/{init-BmUWJJHz.js.gz → init-BCRlEgNP.js.gz} +0 -0
  829. /package/payload/server/public/assets/{katex-BjZuzSQn.js → katex-gkTaZgi6.js} +0 -0
  830. /package/payload/server/public/assets/{katex-BjZuzSQn.js.br → katex-gkTaZgi6.js.br} +0 -0
  831. /package/payload/server/public/assets/{katex-BjZuzSQn.js.gz → katex-gkTaZgi6.js.gz} +0 -0
  832. /package/payload/server/public/assets/{path-CoPyR7c2.js → path-DTmzQFjQ.js} +0 -0
  833. /package/payload/server/public/assets/{path-CoPyR7c2.js.br → path-DTmzQFjQ.js.br} +0 -0
  834. /package/payload/server/public/assets/{path-CoPyR7c2.js.gz → path-DTmzQFjQ.js.gz} +0 -0
  835. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js → preload-helper-eAV8hweq.js} +0 -0
  836. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.br → preload-helper-eAV8hweq.js.br} +0 -0
  837. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.gz → preload-helper-eAV8hweq.js.gz} +0 -0
  838. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js → rough.esm-BFJ-MgcB.js} +0 -0
  839. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.br → rough.esm-BFJ-MgcB.js.br} +0 -0
  840. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.gz → rough.esm-BFJ-MgcB.js.gz} +0 -0
  841. /package/payload/server/public/assets/{src-C2WwTWSY.js → src-9CNk4JU0.js} +0 -0
  842. /package/payload/server/public/assets/{src-C2WwTWSY.js.br → src-9CNk4JU0.js.br} +0 -0
  843. /package/payload/server/public/assets/{src-C2WwTWSY.js.gz → src-9CNk4JU0.js.gz} +0 -0
@@ -67,25 +67,39 @@ function qualifyShortToolName(plugin, tool) {
67
67
  }
68
68
 
69
69
  // Frontmatter walker for PLUGIN.md tools: + hidden: blocks. Returns
70
- // {tools: [string], hidden: [string], hasTools: boolean}. Names only;
71
- // the gate does not consult allowlist booleans because every declared
72
- // tool contributes to the `all` surface.
70
+ // {tools, hidden, hasTools, specialistOnly}. The drift check needs names
71
+ // only every declared tool contributes to the `all` surface regardless of
72
+ // allowlist. `specialistOnly` (Task 2132) additionally carries the names
73
+ // declared unreachable from both the admin and public surfaces, which the
74
+ // reachability check below resolves against the specialist grants.
73
75
  function parsePluginManifest(rawManifest) {
74
76
  const fmMatch = rawManifest.match(/^---\r?\n([\s\S]*?)\r?\n---/);
75
- if (!fmMatch) return { tools: [], hidden: [], hasTools: false };
77
+ if (!fmMatch) return { tools: [], hidden: [], hasTools: false, specialistOnly: [], manifestName: null };
76
78
  const lines = fmMatch[1].split(/\r?\n/);
79
+ // The MCP server namespace is the manifest's own `name:`, which for a nested
80
+ // premium sub-plugin differs from its directory: premium-plugins/real-agent/
81
+ // plugins/loop/PLUGIN.md declares `name: real-agent-loop`, and the agents
82
+ // that hold its tools name them `mcp__plugin_real-agent-loop_real-agent-loop__*`.
83
+ // Used for the reachability set only, so the drift classifier's directory-keyed
84
+ // `all` set keeps its existing behaviour (Task 2132).
85
+ const nameMatch = fmMatch[1].match(/^name:\s*(\S+)\s*$/m);
86
+ const manifestName = nameMatch ? nameMatch[1] : null;
77
87
  const tools = [];
78
88
  const hidden = [];
89
+ const flags = {};
79
90
  let mode = null; // 'tools' | 'hidden' | null
91
+ let cur = null;
80
92
  let hasTools = false;
81
93
  for (const line of lines) {
82
- if (/^tools:\s*\[\s*\]\s*$/.test(line)) { mode = null; continue; }
83
- if (/^tools:\s*$/.test(line)) { mode = 'tools'; hasTools = true; continue; }
84
- if (/^hidden:\s*$/.test(line)) { mode = 'hidden'; continue; }
85
- if (/^[A-Za-z_]/.test(line)) { mode = null; continue; }
94
+ if (/^tools:\s*\[\s*\]\s*$/.test(line)) { mode = null; cur = null; continue; }
95
+ if (/^tools:\s*$/.test(line)) { mode = 'tools'; hasTools = true; cur = null; continue; }
96
+ if (/^hidden:\s*$/.test(line)) { mode = 'hidden'; cur = null; continue; }
97
+ if (/^[A-Za-z_]/.test(line)) { mode = null; cur = null; continue; }
86
98
  if (mode === 'tools') {
87
99
  const nameLine = line.match(/^\s+-\s+name:\s*(.+?)\s*$/);
88
- if (nameLine) { tools.push(nameLine[1]); continue; }
100
+ if (nameLine) { cur = nameLine[1]; tools.push(cur); flags[cur] = {}; continue; }
101
+ const flagLine = line.match(/^\s+(adminAllowlist|publicAllowlist):\s*(true|false)\s*$/);
102
+ if (flagLine && cur) { flags[cur][flagLine[1]] = flagLine[2] === 'true'; continue; }
89
103
  }
90
104
  if (mode === 'hidden') {
91
105
  // Task 1998 — hidden entries carry the same `- name:` + `riskClass:`
@@ -95,7 +109,10 @@ function parsePluginManifest(rawManifest) {
95
109
  if (nameLine) hidden.push(nameLine[1]);
96
110
  }
97
111
  }
98
- return { tools, hidden, hasTools };
112
+ const specialistOnly = tools.filter(
113
+ (t) => flags[t]?.adminAllowlist === false && flags[t]?.publicAllowlist === false,
114
+ );
115
+ return { tools, hidden, hasTools, specialistOnly, manifestName };
99
116
  }
100
117
 
101
118
  // Per-brand tool surface: walk platform/plugins (minus excludedPlugins) +
@@ -109,15 +126,17 @@ export function loadBrandToolSurface(maxyCodeRoot, excludedPlugins, shippedPremi
109
126
  const { PLATFORM_PLUGINS, PREMIUM_ROOT } = rootsFor(maxyCodeRoot);
110
127
  const all = new Set();
111
128
  const maxyPluginSet = new Set();
129
+ const specialistOnlyAll = new Set();
112
130
  const visit = (root, name) => {
113
131
  if (excludedPlugins.has(name)) return;
114
132
  const manifestPath = join(root, name, 'PLUGIN.md');
115
133
  if (!existsSync(manifestPath)) return;
116
- const { tools, hidden, hasTools } = parsePluginManifest(readFileSync(manifestPath, 'utf-8'));
134
+ const { tools, hidden, hasTools, specialistOnly, manifestName } = parsePluginManifest(readFileSync(manifestPath, 'utf-8'));
117
135
  if (!hasTools && hidden.length === 0) return;
118
136
  maxyPluginSet.add(name);
119
137
  for (const t of tools) all.add(canonicalToolName(name, t));
120
138
  for (const h of hidden) all.add(canonicalToolName(name, h));
139
+ for (const s of specialistOnly) specialistOnlyAll.add(canonicalToolName(manifestName ?? name, s));
121
140
  };
122
141
  if (existsSync(PLATFORM_PLUGINS)) {
123
142
  for (const name of readdirSync(PLATFORM_PLUGINS).sort()) {
@@ -138,7 +157,53 @@ export function loadBrandToolSurface(maxyCodeRoot, excludedPlugins, shippedPremi
138
157
  }
139
158
  }
140
159
  }
141
- return { all, maxyPluginSet };
160
+ return { all, maxyPluginSet, specialistOnlyAll };
161
+ }
162
+
163
+ // Task 2132 — the inverse of the drift check. A tool declared
164
+ // `adminAllowlist: false` + `publicAllowlist: false` is reachable only
165
+ // through a specialist's frontmatter `tools:` list. When no agent names it,
166
+ // the tool can never be called: no error, no log line, no failed run. That is
167
+ // a no-event failure, so it needs a standing check rather than an event.
168
+ // `maxy-graph-write_neo4j_cypher` sat unreachable from Task 081 until 2132,
169
+ // taking conversation-archive-enrich's wire step down with it.
170
+ export function collectGrantedTools(agentDirs) {
171
+ const granted = new Set();
172
+ for (const dir of agentDirs) {
173
+ let entries;
174
+ try { entries = readdirSync(dir); } catch { continue; }
175
+ for (const entry of entries) {
176
+ if (!entry.endsWith('.md')) continue;
177
+ if (SKIP_AGENT_BASENAMES.has(basename(entry, '.md').toUpperCase())) continue;
178
+ const fm = readFileSync(join(dir, entry), 'utf-8').match(/^---\r?\n([\s\S]*?)\r?\n---/);
179
+ if (!fm) continue;
180
+ const toolsLine = parseSpecialistToolsLine(fm[1]);
181
+ if (!toolsLine) continue;
182
+ for (const t of splitToolList(toolsLine)) granted.add(t);
183
+ }
184
+ }
185
+ return granted;
186
+ }
187
+
188
+ // Tools deliberately reachable by no agent, each with the reason it is not a
189
+ // mistake. Empty by construction: every tool that would have sat here was
190
+ // fixed in Task 2132 — fourteen admin-called ones moved onto the admin
191
+ // surface, the graph write tool onto the librarian. An entry added later must
192
+ // name why the tool is deliberately callable by nobody, and an entry whose
193
+ // tool has since been granted is itself reported, because a suppression that
194
+ // outlives its cause re-creates the blind spot.
195
+ const REACHABILITY_EXCEPTIONS = new Map([]);
196
+
197
+ export function findUnreachableTools(specialistOnlyAll, granted) {
198
+ const unreachable = [];
199
+ const staleExceptions = [];
200
+ for (const tool of [...specialistOnlyAll].sort()) {
201
+ const isGranted = granted.has(tool);
202
+ const excepted = REACHABILITY_EXCEPTIONS.has(tool);
203
+ if (!isGranted && !excepted) unreachable.push(tool);
204
+ if (isGranted && excepted) staleExceptions.push(tool);
205
+ }
206
+ return { unreachable, staleExceptions };
142
207
  }
143
208
 
144
209
  // Per-brand specialist-agent dirs: platform templates ship with every brand;
@@ -277,12 +342,16 @@ export function runForBrand(maxyCodeRoot, brandName) {
277
342
  throw err;
278
343
  }
279
344
  const shippedSet = new Set(shipped);
280
- const { all, maxyPluginSet } = loadBrandToolSurface(maxyCodeRoot, excludedPlugins, shippedSet);
345
+ const { all, maxyPluginSet, specialistOnlyAll } = loadBrandToolSurface(maxyCodeRoot, excludedPlugins, shippedSet);
281
346
  const agentDirs = collectSpecialistDirs(maxyCodeRoot, shippedSet);
282
347
  const { defects, inspected } = assertSpecialistDrift(agentDirs, all, maxyPluginSet, excludedPlugins);
283
348
  const blocking = defects.filter(d => d.reason !== 'brand-excluded-plugin');
284
349
  const stripList = defects.filter(d => d.reason === 'brand-excluded-plugin');
285
- return { blocking, stripList, inspected };
350
+ const { unreachable, staleExceptions } = findUnreachableTools(
351
+ specialistOnlyAll,
352
+ collectGrantedTools(agentDirs),
353
+ );
354
+ return { blocking, stripList, inspected, unreachable, staleExceptions };
286
355
  }
287
356
 
288
357
  function main(maxyCodeRoot) {
@@ -306,14 +375,21 @@ function main(maxyCodeRoot) {
306
375
  : d.specialistPath;
307
376
  console.error(`[specialist-tool-surface] specialist=${rel} tool=${d.tool} reason=${d.reason} brand=${brandName}`);
308
377
  }
309
- totalBlocking += result.blocking.length;
310
- if (result.blocking.length === 0) {
378
+ for (const tool of result.unreachable) {
379
+ console.error(`[specialist-tool-surface] unreachable-tool=${tool} reason=granted-by-no-agent brand=${brandName}`);
380
+ }
381
+ for (const tool of result.staleExceptions) {
382
+ console.error(`[specialist-tool-surface] stale-reachability-exception=${tool} reason=now-granted brand=${brandName}`);
383
+ }
384
+ totalBlocking += result.blocking.length + result.unreachable.length + result.staleExceptions.length;
385
+ if (result.blocking.length === 0 && result.unreachable.length === 0 && result.staleExceptions.length === 0) {
311
386
  console.log(`[specialist-tool-surface] ok brand=${brandName} inspected=${result.inspected}`);
312
387
  }
313
388
  }
314
389
  if (totalBlocking > 0) {
315
390
  console.error(`[specialist-tool-surface] FAIL: ${totalBlocking} defect(s) across ${brands.length} brand(s).`);
316
391
  console.error(` Rename the tool in the listed file to a registered namespace, or move the plugin off the brand's plugins.excluded list.`);
392
+ console.error(` An unreachable-tool is declared adminAllowlist:false + publicAllowlist:false and named by no agent: grant it to the specialist that needs it, put it on the admin surface, or remove the declaration.`);
317
393
  process.exit(1);
318
394
  }
319
395
  }
@@ -0,0 +1,166 @@
1
+ #!/usr/bin/env bash
2
+ # Regression test for account-settings-mailbox-inject.sh (Task 2157).
3
+ #
4
+ # The lib retrofits the per-turn <mailboxes> injection hook onto existing
5
+ # accounts' .claude/settings.json on every install. provision-account-dir.sh
6
+ # writes the UserPromptSubmit array at provision time only, and setup-account.sh
7
+ # re-provisions the HOUSE account only, so a client sub-account created by the
8
+ # admin-core account-lifecycle tool never gets the hook without this reconcile.
9
+ #
10
+ # Covers:
11
+ # 1. Array with a sibling hook -> updated, command appended, sibling preserved
12
+ # 2. Re-run on the same file -> already-set, file byte-identical
13
+ # 3. Empty UserPromptSubmit array-> updated, whole entry created
14
+ # 4. Command already present -> already-set, no duplicate
15
+ # 5. No .hooks.UserPromptSubmit -> no-hooks, file untouched
16
+ # 6. File absent -> absent
17
+ # 7. Malformed JSON -> rewrite-failed, file untouched
18
+ # 8. settings.json is an array -> rewrite-failed or no-hooks, file untouched
19
+ # 9. reconcile_all_accounts_* -> patches every account.json dir, skips others
20
+ # 10. No temp file is ever left behind, on any path
21
+ #
22
+ # All cases assert the [backfill-2157] status token and the post-state of the file.
23
+
24
+ set -u
25
+
26
+ LIB="$(cd "$(dirname "$0")/.." && pwd)/account-settings-mailbox-inject.sh"
27
+ if [ ! -f "$LIB" ]; then
28
+ echo "FAIL: $LIB not found" >&2
29
+ exit 1
30
+ fi
31
+ # shellcheck source=/dev/null
32
+ . "$LIB"
33
+
34
+ CMD='bash $PLATFORM_ROOT/plugins/admin/hooks/mailbox-inject.sh'
35
+ SIB='bash $PLATFORM_ROOT/plugins/admin/hooks/datetime-inject.sh'
36
+
37
+ PASS=0
38
+ FAIL=0
39
+ TMP="$(mktemp -d)"
40
+ trap 'rm -rf "$TMP"' EXIT
41
+
42
+ ok() { echo "PASS: $1"; PASS=$((PASS+1)); }
43
+ bad() { echo "FAIL: $1" >&2; FAIL=$((FAIL+1)); }
44
+
45
+ # cmds <file> -> every command string in the UserPromptSubmit array, one per line
46
+ cmds() { jq -r '[.hooks.UserPromptSubmit[]?.hooks[]?.command] | .[]' "$1" 2>/dev/null; }
47
+ status_of() { printf '%s' "$1" | /usr/bin/sed 's/.*status=//'; }
48
+
49
+ # --- 1. array with a sibling hook -> updated, sibling preserved -------------
50
+ F="$TMP/a.json"
51
+ printf '%s' "{\"hooks\":{\"UserPromptSubmit\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"$SIB\"}]}]}}" > "$F"
52
+ OUT=$(ensure_mailbox_inject_hook "$F")
53
+ if [ "$(status_of "$OUT")" = "updated" ] \
54
+ && [ "$(cmds "$F" | /usr/bin/grep -cF "$CMD")" -eq 1 ] \
55
+ && [ "$(cmds "$F" | /usr/bin/grep -cF "$SIB")" -eq 1 ]; then
56
+ ok "existing array -> updated, sibling hook preserved"
57
+ else
58
+ bad "case 1 (out=$OUT cmds=$(cmds "$F" | tr '\n' ' '))"
59
+ fi
60
+
61
+ # --- 2. re-run -> already-set, byte-identical -------------------------------
62
+ B=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
63
+ OUT=$(ensure_mailbox_inject_hook "$F")
64
+ A=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
65
+ if [ "$(status_of "$OUT")" = "already-set" ] && [ "$B" = "$A" ] \
66
+ && [ "$(cmds "$F" | /usr/bin/grep -cF "$CMD")" -eq 1 ]; then
67
+ ok "re-run -> already-set, file byte-identical, no duplicate"
68
+ else
69
+ bad "case 2 (out=$OUT before=$B after=$A)"
70
+ fi
71
+
72
+ # --- 3. empty array -> updated, whole entry created -------------------------
73
+ F="$TMP/b.json"; printf '%s' '{"hooks":{"UserPromptSubmit":[]}}' > "$F"
74
+ OUT=$(ensure_mailbox_inject_hook "$F")
75
+ if [ "$(status_of "$OUT")" = "updated" ] && [ "$(cmds "$F" | /usr/bin/grep -cF "$CMD")" -eq 1 ]; then
76
+ ok "empty array -> updated, entry created"
77
+ else
78
+ bad "case 3 (out=$OUT cmds=$(cmds "$F" | tr '\n' ' '))"
79
+ fi
80
+
81
+ # --- 4. command already present in a later entry -> already-set, no dupe ----
82
+ F="$TMP/c.json"
83
+ printf '%s' "{\"hooks\":{\"UserPromptSubmit\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"$SIB\"}]},{\"hooks\":[{\"type\":\"command\",\"command\":\"$CMD\"}]}]}}" > "$F"
84
+ OUT=$(ensure_mailbox_inject_hook "$F")
85
+ if [ "$(status_of "$OUT")" = "already-set" ] && [ "$(cmds "$F" | /usr/bin/grep -cF "$CMD")" -eq 1 ]; then
86
+ ok "command present in a later entry -> already-set, not duplicated"
87
+ else
88
+ bad "case 4 (out=$OUT cmds=$(cmds "$F" | tr '\n' ' '))"
89
+ fi
90
+
91
+ # --- 5. no UserPromptSubmit -> no-hooks, untouched --------------------------
92
+ F="$TMP/d.json"; printf '%s' '{"permissions":{}}' > "$F"
93
+ B=$(shasum "$F" | /usr/bin/cut -d' ' -f1); OUT=$(ensure_mailbox_inject_hook "$F"); A=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
94
+ if [ "$(status_of "$OUT")" = "no-hooks" ] && [ "$B" = "$A" ]; then
95
+ ok "no UserPromptSubmit array -> no-hooks, file untouched"
96
+ else
97
+ bad "case 5 (out=$OUT)"
98
+ fi
99
+
100
+ # --- 6. file absent -> absent ----------------------------------------------
101
+ OUT=$(ensure_mailbox_inject_hook "$TMP/does-not-exist.json")
102
+ if [ "$(status_of "$OUT")" = "absent" ]; then
103
+ ok "file absent -> absent"
104
+ else
105
+ bad "case 6 (out=$OUT)"
106
+ fi
107
+
108
+ # --- 7. malformed JSON -> rewrite-failed, untouched -------------------------
109
+ F="$TMP/e.json"; printf 'not json at all' > "$F"
110
+ B=$(shasum "$F" | /usr/bin/cut -d' ' -f1); OUT=$(ensure_mailbox_inject_hook "$F"); A=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
111
+ if [ "$(status_of "$OUT")" = "rewrite-failed" ] && [ "$B" = "$A" ]; then
112
+ ok "malformed JSON -> rewrite-failed, file untouched"
113
+ else
114
+ bad "case 7 (out=$OUT)"
115
+ fi
116
+
117
+ # --- 8. settings.json is a JSON array -> not patched, untouched -------------
118
+ F="$TMP/f.json"; printf '%s' '[]' > "$F"
119
+ B=$(shasum "$F" | /usr/bin/cut -d' ' -f1); OUT=$(ensure_mailbox_inject_hook "$F"); A=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
120
+ S=$(status_of "$OUT")
121
+ if { [ "$S" = "no-hooks" ] || [ "$S" = "rewrite-failed" ]; } && [ "$B" = "$A" ]; then
122
+ ok "settings.json that is an array -> not patched, file untouched"
123
+ else
124
+ bad "case 8 (out=$OUT before=$B after=$A)"
125
+ fi
126
+
127
+ # --- 9. reconcile walks account dirs only ----------------------------------
128
+ R="$TMP/accts"; mkdir -p "$R/one/.claude" "$R/two/.claude" "$R/notanaccount/.claude"
129
+ printf '%s' '{}' > "$R/one/account.json"; printf '%s' '{}' > "$R/two/account.json"
130
+ for d in one two notanaccount; do
131
+ printf '%s' "{\"hooks\":{\"UserPromptSubmit\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"$SIB\"}]}]}}" > "$R/$d/.claude/settings.json"
132
+ done
133
+ OUT=$(reconcile_all_accounts_mailbox_inject "$R")
134
+ if [ "$(printf '%s' "$OUT" | /usr/bin/grep -c 'status=updated')" -eq 2 ] \
135
+ && [ "$(cmds "$R/one/.claude/settings.json" | /usr/bin/grep -cF "$CMD")" -eq 1 ] \
136
+ && [ "$(cmds "$R/two/.claude/settings.json" | /usr/bin/grep -cF "$CMD")" -eq 1 ] \
137
+ && [ "$(cmds "$R/notanaccount/.claude/settings.json" | /usr/bin/grep -cF "$CMD")" -eq 0 ]; then
138
+ ok "reconcile patches account.json dirs only"
139
+ else
140
+ bad "case 9 (out=$OUT)"
141
+ fi
142
+
143
+ # --- 10. no temp file left behind on any path ------------------------------
144
+ if [ "$(find "$TMP" -name '*.2157.tmp' | /usr/bin/wc -l | tr -d ' ')" -eq 0 ]; then
145
+ ok "no .2157.tmp file left behind on any path"
146
+ else
147
+ bad "case 10 (strays: $(find "$TMP" -name '*.2157.tmp'))"
148
+ fi
149
+
150
+ # --- 11. never returns non-zero, even on the failure paths -----------------
151
+ ensure_mailbox_inject_hook "$TMP/e.json" >/dev/null; r1=$?
152
+ ensure_mailbox_inject_hook "$TMP/nope.json" >/dev/null; r2=$?
153
+ reconcile_all_accounts_mailbox_inject "$TMP/no-such-dir" >/dev/null; r3=$?
154
+ if [ "$r1" -eq 0 ] && [ "$r2" -eq 0 ] && [ "$r3" -eq 0 ]; then
155
+ ok "every path returns 0, so a caller running set -e is never aborted"
156
+ else
157
+ bad "case 11 (malformed=$r1 absent=$r2 nodir=$r3)"
158
+ fi
159
+
160
+ echo "----"
161
+ echo "PASS=$PASS FAIL=$FAIL"
162
+ if [ $((PASS+FAIL)) -ne 11 ]; then
163
+ echo "FAIL: expected 11 cases, ran $((PASS+FAIL))" >&2
164
+ exit 1
165
+ fi
166
+ [ "$FAIL" -eq 0 ]
@@ -0,0 +1,91 @@
1
+ # account-settings-mailbox-inject.sh — retrofit the per-turn <mailboxes>
2
+ # injection hook onto existing accounts' .claude/settings.json. Task 2157.
3
+ #
4
+ # provision-account-dir.sh writes the UserPromptSubmit array only at provision
5
+ # time, and setup-account.sh re-provisions the HOUSE account only: a client
6
+ # sub-account's settings.json is written once, at creation, by the admin-core
7
+ # account-lifecycle tool, and no install ever rewrites it. Without this lib the
8
+ # hook reaches house accounts only, and no device gate would notice, because the
9
+ # verification account on a single-account install IS that install's house
10
+ # account. Same shape as account-settings-askgate.sh (Task 1683) and
11
+ # account-settings-pdf-conformance.sh (Task 1929).
12
+ #
13
+ # Requires jq. Idempotent. Never echoes file contents. Fail-open (nudge, not
14
+ # brick): any unusable file logs a status and is left untouched.
15
+ #
16
+ # Sourced by setup-account.sh; also runnable standalone for a manual repair.
17
+
18
+ # The exact command string provision-account-dir.sh writes. $PLATFORM_ROOT is a
19
+ # literal in the settings file, resolved by Claude Code at hook-run time.
20
+ _MBXINJECT_CMD='bash $PLATFORM_ROOT/plugins/admin/hooks/mailbox-inject.sh'
21
+
22
+ # ensure_mailbox_inject_hook <settings_file>
23
+ # Guarantees the UserPromptSubmit array carries the mailbox-inject command:
24
+ # appends it to the first entry when the array exists without it, or adds a whole
25
+ # entry when the array is empty. Logs exactly one
26
+ # `[backfill-2157] file=<f> status=<absent|no-hooks|already-set|updated|rewrite-failed>`
27
+ # to stdout. Always returns 0.
28
+ ensure_mailbox_inject_hook() {
29
+ local f="$1"
30
+ if [ ! -f "$f" ]; then
31
+ echo "[backfill-2157] file=$f status=absent"
32
+ return 0
33
+ fi
34
+ # Patchable only when the file is valid JSON with a UserPromptSubmit array.
35
+ if ! jq -e '.hooks.UserPromptSubmit | type == "array"' "$f" >/dev/null 2>&1; then
36
+ if jq -e . "$f" >/dev/null 2>&1; then
37
+ echo "[backfill-2157] file=$f status=no-hooks"
38
+ else
39
+ echo "[backfill-2157] file=$f status=rewrite-failed"
40
+ fi
41
+ return 0
42
+ fi
43
+ local tmp="$f.2157.tmp"
44
+ if ! jq --arg cmd "$_MBXINJECT_CMD" '
45
+ .hooks.UserPromptSubmit |= (
46
+ if length == 0
47
+ then [{hooks: [{type: "command", command: $cmd}]}]
48
+ else
49
+ if any(.[]; (.hooks // []) | any(.[]; .command == $cmd))
50
+ then .
51
+ else (.[0].hooks = ((.[0].hooks // []) + [{type: "command", command: $cmd}]))
52
+ end
53
+ end)
54
+ ' "$f" > "$tmp" 2>/dev/null; then
55
+ rm -f "$tmp"
56
+ echo "[backfill-2157] file=$f status=rewrite-failed"
57
+ return 0
58
+ fi
59
+ # Semantic no-op? Compare canonical forms; leave the file byte-identical if so.
60
+ # `|| true` keeps a jq failure here (e.g. $f truncated by a concurrent writer
61
+ # between the type-check above and this read) from tripping a caller's `set -e`
62
+ # and aborting the whole install — this lib is fail-open by contract.
63
+ local before after
64
+ before="$(jq -S . "$f" 2>/dev/null || true)"
65
+ after="$(jq -S . "$tmp" 2>/dev/null || true)"
66
+ if [ "$before" = "$after" ]; then
67
+ rm -f "$tmp"
68
+ echo "[backfill-2157] file=$f status=already-set"
69
+ return 0
70
+ fi
71
+ if mv "$tmp" "$f"; then
72
+ echo "[backfill-2157] file=$f status=updated"
73
+ else
74
+ rm -f "$tmp"
75
+ echo "[backfill-2157] file=$f status=rewrite-failed"
76
+ fi
77
+ return 0
78
+ }
79
+
80
+ # reconcile_all_accounts_mailbox_inject <accounts_dir>
81
+ # Standing check + backfill: every account dir with an account.json gets the
82
+ # mailbox-inject hook ensured. Mirrors reconcile_all_accounts_askgate.
83
+ reconcile_all_accounts_mailbox_inject() {
84
+ local accts="$1"
85
+ [ -d "$accts" ] || return 0
86
+ local acct
87
+ for acct in "$accts"/*/; do
88
+ [ -f "$acct/account.json" ] || continue
89
+ ensure_mailbox_inject_hook "$acct/.claude/settings.json"
90
+ done
91
+ }
@@ -186,6 +186,7 @@ provision_account_dir() {
186
186
  { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" },
187
187
  { "type": "command", "command": "bash $HOOKS_PATH/prompt-optimiser-directive.sh" },
188
188
  { "type": "command", "command": "bash $HOOKS_PATH/datetime-inject.sh" },
189
+ { "type": "command", "command": "bash $HOOKS_PATH/mailbox-inject.sh" },
189
190
  { "type": "command", "command": "bash $HOOKS_PATH/preference-consult-directive.sh" }
190
191
  ]
191
192
  }
@@ -369,4 +369,45 @@ IDENT_DROPPED=$("$CYPHER_SHELL" -u "$NEO4J_USER" -p "$NEO4J_PASSWORD" -a "$NEO4J
369
369
  "MATCH (au:AdminUser) WHERE au.name IS NOT NULL REMOVE au.name RETURN count(au)" 2>/dev/null | tail -1 | tr -d ' \r')
370
370
  echo " [identity-reconcile] namedExisting=${IDENT_NAMED:-0} createdOwned=${IDENT_CREATED:-0} droppedAuName=${IDENT_DROPPED:-0}"
371
371
 
372
+ # ------------------------------------------------------------------
373
+ # 8. Routine roster (Task 2130)
374
+ # ------------------------------------------------------------------
375
+ # Ten generic routines, seeded eventStatus='suspended' with nextRun NULL and no
376
+ # channel or destination, so a fresh install has a catalogue to enable instead
377
+ # of a blank /routines page. Running here rather than only at account creation
378
+ # is what carries the roster to the EXISTING fleet: this script runs on every
379
+ # upgrade, not just the first install.
380
+ #
381
+ # The roster, the MERGE and the whole [routine-seed] lifecycle live in
382
+ # platform/lib/routine-templates so the sub-account path in the admin plugin
383
+ # shares them verbatim. This script only supplies the process boundary; it logs
384
+ # nothing itself.
385
+ #
386
+ # Never install-blocking, matching sections 5-7 above. An account with no
387
+ # routines is degraded, not broken: the graph, the agent and every channel work,
388
+ # and only /routines is empty. Aborting here would take down an install or a
389
+ # whole-fleet upgrade over a transient Neo4j hiccup, after the schema, the root
390
+ # :LocalBusiness and the owner :AdminUser had all already succeeded — and the
391
+ # installer's shell() throws on any non-zero exit, so a failure here is not
392
+ # recoverable further up.
393
+ #
394
+ # What makes that safe is that this change also ships the control: the
395
+ # heartbeat's [schedule-audit] op=roster reconciles the expected roster against
396
+ # what each account actually holds, every tick, naming the missing keys. A short
397
+ # seed is loud whether or not it aborts the install, so blocking buys nothing
398
+ # and costs a bricked upgrade.
399
+ ROUTINE_SEED_CLI="$PROJECT_DIR/lib/routine-templates/dist/seed-cli.js"
400
+ if [ ! -f "$ROUTINE_SEED_CLI" ]; then
401
+ echo " [routine-seed] op=skipped reason=cli-missing path=$ROUTINE_SEED_CLI — platform/lib/routine-templates was not built before the payload was bundled; run 'npm run build:lib' in platform/ and re-bundle. /routines will be empty and [schedule-audit] op=roster will report every key missing." >&2
402
+ elif ! command -v node &> /dev/null; then
403
+ echo " [routine-seed] op=skipped reason=no-node — node is required by the routine-roster seed. /routines will be empty and [schedule-audit] op=roster will report every key missing." >&2
404
+ else
405
+ NEO4J_URI="$NEO4J_URI" \
406
+ NEO4J_USER="$NEO4J_USER" \
407
+ NEO4J_PASSWORD="$NEO4J_PASSWORD" \
408
+ ROUTINE_SEED_ACCOUNT_ID="$ACCOUNT_ID" \
409
+ node "$ROUTINE_SEED_CLI" \
410
+ || echo " [routine-seed] op=skipped reason=seed-failed — the routine roster did not seed; the account is otherwise fully provisioned. [schedule-audit] op=roster names the missing keys every tick, and the next upgrade re-seeds." >&2
411
+ fi
412
+
372
413
  echo " Done."
@@ -38,6 +38,8 @@ ACCOUNTS_DIR="$INSTALL_DIR/data/accounts"
38
38
  . "$SCRIPT_DIR/lib/account-settings-askgate.sh"
39
39
  # shellcheck source=lib/account-settings-pdf-conformance.sh
40
40
  . "$SCRIPT_DIR/lib/account-settings-pdf-conformance.sh"
41
+ # shellcheck source=lib/account-settings-mailbox-inject.sh
42
+ . "$SCRIPT_DIR/lib/account-settings-mailbox-inject.sh"
41
43
  # shellcheck source=lib/read-brand-json.sh
42
44
  . "$SCRIPT_DIR/lib/read-brand-json.sh"
43
45
  # Resolve brand-aware persistent users.json path before the resolver runs.
@@ -90,3 +92,16 @@ reconcile_all_accounts_askgate "$ACCOUNTS_DIR"
90
92
  # never runs the PDF gate. Reconcile every account on every install so the gate
91
93
  # reaches pre-1922 accounts. Idempotent; logs one [backfill-1929] line per account.
92
94
  reconcile_all_accounts_pdf_conformance "$ACCOUNTS_DIR"
95
+
96
+ # ------------------------------------------------------------------
97
+ # 6. Retrofit the per-turn <mailboxes> injection hook onto every account
98
+ # ------------------------------------------------------------------
99
+ # Standing check + durable backfill (Task 2157): provision_account_dir writes the
100
+ # UserPromptSubmit array only at provision time, and this script re-provisions
101
+ # only the house account. A client sub-account created by the account-lifecycle
102
+ # tool keeps a settings.json without mailbox-inject.sh and never gets the
103
+ # standing mailbox list, so its sessions go on learning attachment state by
104
+ # polling one mail plugin and reading that plugin's miss as an account-wide fact.
105
+ # Reconcile every account on every install. Idempotent; logs one [backfill-2157]
106
+ # line per account.
107
+ reconcile_all_accounts_mailbox_inject "$ACCOUNTS_DIR"
@@ -58,6 +58,20 @@ EXPLICIT_OWNERSHIP = {
58
58
  "memory/document-ingest": "librarian",
59
59
  "memory/conversation-archive": "librarian",
60
60
  "memory/conversation-archive-enrich": "librarian",
61
+ # publish-site/SKILL.md:10 — "Invoked from `specialists:content-producer`".
62
+ # The admin plugin declares no `specialist:` field, so without this entry
63
+ # the skill defaults to admin-owned and its two tools resolve against the
64
+ # wrong surface (Task 2132).
65
+ "admin/publish-site": "content-producer",
66
+ }
67
+
68
+ # Generated catalogue skills. platform-architecture is assembled from the docs
69
+ # mirror by scripts/assemble-architecture-skill.mjs and describes the whole
70
+ # platform, so it names tools it never calls — a token there is documentation,
71
+ # not a prescription. Token resolution does not apply; the forbidden-token rule
72
+ # still does (Task 2132).
73
+ CATALOGUE_SKILLS = {
74
+ "admin/platform-architecture",
61
75
  }
62
76
 
63
77
  # Skills that are explicitly admin-owned (loaded via plugin-read by the admin
@@ -138,6 +152,49 @@ def specialist_tools(specialist: str) -> set[str] | None:
138
152
  return {t for t in items if t}
139
153
 
140
154
 
155
+ def scan_manifest_allowlists() -> tuple[set[str], set[str]]:
156
+ """Long-prefix names of (every declared tool, those declared
157
+ `adminAllowlist: true`).
158
+
159
+ The admin agent's surface is NOT the union of all enabled plugins: a tool
160
+ declared `adminAllowlist: false` is excluded from the admin spawn by
161
+ tool-surface.ts, so an admin-owned skill naming one prescribes a call its
162
+ own agent cannot make. That premise left fourteen tools unreachable and
163
+ invisible to this gate until Task 2132 — capabilities-here/SKILL.md names
164
+ its tool in the required backtick form and still passed.
165
+ """
166
+ declared: set[str] = set()
167
+ admin: set[str] = set()
168
+ for plugin in sorted(os.listdir(PLUGINS_DIR)):
169
+ manifest = os.path.join(PLUGINS_DIR, plugin, "PLUGIN.md")
170
+ if not os.path.exists(manifest):
171
+ continue
172
+ m = re.match(r"^---\n(.*?)\n---", open(manifest, encoding="utf-8").read(), re.S)
173
+ if not m:
174
+ continue
175
+ cur = None
176
+ in_tools = False
177
+ for line in m.group(1).split("\n"):
178
+ if re.match(r"^tools:\s*$", line):
179
+ in_tools = True
180
+ continue
181
+ if re.match(r"^[A-Za-z_]", line):
182
+ in_tools = False
183
+ cur = None
184
+ continue
185
+ if not in_tools:
186
+ continue
187
+ nm = re.match(r"^\s+-\s+name:\s*(.+?)\s*$", line)
188
+ if nm:
189
+ cur = nm.group(1)
190
+ declared.add(f"mcp__plugin_{plugin}_{plugin}__{cur}")
191
+ continue
192
+ aa = re.match(r"^\s+adminAllowlist:\s*(true|false)\s*$", line)
193
+ if aa and cur and aa.group(1) == "true":
194
+ admin.add(f"mcp__plugin_{plugin}_{plugin}__{cur}")
195
+ return declared, admin
196
+
197
+
141
198
  def extract_prescribed_tokens(text: str) -> set[str]:
142
199
  return set(TOKEN_RE.findall(text))
143
200
 
@@ -255,6 +312,7 @@ def main() -> int:
255
312
  summary: list[str] = []
256
313
  errors: list[str] = []
257
314
  pairs_checked = 0
315
+ all_declared_tools, admin_surface = scan_manifest_allowlists()
258
316
 
259
317
  for plugin in sorted(os.listdir(PLUGINS_DIR)):
260
318
  pdir = os.path.join(PLUGINS_DIR, plugin)
@@ -288,7 +346,24 @@ def main() -> int:
288
346
  )
289
347
 
290
348
  if specialist is None:
291
- # Admin-owned: only enforce forbidden-token rule.
349
+ # Admin-owned: forbidden-token rule, plus the admin surface.
350
+ # A prescribed tool that some manifest declares must also be
351
+ # `adminAllowlist: true`, or the admin cannot call it. Tokens
352
+ # no manifest declares are upstream bridges (Playwright and
353
+ # friends) and are left to the drift gate (Task 2132).
354
+ unresolved_admin = (
355
+ []
356
+ if ownership_key in CATALOGUE_SKILLS
357
+ else sorted(
358
+ t for t in prescribed
359
+ if t in all_declared_tools and t not in admin_surface
360
+ )
361
+ )
362
+ for tok in unresolved_admin:
363
+ errors.append(
364
+ f"[verify] skill={ownership_key} specialist=admin "
365
+ f"unresolved={tok} reason=not-admin-allowlisted"
366
+ )
292
367
  for tok, ctx in forbidden:
293
368
  errors.append(
294
369
  f"[verify] skill={ownership_key} specialist=admin "
@@ -296,7 +371,8 @@ def main() -> int:
296
371
  )
297
372
  summary.append(
298
373
  f"[verify] skill={ownership_key} specialist=admin (admin-owned) "
299
- f"tokens={len(prescribed)} forbidden={len(forbidden)}"
374
+ f"tokens={len(prescribed)} unresolved={len(unresolved_admin)} "
375
+ f"forbidden={len(forbidden)}"
300
376
  )
301
377
  continue
302
378
 
@@ -314,6 +390,19 @@ def main() -> int:
314
390
  f"[verify] skill={ownership_key} specialist={specialist} "
315
391
  f"unresolved={tok}"
316
392
  )
393
+ # A skill that instructs execution of a tool-emitted `mergeCypher`
394
+ # must name the tool that executes it. The token rule above is
395
+ # name-based, so prose like "Run the `mergeCypher`" resolves
396
+ # nothing and passes — the blind spot that left
397
+ # conversation-archive-enrich's wire step unexecutable while this
398
+ # gate reported resolved=5/5 (Task 2132).
399
+ if "mergeCypher" in text and not any(
400
+ tok.endswith("write_neo4j_cypher") for tok in prescribed
401
+ ):
402
+ errors.append(
403
+ f"[verify] skill={ownership_key} specialist={specialist} "
404
+ f"mergecypher-unexecutable=no-write-cypher-tool-prescribed"
405
+ )
317
406
  for tok, ctx in forbidden:
318
407
  errors.append(
319
408
  f"[verify] skill={ownership_key} specialist={specialist} "
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAyB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAmUtD,CAAA"}
1
+ {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAyB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAoUtD,CAAA"}