@agenticmail/enterprise 0.5.318 → 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 (328) 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-LRA7PPXG.js → agent-tools-F2X47FKF.js} +35 -8
  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-ZRFKGPIU.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-36XNMIHA.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-AQMSHJQT.js → chunk-DXZGPUAF.js} +38 -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-HVQMNF7E.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-FXZ6DJKP.js +2357 -0
  85. package/dist/cli-agent-H74M2ZYN.js +2357 -0
  86. package/dist/cli-agent-HORWVPHB.js +2370 -0
  87. package/dist/cli-agent-HSZT6SKF.js +2423 -0
  88. package/dist/cli-agent-JLUQ4ZU6.js +2424 -0
  89. package/dist/cli-agent-MVCDH4HV.js +2370 -0
  90. package/dist/cli-agent-NZXOEPJ2.js +2357 -0
  91. package/dist/cli-agent-PADN3QRC.js +2357 -0
  92. package/dist/cli-agent-QAYEX3BE.js +2441 -0
  93. package/dist/cli-agent-QT64DT5J.js +2370 -0
  94. package/dist/cli-agent-TFL2M6UK.js +2424 -0
  95. package/dist/cli-agent-UIKXATTD.js +2357 -0
  96. package/dist/cli-agent-UJN6FYTO.js +2370 -0
  97. package/dist/cli-agent-VIQAYVY4.js +2357 -0
  98. package/dist/cli-agent-WNWFVOFM.js +2370 -0
  99. package/dist/cli-agent-XBQX67VJ.js +2423 -0
  100. package/dist/cli-agent-ZLSC6FF4.js +2357 -0
  101. package/dist/cli-serve-2IL5DTEY.js +153 -0
  102. package/dist/cli-serve-47N5UKKW.js +153 -0
  103. package/dist/cli-serve-4XGZFUV2.js +140 -0
  104. package/dist/cli-serve-657NRUOX.js +140 -0
  105. package/dist/cli-serve-6OT3UEAN.js +140 -0
  106. package/dist/cli-serve-7L6EY5UH.js +153 -0
  107. package/dist/cli-serve-BDGOOOKQ.js +260 -0
  108. package/dist/cli-serve-BFNIW2LF.js +153 -0
  109. package/dist/cli-serve-C7MN6U5Q.js +153 -0
  110. package/dist/cli-serve-CR3OY3IM.js +153 -0
  111. package/dist/cli-serve-DAJFRWQ7.js +153 -0
  112. package/dist/cli-serve-FW6FHFW4.js +153 -0
  113. package/dist/cli-serve-GEEOQS77.js +153 -0
  114. package/dist/cli-serve-H562I3ZK.js +153 -0
  115. package/dist/cli-serve-HDQZF4C4.js +153 -0
  116. package/dist/cli-serve-LICAOMEB.js +140 -0
  117. package/dist/cli-serve-LLGYLWFS.js +153 -0
  118. package/dist/cli-serve-N3OISDNB.js +153 -0
  119. package/dist/cli-serve-TIZ27EVR.js +153 -0
  120. package/dist/cli-serve-TUNI2RCN.js +153 -0
  121. package/dist/cli-serve-WNOZMAWD.js +153 -0
  122. package/dist/cli-validate-Z726VJCN.js +150 -0
  123. package/dist/cli.js +4 -4
  124. package/dist/connection-manager-KAWEUWUR.js +9 -0
  125. package/dist/dashboard/app.js +9 -3
  126. package/dist/dashboard/components/knowledge-link.js +15 -0
  127. package/dist/dashboard/components/settings-help.js +4 -2
  128. package/dist/dashboard/docs/agent-deployment.html +33 -1
  129. package/dist/dashboard/docs/settings-network.html +321 -0
  130. package/dist/dashboard/docs/settings-security.html +347 -0
  131. package/dist/dashboard/docs/settings-tool-security.html +176 -0
  132. package/dist/dashboard/docs/settings.html +36 -16
  133. package/dist/dashboard/pages/agent-detail/deployment.js +39 -6
  134. package/dist/dashboard/pages/agent-detail/tools.js +10 -0
  135. package/dist/dashboard/pages/database-access.js +4 -3
  136. package/dist/dashboard/pages/settings.js +174 -37
  137. package/dist/dashboard/pages/task-pipeline.js +400 -843
  138. package/dist/db-adapter-2T56ORSD.js +7 -0
  139. package/dist/db-adapter-IRHOUMVC.js +7 -0
  140. package/dist/index.js +41 -41
  141. package/dist/microsoft-VREAZ7M2.js +3955 -0
  142. package/dist/microsoft-YUT6EIGP.js +3400 -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-4UVCTFNQ.js +45 -0
  157. package/dist/runtime-5EQN4GFM.js +45 -0
  158. package/dist/runtime-5LP7PUD4.js +45 -0
  159. package/dist/runtime-6BULDBR3.js +45 -0
  160. package/dist/runtime-6YEENDN3.js +45 -0
  161. package/dist/runtime-7LQFRG3B.js +45 -0
  162. package/dist/runtime-AMXJU2MB.js +45 -0
  163. package/dist/runtime-D6WSE7FG.js +45 -0
  164. package/dist/runtime-EYVN7NFJ.js +45 -0
  165. package/dist/runtime-F6RPWQVW.js +45 -0
  166. package/dist/runtime-FYMJURFC.js +45 -0
  167. package/dist/runtime-JRNBL4O4.js +45 -0
  168. package/dist/runtime-OM2NIBMI.js +45 -0
  169. package/dist/runtime-QWPVD7CY.js +45 -0
  170. package/dist/runtime-YLIIPTE4.js +45 -0
  171. package/dist/runtime-YU6P22CG.js +45 -0
  172. package/dist/screen-unlock-4RPZBHOI.js +118 -0
  173. package/dist/server-AMCSXINC.js +28 -0
  174. package/dist/server-BMEJZGFG.js +28 -0
  175. package/dist/server-CU6LVQS4.js +28 -0
  176. package/dist/server-DFYGH2CV.js +28 -0
  177. package/dist/server-EELWOC3X.js +28 -0
  178. package/dist/server-EN5E2OWQ.js +28 -0
  179. package/dist/server-GW2HYJYI.js +28 -0
  180. package/dist/server-J25NCRWJ.js +28 -0
  181. package/dist/server-JDGNOTFV.js +28 -0
  182. package/dist/server-NE5HD5DJ.js +28 -0
  183. package/dist/server-NQOT7W77.js +28 -0
  184. package/dist/server-PWE5PQTR.js +28 -0
  185. package/dist/server-Q2Q32H2B.js +28 -0
  186. package/dist/server-Q77ME7TL.js +28 -0
  187. package/dist/server-WLLH4WST.js +28 -0
  188. package/dist/server-WTUJ2O3F.js +28 -0
  189. package/dist/server-X4CJTHHF.js +28 -0
  190. package/dist/server-XK3ILCJC.js +28 -0
  191. package/dist/server-ZRD3NDJE.js +28 -0
  192. package/dist/setup-2JYXGTW6.js +20 -0
  193. package/dist/setup-44VBAO4J.js +20 -0
  194. package/dist/setup-4ONNQBWB.js +20 -0
  195. package/dist/setup-4OSBXSCL.js +20 -0
  196. package/dist/setup-4QFGRBLZ.js +20 -0
  197. package/dist/setup-6766SGAR.js +20 -0
  198. package/dist/setup-AYY24DKM.js +20 -0
  199. package/dist/setup-B34N4HPU.js +20 -0
  200. package/dist/setup-E2YLC2EY.js +20 -0
  201. package/dist/setup-ER6NXTY5.js +20 -0
  202. package/dist/setup-H2AGCBW5.js +20 -0
  203. package/dist/setup-ICOZRKCX.js +20 -0
  204. package/dist/setup-JFTJH7UF.js +20 -0
  205. package/dist/setup-PRFNI6YW.js +20 -0
  206. package/dist/setup-RAHBMYHE.js +20 -0
  207. package/dist/setup-TXPR5UQX.js +20 -0
  208. package/dist/setup-XCJMELVU.js +20 -0
  209. package/dist/setup-XIYEIFVK.js +20 -0
  210. package/dist/setup-Z4PZSHBI.js +20 -0
  211. package/dist/skills-FR7I5V7H.js +16 -0
  212. package/dist/skills-HCVBA6PK.js +16 -0
  213. package/dist/system-prompts-TM7OA32C.js +913 -0
  214. package/dist/task-queue-O7IVZYUO.js +9 -0
  215. package/dist/transport-encryption-2T7PIXKG.js +25 -0
  216. package/ecosystem.config.cjs +120 -0
  217. package/logs/cloudflared-error.log +61 -0
  218. package/logs/cloudflared-out.log +0 -0
  219. package/logs/enterprise-error.log +0 -0
  220. package/logs/enterprise-out.log +3 -0
  221. package/logs/fola-error.log +0 -0
  222. package/logs/fola-out.log +0 -0
  223. package/logs/john-error.log +8 -0
  224. package/logs/john-out.log +0 -0
  225. package/package.json +1 -1
  226. package/src/agent-tools/tool-resolver.ts +50 -61
  227. package/src/agent-tools/tools/enterprise-database.ts +5 -5
  228. package/src/agent-tools/tools/local/dependency-manager.ts +2 -2
  229. package/src/agent-tools/tools/microsoft/excel-vba.ts +331 -0
  230. package/src/agent-tools/tools/microsoft/graph-api.ts +137 -26
  231. package/src/agent-tools/tools/microsoft/index.ts +17 -1
  232. package/src/agent-tools/tools/microsoft/outlook-mail.ts +392 -100
  233. package/src/agent-tools/tools/microsoft/planner.ts +200 -0
  234. package/src/agent-tools/tools/microsoft/powerbi.ts +266 -0
  235. package/src/agent-tools/tools/microsoft/powerpoint.ts +186 -0
  236. package/src/agent-tools/tools/microsoft/teams.ts +267 -48
  237. package/src/auth/routes.ts +4 -4
  238. package/src/cli-agent.ts +108 -8
  239. package/src/cli-serve.ts +140 -0
  240. package/src/dashboard/app.js +9 -3
  241. package/src/dashboard/components/knowledge-link.js +15 -0
  242. package/src/dashboard/components/settings-help.js +4 -2
  243. package/src/dashboard/docs/agent-deployment.html +33 -1
  244. package/src/dashboard/docs/settings-network.html +321 -0
  245. package/src/dashboard/docs/settings-security.html +347 -0
  246. package/src/dashboard/docs/settings-tool-security.html +176 -0
  247. package/src/dashboard/docs/settings.html +36 -16
  248. package/src/dashboard/pages/agent-detail/deployment.js +39 -6
  249. package/src/dashboard/pages/agent-detail/tools.js +10 -0
  250. package/src/dashboard/pages/database-access.js +4 -3
  251. package/src/dashboard/pages/settings.js +174 -37
  252. package/src/dashboard/pages/task-pipeline.js +400 -843
  253. package/src/database-access/agent-tools.ts +78 -63
  254. package/src/database-access/connection-manager.ts +13 -2
  255. package/src/database-access/routes.ts +13 -1
  256. package/src/db/adapter.ts +1 -0
  257. package/src/engine/agent-memory.ts +2 -1
  258. package/src/engine/agent-notify.ts +50 -0
  259. package/src/engine/agent-routes.ts +257 -4
  260. package/src/engine/db-adapter.ts +16 -0
  261. package/src/engine/lifecycle.ts +4 -0
  262. package/src/engine/routes.ts +4 -3
  263. package/src/engine/screen-unlock.ts +136 -0
  264. package/src/engine/skills/database-access.ts +78 -0
  265. package/src/engine/skills/index.ts +3 -2
  266. package/src/engine/skills.ts +2 -0
  267. package/src/engine/task-queue-routes.ts +18 -0
  268. package/src/engine/task-queue.ts +15 -2
  269. package/src/middleware/transport-encryption.ts +1 -4
  270. package/src/runtime/agent-loop.ts +4 -0
  271. package/src/runtime/index.ts +15 -6
  272. package/src/server.ts +14 -1
  273. package/src/system-prompts/google/index.ts +1 -2
  274. package/src/system-prompts/index.ts +1 -1
  275. package/src/system-prompts/microsoft/contacts.ts +34 -0
  276. package/src/system-prompts/microsoft/excel.ts +52 -0
  277. package/src/system-prompts/microsoft/index.ts +31 -0
  278. package/src/system-prompts/microsoft/onedrive.ts +41 -0
  279. package/src/system-prompts/microsoft/onenote.ts +36 -0
  280. package/src/system-prompts/microsoft/outlook-calendar.ts +37 -0
  281. package/src/system-prompts/microsoft/outlook-mail.ts +46 -0
  282. package/src/system-prompts/microsoft/planner.ts +37 -0
  283. package/src/system-prompts/microsoft/powerbi.ts +38 -0
  284. package/src/system-prompts/microsoft/powerpoint.ts +35 -0
  285. package/src/system-prompts/microsoft/sharepoint.ts +44 -0
  286. package/src/system-prompts/microsoft/teams.ts +49 -0
  287. package/src/system-prompts/microsoft/todo.ts +37 -0
  288. package/src/types/hono-env.ts +4 -0
  289. package/dist/agent-tools-VAU5DOQB.js +0 -13910
  290. package/dist/agent-tools-VWV7OWXU.js +0 -13922
  291. package/dist/chunk-2Z7MWTCX.js +0 -4977
  292. package/dist/chunk-3T4XU3VV.js +0 -5010
  293. package/dist/chunk-445QM4NX.js +0 -5061
  294. package/dist/chunk-5TW3Y7DJ.js +0 -1519
  295. package/dist/chunk-6I7VY3LT.js +0 -5060
  296. package/dist/chunk-6W5EK3UP.js +0 -4977
  297. package/dist/chunk-ASSQW7HX.js +0 -5051
  298. package/dist/chunk-CIN27FGC.js +0 -5037
  299. package/dist/chunk-CMXY3NUB.js +0 -4977
  300. package/dist/chunk-DRLMRUDP.js +0 -5052
  301. package/dist/chunk-EHI7Z446.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-HXM7F3YN.js +0 -1519
  306. package/dist/chunk-K6NGOUXG.js +0 -5060
  307. package/dist/chunk-KPG5WINJ.js +0 -4977
  308. package/dist/chunk-LBCUBYDL.js +0 -1519
  309. package/dist/chunk-LIRQSWLR.js +0 -5014
  310. package/dist/chunk-LRCKO5KE.js +0 -1519
  311. package/dist/chunk-M7XL3DJD.js +0 -5069
  312. package/dist/chunk-MHJULEIQ.js +0 -1519
  313. package/dist/chunk-MJGGW6MC.js +0 -106
  314. package/dist/chunk-MMYBDHDB.js +0 -4921
  315. package/dist/chunk-MQT5FXKD.js +0 -1519
  316. package/dist/chunk-OIMPEQF5.js +0 -4977
  317. package/dist/chunk-OOU7JUYE.js +0 -542
  318. package/dist/chunk-OW4GLBHP.js +0 -1519
  319. package/dist/chunk-Q4K4MMLU.js +0 -4977
  320. package/dist/chunk-RUK4CRPF.js +0 -1519
  321. package/dist/chunk-T7H65XQY.js +0 -1519
  322. package/dist/chunk-TQVFWG57.js +0 -5064
  323. package/dist/chunk-UEPK3IMC.js +0 -1519
  324. package/dist/chunk-VUWTXJH6.js +0 -1519
  325. package/dist/chunk-WCPGGSAD.js +0 -1519
  326. package/dist/chunk-WO63NZOJ.js +0 -1519
  327. package/dist/chunk-YPJDRVUM.js +0 -5064
  328. package/dist/chunk-ZROMH5DL.js +0 -4921
@@ -0,0 +1,465 @@
1
+ import {
2
+ AGENTICMAIL_SKILL_DEFS,
3
+ ENTERPRISE_SKILL_DEFS,
4
+ Emoji,
5
+ GWS_SKILL_DEFS,
6
+ M365_SKILL_DEFS,
7
+ SYSTEM_SKILL_DEFS,
8
+ init_emoji,
9
+ init_skills,
10
+ init_tool_catalog,
11
+ tool_catalog_exports
12
+ } from "./chunk-ZGYVXYQQ.js";
13
+ import {
14
+ __esm,
15
+ __toCommonJS
16
+ } from "./chunk-KFQGP6VL.js";
17
+
18
+ // src/engine/skills.ts
19
+ var SKILL_SUITES, PRESET_PROFILES, BUILTIN_SKILLS, PermissionEngine;
20
+ var init_skills2 = __esm({
21
+ "src/engine/skills.ts"() {
22
+ init_emoji();
23
+ init_skills();
24
+ SKILL_SUITES = [
25
+ {
26
+ id: "microsoft-365",
27
+ name: "Microsoft 365",
28
+ description: "Complete Microsoft 365 suite \u2014 Outlook, Teams, SharePoint, OneDrive, Word, Excel, PowerPoint, OneNote, Planner, Power BI, Power Automate, Forms, To Do, Bookings, Whiteboard, Admin Center, Copilot.",
29
+ icon: Emoji.building,
30
+ skills: [
31
+ "m365-outlook",
32
+ "m365-teams",
33
+ "m365-sharepoint",
34
+ "m365-onedrive",
35
+ "m365-word",
36
+ "m365-excel",
37
+ "m365-powerpoint",
38
+ "m365-onenote",
39
+ "m365-planner",
40
+ "m365-power-bi",
41
+ "m365-power-automate",
42
+ "m365-forms",
43
+ "m365-todo",
44
+ "m365-bookings",
45
+ "m365-whiteboard",
46
+ "m365-admin",
47
+ "m365-copilot"
48
+ ]
49
+ },
50
+ {
51
+ id: "google-workspace",
52
+ name: "Google Workspace",
53
+ description: "Complete Google Workspace suite \u2014 Gmail, Calendar, Drive, Docs, Sheets, Slides, Meet, Chat, Forms, Sites, Keep, Admin Console, Vault, Groups.",
54
+ icon: Emoji.blueCircle,
55
+ skills: [
56
+ "gws-gmail",
57
+ "gws-calendar",
58
+ "gws-drive",
59
+ "gws-docs",
60
+ "gws-sheets",
61
+ "gws-slides",
62
+ "gws-meet",
63
+ "gws-chat",
64
+ "gws-forms",
65
+ "gws-sites",
66
+ "gws-keep",
67
+ "gws-admin",
68
+ "gws-vault",
69
+ "gws-groups"
70
+ ]
71
+ },
72
+ {
73
+ id: "atlassian",
74
+ name: "Atlassian Suite",
75
+ description: "Jira, Confluence, Bitbucket, Trello, Statuspage, and Opsgenie.",
76
+ icon: Emoji.blueDiamond,
77
+ skills: ["jira", "confluence", "bitbucket", "trello", "statuspage", "opsgenie"]
78
+ },
79
+ {
80
+ id: "aws",
81
+ name: "Amazon Web Services",
82
+ description: "AWS cloud infrastructure \u2014 S3, EC2, Lambda, RDS, CloudWatch, IAM, SES, SNS, SQS, DynamoDB, CloudFormation.",
83
+ icon: Emoji.cloud,
84
+ skills: ["aws-s3", "aws-ec2", "aws-lambda", "aws-rds", "aws-cloudwatch", "aws-iam", "aws-ses", "aws-sns", "aws-sqs", "aws-dynamodb", "aws-cloudformation"]
85
+ },
86
+ {
87
+ id: "azure",
88
+ name: "Microsoft Azure",
89
+ description: "Azure cloud infrastructure \u2014 VMs, App Service, Functions, Storage, SQL, CosmosDB, DevOps, Active Directory.",
90
+ icon: Emoji.partlyCloudy,
91
+ skills: ["azure-vms", "azure-app-service", "azure-functions", "azure-storage", "azure-sql", "azure-cosmosdb", "azure-devops", "azure-ad"]
92
+ },
93
+ {
94
+ id: "gcp",
95
+ name: "Google Cloud Platform",
96
+ description: "GCP cloud infrastructure \u2014 Compute Engine, Cloud Functions, Cloud Storage, BigQuery, Cloud Run, Pub/Sub, Firestore.",
97
+ icon: Emoji.sunCloud,
98
+ skills: ["gcp-compute", "gcp-functions", "gcp-storage", "gcp-bigquery", "gcp-run", "gcp-pubsub", "gcp-firestore"]
99
+ },
100
+ {
101
+ id: "salesforce-suite",
102
+ name: "Salesforce Suite",
103
+ description: "Salesforce CRM, Service Cloud, Marketing Cloud, and Commerce Cloud.",
104
+ icon: Emoji.cloud,
105
+ skills: ["salesforce", "salesforce-service", "salesforce-marketing", "salesforce-commerce"]
106
+ },
107
+ {
108
+ id: "hubspot-suite",
109
+ name: "HubSpot Suite",
110
+ description: "HubSpot CRM, Marketing Hub, Sales Hub, Service Hub, and CMS.",
111
+ icon: Emoji.orangeCircle,
112
+ skills: ["hubspot-crm", "hubspot-marketing", "hubspot-sales", "hubspot-service"]
113
+ },
114
+ {
115
+ id: "adobe-creative",
116
+ name: "Adobe Creative Cloud",
117
+ description: "Adobe Photoshop, Illustrator, Premiere Pro, After Effects, InDesign, and XD.",
118
+ icon: Emoji.art,
119
+ skills: ["adobe-photoshop", "adobe-illustrator", "adobe-premiere", "adobe-after-effects", "adobe-indesign", "adobe-xd"]
120
+ },
121
+ {
122
+ id: "enterprise-utility",
123
+ name: "Enterprise Utility Tools",
124
+ description: "Built-in enterprise productivity tools \u2014 database queries, spreadsheets, documents, calendar, knowledge search, web research, translation, logs, workflow, notifications, finance, HTTP, security scanning, code sandbox, diff, and vision.",
125
+ icon: Emoji.construction,
126
+ skills: [
127
+ "enterprise-database",
128
+ "enterprise-spreadsheet",
129
+ "enterprise-documents",
130
+ "enterprise-http",
131
+ "enterprise-security-scan",
132
+ "enterprise-code-sandbox",
133
+ "enterprise-diff"
134
+ ]
135
+ }
136
+ ];
137
+ PRESET_PROFILES = [
138
+ {
139
+ name: "Research Assistant",
140
+ description: "Can search the web, read files, and summarize content. Cannot send messages, run code, or modify anything.",
141
+ skills: { mode: "allowlist", list: ["research", "summarize", "data-read"] },
142
+ tools: { blocked: ["exec", "write", "edit"], allowed: ["web_search", "web_fetch", "read", "memory_search", "memory_get"] },
143
+ maxRiskLevel: "low",
144
+ blockedSideEffects: ["sends-email", "sends-message", "sends-sms", "posts-social", "runs-code", "modifies-files", "deletes-data", "controls-device", "financial"],
145
+ requireApproval: { enabled: false, forRiskLevels: [], forSideEffects: [], approvers: [], timeoutMinutes: 30 },
146
+ rateLimits: { toolCallsPerMinute: 30, toolCallsPerHour: 500, toolCallsPerDay: 5e3, externalActionsPerHour: 0 },
147
+ constraints: { maxConcurrentTasks: 3, maxSessionDurationMinutes: 480, sandboxMode: false },
148
+ dependencyPolicy: { mode: "deny", allowGlobalInstalls: false, allowElevated: false, allowedManagers: [], blockedPackages: [], autoCleanup: true }
149
+ },
150
+ {
151
+ name: "Customer Support Agent",
152
+ description: "Can read/send emails, search knowledge base, and manage tickets. Cannot run code or access files.",
153
+ skills: { mode: "allowlist", list: ["communication", "research", "agenticmail", "m365-outlook", "m365-teams", "gws-gmail", "gws-calendar", "zendesk", "intercom"] },
154
+ tools: { blocked: ["exec", "browser", "write", "edit"], allowed: ["agenticmail_send", "agenticmail_reply", "agenticmail_inbox", "agenticmail_read", "agenticmail_search", "web_search", "web_fetch"] },
155
+ maxRiskLevel: "medium",
156
+ blockedSideEffects: ["runs-code", "modifies-files", "deletes-data", "controls-device", "financial", "posts-social"],
157
+ requireApproval: { enabled: true, forRiskLevels: ["high", "critical"], forSideEffects: ["sends-email"], approvers: [], timeoutMinutes: 60 },
158
+ rateLimits: { toolCallsPerMinute: 20, toolCallsPerHour: 300, toolCallsPerDay: 3e3, externalActionsPerHour: 50 },
159
+ constraints: { maxConcurrentTasks: 5, maxSessionDurationMinutes: 480, sandboxMode: false },
160
+ dependencyPolicy: { mode: "deny", allowGlobalInstalls: false, allowElevated: false, allowedManagers: [], blockedPackages: [], autoCleanup: true }
161
+ },
162
+ {
163
+ name: "Developer Assistant",
164
+ description: "Full development capabilities: code, git, GitHub, shell. Cannot send external messages or access smart home.",
165
+ skills: { mode: "allowlist", list: ["development", "github", "coding-agent", "research", "data", "docker", "github-actions", "jira", "linear", "slack"] },
166
+ tools: { blocked: ["agenticmail_send", "message", "tts", "nodes"], allowed: ["exec", "read", "write", "edit", "web_search", "web_fetch", "browser"] },
167
+ maxRiskLevel: "high",
168
+ blockedSideEffects: ["sends-email", "sends-message", "sends-sms", "posts-social", "controls-device", "financial"],
169
+ requireApproval: { enabled: true, forRiskLevels: ["critical"], forSideEffects: [], approvers: [], timeoutMinutes: 15 },
170
+ rateLimits: { toolCallsPerMinute: 60, toolCallsPerHour: 1e3, toolCallsPerDay: 1e4, externalActionsPerHour: 100 },
171
+ constraints: { maxConcurrentTasks: 3, maxSessionDurationMinutes: 720, sandboxMode: false },
172
+ dependencyPolicy: { mode: "auto", allowGlobalInstalls: true, allowElevated: false, allowedManagers: ["brew", "apt", "npm", "pip", "choco", "winget"], blockedPackages: [], autoCleanup: false }
173
+ },
174
+ {
175
+ name: "Full Access (Owner)",
176
+ description: "Unrestricted access to all skills and tools. Full system access including sudo, global installs, and all package managers.",
177
+ skills: { mode: "blocklist", list: [] },
178
+ tools: { blocked: [], allowed: [] },
179
+ maxRiskLevel: "critical",
180
+ blockedSideEffects: [],
181
+ requireApproval: { enabled: false, forRiskLevels: [], forSideEffects: [], approvers: [], timeoutMinutes: 30 },
182
+ rateLimits: { toolCallsPerMinute: 120, toolCallsPerHour: 5e3, toolCallsPerDay: 5e4, externalActionsPerHour: 500 },
183
+ constraints: { maxConcurrentTasks: 10, maxSessionDurationMinutes: 1440, sandboxMode: false },
184
+ dependencyPolicy: { mode: "auto", allowGlobalInstalls: true, allowElevated: true, allowedManagers: ["brew", "apt", "npm", "pip", "choco", "winget", "pacman", "dnf", "snap", "scoop"], blockedPackages: [], autoCleanup: false }
185
+ },
186
+ {
187
+ name: "Sandbox (Testing)",
188
+ description: "All tools available but in simulation mode. No real external actions are taken.",
189
+ skills: { mode: "blocklist", list: [] },
190
+ tools: { blocked: [], allowed: [] },
191
+ maxRiskLevel: "critical",
192
+ blockedSideEffects: [],
193
+ requireApproval: { enabled: false, forRiskLevels: [], forSideEffects: [], approvers: [], timeoutMinutes: 30 },
194
+ rateLimits: { toolCallsPerMinute: 60, toolCallsPerHour: 1e3, toolCallsPerDay: 1e4, externalActionsPerHour: 500 },
195
+ constraints: { maxConcurrentTasks: 5, maxSessionDurationMinutes: 480, sandboxMode: true },
196
+ dependencyPolicy: { mode: "auto", allowGlobalInstalls: false, allowElevated: false, allowedManagers: ["npm", "pip"], blockedPackages: [], autoCleanup: true }
197
+ }
198
+ ];
199
+ BUILTIN_SKILLS = [
200
+ // ═══ AgenticMail — Core Product (always available) ═══
201
+ ...AGENTICMAIL_SKILL_DEFS,
202
+ // ═══ Microsoft 365 Suite ═══
203
+ ...M365_SKILL_DEFS,
204
+ // ═══ Google Workspace Suite ═══
205
+ ...GWS_SKILL_DEFS,
206
+ // ═══ Enterprise Utility Tools ═══
207
+ ...ENTERPRISE_SKILL_DEFS,
208
+ // ═══ System / Core ═══
209
+ ...SYSTEM_SKILL_DEFS
210
+ ];
211
+ PermissionEngine = class {
212
+ skills = /* @__PURE__ */ new Map();
213
+ profiles = /* @__PURE__ */ new Map();
214
+ engineDb;
215
+ refreshTimer;
216
+ _onRefreshCallbacks = [];
217
+ constructor(skills) {
218
+ if (skills) {
219
+ for (const s of skills) this.skills.set(s.id, s);
220
+ }
221
+ }
222
+ /**
223
+ * Refresh all permission profiles from DB.
224
+ * Called periodically so dashboard changes take effect without agent restart.
225
+ */
226
+ async refreshProfiles() {
227
+ if (!this.engineDb) return;
228
+ try {
229
+ const profiles = await this.engineDb.getAllPermissionProfiles();
230
+ for (const profile of profiles) {
231
+ if (profile && profile.id) {
232
+ this.profiles.set(profile.id, profile);
233
+ }
234
+ }
235
+ for (const cb of this._onRefreshCallbacks) {
236
+ try {
237
+ cb(this.profiles);
238
+ } catch {
239
+ }
240
+ }
241
+ } catch {
242
+ }
243
+ }
244
+ /** Register a callback to run after profiles refresh (e.g., sync dependency policy) */
245
+ onRefresh(callback) {
246
+ this._onRefreshCallbacks.push(callback);
247
+ }
248
+ /**
249
+ * Start periodic profile refresh (default: every 30s).
250
+ * Call after setDb() to keep profiles in sync with dashboard changes.
251
+ */
252
+ startAutoRefresh(intervalMs = 3e4) {
253
+ if (this.refreshTimer) return;
254
+ this.refreshTimer = setInterval(() => {
255
+ this.refreshProfiles().catch(() => {
256
+ });
257
+ }, intervalMs);
258
+ if (this.refreshTimer?.unref) this.refreshTimer.unref();
259
+ }
260
+ stopAutoRefresh() {
261
+ if (this.refreshTimer) {
262
+ clearInterval(this.refreshTimer);
263
+ this.refreshTimer = void 0;
264
+ }
265
+ }
266
+ /**
267
+ * Set the database adapter and load existing profiles from DB
268
+ */
269
+ async setDb(db) {
270
+ this.engineDb = db;
271
+ try {
272
+ const profiles = await db.getAllPermissionProfiles();
273
+ for (const profile of profiles) {
274
+ if (profile && profile.id) {
275
+ this.profiles.set(profile.id, profile);
276
+ }
277
+ }
278
+ if (profiles.length > 0) console.log(`[permissions] Loaded ${profiles.length} permission profiles from DB`);
279
+ } catch {
280
+ }
281
+ }
282
+ registerSkill(skill) {
283
+ this.skills.set(skill.id, skill);
284
+ }
285
+ /**
286
+ * Register tools dynamically at runtime (e.g., MCP bridge tools loaded after init).
287
+ * Merges into an existing skill definition or creates a new one.
288
+ */
289
+ registerDynamicTools(skillId, tools) {
290
+ const existing = this.skills.get(skillId);
291
+ if (existing) {
292
+ const existingIds = new Set(existing.tools.map((t) => t.id));
293
+ const newTools = tools.filter((t) => !existingIds.has(t.id));
294
+ existing.tools = [...existing.tools, ...newTools];
295
+ } else {
296
+ this.skills.set(skillId, {
297
+ id: skillId,
298
+ name: `Dynamic: ${skillId}`,
299
+ description: "Dynamically registered tools",
300
+ category: "integration",
301
+ risk: "medium",
302
+ tools,
303
+ source: "builtin"
304
+ });
305
+ }
306
+ }
307
+ setProfile(agentId, profile, orgId) {
308
+ this.profiles.set(agentId, profile);
309
+ if (this.engineDb && orgId) {
310
+ this.engineDb.upsertPermissionProfile(orgId, profile).catch((err) => {
311
+ console.error(`[permissions] Failed to persist profile for agent ${agentId}:`, err);
312
+ });
313
+ }
314
+ }
315
+ getProfile(agentId) {
316
+ return this.profiles.get(agentId);
317
+ }
318
+ /**
319
+ * Core permission check: Can this agent use this tool right now?
320
+ * Returns { allowed, reason, requiresApproval }
321
+ */
322
+ checkPermission(agentId, toolId, context) {
323
+ const profile = this.profiles.get(agentId);
324
+ if (!profile) {
325
+ return { allowed: false, reason: "No permission profile assigned", requiresApproval: false };
326
+ }
327
+ if (profile.constraints.sandboxMode) {
328
+ return { allowed: true, reason: "Sandbox mode \u2014 action will be simulated", requiresApproval: false, sandbox: true };
329
+ }
330
+ if (profile.constraints.allowedWorkingHours) {
331
+ const now = context?.timestamp || /* @__PURE__ */ new Date();
332
+ const { start, end, timezone } = profile.constraints.allowedWorkingHours;
333
+ const hour = parseInt(new Intl.DateTimeFormat("en-US", { hour: "numeric", hour12: false, timeZone: timezone }).format(now));
334
+ const startHour = parseInt(start.split(":")[0]);
335
+ const endHour = parseInt(end.split(":")[0]);
336
+ if (hour < startHour || hour >= endHour) {
337
+ return { allowed: false, reason: `Outside working hours (${start}-${end} ${timezone})`, requiresApproval: false };
338
+ }
339
+ }
340
+ if (profile.constraints.allowedIPs?.length && context?.ip) {
341
+ if (!profile.constraints.allowedIPs.includes(context.ip)) {
342
+ return { allowed: false, reason: `IP ${context.ip} not in allowlist`, requiresApproval: false };
343
+ }
344
+ }
345
+ const blockedTools = profile.tools?.blocked || [];
346
+ const allowedTools = profile.tools?.allowed || [];
347
+ if (blockedTools.includes(toolId)) {
348
+ return { allowed: false, reason: `Tool "${toolId}" is explicitly blocked`, requiresApproval: false };
349
+ }
350
+ if (allowedTools.includes(toolId)) {
351
+ return this._checkApproval(profile, toolId);
352
+ }
353
+ const tool = this._findTool(toolId);
354
+ if (!tool) {
355
+ return { allowed: false, reason: `Unknown tool "${toolId}"`, requiresApproval: false };
356
+ }
357
+ const skillsMode = profile.skills?.mode || "blocklist";
358
+ const skillsList = profile.skills?.list || [];
359
+ const skillAllowed = skillsMode === "allowlist" ? skillsList.includes(tool.skillId || "") : !skillsList.includes(tool.skillId || "");
360
+ if (!skillAllowed) {
361
+ return { allowed: false, reason: `Skill "${tool.skillId}" is not permitted`, requiresApproval: false };
362
+ }
363
+ const riskOrder = ["low", "medium", "high", "critical"];
364
+ const toolRiskIdx = riskOrder.indexOf(tool.risk || "low");
365
+ const maxRiskIdx = riskOrder.indexOf(profile.maxRiskLevel);
366
+ if (toolRiskIdx > maxRiskIdx) {
367
+ return { allowed: false, reason: `Tool risk "${tool.risk}" exceeds max allowed "${profile.maxRiskLevel}"`, requiresApproval: false };
368
+ }
369
+ for (const effect of tool.sideEffects || []) {
370
+ if (profile.blockedSideEffects.includes(effect)) {
371
+ return { allowed: false, reason: `Side effect "${effect}" is blocked`, requiresApproval: false };
372
+ }
373
+ }
374
+ return this._checkApproval(profile, toolId, tool);
375
+ }
376
+ _checkApproval(profile, toolId, tool) {
377
+ if (!profile.requireApproval.enabled) {
378
+ return { allowed: true, reason: "Permitted", requiresApproval: false };
379
+ }
380
+ if (tool) {
381
+ if (profile.requireApproval.forRiskLevels.includes(tool.risk || "low")) {
382
+ return { allowed: true, reason: "Requires human approval (risk level)", requiresApproval: true };
383
+ }
384
+ for (const effect of tool.sideEffects || []) {
385
+ if (profile.requireApproval.forSideEffects.includes(effect)) {
386
+ return { allowed: true, reason: `Requires human approval (${effect})`, requiresApproval: true };
387
+ }
388
+ }
389
+ }
390
+ return { allowed: true, reason: "Permitted", requiresApproval: false };
391
+ }
392
+ _findTool(toolId) {
393
+ for (const skill of this.skills.values()) {
394
+ const tool = skill.tools.find((t) => t.id === toolId);
395
+ if (tool) return tool;
396
+ }
397
+ try {
398
+ const { TOOL_INDEX } = (init_tool_catalog(), __toCommonJS(tool_catalog_exports));
399
+ return TOOL_INDEX.get(toolId);
400
+ } catch {
401
+ return void 0;
402
+ }
403
+ }
404
+ /**
405
+ * Get the full resolved tool list for an agent — what they can actually use
406
+ */
407
+ getAvailableTools(agentId) {
408
+ const result = [];
409
+ for (const skill of this.skills.values()) {
410
+ for (const tool of skill.tools) {
411
+ const perm = this.checkPermission(agentId, tool.id || tool.name);
412
+ if (perm.allowed) {
413
+ result.push({
414
+ tool,
415
+ status: perm.sandbox ? "sandbox" : perm.requiresApproval ? "approval-required" : "allowed"
416
+ });
417
+ }
418
+ }
419
+ }
420
+ return result;
421
+ }
422
+ /**
423
+ * Generate the tool policy config for an agent based on their profile
424
+ */
425
+ generateToolPolicy(agentId) {
426
+ const profile = this.profiles.get(agentId);
427
+ if (!profile) return { allowedTools: [], blockedTools: [], approvalRequired: [], rateLimits: { toolCallsPerMinute: 10, toolCallsPerHour: 100, toolCallsPerDay: 1e3, externalActionsPerHour: 10 } };
428
+ const allowed = [];
429
+ const blocked = [];
430
+ const approval = [];
431
+ for (const skill of this.skills.values()) {
432
+ for (const tool of skill.tools) {
433
+ const perm = this.checkPermission(agentId, tool.id || tool.name);
434
+ if (perm.allowed) {
435
+ allowed.push(tool.id || tool.name);
436
+ if (perm.requiresApproval) approval.push(tool.id || tool.name);
437
+ } else {
438
+ blocked.push(tool.id || tool.name);
439
+ }
440
+ }
441
+ }
442
+ return { allowedTools: allowed, blockedTools: blocked, approvalRequired: approval, rateLimits: profile.rateLimits };
443
+ }
444
+ getAllSkills() {
445
+ return Array.from(this.skills.values());
446
+ }
447
+ getSkillsByCategory() {
448
+ const result = {};
449
+ for (const skill of this.skills.values()) {
450
+ if (!result[skill.category]) result[skill.category] = [];
451
+ result[skill.category].push(skill);
452
+ }
453
+ return result;
454
+ }
455
+ };
456
+ }
457
+ });
458
+
459
+ export {
460
+ SKILL_SUITES,
461
+ PRESET_PROFILES,
462
+ BUILTIN_SKILLS,
463
+ PermissionEngine,
464
+ init_skills2 as init_skills
465
+ };