@agenticmail/enterprise 0.5.319 → 0.5.320

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 (321) hide show
  1. package/README.md +118 -38
  2. package/dist/agent-heartbeat-3FWNHZFX.js +510 -0
  3. package/dist/agent-heartbeat-4RWHZR7H.js +510 -0
  4. package/dist/agent-heartbeat-6ZGB5ILY.js +510 -0
  5. package/dist/agent-heartbeat-BIVHLKFM.js +510 -0
  6. package/dist/agent-heartbeat-HRKVFK2T.js +510 -0
  7. package/dist/agent-heartbeat-JC5GWVXD.js +510 -0
  8. package/dist/agent-heartbeat-K6A4HMHB.js +510 -0
  9. package/dist/agent-heartbeat-LCDXWFVB.js +510 -0
  10. package/dist/agent-heartbeat-P7HZCZAQ.js +510 -0
  11. package/dist/agent-heartbeat-PUIRSNIO.js +510 -0
  12. package/dist/agent-heartbeat-SN5ILQ6Y.js +510 -0
  13. package/dist/agent-heartbeat-TW5YTDYC.js +510 -0
  14. package/dist/agent-heartbeat-Z2QQXROL.js +510 -0
  15. package/dist/agent-notify-OEQBCZLN.js +43 -0
  16. package/dist/{agent-tools-263HM5QU.js → agent-tools-3W7XLUYA.js} +1 -1
  17. package/dist/agent-tools-4QK7LLNP.js +9 -0
  18. package/dist/agent-tools-54VZGT6L.js +9 -0
  19. package/dist/{agent-tools-AT4D276V.js → agent-tools-AYYDPO27.js} +7 -7
  20. package/dist/{agent-tools-MSTAPX2I.js → agent-tools-F2X47FKF.js} +7 -7
  21. package/dist/{agent-tools-FA26SY5O.js → agent-tools-O6W3QAZL.js} +11 -6
  22. package/dist/agent-tools-OAWVZBMW.js +9 -0
  23. package/dist/agent-tools-QCCU74PN.js +13949 -0
  24. package/dist/chunk-2LHUARN6.js +4929 -0
  25. package/dist/chunk-2WVCNCYC.js +5087 -0
  26. package/dist/{chunk-6PWDS7KY.js → chunk-3FM6YQUK.js} +20 -20
  27. package/dist/chunk-3UAFHUEC.js +212 -0
  28. package/dist/{chunk-WJO57PMO.js → chunk-46GOWZT4.js} +20 -20
  29. package/dist/{chunk-BNRE7TSX.js → chunk-5KYJAUZV.js} +3 -3
  30. package/dist/chunk-6C5PKREN.js +467 -0
  31. package/dist/{chunk-447MTPZF.js → chunk-6ZMLNEHB.js} +3 -3
  32. package/dist/chunk-BPZQT5N5.js +25652 -0
  33. package/dist/chunk-BQM7MBPS.js +1380 -0
  34. package/dist/{chunk-ZRFKGPIU.js → chunk-C52OQNNY.js} +20 -20
  35. package/dist/chunk-C7HGQF4Y.js +25652 -0
  36. package/dist/chunk-CAHNZGGK.js +25656 -0
  37. package/dist/{chunk-FL3CH3ET.js → chunk-CK7R6UHE.js} +51 -27
  38. package/dist/chunk-D36RPWB7.js +25652 -0
  39. package/dist/{chunk-36NM2B4C.js → chunk-DJK2UPFH.js} +63 -93
  40. package/dist/chunk-DM7FTF7W.js +4929 -0
  41. package/dist/chunk-DMD24UFZ.js +5101 -0
  42. package/dist/{chunk-36XNMIHA.js → chunk-DXZGPUAF.js} +20 -20
  43. package/dist/chunk-F46WB5IL.js +5087 -0
  44. package/dist/chunk-F5QG5SQH.js +5087 -0
  45. package/dist/{chunk-JGEVQZDR.js → chunk-FLQ5FLHW.js} +13 -16
  46. package/dist/chunk-H7GP733U.js +5087 -0
  47. package/dist/{chunk-OZSQLOV6.js → chunk-HHBXWB5U.js} +415 -19
  48. package/dist/{chunk-D24JY75H.js → chunk-IMXS4N6W.js} +3 -3
  49. package/dist/{chunk-6PVBV6ZP.js → chunk-JNMDD7JY.js} +3 -3
  50. package/dist/chunk-JTV5LA47.js +1519 -0
  51. package/dist/chunk-KV6G7NZX.js +1519 -0
  52. package/dist/chunk-MU5MEBIK.js +1519 -0
  53. package/dist/chunk-NLT5MC7X.js +465 -0
  54. package/dist/{chunk-GTFZZUXX.js → chunk-NVLYIM4J.js} +51 -27
  55. package/dist/{chunk-6G5SXLXC.js → chunk-NZY2BIZH.js} +63 -93
  56. package/dist/chunk-O42L6G67.js +1519 -0
  57. package/dist/chunk-OCNERGGM.js +4891 -0
  58. package/dist/chunk-OJSNHONE.js +1519 -0
  59. package/dist/{chunk-2TAZJWJN.js → chunk-OWL3QVH7.js} +18 -0
  60. package/dist/{chunk-P3HVY2HS.js → chunk-OWTLNV4Q.js} +382 -7
  61. package/dist/chunk-PCNYEP6T.js +4891 -0
  62. package/dist/{chunk-YL3Z5KPR.js → chunk-PI4AQ4Z6.js} +438 -15
  63. package/dist/chunk-PN3EGTCA.js +194 -0
  64. package/dist/chunk-Q37UKNRC.js +1519 -0
  65. package/dist/chunk-QXTC6J7H.js +5087 -0
  66. package/dist/{chunk-SPBQVNDI.js → chunk-RKERL5LZ.js} +25 -21
  67. package/dist/chunk-RVBK2IOX.js +25652 -0
  68. package/dist/chunk-SAKODCZ5.js +4891 -0
  69. package/dist/{chunk-XV4TU65E.js → chunk-SALGFC5L.js} +51 -27
  70. package/dist/chunk-STGWZ2MS.js +1519 -0
  71. package/dist/chunk-UY3ZVQDP.js +25652 -0
  72. package/dist/chunk-V6OSD62M.js +5087 -0
  73. package/dist/chunk-VP6YAHX4.js +1519 -0
  74. package/dist/chunk-WDYJOEAI.js +5087 -0
  75. package/dist/chunk-WEAFQNOS.js +195 -0
  76. package/dist/chunk-XKUSAZGP.js +5087 -0
  77. package/dist/chunk-Z6K5FKAB.js +548 -0
  78. package/dist/chunk-ZGE3XAXY.js +1519 -0
  79. package/dist/chunk-ZGYVXYQQ.js +3296 -0
  80. package/dist/cli-agent-7TB2BWS6.js +2370 -0
  81. package/dist/cli-agent-AKXFFST2.js +2370 -0
  82. package/dist/cli-agent-DZTKLITB.js +2357 -0
  83. package/dist/cli-agent-FOF7PFEP.js +2357 -0
  84. package/dist/cli-agent-H74M2ZYN.js +2357 -0
  85. package/dist/cli-agent-HORWVPHB.js +2370 -0
  86. package/dist/cli-agent-HSZT6SKF.js +2423 -0
  87. package/dist/cli-agent-JLUQ4ZU6.js +2424 -0
  88. package/dist/cli-agent-MVCDH4HV.js +2370 -0
  89. package/dist/cli-agent-NZXOEPJ2.js +2357 -0
  90. package/dist/cli-agent-PADN3QRC.js +2357 -0
  91. package/dist/cli-agent-QAYEX3BE.js +2441 -0
  92. package/dist/cli-agent-QT64DT5J.js +2370 -0
  93. package/dist/cli-agent-TFL2M6UK.js +2424 -0
  94. package/dist/cli-agent-UIKXATTD.js +2357 -0
  95. package/dist/cli-agent-UJN6FYTO.js +2370 -0
  96. package/dist/cli-agent-VIQAYVY4.js +2357 -0
  97. package/dist/cli-agent-WNWFVOFM.js +2370 -0
  98. package/dist/cli-agent-XBQX67VJ.js +2423 -0
  99. package/dist/cli-agent-ZLSC6FF4.js +2357 -0
  100. package/dist/cli-serve-2IL5DTEY.js +153 -0
  101. package/dist/cli-serve-47N5UKKW.js +153 -0
  102. package/dist/cli-serve-4XGZFUV2.js +140 -0
  103. package/dist/cli-serve-6OT3UEAN.js +140 -0
  104. package/dist/cli-serve-7L6EY5UH.js +153 -0
  105. package/dist/cli-serve-BDGOOOKQ.js +260 -0
  106. package/dist/cli-serve-BFNIW2LF.js +153 -0
  107. package/dist/cli-serve-C7MN6U5Q.js +153 -0
  108. package/dist/cli-serve-CR3OY3IM.js +153 -0
  109. package/dist/cli-serve-DAJFRWQ7.js +153 -0
  110. package/dist/cli-serve-FW6FHFW4.js +153 -0
  111. package/dist/cli-serve-GEEOQS77.js +153 -0
  112. package/dist/cli-serve-H562I3ZK.js +153 -0
  113. package/dist/cli-serve-HDQZF4C4.js +153 -0
  114. package/dist/cli-serve-LICAOMEB.js +140 -0
  115. package/dist/cli-serve-LLGYLWFS.js +153 -0
  116. package/dist/cli-serve-N3OISDNB.js +153 -0
  117. package/dist/cli-serve-TIZ27EVR.js +153 -0
  118. package/dist/cli-serve-TUNI2RCN.js +153 -0
  119. package/dist/cli-serve-WNOZMAWD.js +153 -0
  120. package/dist/cli-validate-Z726VJCN.js +150 -0
  121. package/dist/cli.js +4 -4
  122. package/dist/connection-manager-KAWEUWUR.js +9 -0
  123. package/dist/dashboard/app.js +9 -3
  124. package/dist/dashboard/components/knowledge-link.js +15 -0
  125. package/dist/dashboard/components/settings-help.js +4 -2
  126. package/dist/dashboard/docs/agent-deployment.html +33 -1
  127. package/dist/dashboard/docs/settings-network.html +321 -0
  128. package/dist/dashboard/docs/settings-security.html +347 -0
  129. package/dist/dashboard/docs/settings-tool-security.html +176 -0
  130. package/dist/dashboard/docs/settings.html +36 -16
  131. package/dist/dashboard/pages/agent-detail/deployment.js +39 -6
  132. package/dist/dashboard/pages/agent-detail/tools.js +10 -0
  133. package/dist/dashboard/pages/database-access.js +4 -3
  134. package/dist/dashboard/pages/settings.js +174 -37
  135. package/dist/dashboard/pages/task-pipeline.js +400 -843
  136. package/dist/db-adapter-2T56ORSD.js +7 -0
  137. package/dist/db-adapter-IRHOUMVC.js +7 -0
  138. package/dist/index.js +41 -41
  139. package/dist/microsoft-VREAZ7M2.js +3955 -0
  140. package/dist/routes-3MMLQTB6.js +90 -0
  141. package/dist/routes-4ZUIJ4HE.js +90 -0
  142. package/dist/routes-5MXHKKH4.js +90 -0
  143. package/dist/routes-64NJFK3B.js +90 -0
  144. package/dist/routes-6AKQ2LBV.js +90 -0
  145. package/dist/routes-CRRBUDO4.js +90 -0
  146. package/dist/routes-DIAF3MC3.js +90 -0
  147. package/dist/routes-KMUNU6CY.js +90 -0
  148. package/dist/routes-LRRLXIZR.js +90 -0
  149. package/dist/routes-N647AJYG.js +90 -0
  150. package/dist/routes-SSSELAAR.js +90 -0
  151. package/dist/routes-STERVGKJ.js +90 -0
  152. package/dist/routes-ZEZZACZP.js +90 -0
  153. package/dist/runtime-5EQN4GFM.js +45 -0
  154. package/dist/runtime-5LP7PUD4.js +45 -0
  155. package/dist/runtime-6BULDBR3.js +45 -0
  156. package/dist/runtime-6YEENDN3.js +45 -0
  157. package/dist/runtime-7LQFRG3B.js +45 -0
  158. package/dist/runtime-AMXJU2MB.js +45 -0
  159. package/dist/runtime-D6WSE7FG.js +45 -0
  160. package/dist/runtime-EYVN7NFJ.js +45 -0
  161. package/dist/runtime-F6RPWQVW.js +45 -0
  162. package/dist/runtime-FYMJURFC.js +45 -0
  163. package/dist/runtime-JRNBL4O4.js +45 -0
  164. package/dist/runtime-OM2NIBMI.js +45 -0
  165. package/dist/runtime-QWPVD7CY.js +45 -0
  166. package/dist/runtime-YLIIPTE4.js +45 -0
  167. package/dist/runtime-YU6P22CG.js +45 -0
  168. package/dist/screen-unlock-4RPZBHOI.js +118 -0
  169. package/dist/server-AMCSXINC.js +28 -0
  170. package/dist/server-CU6LVQS4.js +28 -0
  171. package/dist/server-DFYGH2CV.js +28 -0
  172. package/dist/server-EELWOC3X.js +28 -0
  173. package/dist/server-EN5E2OWQ.js +28 -0
  174. package/dist/server-GW2HYJYI.js +28 -0
  175. package/dist/server-J25NCRWJ.js +28 -0
  176. package/dist/server-JDGNOTFV.js +28 -0
  177. package/dist/server-NE5HD5DJ.js +28 -0
  178. package/dist/server-NQOT7W77.js +28 -0
  179. package/dist/server-PWE5PQTR.js +28 -0
  180. package/dist/server-Q2Q32H2B.js +28 -0
  181. package/dist/server-Q77ME7TL.js +28 -0
  182. package/dist/server-WLLH4WST.js +28 -0
  183. package/dist/server-WTUJ2O3F.js +28 -0
  184. package/dist/server-X4CJTHHF.js +28 -0
  185. package/dist/server-XK3ILCJC.js +28 -0
  186. package/dist/server-ZRD3NDJE.js +28 -0
  187. package/dist/setup-44VBAO4J.js +20 -0
  188. package/dist/setup-4ONNQBWB.js +20 -0
  189. package/dist/setup-4OSBXSCL.js +20 -0
  190. package/dist/setup-4QFGRBLZ.js +20 -0
  191. package/dist/setup-6766SGAR.js +20 -0
  192. package/dist/setup-AYY24DKM.js +20 -0
  193. package/dist/setup-B34N4HPU.js +20 -0
  194. package/dist/setup-E2YLC2EY.js +20 -0
  195. package/dist/setup-ER6NXTY5.js +20 -0
  196. package/dist/setup-H2AGCBW5.js +20 -0
  197. package/dist/setup-ICOZRKCX.js +20 -0
  198. package/dist/setup-JFTJH7UF.js +20 -0
  199. package/dist/setup-PRFNI6YW.js +20 -0
  200. package/dist/setup-RAHBMYHE.js +20 -0
  201. package/dist/setup-TXPR5UQX.js +20 -0
  202. package/dist/setup-XCJMELVU.js +20 -0
  203. package/dist/setup-XIYEIFVK.js +20 -0
  204. package/dist/setup-Z4PZSHBI.js +20 -0
  205. package/dist/skills-FR7I5V7H.js +16 -0
  206. package/dist/skills-HCVBA6PK.js +16 -0
  207. package/dist/system-prompts-TM7OA32C.js +913 -0
  208. package/dist/task-queue-O7IVZYUO.js +9 -0
  209. package/dist/transport-encryption-2T7PIXKG.js +25 -0
  210. package/ecosystem.config.cjs +120 -0
  211. package/logs/cloudflared-error.log +61 -0
  212. package/logs/cloudflared-out.log +0 -0
  213. package/logs/enterprise-error.log +0 -0
  214. package/logs/enterprise-out.log +3 -0
  215. package/logs/fola-error.log +0 -0
  216. package/logs/fola-out.log +0 -0
  217. package/logs/john-error.log +8 -0
  218. package/logs/john-out.log +0 -0
  219. package/package.json +1 -1
  220. package/src/agent-tools/tool-resolver.ts +50 -61
  221. package/src/agent-tools/tools/enterprise-database.ts +5 -5
  222. package/src/agent-tools/tools/local/dependency-manager.ts +2 -2
  223. package/src/agent-tools/tools/microsoft/graph-api.ts +137 -26
  224. package/src/agent-tools/tools/microsoft/outlook-mail.ts +392 -100
  225. package/src/agent-tools/tools/microsoft/teams.ts +267 -48
  226. package/src/auth/routes.ts +4 -4
  227. package/src/cli-agent.ts +108 -8
  228. package/src/cli-serve.ts +140 -0
  229. package/src/dashboard/app.js +9 -3
  230. package/src/dashboard/components/knowledge-link.js +15 -0
  231. package/src/dashboard/components/settings-help.js +4 -2
  232. package/src/dashboard/docs/agent-deployment.html +33 -1
  233. package/src/dashboard/docs/settings-network.html +321 -0
  234. package/src/dashboard/docs/settings-security.html +347 -0
  235. package/src/dashboard/docs/settings-tool-security.html +176 -0
  236. package/src/dashboard/docs/settings.html +36 -16
  237. package/src/dashboard/pages/agent-detail/deployment.js +39 -6
  238. package/src/dashboard/pages/agent-detail/tools.js +10 -0
  239. package/src/dashboard/pages/database-access.js +4 -3
  240. package/src/dashboard/pages/settings.js +174 -37
  241. package/src/dashboard/pages/task-pipeline.js +400 -843
  242. package/src/database-access/agent-tools.ts +78 -63
  243. package/src/database-access/connection-manager.ts +13 -2
  244. package/src/database-access/routes.ts +13 -1
  245. package/src/db/adapter.ts +1 -0
  246. package/src/engine/agent-memory.ts +2 -1
  247. package/src/engine/agent-notify.ts +50 -0
  248. package/src/engine/agent-routes.ts +257 -4
  249. package/src/engine/db-adapter.ts +16 -0
  250. package/src/engine/lifecycle.ts +4 -0
  251. package/src/engine/routes.ts +4 -3
  252. package/src/engine/screen-unlock.ts +136 -0
  253. package/src/engine/skills/database-access.ts +78 -0
  254. package/src/engine/skills/index.ts +3 -2
  255. package/src/engine/skills.ts +2 -0
  256. package/src/engine/task-queue-routes.ts +18 -0
  257. package/src/engine/task-queue.ts +15 -2
  258. package/src/middleware/transport-encryption.ts +1 -4
  259. package/src/runtime/agent-loop.ts +4 -0
  260. package/src/runtime/index.ts +15 -6
  261. package/src/server.ts +14 -1
  262. package/src/system-prompts/google/index.ts +1 -2
  263. package/src/system-prompts/index.ts +1 -1
  264. package/src/system-prompts/microsoft/contacts.ts +34 -0
  265. package/src/system-prompts/microsoft/excel.ts +52 -0
  266. package/src/system-prompts/microsoft/index.ts +31 -0
  267. package/src/system-prompts/microsoft/onedrive.ts +41 -0
  268. package/src/system-prompts/microsoft/onenote.ts +36 -0
  269. package/src/system-prompts/microsoft/outlook-calendar.ts +37 -0
  270. package/src/system-prompts/microsoft/outlook-mail.ts +46 -0
  271. package/src/system-prompts/microsoft/planner.ts +37 -0
  272. package/src/system-prompts/microsoft/powerbi.ts +38 -0
  273. package/src/system-prompts/microsoft/powerpoint.ts +35 -0
  274. package/src/system-prompts/microsoft/sharepoint.ts +44 -0
  275. package/src/system-prompts/microsoft/teams.ts +49 -0
  276. package/src/system-prompts/microsoft/todo.ts +37 -0
  277. package/src/types/hono-env.ts +4 -0
  278. package/dist/agent-tools-LRA7PPXG.js +0 -13922
  279. package/dist/agent-tools-VAU5DOQB.js +0 -13910
  280. package/dist/agent-tools-VWV7OWXU.js +0 -13922
  281. package/dist/chunk-2Z7MWTCX.js +0 -4977
  282. package/dist/chunk-3T4XU3VV.js +0 -5010
  283. package/dist/chunk-445QM4NX.js +0 -5061
  284. package/dist/chunk-5TW3Y7DJ.js +0 -1519
  285. package/dist/chunk-6I7VY3LT.js +0 -5060
  286. package/dist/chunk-6W5EK3UP.js +0 -4977
  287. package/dist/chunk-AQMSHJQT.js +0 -5069
  288. package/dist/chunk-ASSQW7HX.js +0 -5051
  289. package/dist/chunk-CIN27FGC.js +0 -5037
  290. package/dist/chunk-CMXY3NUB.js +0 -4977
  291. package/dist/chunk-DRLMRUDP.js +0 -5052
  292. package/dist/chunk-EHI7Z446.js +0 -1519
  293. package/dist/chunk-FEAILFAQ.js +0 -1519
  294. package/dist/chunk-GA3PYBZL.js +0 -1519
  295. package/dist/chunk-GWX63G5J.js +0 -1519
  296. package/dist/chunk-HHMZ4UY6.js +0 -1519
  297. package/dist/chunk-HVQMNF7E.js +0 -4921
  298. package/dist/chunk-HXM7F3YN.js +0 -1519
  299. package/dist/chunk-K6NGOUXG.js +0 -5060
  300. package/dist/chunk-KPG5WINJ.js +0 -4977
  301. package/dist/chunk-LBCUBYDL.js +0 -1519
  302. package/dist/chunk-LIRQSWLR.js +0 -5014
  303. package/dist/chunk-LRCKO5KE.js +0 -1519
  304. package/dist/chunk-M7XL3DJD.js +0 -5069
  305. package/dist/chunk-MHJULEIQ.js +0 -1519
  306. package/dist/chunk-MJGGW6MC.js +0 -106
  307. package/dist/chunk-MMYBDHDB.js +0 -4921
  308. package/dist/chunk-MQT5FXKD.js +0 -1519
  309. package/dist/chunk-OIMPEQF5.js +0 -4977
  310. package/dist/chunk-OOU7JUYE.js +0 -542
  311. package/dist/chunk-OW4GLBHP.js +0 -1519
  312. package/dist/chunk-Q4K4MMLU.js +0 -4977
  313. package/dist/chunk-RUK4CRPF.js +0 -1519
  314. package/dist/chunk-T7H65XQY.js +0 -1519
  315. package/dist/chunk-TQVFWG57.js +0 -5064
  316. package/dist/chunk-UEPK3IMC.js +0 -1519
  317. package/dist/chunk-VUWTXJH6.js +0 -1519
  318. package/dist/chunk-WCPGGSAD.js +0 -1519
  319. package/dist/chunk-WO63NZOJ.js +0 -1519
  320. package/dist/chunk-YPJDRVUM.js +0 -5064
  321. package/dist/chunk-ZROMH5DL.js +0 -4921
@@ -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;