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

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 (319) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +264 -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 +213 -0
  14. package/dist/connectors/dynamics-365/index.d.ts +11 -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 +97 -0
  49. package/dist/connectors/gong/vendor.js.map +1 -0
  50. package/dist/connectors/http/index.d.ts +38 -0
  51. package/dist/connectors/http/index.js +322 -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 +66 -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 +94 -0
  82. package/dist/connectors/jira/vendor.js.map +1 -0
  83. package/dist/connectors/microsoft/client.d.ts +58 -0
  84. package/dist/connectors/microsoft/client.js +434 -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 +315 -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 +248 -0
  96. package/dist/connectors/netsuite/vendor.js.map +1 -0
  97. package/dist/connectors/odata/index.d.ts +36 -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 +193 -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 +203 -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 +107 -0
  136. package/dist/connectors/salesforce/vendor.js.map +1 -0
  137. package/dist/connectors/sap-s4hana/connector.json +263 -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 +4 -0
  155. package/dist/connectors/servicenow/vendor.js +109 -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 +11 -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 +195 -0
  179. package/dist/connectors/slack/vendor.js.map +1 -0
  180. package/dist/connectors/soap/index.d.ts +19 -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 +19 -0
  190. package/dist/connectors/sql/index.js +212 -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 +2 -0
  197. package/dist/connectors/teams/tools.js +391 -0
  198. package/dist/connectors/teams/tools.js.map +1 -0
  199. package/dist/connectors/workday/connector.json +186 -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 +195 -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 +40 -0
  216. package/dist/packages/connector-kit/src/common.js +107 -0
  217. package/dist/packages/connector-kit/src/common.js.map +1 -0
  218. package/dist/packages/connector-kit/src/connector.d.ts +1346 -0
  219. package/dist/packages/connector-kit/src/connector.js +1034 -0
  220. package/dist/packages/connector-kit/src/connector.js.map +1 -0
  221. package/dist/packages/connector-kit/src/index.d.ts +5 -0
  222. package/dist/packages/connector-kit/src/index.js +5 -0
  223. package/dist/packages/connector-kit/src/index.js.map +1 -0
  224. package/dist/packages/connector-kit/src/oauth.d.ts +15 -0
  225. package/dist/packages/connector-kit/src/oauth.js +96 -0
  226. package/dist/packages/connector-kit/src/oauth.js.map +1 -0
  227. package/dist/packages/connector-kit/src/types.d.ts +85 -0
  228. package/dist/packages/connector-kit/src/types.js +20 -0
  229. package/dist/packages/connector-kit/src/types.js.map +1 -0
  230. package/dist/packages/server/migrations/0001_tables.sql +268 -0
  231. package/dist/packages/server/migrations/0002_organizations.sql +72 -0
  232. package/dist/packages/server/migrations/0003_drop_unused.sql +3 -0
  233. package/dist/packages/server/migrations/0004_trigger_runners.sql +15 -0
  234. package/dist/packages/server/migrations/0005_run_runner.sql +3 -0
  235. package/dist/packages/server/migrations/0006_approvals.sql +36 -0
  236. package/dist/packages/server/migrations/0007_app_events.sql +110 -0
  237. package/dist/packages/server/migrations/rollback/to-legacy.sql +90 -0
  238. package/dist/packages/server/src/api.d.ts +3714 -0
  239. package/dist/packages/server/src/api.js +818 -0
  240. package/dist/packages/server/src/api.js.map +1 -0
  241. package/dist/packages/server/src/app.d.ts +23 -0
  242. package/dist/packages/server/src/app.js +467 -0
  243. package/dist/packages/server/src/app.js.map +1 -0
  244. package/dist/packages/server/src/builtin.d.ts +4 -0
  245. package/dist/packages/server/src/builtin.js +42 -0
  246. package/dist/packages/server/src/builtin.js.map +1 -0
  247. package/dist/packages/server/src/consent.d.ts +27 -0
  248. package/dist/packages/server/src/consent.js +36 -0
  249. package/dist/packages/server/src/consent.js.map +1 -0
  250. package/dist/packages/server/src/events/admin.d.ts +156 -0
  251. package/dist/packages/server/src/events/admin.js +255 -0
  252. package/dist/packages/server/src/events/admin.js.map +1 -0
  253. package/dist/packages/server/src/events/deliver.d.ts +43 -0
  254. package/dist/packages/server/src/events/deliver.js +129 -0
  255. package/dist/packages/server/src/events/deliver.js.map +1 -0
  256. package/dist/packages/server/src/events/runtime.d.ts +28 -0
  257. package/dist/packages/server/src/events/runtime.js +397 -0
  258. package/dist/packages/server/src/events/runtime.js.map +1 -0
  259. package/dist/packages/server/src/events/store.d.ts +172 -0
  260. package/dist/packages/server/src/events/store.js +275 -0
  261. package/dist/packages/server/src/events/store.js.map +1 -0
  262. package/dist/packages/server/src/index.d.ts +40 -0
  263. package/dist/packages/server/src/index.js +185 -0
  264. package/dist/packages/server/src/index.js.map +1 -0
  265. package/dist/packages/server/src/migrate.d.ts +11 -0
  266. package/dist/packages/server/src/migrate.js +134 -0
  267. package/dist/packages/server/src/migrate.js.map +1 -0
  268. package/dist/packages/server/src/openapi.d.ts +4 -0
  269. package/dist/packages/server/src/openapi.js +101 -0
  270. package/dist/packages/server/src/openapi.js.map +1 -0
  271. package/dist/packages/server/src/queue.d.ts +10 -0
  272. package/dist/packages/server/src/queue.js +45 -0
  273. package/dist/packages/server/src/queue.js.map +1 -0
  274. package/dist/packages/server/src/secrets.d.ts +19 -0
  275. package/dist/packages/server/src/secrets.js +76 -0
  276. package/dist/packages/server/src/secrets.js.map +1 -0
  277. package/dist/packages/server/src/server.d.ts +1 -0
  278. package/dist/packages/server/src/server.js +82 -0
  279. package/dist/packages/server/src/server.js.map +1 -0
  280. package/dist/packages/server/src/service.d.ts +760 -0
  281. package/dist/packages/server/src/service.js +918 -0
  282. package/dist/packages/server/src/service.js.map +1 -0
  283. package/dist/packages/server/src/store.d.ts +158 -0
  284. package/dist/packages/server/src/store.js +415 -0
  285. package/dist/packages/server/src/store.js.map +1 -0
  286. package/dist/packages/server/src/teams/activity.d.ts +123 -0
  287. package/dist/packages/server/src/teams/activity.js +188 -0
  288. package/dist/packages/server/src/teams/activity.js.map +1 -0
  289. package/dist/packages/server/src/teams/admin.d.ts +335 -0
  290. package/dist/packages/server/src/teams/admin.js +699 -0
  291. package/dist/packages/server/src/teams/admin.js.map +1 -0
  292. package/dist/packages/server/src/teams/approval.d.ts +57 -0
  293. package/dist/packages/server/src/teams/approval.js +118 -0
  294. package/dist/packages/server/src/teams/approval.js.map +1 -0
  295. package/dist/packages/server/src/teams/bot.d.ts +25 -0
  296. package/dist/packages/server/src/teams/bot.js +124 -0
  297. package/dist/packages/server/src/teams/bot.js.map +1 -0
  298. package/dist/packages/server/src/teams/claude.d.ts +46 -0
  299. package/dist/packages/server/src/teams/claude.js +165 -0
  300. package/dist/packages/server/src/teams/claude.js.map +1 -0
  301. package/dist/packages/server/src/teams/jwt.d.ts +17 -0
  302. package/dist/packages/server/src/teams/jwt.js +121 -0
  303. package/dist/packages/server/src/teams/jwt.js.map +1 -0
  304. package/dist/packages/server/src/teams/package.d.ts +79 -0
  305. package/dist/packages/server/src/teams/package.js +319 -0
  306. package/dist/packages/server/src/teams/package.js.map +1 -0
  307. package/dist/packages/server/src/teams/provision.d.ts +84 -0
  308. package/dist/packages/server/src/teams/provision.js +505 -0
  309. package/dist/packages/server/src/teams/provision.js.map +1 -0
  310. package/dist/packages/server/src/teams/runner.d.ts +80 -0
  311. package/dist/packages/server/src/teams/runner.js +187 -0
  312. package/dist/packages/server/src/teams/runner.js.map +1 -0
  313. package/dist/packages/server/src/teams/runtime.d.ts +91 -0
  314. package/dist/packages/server/src/teams/runtime.js +679 -0
  315. package/dist/packages/server/src/teams/runtime.js.map +1 -0
  316. package/dist/packages/server/src/teams/store.d.ts +233 -0
  317. package/dist/packages/server/src/teams/store.js +507 -0
  318. package/dist/packages/server/src/teams/store.js.map +1 -0
  319. package/package.json +68 -4
@@ -0,0 +1,415 @@
1
+ import postgres from "postgres";
2
+ import { brand } from "../../connector-kit/src/branding.js";
3
+ import { ConnectError } from "../../connector-kit/src/types.js";
4
+ export function connectDatabase(url) {
5
+ // Same convention as the admin app and edge functions: TLS unless explicitly disabled.
6
+ const ssl = process.env.DATABASE_SSL === "disable" || url.includes("sslmode=disable") ? false : "require";
7
+ return postgres(url, { prepare: false, idle_timeout: 20, max: 5, ssl });
8
+ }
9
+ // Unquoted in SQL, so only a plain lower-case identifier. Never public or a system schema:
10
+ // migrating revokes the schema from PUBLIC.
11
+ export function assertSchemaName(schema) {
12
+ if (!/^[a-z_][a-z0-9_]{0,62}$/.test(schema))
13
+ throw new Error(`DATABASE_SCHEMA must be a lower-case identifier, not ${JSON.stringify(schema)}`);
14
+ if (schema === "public" || schema.startsWith("pg_"))
15
+ throw new Error(`DATABASE_SCHEMA must be the service's own schema, not ${schema}`);
16
+ }
17
+ const TABLES = [
18
+ "organizations",
19
+ "agents",
20
+ "providers",
21
+ "connections",
22
+ "grants",
23
+ "audit",
24
+ "confirmed",
25
+ "teams_bots",
26
+ "teams_conversations",
27
+ "teams_events",
28
+ "teams_triggers",
29
+ "teams_runs",
30
+ "teams_spend",
31
+ "approvals",
32
+ "event_subscriptions",
33
+ "app_events",
34
+ "event_triggers",
35
+ "event_runs",
36
+ ];
37
+ // Every table named in the configured schema, never through search_path (a pooler may drop
38
+ // it). The store writes queries both as tagged templates and as strings for sql.unsafe, so
39
+ // each name is an escaped identifier in the first and prints as schema.table in the second.
40
+ export function tables(sql, schema) {
41
+ assertSchemaName(schema);
42
+ return Object.fromEntries(TABLES.map((table) => {
43
+ const name = `${schema}.${table}`;
44
+ return [table, Object.assign(sql(name), { toString: () => name })];
45
+ }));
46
+ }
47
+ // Another admin action changed the provider connection between reading and saving it.
48
+ export class ProviderChanged extends ConnectError {
49
+ constructor() {
50
+ super("This connection changed meanwhile. Reload the page and try again.");
51
+ }
52
+ }
53
+ // ISO 8601 in UTC, so every client parses timestamps the same way.
54
+ const iso = (column) => `to_char(${column} at time zone 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')`;
55
+ const CONNECTION_COLUMNS = `id::text, organization_id::text as "organizationId",
56
+ connector_id as "connectorId", capabilities, config,
57
+ credential, credential_key_id as "credentialKeyId", provider_id::text as "providerId", status,
58
+ account_label as "accountLabel", connected_by as "connectedBy",
59
+ ${iso("connected_at")} as "connectedAt", ${iso("checked_at")} as "checkedAt"`;
60
+ const PROVIDER_COLUMNS = `id::text, organization_id::text as "organizationId", provider, status,
61
+ config, credential, credential_key_id as "credentialKeyId",
62
+ credential_scope as "credentialScope", account_label as "accountLabel",
63
+ connected_by as "connectedBy", ${iso("connected_at")} as "connectedAt",
64
+ ${iso("checked_at")} as "checkedAt"`;
65
+ const ORGANIZATION_COLUMNS = `id::text, name, ${iso("created_at")} as "createdAt"`;
66
+ const AGENT_COLUMNS = `id::text, organization_id::text as "organizationId", name, status,
67
+ created_by as "createdBy", ${iso("created_at")} as "createdAt"`;
68
+ const GRANT_COLUMNS = `g.agent_id::text as "agentId", g.connector_id as "connectorId",
69
+ g.capabilities, g.limits, ${iso("g.updated_at")} as "updatedAt"`;
70
+ const ONE_ORG_PER_TENANT = "agent_connect_providers_one_org_per_tenant";
71
+ async function clearGrants(t, tx, org, connectorId) {
72
+ await tx `
73
+ delete from ${t.grants} g using ${t.agents} a
74
+ where g.agent_id = a.id and a.organization_id = ${org} and g.connector_id = ${connectorId}`;
75
+ }
76
+ // Lowering the connection's ceiling takes the dropped capabilities off every agent too, so
77
+ // raising it again grants nothing until each agent is ticked again.
78
+ async function trimGrants(t, tx, org, connectorId, ceiling) {
79
+ await tx `
80
+ update ${t.grants} g
81
+ set capabilities = array(
82
+ select c from unnest(g.capabilities) with ordinality u(c, o)
83
+ where c = any(${tx.array(ceiling)}) order by o)
84
+ from ${t.agents} a
85
+ where a.id = g.agent_id and a.organization_id = ${org} and g.connector_id = ${connectorId}
86
+ and not g.capabilities <@ ${tx.array(ceiling)}`;
87
+ }
88
+ async function removeProviderApps(t, tx, org, provider) {
89
+ await tx `
90
+ delete from ${t.grants} g
91
+ using ${t.agents} a, ${t.connections} c,
92
+ ${t.providers} p
93
+ where g.agent_id = a.id and a.organization_id = ${org}
94
+ and c.organization_id = ${org} and c.connector_id = g.connector_id
95
+ and c.provider_id = p.id and p.provider = ${provider}`;
96
+ await tx `
97
+ delete from ${t.connections} c using ${t.providers} p
98
+ where c.provider_id = p.id and p.organization_id = ${org} and p.provider = ${provider}`;
99
+ }
100
+ async function insertAudit(t, q, entry) {
101
+ await q `
102
+ with logged as (
103
+ insert into ${t.audit}
104
+ (organization_id, agent_id, agent_name, connector_id, tool, target, decision, reason,
105
+ vendor_status)
106
+ values (${entry.organizationId}, ${entry.agentId}, ${entry.agentName},
107
+ ${entry.connectorId}, ${entry.tool},
108
+ ${entry.target?.slice(0, 2000) ?? null}, ${entry.decision}, ${entry.reason},
109
+ ${entry.vendorStatus})
110
+ returning agent_id, at)
111
+ update ${t.agents} a set last_used_at = logged.at
112
+ from logged where a.id = logged.agent_id`;
113
+ }
114
+ export function createStore(sql, schema) {
115
+ const t = tables(sql, schema);
116
+ return {
117
+ async listOrganizations() {
118
+ return sql `
119
+ select ${sql.unsafe(ORGANIZATION_COLUMNS)} from ${t.organizations} order by created_at, id`;
120
+ },
121
+ async getOrganization(org) {
122
+ const [row] = await sql `
123
+ select ${sql.unsafe(ORGANIZATION_COLUMNS)} from ${t.organizations} where id = ${org}`;
124
+ return row ?? null;
125
+ },
126
+ async createOrganization(name) {
127
+ const [row] = await sql `
128
+ insert into ${t.organizations} (name) values (${name})
129
+ returning ${sql.unsafe(ORGANIZATION_COLUMNS)}`;
130
+ return row;
131
+ },
132
+ /** Makes the organization with this id if missing; a name given replaces the kept one. */
133
+ async ensureOrganization(org, name) {
134
+ // Without a name, an existing row is read, not rewritten (the legacy prefix calls this on
135
+ // every request).
136
+ if (name === undefined) {
137
+ await sql `insert into ${t.organizations} (id) values (${org}) on conflict (id) do nothing`;
138
+ const [row] = await sql `
139
+ select ${sql.unsafe(ORGANIZATION_COLUMNS)} from ${t.organizations} where id = ${org}`;
140
+ return row;
141
+ }
142
+ const [row] = await sql `
143
+ insert into ${t.organizations} (id, name) values (${org}, ${name})
144
+ on conflict (id) do update set name = excluded.name
145
+ returning ${sql.unsafe(ORGANIZATION_COLUMNS)}`;
146
+ return row;
147
+ },
148
+ async listConnections(org) {
149
+ return sql.unsafe(`select ${CONNECTION_COLUMNS} from ${t.connections}
150
+ where organization_id = $1 order by connector_id`, [org]);
151
+ },
152
+ async getConnection(org, connectorId) {
153
+ const [row] = await sql.unsafe(`select ${CONNECTION_COLUMNS} from ${t.connections}
154
+ where organization_id = $1 and connector_id = $2`, [org, connectorId]);
155
+ return row ?? null;
156
+ },
157
+ async saveConnection(input) {
158
+ await sql.begin(async (tx) => {
159
+ if (input.clearGrants)
160
+ await clearGrants(t, tx, input.organizationId, input.connectorId);
161
+ else
162
+ await trimGrants(t, tx, input.organizationId, input.connectorId, input.capabilities);
163
+ await tx `
164
+ insert into ${t.connections}
165
+ (organization_id, connector_id, capabilities, config, credential, credential_key_id,
166
+ provider_id, status, account_label, connected_by)
167
+ values (${input.organizationId}, ${input.connectorId}, ${sql.array(input.capabilities)},
168
+ ${sql.json(input.config)}, ${input.credential}, ${input.credentialKeyId},
169
+ ${input.providerId}, 'connected', ${input.accountLabel}, ${input.connectedBy})
170
+ on conflict (organization_id, connector_id) do update set
171
+ capabilities = excluded.capabilities, config = excluded.config,
172
+ credential = excluded.credential, credential_key_id = excluded.credential_key_id,
173
+ provider_id = excluded.provider_id, status = 'connected',
174
+ account_label = excluded.account_label,
175
+ connected_by = excluded.connected_by, connected_at = now(), checked_at = now()`;
176
+ });
177
+ },
178
+ async listProviders(org) {
179
+ return sql.unsafe(`select ${PROVIDER_COLUMNS} from ${t.providers}
180
+ where organization_id = $1 order by provider`, [org]);
181
+ },
182
+ async getProvider(org, provider) {
183
+ const [row] = await sql.unsafe(`select ${PROVIDER_COLUMNS} from ${t.providers}
184
+ where organization_id = $1 and provider = $2`, [org, provider]);
185
+ return row ?? null;
186
+ },
187
+ // A credential kept before the provider is connected, e.g. a certificate's key. Never
188
+ // replaces a connected row's.
189
+ async savePendingProvider(input) {
190
+ const rows = await sql `
191
+ insert into ${t.providers} as p
192
+ (organization_id, provider, status, config, credential, credential_key_id,
193
+ credential_scope)
194
+ values (${input.organizationId}, ${input.provider}, 'pending', ${sql.json(input.config)},
195
+ ${input.credential}, ${input.credentialKeyId}, ${input.credentialScope})
196
+ on conflict (organization_id, provider) do update set
197
+ config = excluded.config, credential = excluded.credential,
198
+ credential_key_id = excluded.credential_key_id,
199
+ credential_scope = excluded.credential_scope
200
+ where p.status = 'pending'
201
+ returning id`;
202
+ return rows.length > 0;
203
+ },
204
+ async saveProvider(input) {
205
+ try {
206
+ await sql.begin(async (tx) => {
207
+ if (input.removeApps)
208
+ await removeProviderApps(t, tx, input.organizationId, input.provider);
209
+ const saved = await tx `
210
+ insert into ${t.providers} as p
211
+ (organization_id, provider, status, config, credential, credential_key_id,
212
+ credential_scope, account_label, connected_by)
213
+ values (${input.organizationId}, ${input.provider}, 'connected', ${sql.json(input.config)},
214
+ ${input.credential}, ${input.credentialKeyId}, ${input.credentialScope},
215
+ ${input.accountLabel}, ${input.connectedBy})
216
+ on conflict (organization_id, provider) do update set
217
+ status = 'connected', config = excluded.config, credential = excluded.credential,
218
+ credential_key_id = excluded.credential_key_id,
219
+ credential_scope = excluded.credential_scope, account_label = excluded.account_label,
220
+ connected_by = excluded.connected_by, connected_at = now(), checked_at = now()
221
+ where p.credential = ${input.replaces}
222
+ returning id`;
223
+ if (!saved.length)
224
+ throw new ProviderChanged();
225
+ });
226
+ }
227
+ catch (error) {
228
+ if (error.constraint_name === ONE_ORG_PER_TENANT)
229
+ throw new ConnectError(`This organization is already connected to another ${brand().productName} account. Disconnect it there first.`);
230
+ throw error;
231
+ }
232
+ },
233
+ // A new credential for the same account, e.g. a certificate made or switched to. Only
234
+ // over the credential the caller read (`replaces`): false if another write came first.
235
+ async updateProviderCredential(id, config, credential, credentialKeyId, credentialScope, replaces,
236
+ // The caller just signed in with this credential: the provider is connected.
237
+ verified = false) {
238
+ const rows = await sql `
239
+ update ${t.providers}
240
+ set config = ${sql.json(config)}, credential = ${credential},
241
+ credential_key_id = ${credentialKeyId}, credential_scope = ${credentialScope}
242
+ ${verified ? sql `, status = 'connected', checked_at = now()` : sql ``}
243
+ where id = ${id} and credential = ${replaces} returning id`;
244
+ return rows.length > 0;
245
+ },
246
+ // Only for the credential that was checked: a reconnect meanwhile keeps its own status.
247
+ async markProviderChecked(id, ok, credential) {
248
+ await sql `
249
+ update ${t.providers}
250
+ set checked_at = now(), status = ${ok ? "connected" : "needs_reconnect"}
251
+ where id = ${id} and status <> 'pending' and credential = ${credential}`;
252
+ },
253
+ // Disconnects the provider and every app signing in through it.
254
+ async removeProvider(org, provider) {
255
+ return sql.begin(async (tx) => {
256
+ await removeProviderApps(t, tx, org, provider);
257
+ const rows = await tx `
258
+ delete from ${t.providers}
259
+ where organization_id = ${org} and provider = ${provider} returning id`;
260
+ return rows.length > 0;
261
+ });
262
+ },
263
+ // Only while the row still holds `replaces` (what was read): false when a reconnect saved
264
+ // another credential meanwhile, which then stays.
265
+ async reseal(id, replaces, credential, credentialKeyId) {
266
+ const rows = await sql `
267
+ update ${t.connections}
268
+ set credential = ${credential}, credential_key_id = ${credentialKeyId}
269
+ where id = ${id} and credential = ${replaces} returning id`;
270
+ return rows.length > 0;
271
+ },
272
+ // Settings changed after connecting, e.g. the sites added one at a time. Only while the
273
+ // row still holds `replaces` (the config read): false when it changed meanwhile.
274
+ async updateConfig(org, connectorId, config, replaces) {
275
+ const rows = await sql `
276
+ update ${t.connections} set config = ${sql.json(config)}
277
+ where organization_id = ${org} and connector_id = ${connectorId}
278
+ and config = ${sql.json(replaces)} returning id`;
279
+ return rows.length > 0;
280
+ },
281
+ async markChecked(id, ok) {
282
+ await sql `
283
+ update ${t.connections}
284
+ set checked_at = now(), status = ${ok ? "connected" : "needs_reconnect"}
285
+ where id = ${id}`;
286
+ },
287
+ async setCeiling(org, connectorId, ceiling) {
288
+ return sql.begin(async (tx) => {
289
+ const rows = await tx `
290
+ update ${t.connections} set capabilities = ${tx.array(ceiling)}
291
+ where organization_id = ${org} and connector_id = ${connectorId} returning id`;
292
+ if (rows.length)
293
+ await trimGrants(t, tx, org, connectorId, ceiling);
294
+ return rows.length > 0;
295
+ });
296
+ },
297
+ async removeConnection(org, connectorId) {
298
+ return sql.begin(async (tx) => {
299
+ await clearGrants(t, tx, org, connectorId);
300
+ const rows = await tx `
301
+ delete from ${t.connections}
302
+ where organization_id = ${org} and connector_id = ${connectorId} returning id`;
303
+ return rows.length > 0;
304
+ });
305
+ },
306
+ // lastUsedAt: the agent's latest request, stamped with each audit row; null if none.
307
+ async listAgents(org) {
308
+ const agents = await sql.unsafe(`select ${AGENT_COLUMNS}, ${iso("last_used_at")} as "lastUsedAt"
309
+ from ${t.agents}
310
+ where organization_id = $1 order by created_at`, [org]);
311
+ const grants = await sql.unsafe(`select ${GRANT_COLUMNS} from ${t.grants} g
312
+ join ${t.agents} a on a.id = g.agent_id
313
+ where a.organization_id = $1
314
+ order by g.connector_id`, [org]);
315
+ return agents.map((a) => ({ ...a, grants: grants.filter((g) => g.agentId === a.id) }));
316
+ },
317
+ async createAgent(input, audit) {
318
+ // With its audit row or not at all: a key nobody was shown must not exist.
319
+ return sql.begin(async (tx) => {
320
+ const [row] = await tx.unsafe(`insert into ${t.agents} (organization_id, name, key_hash, status, created_by)
321
+ values ($1, $2, $3, 'active', $4)
322
+ on conflict (organization_id, name) do nothing
323
+ returning ${AGENT_COLUMNS}`, [input.organizationId, input.name, input.keyHash, input.createdBy]);
324
+ if (row)
325
+ await insertAudit(t, tx, audit(row));
326
+ return row ?? null;
327
+ });
328
+ },
329
+ async updateAgent(org, agentId, patch, audit) {
330
+ // With its audit row or not at all, so a failed audit never leaves a rotated key unshown.
331
+ return sql.begin(async (tx) => {
332
+ const rows = await tx `
333
+ update ${t.agents}
334
+ set status = coalesce(${patch.status ?? null}, status),
335
+ key_hash = coalesce(${patch.keyHash ?? null}, key_hash)
336
+ where id = ${agentId} and organization_id = ${org} returning id`;
337
+ if (rows.length)
338
+ await insertAudit(t, tx, audit);
339
+ return rows.length > 0;
340
+ });
341
+ },
342
+ async deleteAgent(org, agentId) {
343
+ const rows = await sql `
344
+ delete from ${t.agents}
345
+ where id = ${agentId} and organization_id = ${org} returning id`;
346
+ return rows.length > 0;
347
+ },
348
+ async agentByKeyHash(keyHash) {
349
+ const [row] = await sql.unsafe(`select ${AGENT_COLUMNS} from ${t.agents} where key_hash = $1`, [keyHash]);
350
+ return row ?? null;
351
+ },
352
+ async grantsFor(agentId) {
353
+ return sql.unsafe(`select ${GRANT_COLUMNS} from ${t.grants} g where g.agent_id = $1`, [
354
+ agentId,
355
+ ]);
356
+ },
357
+ async setGrant(org, agentId, connectorId, capabilities, limits) {
358
+ // Only within the app's ceiling as it is now: the connection row is locked, so a
359
+ // ceiling lowered meanwhile either lands first (nothing saved) or strips this grant.
360
+ const rows = await sql `
361
+ insert into ${t.grants} (agent_id, connector_id, capabilities, limits)
362
+ select a.id, ${connectorId}, ${sql.array(capabilities)}, ${sql.json(limits)}
363
+ from ${t.agents} a
364
+ join ${t.connections} c
365
+ on c.organization_id = a.organization_id and c.connector_id = ${connectorId}
366
+ where a.id = ${agentId} and a.organization_id = ${org}
367
+ and c.capabilities @> ${sql.array(capabilities)}
368
+ for share of c
369
+ on conflict (agent_id, connector_id) do update
370
+ set capabilities = excluded.capabilities, limits = excluded.limits, updated_at = now()
371
+ returning agent_id`;
372
+ return rows.length > 0;
373
+ },
374
+ async removeGrant(org, agentId, connectorId) {
375
+ const rows = await sql `
376
+ delete from ${t.grants} g using ${t.agents} a
377
+ where g.agent_id = a.id and a.id = ${agentId} and a.organization_id = ${org}
378
+ and g.connector_id = ${connectorId}
379
+ returning g.agent_id`;
380
+ return rows.length > 0;
381
+ },
382
+ async audit(entry) {
383
+ await insertAudit(t, sql, entry);
384
+ },
385
+ // Setup steps an admin marked done (the service cannot check them live).
386
+ async listConfirmed(org) {
387
+ return sql.unsafe(`select step, confirmed_by as by, ${iso("confirmed_at")} as at
388
+ from ${t.confirmed} where organization_id = $1 order by step`, [org]);
389
+ },
390
+ async setConfirmed(org, step, by, on) {
391
+ if (on)
392
+ await sql `
393
+ insert into ${t.confirmed} (organization_id, step, confirmed_by)
394
+ values (${org}, ${step}, ${by})
395
+ on conflict (organization_id, step) do nothing`;
396
+ else
397
+ await sql `
398
+ delete from ${t.confirmed}
399
+ where organization_id = ${org} and step = ${step}`;
400
+ },
401
+ async recentAudit(org, limit, filter) {
402
+ return sql.unsafe(`select ${iso("l.at")} as at, l.agent_id::text as "agentId",
403
+ coalesce(a.name, l.agent_name) as "agentName",
404
+ l.connector_id as "connectorId", l.tool, l.target, l.decision, l.reason,
405
+ l.vendor_status as "vendorStatus"
406
+ from ${t.audit} l
407
+ left join ${t.agents} a on a.id = l.agent_id
408
+ where l.organization_id = $1
409
+ and ($2::uuid is null or l.agent_id = $2::uuid)
410
+ and ($3::text is null or l.connector_id = $3)
411
+ order by l.at desc, l.id desc limit $4`, [org, filter.agentId, filter.connectorId, limit]);
412
+ },
413
+ };
414
+ }
415
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../packages/server/src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import type { ConversationRow, TriggerRow } from "./store.js";
2
+ export type Activity = {
3
+ type?: string;
4
+ id?: string;
5
+ serviceUrl?: string;
6
+ channelId?: string;
7
+ action?: string;
8
+ name?: string;
9
+ value?: unknown;
10
+ text?: string;
11
+ replyToId?: string;
12
+ conversation?: {
13
+ id?: string;
14
+ conversationType?: string;
15
+ tenantId?: string;
16
+ name?: string;
17
+ };
18
+ from?: {
19
+ id?: string;
20
+ aadObjectId?: string;
21
+ name?: string;
22
+ role?: string;
23
+ };
24
+ recipient?: {
25
+ id?: string;
26
+ name?: string;
27
+ };
28
+ membersAdded?: {
29
+ id?: string;
30
+ }[];
31
+ membersRemoved?: {
32
+ id?: string;
33
+ }[];
34
+ entities?: {
35
+ type?: string;
36
+ mentioned?: {
37
+ id?: string;
38
+ name?: string;
39
+ };
40
+ }[];
41
+ channelData?: {
42
+ tenant?: {
43
+ id?: string;
44
+ };
45
+ team?: {
46
+ id?: string;
47
+ name?: string;
48
+ aadGroupId?: string;
49
+ };
50
+ channel?: {
51
+ id?: string;
52
+ name?: string;
53
+ };
54
+ eventType?: string;
55
+ };
56
+ };
57
+ export declare const guid: (v: unknown) => string | null;
58
+ export type Place = {
59
+ conversationId: string;
60
+ kind: ConversationRow["kind"];
61
+ threadId: string;
62
+ teamId: string | null;
63
+ teamGroupId: string | null;
64
+ channelId: string | null;
65
+ name: string | null;
66
+ };
67
+ export declare function placeOf(a: Activity): Place | null;
68
+ /** Installed (true), removed (false), or neither (null): installationUpdate and
69
+ * conversationUpdate naming this bot. */
70
+ export declare function installChange(a: Activity, recipientId: string): boolean | null;
71
+ /** Teams message HTML as plain text: mentions become @Name. */
72
+ export declare function plainText(html: string): string;
73
+ export declare const newReplyToken: () => string;
74
+ export declare const hashReplyToken: (token: string) => string;
75
+ export declare const looksLikeReplyToken: (token: string) => boolean;
76
+ export type Decision = {
77
+ action: "ignore";
78
+ reason: string;
79
+ } | {
80
+ action: "limit";
81
+ reason: string;
82
+ notice: string;
83
+ } | {
84
+ action: "respond";
85
+ sender: string;
86
+ checkMember: boolean;
87
+ };
88
+ export type DecideInput = {
89
+ activity: Activity;
90
+ place: Place;
91
+ botAppId: string;
92
+ tenantId: string;
93
+ agentActive: boolean;
94
+ capabilities: string[];
95
+ limits: Record<string, string[] | string>;
96
+ trigger: TriggerRow | null;
97
+ runnerUnready: string | null;
98
+ counts: {
99
+ active: number;
100
+ lastHour: number;
101
+ spentToday: number;
102
+ };
103
+ };
104
+ /** In order, first match wins; each refusal is recorded as the reason. */
105
+ export declare function decide(input: DecideInput): Decision;
106
+ export type ThreadMessage = {
107
+ from: string;
108
+ text: string;
109
+ };
110
+ export declare const quote: (s: string) => string;
111
+ export declare function promptText(input: {
112
+ botName: string;
113
+ sender: {
114
+ name: string;
115
+ aadObjectId: string | null;
116
+ };
117
+ place: Place;
118
+ channelName: string | null;
119
+ thread: ThreadMessage[] | null;
120
+ message: string;
121
+ replyToken: string;
122
+ continuing: boolean;
123
+ }): string;