@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,507 @@
1
+ import { tables } from "../store.js";
2
+ // Postgres for Teams bots, where they are installed, the inbound queue, each agent's
3
+ // real-time settings and the sessions those started (migrations/), plus the organization's
4
+ // Claude API key.
5
+ const iso = (column) => `to_char(${column} at time zone 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')`;
6
+ const BOT = `id::text, organization_id::text as "organizationId", agent_id::text as "agentId",
7
+ bot_app_id::text as "botAppId", teams_app_id::text as "teamsAppId", tenant_id::text as "tenantId",
8
+ display_name as "displayName", manifest_version as "manifestVersion", status, config,
9
+ credential, credential_key_id as "credentialKeyId", created_by as "createdBy",
10
+ ${iso("created_at")} as "createdAt", ${iso("last_refused_at")} as "lastRefusedAt",
11
+ last_refused_reason as "lastRefusedReason"`;
12
+ const CONVERSATION = `bot_id::text as "botId", conversation_id as "conversationId", kind,
13
+ service_url as "serviceUrl", team_id as "teamId", team_group_id::text as "teamGroupId", name,
14
+ user_aad_id::text as "userAadId", ${iso("removed_at")} as "removedAt",
15
+ ${iso("limit_notice_at")} as "limitNoticeAt"`;
16
+ const TRIGGER = `agent_id::text as "agentId", enabled, runner, settings, secret,
17
+ secret_key_id as "secretKeyId", managed_agent_id as "managedAgentId",
18
+ environment_id as "environmentId", vault_ids as "vaultIds", budget_cents as "budgetCents",
19
+ max_runs_per_hour as "maxRunsPerHour", max_cents_per_day as "maxCentsPerDay",
20
+ anyone_in_organization as "anyoneInOrganization", max_concurrent as "maxConcurrent",
21
+ reply_mode as "replyMode", allowed_teams::text[] as "allowedTeams",
22
+ allowed_people::text[] as "allowedPeople", updated_by as "updatedBy",
23
+ ${iso("updated_at")} as "updatedAt"`;
24
+ const RUN = `id::text, agent_id::text as "agentId", bot_id::text as "botId",
25
+ conversation_id as "conversationId", thread_id as "threadId",
26
+ trigger_activity_id as "triggerActivityId", runner, session_id as "sessionId", state, error, note,
27
+ requested_by_aad_id::text as "requestedBy", reply_count as "replyCount",
28
+ ${iso("replied_at")} as "repliedAt", cost_cents as "costCents", turns, ${iso("started_at")} as "startedAt",
29
+ ${iso("finished_at")} as "finishedAt", ${iso("reply_token_at")} as "replyTokenAt"`;
30
+ const APPROVAL = `id::text, agent_id::text as "agentId",
31
+ bot_id::text as "botId", conversation_id as "conversationId", service_url as "serviceUrl",
32
+ thread_id as "threadId", activity_id as "activityId", approver_aad_id::text as "approverAadId",
33
+ approver_name as "approverName", title, body, facts, status,
34
+ decided_by_aad_id::text as "decidedByAadId", decided_by_name as "decidedByName",
35
+ ${iso("decided_at")} as "decidedAt", comment, ${iso("created_at")} as "createdAt",
36
+ ${iso("expires_at")} as "expiresAt", (status = 'pending' and expires_at <= now()) as expired`;
37
+ // Replies the agent may send to one message. A run still starting may reply: a runner can be
38
+ // answered before its start call returns (a webhook receiver replying in its handler).
39
+ export const MAX_REPLIES = 3;
40
+ const REPLYABLE = `state in ('starting', 'running', 'idle') and reply_token_at > now() - interval '12 hours'
41
+ and reply_count < ${MAX_REPLIES}`;
42
+ export function createTeamsStore(sql, schema) {
43
+ const t = tables(sql, schema);
44
+ return {
45
+ // ---- bots ----
46
+ async createBot(input) {
47
+ const rows = await sql `
48
+ insert into ${t.teams_bots}
49
+ (id, organization_id, agent_id, tenant_id, display_name, status, config, credential,
50
+ credential_key_id, created_by)
51
+ select ${input.id}, a.organization_id, a.id, ${input.tenantId}, ${input.displayName},
52
+ 'awaiting_setup', ${sql.json(input.config)}, ${input.credential},
53
+ ${input.credentialKeyId}, ${input.createdBy}
54
+ from ${t.agents} a
55
+ where a.id = ${input.agentId} and a.organization_id = ${input.organizationId}
56
+ on conflict (agent_id) do nothing
57
+ returning id`;
58
+ return rows.length > 0;
59
+ },
60
+ async listBots(org) {
61
+ return sql.unsafe(`select ${BOT} from ${t.teams_bots} where organization_id = $1
62
+ order by created_at`, [org]);
63
+ },
64
+ async botForAgent(org, agentId) {
65
+ const [row] = await sql.unsafe(`select ${BOT} from ${t.teams_bots}
66
+ where organization_id = $1 and agent_id = $2`, [org, agentId]);
67
+ return row ?? null;
68
+ },
69
+ async botByAppId(botAppId) {
70
+ const [row] = await sql.unsafe(`select ${BOT} from ${t.teams_bots} where bot_app_id = $1`, [botAppId]);
71
+ return row ?? null;
72
+ },
73
+ async botById(id) {
74
+ const [row] = await sql.unsafe(`select ${BOT} from ${t.teams_bots} where id = $1`, [
75
+ id,
76
+ ]);
77
+ return row ?? null;
78
+ },
79
+ // Proven by a sign-in: the bot's app id is now known. False when another bot already has
80
+ // it, or the bot changed meanwhile.
81
+ async connectBot(id, botAppId, replaces) {
82
+ try {
83
+ const rows = await sql `
84
+ update ${t.teams_bots}
85
+ set bot_app_id = ${botAppId}, status = 'connected', checked_at = now()
86
+ where id = ${id} and credential = ${replaces} returning id`;
87
+ return rows.length > 0;
88
+ }
89
+ catch (error) {
90
+ if (error.code === "23505")
91
+ return false;
92
+ throw error;
93
+ }
94
+ },
95
+ async updateBotCredential(id, config, credential, credentialKeyId, replaces) {
96
+ const rows = await sql `
97
+ update ${t.teams_bots}
98
+ set config = ${sql.json(config)}, credential = ${credential},
99
+ credential_key_id = ${credentialKeyId}
100
+ where id = ${id} and credential = ${replaces} returning id`;
101
+ return rows.length > 0;
102
+ },
103
+ // Bots and Claude keys still sealed with one of `keyIds` (the previous keys of a rotation).
104
+ async staleSealed(keyIds) {
105
+ const bots = await sql `
106
+ select id::text, organization_id::text as "organizationId", config, credential,
107
+ credential_key_id as "credentialKeyId"
108
+ from ${t.teams_bots} where credential_key_id = any(${keyIds})`;
109
+ const claudeKeys = await sql `
110
+ select id::text, organization_id::text as "organizationId", credential,
111
+ credential_key_id as "credentialKeyId"
112
+ from ${t.providers}
113
+ where provider = 'anthropic' and credential_key_id = any(${keyIds})`;
114
+ const triggers = await sql `
115
+ select t.agent_id::text as "agentId", a.organization_id::text as "organizationId",
116
+ t.secret, t.secret_key_id as "secretKeyId"
117
+ from ${t.teams_triggers} t join ${t.agents} a on a.id = t.agent_id
118
+ where t.secret_key_id = any(${keyIds})`;
119
+ return { bots, claudeKeys, triggers };
120
+ },
121
+ // Only over the secret read: one saved meanwhile wins.
122
+ async resealTriggerSecret(agentId, secret, secretKeyId, replaces) {
123
+ const rows = await sql `
124
+ update ${t.teams_triggers} set secret = ${secret}, secret_key_id = ${secretKeyId}
125
+ where agent_id = ${agentId} and secret = ${replaces} returning agent_id`;
126
+ return rows.length > 0;
127
+ },
128
+ // Only over the credential read: a key re-entered meanwhile wins.
129
+ async resealClaudeKey(id, credential, credentialKeyId, replaces) {
130
+ const rows = await sql `
131
+ update ${t.providers}
132
+ set credential = ${credential}, credential_key_id = ${credentialKeyId}
133
+ where id = ${id} and provider = 'anthropic' and credential = ${replaces} returning id`;
134
+ return rows.length > 0;
135
+ },
136
+ async markBot(id, ok) {
137
+ await sql `
138
+ update ${t.teams_bots}
139
+ set status = ${ok ? "connected" : "needs_reconnect"}, checked_at = now()
140
+ where id = ${id} and status <> 'awaiting_setup'`;
141
+ },
142
+ // Why the last request for this bot was refused, for the admin.
143
+ async refused(botAppId, reason) {
144
+ await sql `
145
+ update ${t.teams_bots}
146
+ set last_refused_at = now(), last_refused_reason = ${reason}
147
+ where bot_app_id = ${botAppId}`;
148
+ },
149
+ async deleteBot(org, agentId) {
150
+ const rows = await sql `
151
+ delete from ${t.teams_bots}
152
+ where organization_id = ${org} and agent_id = ${agentId} returning id`;
153
+ return rows.length > 0;
154
+ },
155
+ async agentState(agentId) {
156
+ const [row] = await sql `
157
+ select a.name as "agentName", a.status as "agentStatus",
158
+ case when g.agent_id is null then null else
159
+ jsonb_build_object('capabilities', to_jsonb(g.capabilities), 'limits', g.limits)
160
+ end as grant,
161
+ case when c.id is null then null else
162
+ jsonb_build_object('capabilities', to_jsonb(c.capabilities), 'status', c.status)
163
+ end as connection
164
+ from ${t.agents} a
165
+ left join ${t.grants} g
166
+ on g.agent_id = a.id and g.connector_id = 'teams'
167
+ left join ${t.connections} c
168
+ on c.organization_id = a.organization_id and c.connector_id = 'teams'
169
+ where a.id = ${agentId}`;
170
+ return row ?? null;
171
+ },
172
+ // ---- conversations ----
173
+ async upsertConversation(row) {
174
+ await sql `
175
+ insert into ${t.teams_conversations} as c
176
+ (bot_id, conversation_id, kind, service_url, team_id, team_group_id, name, user_aad_id)
177
+ values (${row.botId}, ${row.conversationId}, ${row.kind}, ${row.serviceUrl}, ${row.teamId},
178
+ ${row.teamGroupId}, ${row.name}, ${row.userAadId})
179
+ on conflict (bot_id, conversation_id) do update set
180
+ kind = excluded.kind, service_url = excluded.service_url,
181
+ team_id = coalesce(excluded.team_id, c.team_id),
182
+ team_group_id = coalesce(excluded.team_group_id, c.team_group_id),
183
+ name = coalesce(excluded.name, c.name),
184
+ user_aad_id = coalesce(excluded.user_aad_id, c.user_aad_id),
185
+ removed_at = null`;
186
+ },
187
+ async removeConversation(botId, conversationId) {
188
+ await sql `
189
+ update ${t.teams_conversations} set removed_at = now()
190
+ where bot_id = ${botId} and conversation_id = ${conversationId} and removed_at is null`;
191
+ },
192
+ async conversations(botId) {
193
+ return sql.unsafe(`select ${CONVERSATION} from ${t.teams_conversations}
194
+ where bot_id = $1 and removed_at is null order by installed_at`, [botId]);
195
+ },
196
+ async conversationsOf(botIds) {
197
+ if (!botIds.length)
198
+ return [];
199
+ return sql.unsafe(`select ${CONVERSATION} from ${t.teams_conversations}
200
+ where bot_id = any($1::uuid[]) and removed_at is null order by installed_at`, [botIds]);
201
+ },
202
+ // True when no notice was sent there in the last hour (and records this one).
203
+ async claimLimitNotice(botId, conversationId) {
204
+ const rows = await sql `
205
+ update ${t.teams_conversations} set limit_notice_at = now()
206
+ where bot_id = ${botId} and conversation_id = ${conversationId}
207
+ and (limit_notice_at is null or limit_notice_at < now() - interval '1 hour')
208
+ returning bot_id`;
209
+ return rows.length > 0;
210
+ },
211
+ // ---- inbound queue ----
212
+ // False when Teams already delivered this activity (a retry): nothing more to do.
213
+ async insertEvent(input) {
214
+ const rows = await sql `
215
+ insert into ${t.teams_events}
216
+ (bot_id, activity_id, type, conversation_id, thread_id, from_aad_id, state, payload,
217
+ payload_key_id)
218
+ values (${input.botId}, ${input.activityId}, ${input.type}, ${input.conversationId},
219
+ ${input.threadId}, ${input.fromAadId}, 'pending', ${input.payload},
220
+ ${input.payloadKeyId})
221
+ on conflict (bot_id, activity_id) do nothing returning id`;
222
+ return rows.length > 0;
223
+ },
224
+ // The oldest pending event, or one whose worker died (claimed over 10 minutes ago). Never
225
+ // the same event to two workers.
226
+ async claimEvent() {
227
+ const [row] = await sql `
228
+ update ${t.teams_events} set state = 'processing', claimed_at = now()
229
+ where id = (
230
+ select id from ${t.teams_events}
231
+ where state = 'pending'
232
+ or (state = 'processing' and claimed_at < now() - interval '10 minutes')
233
+ order by id for update skip locked limit 1)
234
+ returning id::text, bot_id::text as "botId", activity_id as "activityId", type,
235
+ conversation_id as "conversationId", thread_id as "threadId", payload,
236
+ payload_key_id as "payloadKeyId"`;
237
+ return row ?? null;
238
+ },
239
+ // The payload (message text) is kept only while the event may still be sent on.
240
+ async finishEvent(id, state, reason) {
241
+ await sql `
242
+ update ${t.teams_events}
243
+ set state = ${state}, reason = ${reason},
244
+ payload = case when ${state} = 'held' then payload else null end,
245
+ payload_key_id = case when ${state} = 'held' then payload_key_id else null end
246
+ where id = ${id}`;
247
+ },
248
+ // Messages that arrived while their thread's session was busy go back into the queue once
249
+ // no session is active there. Returns how many.
250
+ async requeueHeld() {
251
+ const rows = await sql `
252
+ update ${t.teams_events} e set state = 'pending'
253
+ where e.state = 'held'
254
+ and not exists (select 1 from ${t.teams_runs} r
255
+ where r.bot_id = e.bot_id and r.thread_id = e.thread_id
256
+ and r.state in ('starting', 'running'))
257
+ returning e.id`;
258
+ return rows.length;
259
+ },
260
+ async pruneEvents() {
261
+ await sql `
262
+ delete from ${t.teams_events} where received_at < now() - interval '30 days'`;
263
+ },
264
+ // ---- triggers ----
265
+ async trigger(agentId) {
266
+ const [row] = await sql.unsafe(`select ${TRIGGER} from ${t.teams_triggers} where agent_id = $1`, [agentId]);
267
+ return row ?? null;
268
+ },
269
+ async setTrigger(org, row) {
270
+ const rows = await sql `
271
+ insert into ${t.teams_triggers}
272
+ (agent_id, enabled, runner, settings, secret, secret_key_id, managed_agent_id,
273
+ environment_id, vault_ids, budget_cents, max_runs_per_hour, max_cents_per_day,
274
+ max_concurrent, reply_mode, allowed_teams, allowed_people, anyone_in_organization,
275
+ updated_by)
276
+ select a.id, ${row.enabled}, ${row.runner}, ${sql.json(row.settings)},
277
+ ${row.secret}, ${row.secretKeyId}, ${row.managedAgentId}, ${row.environmentId},
278
+ ${sql.array(row.vaultIds)}, ${row.budgetCents}, ${row.maxRunsPerHour},
279
+ ${row.maxCentsPerDay}, ${row.maxConcurrent}, ${row.replyMode},
280
+ ${sql.array(row.allowedTeams)}::uuid[], ${sql.array(row.allowedPeople)}::uuid[],
281
+ ${row.anyoneInOrganization}, ${row.updatedBy}
282
+ from ${t.agents} a
283
+ where a.id = ${row.agentId} and a.organization_id = ${org}
284
+ on conflict (agent_id) do update set
285
+ enabled = excluded.enabled, runner = excluded.runner, settings = excluded.settings,
286
+ secret = excluded.secret, secret_key_id = excluded.secret_key_id,
287
+ managed_agent_id = excluded.managed_agent_id,
288
+ environment_id = excluded.environment_id, vault_ids = excluded.vault_ids,
289
+ budget_cents = excluded.budget_cents, max_runs_per_hour = excluded.max_runs_per_hour,
290
+ max_cents_per_day = excluded.max_cents_per_day,
291
+ anyone_in_organization = excluded.anyone_in_organization,
292
+ max_concurrent = excluded.max_concurrent, reply_mode = excluded.reply_mode,
293
+ allowed_teams = excluded.allowed_teams, allowed_people = excluded.allowed_people,
294
+ updated_by = excluded.updated_by, updated_at = now()
295
+ returning agent_id`;
296
+ return rows.length > 0;
297
+ },
298
+ // ---- runs ----
299
+ // Sessions running now; messages answered or tried in the last hour (each turn counts, and
300
+ // so does a start that failed); what this agent's turns cost in the last 24 hours.
301
+ async runCounts(agentId, botId) {
302
+ const [row] = await sql `
303
+ select (select count(*) from ${t.teams_runs}
304
+ where agent_id = ${agentId} and state in ('starting', 'running'))::int as active,
305
+ (select count(*) from ${t.teams_events}
306
+ where bot_id = ${botId} and state in ('run', 'failed')
307
+ and received_at > now() - interval '1 hour')::int as "lastHour",
308
+ (select coalesce(sum(cents), 0) from ${t.teams_spend}
309
+ where agent_id = ${agentId}
310
+ and spent_at > now() - interval '24 hours')::int as "spentToday"`;
311
+ return row;
312
+ },
313
+ // The thread's latest session, whatever its state.
314
+ async latestRun(botId, threadId) {
315
+ const [row] = await sql.unsafe(`select ${RUN} from ${t.teams_runs}
316
+ where bot_id = $1 and thread_id = $2 order by started_at desc limit 1`, [botId, threadId]);
317
+ return row ?? null;
318
+ },
319
+ // A new session for the thread. Null when one is already active there (unique index).
320
+ async startRun(input) {
321
+ try {
322
+ const [row] = await sql.unsafe(`insert into ${t.teams_runs}
323
+ (agent_id, bot_id, conversation_id, thread_id, trigger_activity_id, reply_token_hash,
324
+ requested_by_aad_id, runner, state)
325
+ values ($1, $2, $3, $4, $5, $6, $7, $8, 'starting') returning ${RUN}`, [
326
+ input.agentId,
327
+ input.botId,
328
+ input.conversationId,
329
+ input.threadId,
330
+ input.triggerActivityId,
331
+ input.replyTokenHash,
332
+ input.requestedBy,
333
+ input.runner,
334
+ ]);
335
+ return row;
336
+ }
337
+ catch (error) {
338
+ if (error.code === "23505")
339
+ return null;
340
+ throw error;
341
+ }
342
+ },
343
+ // The next turn in an idle session: a new reply token, for the new message. False when the
344
+ // session is no longer idle (another message got there first). It stays 'starting' until
345
+ // the message is sent, so the watcher never reads the previous turn's idle as this one's.
346
+ async continueRun(id, triggerActivityId, replyTokenHash) {
347
+ try {
348
+ const rows = await sql `
349
+ update ${t.teams_runs}
350
+ set state = 'starting', trigger_activity_id = ${triggerActivityId},
351
+ reply_token_hash = ${replyTokenHash}, reply_token_at = now(),
352
+ reply_count = 0, turns = turns + 1, finished_at = null
353
+ where id = ${id} and state = 'idle' returning id`;
354
+ return rows.length > 0;
355
+ }
356
+ catch (error) {
357
+ if (error.code === "23505")
358
+ return false;
359
+ throw error;
360
+ }
361
+ },
362
+ async updateRun(id, patch) {
363
+ const finished = patch.state && patch.state !== "running" && patch.state !== "starting";
364
+ // cost_cents is the session's total so far; its increase is this turn's spend, logged.
365
+ // prev reads the row as the statement began (one replica, so one writer per run).
366
+ await sql `
367
+ with prev as (
368
+ select cost_cents as old from ${t.teams_runs} where id = ${id}
369
+ ), updated as (
370
+ update ${t.teams_runs}
371
+ set state = coalesce(${patch.state ?? null}, state),
372
+ session_id = coalesce(${patch.sessionId ?? null}, session_id),
373
+ error = coalesce(${patch.error ?? null}, error),
374
+ note = coalesce(${patch.note ?? null}, note),
375
+ cost_cents = coalesce(${patch.costCents ?? null}, cost_cents),
376
+ finished_at = case when ${Boolean(finished)} then now() else finished_at end
377
+ where id = ${id}
378
+ returning agent_id, cost_cents
379
+ )
380
+ insert into ${t.teams_spend} (agent_id, run_id, cents)
381
+ select u.agent_id, ${id}, u.cost_cents - coalesce(p.old, 0)
382
+ from updated u, prev p
383
+ where u.cost_cents > coalesce(p.old, 0)`;
384
+ },
385
+ // Runs stuck starting (the process stopped, or a write failed, before the start finished)
386
+ // would hold their thread forever under the one-active index. Returns how many failed.
387
+ async failStaleStarts() {
388
+ const rows = await sql `
389
+ update ${t.teams_runs}
390
+ set state = 'failed', error = 'Did not start', finished_at = now()
391
+ where state = 'starting' and reply_token_at < now() - interval '10 minutes'
392
+ returning id`;
393
+ return rows.length;
394
+ },
395
+ async runningRuns() {
396
+ return sql.unsafe(`select ${RUN} from ${t.teams_runs}
397
+ where state = 'running' and session_id is not null order by started_at`);
398
+ },
399
+ // The run a reply token belongs to, only for the agent calling, while its session is live,
400
+ // and for a few replies per message. Reading it uses no reply: claimReply does.
401
+ async runForReply(agentId, tokenHash) {
402
+ const [row] = await sql.unsafe(`select ${RUN} from ${t.teams_runs}
403
+ where agent_id = $1 and reply_token_hash = $2 and ${REPLYABLE}`, [agentId, tokenHash]);
404
+ return row ?? null;
405
+ },
406
+ // Uses one of the run's replies, if it still has one and is still live.
407
+ async claimReply(agentId, runId) {
408
+ const rows = await sql.unsafe(`update ${t.teams_runs}
409
+ set reply_count = reply_count + 1, replied_at = now()
410
+ where agent_id = $1 and id = $2 and ${REPLYABLE} returning id`, [agentId, runId]);
411
+ return rows.length > 0;
412
+ },
413
+ // Gives back a reply whose post failed.
414
+ async releaseReply(runId) {
415
+ await sql `
416
+ update ${t.teams_runs} set reply_count = reply_count - 1
417
+ where id = ${runId} and reply_count > 0`;
418
+ },
419
+ async recentRuns(org, agentId, limit) {
420
+ return sql.unsafe(`select ${RUN} from ${t.teams_runs}
421
+ where agent_id = $2 and exists (select 1 from ${t.agents} a
422
+ where a.id = $2 and a.organization_id = $1)
423
+ order by started_at desc limit $3`, [org, agentId, limit]);
424
+ },
425
+ // ---- approval cards (approval.ts) ----
426
+ async createApproval(input) {
427
+ const [row] = await sql `
428
+ insert into ${t.approvals}
429
+ (agent_id, bot_id, token_hash, conversation_id, service_url,
430
+ approver_aad_id, approver_name, title, body, facts, expires_at)
431
+ select b.agent_id, b.id, ${input.tokenHash}, ${input.conversationId},
432
+ ${input.serviceUrl}, ${input.approverAadId}, ${input.approverName}, ${input.title},
433
+ ${input.body}, ${sql.json(input.facts)}, now() + make_interval(days => ${input.days})
434
+ from ${t.teams_bots} b where b.id = ${input.botId} and b.agent_id = ${input.agentId}
435
+ returning ${sql.unsafe(APPROVAL)}`;
436
+ if (!row)
437
+ throw new Error("The agent's bot is gone");
438
+ return row;
439
+ },
440
+ // Where the card was posted, so a decision can edit it. Answers the row as it now is: a
441
+ // click can land before this runs, and then only this caller can edit the card.
442
+ async approvalPosted(id, threadId, activityId) {
443
+ const [row] = await sql.unsafe(`update ${t.approvals} set thread_id = $2, activity_id = $3 where id = $1
444
+ returning ${APPROVAL}`, [id, threadId, activityId]);
445
+ return row ?? null;
446
+ },
447
+ // A card that could not be posted asks nobody.
448
+ async discardApproval(id) {
449
+ await sql `delete from ${t.approvals} where id = ${id} and status = 'pending'`;
450
+ },
451
+ // Only the agent that asked reads an approval.
452
+ async approvalForAgent(agentId, tokenHash) {
453
+ const [row] = await sql.unsafe(`select ${APPROVAL} from ${t.approvals} where agent_id = $1 and token_hash = $2`, [agentId, tokenHash]);
454
+ return row ?? null;
455
+ },
456
+ // A card's approval, only through the bot that posted it and from the place (the team or
457
+ // the chat) it was posted in, so a forwarded card or a crafted 1:1 invoke finds nothing.
458
+ async approvalForBot(botId, id, conversationId) {
459
+ const [row] = await sql.unsafe(`select ${APPROVAL} from ${t.approvals}
460
+ where bot_id = $1 and id = $2 and conversation_id = $3`, [botId, id, conversationId]);
461
+ return row ?? null;
462
+ },
463
+ // Records the answer once, and only the approver's: null when it was already answered, has
464
+ // expired, or the clicker or the place is not the card's. Every condition is checked here
465
+ // again, in the one statement that writes, whatever the caller checked before.
466
+ async decideApproval(botId, id, conversationId, decision, comment) {
467
+ const [row] = await sql.unsafe(`update ${t.approvals}
468
+ set status = $3, decided_by_aad_id = $4, decided_by_name = $5, decided_at = now(),
469
+ comment = $6
470
+ where bot_id = $1 and id = $2 and conversation_id = $7 and status = 'pending'
471
+ and expires_at > now() and approver_aad_id = $4
472
+ returning ${APPROVAL}`, [botId, id, decision.status, decision.byAadId, decision.byName, comment, conversationId]);
473
+ return row ?? null;
474
+ },
475
+ // ---- the organization's Claude API key (providers, provider anthropic) ----
476
+ async claudeKey(org) {
477
+ const [row] = await sql `
478
+ select credential, credential_key_id as "credentialKeyId", config,
479
+ connected_by as "connectedBy",
480
+ to_char(connected_at at time zone 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"') as "connectedAt"
481
+ from ${t.providers}
482
+ where organization_id = ${org} and provider = 'anthropic'`;
483
+ return row ?? null;
484
+ },
485
+ async setClaudeKey(input) {
486
+ await sql `
487
+ insert into ${t.providers}
488
+ (organization_id, provider, status, config, credential, credential_key_id,
489
+ credential_scope, account_label, connected_by)
490
+ values (${input.organizationId}, 'anthropic', 'connected', ${sql.json(input.config)},
491
+ ${input.credential}, ${input.credentialKeyId}, ${input.credentialScope},
492
+ ${input.config.workspace ?? null}, ${input.connectedBy})
493
+ on conflict (organization_id, provider) do update set
494
+ status = 'connected', config = excluded.config, credential = excluded.credential,
495
+ credential_key_id = excluded.credential_key_id,
496
+ credential_scope = excluded.credential_scope, connected_by = excluded.connected_by,
497
+ connected_at = now(), checked_at = now()`;
498
+ },
499
+ async removeClaudeKey(org) {
500
+ const rows = await sql `
501
+ delete from ${t.providers}
502
+ where organization_id = ${org} and provider = 'anthropic' returning id`;
503
+ return rows.length > 0;
504
+ },
505
+ };
506
+ }
507
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../../packages/server/src/teams/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,70 @@
1
1
  {
2
2
  "name": "@arbium/enterprise-agent-connect",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.2-dev.9022f22",
4
+ "type": "module",
5
+ "description": "Enterprise Agent Connect server: the service, its migrations and the built-in connectors",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/packages/server/src/index.d.ts",
9
+ "default": "./dist/packages/server/src/index.js"
10
+ },
11
+ "./kit": {
12
+ "types": "./dist/packages/connector-kit/src/index.d.ts",
13
+ "default": "./dist/packages/connector-kit/src/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/try-caret/enterprise-agent-connect.git"
22
+ },
23
+ "scripts": {
24
+ "dev": "tsx watch packages/server/src/server.ts",
25
+ "build": "tsc && node -e \"const fs=require('fs');fs.cpSync('packages/server/migrations','dist/packages/server/migrations',{recursive:true});fs.cpSync('connectors','dist/connectors',{recursive:true,filter:(f)=>!f.endsWith('.ts')})\"",
26
+ "start": "node dist/packages/server/src/server.js",
27
+ "check": "tsc --noEmit && tsc -p tsconfig.test.json && tsc -p packages/client --noEmit",
28
+ "test": "node --import tsx --test packages/server/test/*.test.ts packages/client/test/*.test.ts connectors/*/*.test.ts",
29
+ "openapi": "tsx scripts/openapi.ts && openapi-typescript packages/server/openapi.json -o packages/client/src/schema.ts",
30
+ "client": "npm run openapi && rm -rf packages/client/lib && tsc -p packages/client"
31
+ },
32
+ "dependencies": {
33
+ "@anthropic-ai/sdk": "^0.135.0",
34
+ "@hono/node-server": "^2.0.10",
35
+ "@modelcontextprotocol/server": "^2.0.0",
36
+ "postgres": "^3.4.9",
37
+ "zod": "^4.5.4"
38
+ },
39
+ "peerDependencies": {
40
+ "mssql": "^12.7.4",
41
+ "mysql2": "^3.24.5",
42
+ "oracledb": "^7.0.1"
43
+ },
44
+ "peerDependenciesMeta": {
45
+ "mssql": {
46
+ "optional": true
47
+ },
48
+ "mysql2": {
49
+ "optional": true
50
+ },
51
+ "oracledb": {
52
+ "optional": true
53
+ }
54
+ },
55
+ "devDependencies": {
56
+ "@types/node": "^26.1.0",
57
+ "mssql": "^12.7.4",
58
+ "mysql2": "^3.24.5",
59
+ "openapi-typescript": "7.13.0",
60
+ "oracledb": "^7.0.1",
61
+ "tsx": "^4.19.0",
62
+ "typescript": "^6.0.3"
63
+ },
64
+ "overrides": {
65
+ "openapi-typescript": {
66
+ "typescript": "$typescript"
67
+ }
68
+ },
69
+ "license": "Apache-2.0"
70
+ }