@rubytech/create-maxy-code 0.1.563 → 0.1.565

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 (313) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/PLUGIN.md +2 -2
  3. package/payload/platform/plugins/admin/hooks/__tests__/askuserquestion-channel-carrier-gate.test.sh +1 -1
  4. package/payload/platform/plugins/admin/hooks/askuserquestion-channel-carrier-gate.sh +4 -3
  5. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +27 -4
  6. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
  7. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visit-status-write.test.ts +118 -0
  8. package/payload/platform/plugins/cloudflare/skills/data-portal/SKILL.md +15 -0
  9. package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +25 -7
  10. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visit-status.ts +62 -5
  11. package/payload/platform/plugins/docs/references/outlook-guide.md +7 -3
  12. package/payload/platform/plugins/docs/references/telegram-guide.md +19 -0
  13. package/payload/platform/plugins/memory/references/schema-construction.md +1 -1
  14. package/payload/platform/plugins/outlook/PLUGIN.md +2 -2
  15. package/payload/platform/plugins/outlook/mcp/dist/__tests__/attach.test.js +1 -1
  16. package/payload/platform/plugins/outlook/mcp/dist/__tests__/attach.test.js.map +1 -1
  17. package/payload/platform/plugins/outlook/mcp/dist/__tests__/calendar-write.test.js +1 -1
  18. package/payload/platform/plugins/outlook/mcp/dist/__tests__/calendar-write.test.js.map +1 -1
  19. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-attachments.test.js +1 -1
  20. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-attachments.test.js.map +1 -1
  21. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-attachments.test.js +1 -1
  22. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-attachments.test.js.map +1 -1
  23. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-removal.test.js +1 -1
  24. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-removal.test.js.map +1 -1
  25. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit.test.js +1 -1
  26. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit.test.js.map +1 -1
  27. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-threaded.test.js +51 -1
  28. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-threaded.test.js.map +1 -1
  29. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-paged.test.js +1 -1
  30. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-paged.test.js.map +1 -1
  31. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-prefix-wiring.test.js +1 -0
  32. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-prefix-wiring.test.js.map +1 -1
  33. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-retry.test.js +2 -2
  34. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client-retry.test.js.map +1 -1
  35. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js +7 -7
  36. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js.map +1 -1
  37. package/payload/platform/plugins/outlook/mcp/dist/__tests__/has-attachments.test.js +1 -1
  38. package/payload/platform/plugins/outlook/mcp/dist/__tests__/has-attachments.test.js.map +1 -1
  39. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-attachment.test.js +1 -1
  40. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-attachment.test.js.map +1 -1
  41. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-delete.test.js +1 -1
  42. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-delete.test.js.map +1 -1
  43. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-fetch-body.test.js +1 -1
  44. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-fetch-body.test.js.map +1 -1
  45. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-list-paging.test.js +1 -1
  46. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-list-paging.test.js.map +1 -1
  47. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-otp-extract.test.js +1 -1
  48. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-otp-extract.test.js.map +1 -1
  49. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-reply.test.js +159 -6
  50. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-reply.test.js.map +1 -1
  51. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js +1 -1
  52. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js.map +1 -1
  53. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-paging.test.js +1 -1
  54. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-paging.test.js.map +1 -1
  55. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-send-attachments.test.js +1 -1
  56. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-send-attachments.test.js.map +1 -1
  57. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mail-only-guard.test.js +1 -0
  58. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mail-only-guard.test.js.map +1 -1
  59. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mailbox-add.test.js +1 -1
  60. package/payload/platform/plugins/outlook/mcp/dist/__tests__/shared-mailbox-add.test.js.map +1 -1
  61. package/payload/platform/plugins/outlook/mcp/dist/__tests__/write-tools.test.js +2 -1
  62. package/payload/platform/plugins/outlook/mcp/dist/__tests__/write-tools.test.js.map +1 -1
  63. package/payload/platform/plugins/outlook/mcp/dist/index.js +13 -4
  64. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
  65. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts +9 -0
  66. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
  67. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
  68. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.d.ts +7 -0
  69. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.d.ts.map +1 -1
  70. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.js +16 -5
  71. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.js.map +1 -1
  72. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.d.ts +5 -0
  73. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.d.ts.map +1 -1
  74. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.js +81 -2
  75. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.js.map +1 -1
  76. package/payload/platform/plugins/whatsapp/PLUGIN.md +2 -2
  77. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +2 -2
  78. package/payload/platform/scripts/check-no-esm-require.mjs +10 -0
  79. package/payload/platform/services/claude-session-manager/dist/channel-mcp.d.ts.map +1 -1
  80. package/payload/platform/services/claude-session-manager/dist/channel-mcp.js +9 -3
  81. package/payload/platform/services/claude-session-manager/dist/channel-mcp.js.map +1 -1
  82. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  83. package/payload/platform/services/claude-session-manager/dist/http-server.js +11 -2
  84. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  85. package/payload/platform/services/claude-session-manager/dist/index.js +0 -1
  86. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  87. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +0 -1
  88. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  89. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +7 -2
  90. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  91. package/payload/platform/services/claude-session-manager/dist/public-allowlist.d.ts +4 -2
  92. package/payload/platform/services/claude-session-manager/dist/public-allowlist.d.ts.map +1 -1
  93. package/payload/platform/services/claude-session-manager/dist/public-allowlist.js +15 -18
  94. package/payload/platform/services/claude-session-manager/dist/public-allowlist.js.map +1 -1
  95. package/payload/platform/services/claude-session-manager/dist/specialist-roster.d.ts +4 -2
  96. package/payload/platform/services/claude-session-manager/dist/specialist-roster.d.ts.map +1 -1
  97. package/payload/platform/services/claude-session-manager/dist/specialist-roster.js +4 -2
  98. package/payload/platform/services/claude-session-manager/dist/specialist-roster.js.map +1 -1
  99. package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
  100. package/payload/platform/services/telegram-channel/dist/instructions.js +31 -16
  101. package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
  102. package/payload/platform/services/telegram-channel/dist/server.d.ts.map +1 -1
  103. package/payload/platform/services/telegram-channel/dist/server.js +21 -38
  104. package/payload/platform/services/telegram-channel/dist/server.js.map +1 -1
  105. package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts +6 -0
  106. package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts.map +1 -1
  107. package/payload/platform/services/telegram-channel/dist/turn-follow.js +16 -1
  108. package/payload/platform/services/telegram-channel/dist/turn-follow.js.map +1 -1
  109. package/payload/platform/services/webchat-channel/dist/instructions.d.ts +0 -2
  110. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
  111. package/payload/platform/services/webchat-channel/dist/instructions.js +25 -19
  112. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
  113. package/payload/platform/services/webchat-channel/dist/notification.d.ts +3 -2
  114. package/payload/platform/services/webchat-channel/dist/notification.d.ts.map +1 -1
  115. package/payload/platform/services/webchat-channel/dist/notification.js +14 -4
  116. package/payload/platform/services/webchat-channel/dist/notification.js.map +1 -1
  117. package/payload/platform/services/webchat-channel/dist/server.d.ts.map +1 -1
  118. package/payload/platform/services/webchat-channel/dist/server.js +16 -48
  119. package/payload/platform/services/webchat-channel/dist/server.js.map +1 -1
  120. package/payload/platform/services/webchat-channel/dist/turn-follow.d.ts +6 -0
  121. package/payload/platform/services/webchat-channel/dist/turn-follow.d.ts.map +1 -1
  122. package/payload/platform/services/webchat-channel/dist/turn-follow.js +16 -1
  123. package/payload/platform/services/webchat-channel/dist/turn-follow.js.map +1 -1
  124. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +5 -2
  125. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  126. package/payload/platform/services/whatsapp-channel/dist/notification.js +31 -14
  127. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  128. package/payload/platform/services/whatsapp-channel/dist/server.d.ts.map +1 -1
  129. package/payload/platform/services/whatsapp-channel/dist/server.js +64 -161
  130. package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
  131. package/payload/platform/services/whatsapp-channel/dist/targets.d.ts +7 -38
  132. package/payload/platform/services/whatsapp-channel/dist/targets.d.ts.map +1 -1
  133. package/payload/platform/services/whatsapp-channel/dist/targets.js +7 -51
  134. package/payload/platform/services/whatsapp-channel/dist/targets.js.map +1 -1
  135. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts +6 -0
  136. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts.map +1 -1
  137. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js +21 -1
  138. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js.map +1 -1
  139. package/payload/server/{adminuser-self-heal-ZHFNDKJK.js → adminuser-self-heal-Y4U3UNKF.js} +10 -2
  140. package/payload/server/{chunk-G6ULACHG.js → chunk-637C2FGE.js} +3385 -3275
  141. package/payload/server/{chunk-HYQNUVGO.js → chunk-KVR2FT6O.js} +12 -1
  142. package/payload/server/{chunk-SKYZG6OT.js → chunk-PGGGWUBM.js} +372 -224
  143. package/payload/server/{chunk-JOVREC6E.js → chunk-Y4NH2KLF.js} +3789 -3484
  144. package/payload/server/{manager-2VEJKVEO.js → manager-R3XH3BNM.js} +3 -3
  145. package/payload/server/maxy-edge.js +27 -4
  146. package/payload/server/public/activity.html +5 -5
  147. package/payload/server/public/agents.html +4 -4
  148. package/payload/server/public/assets/{AdminLoginScreens-C6e5jf0S.js → AdminLoginScreens-5gI137xF.js} +1 -1
  149. package/payload/server/public/assets/AdminLoginScreens-5gI137xF.js.br +0 -0
  150. package/payload/server/public/assets/AdminLoginScreens-5gI137xF.js.gz +0 -0
  151. package/payload/server/public/assets/{AdminShell-DStA0lfm.js → AdminShell-Bfapavlp.js} +2 -2
  152. package/payload/server/public/assets/AdminShell-Bfapavlp.js.br +0 -0
  153. package/payload/server/public/assets/AdminShell-Bfapavlp.js.gz +0 -0
  154. package/payload/server/public/assets/{activity--yyBcNfB.js → activity-DnbsmUgn.js} +1 -1
  155. package/payload/server/public/assets/activity-DnbsmUgn.js.br +0 -0
  156. package/payload/server/public/assets/activity-DnbsmUgn.js.gz +0 -0
  157. package/payload/server/public/assets/admin-BXIv0_oj.js +1 -0
  158. package/payload/server/public/assets/admin-BXIv0_oj.js.br +0 -0
  159. package/payload/server/public/assets/admin-BXIv0_oj.js.gz +0 -0
  160. package/payload/server/public/assets/{agents-odyVOb5E.js → agents-Dl2wOcpj.js} +1 -1
  161. package/payload/server/public/assets/agents-Dl2wOcpj.js.br +0 -0
  162. package/payload/server/public/assets/agents-Dl2wOcpj.js.gz +0 -0
  163. package/payload/server/public/assets/{browser-D1K_MoHt.js → browser-D-Uc9ewO.js} +1 -1
  164. package/payload/server/public/assets/browser-D-Uc9ewO.js.br +0 -0
  165. package/payload/server/public/assets/browser-D-Uc9ewO.js.gz +0 -0
  166. package/payload/server/public/assets/{calendar-jqh9U7Ic.js → calendar-Cu3O6Bay.js} +1 -1
  167. package/payload/server/public/assets/calendar-Cu3O6Bay.js.br +0 -0
  168. package/payload/server/public/assets/calendar-Cu3O6Bay.js.gz +0 -0
  169. package/payload/server/public/assets/chat-Bso94e-f.js +1 -0
  170. package/payload/server/public/assets/chat-Bso94e-f.js.br +0 -0
  171. package/payload/server/public/assets/chat-Bso94e-f.js.gz +0 -0
  172. package/payload/server/public/assets/chevron-left-CDwfR9V-.js +1 -0
  173. package/payload/server/public/assets/chevron-left-CDwfR9V-.js.br +0 -0
  174. package/payload/server/public/assets/clock-DDVrNLt9.js +1 -0
  175. package/payload/server/public/assets/clock-DDVrNLt9.js.br +0 -0
  176. package/payload/server/public/assets/clock-DDVrNLt9.js.gz +0 -0
  177. package/payload/server/public/assets/{copy-DkuHwkaB.js → copy-DPBVV8KZ.js} +1 -1
  178. package/payload/server/public/assets/copy-DPBVV8KZ.js.br +0 -0
  179. package/payload/server/public/assets/copy-DPBVV8KZ.js.gz +0 -0
  180. package/payload/server/public/assets/data-Dei8n2EX.js +1 -0
  181. package/payload/server/public/assets/data-Dei8n2EX.js.br +0 -0
  182. package/payload/server/public/assets/data-Dei8n2EX.js.gz +0 -0
  183. package/payload/server/public/assets/{file-text-C6o_NRjj.js → file-text-Dn82O6ke.js} +1 -1
  184. package/payload/server/public/assets/file-text-Dn82O6ke.js.br +0 -0
  185. package/payload/server/public/assets/file-text-Dn82O6ke.js.gz +0 -0
  186. package/payload/server/public/assets/{graph-BN30v5hJ.js → graph-D2J7a7Ll.js} +1 -1
  187. package/payload/server/public/assets/graph-D2J7a7Ll.js.br +0 -0
  188. package/payload/server/public/assets/{graph-BN30v5hJ.js.gz → graph-D2J7a7Ll.js.gz} +0 -0
  189. package/payload/server/public/assets/{graph-labels-DHFyNXQt.js → graph-labels-D3gkY2IH.js} +1 -1
  190. package/payload/server/public/assets/graph-labels-D3gkY2IH.js.br +0 -0
  191. package/payload/server/public/assets/graph-labels-D3gkY2IH.js.gz +0 -0
  192. package/payload/server/public/assets/{operator-DwFYA4Fp.js → operator-Bz_yj1im.js} +1 -1
  193. package/payload/server/public/assets/operator-Bz_yj1im.js.br +0 -0
  194. package/payload/server/public/assets/operator-Bz_yj1im.js.gz +0 -0
  195. package/payload/server/public/assets/page-D6u2xYh7.js +1 -0
  196. package/payload/server/public/assets/page-D6u2xYh7.js.br +0 -0
  197. package/payload/server/public/assets/page-D6u2xYh7.js.gz +0 -0
  198. package/payload/server/public/assets/{page-CEWIP3VF.js → page-mH4nyQ75.js} +2 -2
  199. package/payload/server/public/assets/page-mH4nyQ75.js.br +0 -0
  200. package/payload/server/public/assets/page-mH4nyQ75.js.gz +0 -0
  201. package/payload/server/public/assets/play-ByuChQJJ.js +1 -0
  202. package/payload/server/public/assets/play-ByuChQJJ.js.br +0 -0
  203. package/payload/server/public/assets/play-ByuChQJJ.js.gz +0 -0
  204. package/payload/server/public/assets/{public-Ceb0n7Km.js → public-CtoYVjPR.js} +1 -1
  205. package/payload/server/public/assets/public-CtoYVjPR.js.br +0 -0
  206. package/payload/server/public/assets/public-CtoYVjPR.js.gz +0 -0
  207. package/payload/server/public/assets/{rotate-ccw-CDYdx91V.js → rotate-ccw-BXoIghE3.js} +1 -1
  208. package/payload/server/public/assets/rotate-ccw-BXoIghE3.js.br +0 -0
  209. package/payload/server/public/assets/rotate-ccw-BXoIghE3.js.gz +0 -0
  210. package/payload/server/public/assets/{routines-DwNTih0y.js → routines-DXleYpDv.js} +1 -1
  211. package/payload/server/public/assets/routines-DXleYpDv.js.br +0 -0
  212. package/payload/server/public/assets/routines-DXleYpDv.js.gz +0 -0
  213. package/payload/server/public/assets/{skills-TIDCdOLQ.js → skills-CMl38MKH.js} +1 -1
  214. package/payload/server/public/assets/skills-CMl38MKH.js.br +0 -0
  215. package/payload/server/public/assets/skills-CMl38MKH.js.gz +0 -0
  216. package/payload/server/public/assets/{tasks-eTXvaWnd.js → tasks-Cshaf0Md.js} +1 -1
  217. package/payload/server/public/assets/tasks-Cshaf0Md.js.br +0 -0
  218. package/payload/server/public/assets/tasks-Cshaf0Md.js.gz +0 -0
  219. package/payload/server/public/assets/{triangle-alert-JwLSrj17.js → triangle-alert-CS-NXr_9.js} +1 -1
  220. package/payload/server/public/assets/triangle-alert-CS-NXr_9.js.br +3 -0
  221. package/payload/server/public/assets/triangle-alert-CS-NXr_9.js.gz +0 -0
  222. package/payload/server/public/assets/{useCopyFeedback-DjTkNw2p.js → useCopyFeedback-pKLfQJNG.js} +1 -1
  223. package/payload/server/public/assets/useCopyFeedback-pKLfQJNG.js.br +0 -0
  224. package/payload/server/public/assets/useCopyFeedback-pKLfQJNG.js.gz +0 -0
  225. package/payload/server/public/assets/useMediaQuery-BHFn0-S9.css +1 -0
  226. package/payload/server/public/assets/useMediaQuery-BHFn0-S9.css.br +0 -0
  227. package/payload/server/public/assets/useMediaQuery-BHFn0-S9.css.gz +0 -0
  228. package/payload/server/public/assets/{useMediaQuery-D8VDA0RN.js → useMediaQuery-oDCasnxD.js} +1 -1
  229. package/payload/server/public/assets/useMediaQuery-oDCasnxD.js.br +0 -0
  230. package/payload/server/public/assets/{useMediaQuery-D8VDA0RN.js.gz → useMediaQuery-oDCasnxD.js.gz} +0 -0
  231. package/payload/server/public/assets/useVoiceRecorder-EgO1GmIg.js +2 -0
  232. package/payload/server/public/assets/useVoiceRecorder-EgO1GmIg.js.br +0 -0
  233. package/payload/server/public/assets/useVoiceRecorder-EgO1GmIg.js.gz +0 -0
  234. package/payload/server/public/assets/{wrench-DutUiRu7.js → wrench-czES9Rdy.js} +1 -1
  235. package/payload/server/public/assets/wrench-czES9Rdy.js.br +0 -0
  236. package/payload/server/public/assets/wrench-czES9Rdy.js.gz +0 -0
  237. package/payload/server/public/browser.html +4 -4
  238. package/payload/server/public/calendar.html +7 -7
  239. package/payload/server/public/chat.html +13 -13
  240. package/payload/server/public/data.html +11 -11
  241. package/payload/server/public/graph.html +9 -9
  242. package/payload/server/public/index.html +13 -13
  243. package/payload/server/public/operator.html +14 -14
  244. package/payload/server/public/public.html +13 -13
  245. package/payload/server/public/routines.html +7 -7
  246. package/payload/server/public/skills.html +5 -5
  247. package/payload/server/public/tasks.html +6 -6
  248. package/payload/server/server.js +10213 -8397
  249. package/payload/server/{src-MM64CYYZ.js → src-IJCLNFYU.js} +1 -1
  250. package/payload/server/{userprofile-reconcile-TL4JKBPG.js → userprofile-reconcile-PUA657YX.js} +8 -1
  251. package/payload/server/public/assets/AdminLoginScreens-C6e5jf0S.js.br +0 -0
  252. package/payload/server/public/assets/AdminLoginScreens-C6e5jf0S.js.gz +0 -0
  253. package/payload/server/public/assets/AdminShell-DStA0lfm.js.br +0 -0
  254. package/payload/server/public/assets/AdminShell-DStA0lfm.js.gz +0 -0
  255. package/payload/server/public/assets/activity--yyBcNfB.js.br +0 -0
  256. package/payload/server/public/assets/activity--yyBcNfB.js.gz +0 -0
  257. package/payload/server/public/assets/admin-Dr6Jwe7W.js +0 -1
  258. package/payload/server/public/assets/admin-Dr6Jwe7W.js.br +0 -0
  259. package/payload/server/public/assets/admin-Dr6Jwe7W.js.gz +0 -0
  260. package/payload/server/public/assets/agents-odyVOb5E.js.br +0 -0
  261. package/payload/server/public/assets/agents-odyVOb5E.js.gz +0 -0
  262. package/payload/server/public/assets/browser-D1K_MoHt.js.br +0 -0
  263. package/payload/server/public/assets/browser-D1K_MoHt.js.gz +0 -0
  264. package/payload/server/public/assets/calendar-jqh9U7Ic.js.br +0 -0
  265. package/payload/server/public/assets/calendar-jqh9U7Ic.js.gz +0 -0
  266. package/payload/server/public/assets/chat-QQHBdVor.js +0 -1
  267. package/payload/server/public/assets/chat-QQHBdVor.js.br +0 -0
  268. package/payload/server/public/assets/chat-QQHBdVor.js.gz +0 -0
  269. package/payload/server/public/assets/chevron-left-DwTXgKwr.js +0 -1
  270. package/payload/server/public/assets/clock-DOmh9iKX.js +0 -1
  271. package/payload/server/public/assets/clock-DOmh9iKX.js.br +0 -0
  272. package/payload/server/public/assets/copy-DkuHwkaB.js.br +0 -0
  273. package/payload/server/public/assets/copy-DkuHwkaB.js.gz +0 -0
  274. package/payload/server/public/assets/data-DYmTNqrb.js +0 -1
  275. package/payload/server/public/assets/data-DYmTNqrb.js.br +0 -0
  276. package/payload/server/public/assets/data-DYmTNqrb.js.gz +0 -0
  277. package/payload/server/public/assets/file-text-C6o_NRjj.js.br +0 -0
  278. package/payload/server/public/assets/file-text-C6o_NRjj.js.gz +0 -0
  279. package/payload/server/public/assets/graph-BN30v5hJ.js.br +0 -0
  280. package/payload/server/public/assets/graph-labels-DHFyNXQt.js.br +0 -0
  281. package/payload/server/public/assets/graph-labels-DHFyNXQt.js.gz +0 -0
  282. package/payload/server/public/assets/operator-DwFYA4Fp.js.br +0 -0
  283. package/payload/server/public/assets/operator-DwFYA4Fp.js.gz +0 -0
  284. package/payload/server/public/assets/page-BALVRssF.js +0 -1
  285. package/payload/server/public/assets/page-BALVRssF.js.br +0 -0
  286. package/payload/server/public/assets/page-BALVRssF.js.gz +0 -0
  287. package/payload/server/public/assets/page-CEWIP3VF.js.br +0 -0
  288. package/payload/server/public/assets/page-CEWIP3VF.js.gz +0 -0
  289. package/payload/server/public/assets/play-Bg-BY_oj.js +0 -1
  290. package/payload/server/public/assets/play-Bg-BY_oj.js.br +0 -0
  291. package/payload/server/public/assets/play-Bg-BY_oj.js.gz +0 -0
  292. package/payload/server/public/assets/public-Ceb0n7Km.js.br +0 -0
  293. package/payload/server/public/assets/public-Ceb0n7Km.js.gz +0 -0
  294. package/payload/server/public/assets/rotate-ccw-CDYdx91V.js.gz +0 -0
  295. package/payload/server/public/assets/routines-DwNTih0y.js.br +0 -0
  296. package/payload/server/public/assets/routines-DwNTih0y.js.gz +0 -0
  297. package/payload/server/public/assets/skills-TIDCdOLQ.js.br +0 -0
  298. package/payload/server/public/assets/skills-TIDCdOLQ.js.gz +0 -0
  299. package/payload/server/public/assets/tasks-eTXvaWnd.js.br +0 -0
  300. package/payload/server/public/assets/tasks-eTXvaWnd.js.gz +0 -0
  301. package/payload/server/public/assets/triangle-alert-JwLSrj17.js.br +0 -0
  302. package/payload/server/public/assets/triangle-alert-JwLSrj17.js.gz +0 -0
  303. package/payload/server/public/assets/useCopyFeedback-DjTkNw2p.js.br +0 -0
  304. package/payload/server/public/assets/useCopyFeedback-DjTkNw2p.js.gz +0 -0
  305. package/payload/server/public/assets/useMediaQuery-BsBzbWaf.css +0 -1
  306. package/payload/server/public/assets/useMediaQuery-BsBzbWaf.css.br +0 -0
  307. package/payload/server/public/assets/useMediaQuery-BsBzbWaf.css.gz +0 -0
  308. package/payload/server/public/assets/useMediaQuery-D8VDA0RN.js.br +0 -0
  309. package/payload/server/public/assets/useVoiceRecorder-B8vxObZG.js +0 -2
  310. package/payload/server/public/assets/useVoiceRecorder-B8vxObZG.js.br +0 -0
  311. package/payload/server/public/assets/useVoiceRecorder-B8vxObZG.js.gz +0 -0
  312. package/payload/server/public/assets/wrench-DutUiRu7.js.br +0 -0
  313. package/payload/server/public/assets/wrench-DutUiRu7.js.gz +0 -0
@@ -1,122 +1,162 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
+ import {
3
+ __esm,
4
+ __export
5
+ } from "./chunk-KVR2FT6O.js";
2
6
 
3
7
  // app/lib/paths.ts
8
+ var paths_exports = {};
9
+ __export(paths_exports, {
10
+ ADMIN_SESSION_SECRET_FILE: () => ADMIN_SESSION_SECRET_FILE,
11
+ BIN_DIR: () => BIN_DIR,
12
+ BRAND_NAME: () => BRAND_NAME,
13
+ BUNDLE_ALLOWLIST: () => BUNDLE_ALLOWLIST,
14
+ BUNDLE_MODE: () => BUNDLE_MODE,
15
+ CDP_PORT: () => CDP_PORT,
16
+ CHROMIUM_PROFILE_DIR: () => CHROMIUM_PROFILE_DIR,
17
+ CLAUDE_CREDENTIALS_FILE: () => CLAUDE_CREDENTIALS_FILE,
18
+ COMMERCIAL_MODE: () => COMMERCIAL_MODE,
19
+ INSTALL_OWNER_FILE: () => INSTALL_OWNER_FILE,
20
+ LID_MAP_FILE: () => LID_MAP_FILE,
21
+ LOG_DIR: () => LOG_DIR,
22
+ MAXY_DIR: () => MAXY_DIR,
23
+ REMOTE_PASSWORD_FILE: () => REMOTE_PASSWORD_FILE,
24
+ REMOTE_SESSION_SECRET_FILE: () => REMOTE_SESSION_SECRET_FILE,
25
+ RFB_PORT: () => RFB_PORT,
26
+ SHIPS_PREMIUM_BUNDLES: () => SHIPS_PREMIUM_BUNDLES,
27
+ TELEGRAM_ADMIN_WEBHOOK_SECRET_FILE: () => TELEGRAM_ADMIN_WEBHOOK_SECRET_FILE,
28
+ TELEGRAM_WEBHOOK_SECRET_FILE: () => TELEGRAM_WEBHOOK_SECRET_FILE,
29
+ USERS_AUDIT_LOG: () => USERS_AUDIT_LOG,
30
+ USERS_FILE: () => USERS_FILE,
31
+ VISITOR_TOKEN_SECRET_FILE: () => VISITOR_TOKEN_SECRET_FILE,
32
+ VNC_DISPLAY: () => VNC_DISPLAY,
33
+ VNC_DISPLAY_NUM: () => VNC_DISPLAY_NUM,
34
+ WEBSOCKIFY_PORT: () => WEBSOCKIFY_PORT
35
+ });
4
36
  import { homedir } from "os";
5
37
  import { resolve, join } from "path";
6
38
  import { existsSync, readFileSync } from "fs";
7
- var configDirName = ".maxy";
8
- var commercialMode = false;
9
- var bundleMode = "none";
10
- var bundleAllowlist = [];
11
- var vncDisplayNum = 99;
12
- var rfbPortNum = 5900;
13
- var websockifyPortNum = 6080;
14
- var cdpPortNum = 9222;
15
- var portSource = "dev-default";
16
- var platformRoot = process.env.MAXY_PLATFORM_ROOT;
17
- if (platformRoot) {
18
- const brandPath = join(platformRoot, "config", "brand.json");
19
- if (existsSync(brandPath)) {
20
- let brand;
21
- try {
22
- brand = JSON.parse(readFileSync(brandPath, "utf-8"));
23
- } catch (err) {
24
- const detail = (err instanceof Error ? err.message : String(err)).slice(0, 160);
25
- console.error(`[paths] error reason=brand-config-missing path=${brandPath} detail="parse failed: ${detail.replace(/"/g, "'")}"`);
26
- throw err;
27
- }
28
- if (typeof brand.configDir === "string") configDirName = brand.configDir;
29
- if (brand.commercialMode === true) commercialMode = true;
30
- if (brand.shipsPremiumBundles === true) {
31
- bundleMode = "all";
32
- } else if (Array.isArray(brand.shipsPremiumBundles)) {
33
- const arr = brand.shipsPremiumBundles;
34
- for (const entry of arr) {
35
- if (typeof entry !== "string" || entry.length === 0) {
36
- throw new Error(
37
- `brand.json at ${brandPath} shipsPremiumBundles array contains invalid entry: ${JSON.stringify(entry)}`
38
- );
39
+ var configDirName, commercialMode, bundleMode, bundleAllowlist, vncDisplayNum, rfbPortNum, websockifyPortNum, cdpPortNum, portSource, platformRoot, MAXY_DIR, BRAND_NAME, COMMERCIAL_MODE, BUNDLE_MODE, BUNDLE_ALLOWLIST, SHIPS_PREMIUM_BUNDLES, VNC_DISPLAY_NUM, VNC_DISPLAY, RFB_PORT, WEBSOCKIFY_PORT, CDP_PORT, CHROMIUM_PROFILE_DIR, PLATFORM_ROOT, USERS_FILE, LID_MAP_FILE, LOG_DIR, USERS_AUDIT_LOG, BIN_DIR, REMOTE_PASSWORD_FILE, REMOTE_SESSION_SECRET_FILE, ADMIN_SESSION_SECRET_FILE, INSTALL_OWNER_FILE, TELEGRAM_WEBHOOK_SECRET_FILE, TELEGRAM_ADMIN_WEBHOOK_SECRET_FILE, VISITOR_TOKEN_SECRET_FILE, CLAUDE_CREDENTIALS_FILE;
40
+ var init_paths = __esm({
41
+ "app/lib/paths.ts"() {
42
+ "use strict";
43
+ configDirName = ".maxy";
44
+ commercialMode = false;
45
+ bundleMode = "none";
46
+ bundleAllowlist = [];
47
+ vncDisplayNum = 99;
48
+ rfbPortNum = 5900;
49
+ websockifyPortNum = 6080;
50
+ cdpPortNum = 9222;
51
+ portSource = "dev-default";
52
+ platformRoot = process.env.MAXY_PLATFORM_ROOT;
53
+ if (platformRoot) {
54
+ const brandPath = join(platformRoot, "config", "brand.json");
55
+ if (existsSync(brandPath)) {
56
+ let brand;
57
+ try {
58
+ brand = JSON.parse(readFileSync(brandPath, "utf-8"));
59
+ } catch (err) {
60
+ const detail = (err instanceof Error ? err.message : String(err)).slice(0, 160);
61
+ console.error(`[paths] error reason=brand-config-missing path=${brandPath} detail="parse failed: ${detail.replace(/"/g, "'")}"`);
62
+ throw err;
39
63
  }
40
- }
41
- bundleMode = "allowlist";
42
- bundleAllowlist = arr;
43
- }
44
- if (typeof brand.vncDisplay === "number") vncDisplayNum = brand.vncDisplay;
45
- const brandLabel = configDirName.replace(/^\./, "");
46
- const required = [
47
- ["rfbPort", brand.rfbPort],
48
- ["websockifyPort", brand.websockifyPort],
49
- ["cdpPort", brand.cdpPort]
50
- ];
51
- for (const [field, value] of required) {
52
- if (typeof value !== "number") {
53
- const keys = Object.keys(brand).join(",");
54
- console.error(`[paths] error reason=cdp-port-unresolved brand=${brandLabel} path=${brandPath} field=${field} json_keys=${keys}`);
55
- throw new Error(`brand.json at ${brandPath} missing required field: ${field}`);
64
+ if (typeof brand.configDir === "string") configDirName = brand.configDir;
65
+ if (brand.commercialMode === true) commercialMode = true;
66
+ if (brand.shipsPremiumBundles === true) {
67
+ bundleMode = "all";
68
+ } else if (Array.isArray(brand.shipsPremiumBundles)) {
69
+ const arr = brand.shipsPremiumBundles;
70
+ for (const entry of arr) {
71
+ if (typeof entry !== "string" || entry.length === 0) {
72
+ throw new Error(
73
+ `brand.json at ${brandPath} shipsPremiumBundles array contains invalid entry: ${JSON.stringify(entry)}`
74
+ );
75
+ }
76
+ }
77
+ bundleMode = "allowlist";
78
+ bundleAllowlist = arr;
79
+ }
80
+ if (typeof brand.vncDisplay === "number") vncDisplayNum = brand.vncDisplay;
81
+ const brandLabel = configDirName.replace(/^\./, "");
82
+ const required = [
83
+ ["rfbPort", brand.rfbPort],
84
+ ["websockifyPort", brand.websockifyPort],
85
+ ["cdpPort", brand.cdpPort]
86
+ ];
87
+ for (const [field, value] of required) {
88
+ if (typeof value !== "number") {
89
+ const keys = Object.keys(brand).join(",");
90
+ console.error(`[paths] error reason=cdp-port-unresolved brand=${brandLabel} path=${brandPath} field=${field} json_keys=${keys}`);
91
+ throw new Error(`brand.json at ${brandPath} missing required field: ${field}`);
92
+ }
93
+ }
94
+ rfbPortNum = brand.rfbPort;
95
+ websockifyPortNum = brand.websockifyPort;
96
+ cdpPortNum = brand.cdpPort;
97
+ portSource = "brand.json";
56
98
  }
57
99
  }
58
- rfbPortNum = brand.rfbPort;
59
- websockifyPortNum = brand.websockifyPort;
60
- cdpPortNum = brand.cdpPort;
61
- portSource = "brand.json";
62
- }
63
- }
64
- var MAXY_DIR = resolve(homedir(), configDirName);
65
- var BRAND_NAME = configDirName.replace(/^\./, "");
66
- var COMMERCIAL_MODE = commercialMode;
67
- var BUNDLE_MODE = bundleMode;
68
- var BUNDLE_ALLOWLIST = bundleAllowlist;
69
- var VNC_DISPLAY = `:${vncDisplayNum}`;
70
- var RFB_PORT = rfbPortNum;
71
- var WEBSOCKIFY_PORT = websockifyPortNum;
72
- var CDP_PORT = cdpPortNum;
73
- console.log(
74
- `[paths] brand=${configDirName.replace(/^\./, "")} vncDisplay=${vncDisplayNum} rfbPort=${RFB_PORT} websockifyPort=${WEBSOCKIFY_PORT} cdpPort=${CDP_PORT} source=${portSource}`
75
- );
76
- var CHROMIUM_PROFILE_DIR = resolve(homedir(), configDirName, "chromium-profile");
77
- var PLATFORM_ROOT = process.env.MAXY_PLATFORM_ROOT ?? resolve(process.cwd(), "..");
78
- var USERS_FILE = resolve(MAXY_DIR, "users.json");
79
- var LID_MAP_FILE = resolve(MAXY_DIR, "whatsapp-lid-map.json");
80
- var LOG_DIR = resolve(MAXY_DIR, "logs");
81
- var USERS_AUDIT_LOG = resolve(LOG_DIR, "users-audit.log");
82
- var BIN_DIR = resolve(MAXY_DIR, "bin");
83
- var REMOTE_PASSWORD_FILE = resolve(MAXY_DIR, ".remote-password");
84
- var REMOTE_SESSION_SECRET_FILE = resolve(MAXY_DIR, "credentials", "remote-session-secret");
85
- var ADMIN_SESSION_SECRET_FILE = resolve(MAXY_DIR, "credentials", "admin-session-secret");
86
- var INSTALL_OWNER_FILE = resolve(MAXY_DIR, ".install-owner");
87
- var TELEGRAM_WEBHOOK_SECRET_FILE = resolve(MAXY_DIR, ".telegram-webhook-secret");
88
- var TELEGRAM_ADMIN_WEBHOOK_SECRET_FILE = resolve(MAXY_DIR, ".telegram-admin-webhook-secret");
89
- var VISITOR_TOKEN_SECRET_FILE = resolve(MAXY_DIR, "credentials", "visitor-token-secret");
90
- var CLAUDE_CREDENTIALS_FILE = resolve(MAXY_DIR, ".claude", ".credentials.json");
100
+ MAXY_DIR = resolve(homedir(), configDirName);
101
+ BRAND_NAME = configDirName.replace(/^\./, "");
102
+ COMMERCIAL_MODE = commercialMode;
103
+ BUNDLE_MODE = bundleMode;
104
+ BUNDLE_ALLOWLIST = bundleAllowlist;
105
+ SHIPS_PREMIUM_BUNDLES = bundleMode !== "none";
106
+ VNC_DISPLAY_NUM = vncDisplayNum;
107
+ VNC_DISPLAY = `:${vncDisplayNum}`;
108
+ RFB_PORT = rfbPortNum;
109
+ WEBSOCKIFY_PORT = websockifyPortNum;
110
+ CDP_PORT = cdpPortNum;
111
+ console.log(
112
+ `[paths] brand=${configDirName.replace(/^\./, "")} vncDisplay=${vncDisplayNum} rfbPort=${RFB_PORT} websockifyPort=${WEBSOCKIFY_PORT} cdpPort=${CDP_PORT} source=${portSource}`
113
+ );
114
+ CHROMIUM_PROFILE_DIR = resolve(homedir(), configDirName, "chromium-profile");
115
+ PLATFORM_ROOT = process.env.MAXY_PLATFORM_ROOT ?? resolve(process.cwd(), "..");
116
+ USERS_FILE = resolve(MAXY_DIR, "users.json");
117
+ LID_MAP_FILE = resolve(MAXY_DIR, "whatsapp-lid-map.json");
118
+ LOG_DIR = resolve(MAXY_DIR, "logs");
119
+ USERS_AUDIT_LOG = resolve(LOG_DIR, "users-audit.log");
120
+ BIN_DIR = resolve(MAXY_DIR, "bin");
121
+ REMOTE_PASSWORD_FILE = resolve(MAXY_DIR, ".remote-password");
122
+ REMOTE_SESSION_SECRET_FILE = resolve(MAXY_DIR, "credentials", "remote-session-secret");
123
+ ADMIN_SESSION_SECRET_FILE = resolve(MAXY_DIR, "credentials", "admin-session-secret");
124
+ INSTALL_OWNER_FILE = resolve(MAXY_DIR, ".install-owner");
125
+ TELEGRAM_WEBHOOK_SECRET_FILE = resolve(MAXY_DIR, ".telegram-webhook-secret");
126
+ TELEGRAM_ADMIN_WEBHOOK_SECRET_FILE = resolve(MAXY_DIR, ".telegram-admin-webhook-secret");
127
+ VISITOR_TOKEN_SECRET_FILE = resolve(MAXY_DIR, "credentials", "visitor-token-secret");
128
+ CLAUDE_CREDENTIALS_FILE = resolve(MAXY_DIR, ".claude", ".credentials.json");
129
+ }
130
+ });
91
131
 
92
132
  // ../lib/agent-slug/src/index.ts
93
- var SYSTEM_PATH_SLUGS = ["public", "public-chat", "chat", "graph", "data", "browser"];
94
- var RESERVED_AGENT_SLUGS = [
95
- "admin",
96
- "api",
97
- "assets",
98
- "agent-assets",
99
- "brand",
100
- "bot",
101
- "privacy"
102
- ];
103
- var AGENT_SLUG_PATTERN = /^[a-z][a-z0-9-]{2,49}$/;
104
133
  function checkAgentSlug(slug) {
105
134
  if (!AGENT_SLUG_PATTERN.test(slug)) return { ok: false, reason: "shape" };
106
135
  if (RESERVED_AGENT_SLUGS.includes(slug)) return { ok: false, reason: "reserved" };
107
136
  if (SYSTEM_PATH_SLUGS.includes(slug)) return { ok: false, reason: "shadowed" };
108
137
  return { ok: true };
109
138
  }
110
-
111
- // app/lib/claude-agent/account.ts
112
- import { resolve as resolve2 } from "path";
113
- import { readFileSync as readFileSync3, readdirSync, existsSync as existsSync3, statSync } from "fs";
139
+ var SYSTEM_PATH_SLUGS, RESERVED_AGENT_SLUGS, AGENT_SLUG_PATTERN;
140
+ var init_src = __esm({
141
+ "../lib/agent-slug/src/index.ts"() {
142
+ "use strict";
143
+ SYSTEM_PATH_SLUGS = ["public", "public-chat", "chat", "graph", "data", "browser"];
144
+ RESERVED_AGENT_SLUGS = [
145
+ "admin",
146
+ "api",
147
+ "assets",
148
+ "agent-assets",
149
+ "brand",
150
+ "bot",
151
+ "privacy"
152
+ ];
153
+ AGENT_SLUG_PATTERN = /^[a-z][a-z0-9-]{2,49}$/;
154
+ }
155
+ });
114
156
 
115
157
  // ../lib/brand-templating/src/index.ts
116
158
  import { join as join2 } from "path";
117
159
  import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
118
- var PLACEHOLDER = "{{productName}}";
119
- var cachedProductName = null;
120
160
  function brandJsonPath() {
121
161
  const platformRoot2 = process.env.MAXY_PLATFORM_ROOT;
122
162
  if (!platformRoot2) {
@@ -167,17 +207,61 @@ function substituteBrandPlaceholders(content, sourcePath) {
167
207
  );
168
208
  return substituted;
169
209
  }
210
+ var PLACEHOLDER, cachedProductName;
211
+ var init_src2 = __esm({
212
+ "../lib/brand-templating/src/index.ts"() {
213
+ "use strict";
214
+ PLACEHOLDER = "{{productName}}";
215
+ cachedProductName = null;
216
+ }
217
+ });
218
+
219
+ // ../lib/account-scope/src/index.ts
220
+ function resolveEffectiveAccountCore(input, isValidAccountId2, notProvisionedReason = "cross-account-invalid-target") {
221
+ const { ownAccountId, houseScope, targetAccountId } = input;
222
+ if (!targetAccountId) return { accountId: ownAccountId };
223
+ if (!houseScope) return { reject: "cross-account-denied" };
224
+ if (!isValidAccountId2(targetAccountId)) return { reject: notProvisionedReason };
225
+ return { accountId: targetAccountId };
226
+ }
227
+ function readHouseAdminScope(env = process.env) {
228
+ return env.HOUSE_ADMIN_SCOPE ? env.HOUSE_ADMIN_SCOPE : null;
229
+ }
230
+ var init_src3 = __esm({
231
+ "../lib/account-scope/src/index.ts"() {
232
+ "use strict";
233
+ }
234
+ });
170
235
 
171
236
  // app/lib/claude-agent/account.ts
172
- var PLATFORM_ROOT2 = process.env.MAXY_PLATFORM_ROOT ?? resolve2(process.cwd(), "..");
173
- var ACCOUNTS_DIR = resolve2(PLATFORM_ROOT2, "..", "data/accounts");
174
- if (!existsSync3(PLATFORM_ROOT2)) {
175
- throw new Error(
176
- `PLATFORM_ROOT does not exist: ${PLATFORM_ROOT2}
177
- Set the MAXY_PLATFORM_ROOT environment variable to the absolute path of the platform directory.`
178
- );
237
+ var account_exports = {};
238
+ __export(account_exports, {
239
+ ACCOUNTS_DIR: () => ACCOUNTS_DIR,
240
+ DEFAULT_REQUIRE_REVIEW: () => DEFAULT_REQUIRE_REVIEW,
241
+ PLATFORM_ROOT: () => PLATFORM_ROOT2,
242
+ getDefaultAccountId: () => getDefaultAccountId,
243
+ hasStubAccountDir: () => hasStubAccountDir,
244
+ isActiveAgentSlug: () => isActiveAgentSlug,
245
+ isValidAccountId: () => isValidAccountId,
246
+ listValidAccounts: () => listValidAccounts,
247
+ readAgentFile: () => readAgentFile,
248
+ readHouseAdminScope: () => readHouseAdminScope,
249
+ readIdentity: () => readIdentity,
250
+ resolveAccount: () => resolveAccount,
251
+ resolveAgentConfig: () => resolveAgentConfig,
252
+ resolveApprovalPolicy: () => resolveApprovalPolicy,
253
+ resolveDefaultAgentSlug: () => resolveDefaultAgentSlug,
254
+ resolveEffectiveAccount: () => resolveEffectiveAccount,
255
+ validateAgentSlug: () => validateAgentSlug
256
+ });
257
+ import { resolve as resolve2 } from "path";
258
+ import { readFileSync as readFileSync3, readdirSync, existsSync as existsSync3, statSync } from "fs";
259
+ function resolveApprovalPolicy(toolName, accountConfig) {
260
+ if (accountConfig.approvalPolicy?.[toolName]) {
261
+ return accountConfig.approvalPolicy[toolName];
262
+ }
263
+ return DEFAULT_REQUIRE_REVIEW.includes(toolName) ? "require-review" : "auto-execute";
179
264
  }
180
- var _stubDirsLoggedThisBoot = /* @__PURE__ */ new Set();
181
265
  function listValidAccounts() {
182
266
  if (!existsSync3(ACCOUNTS_DIR)) return [];
183
267
  const out = [];
@@ -212,6 +296,21 @@ function listValidAccounts() {
212
296
  function isValidAccountId(id) {
213
297
  return listValidAccounts().some((a) => a.accountId === id);
214
298
  }
299
+ function resolveEffectiveAccount(input, deps = {}) {
300
+ return resolveEffectiveAccountCore(input, deps.isValidAccountId ?? isValidAccountId);
301
+ }
302
+ function hasStubAccountDir() {
303
+ if (!existsSync3(ACCOUNTS_DIR)) return { stub: false, dirs: [] };
304
+ const stubs = [];
305
+ const entries2 = readdirSync(ACCOUNTS_DIR, { withFileTypes: true });
306
+ for (const entry of entries2) {
307
+ if (!entry.isDirectory()) continue;
308
+ if (entry.name.startsWith(".")) continue;
309
+ const configPath = resolve2(ACCOUNTS_DIR, entry.name, "account.json");
310
+ if (!existsSync3(configPath)) stubs.push(entry.name);
311
+ }
312
+ return { stub: stubs.length > 0, dirs: stubs };
313
+ }
215
314
  function resolveAccount() {
216
315
  if (!existsSync3(ACCOUNTS_DIR)) return null;
217
316
  let usersJsonUserId = null;
@@ -278,6 +377,9 @@ function readAgentFile(accountDir, agentName, filename) {
278
377
  }
279
378
  return raw;
280
379
  }
380
+ function readIdentity(accountDir, agentName) {
381
+ return readAgentFile(accountDir, agentName, "IDENTITY.md");
382
+ }
281
383
  function validateAgentSlug(slug) {
282
384
  const verdict = checkAgentSlug(slug);
283
385
  if (verdict.ok) return true;
@@ -402,20 +504,36 @@ function isActiveAgentSlug(accountDir, slug) {
402
504
  function getDefaultAccountId() {
403
505
  return resolveAccount()?.accountId ?? null;
404
506
  }
507
+ var PLATFORM_ROOT2, ACCOUNTS_DIR, DEFAULT_REQUIRE_REVIEW, _stubDirsLoggedThisBoot;
508
+ var init_account = __esm({
509
+ "app/lib/claude-agent/account.ts"() {
510
+ "use strict";
511
+ init_src2();
512
+ init_src3();
513
+ init_paths();
514
+ init_src();
515
+ PLATFORM_ROOT2 = process.env.MAXY_PLATFORM_ROOT ?? resolve2(process.cwd(), "..");
516
+ ACCOUNTS_DIR = resolve2(PLATFORM_ROOT2, "..", "data/accounts");
517
+ if (!existsSync3(PLATFORM_ROOT2)) {
518
+ throw new Error(
519
+ `PLATFORM_ROOT does not exist: ${PLATFORM_ROOT2}
520
+ Set the MAXY_PLATFORM_ROOT environment variable to the absolute path of the platform directory.`
521
+ );
522
+ }
523
+ DEFAULT_REQUIRE_REVIEW = [
524
+ "email-send",
525
+ "email-reply",
526
+ "message",
527
+ // telegram
528
+ "contact-erase"
529
+ // GDPR — only gates confirm:true calls (hook handles this)
530
+ ];
531
+ _stubDirsLoggedThisBoot = /* @__PURE__ */ new Set();
532
+ }
533
+ });
405
534
 
406
535
  // server/loop-registry.ts
407
536
  import { readFileSync as readFileSync4 } from "fs";
408
- var TAG = "[loop-registry]";
409
- var STALL_INTERVALS = 3;
410
- var entries = /* @__PURE__ */ new Map();
411
- var defaultCpuIo = {
412
- ownCpuUs: () => {
413
- const u = process.cpuUsage();
414
- return u.user + u.system;
415
- },
416
- childCpuUs: (pid) => readPidCpuUs(pid)
417
- };
418
- var cpuIo = defaultCpuIo;
419
537
  function parsePidStatCpuUs(raw) {
420
538
  const close = raw.lastIndexOf(")");
421
539
  if (close === -1) return null;
@@ -460,7 +578,6 @@ function sampleCpu(nowMs = Date.now()) {
460
578
  e.prior = { cpuUs: totalUs, atMs: nowMs };
461
579
  }
462
580
  }
463
- var processPrior = null;
464
581
  function sampleProcessCpu(nowMs = Date.now()) {
465
582
  const cpuUs = cpuIo.ownCpuUs();
466
583
  let processPct = null;
@@ -626,14 +743,30 @@ function listLoops(nowMs = Date.now()) {
626
743
  function armedCount() {
627
744
  return entries.size;
628
745
  }
746
+ var TAG, STALL_INTERVALS, entries, defaultCpuIo, cpuIo, processPrior;
747
+ var init_loop_registry = __esm({
748
+ "server/loop-registry.ts"() {
749
+ "use strict";
750
+ TAG = "[loop-registry]";
751
+ STALL_INTERVALS = 3;
752
+ entries = /* @__PURE__ */ new Map();
753
+ defaultCpuIo = {
754
+ ownCpuUs: () => {
755
+ const u = process.cpuUsage();
756
+ return u.user + u.system;
757
+ },
758
+ childCpuUs: (pid) => readPidCpuUs(pid)
759
+ };
760
+ cpuIo = defaultCpuIo;
761
+ processPrior = null;
762
+ }
763
+ });
629
764
 
630
765
  // app/lib/neo4j-store.ts
631
766
  import neo4j from "neo4j-driver";
632
767
  import { randomUUID } from "crypto";
633
768
  import { readFileSync as readFileSync5, readdirSync as readdirSync2, existsSync as existsSync4, openSync, readSync, closeSync, statSync as statSync2 } from "fs";
634
769
  import { resolve as resolve3 } from "path";
635
- var PLATFORM_ROOT3 = process.env.MAXY_PLATFORM_ROOT ?? resolve3(process.cwd(), "..");
636
- var driver = null;
637
770
  function readPassword() {
638
771
  if (process.env.NEO4J_PASSWORD) return process.env.NEO4J_PASSWORD;
639
772
  const passwordFile = resolve3(PLATFORM_ROOT3, "config/.neo4j-password");
@@ -666,43 +799,19 @@ function getSession() {
666
799
  return getDriver().session();
667
800
  }
668
801
  async function runAdminUserSelfHeal(args) {
669
- const { selfHealAdminUser } = await import("./adminuser-self-heal-ZHFNDKJK.js");
802
+ const { selfHealAdminUser } = await import("./adminuser-self-heal-Y4U3UNKF.js");
670
803
  return selfHealAdminUser({ driver: getDriver(), ...args });
671
804
  }
672
805
  async function runUserProfileReconcile() {
673
- const { reconcileUserProfiles } = await import("./userprofile-reconcile-TL4JKBPG.js");
806
+ const { reconcileUserProfiles } = await import("./userprofile-reconcile-PUA657YX.js");
674
807
  return reconcileUserProfiles({ driver: getDriver() });
675
808
  }
676
- process.on("SIGINT", async () => {
677
- if (driver) {
678
- await driver.close();
679
- driver = null;
680
- }
681
- });
682
- var OLLAMA_URL = process.env.OLLAMA_URL ?? "http://localhost:11434";
683
- var EMBED_MODEL = process.env.EMBED_MODEL ?? "nomic-embed-text";
684
809
  function envInt(name, def) {
685
810
  const raw = process.env[name];
686
811
  if (raw === void 0 || raw === "") return def;
687
812
  const n = Number(raw);
688
813
  return Number.isFinite(n) ? n : def;
689
814
  }
690
- var EMBED_MODEL_CONTEXT_TOKENS = Math.max(1, Math.floor(envInt("EMBED_MODEL_CONTEXT_TOKENS", 2048)));
691
- var EMBED_CONTEXT_MARGIN_TOKENS = 48;
692
- var EMBED_WORST_CASE_CHARS_PER_TOKEN = 2;
693
- var EMBED_INPUT_MAX_CHARS = Math.max(
694
- 1,
695
- Math.floor(
696
- envInt(
697
- "EMBED_INPUT_MAX_CHARS",
698
- (EMBED_MODEL_CONTEXT_TOKENS - EMBED_CONTEXT_MARGIN_TOKENS) * EMBED_WORST_CASE_CHARS_PER_TOKEN
699
- )
700
- )
701
- );
702
- var EMBED_KEEP_ALIVE_RAW = process.env.EMBED_KEEP_ALIVE === void 0 || process.env.EMBED_KEEP_ALIVE === "" ? "-1" : process.env.EMBED_KEEP_ALIVE;
703
- var EMBED_KEEP_ALIVE = /^-?\d+$/.test(EMBED_KEEP_ALIVE_RAW) ? Number(EMBED_KEEP_ALIVE_RAW) : EMBED_KEEP_ALIVE_RAW;
704
- var EMBED_INTERACTIVE_TIMEOUT_MS = 5e3;
705
- var EMBED_PRELOAD_TIMEOUT_MS = 6e4;
706
815
  async function embed(text, timeoutMs = EMBED_INTERACTIVE_TIMEOUT_MS) {
707
816
  const input = text.length > EMBED_INPUT_MAX_CHARS ? text.slice(0, EMBED_INPUT_MAX_CHARS) : text;
708
817
  const startedAt = Date.now();
@@ -762,7 +871,6 @@ async function embedForWrite(text) {
762
871
  return [];
763
872
  }
764
873
  }
765
- var sessionStoreRef = null;
766
874
  function getCachedSessionId(cacheKey) {
767
875
  return sessionStoreRef?.get(cacheKey)?.sessionId;
768
876
  }
@@ -772,7 +880,6 @@ function cacheSessionId(cacheKey, sessionId) {
772
880
  session.sessionId = sessionId;
773
881
  }
774
882
  }
775
- var GREETING_DIRECTIVE = "[New session. Greet the visitor.]";
776
883
  async function ensureConversation(accountId, agentType, cacheKey, visitorId, agentSlug, userId, channelOverride, channelAddressOverride) {
777
884
  const cached = getCachedSessionId(cacheKey);
778
885
  if (cached) return { sessionId: cached, created: false };
@@ -951,7 +1058,6 @@ async function createNewAdminConversation(userId, accountId, cacheKey, preMinted
951
1058
  await session.close();
952
1059
  }
953
1060
  }
954
- var HEX_COLOR_RE = /^#[0-9a-fA-F]{3,8}$/;
955
1061
  async function fetchBranding(accountId) {
956
1062
  const session = getSession();
957
1063
  try {
@@ -1018,8 +1124,6 @@ async function fetchAccountName(accountId) {
1018
1124
  await session.close();
1019
1125
  }
1020
1126
  }
1021
- var SUMMARY_MAX_LEN = 200;
1022
- var persistMessageLocks = /* @__PURE__ */ new Map();
1023
1127
  async function persistMessage(sessionId, role, content, accountId, tokens, createdAt, sender, components, attachments) {
1024
1128
  if (!content) return null;
1025
1129
  const messageId = randomUUID();
@@ -1487,10 +1591,6 @@ async function renameConversation(sessionId, label) {
1487
1591
  await session.close();
1488
1592
  }
1489
1593
  }
1490
- var DECAY_THRESHOLD_DAYS = 14;
1491
- var DECAY_RATE_PER_DAY = 0.05;
1492
- var INJECTION_THRESHOLD = 0.4;
1493
- var MAX_SUMMARY_PREFERENCES = 30;
1494
1594
  async function getUserTimezone(accountId, userId) {
1495
1595
  const session = getSession();
1496
1596
  try {
@@ -1666,60 +1766,6 @@ async function writeAdminUserAndPerson(params) {
1666
1766
  await session.close();
1667
1767
  }
1668
1768
  }
1669
- var PROFILE_CATEGORIES = [
1670
- "communication",
1671
- "scheduling",
1672
- "decision",
1673
- "workflow",
1674
- "content",
1675
- "interaction"
1676
- ];
1677
- var PROFILE_FIELD_TEMPLATES = {
1678
- communication: [
1679
- "preferredChannel",
1680
- "quietHours",
1681
- "responseLatencyExpectation",
1682
- "formalityLevel",
1683
- "escalationPath"
1684
- ],
1685
- scheduling: [
1686
- "workdayStartTime",
1687
- "workdayEndTime",
1688
- "weekendAvailability",
1689
- "meetingBlockPreference",
1690
- "focusBlockTiming"
1691
- ],
1692
- decision: [
1693
- "riskTolerance",
1694
- "autonomyBoundary",
1695
- "evidenceThreshold",
1696
- "reversibilityPreference",
1697
- "stakeholderConsultation"
1698
- ],
1699
- workflow: [
1700
- "batchingPreference",
1701
- "taskGranularity",
1702
- "deepWorkBlocks",
1703
- "statusUpdateCadence",
1704
- "toolingChoices"
1705
- ],
1706
- content: [
1707
- "outputFormat",
1708
- "lengthPreference",
1709
- "citationStyle",
1710
- "tonality"
1711
- ],
1712
- interaction: [
1713
- "addressForm",
1714
- "humourTolerance",
1715
- "directnessLevel",
1716
- "emotionalRegisterPreference"
1717
- ]
1718
- };
1719
- var TOTAL_PROFILE_FIELDS = Object.values(PROFILE_FIELD_TEMPLATES).reduce(
1720
- (n, fs) => n + fs.length,
1721
- 0
1722
- );
1723
1769
  function computeAbsentFields(preferences, extraTemplates = {}) {
1724
1770
  const covered = /* @__PURE__ */ new Set();
1725
1771
  for (const pref of preferences) {
@@ -1800,7 +1846,6 @@ function loadEnabledPluginProfileKeys(accountId) {
1800
1846
  for (const [cat, set] of Object.entries(merged)) out[cat] = [...set];
1801
1847
  return out;
1802
1848
  }
1803
- var sparseStateLogged = /* @__PURE__ */ new Set();
1804
1849
  async function loadUserProfile(accountId, userId, sessionId) {
1805
1850
  console.error(
1806
1851
  `[profile] loadUserProfile entry accountId=${accountId.slice(0, 8)}\u2026 userId=${userId} sessionId=${sessionId ? `${sessionId.slice(0, 8)}\u2026` : "<none>"}`
@@ -1994,19 +2039,6 @@ function composeOperatorSummary(profile, preferences) {
1994
2039
  }
1995
2040
  return facts.length > 0 ? facts.join("; ") : "NOTHING";
1996
2041
  }
1997
- var RECENT_FAILURES_TAIL_BYTES = 10 * 1024;
1998
- var AGENT_FILE_ROLES = [
1999
- { filename: "IDENTITY.md", role: "identity" },
2000
- { filename: "SOUL.md", role: "soul" },
2001
- { filename: "KNOWLEDGE.md", role: "knowledge" },
2002
- { filename: "KNOWLEDGE-SUMMARY.md", role: "knowledge-summary" }
2003
- ];
2004
- var ROLE_TO_EDGE = {
2005
- identity: "HAS_IDENTITY",
2006
- soul: "HAS_SOUL",
2007
- knowledge: "HAS_KNOWLEDGE",
2008
- "knowledge-summary": "HAS_KNOWLEDGE"
2009
- };
2010
2042
  function assertSafeAgentSlug(slug) {
2011
2043
  if (!slug || slug.includes("/") || slug.includes("\\") || slug.includes("..")) {
2012
2044
  throw new Error(`[agent-graph] refusing unsafe slug=${JSON.stringify(slug)}`);
@@ -2162,6 +2194,115 @@ async function deleteAgentProjection(accountId, slug) {
2162
2194
  await session.close();
2163
2195
  }
2164
2196
  }
2197
+ var PLATFORM_ROOT3, driver, OLLAMA_URL, EMBED_MODEL, EMBED_MODEL_CONTEXT_TOKENS, EMBED_CONTEXT_MARGIN_TOKENS, EMBED_WORST_CASE_CHARS_PER_TOKEN, EMBED_INPUT_MAX_CHARS, EMBED_KEEP_ALIVE_RAW, EMBED_KEEP_ALIVE, EMBED_INTERACTIVE_TIMEOUT_MS, EMBED_PRELOAD_TIMEOUT_MS, sessionStoreRef, GREETING_DIRECTIVE, HEX_COLOR_RE, SUMMARY_MAX_LEN, persistMessageLocks, DECAY_THRESHOLD_DAYS, DECAY_RATE_PER_DAY, INJECTION_THRESHOLD, MAX_SUMMARY_PREFERENCES, PROFILE_CATEGORIES, PROFILE_FIELD_TEMPLATES, TOTAL_PROFILE_FIELDS, sparseStateLogged, RECENT_FAILURES_TAIL_BYTES, AGENT_FILE_ROLES, ROLE_TO_EDGE;
2198
+ var init_neo4j_store = __esm({
2199
+ "app/lib/neo4j-store.ts"() {
2200
+ "use strict";
2201
+ PLATFORM_ROOT3 = process.env.MAXY_PLATFORM_ROOT ?? resolve3(process.cwd(), "..");
2202
+ driver = null;
2203
+ process.on("SIGINT", async () => {
2204
+ if (driver) {
2205
+ await driver.close();
2206
+ driver = null;
2207
+ }
2208
+ });
2209
+ OLLAMA_URL = process.env.OLLAMA_URL ?? "http://localhost:11434";
2210
+ EMBED_MODEL = process.env.EMBED_MODEL ?? "nomic-embed-text";
2211
+ EMBED_MODEL_CONTEXT_TOKENS = Math.max(1, Math.floor(envInt("EMBED_MODEL_CONTEXT_TOKENS", 2048)));
2212
+ EMBED_CONTEXT_MARGIN_TOKENS = 48;
2213
+ EMBED_WORST_CASE_CHARS_PER_TOKEN = 2;
2214
+ EMBED_INPUT_MAX_CHARS = Math.max(
2215
+ 1,
2216
+ Math.floor(
2217
+ envInt(
2218
+ "EMBED_INPUT_MAX_CHARS",
2219
+ (EMBED_MODEL_CONTEXT_TOKENS - EMBED_CONTEXT_MARGIN_TOKENS) * EMBED_WORST_CASE_CHARS_PER_TOKEN
2220
+ )
2221
+ )
2222
+ );
2223
+ EMBED_KEEP_ALIVE_RAW = process.env.EMBED_KEEP_ALIVE === void 0 || process.env.EMBED_KEEP_ALIVE === "" ? "-1" : process.env.EMBED_KEEP_ALIVE;
2224
+ EMBED_KEEP_ALIVE = /^-?\d+$/.test(EMBED_KEEP_ALIVE_RAW) ? Number(EMBED_KEEP_ALIVE_RAW) : EMBED_KEEP_ALIVE_RAW;
2225
+ EMBED_INTERACTIVE_TIMEOUT_MS = 5e3;
2226
+ EMBED_PRELOAD_TIMEOUT_MS = 6e4;
2227
+ sessionStoreRef = null;
2228
+ GREETING_DIRECTIVE = "[New session. Greet the visitor.]";
2229
+ HEX_COLOR_RE = /^#[0-9a-fA-F]{3,8}$/;
2230
+ SUMMARY_MAX_LEN = 200;
2231
+ persistMessageLocks = /* @__PURE__ */ new Map();
2232
+ DECAY_THRESHOLD_DAYS = 14;
2233
+ DECAY_RATE_PER_DAY = 0.05;
2234
+ INJECTION_THRESHOLD = 0.4;
2235
+ MAX_SUMMARY_PREFERENCES = 30;
2236
+ PROFILE_CATEGORIES = [
2237
+ "communication",
2238
+ "scheduling",
2239
+ "decision",
2240
+ "workflow",
2241
+ "content",
2242
+ "interaction"
2243
+ ];
2244
+ PROFILE_FIELD_TEMPLATES = {
2245
+ communication: [
2246
+ "preferredChannel",
2247
+ "quietHours",
2248
+ "responseLatencyExpectation",
2249
+ "formalityLevel",
2250
+ "escalationPath"
2251
+ ],
2252
+ scheduling: [
2253
+ "workdayStartTime",
2254
+ "workdayEndTime",
2255
+ "weekendAvailability",
2256
+ "meetingBlockPreference",
2257
+ "focusBlockTiming"
2258
+ ],
2259
+ decision: [
2260
+ "riskTolerance",
2261
+ "autonomyBoundary",
2262
+ "evidenceThreshold",
2263
+ "reversibilityPreference",
2264
+ "stakeholderConsultation"
2265
+ ],
2266
+ workflow: [
2267
+ "batchingPreference",
2268
+ "taskGranularity",
2269
+ "deepWorkBlocks",
2270
+ "statusUpdateCadence",
2271
+ "toolingChoices"
2272
+ ],
2273
+ content: [
2274
+ "outputFormat",
2275
+ "lengthPreference",
2276
+ "citationStyle",
2277
+ "tonality"
2278
+ ],
2279
+ interaction: [
2280
+ "addressForm",
2281
+ "humourTolerance",
2282
+ "directnessLevel",
2283
+ "emotionalRegisterPreference"
2284
+ ]
2285
+ };
2286
+ TOTAL_PROFILE_FIELDS = Object.values(PROFILE_FIELD_TEMPLATES).reduce(
2287
+ (n, fs) => n + fs.length,
2288
+ 0
2289
+ );
2290
+ sparseStateLogged = /* @__PURE__ */ new Set();
2291
+ RECENT_FAILURES_TAIL_BYTES = 10 * 1024;
2292
+ AGENT_FILE_ROLES = [
2293
+ { filename: "IDENTITY.md", role: "identity" },
2294
+ { filename: "SOUL.md", role: "soul" },
2295
+ { filename: "KNOWLEDGE.md", role: "knowledge" },
2296
+ { filename: "KNOWLEDGE-SUMMARY.md", role: "knowledge-summary" }
2297
+ ];
2298
+ ROLE_TO_EDGE = {
2299
+ identity: "HAS_IDENTITY",
2300
+ soul: "HAS_SOUL",
2301
+ knowledge: "HAS_KNOWLEDGE",
2302
+ "knowledge-summary": "HAS_KNOWLEDGE"
2303
+ };
2304
+ }
2305
+ });
2165
2306
 
2166
2307
  export {
2167
2308
  MAXY_DIR,
@@ -2183,8 +2324,11 @@ export {
2183
2324
  INSTALL_OWNER_FILE,
2184
2325
  VISITOR_TOKEN_SECRET_FILE,
2185
2326
  CLAUDE_CREDENTIALS_FILE,
2327
+ paths_exports,
2328
+ init_paths,
2186
2329
  SYSTEM_PATH_SLUGS,
2187
2330
  AGENT_SLUG_PATTERN,
2331
+ init_src,
2188
2332
  PLATFORM_ROOT2 as PLATFORM_ROOT,
2189
2333
  ACCOUNTS_DIR,
2190
2334
  listValidAccounts,
@@ -2196,11 +2340,14 @@ export {
2196
2340
  resolveAgentConfig,
2197
2341
  isActiveAgentSlug,
2198
2342
  getDefaultAccountId,
2343
+ account_exports,
2344
+ init_account,
2199
2345
  sampleCpu,
2200
2346
  sampleProcessCpu,
2201
2347
  registerLoop,
2202
2348
  listLoops,
2203
2349
  armedCount,
2350
+ init_loop_registry,
2204
2351
  getSession,
2205
2352
  runAdminUserSelfHeal,
2206
2353
  runUserProfileReconcile,
@@ -2231,5 +2378,6 @@ export {
2231
2378
  writeAdminUserAndPerson,
2232
2379
  loadUserProfile,
2233
2380
  projectAgent,
2234
- deleteAgentProjection
2381
+ deleteAgentProjection,
2382
+ init_neo4j_store
2235
2383
  };