@arbium/enterprise-agent-connect 0.0.0-stage → 0.1.2-dev.9022f22

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 (322) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +269 -2
  3. package/dist/connectors/dell-techdirect/connector.json +39 -0
  4. package/dist/connectors/dell-techdirect/index.d.ts +8 -0
  5. package/dist/connectors/dell-techdirect/index.js +7 -0
  6. package/dist/connectors/dell-techdirect/index.js.map +1 -0
  7. package/dist/connectors/dell-techdirect/tools.d.ts +2 -0
  8. package/dist/connectors/dell-techdirect/tools.js +49 -0
  9. package/dist/connectors/dell-techdirect/tools.js.map +1 -0
  10. package/dist/connectors/dell-techdirect/vendor.d.ts +6 -0
  11. package/dist/connectors/dell-techdirect/vendor.js +57 -0
  12. package/dist/connectors/dell-techdirect/vendor.js.map +1 -0
  13. package/dist/connectors/dynamics-365/connector.json +228 -0
  14. package/dist/connectors/dynamics-365/index.d.ts +8 -0
  15. package/dist/connectors/dynamics-365/index.js +10 -0
  16. package/dist/connectors/dynamics-365/index.js.map +1 -0
  17. package/dist/connectors/dynamics-365/tools.d.ts +35 -0
  18. package/dist/connectors/dynamics-365/tools.js +806 -0
  19. package/dist/connectors/dynamics-365/tools.js.map +1 -0
  20. package/dist/connectors/dynamics-365/vendor.d.ts +9 -0
  21. package/dist/connectors/dynamics-365/vendor.js +110 -0
  22. package/dist/connectors/dynamics-365/vendor.js.map +1 -0
  23. package/dist/connectors/entra/connector.json +85 -0
  24. package/dist/connectors/entra/index.d.ts +2 -0
  25. package/dist/connectors/entra/index.js +4 -0
  26. package/dist/connectors/entra/index.js.map +1 -0
  27. package/dist/connectors/entra/tools.d.ts +14 -0
  28. package/dist/connectors/entra/tools.js +262 -0
  29. package/dist/connectors/entra/tools.js.map +1 -0
  30. package/dist/connectors/fedex/connector.json +118 -0
  31. package/dist/connectors/fedex/index.d.ts +8 -0
  32. package/dist/connectors/fedex/index.js +7 -0
  33. package/dist/connectors/fedex/index.js.map +1 -0
  34. package/dist/connectors/fedex/tools.d.ts +3 -0
  35. package/dist/connectors/fedex/tools.js +152 -0
  36. package/dist/connectors/fedex/tools.js.map +1 -0
  37. package/dist/connectors/fedex/vendor.d.ts +7 -0
  38. package/dist/connectors/fedex/vendor.js +98 -0
  39. package/dist/connectors/fedex/vendor.js.map +1 -0
  40. package/dist/connectors/gong/connector.json +127 -0
  41. package/dist/connectors/gong/index.d.ts +8 -0
  42. package/dist/connectors/gong/index.js +7 -0
  43. package/dist/connectors/gong/index.js.map +1 -0
  44. package/dist/connectors/gong/tools.d.ts +8 -0
  45. package/dist/connectors/gong/tools.js +424 -0
  46. package/dist/connectors/gong/tools.js.map +1 -0
  47. package/dist/connectors/gong/vendor.d.ts +4 -0
  48. package/dist/connectors/gong/vendor.js +89 -0
  49. package/dist/connectors/gong/vendor.js.map +1 -0
  50. package/dist/connectors/http/index.d.ts +34 -0
  51. package/dist/connectors/http/index.js +325 -0
  52. package/dist/connectors/http/index.js.map +1 -0
  53. package/dist/connectors/intune/connector.json +106 -0
  54. package/dist/connectors/intune/index.d.ts +2 -0
  55. package/dist/connectors/intune/index.js +4 -0
  56. package/dist/connectors/intune/index.js.map +1 -0
  57. package/dist/connectors/intune/tools.d.ts +12 -0
  58. package/dist/connectors/intune/tools.js +416 -0
  59. package/dist/connectors/intune/tools.js.map +1 -0
  60. package/dist/connectors/jamf/connector.json +182 -0
  61. package/dist/connectors/jamf/index.d.ts +8 -0
  62. package/dist/connectors/jamf/index.js +7 -0
  63. package/dist/connectors/jamf/index.js.map +1 -0
  64. package/dist/connectors/jamf/tools.d.ts +7 -0
  65. package/dist/connectors/jamf/tools.js +659 -0
  66. package/dist/connectors/jamf/tools.js.map +1 -0
  67. package/dist/connectors/jamf/vendor.d.ts +5 -0
  68. package/dist/connectors/jamf/vendor.js +70 -0
  69. package/dist/connectors/jamf/vendor.js.map +1 -0
  70. package/dist/connectors/jira/connector.json +272 -0
  71. package/dist/connectors/jira/index.d.ts +8 -0
  72. package/dist/connectors/jira/index.js +7 -0
  73. package/dist/connectors/jira/index.js.map +1 -0
  74. package/dist/connectors/jira/jql.d.ts +4 -0
  75. package/dist/connectors/jira/jql.js +67 -0
  76. package/dist/connectors/jira/jql.js.map +1 -0
  77. package/dist/connectors/jira/tools.d.ts +3 -0
  78. package/dist/connectors/jira/tools.js +464 -0
  79. package/dist/connectors/jira/tools.js.map +1 -0
  80. package/dist/connectors/jira/vendor.d.ts +3 -0
  81. package/dist/connectors/jira/vendor.js +100 -0
  82. package/dist/connectors/jira/vendor.js.map +1 -0
  83. package/dist/connectors/microsoft/client.d.ts +66 -0
  84. package/dist/connectors/microsoft/client.js +452 -0
  85. package/dist/connectors/microsoft/client.js.map +1 -0
  86. package/dist/connectors/microsoft/provider.json +118 -0
  87. package/dist/connectors/netsuite/connector.json +317 -0
  88. package/dist/connectors/netsuite/index.d.ts +8 -0
  89. package/dist/connectors/netsuite/index.js +7 -0
  90. package/dist/connectors/netsuite/index.js.map +1 -0
  91. package/dist/connectors/netsuite/tools.d.ts +24 -0
  92. package/dist/connectors/netsuite/tools.js +447 -0
  93. package/dist/connectors/netsuite/tools.js.map +1 -0
  94. package/dist/connectors/netsuite/vendor.d.ts +26 -0
  95. package/dist/connectors/netsuite/vendor.js +247 -0
  96. package/dist/connectors/netsuite/vendor.js.map +1 -0
  97. package/dist/connectors/odata/index.d.ts +33 -0
  98. package/dist/connectors/odata/index.js +460 -0
  99. package/dist/connectors/odata/index.js.map +1 -0
  100. package/dist/connectors/okta/connector.json +194 -0
  101. package/dist/connectors/okta/index.d.ts +8 -0
  102. package/dist/connectors/okta/index.js +7 -0
  103. package/dist/connectors/okta/index.js.map +1 -0
  104. package/dist/connectors/okta/tools.d.ts +6 -0
  105. package/dist/connectors/okta/tools.js +429 -0
  106. package/dist/connectors/okta/tools.js.map +1 -0
  107. package/dist/connectors/okta/vendor.d.ts +14 -0
  108. package/dist/connectors/okta/vendor.js +204 -0
  109. package/dist/connectors/okta/vendor.js.map +1 -0
  110. package/dist/connectors/outlook-calendar/connector.json +136 -0
  111. package/dist/connectors/outlook-calendar/index.d.ts +2 -0
  112. package/dist/connectors/outlook-calendar/index.js +4 -0
  113. package/dist/connectors/outlook-calendar/index.js.map +1 -0
  114. package/dist/connectors/outlook-calendar/tools.d.ts +65 -0
  115. package/dist/connectors/outlook-calendar/tools.js +398 -0
  116. package/dist/connectors/outlook-calendar/tools.js.map +1 -0
  117. package/dist/connectors/outlook-mail/connector.json +154 -0
  118. package/dist/connectors/outlook-mail/index.d.ts +2 -0
  119. package/dist/connectors/outlook-mail/index.js +4 -0
  120. package/dist/connectors/outlook-mail/index.js.map +1 -0
  121. package/dist/connectors/outlook-mail/tools.d.ts +8 -0
  122. package/dist/connectors/outlook-mail/tools.js +236 -0
  123. package/dist/connectors/outlook-mail/tools.js.map +1 -0
  124. package/dist/connectors/salesforce/connector.json +122 -0
  125. package/dist/connectors/salesforce/index.d.ts +8 -0
  126. package/dist/connectors/salesforce/index.js +7 -0
  127. package/dist/connectors/salesforce/index.js.map +1 -0
  128. package/dist/connectors/salesforce/soql.d.ts +3 -0
  129. package/dist/connectors/salesforce/soql.js +60 -0
  130. package/dist/connectors/salesforce/soql.js.map +1 -0
  131. package/dist/connectors/salesforce/tools.d.ts +9 -0
  132. package/dist/connectors/salesforce/tools.js +234 -0
  133. package/dist/connectors/salesforce/tools.js.map +1 -0
  134. package/dist/connectors/salesforce/vendor.d.ts +3 -0
  135. package/dist/connectors/salesforce/vendor.js +113 -0
  136. package/dist/connectors/salesforce/vendor.js.map +1 -0
  137. package/dist/connectors/sap-s4hana/connector.json +264 -0
  138. package/dist/connectors/sap-s4hana/index.d.ts +8 -0
  139. package/dist/connectors/sap-s4hana/index.js +7 -0
  140. package/dist/connectors/sap-s4hana/index.js.map +1 -0
  141. package/dist/connectors/sap-s4hana/tools.d.ts +4 -0
  142. package/dist/connectors/sap-s4hana/tools.js +761 -0
  143. package/dist/connectors/sap-s4hana/tools.js.map +1 -0
  144. package/dist/connectors/sap-s4hana/vendor.d.ts +5 -0
  145. package/dist/connectors/sap-s4hana/vendor.js +176 -0
  146. package/dist/connectors/sap-s4hana/vendor.js.map +1 -0
  147. package/dist/connectors/servicenow/connector.json +228 -0
  148. package/dist/connectors/servicenow/index.d.ts +8 -0
  149. package/dist/connectors/servicenow/index.js +7 -0
  150. package/dist/connectors/servicenow/index.js.map +1 -0
  151. package/dist/connectors/servicenow/tools.d.ts +4 -0
  152. package/dist/connectors/servicenow/tools.js +884 -0
  153. package/dist/connectors/servicenow/tools.js.map +1 -0
  154. package/dist/connectors/servicenow/vendor.d.ts +3 -0
  155. package/dist/connectors/servicenow/vendor.js +106 -0
  156. package/dist/connectors/servicenow/vendor.js.map +1 -0
  157. package/dist/connectors/sharepoint-files/connector.json +194 -0
  158. package/dist/connectors/sharepoint-files/excel.d.ts +16 -0
  159. package/dist/connectors/sharepoint-files/excel.js +300 -0
  160. package/dist/connectors/sharepoint-files/excel.js.map +1 -0
  161. package/dist/connectors/sharepoint-files/index.d.ts +8 -0
  162. package/dist/connectors/sharepoint-files/index.js +12 -0
  163. package/dist/connectors/sharepoint-files/index.js.map +1 -0
  164. package/dist/connectors/sharepoint-files/tools.d.ts +52 -0
  165. package/dist/connectors/sharepoint-files/tools.js +365 -0
  166. package/dist/connectors/sharepoint-files/tools.js.map +1 -0
  167. package/dist/connectors/sharepoint-files/vendor.d.ts +11 -0
  168. package/dist/connectors/sharepoint-files/vendor.js +167 -0
  169. package/dist/connectors/sharepoint-files/vendor.js.map +1 -0
  170. package/dist/connectors/slack/connector.json +148 -0
  171. package/dist/connectors/slack/index.d.ts +8 -0
  172. package/dist/connectors/slack/index.js +7 -0
  173. package/dist/connectors/slack/index.js.map +1 -0
  174. package/dist/connectors/slack/tools.d.ts +3 -0
  175. package/dist/connectors/slack/tools.js +355 -0
  176. package/dist/connectors/slack/tools.js.map +1 -0
  177. package/dist/connectors/slack/vendor.d.ts +17 -0
  178. package/dist/connectors/slack/vendor.js +189 -0
  179. package/dist/connectors/slack/vendor.js.map +1 -0
  180. package/dist/connectors/soap/index.d.ts +16 -0
  181. package/dist/connectors/soap/index.js +248 -0
  182. package/dist/connectors/soap/index.js.map +1 -0
  183. package/dist/connectors/soap/xml.d.ts +12 -0
  184. package/dist/connectors/soap/xml.js +126 -0
  185. package/dist/connectors/soap/xml.js.map +1 -0
  186. package/dist/connectors/sql/engines.d.ts +58 -0
  187. package/dist/connectors/sql/engines.js +292 -0
  188. package/dist/connectors/sql/engines.js.map +1 -0
  189. package/dist/connectors/sql/index.d.ts +16 -0
  190. package/dist/connectors/sql/index.js +214 -0
  191. package/dist/connectors/sql/index.js.map +1 -0
  192. package/dist/connectors/teams/connector.json +298 -0
  193. package/dist/connectors/teams/index.d.ts +2 -0
  194. package/dist/connectors/teams/index.js +5 -0
  195. package/dist/connectors/teams/index.js.map +1 -0
  196. package/dist/connectors/teams/tools.d.ts +7 -0
  197. package/dist/connectors/teams/tools.js +392 -0
  198. package/dist/connectors/teams/tools.js.map +1 -0
  199. package/dist/connectors/workday/connector.json +188 -0
  200. package/dist/connectors/workday/index.d.ts +8 -0
  201. package/dist/connectors/workday/index.js +7 -0
  202. package/dist/connectors/workday/index.js.map +1 -0
  203. package/dist/connectors/workday/tools.d.ts +33 -0
  204. package/dist/connectors/workday/tools.js +410 -0
  205. package/dist/connectors/workday/tools.js.map +1 -0
  206. package/dist/connectors/workday/vendor.d.ts +18 -0
  207. package/dist/connectors/workday/vendor.js +199 -0
  208. package/dist/connectors/workday/vendor.js.map +1 -0
  209. package/dist/packages/connector-kit/src/branding.d.ts +57 -0
  210. package/dist/packages/connector-kit/src/branding.js +102 -0
  211. package/dist/packages/connector-kit/src/branding.js.map +1 -0
  212. package/dist/packages/connector-kit/src/certificate.d.ts +19 -0
  213. package/dist/packages/connector-kit/src/certificate.js +84 -0
  214. package/dist/packages/connector-kit/src/certificate.js.map +1 -0
  215. package/dist/packages/connector-kit/src/common.d.ts +36 -0
  216. package/dist/packages/connector-kit/src/common.js +110 -0
  217. package/dist/packages/connector-kit/src/common.js.map +1 -0
  218. package/dist/packages/connector-kit/src/connector.d.ts +1356 -0
  219. package/dist/packages/connector-kit/src/connector.js +1073 -0
  220. package/dist/packages/connector-kit/src/connector.js.map +1 -0
  221. package/dist/packages/connector-kit/src/fetch.d.ts +6 -0
  222. package/dist/packages/connector-kit/src/fetch.js +44 -0
  223. package/dist/packages/connector-kit/src/fetch.js.map +1 -0
  224. package/dist/packages/connector-kit/src/index.d.ts +5 -0
  225. package/dist/packages/connector-kit/src/index.js +6 -0
  226. package/dist/packages/connector-kit/src/index.js.map +1 -0
  227. package/dist/packages/connector-kit/src/oauth.d.ts +15 -0
  228. package/dist/packages/connector-kit/src/oauth.js +98 -0
  229. package/dist/packages/connector-kit/src/oauth.js.map +1 -0
  230. package/dist/packages/connector-kit/src/types.d.ts +87 -0
  231. package/dist/packages/connector-kit/src/types.js +20 -0
  232. package/dist/packages/connector-kit/src/types.js.map +1 -0
  233. package/dist/packages/server/migrations/0001_tables.sql +268 -0
  234. package/dist/packages/server/migrations/0002_organizations.sql +72 -0
  235. package/dist/packages/server/migrations/0003_drop_unused.sql +3 -0
  236. package/dist/packages/server/migrations/0004_trigger_runners.sql +15 -0
  237. package/dist/packages/server/migrations/0005_run_runner.sql +3 -0
  238. package/dist/packages/server/migrations/0006_approvals.sql +36 -0
  239. package/dist/packages/server/migrations/0007_app_events.sql +110 -0
  240. package/dist/packages/server/migrations/rollback/to-legacy.sql +90 -0
  241. package/dist/packages/server/src/api.d.ts +3730 -0
  242. package/dist/packages/server/src/api.js +820 -0
  243. package/dist/packages/server/src/api.js.map +1 -0
  244. package/dist/packages/server/src/app.d.ts +23 -0
  245. package/dist/packages/server/src/app.js +467 -0
  246. package/dist/packages/server/src/app.js.map +1 -0
  247. package/dist/packages/server/src/builtin.d.ts +5 -0
  248. package/dist/packages/server/src/builtin.js +42 -0
  249. package/dist/packages/server/src/builtin.js.map +1 -0
  250. package/dist/packages/server/src/consent.d.ts +27 -0
  251. package/dist/packages/server/src/consent.js +36 -0
  252. package/dist/packages/server/src/consent.js.map +1 -0
  253. package/dist/packages/server/src/events/admin.d.ts +156 -0
  254. package/dist/packages/server/src/events/admin.js +255 -0
  255. package/dist/packages/server/src/events/admin.js.map +1 -0
  256. package/dist/packages/server/src/events/deliver.d.ts +43 -0
  257. package/dist/packages/server/src/events/deliver.js +129 -0
  258. package/dist/packages/server/src/events/deliver.js.map +1 -0
  259. package/dist/packages/server/src/events/runtime.d.ts +28 -0
  260. package/dist/packages/server/src/events/runtime.js +400 -0
  261. package/dist/packages/server/src/events/runtime.js.map +1 -0
  262. package/dist/packages/server/src/events/store.d.ts +172 -0
  263. package/dist/packages/server/src/events/store.js +275 -0
  264. package/dist/packages/server/src/events/store.js.map +1 -0
  265. package/dist/packages/server/src/index.d.ts +40 -0
  266. package/dist/packages/server/src/index.js +186 -0
  267. package/dist/packages/server/src/index.js.map +1 -0
  268. package/dist/packages/server/src/migrate.d.ts +11 -0
  269. package/dist/packages/server/src/migrate.js +134 -0
  270. package/dist/packages/server/src/migrate.js.map +1 -0
  271. package/dist/packages/server/src/openapi.d.ts +4 -0
  272. package/dist/packages/server/src/openapi.js +101 -0
  273. package/dist/packages/server/src/openapi.js.map +1 -0
  274. package/dist/packages/server/src/queue.d.ts +10 -0
  275. package/dist/packages/server/src/queue.js +45 -0
  276. package/dist/packages/server/src/queue.js.map +1 -0
  277. package/dist/packages/server/src/secrets.d.ts +19 -0
  278. package/dist/packages/server/src/secrets.js +76 -0
  279. package/dist/packages/server/src/secrets.js.map +1 -0
  280. package/dist/packages/server/src/server.d.ts +1 -0
  281. package/dist/packages/server/src/server.js +82 -0
  282. package/dist/packages/server/src/server.js.map +1 -0
  283. package/dist/packages/server/src/service.d.ts +767 -0
  284. package/dist/packages/server/src/service.js +924 -0
  285. package/dist/packages/server/src/service.js.map +1 -0
  286. package/dist/packages/server/src/store.d.ts +157 -0
  287. package/dist/packages/server/src/store.js +415 -0
  288. package/dist/packages/server/src/store.js.map +1 -0
  289. package/dist/packages/server/src/teams/activity.d.ts +123 -0
  290. package/dist/packages/server/src/teams/activity.js +188 -0
  291. package/dist/packages/server/src/teams/activity.js.map +1 -0
  292. package/dist/packages/server/src/teams/admin.d.ts +335 -0
  293. package/dist/packages/server/src/teams/admin.js +699 -0
  294. package/dist/packages/server/src/teams/admin.js.map +1 -0
  295. package/dist/packages/server/src/teams/approval.d.ts +57 -0
  296. package/dist/packages/server/src/teams/approval.js +118 -0
  297. package/dist/packages/server/src/teams/approval.js.map +1 -0
  298. package/dist/packages/server/src/teams/bot.d.ts +25 -0
  299. package/dist/packages/server/src/teams/bot.js +124 -0
  300. package/dist/packages/server/src/teams/bot.js.map +1 -0
  301. package/dist/packages/server/src/teams/claude.d.ts +46 -0
  302. package/dist/packages/server/src/teams/claude.js +165 -0
  303. package/dist/packages/server/src/teams/claude.js.map +1 -0
  304. package/dist/packages/server/src/teams/jwt.d.ts +17 -0
  305. package/dist/packages/server/src/teams/jwt.js +121 -0
  306. package/dist/packages/server/src/teams/jwt.js.map +1 -0
  307. package/dist/packages/server/src/teams/package.d.ts +79 -0
  308. package/dist/packages/server/src/teams/package.js +319 -0
  309. package/dist/packages/server/src/teams/package.js.map +1 -0
  310. package/dist/packages/server/src/teams/provision.d.ts +84 -0
  311. package/dist/packages/server/src/teams/provision.js +505 -0
  312. package/dist/packages/server/src/teams/provision.js.map +1 -0
  313. package/dist/packages/server/src/teams/runner.d.ts +80 -0
  314. package/dist/packages/server/src/teams/runner.js +187 -0
  315. package/dist/packages/server/src/teams/runner.js.map +1 -0
  316. package/dist/packages/server/src/teams/runtime.d.ts +91 -0
  317. package/dist/packages/server/src/teams/runtime.js +679 -0
  318. package/dist/packages/server/src/teams/runtime.js.map +1 -0
  319. package/dist/packages/server/src/teams/store.d.ts +233 -0
  320. package/dist/packages/server/src/teams/store.js +507 -0
  321. package/dist/packages/server/src/teams/store.js.map +1 -0
  322. package/package.json +68 -4
@@ -0,0 +1,148 @@
1
+ {
2
+ "id": "slack",
3
+ "name": "Slack",
4
+ "description": "Let agents read and post in the Slack channels you add them to.",
5
+ "logo": "/brand/slack.svg",
6
+ "identity": "A Slack app named \"{brand.microsoft.appName}\" in your workspace. It reads and posts only in channels someone adds it to, never in direct messages.",
7
+ "accountKey": "teamId",
8
+ "connectionKind": "guided",
9
+ "setup": [
10
+ {
11
+ "title": "Create the Slack app from a manifest",
12
+ "body": "Open Slack's app settings, select Create New App, then From a manifest, and choose your workspace. On the YAML tab, replace the example with this manifest, then select Next and Create. It asks only for the permissions the abilities you chose need.",
13
+ "link": {
14
+ "label": "Open Slack app settings",
15
+ "href": "https://api.slack.com/apps"
16
+ },
17
+ "copy": [
18
+ "display_information:",
19
+ " name: \"{brand.microsoft.appName}\"",
20
+ "features:",
21
+ " bot_user:",
22
+ " display_name: \"{brand.microsoft.appName}\"",
23
+ " always_online: false",
24
+ "oauth_config:",
25
+ " scopes:",
26
+ " bot:",
27
+ " - {scope}",
28
+ "settings:",
29
+ " org_deploy_enabled: false",
30
+ " socket_mode_enabled: false",
31
+ " token_rotation_enabled: false"
32
+ ]
33
+ },
34
+ {
35
+ "title": "Install it and copy its token",
36
+ "body": "Install the app to your workspace, then copy its Bot User OAuth Token, which starts with xoxb-. If your workspace needs approval for new apps, a Slack admin approves it first.",
37
+ "click": [
38
+ "api.slack.com/apps > {brand.microsoft.appName} > Install App > Install to your workspace > Allow",
39
+ "Install App > Bot User OAuth Token > Copy"
40
+ ]
41
+ },
42
+ {
43
+ "title": "Add it to the channels agents may use",
44
+ "body": "The app sees only the channels it is a member of. In each channel agents should use, type /invite @{brand.microsoft.appName} and send it. You can narrow each agent to some of these channels here later.",
45
+ "click": [
46
+ "The channel > the channel's name at the top > Integrations > Add an App > {brand.microsoft.appName} > Add"
47
+ ]
48
+ }
49
+ ],
50
+ "afterConnect": [],
51
+ "fields": [
52
+ {
53
+ "id": "bot_token",
54
+ "label": "Bot User OAuth Token",
55
+ "placeholder": "xoxb-...",
56
+ "secret": true
57
+ }
58
+ ],
59
+ "capabilities": [
60
+ {
61
+ "id": "read",
62
+ "label": "Read channels",
63
+ "description": "List the channels the app was added to and read their messages and threads. Anyone who can post in those channels can write what the agent reads.",
64
+ "required": true,
65
+ "scopes": [
66
+ "channels:read",
67
+ "groups:read",
68
+ "channels:history",
69
+ "groups:history",
70
+ "users:read"
71
+ ],
72
+ "permissions": [],
73
+ "forbidden": "Add the bot scopes {scopes} to the Slack app under OAuth & Permissions, then reinstall it to the workspace.",
74
+ "tools": [
75
+ "slack_list_channels",
76
+ "slack_read_channel",
77
+ "slack_read_thread",
78
+ "slack_get_permalink"
79
+ ]
80
+ },
81
+ {
82
+ "id": "post",
83
+ "label": "Post messages",
84
+ "description": "Post messages and thread replies as the app in its channels.",
85
+ "scopes": ["chat:write"],
86
+ "permissions": [],
87
+ "forbidden": "Add the bot scope chat:write to the Slack app under OAuth & Permissions, then reinstall it to the workspace.",
88
+ "tools": ["slack_post_message"]
89
+ },
90
+ {
91
+ "id": "react",
92
+ "label": "Add reactions",
93
+ "description": "Add emoji reactions to messages as the app.",
94
+ "scopes": ["reactions:write"],
95
+ "permissions": [],
96
+ "forbidden": "Add the bot scope reactions:write to the Slack app under OAuth & Permissions, then reinstall it to the workspace.",
97
+ "tools": ["slack_add_reaction"]
98
+ },
99
+ {
100
+ "id": "upload",
101
+ "label": "Share text files",
102
+ "description": "Share text files, such as reports, as the app in its channels.",
103
+ "scopes": ["files:write"],
104
+ "permissions": [],
105
+ "forbidden": "Add the bot scope files:write to the Slack app under OAuth & Permissions, then reinstall it to the workspace.",
106
+ "tools": ["slack_upload_text_file"]
107
+ },
108
+ {
109
+ "id": "people",
110
+ "label": "Find people by email",
111
+ "description": "Look up anyone in the workspace by email address: their Slack name, title and time zone.",
112
+ "scopes": ["users:read", "users:read.email"],
113
+ "permissions": [],
114
+ "forbidden": "Add the bot scopes users:read and users:read.email to the Slack app under OAuth & Permissions, then reinstall it to the workspace.",
115
+ "tools": ["slack_find_user_by_email"]
116
+ },
117
+ {
118
+ "id": "delete",
119
+ "label": "Delete its own messages",
120
+ "description": "Delete messages the app posted. Slack cannot bring them back. The app can never delete anyone else's message.",
121
+ "destructive": true,
122
+ "scopes": ["chat:write"],
123
+ "permissions": [],
124
+ "forbidden": "Add the bot scope chat:write to the Slack app under OAuth & Permissions, then reinstall it to the workspace.",
125
+ "tools": ["slack_delete_message"]
126
+ }
127
+ ],
128
+ "limits": [
129
+ {
130
+ "id": "channels",
131
+ "label": "Channels",
132
+ "help": "Leave empty to allow every channel the app is a member of.",
133
+ "kind": "list",
134
+ "required": false,
135
+ "pattern": "^[CG][A-Z0-9]{2,20}$"
136
+ }
137
+ ],
138
+ "verify": {
139
+ "label": "Connected Slack workspace",
140
+ "check": "workspace"
141
+ },
142
+ "discover": {
143
+ "label": "Channels the app is in",
144
+ "check": "channels",
145
+ "ifEmpty": "The app is not in any channel yet, so agents will find nothing. Add it to a channel with /invite, then check again."
146
+ },
147
+ "revoke": "In Slack's app settings, open {brand.microsoft.appName}, then Install App, and revoke its token, or remove the app from the workspace under Settings > Manage apps."
148
+ }
@@ -0,0 +1,8 @@
1
+ declare const _default: {
2
+ id: string;
3
+ create: () => {
4
+ vendor: import("../../packages/connector-kit/src/types.js").Vendor;
5
+ toolset: import("../../packages/connector-kit/src/common.js").Toolset;
6
+ };
7
+ };
8
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { slackTools } from "./tools.js";
2
+ import { slackVendor } from "./vendor.js";
3
+ export default {
4
+ id: "slack",
5
+ create: () => ({ vendor: slackVendor(), toolset: slackTools }),
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/slack/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAe;IACb,EAAE,EAAE,OAAO;IACX,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;CACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Toolset } from "../../packages/connector-kit/src/common.js";
2
+ export declare function plainText(text: string, names: Map<string, string>): string;
3
+ export declare const slackTools: Toolset;
@@ -0,0 +1,355 @@
1
+ import { z } from "zod";
2
+ import { channelQuery, slackError } from "./vendor.js";
3
+ import { audited, Denied, json, listLimit, VendorFailed, } from "../../packages/connector-kit/src/common.js";
4
+ // Slack as the app's bot: it reaches only channels it is a member of (Slack refuses the rest
5
+ // with not_in_channel), within the key's `channels` limit. Direct messages are out of reach:
6
+ // the manifest asks for no im or mpim scope.
7
+ const CHANNEL = /^[CG][A-Z0-9]{2,20}$/;
8
+ const TS = /^\d{9,11}\.\d{6}$/;
9
+ const MAX_TEXT = 40_000;
10
+ const MAX_FILE_BYTES = 1_000_000;
11
+ // users.info calls one answer makes at most to put names on people; the rest keep only ids.
12
+ const MAX_NAME_LOOKUPS = 20;
13
+ async function ok(ctx, mark, req) {
14
+ const res = await ctx.call(req);
15
+ mark(res.status);
16
+ if (res.status < 200 || res.status >= 300)
17
+ throw new VendorFailed(res.status, slackError(res));
18
+ return res.data;
19
+ }
20
+ const query = (params) => new URLSearchParams(Object.entries(params).flatMap(([k, v]) => v === undefined || v === "" ? [] : [[k, String(v)]])).toString();
21
+ function channel(ctx, id) {
22
+ if (!CHANNEL.test(id))
23
+ throw new Denied("Give a channel id such as C0123ABCD from slack_list_channels");
24
+ const allowed = listLimit(ctx.limits, "channels");
25
+ if (allowed && !allowed.includes(id))
26
+ throw new Denied("This agent may not use that channel");
27
+ return id;
28
+ }
29
+ function timestamp(ts, what = "message") {
30
+ if (!TS.test(ts))
31
+ throw new Denied(`Give the ${what}'s ts, such as 1730000000.123456`);
32
+ return ts;
33
+ }
34
+ // A Slack ts or an ISO 8601 time, as the ts Slack's history bounds take.
35
+ function bound(value) {
36
+ if (value === undefined)
37
+ return undefined;
38
+ if (TS.test(value) || /^\d{9,11}$/.test(value))
39
+ return value;
40
+ const ms = Date.parse(value);
41
+ if (Number.isNaN(ms))
42
+ throw new Denied(`${value} is neither a Slack ts nor an ISO 8601 time`);
43
+ return (ms / 1000).toFixed(6);
44
+ }
45
+ // Slack's mrkdwn markup to plain text: mentions and channel links by name, links as
46
+ // "label (url)", and its three escaped characters back.
47
+ export function plainText(text, names) {
48
+ return text
49
+ .replace(/<([^<>]+)>/g, (_, inner) => {
50
+ const bar = inner.indexOf("|");
51
+ const target = bar < 0 ? inner : inner.slice(0, bar);
52
+ const label = bar < 0 ? null : inner.slice(bar + 1);
53
+ if (target.startsWith("@"))
54
+ return `@${names.get(target.slice(1)) ?? label ?? target.slice(1)}`;
55
+ if (target.startsWith("#"))
56
+ return `#${label ?? target.slice(1)}`;
57
+ if (target.startsWith("!subteam^"))
58
+ return label ?? "@group";
59
+ if (target.startsWith("!date^"))
60
+ return label ?? target;
61
+ if (target.startsWith("!"))
62
+ return `@${target.slice(1)}`;
63
+ return label && label !== target ? `${label} (${target})` : target;
64
+ })
65
+ .replaceAll("&lt;", "<")
66
+ .replaceAll("&gt;", ">")
67
+ .replaceAll("&amp;", "&");
68
+ }
69
+ // People's names for the authors and mentions of these messages. A failed lookup leaves the
70
+ // id alone: a name is a convenience, never worth failing the read.
71
+ async function names(ctx, messages) {
72
+ const ids = new Set();
73
+ for (const m of messages) {
74
+ if (m.user)
75
+ ids.add(m.user);
76
+ for (const [, id] of (m.text ?? "").matchAll(/<@([UW][A-Z0-9]+)/g))
77
+ ids.add(id);
78
+ }
79
+ const found = new Map();
80
+ for (const id of [...ids].slice(0, MAX_NAME_LOOKUPS)) {
81
+ const res = await ctx.call({ method: "GET", path: `/users.info?${query({ user: id })}` });
82
+ const u = res.data?.user;
83
+ if (res.status === 200 && u)
84
+ found.set(id, u.profile?.display_name || u.real_name || u.name || id);
85
+ }
86
+ return found;
87
+ }
88
+ function message(m, who) {
89
+ const text = m.text || (m.attachments ?? []).map((a) => a.fallback ?? a.text ?? "").join("\n");
90
+ return {
91
+ ts: m.ts,
92
+ at: new Date(Number(m.ts) * 1000).toISOString(),
93
+ ...(m.user ? { user_id: m.user, user: who.get(m.user) ?? null } : {}),
94
+ ...(m.bot_id ? { bot: m.bot_profile?.name ?? m.username ?? m.bot_id } : {}),
95
+ ...(m.subtype ? { subtype: m.subtype } : {}),
96
+ text: plainText(text, who),
97
+ ...(m.thread_ts ? { thread_ts: m.thread_ts } : {}),
98
+ ...(m.reply_count ? { reply_count: m.reply_count } : {}),
99
+ ...(m.edited ? { edited: true } : {}),
100
+ ...(m.reactions?.length
101
+ ? { reactions: m.reactions.map((r) => ({ emoji: r.name, count: r.count })) }
102
+ : {}),
103
+ ...(m.files?.length ? { files: m.files.map((f) => f.title || f.name || "file") } : {}),
104
+ };
105
+ }
106
+ async function messages(ctx, list) {
107
+ const who = await names(ctx, list);
108
+ return list.map((m) => message(m, who));
109
+ }
110
+ const channelId = z.string().describe("Channel id, e.g. C0123ABCD, from slack_list_channels.");
111
+ const ts = z.string().describe("The message's ts, e.g. 1730000000.123456.");
112
+ const cursor = z.string().max(500).optional().describe("The next value of the previous answer.");
113
+ export const slackTools = {
114
+ names: [
115
+ "slack_list_channels",
116
+ "slack_read_channel",
117
+ "slack_read_thread",
118
+ "slack_get_permalink",
119
+ "slack_post_message",
120
+ "slack_add_reaction",
121
+ "slack_upload_text_file",
122
+ "slack_find_user_by_email",
123
+ "slack_delete_message",
124
+ ],
125
+ register(server, ctx, allowed) {
126
+ const readOnly = { readOnlyHint: true, openWorldHint: true };
127
+ const writes = { readOnlyHint: false, destructiveHint: false, openWorldHint: true };
128
+ if (allowed.has("slack_list_channels"))
129
+ server.registerTool("slack_list_channels", {
130
+ description: "List the Slack channels this agent can use: those the app was added to, within the agent's limits.",
131
+ inputSchema: z.object({ cursor }),
132
+ annotations: readOnly,
133
+ }, ({ cursor }) => audited(ctx, "slack_list_channels", null, async (mark) => {
134
+ const limit = listLimit(ctx.limits, "channels");
135
+ const data = await ok(ctx, mark, {
136
+ method: "GET",
137
+ path: `/users.conversations?${channelQuery(200, cursor)}`,
138
+ });
139
+ const channels = (data.channels ?? [])
140
+ .filter((c) => !limit || limit.includes(c.id))
141
+ .map((c) => ({
142
+ id: c.id,
143
+ name: c.name ?? null,
144
+ private: Boolean(c.is_private),
145
+ topic: c.topic?.value || null,
146
+ purpose: c.purpose?.value || null,
147
+ }));
148
+ return json({ channels, next: data.response_metadata?.next_cursor || null });
149
+ }));
150
+ if (allowed.has("slack_read_channel"))
151
+ server.registerTool("slack_read_channel", {
152
+ description: "Read a Slack channel's messages, newest first. A message with reply_count has a thread: read it with slack_read_thread. oldest and latest bound the window (a ts or an ISO 8601 time).",
153
+ inputSchema: z.object({
154
+ channel: channelId,
155
+ limit: z.number().int().min(1).max(100).default(20),
156
+ oldest: z.string().optional(),
157
+ latest: z.string().optional(),
158
+ cursor,
159
+ }),
160
+ annotations: readOnly,
161
+ }, (args) => audited(ctx, "slack_read_channel", args.channel, async (mark) => {
162
+ const data = await ok(ctx, mark, {
163
+ method: "GET",
164
+ path: `/conversations.history?${query({
165
+ channel: channel(ctx, args.channel),
166
+ limit: args.limit,
167
+ oldest: bound(args.oldest),
168
+ latest: bound(args.latest),
169
+ cursor: args.cursor,
170
+ })}`,
171
+ });
172
+ return json({
173
+ messages: await messages(ctx, data.messages ?? []),
174
+ next: data.response_metadata?.next_cursor || null,
175
+ });
176
+ }));
177
+ if (allowed.has("slack_read_thread"))
178
+ server.registerTool("slack_read_thread", {
179
+ description: "Read a Slack thread, oldest first: the message that started it, then its replies.",
180
+ inputSchema: z.object({
181
+ channel: channelId,
182
+ thread_ts: z.string().describe("The ts of the message that started the thread."),
183
+ limit: z.number().int().min(1).max(200).default(50),
184
+ cursor,
185
+ }),
186
+ annotations: readOnly,
187
+ }, (args) => audited(ctx, "slack_read_thread", `${args.channel} ${args.thread_ts}`, async (mark) => {
188
+ const data = await ok(ctx, mark, {
189
+ method: "GET",
190
+ path: `/conversations.replies?${query({
191
+ channel: channel(ctx, args.channel),
192
+ ts: timestamp(args.thread_ts, "thread"),
193
+ limit: args.limit,
194
+ cursor: args.cursor,
195
+ })}`,
196
+ });
197
+ return json({
198
+ messages: await messages(ctx, data.messages ?? []),
199
+ next: data.response_metadata?.next_cursor || null,
200
+ });
201
+ }));
202
+ if (allowed.has("slack_get_permalink"))
203
+ server.registerTool("slack_get_permalink", {
204
+ description: "Get a link people can open to one Slack message.",
205
+ inputSchema: z.object({ channel: channelId, ts }),
206
+ annotations: readOnly,
207
+ }, (args) => audited(ctx, "slack_get_permalink", `${args.channel} ${args.ts}`, async (mark) => {
208
+ const data = await ok(ctx, mark, {
209
+ method: "GET",
210
+ path: `/chat.getPermalink?${query({
211
+ channel: channel(ctx, args.channel),
212
+ message_ts: timestamp(args.ts),
213
+ })}`,
214
+ });
215
+ return json({ permalink: data.permalink });
216
+ }));
217
+ if (allowed.has("slack_post_message"))
218
+ server.registerTool("slack_post_message", {
219
+ description: "Post a message as the app in a Slack channel, or reply in a thread with thread_ts. Slack mrkdwn works: *bold*, _italic_, `code`, <@U0123ABCD> mentions a person.",
220
+ inputSchema: z.object({
221
+ channel: channelId,
222
+ text: z.string().min(1).max(MAX_TEXT),
223
+ thread_ts: z.string().optional().describe("Reply in this message's thread."),
224
+ also_send_to_channel: z
225
+ .boolean()
226
+ .default(false)
227
+ .describe("With thread_ts: also show the reply in the channel."),
228
+ }),
229
+ annotations: writes,
230
+ }, (args) => audited(ctx, "slack_post_message", args.channel, async (mark) => {
231
+ const data = await ok(ctx, mark, {
232
+ method: "POST",
233
+ path: "/chat.postMessage",
234
+ body: {
235
+ channel: channel(ctx, args.channel),
236
+ text: args.text,
237
+ ...(args.thread_ts
238
+ ? {
239
+ thread_ts: timestamp(args.thread_ts, "thread"),
240
+ reply_broadcast: args.also_send_to_channel,
241
+ }
242
+ : {}),
243
+ },
244
+ });
245
+ return json({ channel: data.channel, ts: data.ts, thread_ts: args.thread_ts ?? null });
246
+ }));
247
+ if (allowed.has("slack_add_reaction"))
248
+ server.registerTool("slack_add_reaction", {
249
+ description: "Add an emoji reaction as the app to a Slack message, e.g. eyes or white_check_mark.",
250
+ inputSchema: z.object({
251
+ channel: channelId,
252
+ ts,
253
+ emoji: z.string().min(1).max(100).describe("Emoji name, with or without colons."),
254
+ }),
255
+ annotations: writes,
256
+ }, (args) => audited(ctx, "slack_add_reaction", `${args.channel} ${args.ts}`, async (mark) => {
257
+ const name = args.emoji.replace(/^:|:$/g, "");
258
+ const res = await ctx.call({
259
+ method: "POST",
260
+ path: "/reactions.add",
261
+ body: { channel: channel(ctx, args.channel), timestamp: timestamp(args.ts), name },
262
+ });
263
+ mark(res.status);
264
+ // Already there is what the agent asked for.
265
+ if (res.data?.error === "already_reacted")
266
+ return json({ reacted: true, already: true });
267
+ if (res.status !== 200)
268
+ throw new VendorFailed(res.status, slackError(res));
269
+ return json({ reacted: true, already: false });
270
+ }));
271
+ if (allowed.has("slack_upload_text_file"))
272
+ server.registerTool("slack_upload_text_file", {
273
+ description: "Share a text file (up to 1 MB), such as a report or a CSV, as the app in a Slack channel or thread.",
274
+ inputSchema: z.object({
275
+ channel: channelId,
276
+ filename: z.string().min(1).max(255).describe("e.g. report.csv"),
277
+ content: z.string().min(1),
278
+ title: z.string().max(255).optional(),
279
+ comment: z
280
+ .string()
281
+ .max(MAX_TEXT)
282
+ .optional()
283
+ .describe("A message posted with the file."),
284
+ thread_ts: z.string().optional().describe("Share it in this message's thread."),
285
+ }),
286
+ annotations: writes,
287
+ }, (args) => audited(ctx, "slack_upload_text_file", `${args.channel} ${args.filename}`, async (mark) => {
288
+ const id = channel(ctx, args.channel);
289
+ if (/[/\\\x00-\x1f]/.test(args.filename))
290
+ throw new Denied("Give a file name without slashes or control characters");
291
+ const thread = args.thread_ts ? timestamp(args.thread_ts, "thread") : undefined;
292
+ const length = Buffer.byteLength(args.content, "utf8");
293
+ if (length > MAX_FILE_BYTES)
294
+ throw new Denied("The file is over 1 MB");
295
+ // Slack's upload: an address for the bytes, the bytes, then sharing it.
296
+ const slot = await ok(ctx, mark, {
297
+ method: "POST",
298
+ path: `/files.getUploadURLExternal?${query({ filename: args.filename, length })}`,
299
+ });
300
+ await ok(ctx, mark, { method: "POST", path: slot.upload_url, body: args.content });
301
+ await ok(ctx, mark, {
302
+ method: "POST",
303
+ path: "/files.completeUploadExternal",
304
+ body: {
305
+ files: [{ id: slot.file_id, title: args.title ?? args.filename }],
306
+ channel_id: id,
307
+ ...(args.comment ? { initial_comment: args.comment } : {}),
308
+ ...(thread ? { thread_ts: thread } : {}),
309
+ },
310
+ });
311
+ return json({ file_id: slot.file_id, channel: id, thread_ts: thread ?? null });
312
+ }));
313
+ if (allowed.has("slack_find_user_by_email"))
314
+ server.registerTool("slack_find_user_by_email", {
315
+ description: "Find a person in the Slack workspace by email address, e.g. to mention them as <@id> in a message.",
316
+ inputSchema: z.object({ email: z.email() }),
317
+ annotations: readOnly,
318
+ }, ({ email }) => audited(ctx, "slack_find_user_by_email", email, async (mark) => {
319
+ const res = await ctx.call({
320
+ method: "GET",
321
+ path: `/users.lookupByEmail?${query({ email })}`,
322
+ });
323
+ mark(res.status);
324
+ if (res.status === 404)
325
+ return json({ found: false });
326
+ if (res.status !== 200)
327
+ throw new VendorFailed(res.status, slackError(res));
328
+ const u = res.data.user;
329
+ return json({
330
+ found: true,
331
+ id: u.id,
332
+ name: u.profile?.display_name || u.real_name || u.name,
333
+ real_name: u.real_name ?? null,
334
+ title: u.profile?.title || null,
335
+ time_zone: u.tz ?? null,
336
+ is_bot: Boolean(u.is_bot),
337
+ deactivated: Boolean(u.deleted),
338
+ });
339
+ }));
340
+ if (allowed.has("slack_delete_message"))
341
+ server.registerTool("slack_delete_message", {
342
+ description: "Delete a message the app posted. Slack cannot bring it back, and the app cannot delete anyone else's message.",
343
+ inputSchema: z.object({ channel: channelId, ts }),
344
+ annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
345
+ }, (args) => audited(ctx, "slack_delete_message", `${args.channel} ${args.ts}`, async (mark) => {
346
+ await ok(ctx, mark, {
347
+ method: "POST",
348
+ path: "/chat.delete",
349
+ body: { channel: channel(ctx, args.channel), ts: timestamp(args.ts) },
350
+ });
351
+ return json({ deleted: true, channel: args.channel, ts: args.ts });
352
+ }));
353
+ },
354
+ };
355
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../connectors/slack/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type Fetch, type Vendor, type VendorConnection, type VendorResponse } from "../../packages/connector-kit/src/types.js";
2
+ export declare function slackError(res: VendorResponse): string;
3
+ export declare function slackVendor(unguarded?: Fetch, wait?: (seconds: number) => Promise<void>): Vendor;
4
+ export type Channel = {
5
+ id: string;
6
+ name?: string;
7
+ is_private?: boolean;
8
+ is_archived?: boolean;
9
+ topic?: {
10
+ value?: string;
11
+ };
12
+ purpose?: {
13
+ value?: string;
14
+ };
15
+ };
16
+ export declare function memberChannels(call: Vendor["call"], connection: VendorConnection): Promise<Channel[]>;
17
+ export declare const channelQuery: (limit: number, cursor?: string) => string;