@rubytech/create-maxy-code 0.1.423 → 0.1.427

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 (306) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/neo4j/schema.cypher +13 -0
  3. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  4. package/payload/platform/plugins/admin/PLUGIN.md +5 -1
  5. package/payload/platform/plugins/admin/hooks/__tests__/datetime-inject.test.sh +119 -0
  6. package/payload/platform/plugins/admin/hooks/datetime-inject.sh +115 -0
  7. package/payload/platform/plugins/admin/mcp/dist/index.js +62 -4
  8. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  9. package/payload/platform/plugins/admin/mcp/dist/tools/account-lifecycle.d.ts +44 -0
  10. package/payload/platform/plugins/admin/mcp/dist/tools/account-lifecycle.d.ts.map +1 -1
  11. package/payload/platform/plugins/admin/mcp/dist/tools/account-lifecycle.js +96 -0
  12. package/payload/platform/plugins/admin/mcp/dist/tools/account-lifecycle.js.map +1 -1
  13. package/payload/platform/plugins/admin/skills/datetime/SKILL.md +9 -2
  14. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +14 -2
  15. package/payload/platform/plugins/docs/references/cross-account-authority.md +8 -0
  16. package/payload/platform/plugins/docs/references/internals.md +4 -0
  17. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  18. package/payload/platform/plugins/email/PLUGIN.md +2 -2
  19. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js +73 -4
  20. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js.map +1 -1
  21. package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js +42 -1
  22. package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js.map +1 -1
  23. package/payload/platform/plugins/email/mcp/dist/index.js +1 -0
  24. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  25. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +4 -0
  26. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
  27. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +5 -0
  28. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
  29. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +25 -3
  30. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
  31. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +67 -12
  32. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
  33. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts +1 -0
  34. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -1
  35. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +1 -0
  36. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
  37. package/payload/platform/plugins/email/references/email-reference.md +8 -0
  38. package/payload/platform/plugins/scheduling/PLUGIN.md +1 -1
  39. package/payload/platform/plugins/scheduling/mcp/dist/index.js +5 -2
  40. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  41. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js +50 -1
  42. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js.map +1 -1
  43. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts +2 -0
  44. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts.map +1 -0
  45. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js +22 -0
  46. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js.map +1 -0
  47. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +35 -0
  48. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
  49. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +36 -0
  50. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
  51. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts +11 -0
  52. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts.map +1 -0
  53. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js +19 -0
  54. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js.map +1 -0
  55. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +85 -3
  56. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
  57. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/standing-audit.test.js +32 -1
  58. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/standing-audit.test.js.map +1 -1
  59. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +14 -1
  60. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  61. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +94 -4
  62. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  63. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +23 -7
  64. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  65. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-cancel.test.d.ts +2 -0
  66. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-cancel.test.d.ts.map +1 -0
  67. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-cancel.test.js +30 -0
  68. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-cancel.test.js.map +1 -0
  69. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts +29 -0
  70. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -1
  71. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +47 -2
  72. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -1
  73. package/payload/platform/plugins/whatsapp/PLUGIN.md +2 -0
  74. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/caller-scope-headers.test.d.ts +2 -0
  75. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/caller-scope-headers.test.d.ts.map +1 -0
  76. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/caller-scope-headers.test.js +20 -0
  77. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/caller-scope-headers.test.js.map +1 -0
  78. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.d.ts +1 -1
  79. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.d.ts.map +1 -1
  80. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.js +5 -2
  81. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.js.map +1 -1
  82. package/payload/platform/plugins/whatsapp/mcp/dist/caller-scope-headers.d.ts +9 -0
  83. package/payload/platform/plugins/whatsapp/mcp/dist/caller-scope-headers.d.ts.map +1 -0
  84. package/payload/platform/plugins/whatsapp/mcp/dist/caller-scope-headers.js +18 -0
  85. package/payload/platform/plugins/whatsapp/mcp/dist/caller-scope-headers.js.map +1 -0
  86. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +13 -11
  87. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  88. package/payload/platform/plugins/work/PLUGIN.md +1 -1
  89. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-assigned-admin-env.test.d.ts +2 -0
  90. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-assigned-admin-env.test.d.ts.map +1 -0
  91. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-assigned-admin-env.test.js +72 -0
  92. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-assigned-admin-env.test.js.map +1 -0
  93. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-client-fields.test.d.ts +2 -0
  94. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-client-fields.test.d.ts.map +1 -0
  95. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-client-fields.test.js +67 -0
  96. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-client-fields.test.js.map +1 -0
  97. package/payload/platform/plugins/work/mcp/dist/index.js +3 -0
  98. package/payload/platform/plugins/work/mcp/dist/index.js.map +1 -1
  99. package/payload/platform/plugins/work/mcp/dist/tools/work-create.d.ts +6 -0
  100. package/payload/platform/plugins/work/mcp/dist/tools/work-create.d.ts.map +1 -1
  101. package/payload/platform/plugins/work/mcp/dist/tools/work-create.js +34 -1
  102. package/payload/platform/plugins/work/mcp/dist/tools/work-create.js.map +1 -1
  103. package/payload/platform/scripts/lib/provision-account-dir.sh +2 -1
  104. package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts +39 -0
  105. package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts.map +1 -0
  106. package/payload/platform/services/claude-session-manager/dist/account-admin-census.js +122 -0
  107. package/payload/platform/services/claude-session-manager/dist/account-admin-census.js.map +1 -0
  108. package/payload/platform/services/claude-session-manager/dist/account-timezone.d.ts +40 -0
  109. package/payload/platform/services/claude-session-manager/dist/account-timezone.d.ts.map +1 -0
  110. package/payload/platform/services/claude-session-manager/dist/account-timezone.js +126 -0
  111. package/payload/platform/services/claude-session-manager/dist/account-timezone.js.map +1 -0
  112. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  113. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
  114. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  115. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  116. package/payload/platform/services/claude-session-manager/dist/http-server.js +18 -1
  117. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  118. package/payload/platform/services/claude-session-manager/dist/index.js +13 -0
  119. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  120. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +11 -0
  121. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  122. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +28 -0
  123. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  124. package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
  125. package/payload/platform/services/telegram-channel/dist/instructions.js +8 -1
  126. package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
  127. package/payload/platform/services/telegram-channel/dist/notification.d.ts +22 -0
  128. package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
  129. package/payload/platform/services/telegram-channel/dist/notification.js +22 -1
  130. package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
  131. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
  132. package/payload/platform/services/webchat-channel/dist/instructions.js +8 -1
  133. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
  134. package/payload/platform/services/webchat-channel/dist/notification.d.ts +22 -0
  135. package/payload/platform/services/webchat-channel/dist/notification.d.ts.map +1 -1
  136. package/payload/platform/services/webchat-channel/dist/notification.js +22 -1
  137. package/payload/platform/services/webchat-channel/dist/notification.js.map +1 -1
  138. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +28 -2
  139. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  140. package/payload/platform/services/whatsapp-channel/dist/notification.js +32 -3
  141. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  142. package/payload/platform/templates/account.json +2 -1
  143. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  144. package/payload/server/public/assets/{AdminLoginScreens-B1P6PrZ3.js → AdminLoginScreens-yAIhWcGc.js} +1 -1
  145. package/payload/server/public/assets/AdminShell-Bk1AFQ4D.js +2 -0
  146. package/payload/server/public/assets/{Checkbox-CgCqOslz.js → Checkbox-B_lfjsqd.js} +1 -1
  147. package/payload/server/public/assets/Transcript-D67OZnVM.js +2 -0
  148. package/payload/server/public/assets/admin-DuOhkvrZ.js +1 -0
  149. package/payload/server/public/assets/{arc-DyzjCWmw.js → arc-dVLpR-ec.js} +1 -1
  150. package/payload/server/public/assets/architecture-YZFGNWBL-CgeA3HPD.js +1 -0
  151. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-qWfElD16.js → architectureDiagram-Q4EWVU46-C6u_CVzb.js} +1 -1
  152. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DO2fFHC3.js → blockDiagram-DXYQGD6D-Cy8F5b8O.js} +1 -1
  153. package/payload/server/public/assets/browser-CCWufeXr.js +1 -0
  154. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-Ca-q5gDe.js → c4Diagram-AHTNJAMY-DRXrlepj.js} +1 -1
  155. package/payload/server/public/assets/calendar-CNk1iPrA.js +1 -0
  156. package/payload/server/public/assets/channel-B04VBWf7.js +1 -0
  157. package/payload/server/public/assets/chat-7qB-dwBq.js +1 -0
  158. package/payload/server/public/assets/chevron-left-CpcDbHIz.js +1 -0
  159. package/payload/server/public/assets/{chunk-2KRD3SAO-CX2PxuDw.js → chunk-2KRD3SAO-fEyfhRLz.js} +1 -1
  160. package/payload/server/public/assets/{chunk-336JU56O-D8l6U4Ne.js → chunk-336JU56O-NUWO4y7q.js} +2 -2
  161. package/payload/server/public/assets/chunk-426QAEUC-DZkHcXRA.js +1 -0
  162. package/payload/server/public/assets/{chunk-4BX2VUAB-CG32Lkbh.js → chunk-4BX2VUAB-BnfiNR3l.js} +1 -1
  163. package/payload/server/public/assets/{chunk-4TB4RGXK-BnAQbO-v.js → chunk-4TB4RGXK-Bj_aJOz8.js} +1 -1
  164. package/payload/server/public/assets/{chunk-55IACEB6-ejqRH2M5.js → chunk-55IACEB6-aK0DNSKb.js} +1 -1
  165. package/payload/server/public/assets/{chunk-5FUZZQ4R-ClkicQ-T.js → chunk-5FUZZQ4R-DeqAkq5C.js} +1 -1
  166. package/payload/server/public/assets/{chunk-5PVQY5BW-Be-mE_rx.js → chunk-5PVQY5BW-SShlujAQ.js} +1 -1
  167. package/payload/server/public/assets/{chunk-67CJDMHE-DPsemed2.js → chunk-67CJDMHE-CZpzQ0DL.js} +1 -1
  168. package/payload/server/public/assets/{chunk-7N4EOEYR-BQRQJETl.js → chunk-7N4EOEYR-COnjO6jy.js} +1 -1
  169. package/payload/server/public/assets/{chunk-AA7GKIK3-B1wcAVCK.js → chunk-AA7GKIK3-C9V31L2z.js} +1 -1
  170. package/payload/server/public/assets/{chunk-BSJP7CBP-DIua053h.js → chunk-BSJP7CBP-DSwnSGe3.js} +1 -1
  171. package/payload/server/public/assets/{chunk-CIAEETIT-C9GHSCS9.js → chunk-CIAEETIT-CnRUTuta.js} +1 -1
  172. package/payload/server/public/assets/{chunk-EDXVE4YY-C1T3l1xj.js → chunk-EDXVE4YY-BexiL2LH.js} +1 -1
  173. package/payload/server/public/assets/{chunk-ENJZ2VHE-8kPcXEQC.js → chunk-ENJZ2VHE-aTklWdJQ.js} +1 -1
  174. package/payload/server/public/assets/{chunk-FMBD7UC4-Bhoeq9sD.js → chunk-FMBD7UC4-svcEBQzs.js} +1 -1
  175. package/payload/server/public/assets/{chunk-FOC6F5B3-BIBpJi8I.js → chunk-FOC6F5B3-CG7R7Xri.js} +1 -1
  176. package/payload/server/public/assets/{chunk-ICPOFSXX-DELXp6fj.js → chunk-ICPOFSXX-CGN7Z4x9.js} +2 -2
  177. package/payload/server/public/assets/{chunk-K5T4RW27-DdckXldP.js → chunk-K5T4RW27-CWBh78jw.js} +1 -1
  178. package/payload/server/public/assets/{chunk-KGLVRYIC-BJhXejKT.js → chunk-KGLVRYIC-Ctiq4q-5.js} +1 -1
  179. package/payload/server/public/assets/{chunk-LIHQZDEY-BSd8nyM2.js → chunk-LIHQZDEY-BII77Q7K.js} +1 -1
  180. package/payload/server/public/assets/{chunk-ORNJ4GCN-CBi55uxq.js → chunk-ORNJ4GCN-DT7R01H8.js} +1 -1
  181. package/payload/server/public/assets/{chunk-OYMX7WX6-Dfbzl8xh.js → chunk-OYMX7WX6-y-Jkbd4C.js} +1 -1
  182. package/payload/server/public/assets/chunk-QZHKN3VN-D9Mwgzti.js +1 -0
  183. package/payload/server/public/assets/{chunk-U2HBQHQK-BN1w8_Cq.js → chunk-U2HBQHQK-DzFo6KbQ.js} +1 -1
  184. package/payload/server/public/assets/{chunk-X2U36JSP-CrRay1NJ.js → chunk-X2U36JSP-CYSwgtLV.js} +1 -1
  185. package/payload/server/public/assets/{chunk-XPW4576I-C_ZE776O.js → chunk-XPW4576I-DHlM4tOn.js} +1 -1
  186. package/payload/server/public/assets/{chunk-YZCP3GAM-CUSlqWBY.js → chunk-YZCP3GAM-B20rTmLl.js} +1 -1
  187. package/payload/server/public/assets/{chunk-ZZ45TVLE-BdPUfSiD.js → chunk-ZZ45TVLE-C7hP4J8m.js} +1 -1
  188. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CIo_TzfF.js +1 -0
  189. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-SzQYvAUZ.js +1 -0
  190. package/payload/server/public/assets/clone-BVjcjsBA.js +1 -0
  191. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-D4E9htTz.js → cose-bilkent-S5V4N54A-nKjTv9sR.js} +1 -1
  192. package/payload/server/public/assets/{dagre-D1B5TQL1.js → dagre-Cx8LiiUZ.js} +1 -1
  193. package/payload/server/public/assets/{dagre-KV5264BT-ByuvYV7N.js → dagre-KV5264BT-BNJYTnls.js} +1 -1
  194. package/payload/server/public/assets/data-BnHcS27X.js +1 -0
  195. package/payload/server/public/assets/{diagram-5BDNPKRD-B-0KduTa.js → diagram-5BDNPKRD-CoAN5_f9.js} +1 -1
  196. package/payload/server/public/assets/{diagram-G4DWMVQ6-CSQmo3eB.js → diagram-G4DWMVQ6-pRmsN4_x.js} +1 -1
  197. package/payload/server/public/assets/{diagram-MMDJMWI5-DK0kWiB3.js → diagram-MMDJMWI5-CRoylyp4.js} +1 -1
  198. package/payload/server/public/assets/{diagram-TYMM5635-CYbK2reZ.js → diagram-TYMM5635-BT3ZtG5b.js} +1 -1
  199. package/payload/server/public/assets/{dist-CADCHk0t.js → dist-CRpLAnCP.js} +1 -1
  200. package/payload/server/public/assets/{erDiagram-SMLLAGMA-C-JQHvJF.js → erDiagram-SMLLAGMA-DSKws1ZV.js} +1 -1
  201. package/payload/server/public/assets/file-download-Hf_UILaA.js +1 -0
  202. package/payload/server/public/assets/{flatten-ROVzlo1u.js → flatten-jn8bZgcI.js} +1 -1
  203. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-OTOd2czg.js → flowDiagram-DWJPFMVM-C2L38ZE5.js} +1 -1
  204. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BWJ778ou.js → ganttDiagram-T4ZO3ILL-Bm2h-vjm.js} +1 -1
  205. package/payload/server/public/assets/gitGraph-7Q5UKJZL-DzQ18i0T.js +1 -0
  206. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-CkNcyISe.js → gitGraphDiagram-UUTBAWPF-BoowbF7u.js} +1 -1
  207. package/payload/server/public/assets/graph-klLugHEK.js +51 -0
  208. package/payload/server/public/assets/{graph-labels-BfG6FO25.js → graph-labels-BLx-0vyT.js} +1 -1
  209. package/payload/server/public/assets/{graphlib-8z59Ng6C.js → graphlib-BvT2s_o1.js} +1 -1
  210. package/payload/server/public/assets/info-OMHHGYJF-CwsoaVzV.js +1 -0
  211. package/payload/server/public/assets/infoDiagram-42DDH7IO-ieNsH2bV.js +2 -0
  212. package/payload/server/public/assets/{isEmpty-DXf_sApt.js → isEmpty-Dkk6_L-B.js} +1 -1
  213. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-Cg7pRRGp.js → ishikawaDiagram-UXIWVN3A-nxcmj-IX.js} +1 -1
  214. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CZT_4r_Z.js → journeyDiagram-VCZTEJTY-q5SNIvmS.js} +1 -1
  215. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Dp1Vd5YM.js → kanban-definition-6JOO6SKY-BugG9Q1o.js} +1 -1
  216. package/payload/server/public/assets/{line-UPAcwY66.js → line-MZCQLR-q.js} +1 -1
  217. package/payload/server/public/assets/{linear-BeeahLKw.js → linear-DmQGNk-g.js} +1 -1
  218. package/payload/server/public/assets/{maximize-2-DrBaKD3z.js → maximize-2-CnNQnj_v.js} +1 -1
  219. package/payload/server/public/assets/{mermaid-parser.core-CLKle8df.js → mermaid-parser.core-DvoeqLxw.js} +2 -2
  220. package/payload/server/public/assets/{mermaid.core-CwRj5rL5.js → mermaid.core-BLaw7iG4.js} +3 -3
  221. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-CNQUY9UJ.js → mindmap-definition-QFDTVHPH-DMkt10Vc.js} +1 -1
  222. package/payload/server/public/assets/operator-CRcySYv9.js +1 -0
  223. package/payload/server/public/assets/{ordinal-B2r5L1v4.js → ordinal-DuJYM7p1.js} +1 -1
  224. package/payload/server/public/assets/packet-4T2RLAQJ-DxB-bO4L.js +1 -0
  225. package/payload/server/public/assets/page-CVo3CWIY.js +1 -0
  226. package/payload/server/public/assets/page-DPTbZRwl.js +32 -0
  227. package/payload/server/public/assets/{pdf-render-m08Xm2Nm.js → pdf-render-riHufgrn.js} +1 -1
  228. package/payload/server/public/assets/pie-ZZUOXDRM-PSdKvB8-.js +1 -0
  229. package/payload/server/public/assets/{pieDiagram-DEJITSTG-Scnq58FX.js → pieDiagram-DEJITSTG-DRp4lD2B.js} +1 -1
  230. package/payload/server/public/assets/play-yEkd7ouW.js +1 -0
  231. package/payload/server/public/assets/public-Fi6ccYaE.js +1 -0
  232. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-wPfZo_vs.js → quadrantDiagram-34T5L4WZ-DkT63Dn4.js} +1 -1
  233. package/payload/server/public/assets/radar-PYXPWWZC-D8FqRiWq.js +1 -0
  234. package/payload/server/public/assets/{reduce-CFlDlJf5.js → reduce-COyotL2V.js} +1 -1
  235. package/payload/server/public/assets/{requirementDiagram-MS252O5E-yYkH12K2.js → requirementDiagram-MS252O5E-65GGtDkc.js} +1 -1
  236. package/payload/server/public/assets/rotate-ccw-xHksz9mr.js +1 -0
  237. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-fVWRBzzV.js → sankeyDiagram-XADWPNL6-D1vRwLWd.js} +1 -1
  238. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-Dbap3X6h.js → sequenceDiagram-FGHM5R23-Bp47ZSN2.js} +1 -1
  239. package/payload/server/public/assets/square-BZqaxg7D.js +1 -0
  240. package/payload/server/public/assets/{src-Bi0fLV9t.js → src-xN1oULc8.js} +1 -1
  241. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-DkPLAqIh.js → stateDiagram-FHFEXIEX-BZHHcP_e.js} +1 -1
  242. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-qVtoGx56.js +1 -0
  243. package/payload/server/public/assets/tasks-COWmfts8.js +1 -0
  244. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-DabKBJyd.js → timeline-definition-GMOUNBTQ-DZ1wUyj-.js} +1 -1
  245. package/payload/server/public/assets/treeView-SZITEDCU-i-w4rJmQ.js +1 -0
  246. package/payload/server/public/assets/treemap-W4RFUUIX-Dij6AlAj.js +1 -0
  247. package/payload/server/public/assets/useSubAccountSwitcher-DADvGnr1.js +9 -0
  248. package/payload/server/public/assets/useSubAccountSwitcher-ayajZz8T.css +1 -0
  249. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CaKT7c-c.js → vennDiagram-DHZGUBPP-CttBahsn.js} +1 -1
  250. package/payload/server/public/assets/wardley-RL74JXVD-BJhOQVqW.js +1 -0
  251. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BZ5TTSOL.js → wardleyDiagram-NUSXRM2D-Y5tWieZg.js} +1 -1
  252. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-CLfeklJ9.js → xychartDiagram-5P7HB3ND-C78A9qbe.js} +1 -1
  253. package/payload/server/public/browser.html +7 -5
  254. package/payload/server/public/calendar.html +8 -6
  255. package/payload/server/public/chat.html +15 -12
  256. package/payload/server/public/data.html +11 -10
  257. package/payload/server/public/graph.html +12 -10
  258. package/payload/server/public/index.html +16 -14
  259. package/payload/server/public/operator.html +17 -14
  260. package/payload/server/public/public.html +15 -12
  261. package/payload/server/public/tasks.html +18 -0
  262. package/payload/server/server.js +604 -224
  263. package/payload/server/public/assets/AdminShell-Y1fHQApK.js +0 -2
  264. package/payload/server/public/assets/Transcript-DZzFjhoq.js +0 -2
  265. package/payload/server/public/assets/admin-BRBjJEci.js +0 -1
  266. package/payload/server/public/assets/architecture-YZFGNWBL-XiVs-N7Z.js +0 -1
  267. package/payload/server/public/assets/browser-ID7iqIi4.js +0 -1
  268. package/payload/server/public/assets/calendar-BEQPMTtd.js +0 -1
  269. package/payload/server/public/assets/channel-CYBkRz7E.js +0 -1
  270. package/payload/server/public/assets/chat-D0GDSWM-.js +0 -1
  271. package/payload/server/public/assets/chevron-left-A0HYKwGY.js +0 -1
  272. package/payload/server/public/assets/chunk-426QAEUC-CPhOHriU.js +0 -1
  273. package/payload/server/public/assets/chunk-QZHKN3VN-CDnAAZVJ.js +0 -1
  274. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BdXUKVrS.js +0 -1
  275. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DAq-uJr_.js +0 -1
  276. package/payload/server/public/assets/clone-DQl28-jK.js +0 -1
  277. package/payload/server/public/assets/data-CV38dClT.js +0 -1
  278. package/payload/server/public/assets/gitGraph-7Q5UKJZL-BM-KaDZy.js +0 -1
  279. package/payload/server/public/assets/graph-BK0MjKRy.js +0 -51
  280. package/payload/server/public/assets/info-OMHHGYJF-CtZajyAB.js +0 -1
  281. package/payload/server/public/assets/infoDiagram-42DDH7IO-C-_WYlmI.js +0 -2
  282. package/payload/server/public/assets/operator-CnpNyIJ8.js +0 -1
  283. package/payload/server/public/assets/packet-4T2RLAQJ-T-SYedp7.js +0 -1
  284. package/payload/server/public/assets/page-DC_L-IS1.js +0 -32
  285. package/payload/server/public/assets/page-DKHLflh7.js +0 -1
  286. package/payload/server/public/assets/pie-ZZUOXDRM-BWECFVVd.js +0 -1
  287. package/payload/server/public/assets/public-ByUJr48E.js +0 -1
  288. package/payload/server/public/assets/radar-PYXPWWZC-Dx0YUklX.js +0 -1
  289. package/payload/server/public/assets/rotate-ccw-D45TbeAI.js +0 -1
  290. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DceWO1u6.js +0 -1
  291. package/payload/server/public/assets/treeView-SZITEDCU-C3197Rac.js +0 -1
  292. package/payload/server/public/assets/treemap-W4RFUUIX-BPrpx29h.js +0 -1
  293. package/payload/server/public/assets/useSubAccountSwitcher-CCn22f98.css +0 -1
  294. package/payload/server/public/assets/useSubAccountSwitcher-CprHkBnZ.js +0 -9
  295. package/payload/server/public/assets/wardley-RL74JXVD-DW4Jlbhw.js +0 -1
  296. /package/payload/server/public/assets/{_baseFor-BVuIxZJh.js → _baseFor-Bjj9It3Q.js} +0 -0
  297. /package/payload/server/public/assets/{admin-types-hioowVct.js → admin-types-ClHBm0ni.js} +0 -0
  298. /package/payload/server/public/assets/{array-B9UHiPd-.js → array-BrrxEo12.js} +0 -0
  299. /package/payload/server/public/assets/{chunk-CAM3fms7.js → chunk-Ck5AOu5v.js} +0 -0
  300. /package/payload/server/public/assets/{cytoscape.esm-D5_TRwB-.js → cytoscape.esm-CTWJxUxo.js} +0 -0
  301. /package/payload/server/public/assets/{defaultLocale-5eAKkKJC.js → defaultLocale-CFDbRV4k.js} +0 -0
  302. /package/payload/server/public/assets/{init-DlZdxViB.js → init-dXCzGgLP.js} +0 -0
  303. /package/payload/server/public/assets/{katex-Xo0SyWvP.js → katex-CHA1JFYJ.js} +0 -0
  304. /package/payload/server/public/assets/{path-6uRLdFF7.js → path-CCRpdXhK.js} +0 -0
  305. /package/payload/server/public/assets/{preload-helper-CvXuAEud.js → preload-helper-CH6UZRzu.js} +0 -0
  306. /package/payload/server/public/assets/{rough.esm-Djo4Abte.js → rough.esm-Bud4g4fh.js} +0 -0
@@ -0,0 +1,122 @@
1
+ // Task 1500 — standing account-admin census. Every client sub-account must
2
+ // carry a `managingAdminUserId` pointing at a live house admin (account_create
3
+ // enforces this going forward). Two states break silently and emit no event:
4
+ // - `absent`: an account created before this change has no managingAdminUserId.
5
+ // - `dangling`: the managing admin was removed from the house admins[] after
6
+ // assignment, so the pointer names a userId no live house admin holds.
7
+ // Neither reproduces on demand, so an independent periodic reconcile is the only
8
+ // signal. This census is filesystem-only (account.json vs the house admins[]);
9
+ // the unassigned-:Task symptom is covered by work-create's op=assign line and
10
+ // the 1488 audit-gap, not here. Shape mirrors rootless-client-audit.ts: a pure
11
+ // reconcile (unit-tested) + an impure collector + an unref'd start/stop factory.
12
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
13
+ import { join } from 'node:path';
14
+ const TAG = '[account-admin-census]';
15
+ /** Pure reconcile: classify each client account against the live house admin
16
+ * set. A row with no managingAdminUserId is `absent`; a row whose id is not in
17
+ * `liveHouseAdminUserIds` is `dangling`; otherwise `assigned`. Deterministic
18
+ * and IO-free so the boundaries are unit-testable. */
19
+ export function reconcileAccountAdminCensus(clients, liveHouseAdminUserIds) {
20
+ const live = new Set(liveHouseAdminUserIds);
21
+ const absentIds = [];
22
+ const danglingIds = [];
23
+ let assigned = 0;
24
+ for (const c of clients) {
25
+ const id = c.managingAdminUserId;
26
+ if (!id)
27
+ absentIds.push(c.accountId);
28
+ else if (!live.has(id))
29
+ danglingIds.push(c.accountId);
30
+ else
31
+ assigned++;
32
+ }
33
+ return {
34
+ total: clients.length,
35
+ assigned,
36
+ absent: absentIds.length,
37
+ dangling: danglingIds.length,
38
+ absentIds,
39
+ danglingIds,
40
+ };
41
+ }
42
+ /** The census line. Offender ids are logged in full (not truncated) so each
43
+ * correlates directly with an account dir; `-` marks an empty list so every
44
+ * field is present and greppable. Healthy: `absent=0 dangling=0`. */
45
+ export function formatCensusLine(c) {
46
+ const absent = c.absentIds.length ? c.absentIds.join(',') : '-';
47
+ const dangling = c.danglingIds.length ? c.danglingIds.join(',') : '-';
48
+ return `${TAG} total=${c.total} assigned=${c.assigned} absent=${c.absent} dangling=${c.dangling} absent-ids=${absent} dangling-ids=${dangling}`;
49
+ }
50
+ /** Read every registered account.json under the accounts root. An unparseable
51
+ * account.json is excluded (corruption discipline, mirrors the lifecycle
52
+ * enumerator). */
53
+ function readAccounts(accountsRoot) {
54
+ let entries;
55
+ try {
56
+ entries = readdirSync(accountsRoot);
57
+ }
58
+ catch {
59
+ return [];
60
+ }
61
+ const out = [];
62
+ for (const entry of entries) {
63
+ const cfgPath = join(accountsRoot, entry, 'account.json');
64
+ if (!existsSync(cfgPath))
65
+ continue;
66
+ try {
67
+ const cfg = JSON.parse(readFileSync(cfgPath, 'utf-8'));
68
+ const admins = Array.isArray(cfg.admins)
69
+ ? cfg.admins
70
+ .map((a) => a && typeof a === 'object' && typeof a.userId === 'string'
71
+ ? a.userId
72
+ : null)
73
+ .filter((u) => u !== null && u.length > 0)
74
+ : [];
75
+ out.push({
76
+ accountId: entry,
77
+ role: typeof cfg.role === 'string' ? cfg.role : '',
78
+ managingAdminUserId: typeof cfg.managingAdminUserId === 'string' && cfg.managingAdminUserId
79
+ ? cfg.managingAdminUserId
80
+ : undefined,
81
+ admins,
82
+ });
83
+ }
84
+ catch {
85
+ // unparseable account.json — excluded
86
+ }
87
+ }
88
+ return out;
89
+ }
90
+ /** Run one census pass and log a single line. Filesystem-only and best-effort:
91
+ * an unreadable accounts root yields `total=0` rather than throwing. */
92
+ export function emitAccountAdminCensus(deps) {
93
+ const accounts = readAccounts(deps.accountsRoot);
94
+ const liveHouseAdminUserIds = accounts.filter((a) => a.role === 'house').flatMap((a) => a.admins);
95
+ const clients = accounts
96
+ .filter((a) => a.role === 'client')
97
+ .map((a) => ({ accountId: a.accountId, managingAdminUserId: a.managingAdminUserId }));
98
+ deps.logger(formatCensusLine(reconcileAccountAdminCensus(clients, liveHouseAdminUserIds)));
99
+ }
100
+ /** Standing periodic census. Unref'd interval so it never holds the process
101
+ * open; each tick re-emits best-effort. */
102
+ export function createAccountAdminCensus(deps) {
103
+ let timer = null;
104
+ return {
105
+ start() {
106
+ if (timer)
107
+ return;
108
+ timer = setInterval(() => {
109
+ emitAccountAdminCensus(deps);
110
+ }, deps.intervalMs);
111
+ if (typeof timer.unref === 'function')
112
+ timer.unref();
113
+ },
114
+ stop() {
115
+ if (timer) {
116
+ clearInterval(timer);
117
+ timer = null;
118
+ }
119
+ },
120
+ };
121
+ }
122
+ //# sourceMappingURL=account-admin-census.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-admin-census.js","sourceRoot":"","sources":["../src/account-admin-census.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /** The neo4j session shape the reader consumes — kept minimal so a fake can
2
+ * stand in for the real driver session in unit tests. */
3
+ export interface TzSessionLike {
4
+ run(query: string, params: Record<string, unknown>): Promise<{
5
+ records: Array<{
6
+ get(key: string): unknown;
7
+ }>;
8
+ }>;
9
+ }
10
+ export type AccountTimezoneSource = 'graph' | 'unset' | 'invalid' | 'unavailable';
11
+ /** Read the raw stored timezone from the operator's UserProfile row. Returns the
12
+ * trimmed string exactly as stored, or null when the row is missing, the value
13
+ * is absent/blank, or the value is not a string. No IANA validation here — that
14
+ * is classifyTimezone's job, kept separate so "row present but corrupt" stays
15
+ * distinguishable from "no row". */
16
+ export declare function readRawTimezone(session: TzSessionLike, accountId: string, userId: string): Promise<string | null>;
17
+ /** Classify a raw stored value into a usable timezone plus a source that keeps
18
+ * the three no-timezone reasons distinct: `unset` (no row / blank — the operator
19
+ * never configured one), `invalid` (a value is stored but is not a real IANA
20
+ * zone — corrupt/stale, a different failure to diagnose), `graph` (usable). */
21
+ export declare function classifyTimezone(raw: string | null): {
22
+ tz: string | null;
23
+ source: Extract<AccountTimezoneSource, 'graph' | 'unset' | 'invalid'>;
24
+ };
25
+ export interface AccountTimezoneDeps {
26
+ neo4jUri: string;
27
+ neo4jUser: string;
28
+ neo4jPassword: string;
29
+ }
30
+ /** Resolve the operator's timezone, fail-open and time-bounded. `graph` — a valid
31
+ * IANA zone was read. `unset` — the profile has no usable timezone. `invalid` — a
32
+ * value is stored but is not a real IANA zone. `unavailable` — no neo4j env,
33
+ * missing ids, a driver/connection error, or the read exceeded the cap. In every
34
+ * non-`graph` case tz is null and the hook falls back to the server zone. Never
35
+ * throws; a spawn is never blocked or delayed beyond READ_TIMEOUT_MS on the read. */
36
+ export declare function resolveAccountTimezone(deps: AccountTimezoneDeps, accountId: string, userId: string, logger: (line: string) => void): Promise<{
37
+ tz: string | null;
38
+ source: AccountTimezoneSource;
39
+ }>;
40
+ //# sourceMappingURL=account-timezone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-timezone.d.ts","sourceRoot":"","sources":["../src/account-timezone.ts"],"names":[],"mappings":"AA+BA;0DAC0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,GAAG,CACD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CAC9D;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,CAAA;AAEjF;;;;qCAIqC;AACrC,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAaD;;;gFAGgF;AAChF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG;IACpD,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;CACtE,CAIA;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB;AAYD;;;;;sFAKsF;AACtF,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAAC,CA+C/D"}
@@ -0,0 +1,126 @@
1
+ // Task 1515 — the operator's IANA timezone, read from their UserProfile on the
2
+ // graph, so the per-turn <datetime> hook can report "now" in the timezone they
3
+ // configured rather than the server's. Resolved once per admin spawn and stamped
4
+ // into the PTY env as MAXY_ACCOUNT_TZ; the hook reads it every turn and formats a
5
+ // fresh instant. The timezone is stable within a spawn, so a single read at spawn
6
+ // is enough — a resume re-reads, so a changed timezone is picked up next spawn.
7
+ //
8
+ // Three concerns, split so each is testable in isolation:
9
+ // - readRawTimezone — the pure DB read (returns the trimmed stored value)
10
+ // - classifyTimezone — the pure validation/classification (unset/invalid/graph)
11
+ // - resolveAccountTimezone — the impure, fail-open, time-bounded driver wrapper
12
+ //
13
+ // The query mirrors the scheduling plugin's getUserTimezone exactly
14
+ // (MATCH (up:UserProfile {accountId, userId}) RETURN up.timezone) so the injected
15
+ // surface and time-resolve agree on which timezone is the operator's.
16
+ //
17
+ // This read sits on the admin spawn hot path, so resolveAccountTimezone MUST
18
+ // never throw and MUST never stall: the driver is built with short connect
19
+ // timeouts and the whole read is raced against a hard cap, so a Neo4j that is
20
+ // reachable-but-unresponsive fails open to the server zone rather than delaying
21
+ // every session start.
22
+ import neo4j from 'neo4j-driver';
23
+ const TAG = '[datetime-tz]';
24
+ /** Hard cap on the whole graph read. Neo4j is local, so a healthy read is a few
25
+ * ms; this cap only bites when Neo4j is pathological, and then the spawn falls
26
+ * back to the server zone instead of waiting on the driver's ~30–60s default. */
27
+ const READ_TIMEOUT_MS = 2500;
28
+ /** Read the raw stored timezone from the operator's UserProfile row. Returns the
29
+ * trimmed string exactly as stored, or null when the row is missing, the value
30
+ * is absent/blank, or the value is not a string. No IANA validation here — that
31
+ * is classifyTimezone's job, kept separate so "row present but corrupt" stays
32
+ * distinguishable from "no row". */
33
+ export async function readRawTimezone(session, accountId, userId) {
34
+ const res = await session.run(`MATCH (up:UserProfile {accountId: $accountId, userId: $userId})
35
+ RETURN up.timezone AS tz`, { accountId, userId });
36
+ const rec = res.records[0];
37
+ if (!rec)
38
+ return null;
39
+ const raw = rec.get('tz');
40
+ if (typeof raw !== 'string' || raw.trim().length === 0)
41
+ return null;
42
+ return raw.trim();
43
+ }
44
+ /** True iff `tz` is a real IANA timezone identifier. Intl.DateTimeFormat throws
45
+ * RangeError for anything it does not recognise. */
46
+ function isValidIana(tz) {
47
+ try {
48
+ new Intl.DateTimeFormat('en-GB', { timeZone: tz });
49
+ return true;
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
55
+ /** Classify a raw stored value into a usable timezone plus a source that keeps
56
+ * the three no-timezone reasons distinct: `unset` (no row / blank — the operator
57
+ * never configured one), `invalid` (a value is stored but is not a real IANA
58
+ * zone — corrupt/stale, a different failure to diagnose), `graph` (usable). */
59
+ export function classifyTimezone(raw) {
60
+ if (raw === null)
61
+ return { tz: null, source: 'unset' };
62
+ if (!isValidIana(raw))
63
+ return { tz: null, source: 'invalid' };
64
+ return { tz: raw, source: 'graph' };
65
+ }
66
+ /** Reject with a timeout error if `p` has not settled within `ms`. The timer is
67
+ * cleared on settle so it never keeps the event loop alive. */
68
+ function withTimeout(p, ms) {
69
+ let timer;
70
+ const timeout = new Promise((_, reject) => {
71
+ timer = setTimeout(() => reject(new Error(`timeout after ${ms}ms`)), ms);
72
+ });
73
+ return Promise.race([p, timeout]).finally(() => clearTimeout(timer));
74
+ }
75
+ /** Resolve the operator's timezone, fail-open and time-bounded. `graph` — a valid
76
+ * IANA zone was read. `unset` — the profile has no usable timezone. `invalid` — a
77
+ * value is stored but is not a real IANA zone. `unavailable` — no neo4j env,
78
+ * missing ids, a driver/connection error, or the read exceeded the cap. In every
79
+ * non-`graph` case tz is null and the hook falls back to the server zone. Never
80
+ * throws; a spawn is never blocked or delayed beyond READ_TIMEOUT_MS on the read. */
81
+ export async function resolveAccountTimezone(deps, accountId, userId, logger) {
82
+ const acct = accountId.slice(0, 8);
83
+ if (!deps.neo4jUri || !deps.neo4jPassword || !accountId || !userId) {
84
+ logger(`${TAG} source=unavailable reason=no-neo4j-env-or-ids account=${acct}`);
85
+ return { tz: null, source: 'unavailable' };
86
+ }
87
+ let driver;
88
+ try {
89
+ // Everything that can throw synchronously — a malformed URI throws "Unknown
90
+ // scheme" right here — is inside the try, so a bad config fails open instead
91
+ // of aborting the spawn. Short connect timeouts bound a slow/absent server.
92
+ driver = neo4j.driver(deps.neo4jUri, neo4j.auth.basic(deps.neo4jUser, deps.neo4jPassword), {
93
+ connectionAcquisitionTimeout: READ_TIMEOUT_MS,
94
+ connectionTimeout: READ_TIMEOUT_MS,
95
+ });
96
+ }
97
+ catch (err) {
98
+ logger(`${TAG} source=unavailable reason=driver-init:${err instanceof Error ? err.message : String(err)} account=${acct}`);
99
+ return { tz: null, source: 'unavailable' };
100
+ }
101
+ try {
102
+ const raw = await withTimeout((async () => {
103
+ const session = driver.session();
104
+ try {
105
+ return await readRawTimezone(session, accountId, userId);
106
+ }
107
+ finally {
108
+ // Guard the session close independently so its rejection can never
109
+ // skip the driver close below or escape as an unhandled error.
110
+ await session.close().catch(() => { });
111
+ }
112
+ })(), READ_TIMEOUT_MS);
113
+ const { tz, source } = classifyTimezone(raw);
114
+ logger(`${TAG} source=${source} tz=${tz ?? '-'} account=${acct}`);
115
+ return { tz, source };
116
+ }
117
+ catch (err) {
118
+ logger(`${TAG} source=unavailable reason=${err instanceof Error ? err.message : String(err)} account=${acct}`);
119
+ return { tz: null, source: 'unavailable' };
120
+ }
121
+ finally {
122
+ // Independently guarded so a close error never propagates past the wrapper.
123
+ await driver.close().catch(() => { });
124
+ }
125
+ }
126
+ //# sourceMappingURL=account-timezone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-timezone.js","sourceRoot":"","sources":["../src/account-timezone.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,kFAAkF;AAClF,kFAAkF;AAClF,gFAAgF;AAChF,EAAE;AACF,0DAA0D;AAC1D,8EAA8E;AAC9E,mFAAmF;AACnF,kFAAkF;AAClF,EAAE;AACF,oEAAoE;AACpE,kFAAkF;AAClF,sEAAsE;AACtE,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,gFAAgF;AAChF,uBAAuB;AAEvB,OAAO,KAAK,MAAM,cAAc,CAAA;AAEhC,MAAM,GAAG,GAAG,eAAe,CAAA;AAE3B;;kFAEkF;AAClF,MAAM,eAAe,GAAG,IAAI,CAAA;AAa5B;;;;qCAIqC;AACrC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAsB,EACtB,SAAiB,EACjB,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B;8BAC0B,EAC1B,EAAE,SAAS,EAAE,MAAM,EAAE,CACtB,CAAA;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;AACnB,CAAC;AAED;qDACqD;AACrD,SAAS,WAAW,CAAC,EAAU;IAC7B,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;gFAGgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,GAAkB;IAIjD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IACtD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC7D,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AACrC,CAAC;AAQD;gEACgE;AAChE,SAAS,WAAW,CAAI,CAAa,EAAE,EAAU;IAC/C,IAAI,KAAoC,CAAA;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;IACF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;AACtE,CAAC;AAED;;;;;sFAKsF;AACtF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAyB,EACzB,SAAiB,EACjB,MAAc,EACd,MAA8B;IAE9B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QACnE,MAAM,CAAC,GAAG,GAAG,0DAA0D,IAAI,EAAE,CAAC,CAAA;QAC9E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IAC5C,CAAC;IACD,IAAI,MAAuC,CAAA;IAC3C,IAAI,CAAC;QACH,4EAA4E;QAC5E,6EAA6E;QAC7E,4EAA4E;QAC5E,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;YACzF,4BAA4B,EAAE,eAAe;YAC7C,iBAAiB,EAAE,eAAe;SACnC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CACJ,GAAG,GAAG,0CAA0C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CACnH,CAAA;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IAC5C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,WAAW,CAC3B,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;YAChC,IAAI,CAAC;gBACH,OAAO,MAAM,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;oBAAS,CAAC;gBACT,mEAAmE;gBACnE,+DAA+D;gBAC/D,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAC,EAAE,EACJ,eAAe,CAChB,CAAA;QACD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAC5C,MAAM,CAAC,GAAG,GAAG,WAAW,MAAM,OAAO,EAAE,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC,CAAA;QACjE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAA;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CACJ,GAAG,GAAG,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CACvG,CAAA;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IAC5C,CAAC;YAAS,CAAC;QACT,4EAA4E;QAC5E,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACtC,CAAC;AACH,CAAC"}
@@ -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,EAqB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EA2QtD,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,EAqB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EA4QtD,CAAA"}
@@ -38,6 +38,7 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
38
38
  "mcp__plugin_admin_admin__account_delete",
39
39
  "mcp__plugin_admin_admin__account_list",
40
40
  "mcp__plugin_admin_admin__account_purge",
41
+ "mcp__plugin_admin_admin__account_reassign_admin",
41
42
  "mcp__plugin_admin_admin__action-approve",
42
43
  "mcp__plugin_admin_admin__action-edit",
43
44
  "mcp__plugin_admin_admin__action-pending",
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,kEAAkE;AAClE,yDAAyD;AACzD,kFAAkF;AAClF,EAAE;AACF,yEAAyE;AACzE,6DAA6D;AAE7D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,OAAO;IACP,KAAK;IACL,SAAS;IACT,WAAW;IACX,UAAU;IACV,OAAO;IACP,YAAY;IACZ,OAAO;IACP,cAAc;IACd,UAAU;IACV,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,UAAU;IACV,SAAS;IACT,UAAU;IACV,MAAM;IACN,WAAW;CACZ,CAAA;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D,yCAAyC;IACzC,yCAAyC;IACzC,kDAAkD;IAClD,sDAAsD;IACtD,yCAAyC;IACzC,yCAAyC;IACzC,uCAAuC;IACvC,wCAAwC;IACxC,yCAAyC;IACzC,sCAAsC;IACtC,yCAAyC;IACzC,wCAAwC;IACxC,oCAAoC;IACpC,yCAAyC;IACzC,qCAAqC;IACrC,uCAAuC;IACvC,2CAA2C;IAC3C,4CAA4C;IAC5C,qCAAqC;IACrC,yCAAyC;IACzC,4CAA4C;IAC5C,oCAAoC;IACpC,sCAAsC;IACtC,0CAA0C;IAC1C,uCAAuC;IACvC,sCAAsC;IACtC,sDAAsD;IACtD,mDAAmD;IACnD,6CAA6C;IAC7C,wCAAwC;IACxC,yCAAyC;IACzC,qCAAqC;IACrC,uCAAuC;IACvC,sCAAsC;IACtC,wCAAwC;IACxC,+BAA+B;IAC/B,qCAAqC;IACrC,sCAAsC;IACtC,yCAAyC;IACzC,4CAA4C;IAC5C,uDAAuD;IACvD,+CAA+C;IAC/C,2CAA2C;IAC3C,gDAAgD;IAChD,oDAAoD;IACpD,4CAA4C;IAC5C,+CAA+C;IAC/C,+CAA+C;IAC/C,gDAAgD;IAChD,6CAA6C;IAC7C,6CAA6C;IAC7C,iDAAiD;IACjD,oDAAoD;IACpD,+CAA+C;IAC/C,2CAA2C;IAC3C,2CAA2C;IAC3C,+CAA+C;IAC/C,iDAAiD;IACjD,uDAAuD;IACvD,iDAAiD;IACjD,qDAAqD;IACrD,+CAA+C;IAC/C,+CAA+C;IAC/C,8CAA8C;IAC9C,+CAA+C;IAC/C,6CAA6C;IAC7C,+CAA+C;IAC/C,+CAA+C;IAC/C,6CAA6C;IAC7C,6CAA6C;IAC7C,uCAAuC;IACvC,sCAAsC;IACtC,2CAA2C;IAC3C,2CAA2C;IAC3C,sCAAsC;IACtC,2CAA2C;IAC3C,4CAA4C;IAC5C,uCAAuC;IACvC,4CAA4C;IAC5C,8CAA8C;IAC9C,qCAAqC;IACrC,sCAAsC;IACtC,uCAAuC;IACvC,qCAAqC;IACrC,sCAAsC;IACtC,uCAAuC;IACvC,8CAA8C;IAC9C,8CAA8C;IAC9C,8CAA8C;IAC9C,8CAA8C;IAC9C,8CAA8C;IAC9C,+CAA+C;IAC/C,qDAAqD;IACrD,sDAAsD;IACtD,uDAAuD;IACvD,wDAAwD;IACxD,sDAAsD;IACtD,mDAAmD;IACnD,oDAAoD;IACpD,sDAAsD;IACtD,iEAAiE;IACjE,2DAA2D;IAC3D,yDAAyD;IACzD,yDAAyD;IACzD,sDAAsD;IACtD,uDAAuD;IACvD,yDAAyD;IACzD,sDAAsD;IACtD,uDAAuD;IACvD,2DAA2D;IAC3D,0DAA0D;IAC1D,wDAAwD;IACxD,qDAAqD;IACrD,sDAAsD;IACtD,gEAAgE;IAChE,qDAAqD;IACrD,oDAAoD;IACpD,iDAAiD;IACjD,kDAAkD;IAClD,wDAAwD;IACxD,oDAAoD;IACpD,wDAAwD;IACxD,wDAAwD;IACxD,qDAAqD;IACrD,uDAAuD;IACvD,sDAAsD;IACtD,mDAAmD;IACnD,oDAAoD;IACpD,qDAAqD;IACrD,kDAAkD;IAClD,mDAAmD;IACnD,qDAAqD;IACrD,0DAA0D;IAC1D,wDAAwD;IACxD,0DAA0D;IAC1D,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,mDAAmD;IACnD,8DAA8D;IAC9D,sDAAsD;IACtD,iEAAiE;IACjE,kEAAkE;IAClE,6DAA6D;IAC7D,8CAA8C;IAC9C,wDAAwD;IACxD,gDAAgD;IAChD,qDAAqD;IACrD,sDAAsD;IACtD,wDAAwD;IACxD,wCAAwC;IACxC,wCAAwC;IACxC,iDAAiD;IACjD,wDAAwD;IACxD,0DAA0D;IAC1D,0CAA0C;IAC1C,6CAA6C;IAC7C,wCAAwC;IACxC,mDAAmD;IACnD,+CAA+C;IAC/C,mDAAmD;IACnD,0CAA0C;IAC1C,kDAAkD;IAClD,8CAA8C;IAC9C,oDAAoD;IACpD,kDAAkD;IAClD,+CAA+C;IAC/C,mDAAmD;IACnD,2CAA2C;IAC3C,qDAAqD;IACrD,+CAA+C;IAC/C,sDAAsD;IACtD,gDAAgD;IAChD,2CAA2C;IAC3C,gDAAgD;IAChD,0CAA0C;IAC1C,0CAA0C;IAC1C,kDAAkD;IAClD,yCAAyC;IACzC,kDAAkD;IAClD,2CAA2C;IAC3C,yCAAyC;IACzC,2CAA2C;IAC3C,4CAA4C;IAC5C,mDAAmD;IACnD,uDAAuD;IACvD,4DAA4D;IAC5D,sDAAsD;IACtD,sDAAsD;IACtD,qDAAqD;IACrD,wDAAwD;IACxD,oDAAoD;IACpD,uDAAuD;IACvD,sDAAsD;IACtD,oDAAoD;IACpD,4CAA4C;IAC5C,iDAAiD;IACjD,gDAAgD;IAChD,kDAAkD;IAClD,gDAAgD;IAChD,mDAAmD;IACnD,6DAA6D;IAC7D,2DAA2D;IAC3D,2DAA2D;IAC3D,+DAA+D;IAC/D,+DAA+D;IAC/D,+DAA+D;IAC/D,0DAA0D;IAC1D,6DAA6D;IAC7D,6DAA6D;IAC7D,8DAA8D;IAC9D,8DAA8D;IAC9D,8DAA8D;IAC9D,qDAAqD;IACrD,sDAAsD;IACtD,2DAA2D;IAC3D,iDAAiD;IACjD,sDAAsD;IACtD,uDAAuD;IACvD,yDAAyD;IACzD,oDAAoD;IACpD,mDAAmD;IACnD,wDAAwD;IACxD,iDAAiD;IACjD,wDAAwD;IACxD,kDAAkD;IAClD,oDAAoD;IACpD,iDAAiD;IACjD,wCAAwC;IACxC,gDAAgD;IAChD,0DAA0D;IAC1D,sCAAsC;IACtC,kDAAkD;IAClD,gDAAgD;IAChD,kEAAkE;IAClE,uDAAuD;IACvD,oDAAoD;IACpD,oDAAoD;IACpD,qDAAqD;IACrD,oDAAoD;IACpD,kDAAkD;IAClD,oDAAoD;IACpD,gDAAgD;IAChD,yCAAyC;IACzC,uCAAuC;IACvC,oCAAoC;IACpC,qCAAqC;IACrC,uCAAuC;IACvC,qCAAqC;IACrC,yCAAyC;IACzC,qCAAqC;IACrC,sCAAsC;IACtC,oCAAoC;IACpC,iCAAiC;IACjC,kCAAkC;IAClC,mCAAmC;IACnC,oCAAoC;IACpC,oCAAoC;IACpC,kDAAkD;IAClD,kDAAkD;IAClD,mDAAmD;IACnD,+CAA+C;IAC/C,gDAAgD;IAChD,gDAAgD;IAChD,kDAAkD;IAClD,oDAAoD;CACrD,CAAA"}
1
+ {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAe3B,OAAO,EAkBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AA+BzB,OAAO,KAAK,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAyFlE,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,WAAW,EAAE,kBAAkB,CAAA;IAC/B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;;6BAGyB;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;sCAGkC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAsFD;;;;;;mEAMmE;AACnE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC9D;AAMD;;;;;;iBAMiB;AACjB,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAmCvF;AAID;;;;;;yBAMyB;AACzB,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAiCzD;AAkCD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpG;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAER;AAkCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5F;AAiGD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAGvG;AA6DD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AA8CD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CA83FpD"}
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
@@ -1085,13 +1085,29 @@ export function buildHttpApp(deps) {
1085
1085
  // ignored here too, so the transcript scope can never diverge from the
1086
1086
  // work-MCP graph scope (which only sub-scopes under the same invariant).
1087
1087
  let spawnCwd = deps.spawnCwd;
1088
+ // Task 1500 — the target sub-account's managing admin userId, read from its
1089
+ // account.json in the validated-target branch below and threaded into the
1090
+ // passive spawn so work-create links the intake :Task ASSIGNED_TO that admin.
1091
+ // Undefined when the sub-account has no managing admin (created before the
1092
+ // enforcement change — the account-admin census flags it).
1093
+ let assignedAdminUserId;
1088
1094
  if (passive && role === 'public' && !specialist && targetAccountId) {
1089
1095
  const accountsRoot = join(dirname(deps.platformRoot), 'data', 'accounts');
1090
- if (!existsSync(join(accountsRoot, targetAccountId, 'account.json'))) {
1096
+ const accountJsonPath = join(accountsRoot, targetAccountId, 'account.json');
1097
+ if (!existsSync(accountJsonPath)) {
1091
1098
  deps.logger(`[spawn] op=passive-account-reject target=${targetAccountId} reason=not-in-registry`);
1092
1099
  timed(deps.logger, 'POST', '/public-spawn', 400, Date.now() - start);
1093
1100
  return c.json({ error: 'targetAccountId not in this install registry' }, 400);
1094
1101
  }
1102
+ try {
1103
+ const cfg = JSON.parse(readFileSync(accountJsonPath, 'utf8'));
1104
+ if (typeof cfg.managingAdminUserId === 'string' && cfg.managingAdminUserId) {
1105
+ assignedAdminUserId = cfg.managingAdminUserId;
1106
+ }
1107
+ }
1108
+ catch {
1109
+ // unparseable account.json — leave assignedAdminUserId undefined (no edge)
1110
+ }
1095
1111
  spawnCwd = join(accountsRoot, targetAccountId);
1096
1112
  }
1097
1113
  const result = await spawnClaudeSession({
@@ -1138,6 +1154,7 @@ export function buildHttpApp(deps) {
1138
1154
  previousContext,
1139
1155
  passive,
1140
1156
  targetAccountId,
1157
+ assignedAdminUserId,
1141
1158
  });
1142
1159
  if (!result.ok) {
1143
1160
  if ('rejected' in result) {