@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
@@ -2033,6 +2033,21 @@ var EngineDatabase = class {
2033
2033
  async query(sql, params) {
2034
2034
  return this.db.all(sql, params);
2035
2035
  }
2036
+ async get(sql, params) {
2037
+ return this.db.get(sql, params);
2038
+ }
2039
+ async getSettings() {
2040
+ const rows = await this.db.all("SELECT key, value FROM engine_settings", []);
2041
+ const result = {};
2042
+ for (const row of rows) {
2043
+ try {
2044
+ result[row.key] = JSON.parse(row.value);
2045
+ } catch {
2046
+ result[row.key] = row.value;
2047
+ }
2048
+ }
2049
+ return result;
2050
+ }
2036
2051
  async execute(sql, params) {
2037
2052
  return this.db.run(sql, params);
2038
2053
  }
@@ -3002,6 +3017,9 @@ var EngineDatabase = class {
3002
3017
  const config = sj(row.config);
3003
3018
  const agent = {
3004
3019
  id: row.id,
3020
+ name: row.display_name || row.name || config?.displayName || config?.name || row.id,
3021
+ displayName: row.display_name || config?.displayName || config?.name,
3022
+ display_name: row.display_name || config?.displayName || config?.name,
3005
3023
  orgId: row.org_id,
3006
3024
  config,
3007
3025
  state: row.state,
@@ -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
@@ -6851,6 +6851,175 @@ function createAgentRoutes(opts) {
6851
6851
  return c.json({ success: false, error: e.message, hint: "Try running: sudo npm install -g pm2" }, 500);
6852
6852
  }
6853
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
+ });
6854
7023
  router.post("/bridge/agents", async (c) => {
6855
7024
  const { orgId, name, email, displayName, role, model, deployment, permissionProfile, presetName, createdBy, persona, permissions: permissionsData, skills, knowledgeBases, description, soulId, deployTarget } = await c.req.json();
6856
7025
  if (!name || !orgId) {
@@ -6928,7 +7097,7 @@ function createAgentRoutes(opts) {
6928
7097
  }
6929
7098
  const managedAgent = await lifecycle2.createAgent(orgId, config, actor);
6930
7099
  try {
6931
- const { knowledgeBase: kbEngine } = await import("./routes-D7SMYOLT.js");
7100
+ const { knowledgeBase: kbEngine } = await import("./routes-N647AJYG.js");
6932
7101
  const allKbs = kbEngine.getAllKnowledgeBases();
6933
7102
  const clientOrgId = managedAgent?.clientOrgId || config?.clientOrgId || null;
6934
7103
  let kbAssigned = 0;
@@ -7871,6 +8040,212 @@ function createAgentRoutes(opts) {
7871
8040
  icon: Emoji.telegram || Emoji.chat,
7872
8041
  requiresIntegration: "telegram",
7873
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
+ ]
7874
8249
  }
7875
8250
  ];
7876
8251
  router.get("/bridge/system/capabilities", async (c) => {
@@ -8359,7 +8734,7 @@ function createAgentRoutes(opts) {
8359
8734
  if (body.requireApproval) profile.requireApproval = body.requireApproval;
8360
8735
  if (body.rateLimits) profile.rateLimits = body.rateLimits;
8361
8736
  if (body.constraints) profile.constraints = body.constraints;
8362
- permissions.setProfile(agentId, profile, managed.org_id);
8737
+ permissions.setProfile(agentId, profile, managed.orgId);
8363
8738
  }
8364
8739
  managed.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
8365
8740
  await lifecycle2.saveAgent(agentId);
@@ -8447,7 +8822,7 @@ function createAgentRoutes(opts) {
8447
8822
  }
8448
8823
  profile.tools.blocked = [...newBlocked];
8449
8824
  profile.tools.allowed = [...newAllowed];
8450
- permissions.setProfile(agentId, profile, managed.org_id);
8825
+ permissions.setProfile(agentId, profile, managed.orgId);
8451
8826
  }
8452
8827
  managed.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
8453
8828
  await lifecycle2.saveAgent(agentId);
@@ -24506,7 +24881,7 @@ function mountRuntimeApp(app) {
24506
24881
  function setRuntime(runtime) {
24507
24882
  _runtime = runtime;
24508
24883
  }
24509
- 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;
24884
+ 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;
24510
24885
  var init_routes3 = __esm({
24511
24886
  "src/engine/routes.ts"() {
24512
24887
  init_skills2();
@@ -24572,6 +24947,8 @@ var init_routes3 = __esm({
24572
24947
  init_database_access();
24573
24948
  engine = new Hono29();
24574
24949
  _engineApp = engine;
24950
+ _engineDb = null;
24951
+ _adminDb = null;
24575
24952
  permissionEngine = new PermissionEngine(FULL_SKILL_DEFINITIONS);
24576
24953
  {
24577
24954
  const totalTools = FULL_SKILL_DEFINITIONS.reduce((s, sk) => s + sk.tools.length, 0);
@@ -25165,8 +25542,6 @@ var init_routes3 = __esm({
25165
25542
  await poller.rediscover();
25166
25543
  return c.json({ ok: true });
25167
25544
  });
25168
- _engineDb = null;
25169
- _adminDb = null;
25170
25545
  _chatPoller = null;
25171
25546
  _emailPoller = null;
25172
25547
  _messagingPoller = null;