@agenticmail/enterprise 0.5.319 → 0.5.321

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 (330) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/CODE_OF_CONDUCT.md +31 -0
  3. package/README.md +118 -38
  4. package/SECURITY.md +42 -0
  5. package/dist/agent-heartbeat-3FWNHZFX.js +510 -0
  6. package/dist/agent-heartbeat-4RWHZR7H.js +510 -0
  7. package/dist/agent-heartbeat-6ZGB5ILY.js +510 -0
  8. package/dist/agent-heartbeat-BIVHLKFM.js +510 -0
  9. package/dist/agent-heartbeat-HRKVFK2T.js +510 -0
  10. package/dist/agent-heartbeat-JC5GWVXD.js +510 -0
  11. package/dist/agent-heartbeat-K6A4HMHB.js +510 -0
  12. package/dist/agent-heartbeat-LCDXWFVB.js +510 -0
  13. package/dist/agent-heartbeat-P7HZCZAQ.js +510 -0
  14. package/dist/agent-heartbeat-PUIRSNIO.js +510 -0
  15. package/dist/agent-heartbeat-SN5ILQ6Y.js +510 -0
  16. package/dist/agent-heartbeat-TW5YTDYC.js +510 -0
  17. package/dist/agent-heartbeat-Z2QQXROL.js +510 -0
  18. package/dist/agent-notify-OEQBCZLN.js +43 -0
  19. package/dist/{agent-tools-263HM5QU.js → agent-tools-3W7XLUYA.js} +1 -1
  20. package/dist/agent-tools-4QK7LLNP.js +9 -0
  21. package/dist/agent-tools-54VZGT6L.js +9 -0
  22. package/dist/{agent-tools-AT4D276V.js → agent-tools-AYYDPO27.js} +7 -7
  23. package/dist/{agent-tools-MSTAPX2I.js → agent-tools-F2X47FKF.js} +7 -7
  24. package/dist/{agent-tools-FA26SY5O.js → agent-tools-O6W3QAZL.js} +11 -6
  25. package/dist/agent-tools-OAWVZBMW.js +9 -0
  26. package/dist/agent-tools-QCCU74PN.js +13949 -0
  27. package/dist/chunk-2LHUARN6.js +4929 -0
  28. package/dist/chunk-2WVCNCYC.js +5087 -0
  29. package/dist/{chunk-6PWDS7KY.js → chunk-3FM6YQUK.js} +20 -20
  30. package/dist/chunk-3UAFHUEC.js +212 -0
  31. package/dist/{chunk-WJO57PMO.js → chunk-46GOWZT4.js} +20 -20
  32. package/dist/{chunk-BNRE7TSX.js → chunk-5KYJAUZV.js} +3 -3
  33. package/dist/chunk-6C5PKREN.js +467 -0
  34. package/dist/{chunk-447MTPZF.js → chunk-6ZMLNEHB.js} +3 -3
  35. package/dist/chunk-BPZQT5N5.js +25652 -0
  36. package/dist/chunk-BQM7MBPS.js +1380 -0
  37. package/dist/{chunk-ZRFKGPIU.js → chunk-C52OQNNY.js} +20 -20
  38. package/dist/chunk-C7HGQF4Y.js +25652 -0
  39. package/dist/chunk-CAHNZGGK.js +25656 -0
  40. package/dist/{chunk-FL3CH3ET.js → chunk-CK7R6UHE.js} +51 -27
  41. package/dist/chunk-D36RPWB7.js +25652 -0
  42. package/dist/{chunk-36NM2B4C.js → chunk-DJK2UPFH.js} +63 -93
  43. package/dist/chunk-DM7FTF7W.js +4929 -0
  44. package/dist/chunk-DMD24UFZ.js +5101 -0
  45. package/dist/{chunk-36XNMIHA.js → chunk-DXZGPUAF.js} +20 -20
  46. package/dist/chunk-F46WB5IL.js +5087 -0
  47. package/dist/chunk-F5QG5SQH.js +5087 -0
  48. package/dist/{chunk-JGEVQZDR.js → chunk-FLQ5FLHW.js} +13 -16
  49. package/dist/chunk-H7GP733U.js +5087 -0
  50. package/dist/{chunk-OZSQLOV6.js → chunk-HHBXWB5U.js} +415 -19
  51. package/dist/{chunk-D24JY75H.js → chunk-IMXS4N6W.js} +3 -3
  52. package/dist/{chunk-6PVBV6ZP.js → chunk-JNMDD7JY.js} +3 -3
  53. package/dist/chunk-JTV5LA47.js +1519 -0
  54. package/dist/chunk-KV6G7NZX.js +1519 -0
  55. package/dist/chunk-MU5MEBIK.js +1519 -0
  56. package/dist/chunk-NLT5MC7X.js +465 -0
  57. package/dist/{chunk-GTFZZUXX.js → chunk-NVLYIM4J.js} +51 -27
  58. package/dist/{chunk-6G5SXLXC.js → chunk-NZY2BIZH.js} +63 -93
  59. package/dist/chunk-O42L6G67.js +1519 -0
  60. package/dist/chunk-OCNERGGM.js +4891 -0
  61. package/dist/chunk-OJSNHONE.js +1519 -0
  62. package/dist/{chunk-2TAZJWJN.js → chunk-OWL3QVH7.js} +18 -0
  63. package/dist/{chunk-P3HVY2HS.js → chunk-OWTLNV4Q.js} +382 -7
  64. package/dist/chunk-PCNYEP6T.js +4891 -0
  65. package/dist/{chunk-YL3Z5KPR.js → chunk-PI4AQ4Z6.js} +438 -15
  66. package/dist/chunk-PN3EGTCA.js +194 -0
  67. package/dist/chunk-Q37UKNRC.js +1519 -0
  68. package/dist/chunk-QXTC6J7H.js +5087 -0
  69. package/dist/{chunk-SPBQVNDI.js → chunk-RKERL5LZ.js} +25 -21
  70. package/dist/chunk-RVBK2IOX.js +25652 -0
  71. package/dist/chunk-SAKODCZ5.js +4891 -0
  72. package/dist/{chunk-XV4TU65E.js → chunk-SALGFC5L.js} +51 -27
  73. package/dist/chunk-STGWZ2MS.js +1519 -0
  74. package/dist/chunk-UY3ZVQDP.js +25652 -0
  75. package/dist/chunk-V6OSD62M.js +5087 -0
  76. package/dist/chunk-VP6YAHX4.js +1519 -0
  77. package/dist/chunk-WDYJOEAI.js +5087 -0
  78. package/dist/chunk-WEAFQNOS.js +195 -0
  79. package/dist/chunk-XKUSAZGP.js +5087 -0
  80. package/dist/chunk-Z6K5FKAB.js +548 -0
  81. package/dist/chunk-ZGE3XAXY.js +1519 -0
  82. package/dist/chunk-ZGYVXYQQ.js +3296 -0
  83. package/dist/cli-agent-7TB2BWS6.js +2370 -0
  84. package/dist/cli-agent-AKXFFST2.js +2370 -0
  85. package/dist/cli-agent-DZTKLITB.js +2357 -0
  86. package/dist/cli-agent-FOF7PFEP.js +2357 -0
  87. package/dist/cli-agent-H74M2ZYN.js +2357 -0
  88. package/dist/cli-agent-HORWVPHB.js +2370 -0
  89. package/dist/cli-agent-HSZT6SKF.js +2423 -0
  90. package/dist/cli-agent-JLUQ4ZU6.js +2424 -0
  91. package/dist/cli-agent-MVCDH4HV.js +2370 -0
  92. package/dist/cli-agent-NZXOEPJ2.js +2357 -0
  93. package/dist/cli-agent-PADN3QRC.js +2357 -0
  94. package/dist/cli-agent-QAYEX3BE.js +2441 -0
  95. package/dist/cli-agent-QT64DT5J.js +2370 -0
  96. package/dist/cli-agent-TFL2M6UK.js +2424 -0
  97. package/dist/cli-agent-UIKXATTD.js +2357 -0
  98. package/dist/cli-agent-UJN6FYTO.js +2370 -0
  99. package/dist/cli-agent-VIQAYVY4.js +2357 -0
  100. package/dist/cli-agent-WNWFVOFM.js +2370 -0
  101. package/dist/cli-agent-XBQX67VJ.js +2423 -0
  102. package/dist/cli-agent-ZLSC6FF4.js +2357 -0
  103. package/dist/cli-serve-2IL5DTEY.js +153 -0
  104. package/dist/cli-serve-47N5UKKW.js +153 -0
  105. package/dist/cli-serve-4XGZFUV2.js +140 -0
  106. package/dist/cli-serve-6OT3UEAN.js +140 -0
  107. package/dist/cli-serve-7L6EY5UH.js +153 -0
  108. package/dist/cli-serve-BDGOOOKQ.js +260 -0
  109. package/dist/cli-serve-BFNIW2LF.js +153 -0
  110. package/dist/cli-serve-C7MN6U5Q.js +153 -0
  111. package/dist/cli-serve-CR3OY3IM.js +153 -0
  112. package/dist/cli-serve-DAJFRWQ7.js +153 -0
  113. package/dist/cli-serve-FW6FHFW4.js +153 -0
  114. package/dist/cli-serve-GEEOQS77.js +153 -0
  115. package/dist/cli-serve-H562I3ZK.js +153 -0
  116. package/dist/cli-serve-HDQZF4C4.js +153 -0
  117. package/dist/cli-serve-LICAOMEB.js +140 -0
  118. package/dist/cli-serve-LLGYLWFS.js +153 -0
  119. package/dist/cli-serve-N3OISDNB.js +153 -0
  120. package/dist/cli-serve-TIZ27EVR.js +153 -0
  121. package/dist/cli-serve-TUNI2RCN.js +153 -0
  122. package/dist/cli-serve-WNOZMAWD.js +153 -0
  123. package/dist/cli-validate-Z726VJCN.js +150 -0
  124. package/dist/cli.js +4 -4
  125. package/dist/connection-manager-KAWEUWUR.js +9 -0
  126. package/dist/dashboard/app.js +9 -3
  127. package/dist/dashboard/components/knowledge-link.js +15 -0
  128. package/dist/dashboard/components/settings-help.js +4 -2
  129. package/dist/dashboard/docs/agent-deployment.html +33 -1
  130. package/dist/dashboard/docs/settings-network.html +321 -0
  131. package/dist/dashboard/docs/settings-security.html +347 -0
  132. package/dist/dashboard/docs/settings-tool-security.html +176 -0
  133. package/dist/dashboard/docs/settings.html +36 -16
  134. package/dist/dashboard/pages/agent-detail/deployment.js +39 -6
  135. package/dist/dashboard/pages/agent-detail/tools.js +10 -0
  136. package/dist/dashboard/pages/database-access.js +4 -3
  137. package/dist/dashboard/pages/settings.js +174 -37
  138. package/dist/dashboard/pages/task-pipeline.js +400 -843
  139. package/dist/db-adapter-2T56ORSD.js +7 -0
  140. package/dist/db-adapter-IRHOUMVC.js +7 -0
  141. package/dist/index.js +41 -41
  142. package/dist/microsoft-VREAZ7M2.js +3955 -0
  143. package/dist/routes-3MMLQTB6.js +90 -0
  144. package/dist/routes-4ZUIJ4HE.js +90 -0
  145. package/dist/routes-5MXHKKH4.js +90 -0
  146. package/dist/routes-64NJFK3B.js +90 -0
  147. package/dist/routes-6AKQ2LBV.js +90 -0
  148. package/dist/routes-CRRBUDO4.js +90 -0
  149. package/dist/routes-DIAF3MC3.js +90 -0
  150. package/dist/routes-KMUNU6CY.js +90 -0
  151. package/dist/routes-LRRLXIZR.js +90 -0
  152. package/dist/routes-N647AJYG.js +90 -0
  153. package/dist/routes-SSSELAAR.js +90 -0
  154. package/dist/routes-STERVGKJ.js +90 -0
  155. package/dist/routes-ZEZZACZP.js +90 -0
  156. package/dist/runtime-5EQN4GFM.js +45 -0
  157. package/dist/runtime-5LP7PUD4.js +45 -0
  158. package/dist/runtime-6BULDBR3.js +45 -0
  159. package/dist/runtime-6YEENDN3.js +45 -0
  160. package/dist/runtime-7LQFRG3B.js +45 -0
  161. package/dist/runtime-AMXJU2MB.js +45 -0
  162. package/dist/runtime-D6WSE7FG.js +45 -0
  163. package/dist/runtime-EYVN7NFJ.js +45 -0
  164. package/dist/runtime-F6RPWQVW.js +45 -0
  165. package/dist/runtime-FYMJURFC.js +45 -0
  166. package/dist/runtime-JRNBL4O4.js +45 -0
  167. package/dist/runtime-OM2NIBMI.js +45 -0
  168. package/dist/runtime-QWPVD7CY.js +45 -0
  169. package/dist/runtime-YLIIPTE4.js +45 -0
  170. package/dist/runtime-YU6P22CG.js +45 -0
  171. package/dist/screen-unlock-4RPZBHOI.js +118 -0
  172. package/dist/server-AMCSXINC.js +28 -0
  173. package/dist/server-CU6LVQS4.js +28 -0
  174. package/dist/server-DFYGH2CV.js +28 -0
  175. package/dist/server-EELWOC3X.js +28 -0
  176. package/dist/server-EN5E2OWQ.js +28 -0
  177. package/dist/server-GW2HYJYI.js +28 -0
  178. package/dist/server-J25NCRWJ.js +28 -0
  179. package/dist/server-JDGNOTFV.js +28 -0
  180. package/dist/server-NE5HD5DJ.js +28 -0
  181. package/dist/server-NQOT7W77.js +28 -0
  182. package/dist/server-PWE5PQTR.js +28 -0
  183. package/dist/server-Q2Q32H2B.js +28 -0
  184. package/dist/server-Q77ME7TL.js +28 -0
  185. package/dist/server-WLLH4WST.js +28 -0
  186. package/dist/server-WTUJ2O3F.js +28 -0
  187. package/dist/server-X4CJTHHF.js +28 -0
  188. package/dist/server-XK3ILCJC.js +28 -0
  189. package/dist/server-ZRD3NDJE.js +28 -0
  190. package/dist/setup-44VBAO4J.js +20 -0
  191. package/dist/setup-4ONNQBWB.js +20 -0
  192. package/dist/setup-4OSBXSCL.js +20 -0
  193. package/dist/setup-4QFGRBLZ.js +20 -0
  194. package/dist/setup-6766SGAR.js +20 -0
  195. package/dist/setup-AYY24DKM.js +20 -0
  196. package/dist/setup-B34N4HPU.js +20 -0
  197. package/dist/setup-E2YLC2EY.js +20 -0
  198. package/dist/setup-ER6NXTY5.js +20 -0
  199. package/dist/setup-H2AGCBW5.js +20 -0
  200. package/dist/setup-ICOZRKCX.js +20 -0
  201. package/dist/setup-JFTJH7UF.js +20 -0
  202. package/dist/setup-PRFNI6YW.js +20 -0
  203. package/dist/setup-RAHBMYHE.js +20 -0
  204. package/dist/setup-TXPR5UQX.js +20 -0
  205. package/dist/setup-XCJMELVU.js +20 -0
  206. package/dist/setup-XIYEIFVK.js +20 -0
  207. package/dist/setup-Z4PZSHBI.js +20 -0
  208. package/dist/skills-FR7I5V7H.js +16 -0
  209. package/dist/skills-HCVBA6PK.js +16 -0
  210. package/dist/system-prompts-TM7OA32C.js +913 -0
  211. package/dist/task-queue-O7IVZYUO.js +9 -0
  212. package/dist/transport-encryption-2T7PIXKG.js +25 -0
  213. package/logs/cloudflared-error.log +61 -0
  214. package/logs/cloudflared-out.log +0 -0
  215. package/logs/enterprise-error.log +0 -0
  216. package/logs/enterprise-out.log +3 -0
  217. package/logs/fola-error.log +0 -0
  218. package/logs/fola-out.log +0 -0
  219. package/logs/john-error.log +8 -0
  220. package/logs/john-out.log +0 -0
  221. package/package.json +31 -3
  222. package/src/agent-tools/tool-resolver.ts +50 -61
  223. package/src/agent-tools/tools/enterprise-database.ts +5 -5
  224. package/src/agent-tools/tools/local/dependency-manager.ts +2 -2
  225. package/src/agent-tools/tools/microsoft/graph-api.ts +137 -26
  226. package/src/agent-tools/tools/microsoft/outlook-mail.ts +392 -100
  227. package/src/agent-tools/tools/microsoft/teams.ts +267 -48
  228. package/src/auth/routes.ts +4 -4
  229. package/src/cli-agent.ts +108 -8
  230. package/src/cli-serve.ts +140 -0
  231. package/src/dashboard/app.js +9 -3
  232. package/src/dashboard/components/knowledge-link.js +15 -0
  233. package/src/dashboard/components/settings-help.js +4 -2
  234. package/src/dashboard/docs/agent-deployment.html +33 -1
  235. package/src/dashboard/docs/settings-network.html +321 -0
  236. package/src/dashboard/docs/settings-security.html +347 -0
  237. package/src/dashboard/docs/settings-tool-security.html +176 -0
  238. package/src/dashboard/docs/settings.html +36 -16
  239. package/src/dashboard/pages/agent-detail/deployment.js +39 -6
  240. package/src/dashboard/pages/agent-detail/tools.js +10 -0
  241. package/src/dashboard/pages/database-access.js +4 -3
  242. package/src/dashboard/pages/settings.js +174 -37
  243. package/src/dashboard/pages/task-pipeline.js +400 -843
  244. package/src/database-access/agent-tools.ts +78 -63
  245. package/src/database-access/connection-manager.ts +13 -2
  246. package/src/database-access/routes.ts +13 -1
  247. package/src/db/adapter.ts +1 -0
  248. package/src/engine/agent-memory.ts +2 -1
  249. package/src/engine/agent-notify.ts +50 -0
  250. package/src/engine/agent-routes.ts +257 -4
  251. package/src/engine/db-adapter.ts +16 -0
  252. package/src/engine/lifecycle.ts +4 -0
  253. package/src/engine/routes.ts +4 -3
  254. package/src/engine/screen-unlock.ts +136 -0
  255. package/src/engine/skills/database-access.ts +78 -0
  256. package/src/engine/skills/index.ts +3 -2
  257. package/src/engine/skills.ts +2 -0
  258. package/src/engine/task-queue-routes.ts +18 -0
  259. package/src/engine/task-queue.ts +15 -2
  260. package/src/middleware/transport-encryption.ts +1 -4
  261. package/src/runtime/agent-loop.ts +4 -0
  262. package/src/runtime/index.ts +15 -6
  263. package/src/server.ts +14 -1
  264. package/src/system-prompts/google/index.ts +1 -2
  265. package/src/system-prompts/index.ts +1 -1
  266. package/src/system-prompts/microsoft/contacts.ts +34 -0
  267. package/src/system-prompts/microsoft/excel.ts +52 -0
  268. package/src/system-prompts/microsoft/index.ts +31 -0
  269. package/src/system-prompts/microsoft/onedrive.ts +41 -0
  270. package/src/system-prompts/microsoft/onenote.ts +36 -0
  271. package/src/system-prompts/microsoft/outlook-calendar.ts +37 -0
  272. package/src/system-prompts/microsoft/outlook-mail.ts +46 -0
  273. package/src/system-prompts/microsoft/planner.ts +37 -0
  274. package/src/system-prompts/microsoft/powerbi.ts +38 -0
  275. package/src/system-prompts/microsoft/powerpoint.ts +35 -0
  276. package/src/system-prompts/microsoft/sharepoint.ts +44 -0
  277. package/src/system-prompts/microsoft/teams.ts +49 -0
  278. package/src/system-prompts/microsoft/todo.ts +37 -0
  279. package/src/types/hono-env.ts +4 -0
  280. package/.github/CODEOWNERS +0 -23
  281. package/.github/workflows/publish-community-skills.yml +0 -121
  282. package/.github/workflows/validate-community-skills.yml +0 -172
  283. package/agriculture_southwest_nigeria_research.txt +0 -10
  284. package/boa_credit_cards_research.txt +0 -10
  285. package/customer_support_research_feb2026.txt +0 -10
  286. package/dist/agent-tools-LRA7PPXG.js +0 -13922
  287. package/dist/agent-tools-VAU5DOQB.js +0 -13910
  288. package/dist/agent-tools-VWV7OWXU.js +0 -13922
  289. package/dist/chunk-2Z7MWTCX.js +0 -4977
  290. package/dist/chunk-3T4XU3VV.js +0 -5010
  291. package/dist/chunk-445QM4NX.js +0 -5061
  292. package/dist/chunk-5TW3Y7DJ.js +0 -1519
  293. package/dist/chunk-6I7VY3LT.js +0 -5060
  294. package/dist/chunk-6W5EK3UP.js +0 -4977
  295. package/dist/chunk-AQMSHJQT.js +0 -5069
  296. package/dist/chunk-ASSQW7HX.js +0 -5051
  297. package/dist/chunk-CIN27FGC.js +0 -5037
  298. package/dist/chunk-CMXY3NUB.js +0 -4977
  299. package/dist/chunk-DRLMRUDP.js +0 -5052
  300. package/dist/chunk-EHI7Z446.js +0 -1519
  301. package/dist/chunk-FEAILFAQ.js +0 -1519
  302. package/dist/chunk-GA3PYBZL.js +0 -1519
  303. package/dist/chunk-GWX63G5J.js +0 -1519
  304. package/dist/chunk-HHMZ4UY6.js +0 -1519
  305. package/dist/chunk-HVQMNF7E.js +0 -4921
  306. package/dist/chunk-HXM7F3YN.js +0 -1519
  307. package/dist/chunk-K6NGOUXG.js +0 -5060
  308. package/dist/chunk-KPG5WINJ.js +0 -4977
  309. package/dist/chunk-LBCUBYDL.js +0 -1519
  310. package/dist/chunk-LIRQSWLR.js +0 -5014
  311. package/dist/chunk-LRCKO5KE.js +0 -1519
  312. package/dist/chunk-M7XL3DJD.js +0 -5069
  313. package/dist/chunk-MHJULEIQ.js +0 -1519
  314. package/dist/chunk-MJGGW6MC.js +0 -106
  315. package/dist/chunk-MMYBDHDB.js +0 -4921
  316. package/dist/chunk-MQT5FXKD.js +0 -1519
  317. package/dist/chunk-OIMPEQF5.js +0 -4977
  318. package/dist/chunk-OOU7JUYE.js +0 -542
  319. package/dist/chunk-OW4GLBHP.js +0 -1519
  320. package/dist/chunk-Q4K4MMLU.js +0 -4977
  321. package/dist/chunk-RUK4CRPF.js +0 -1519
  322. package/dist/chunk-T7H65XQY.js +0 -1519
  323. package/dist/chunk-TQVFWG57.js +0 -5064
  324. package/dist/chunk-UEPK3IMC.js +0 -1519
  325. package/dist/chunk-VUWTXJH6.js +0 -1519
  326. package/dist/chunk-WCPGGSAD.js +0 -1519
  327. package/dist/chunk-WO63NZOJ.js +0 -1519
  328. package/dist/chunk-YPJDRVUM.js +0 -5064
  329. package/dist/chunk-ZROMH5DL.js +0 -4921
  330. package/src/dashboard/docs/_template.txt +0 -92
@@ -19,7 +19,7 @@ import {
19
19
  DatabaseConnectionManager,
20
20
  init_connection_manager,
21
21
  init_query_sanitizer
22
- } from "./chunk-M6ZIC5H3.js";
22
+ } from "./chunk-BQM7MBPS.js";
23
23
  import {
24
24
  init_agent_tools,
25
25
  init_types
@@ -52,7 +52,7 @@ import {
52
52
  setSettingsDb,
53
53
  setTransportEncryptionConfig,
54
54
  transportEncryptionMiddleware
55
- } from "./chunk-JGEVQZDR.js";
55
+ } from "./chunk-FLQ5FLHW.js";
56
56
  import {
57
57
  SecureVault,
58
58
  init_vault
@@ -6563,7 +6563,11 @@ function createAgentRoutes(opts) {
6563
6563
  });
6564
6564
  router.get("/agents", (c) => {
6565
6565
  const orgId = c.req.query("orgId");
6566
- const agents = orgId ? lifecycle2.getAgentsByOrg(orgId) : lifecycle2.getAllAgents();
6566
+ const clientOrgId = c.req.query("clientOrgId");
6567
+ let agents = orgId ? lifecycle2.getAgentsByOrg(orgId) : lifecycle2.getAllAgents();
6568
+ if (clientOrgId) {
6569
+ agents = agents.filter((a) => a.clientOrgId === clientOrgId || a.client_org_id === clientOrgId);
6570
+ }
6567
6571
  return c.json({ agents, total: agents.length });
6568
6572
  });
6569
6573
  router.get("/agents/:id", async (c) => {
@@ -6847,6 +6851,175 @@ function createAgentRoutes(opts) {
6847
6851
  return c.json({ success: false, error: e.message, hint: "Try running: sudo npm install -g pm2" }, 500);
6848
6852
  }
6849
6853
  });
6854
+ router.post("/system/check-port", async (c) => {
6855
+ try {
6856
+ const { port } = await c.req.json();
6857
+ const p = parseInt(port);
6858
+ if (!p || p < 1 || p > 65535) {
6859
+ return c.json({ available: false, error: "Invalid port number (1-65535)" });
6860
+ }
6861
+ const net = await import("net");
6862
+ const tryBind = (host) => new Promise((resolve) => {
6863
+ const server = net.createServer();
6864
+ server.once("error", () => resolve(false));
6865
+ server.once("listening", () => {
6866
+ server.close(() => resolve(true));
6867
+ });
6868
+ server.listen(p, host);
6869
+ });
6870
+ const [availAll, availLocal] = await Promise.all([tryBind("0.0.0.0"), tryBind("127.0.0.1")]);
6871
+ const available = availAll && availLocal;
6872
+ if (!available) {
6873
+ let processInfo = "";
6874
+ try {
6875
+ const { execSync } = await import("child_process");
6876
+ if (process.platform === "darwin" || process.platform === "linux") {
6877
+ const lsofBin = process.platform === "darwin" ? "/usr/sbin/lsof" : "lsof";
6878
+ const out = execSync(`${lsofBin} -i :${p} -P -n 2>/dev/null | head -5`, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 }).trim();
6879
+ if (out) {
6880
+ const lines = out.split("\n").slice(1);
6881
+ if (lines.length > 0) {
6882
+ const parts = lines[0].split(/\s+/);
6883
+ processInfo = parts[0] ? `${parts[0]} (PID ${parts[1]})` : "";
6884
+ }
6885
+ }
6886
+ } else if (process.platform === "win32") {
6887
+ const out = execSync(`netstat -ano | findstr :${p}`, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 }).trim();
6888
+ if (out) {
6889
+ const parts = out.split(/\s+/);
6890
+ processInfo = `PID ${parts[parts.length - 1]}`;
6891
+ }
6892
+ }
6893
+ } catch {
6894
+ }
6895
+ return c.json({ available: false, port: p, inUse: true, process: processInfo || "Unknown process" });
6896
+ }
6897
+ return c.json({ available: true, port: p });
6898
+ } catch (e) {
6899
+ return c.json({ available: false, error: e.message });
6900
+ }
6901
+ });
6902
+ router.post("/system/unlock-screen", async (c) => {
6903
+ try {
6904
+ const platform = process.platform;
6905
+ if (platform === "darwin") {
6906
+ const { execSync } = await import("child_process");
6907
+ try {
6908
+ execSync("caffeinate -u -t 2", { stdio: "pipe", timeout: 5e3 });
6909
+ } catch {
6910
+ }
6911
+ const isLocked = (() => {
6912
+ try {
6913
+ const out = execSync(`python3 -c "import Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print(d.get('CGSSessionScreenIsLocked', 0))"`, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 }).trim();
6914
+ return out === "1" || out === "True";
6915
+ } catch {
6916
+ try {
6917
+ const out = execSync(`osascript -e 'tell application "System Events" to get name of first application process whose frontmost is true'`, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 }).trim();
6918
+ return out === "loginwindow" || out === "ScreenSaverEngine";
6919
+ } catch {
6920
+ return false;
6921
+ }
6922
+ }
6923
+ })();
6924
+ if (!isLocked) {
6925
+ return c.json({ success: true, wasLocked: false, message: "Screen is already unlocked" });
6926
+ }
6927
+ const body = await c.req.json().catch(() => ({}));
6928
+ const password = body.password;
6929
+ if (!password) {
6930
+ return c.json({ success: false, locked: true, error: "Screen is locked but no password provided. Configure the system password in Settings > Security or the agent's Permissions tab." });
6931
+ }
6932
+ try {
6933
+ execSync(`osascript -e 'tell application "System Events" to keystroke "${password.replace(/["\\]/g, "\\$&")}"' -e 'delay 0.3' -e 'tell application "System Events" to key code 36'`, {
6934
+ stdio: "pipe",
6935
+ timeout: 1e4
6936
+ });
6937
+ await new Promise((r) => setTimeout(r, 2e3));
6938
+ const stillLocked = (() => {
6939
+ try {
6940
+ const out = execSync(`python3 -c "import Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print(d.get('CGSSessionScreenIsLocked', 0))"`, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 }).trim();
6941
+ return out === "1" || out === "True";
6942
+ } catch {
6943
+ return false;
6944
+ }
6945
+ })();
6946
+ if (stillLocked) {
6947
+ return c.json({ success: false, error: "Failed to unlock \u2014 password may be incorrect" });
6948
+ }
6949
+ return c.json({ success: true, wasLocked: true, message: "Screen unlocked successfully" });
6950
+ } catch (e) {
6951
+ return c.json({ success: false, error: "Unlock attempt failed: " + e.message });
6952
+ }
6953
+ } else if (platform === "linux") {
6954
+ const { execSync } = await import("child_process");
6955
+ const body = await c.req.json().catch(() => ({}));
6956
+ const password = body.password;
6957
+ try {
6958
+ execSync("loginctl unlock-session $(loginctl list-sessions --no-legend | head -1 | awk '{print $1}')", { stdio: "pipe", timeout: 5e3 });
6959
+ return c.json({ success: true, message: "Session unlocked via loginctl" });
6960
+ } catch {
6961
+ }
6962
+ if (password) {
6963
+ try {
6964
+ execSync(`xdotool key --clearmodifiers super; sleep 0.5; xdotool type --clearmodifiers "${password.replace(/["\\]/g, "\\$&")}"; xdotool key Return`, { stdio: "pipe", timeout: 1e4 });
6965
+ return c.json({ success: true, message: "Unlock attempted via xdotool" });
6966
+ } catch {
6967
+ }
6968
+ }
6969
+ return c.json({ success: false, error: "Could not unlock Linux session. Supported: loginctl, xdotool." });
6970
+ } else if (platform === "win32") {
6971
+ return c.json({ success: false, error: "Windows unlock not yet supported. Use Remote Desktop or disable lock screen." });
6972
+ } else {
6973
+ return c.json({ success: false, error: `Unsupported platform: ${platform}` });
6974
+ }
6975
+ } catch (e) {
6976
+ return c.json({ success: false, error: e.message });
6977
+ }
6978
+ });
6979
+ router.get("/system/screen-status", async (c) => {
6980
+ try {
6981
+ const platform = process.platform;
6982
+ if (platform === "darwin") {
6983
+ const { execSync } = await import("child_process");
6984
+ const isLocked = (() => {
6985
+ try {
6986
+ const out = execSync(`python3 -c "import Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print(d.get('CGSSessionScreenIsLocked', 0))"`, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 }).trim();
6987
+ return out === "1" || out === "True";
6988
+ } catch {
6989
+ try {
6990
+ const out = execSync(`osascript -e 'tell application "System Events" to get name of first application process whose frontmost is true'`, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 }).trim();
6991
+ return out === "loginwindow" || out === "ScreenSaverEngine";
6992
+ } catch {
6993
+ return false;
6994
+ }
6995
+ }
6996
+ })();
6997
+ const displayAsleep = (() => {
6998
+ try {
6999
+ const out = execSync('ioreg -r -d 1 -k IODisplayWrangler | grep -i "currentpowerstate"', { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 });
7000
+ return out.includes("= 0") || out.includes("= 1");
7001
+ } catch {
7002
+ return false;
7003
+ }
7004
+ })();
7005
+ return c.json({ locked: isLocked, displayAsleep, platform: "macOS" });
7006
+ } else if (platform === "linux") {
7007
+ const { execSync } = await import("child_process");
7008
+ const isLocked = (() => {
7009
+ try {
7010
+ const out = execSync("loginctl show-session $(loginctl list-sessions --no-legend | head -1 | awk '{print $1}') -p LockedHint --value", { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"], timeout: 3e3 }).trim();
7011
+ return out === "yes";
7012
+ } catch {
7013
+ return false;
7014
+ }
7015
+ })();
7016
+ return c.json({ locked: isLocked, platform: "Linux" });
7017
+ }
7018
+ return c.json({ locked: false, platform });
7019
+ } catch (e) {
7020
+ return c.json({ locked: false, error: e.message });
7021
+ }
7022
+ });
6850
7023
  router.post("/bridge/agents", async (c) => {
6851
7024
  const { orgId, name, email, displayName, role, model, deployment, permissionProfile, presetName, createdBy, persona, permissions: permissionsData, skills, knowledgeBases, description, soulId, deployTarget } = await c.req.json();
6852
7025
  if (!name || !orgId) {
@@ -6924,7 +7097,7 @@ function createAgentRoutes(opts) {
6924
7097
  }
6925
7098
  const managedAgent = await lifecycle2.createAgent(orgId, config, actor);
6926
7099
  try {
6927
- const { knowledgeBase: kbEngine } = await import("./routes-XNK2MAVO.js");
7100
+ const { knowledgeBase: kbEngine } = await import("./routes-STERVGKJ.js");
6928
7101
  const allKbs = kbEngine.getAllKnowledgeBases();
6929
7102
  const clientOrgId = managedAgent?.clientOrgId || config?.clientOrgId || null;
6930
7103
  let kbAssigned = 0;
@@ -7867,6 +8040,212 @@ function createAgentRoutes(opts) {
7867
8040
  icon: Emoji.telegram || Emoji.chat,
7868
8041
  requiresIntegration: "telegram",
7869
8042
  tools: ["telegram_send", "telegram_send_media", "telegram_get_me", "telegram_get_chat"]
8043
+ },
8044
+ // ── Microsoft 365 ──────────────────────────────────
8045
+ {
8046
+ id: "outlook_mail",
8047
+ name: "Outlook Mail",
8048
+ description: "Full email management \u2014 inbox, send, reply, forward, search, threads, drafts, rules, auto-reply, categories",
8049
+ icon: Emoji.envelope,
8050
+ requiresOAuth: "microsoft",
8051
+ tools: [
8052
+ "outlook_mail_list",
8053
+ "outlook_mail_read",
8054
+ "outlook_mail_thread",
8055
+ "outlook_mail_send",
8056
+ "outlook_mail_reply",
8057
+ "outlook_mail_forward",
8058
+ "outlook_mail_move",
8059
+ "outlook_mail_delete",
8060
+ "outlook_mail_update",
8061
+ "outlook_mail_search",
8062
+ "outlook_mail_draft",
8063
+ "outlook_mail_send_draft",
8064
+ "outlook_mail_folders",
8065
+ "outlook_mail_create_folder",
8066
+ "outlook_mail_attachment_download",
8067
+ "outlook_mail_auto_reply",
8068
+ "outlook_mail_get_auto_reply",
8069
+ "outlook_mail_rules",
8070
+ "outlook_mail_categories",
8071
+ "outlook_mail_profile"
8072
+ ]
8073
+ },
8074
+ {
8075
+ id: "outlook_calendar",
8076
+ name: "Outlook Calendar",
8077
+ description: "Calendar events, scheduling, free/busy lookup, Teams meeting creation, invite responses",
8078
+ icon: Emoji.calendar,
8079
+ requiresOAuth: "microsoft",
8080
+ tools: [
8081
+ "outlook_calendar_list",
8082
+ "outlook_calendar_events",
8083
+ "outlook_calendar_create",
8084
+ "outlook_calendar_update",
8085
+ "outlook_calendar_delete",
8086
+ "outlook_calendar_respond",
8087
+ "outlook_calendar_freebusy"
8088
+ ]
8089
+ },
8090
+ {
8091
+ id: "onedrive",
8092
+ name: "OneDrive",
8093
+ description: "Cloud file management \u2014 list, search, read, upload, share, create folders",
8094
+ icon: Emoji.folder,
8095
+ requiresOAuth: "microsoft",
8096
+ tools: [
8097
+ "onedrive_list",
8098
+ "onedrive_search",
8099
+ "onedrive_read",
8100
+ "onedrive_upload",
8101
+ "onedrive_create_folder",
8102
+ "onedrive_delete",
8103
+ "onedrive_share"
8104
+ ]
8105
+ },
8106
+ {
8107
+ id: "teams",
8108
+ name: "Microsoft Teams",
8109
+ description: "Team messaging, channels, chats, file sharing, presence, member management",
8110
+ icon: Emoji.chat,
8111
+ requiresOAuth: "microsoft",
8112
+ tools: [
8113
+ "teams_list_teams",
8114
+ "teams_list_channels",
8115
+ "teams_create_channel",
8116
+ "teams_send_channel_message",
8117
+ "teams_reply_to_message",
8118
+ "teams_read_channel_messages",
8119
+ "teams_list_chats",
8120
+ "teams_send_chat_message",
8121
+ "teams_read_chat_messages",
8122
+ "teams_list_members",
8123
+ "teams_add_member",
8124
+ "teams_share_file",
8125
+ "teams_presence",
8126
+ "teams_set_status"
8127
+ ]
8128
+ },
8129
+ {
8130
+ id: "todo",
8131
+ name: "Microsoft To Do",
8132
+ description: "Task lists, task CRUD with due dates, reminders, and importance",
8133
+ icon: Emoji.check,
8134
+ requiresOAuth: "microsoft",
8135
+ tools: ["todo_list_lists", "todo_list_tasks", "todo_create_task", "todo_update_task", "todo_delete_task", "todo_create_list"]
8136
+ },
8137
+ {
8138
+ id: "outlook_contacts",
8139
+ name: "Outlook Contacts",
8140
+ description: "Contact management, address book, people search",
8141
+ icon: Emoji.people,
8142
+ requiresOAuth: "microsoft",
8143
+ tools: ["outlook_contacts_list", "outlook_contacts_create", "outlook_contacts_update", "outlook_contacts_delete", "outlook_people_search"]
8144
+ },
8145
+ {
8146
+ id: "excel",
8147
+ name: "Microsoft Excel",
8148
+ description: "Read/write cells, ranges, tables, worksheets, formulas, charts, formatting",
8149
+ icon: Emoji.chartUp,
8150
+ requiresOAuth: "microsoft",
8151
+ tools: [
8152
+ "excel_list_worksheets",
8153
+ "excel_read_range",
8154
+ "excel_write_range",
8155
+ "excel_add_row",
8156
+ "excel_list_tables",
8157
+ "excel_read_table",
8158
+ "excel_create_worksheet",
8159
+ "excel_create_session",
8160
+ "excel_close_session",
8161
+ "excel_evaluate_formula",
8162
+ "excel_named_ranges",
8163
+ "excel_read_named_range",
8164
+ "excel_list_charts",
8165
+ "excel_chart_image",
8166
+ "excel_pivot_refresh",
8167
+ "excel_set_cell_format"
8168
+ ]
8169
+ },
8170
+ {
8171
+ id: "sharepoint",
8172
+ name: "SharePoint",
8173
+ description: "Sites, document libraries, lists, search, file management across SharePoint Online",
8174
+ icon: Emoji.database,
8175
+ requiresOAuth: "microsoft",
8176
+ tools: [
8177
+ "sharepoint_list_sites",
8178
+ "sharepoint_get_site",
8179
+ "sharepoint_list_drives",
8180
+ "sharepoint_list_files",
8181
+ "sharepoint_upload_file",
8182
+ "sharepoint_list_lists",
8183
+ "sharepoint_list_items",
8184
+ "sharepoint_create_list_item",
8185
+ "sharepoint_update_list_item",
8186
+ "sharepoint_search"
8187
+ ]
8188
+ },
8189
+ {
8190
+ id: "onenote",
8191
+ name: "OneNote",
8192
+ description: "Notebooks, sections, pages \u2014 read, create, and update notes",
8193
+ icon: Emoji.note,
8194
+ requiresOAuth: "microsoft",
8195
+ tools: [
8196
+ "onenote_list_notebooks",
8197
+ "onenote_list_sections",
8198
+ "onenote_list_pages",
8199
+ "onenote_read_page",
8200
+ "onenote_create_page",
8201
+ "onenote_update_page"
8202
+ ]
8203
+ },
8204
+ {
8205
+ id: "powerpoint",
8206
+ name: "PowerPoint",
8207
+ description: "Presentation metadata, PDF export, thumbnails, templates, embed URLs",
8208
+ icon: Emoji.art,
8209
+ requiresOAuth: "microsoft",
8210
+ tools: [
8211
+ "powerpoint_get_info",
8212
+ "powerpoint_export_pdf",
8213
+ "powerpoint_get_thumbnails",
8214
+ "powerpoint_create_from_template",
8215
+ "powerpoint_get_embed_url"
8216
+ ]
8217
+ },
8218
+ {
8219
+ id: "planner",
8220
+ name: "Microsoft Planner",
8221
+ description: "Project boards \u2014 plans, buckets, tasks (Kanban-style task management)",
8222
+ icon: Emoji.clipboard,
8223
+ requiresOAuth: "microsoft",
8224
+ tools: [
8225
+ "planner_list_plans",
8226
+ "planner_list_buckets",
8227
+ "planner_list_tasks",
8228
+ "planner_create_task",
8229
+ "planner_update_task",
8230
+ "planner_delete_task"
8231
+ ]
8232
+ },
8233
+ {
8234
+ id: "powerbi",
8235
+ name: "Power BI",
8236
+ description: "Workspaces, reports, dashboards, datasets, DAX queries, data refresh",
8237
+ icon: Emoji.barChart,
8238
+ requiresOAuth: "microsoft",
8239
+ tools: [
8240
+ "powerbi_list_workspaces",
8241
+ "powerbi_list_reports",
8242
+ "powerbi_list_dashboards",
8243
+ "powerbi_list_datasets",
8244
+ "powerbi_refresh_dataset",
8245
+ "powerbi_refresh_history",
8246
+ "powerbi_execute_query",
8247
+ "powerbi_dashboard_tiles"
8248
+ ]
7870
8249
  }
7871
8250
  ];
7872
8251
  router.get("/bridge/system/capabilities", async (c) => {
@@ -8355,7 +8734,7 @@ function createAgentRoutes(opts) {
8355
8734
  if (body.requireApproval) profile.requireApproval = body.requireApproval;
8356
8735
  if (body.rateLimits) profile.rateLimits = body.rateLimits;
8357
8736
  if (body.constraints) profile.constraints = body.constraints;
8358
- permissions.setProfile(agentId, profile, managed.org_id);
8737
+ permissions.setProfile(agentId, profile, managed.orgId);
8359
8738
  }
8360
8739
  managed.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
8361
8740
  await lifecycle2.saveAgent(agentId);
@@ -8443,7 +8822,7 @@ function createAgentRoutes(opts) {
8443
8822
  }
8444
8823
  profile.tools.blocked = [...newBlocked];
8445
8824
  profile.tools.allowed = [...newAllowed];
8446
- permissions.setProfile(agentId, profile, managed.org_id);
8825
+ permissions.setProfile(agentId, profile, managed.orgId);
8447
8826
  }
8448
8827
  managed.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
8449
8828
  await lifecycle2.saveAgent(agentId);
@@ -21085,9 +21464,12 @@ async function handleMessage(c, event, lifecycle2, getRuntime, standaloneAgents)
21085
21464
  const host = sa.host || "localhost";
21086
21465
  const agentUrl = `http://${host}:${sa.port}/api/runtime/chat`;
21087
21466
  try {
21467
+ const runtimeSecret = process.env.AGENT_RUNTIME_SECRET || process.env.RUNTIME_SECRET || "";
21468
+ const fwdHeaders = { "Content-Type": "application/json" };
21469
+ if (runtimeSecret) fwdHeaders["x-agent-internal-key"] = runtimeSecret;
21088
21470
  const resp = await fetch(agentUrl, {
21089
21471
  method: "POST",
21090
- headers: { "Content-Type": "application/json" },
21472
+ headers: fwdHeaders,
21091
21473
  body: JSON.stringify(chatContext),
21092
21474
  signal: AbortSignal.timeout(5e3)
21093
21475
  });
@@ -21113,9 +21495,12 @@ async function handleMessage(c, event, lifecycle2, getRuntime, standaloneAgents)
21113
21495
  const flyAppName = agent.config?.deployment?.config?.cloud?.appName || agent.config?.deployment?.config?.flyAppName;
21114
21496
  if (flyAppName) {
21115
21497
  try {
21498
+ const _rs2 = process.env.AGENT_RUNTIME_SECRET || process.env.RUNTIME_SECRET || "";
21499
+ const _fh = { "Content-Type": "application/json" };
21500
+ if (_rs2) _fh["x-agent-internal-key"] = _rs2;
21116
21501
  const resp = await fetch(`https://${flyAppName}.fly.dev/api/runtime/chat`, {
21117
21502
  method: "POST",
21118
- headers: { "Content-Type": "application/json" },
21503
+ headers: _fh,
21119
21504
  body: JSON.stringify(chatContext),
21120
21505
  signal: AbortSignal.timeout(1e4)
21121
21506
  });
@@ -21719,9 +22104,12 @@ var init_chat_poller = __esm({
21719
22104
  };
21720
22105
  const url = `http://${agent.host}:${agent.port}/api/runtime/chat`;
21721
22106
  try {
22107
+ const _rtSecret = process.env.AGENT_RUNTIME_SECRET || process.env.RUNTIME_SECRET || "";
22108
+ const _hdrs = { "Content-Type": "application/json" };
22109
+ if (_rtSecret) _hdrs["x-agent-internal-key"] = _rtSecret;
21722
22110
  const resp = await fetch(url, {
21723
22111
  method: "POST",
21724
- headers: { "Content-Type": "application/json" },
22112
+ headers: _hdrs,
21725
22113
  body: JSON.stringify(chatContext),
21726
22114
  signal: AbortSignal.timeout(1e4)
21727
22115
  });
@@ -22235,9 +22623,12 @@ var init_email_poller = __esm({
22235
22623
  async dispatchToAgent(mailbox, email) {
22236
22624
  const url = `http://${mailbox.host}:${mailbox.port}/api/runtime/email`;
22237
22625
  try {
22626
+ const _rtSecret = process.env.AGENT_RUNTIME_SECRET || process.env.RUNTIME_SECRET || "";
22627
+ const _hdrs = { "Content-Type": "application/json" };
22628
+ if (_rtSecret) _hdrs["x-agent-internal-key"] = _rtSecret;
22238
22629
  const resp = await fetch(url, {
22239
22630
  method: "POST",
22240
- headers: { "Content-Type": "application/json" },
22631
+ headers: _hdrs,
22241
22632
  body: JSON.stringify({
22242
22633
  source: "gmail",
22243
22634
  agentId: mailbox.agentId,
@@ -22937,9 +23328,12 @@ ${desc}` : desc;
22937
23328
  try {
22938
23329
  var resolved = this.resolveEndpoint(agent.id, agent);
22939
23330
  console.log(`[messaging] Dispatching to ${agent.displayName} at ${resolved.host}:${resolved.port}`);
23331
+ var runtimeSecret = process.env.AGENT_RUNTIME_SECRET || process.env.RUNTIME_SECRET || "";
23332
+ var headers = { "Content-Type": "application/json" };
23333
+ if (runtimeSecret) headers["x-agent-internal-key"] = runtimeSecret;
22940
23334
  var resp = await fetch(`http://${resolved.host}:${resolved.port}/api/runtime/chat`, {
22941
23335
  method: "POST",
22942
- headers: { "Content-Type": "application/json" },
23336
+ headers,
22943
23337
  body: JSON.stringify({
22944
23338
  source: ctx.source,
22945
23339
  senderName: ctx.senderName,
@@ -24018,6 +24412,30 @@ Manager: ${node.managerName} (external) \u2014 ${node.managerEmail}`);
24018
24412
 
24019
24413
  // src/database-access/routes.ts
24020
24414
  import { Hono as Hono28 } from "hono";
24415
+ async function notifyAgentReload(agentId) {
24416
+ try {
24417
+ const ports = [3101, 3102, 3103, 3104, 3105, 4100, 4101, 4102];
24418
+ const tracker = globalThis.__agentStatusTracker;
24419
+ if (tracker) {
24420
+ const status = tracker.getStatus?.(agentId);
24421
+ if (status?.port) ports.unshift(status.port);
24422
+ }
24423
+ for (const port of ports) {
24424
+ try {
24425
+ const resp = await fetch(`http://127.0.0.1:${port}/api/reload-db-access`, { method: "POST", signal: AbortSignal.timeout(2e3) });
24426
+ if (resp.ok) {
24427
+ const data = await resp.json();
24428
+ if (data.ok) {
24429
+ console.log(`[db-access] Notified agent ${agentId} on port ${port}`);
24430
+ return;
24431
+ }
24432
+ }
24433
+ } catch {
24434
+ }
24435
+ }
24436
+ } catch {
24437
+ }
24438
+ }
24021
24439
  function createDatabaseAccessRoutes(manager) {
24022
24440
  const router = new Hono28();
24023
24441
  router.get("/connections", async (c) => {
@@ -24127,6 +24545,8 @@ function createDatabaseAccessRoutes(manager) {
24127
24545
  requireApproval: body.requireApproval ?? false,
24128
24546
  enabled: true
24129
24547
  });
24548
+ notifyAgentReload(body.agentId).catch(() => {
24549
+ });
24130
24550
  return c.json(access, 201);
24131
24551
  });
24132
24552
  router.put("/connections/:connId/agents/:agentId", async (c) => {
@@ -24136,7 +24556,10 @@ function createDatabaseAccessRoutes(manager) {
24136
24556
  return c.json(updated);
24137
24557
  });
24138
24558
  router.delete("/connections/:connId/agents/:agentId", async (c) => {
24139
- await manager.revokeAccess(c.req.param("agentId"), c.req.param("connId"));
24559
+ const agentId = c.req.param("agentId");
24560
+ await manager.revokeAccess(agentId, c.req.param("connId"));
24561
+ notifyAgentReload(agentId).catch(() => {
24562
+ });
24140
24563
  return c.json({ ok: true });
24141
24564
  });
24142
24565
  router.get("/agents/:agentId/connections", async (c) => {
@@ -24487,7 +24910,7 @@ function mountRuntimeApp(app) {
24487
24910
  function setRuntime(runtime) {
24488
24911
  _runtime = runtime;
24489
24912
  }
24490
- var engine, _engineApp, permissionEngine, configGen, deployer, approvals, lifecycle, knowledgeBase, tenants, activity, agentStatus, dlp, commBus, guardrails, journal, compliance, communityRegistry, workforce, policyEngine, memoryManager, onboarding, vault, orgIntegrations, storageManager, policyImporter, knowledgeContribution, hierarchyManager, knowledgeImport, taskQueue, skillUpdater, databaseManager, _engineDb, _adminDb, _chatPoller, _emailPoller, _messagingPoller, _runtimeApp, _runtime;
24913
+ var engine, _engineApp, _engineDb, _adminDb, permissionEngine, configGen, deployer, approvals, lifecycle, knowledgeBase, tenants, activity, agentStatus, dlp, commBus, guardrails, journal, compliance, communityRegistry, workforce, policyEngine, memoryManager, onboarding, vault, orgIntegrations, storageManager, policyImporter, knowledgeContribution, hierarchyManager, knowledgeImport, taskQueue, skillUpdater, databaseManager, _chatPoller, _emailPoller, _messagingPoller, _runtimeApp, _runtime;
24491
24914
  var init_routes3 = __esm({
24492
24915
  "src/engine/routes.ts"() {
24493
24916
  init_skills2();
@@ -24553,6 +24976,8 @@ var init_routes3 = __esm({
24553
24976
  init_database_access();
24554
24977
  engine = new Hono29();
24555
24978
  _engineApp = engine;
24979
+ _engineDb = null;
24980
+ _adminDb = null;
24556
24981
  permissionEngine = new PermissionEngine(FULL_SKILL_DEFINITIONS);
24557
24982
  {
24558
24983
  const totalTools = FULL_SKILL_DEFINITIONS.reduce((s, sk) => s + sk.tools.length, 0);
@@ -25146,8 +25571,6 @@ var init_routes3 = __esm({
25146
25571
  await poller.rediscover();
25147
25572
  return c.json({ ok: true });
25148
25573
  });
25149
- _engineDb = null;
25150
- _adminDb = null;
25151
25574
  _chatPoller = null;
25152
25575
  _emailPoller = null;
25153
25576
  _messagingPoller = null;