runline 0.33.0 → 0.35.0

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 (531) hide show
  1. package/dist/auth/oauth2.d.ts +7 -1
  2. package/dist/auth/oauth2.js +10 -0
  3. package/dist/auth/token.d.ts +1 -0
  4. package/dist/auth/token.js +19 -1
  5. package/dist/auth/types.d.ts +22 -1
  6. package/dist/core/engine.d.ts +7 -0
  7. package/dist/core/engine.js +21 -8
  8. package/dist/credentials/policy.d.ts +53 -1
  9. package/dist/credentials/policy.js +146 -6
  10. package/dist/credentials/registry.d.ts +9 -0
  11. package/dist/credentials/registry.js +184 -22
  12. package/dist/credentials/transport.d.ts +48 -2
  13. package/dist/credentials/transport.js +248 -70
  14. package/dist/credentials/types.d.ts +177 -10
  15. package/dist/index.d.ts +6 -5
  16. package/dist/index.js +3 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/schema.d.ts +16 -4
  20. package/dist/plugin/schema.js +28 -5
  21. package/dist/plugin/types.d.ts +20 -0
  22. package/dist/plugins/_shared/base64.js +30 -0
  23. package/dist/plugins/_shared/credentialAdapter.js +99 -15
  24. package/dist/plugins/_shared/credentials.js +416 -0
  25. package/dist/plugins/_shared/googleAuth.js +69 -39
  26. package/dist/plugins/_shared/googleCredentials.js +68 -14
  27. package/dist/plugins/_shared/localFile.js +40 -0
  28. package/dist/plugins/_shared/mediaFile.js +12 -12
  29. package/dist/plugins/_shared/microsoftAuth.js +31 -47
  30. package/dist/plugins/_shared/microsoftCredentials.js +42 -15
  31. package/dist/plugins/_shared/provider.js +2 -14
  32. package/dist/plugins/_shared/shiftCloud.js +16 -56
  33. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  34. package/dist/plugins/_shared/shiftUpload.js +14 -10
  35. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  36. package/dist/plugins/actionNetwork/src/index.js +39 -50
  37. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  38. package/dist/plugins/activeCampaign/src/index.js +61 -132
  39. package/dist/plugins/adalo/src/credentials.js +16 -0
  40. package/dist/plugins/adalo/src/index.js +19 -43
  41. package/dist/plugins/affinity/src/credentials.js +19 -0
  42. package/dist/plugins/affinity/src/index.js +29 -54
  43. package/dist/plugins/agentMail/src/credentials.js +35 -0
  44. package/dist/plugins/agentMail/src/drafts.js +137 -0
  45. package/dist/plugins/agentMail/src/inboxes.js +95 -0
  46. package/dist/plugins/agentMail/src/index.js +35 -0
  47. package/dist/plugins/agentMail/src/messages.js +154 -0
  48. package/dist/plugins/agentMail/src/schemas.js +156 -0
  49. package/dist/plugins/agentMail/src/shared.js +203 -0
  50. package/dist/plugins/agentMail/src/threads.js +75 -0
  51. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  52. package/dist/plugins/agileCrm/src/index.js +46 -112
  53. package/dist/plugins/airtable/src/credentials.js +19 -0
  54. package/dist/plugins/airtable/src/index.js +37 -50
  55. package/dist/plugins/airtop/src/credentials.js +20 -0
  56. package/dist/plugins/airtop/src/index.js +51 -75
  57. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  58. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  59. package/dist/plugins/asana/src/credentials.js +19 -0
  60. package/dist/plugins/asana/src/index.js +51 -72
  61. package/dist/plugins/autopilot/src/credentials.js +19 -0
  62. package/dist/plugins/autopilot/src/index.js +38 -45
  63. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  64. package/dist/plugins/bambooHr/src/index.js +41 -67
  65. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  66. package/dist/plugins/bannerbear/src/index.js +15 -27
  67. package/dist/plugins/baserow/src/credentials.js +17 -0
  68. package/dist/plugins/baserow/src/index.js +23 -49
  69. package/dist/plugins/beeminder/src/credentials.js +19 -0
  70. package/dist/plugins/beeminder/src/index.js +32 -54
  71. package/dist/plugins/bitly/src/credentials.js +19 -0
  72. package/dist/plugins/bitly/src/index.js +12 -26
  73. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  74. package/dist/plugins/bitwarden/src/index.js +34 -80
  75. package/dist/plugins/box/src/credentials.js +19 -0
  76. package/dist/plugins/box/src/index.js +24 -49
  77. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  78. package/dist/plugins/brandfetch/src/index.js +12 -17
  79. package/dist/plugins/brevo/src/credentials.js +19 -0
  80. package/dist/plugins/brevo/src/index.js +30 -51
  81. package/dist/plugins/bubble/src/credentials.js +28 -0
  82. package/dist/plugins/bubble/src/index.js +29 -65
  83. package/dist/plugins/chargebee/src/credentials.js +16 -0
  84. package/dist/plugins/chargebee/src/index.js +15 -45
  85. package/dist/plugins/circleci/src/credentials.js +19 -0
  86. package/dist/plugins/circleci/src/index.js +19 -39
  87. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  88. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  89. package/dist/plugins/clearbit/src/credentials.js +22 -0
  90. package/dist/plugins/clearbit/src/index.js +11 -21
  91. package/dist/plugins/clickup/src/credentials.js +19 -0
  92. package/dist/plugins/clickup/src/index.js +85 -117
  93. package/dist/plugins/clockify/src/credentials.js +19 -0
  94. package/dist/plugins/clockify/src/index.js +46 -61
  95. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  96. package/dist/plugins/cloudflare/src/index.js +19 -34
  97. package/dist/plugins/cockpit/src/credentials.js +17 -0
  98. package/dist/plugins/cockpit/src/index.js +18 -31
  99. package/dist/plugins/coda/src/credentials.js +19 -0
  100. package/dist/plugins/coda/src/index.js +33 -50
  101. package/dist/plugins/coingecko/src/credentials.js +20 -0
  102. package/dist/plugins/coingecko/src/index.js +24 -34
  103. package/dist/plugins/contentful/src/credentials.js +26 -0
  104. package/dist/plugins/contentful/src/index.js +19 -40
  105. package/dist/plugins/convertkit/src/credentials.js +26 -0
  106. package/dist/plugins/convertkit/src/index.js +27 -45
  107. package/dist/plugins/copper/src/credentials.js +17 -0
  108. package/dist/plugins/copper/src/index.js +25 -47
  109. package/dist/plugins/cortex/src/credentials.js +28 -0
  110. package/dist/plugins/cortex/src/index.js +26 -49
  111. package/dist/plugins/currents/src/credentials.js +19 -0
  112. package/dist/plugins/currents/src/index.js +46 -59
  113. package/dist/plugins/customerIo/src/credentials.js +52 -0
  114. package/dist/plugins/customerIo/src/index.js +30 -58
  115. package/dist/plugins/databricks/src/credentials.js +13 -0
  116. package/dist/plugins/databricks/src/index.js +51 -103
  117. package/dist/plugins/deepl/src/credentials.js +19 -0
  118. package/dist/plugins/deepl/src/index.js +13 -39
  119. package/dist/plugins/demio/src/credentials.js +26 -0
  120. package/dist/plugins/demio/src/index.js +17 -41
  121. package/dist/plugins/dhl/src/credentials.js +13 -0
  122. package/dist/plugins/dhl/src/index.js +8 -19
  123. package/dist/plugins/discord/src/credentials.js +19 -0
  124. package/dist/plugins/discord/src/index.js +30 -58
  125. package/dist/plugins/discourse/src/credentials.js +18 -0
  126. package/dist/plugins/discourse/src/index.js +36 -53
  127. package/dist/plugins/disqus/src/credentials.js +13 -0
  128. package/dist/plugins/disqus/src/index.js +14 -32
  129. package/dist/plugins/drift/src/credentials.js +13 -0
  130. package/dist/plugins/drift/src/index.js +16 -26
  131. package/dist/plugins/dropbox/src/credentials.js +13 -0
  132. package/dist/plugins/dropbox/src/index.js +23 -30
  133. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  134. package/dist/plugins/dropcontact/src/index.js +13 -18
  135. package/dist/plugins/egoi/src/credentials.js +19 -0
  136. package/dist/plugins/egoi/src/index.js +23 -38
  137. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  138. package/dist/plugins/elasticsearch/src/index.js +27 -48
  139. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  140. package/dist/plugins/elevenlabs/src/index.js +4 -1
  141. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  142. package/dist/plugins/elevenlabs/src/shared.js +87 -62
  143. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  144. package/dist/plugins/emelia/src/credentials.js +14 -0
  145. package/dist/plugins/emelia/src/index.js +19 -23
  146. package/dist/plugins/erpnext/src/credentials.js +27 -0
  147. package/dist/plugins/erpnext/src/index.js +21 -42
  148. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  149. package/dist/plugins/facebookGraph/src/index.js +39 -37
  150. package/dist/plugins/fal/src/credentials.js +14 -0
  151. package/dist/plugins/fal/src/index.js +5 -3
  152. package/dist/plugins/fal/src/shared.js +58 -63
  153. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  154. package/dist/plugins/freshdesk/src/index.js +25 -46
  155. package/dist/plugins/freshservice/src/credentials.js +16 -0
  156. package/dist/plugins/freshservice/src/index.js +37 -58
  157. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  158. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  159. package/dist/plugins/getresponse/src/credentials.js +22 -0
  160. package/dist/plugins/getresponse/src/index.js +20 -32
  161. package/dist/plugins/gett/src/credentials.js +64 -0
  162. package/dist/plugins/gett/src/index.js +11 -6
  163. package/dist/plugins/gett/src/login.js +24 -0
  164. package/dist/plugins/gett/src/session.js +15 -38
  165. package/dist/plugins/gett/src/shared.js +41 -84
  166. package/dist/plugins/ghost/src/credentials.js +36 -0
  167. package/dist/plugins/ghost/src/index.js +18 -59
  168. package/dist/plugins/github/src/credentials.js +18 -0
  169. package/dist/plugins/github/src/index.js +55 -78
  170. package/dist/plugins/gitlab/src/credentials.js +24 -0
  171. package/dist/plugins/gitlab/src/index.js +29 -48
  172. package/dist/plugins/gmail/src/index.js +47 -108
  173. package/dist/plugins/gong/src/credentials.js +16 -0
  174. package/dist/plugins/gong/src/index.js +16 -32
  175. package/dist/plugins/googleAppsScript/src/index.js +109 -42
  176. package/dist/plugins/googleCalendar/src/index.js +20 -51
  177. package/dist/plugins/googleContacts/src/index.js +13 -40
  178. package/dist/plugins/googleDocs/src/index.js +3 -32
  179. package/dist/plugins/googleDocs/src/shared.js +2 -1
  180. package/dist/plugins/googleDrive/src/index.js +68 -97
  181. package/dist/plugins/googleImage/src/credentials.js +14 -0
  182. package/dist/plugins/googleImage/src/index.js +15 -26
  183. package/dist/plugins/googleSheets/src/index.js +27 -60
  184. package/dist/plugins/googleSlides/src/index.js +7 -35
  185. package/dist/plugins/googleTasks/src/index.js +14 -42
  186. package/dist/plugins/gotify/src/credentials.js +32 -0
  187. package/dist/plugins/gotify/src/index.js +14 -36
  188. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  189. package/dist/plugins/gotowebinar/src/index.js +52 -69
  190. package/dist/plugins/grafana/src/credentials.js +16 -0
  191. package/dist/plugins/grafana/src/index.js +34 -53
  192. package/dist/plugins/graphql/src/credentials.js +42 -0
  193. package/dist/plugins/graphql/src/index.js +21 -46
  194. package/dist/plugins/grist/src/credentials.js +30 -0
  195. package/dist/plugins/grist/src/index.js +14 -43
  196. package/dist/plugins/halopsa/src/credentials.js +56 -0
  197. package/dist/plugins/halopsa/src/index.js +20 -47
  198. package/dist/plugins/harvest/src/credentials.js +20 -0
  199. package/dist/plugins/harvest/src/index.js +24 -43
  200. package/dist/plugins/helpscout/src/credentials.js +13 -0
  201. package/dist/plugins/helpscout/src/index.js +26 -38
  202. package/dist/plugins/highlevel/src/credentials.js +19 -0
  203. package/dist/plugins/highlevel/src/index.js +42 -65
  204. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  205. package/dist/plugins/homeAssistant/src/index.js +34 -52
  206. package/dist/plugins/hubspot/src/credentials.js +16 -0
  207. package/dist/plugins/hubspot/src/index.js +29 -41
  208. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  209. package/dist/plugins/humanticAi/src/index.js +15 -22
  210. package/dist/plugins/hunter/src/credentials.js +13 -0
  211. package/dist/plugins/hunter/src/index.js +18 -17
  212. package/dist/plugins/intercom/src/credentials.js +19 -0
  213. package/dist/plugins/intercom/src/index.js +25 -38
  214. package/dist/plugins/iterable/src/credentials.js +17 -0
  215. package/dist/plugins/iterable/src/index.js +26 -40
  216. package/dist/plugins/jenkins/src/credentials.js +16 -0
  217. package/dist/plugins/jenkins/src/index.js +22 -36
  218. package/dist/plugins/jira/src/credentials.js +16 -0
  219. package/dist/plugins/jira/src/index.js +35 -61
  220. package/dist/plugins/keap/src/credentials.js +19 -0
  221. package/dist/plugins/keap/src/index.js +43 -71
  222. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  223. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  224. package/dist/plugins/lemlist/src/credentials.js +19 -0
  225. package/dist/plugins/lemlist/src/index.js +35 -47
  226. package/dist/plugins/linear/src/attachments.js +7 -7
  227. package/dist/plugins/linear/src/comments.js +7 -7
  228. package/dist/plugins/linear/src/credentials.js +17 -0
  229. package/dist/plugins/linear/src/cycles.js +5 -5
  230. package/dist/plugins/linear/src/index.js +2 -0
  231. package/dist/plugins/linear/src/initiatives.js +6 -6
  232. package/dist/plugins/linear/src/issues.js +14 -14
  233. package/dist/plugins/linear/src/labels.js +6 -6
  234. package/dist/plugins/linear/src/organization.js +2 -2
  235. package/dist/plugins/linear/src/projects.js +12 -12
  236. package/dist/plugins/linear/src/shared.js +34 -32
  237. package/dist/plugins/linear/src/states.js +3 -3
  238. package/dist/plugins/linear/src/teams.js +4 -4
  239. package/dist/plugins/linear/src/users.js +3 -3
  240. package/dist/plugins/linear/src/views.js +5 -5
  241. package/dist/plugins/linear/src/webhooks.js +5 -5
  242. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  243. package/dist/plugins/lingvanex/src/index.js +7 -9
  244. package/dist/plugins/linkedin/src/credentials.js +17 -0
  245. package/dist/plugins/linkedin/src/index.js +13 -17
  246. package/dist/plugins/lonescale/src/credentials.js +13 -0
  247. package/dist/plugins/lonescale/src/index.js +16 -26
  248. package/dist/plugins/magento/src/credentials.js +16 -0
  249. package/dist/plugins/magento/src/index.js +67 -84
  250. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  251. package/dist/plugins/mailcheck/src/index.js +7 -9
  252. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  253. package/dist/plugins/mailchimp/src/index.js +36 -44
  254. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  255. package/dist/plugins/mailerlite/src/index.js +19 -32
  256. package/dist/plugins/mailgun/src/credentials.js +21 -0
  257. package/dist/plugins/mailgun/src/index.js +15 -21
  258. package/dist/plugins/mailjet/src/credentials.js +38 -0
  259. package/dist/plugins/mailjet/src/index.js +60 -115
  260. package/dist/plugins/mandrill/src/credentials.js +17 -0
  261. package/dist/plugins/mandrill/src/index.js +11 -12
  262. package/dist/plugins/marketstack/src/credentials.js +16 -0
  263. package/dist/plugins/marketstack/src/index.js +18 -28
  264. package/dist/plugins/matrix/src/credentials.js +19 -0
  265. package/dist/plugins/matrix/src/index.js +23 -52
  266. package/dist/plugins/mattermost/src/credentials.js +19 -0
  267. package/dist/plugins/mattermost/src/index.js +41 -73
  268. package/dist/plugins/mautic/src/credentials.js +16 -0
  269. package/dist/plugins/mautic/src/index.js +46 -62
  270. package/dist/plugins/medium/src/credentials.js +20 -0
  271. package/dist/plugins/medium/src/index.js +18 -23
  272. package/dist/plugins/messagebird/src/credentials.js +22 -0
  273. package/dist/plugins/messagebird/src/index.js +13 -18
  274. package/dist/plugins/metabase/src/credentials.js +19 -0
  275. package/dist/plugins/metabase/src/index.js +24 -40
  276. package/dist/plugins/microsoftCalendar/src/index.js +49 -18
  277. package/dist/plugins/microsoftFiles/src/index.js +95 -31
  278. package/dist/plugins/microsoftMail/src/index.js +63 -21
  279. package/dist/plugins/misp/src/credentials.js +16 -0
  280. package/dist/plugins/misp/src/index.js +60 -71
  281. package/dist/plugins/mocean/src/credentials.js +17 -0
  282. package/dist/plugins/mocean/src/index.js +11 -23
  283. package/dist/plugins/monday/src/credentials.js +14 -0
  284. package/dist/plugins/monday/src/index.js +31 -44
  285. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  286. package/dist/plugins/monicaCrm/src/index.js +25 -42
  287. package/dist/plugins/msg91/src/credentials.js +10 -0
  288. package/dist/plugins/msg91/src/index.js +15 -11
  289. package/dist/plugins/nasa/src/credentials.js +22 -0
  290. package/dist/plugins/nasa/src/index.js +24 -28
  291. package/dist/plugins/netlify/src/credentials.js +19 -0
  292. package/dist/plugins/netlify/src/index.js +27 -51
  293. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  294. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  295. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  296. package/dist/plugins/nextcloud/src/index.js +55 -109
  297. package/dist/plugins/nocodb/src/credentials.js +16 -0
  298. package/dist/plugins/nocodb/src/index.js +19 -37
  299. package/dist/plugins/notion/src/credentials.js +21 -0
  300. package/dist/plugins/notion/src/index.js +25 -38
  301. package/dist/plugins/npm/src/credentials.js +19 -0
  302. package/dist/plugins/npm/src/index.js +22 -32
  303. package/dist/plugins/odoo/src/credentials.js +21 -0
  304. package/dist/plugins/odoo/src/index.js +53 -69
  305. package/dist/plugins/okta/src/credentials.js +23 -0
  306. package/dist/plugins/okta/src/index.js +30 -35
  307. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  308. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  309. package/dist/plugins/onfleet/src/credentials.js +23 -0
  310. package/dist/plugins/onfleet/src/index.js +42 -53
  311. package/dist/plugins/openai/src/credentials.js +13 -0
  312. package/dist/plugins/openai/src/index.js +16 -24
  313. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  314. package/dist/plugins/openweathermap/src/index.js +22 -22
  315. package/dist/plugins/oura/src/credentials.js +19 -0
  316. package/dist/plugins/oura/src/index.js +13 -18
  317. package/dist/plugins/paddle/src/credentials.js +27 -0
  318. package/dist/plugins/paddle/src/index.js +20 -36
  319. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  320. package/dist/plugins/pagerduty/src/index.js +30 -39
  321. package/dist/plugins/parallel/src/credentials.js +18 -0
  322. package/dist/plugins/parallel/src/index.js +16 -22
  323. package/dist/plugins/paypal/src/credentials.js +44 -0
  324. package/dist/plugins/paypal/src/index.js +14 -40
  325. package/dist/plugins/peekalink/src/credentials.js +16 -0
  326. package/dist/plugins/peekalink/src/index.js +10 -11
  327. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  328. package/dist/plugins/phantombuster/src/index.js +19 -32
  329. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  330. package/dist/plugins/philipsHue/src/index.js +15 -27
  331. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  332. package/dist/plugins/pipedrive/src/index.js +43 -73
  333. package/dist/plugins/plaud/src/index.js +2 -1
  334. package/dist/plugins/plaud/src/shared.js +23 -19
  335. package/dist/plugins/plivo/src/credentials.js +20 -0
  336. package/dist/plugins/plivo/src/index.js +13 -19
  337. package/dist/plugins/posthog/src/credentials.js +18 -0
  338. package/dist/plugins/posthog/src/index.js +14 -20
  339. package/dist/plugins/profitwell/src/credentials.js +22 -0
  340. package/dist/plugins/profitwell/src/index.js +10 -17
  341. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  342. package/dist/plugins/pushbullet/src/index.js +19 -27
  343. package/dist/plugins/pushcut/src/credentials.js +19 -0
  344. package/dist/plugins/pushcut/src/index.js +7 -8
  345. package/dist/plugins/pushover/src/credentials.js +14 -0
  346. package/dist/plugins/pushover/src/index.js +7 -12
  347. package/dist/plugins/quickbase/src/credentials.js +15 -0
  348. package/dist/plugins/quickbase/src/index.js +24 -34
  349. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  350. package/dist/plugins/quickbooks/src/index.js +17 -46
  351. package/dist/plugins/raindrop/src/credentials.js +19 -0
  352. package/dist/plugins/raindrop/src/index.js +30 -32
  353. package/dist/plugins/recraft/src/credentials.js +13 -0
  354. package/dist/plugins/recraft/src/index.js +39 -28
  355. package/dist/plugins/reddit/src/credentials.js +26 -0
  356. package/dist/plugins/reddit/src/index.js +30 -34
  357. package/dist/plugins/replicate/src/credentials.js +23 -0
  358. package/dist/plugins/replicate/src/index.js +18 -28
  359. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  360. package/dist/plugins/rocketchat/src/index.js +8 -19
  361. package/dist/plugins/rundeck/src/credentials.js +16 -0
  362. package/dist/plugins/rundeck/src/index.js +12 -28
  363. package/dist/plugins/salesforce/src/credentials.js +73 -0
  364. package/dist/plugins/salesforce/src/index.js +6 -0
  365. package/dist/plugins/salesforce/src/metadata.js +3 -16
  366. package/dist/plugins/salesforce/src/shared.js +25 -100
  367. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  368. package/dist/plugins/salesmate/src/credentials.js +17 -0
  369. package/dist/plugins/salesmate/src/index.js +20 -37
  370. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  371. package/dist/plugins/securityScorecard/src/index.js +24 -37
  372. package/dist/plugins/segment/src/credentials.js +16 -0
  373. package/dist/plugins/segment/src/index.js +12 -16
  374. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  375. package/dist/plugins/sendgrid/src/index.js +31 -35
  376. package/dist/plugins/sendy/src/credentials.js +18 -0
  377. package/dist/plugins/sendy/src/index.js +18 -24
  378. package/dist/plugins/sentry/src/credentials.js +16 -0
  379. package/dist/plugins/sentry/src/index.js +30 -98
  380. package/dist/plugins/servicenow/src/credentials.js +13 -0
  381. package/dist/plugins/servicenow/src/index.js +22 -41
  382. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  383. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  384. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  385. package/dist/plugins/shiftBwm/src/index.js +4 -2
  386. package/dist/plugins/shiftBwm/src/shared.js +41 -16
  387. package/dist/plugins/shiftCrm/src/access.js +2 -2
  388. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  389. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  390. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  391. package/dist/plugins/shiftCrm/src/index.js +2 -0
  392. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  393. package/dist/plugins/shiftCrm/src/people.js +3 -3
  394. package/dist/plugins/shiftCrm/src/records.js +2 -2
  395. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  396. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  397. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  398. package/dist/plugins/shiftObjects/src/index.js +2 -0
  399. package/dist/plugins/shiftObjects/src/objects.js +4 -3
  400. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  401. package/dist/plugins/shiftOcr/src/index.js +14 -8
  402. package/dist/plugins/shiftPages/src/index.js +2 -0
  403. package/dist/plugins/shiftPages/src/pages.js +5 -3
  404. package/dist/plugins/shiftPages/src/shared.js +3 -1
  405. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  406. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  407. package/dist/plugins/shiftTranscription/src/transcription.js +5 -5
  408. package/dist/plugins/shiftWork/src/index.js +2 -0
  409. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  410. package/dist/plugins/shiftWork/src/issues.js +11 -7
  411. package/dist/plugins/shiftWork/src/projects.js +3 -3
  412. package/dist/plugins/shiftWork/src/shared.js +3 -1
  413. package/dist/plugins/shopify/src/credentials.js +16 -0
  414. package/dist/plugins/shopify/src/index.js +32 -59
  415. package/dist/plugins/signl4/src/credentials.js +17 -0
  416. package/dist/plugins/signl4/src/index.js +28 -29
  417. package/dist/plugins/slack/src/credentials.js +19 -0
  418. package/dist/plugins/slack/src/index.js +51 -60
  419. package/dist/plugins/sms77/src/credentials.js +17 -0
  420. package/dist/plugins/sms77/src/index.js +11 -16
  421. package/dist/plugins/splunk/src/credentials.js +19 -0
  422. package/dist/plugins/splunk/src/index.js +32 -74
  423. package/dist/plugins/spotify/src/credentials.js +19 -0
  424. package/dist/plugins/spotify/src/index.js +40 -55
  425. package/dist/plugins/stackby/src/credentials.js +13 -0
  426. package/dist/plugins/stackby/src/index.js +14 -23
  427. package/dist/plugins/steel/src/auth.js +27 -0
  428. package/dist/plugins/steel/src/browser.js +4 -3
  429. package/dist/plugins/steel/src/captchas.js +4 -3
  430. package/dist/plugins/steel/src/extensions.js +3 -2
  431. package/dist/plugins/steel/src/files.js +9 -10
  432. package/dist/plugins/steel/src/index.js +2 -0
  433. package/dist/plugins/steel/src/page/tools.js +3 -3
  434. package/dist/plugins/steel/src/profiles.js +4 -3
  435. package/dist/plugins/steel/src/sessions.js +13 -13
  436. package/dist/plugins/steel/src/shared.js +21 -51
  437. package/dist/plugins/storyblok/src/credentials.js +37 -0
  438. package/dist/plugins/storyblok/src/index.js +22 -66
  439. package/dist/plugins/strapi/src/credentials.js +71 -0
  440. package/dist/plugins/strapi/src/index.js +36 -70
  441. package/dist/plugins/strava/src/credentials.js +19 -0
  442. package/dist/plugins/strava/src/index.js +16 -33
  443. package/dist/plugins/stripe/src/credentials.js +19 -0
  444. package/dist/plugins/stripe/src/index.js +44 -58
  445. package/dist/plugins/supabase/src/credentials.js +30 -0
  446. package/dist/plugins/supabase/src/index.js +18 -40
  447. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  448. package/dist/plugins/syncromsp/src/index.js +37 -70
  449. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  450. package/dist/plugins/tapfiliate/src/index.js +21 -31
  451. package/dist/plugins/telegram/src/credentials.js +20 -0
  452. package/dist/plugins/telegram/src/index.js +31 -39
  453. package/dist/plugins/thehive/src/credentials.js +14 -0
  454. package/dist/plugins/thehive/src/index.js +33 -50
  455. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  456. package/dist/plugins/thehiveProject/src/index.js +53 -122
  457. package/dist/plugins/todoist/src/credentials.js +26 -0
  458. package/dist/plugins/todoist/src/index.js +49 -79
  459. package/dist/plugins/together/src/credentials.js +16 -0
  460. package/dist/plugins/together/src/index.js +31 -33
  461. package/dist/plugins/travisci/src/credentials.js +24 -0
  462. package/dist/plugins/travisci/src/index.js +16 -30
  463. package/dist/plugins/trello/src/credentials.js +29 -0
  464. package/dist/plugins/trello/src/index.js +49 -64
  465. package/dist/plugins/twake/src/credentials.js +16 -0
  466. package/dist/plugins/twake/src/index.js +8 -10
  467. package/dist/plugins/twilio/src/credentials.js +23 -0
  468. package/dist/plugins/twilio/src/index.js +12 -26
  469. package/dist/plugins/twist/src/credentials.js +13 -0
  470. package/dist/plugins/twist/src/index.js +32 -44
  471. package/dist/plugins/twitter/src/credentials.js +16 -0
  472. package/dist/plugins/twitter/src/index.js +25 -37
  473. package/dist/plugins/typesafe/src/credentials.js +28 -0
  474. package/dist/plugins/typesafe/src/index.js +3 -1
  475. package/dist/plugins/typesafe/src/shared.js +23 -35
  476. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  477. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  478. package/dist/plugins/uplead/src/credentials.js +16 -0
  479. package/dist/plugins/uplead/src/index.js +11 -16
  480. package/dist/plugins/uproc/src/credentials.js +14 -0
  481. package/dist/plugins/uproc/src/index.js +7 -10
  482. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  483. package/dist/plugins/uptimerobot/src/index.js +28 -39
  484. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  485. package/dist/plugins/urlscanio/src/index.js +13 -22
  486. package/dist/plugins/vercel/src/credentials.js +19 -0
  487. package/dist/plugins/vercel/src/deployments.js +27 -11
  488. package/dist/plugins/vercel/src/env.js +31 -12
  489. package/dist/plugins/vercel/src/index.js +2 -0
  490. package/dist/plugins/vercel/src/projects.js +6 -3
  491. package/dist/plugins/vercel/src/shared.js +32 -37
  492. package/dist/plugins/vero/src/credentials.js +17 -0
  493. package/dist/plugins/vero/src/index.js +18 -21
  494. package/dist/plugins/vonage/src/credentials.js +17 -0
  495. package/dist/plugins/vonage/src/index.js +14 -18
  496. package/dist/plugins/wekan/src/credentials.js +16 -0
  497. package/dist/plugins/wekan/src/index.js +33 -46
  498. package/dist/plugins/wolt/src/account.js +6 -0
  499. package/dist/plugins/wolt/src/catalog.js +2 -2
  500. package/dist/plugins/wolt/src/credentials.js +64 -0
  501. package/dist/plugins/wolt/src/index.js +8 -3
  502. package/dist/plugins/wolt/src/orders.js +2 -2
  503. package/dist/plugins/wolt/src/public.js +91 -0
  504. package/dist/plugins/wolt/src/shared.js +49 -158
  505. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  506. package/dist/plugins/woocommerce/src/index.js +19 -37
  507. package/dist/plugins/wordpress/src/credentials.js +16 -0
  508. package/dist/plugins/wordpress/src/index.js +23 -42
  509. package/dist/plugins/xai/src/credentials.js +13 -0
  510. package/dist/plugins/xai/src/index.js +32 -31
  511. package/dist/plugins/xero/src/credentials.js +17 -0
  512. package/dist/plugins/xero/src/index.js +19 -36
  513. package/dist/plugins/yourls/src/credentials.js +17 -0
  514. package/dist/plugins/yourls/src/index.js +13 -23
  515. package/dist/plugins/zammad/src/credentials.js +15 -0
  516. package/dist/plugins/zammad/src/index.js +27 -47
  517. package/dist/plugins/zendesk/src/credentials.js +26 -0
  518. package/dist/plugins/zendesk/src/index.js +29 -48
  519. package/dist/plugins/zoho/src/credentials.js +17 -0
  520. package/dist/plugins/zoho/src/index.js +18 -38
  521. package/dist/plugins/zoom/src/credentials.js +19 -0
  522. package/dist/plugins/zoom/src/index.js +15 -30
  523. package/dist/plugins/zulip/src/credentials.js +16 -0
  524. package/dist/plugins/zulip/src/index.js +36 -42
  525. package/dist/sdk.d.ts +8 -0
  526. package/dist/sdk.js +3 -0
  527. package/package.json +2 -1
  528. package/dist/plugins/_shared/authedFetch.js +0 -33
  529. package/dist/plugins/_shared/tokenRefresh.js +0 -41
  530. package/dist/tests/helpers/engine-harness.d.ts +0 -1
  531. package/dist/tests/helpers/engine-harness.js +0 -236
@@ -1,24 +1,20 @@
1
- const BASE_URL = "https://api.medium.com/v1";
2
- async function apiRequest(token, method, endpoint, body) {
3
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { mediumCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, endpoint, body) {
4
+ return credentialJson(ctx, mediumCredential, "medium", {
5
+ target: "api",
6
+ path: endpoint,
4
7
  method,
5
- headers: {
6
- Authorization: `Bearer ${token}`,
7
- "Content-Type": "application/json",
8
- Accept: "application/json",
9
- "Accept-Charset": "utf-8",
10
- },
11
- };
12
- if (body && Object.keys(body).length > 0 && method !== "GET")
13
- opts.body = JSON.stringify(body);
14
- const res = await fetch(`${BASE_URL}${endpoint}`, opts);
15
- if (!res.ok)
16
- throw new Error(`Medium API error ${res.status}: ${await res.text()}`);
17
- return res.json();
8
+ headers: { "Accept-Charset": "utf-8" },
9
+ ...(body && Object.keys(body).length > 0 && method !== "GET"
10
+ ? { json: body }
11
+ : {}),
12
+ });
18
13
  }
19
14
  export default function medium(rl) {
20
15
  rl.setName("medium");
21
16
  rl.setVersion("0.1.0");
17
+ rl.setCredential(mediumCredential);
22
18
  rl.setConnectionSchema({
23
19
  accessToken: {
24
20
  type: "string",
@@ -27,7 +23,6 @@ export default function medium(rl) {
27
23
  env: "MEDIUM_ACCESS_TOKEN",
28
24
  },
29
25
  });
30
- const tok = (ctx) => ctx.connection.config.accessToken;
31
26
  rl.registerAction("post.create", {
32
27
  access: "write",
33
28
  description: "Create a post on Medium. Posts under the authenticated user by default, or under a publication if publicationId is provided.",
@@ -95,13 +90,13 @@ export default function medium(rl) {
95
90
  if (notifyFollowers !== undefined)
96
91
  body.notifyFollowers = notifyFollowers;
97
92
  if (publicationId) {
98
- const resp = (await apiRequest(tok(ctx), "POST", `/publications/${publicationId}/posts`, body));
93
+ const resp = (await apiRequest(ctx, "POST", `publications/${pathSegment(publicationId)}/posts`, body));
99
94
  return resp.data;
100
95
  }
101
96
  // Get authenticated user ID first
102
- const me = (await apiRequest(tok(ctx), "GET", "/me"));
97
+ const me = (await apiRequest(ctx, "GET", "me"));
103
98
  const authorId = me.data.id;
104
- const resp = (await apiRequest(tok(ctx), "POST", `/users/${authorId}/posts`, body));
99
+ const resp = (await apiRequest(ctx, "POST", `users/${pathSegment(authorId)}/posts`, body));
105
100
  return resp.data;
106
101
  },
107
102
  });
@@ -111,9 +106,9 @@ export default function medium(rl) {
111
106
  inputSchema: { limit: { type: "number", required: false } },
112
107
  async execute(input, ctx) {
113
108
  const { limit } = (input ?? {});
114
- const me = (await apiRequest(tok(ctx), "GET", "/me"));
109
+ const me = (await apiRequest(ctx, "GET", "me"));
115
110
  const userId = me.data.id;
116
- const resp = (await apiRequest(tok(ctx), "GET", `/users/${userId}/publications`));
111
+ const resp = (await apiRequest(ctx, "GET", `users/${pathSegment(userId)}/publications`));
117
112
  let data = resp.data;
118
113
  if (limit)
119
114
  data = data.slice(0, limit);
@@ -124,7 +119,7 @@ export default function medium(rl) {
124
119
  access: "read",
125
120
  description: "Get the authenticated user's profile",
126
121
  async execute(_input, ctx) {
127
- const resp = (await apiRequest(tok(ctx), "GET", "/me"));
122
+ const resp = (await apiRequest(ctx, "GET", "me"));
128
123
  return resp.data;
129
124
  },
130
125
  });
@@ -0,0 +1,22 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An access key, sent as `Authorization: AccessKey {key}` to
4
+ * MessageBird's REST origin.
5
+ */
6
+ export const messagebirdCredential = staticCredential({
7
+ id: "messagebird",
8
+ auth: { kind: "apiKey", header: "Authorization", prefix: "AccessKey " },
9
+ local: { secret: "accessKey" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://rest.messagebird.com/",
13
+ methods: ["GET", "POST"],
14
+ },
15
+ },
16
+ probe: {
17
+ target: "api",
18
+ path: "balance",
19
+ method: "GET",
20
+ acceptedStatuses: [200],
21
+ },
22
+ });
@@ -1,23 +1,19 @@
1
- const BASE_URL = "https://rest.messagebird.com";
2
- async function apiRequest(accessKey, method, endpoint, body) {
3
- const opts = {
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { messagebirdCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body) {
4
+ return credentialJson(ctx, messagebirdCredential, "messagebird", {
5
+ target: "api",
6
+ path,
4
7
  method,
5
- headers: {
6
- Authorization: `AccessKey ${accessKey}`,
7
- Accept: "application/json",
8
- "Content-Type": "application/json",
9
- },
10
- };
11
- if (body && Object.keys(body).length > 0 && method !== "GET")
12
- opts.body = JSON.stringify(body);
13
- const res = await fetch(`${BASE_URL}${endpoint}`, opts);
14
- if (!res.ok)
15
- throw new Error(`MessageBird API error ${res.status}: ${await res.text()}`);
16
- return res.json();
8
+ ...(body && Object.keys(body).length > 0 && method !== "GET"
9
+ ? { json: body }
10
+ : {}),
11
+ });
17
12
  }
18
13
  export default function messagebird(rl) {
19
14
  rl.setName("messagebird");
20
15
  rl.setVersion("0.1.0");
16
+ rl.setCredential(messagebirdCredential);
21
17
  rl.setConnectionSchema({
22
18
  accessKey: {
23
19
  type: "string",
@@ -26,7 +22,6 @@ export default function messagebird(rl) {
26
22
  env: "MESSAGEBIRD_ACCESS_KEY",
27
23
  },
28
24
  });
29
- const key = (ctx) => ctx.connection.config.accessKey;
30
25
  rl.registerAction("sms.send", {
31
26
  access: "write",
32
27
  description: "Send an SMS message",
@@ -111,14 +106,14 @@ export default function messagebird(rl) {
111
106
  if (p[k] !== undefined && p[k] !== null)
112
107
  body[k] = p[k];
113
108
  }
114
- return apiRequest(key(ctx), "POST", "/messages", body);
109
+ return apiRequest(ctx, "POST", "messages", body);
115
110
  },
116
111
  });
117
112
  rl.registerAction("balance.get", {
118
113
  access: "read",
119
114
  description: "Get current account balance",
120
115
  async execute(_input, ctx) {
121
- return apiRequest(key(ctx), "GET", "/balance");
116
+ return apiRequest(ctx, "GET", "balance");
122
117
  },
123
118
  });
124
119
  }
@@ -0,0 +1,19 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /** A session token, sent as X-Metabase-Session, to the instance's own /api/. */
3
+ export const metabaseCredential = staticCredential({
4
+ id: "metabase",
5
+ auth: { kind: "apiKey", header: "X-Metabase-Session" },
6
+ local: { secret: "sessionToken" },
7
+ targets: (config) => ({
8
+ api: {
9
+ baseUrl: httpsBase(config.url, "api/"),
10
+ methods: ["GET", "POST"],
11
+ },
12
+ }),
13
+ probe: {
14
+ target: "api",
15
+ path: "user/current",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,24 +1,22 @@
1
- async function apiRequest(baseUrl, sessionToken, method, endpoint, body) {
2
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { metabaseCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, endpoint, body) {
4
+ return credentialJson(ctx, metabaseCredential, "metabase", {
5
+ target: "api",
6
+ path: endpoint,
3
7
  method,
4
- headers: {
5
- "X-Metabase-Session": sessionToken,
6
- "Content-Type": "application/json",
7
- },
8
- };
9
- if (body &&
10
- Object.keys(body).length > 0 &&
11
- method !== "GET" &&
12
- method !== "DELETE")
13
- opts.body = JSON.stringify(body);
14
- const res = await fetch(`${baseUrl}${endpoint}`, opts);
15
- if (!res.ok)
16
- throw new Error(`Metabase API error ${res.status}: ${await res.text()}`);
17
- return res.json();
8
+ ...(body &&
9
+ Object.keys(body).length > 0 &&
10
+ method !== "GET" &&
11
+ method !== "DELETE"
12
+ ? { json: body }
13
+ : {}),
14
+ });
18
15
  }
19
16
  export default function metabase(rl) {
20
17
  rl.setName("metabase");
21
18
  rl.setVersion("0.1.0");
19
+ rl.setCredential(metabaseCredential);
22
20
  rl.setConnectionSchema({
23
21
  url: {
24
22
  type: "string",
@@ -33,26 +31,20 @@ export default function metabase(rl) {
33
31
  env: "METABASE_SESSION_TOKEN",
34
32
  },
35
33
  });
36
- const conn = (ctx) => ({
37
- baseUrl: ctx.connection.config.url.replace(/\/$/, ""),
38
- token: ctx.connection.config.sessionToken,
39
- });
40
34
  // ── Question (Card) ─────────────────────────────────
41
35
  rl.registerAction("question.get", {
42
36
  access: "read",
43
37
  description: "Get a specific question/card",
44
38
  inputSchema: { questionId: { type: "number", required: true } },
45
39
  async execute(input, ctx) {
46
- const { baseUrl, token } = conn(ctx);
47
- return apiRequest(baseUrl, token, "GET", `/api/card/${input.questionId}`);
40
+ return apiRequest(ctx, "GET", `card/${pathSegment(input.questionId)}`);
48
41
  },
49
42
  });
50
43
  rl.registerAction("question.list", {
51
44
  access: "read",
52
45
  description: "List all questions/cards",
53
46
  async execute(_input, ctx) {
54
- const { baseUrl, token } = conn(ctx);
55
- return apiRequest(baseUrl, token, "GET", "/api/card/");
47
+ return apiRequest(ctx, "GET", "card/");
56
48
  },
57
49
  });
58
50
  rl.registerAction("question.getResults", {
@@ -68,8 +60,7 @@ export default function metabase(rl) {
68
60
  },
69
61
  async execute(input, ctx) {
70
62
  const { questionId, format = "json" } = input;
71
- const { baseUrl, token } = conn(ctx);
72
- return apiRequest(baseUrl, token, "POST", `/api/card/${questionId}/query/${format}`);
63
+ return apiRequest(ctx, "POST", `card/${pathSegment(questionId)}/query/${pathSegment(format)}`);
73
64
  },
74
65
  });
75
66
  // ── Alert ───────────────────────────────────────────
@@ -78,16 +69,14 @@ export default function metabase(rl) {
78
69
  description: "Get a specific alert",
79
70
  inputSchema: { alertId: { type: "number", required: true } },
80
71
  async execute(input, ctx) {
81
- const { baseUrl, token } = conn(ctx);
82
- return apiRequest(baseUrl, token, "GET", `/api/alert/${input.alertId}`);
72
+ return apiRequest(ctx, "GET", `alert/${pathSegment(input.alertId)}`);
83
73
  },
84
74
  });
85
75
  rl.registerAction("alert.list", {
86
76
  access: "read",
87
77
  description: "List all alerts",
88
78
  async execute(_input, ctx) {
89
- const { baseUrl, token } = conn(ctx);
90
- return apiRequest(baseUrl, token, "GET", "/api/alert/");
79
+ return apiRequest(ctx, "GET", "alert/");
91
80
  },
92
81
  });
93
82
  // ── Database ────────────────────────────────────────
@@ -95,8 +84,7 @@ export default function metabase(rl) {
95
84
  access: "read",
96
85
  description: "List all databases",
97
86
  async execute(_input, ctx) {
98
- const { baseUrl, token } = conn(ctx);
99
- const data = (await apiRequest(baseUrl, token, "GET", "/api/database/"));
87
+ const data = (await apiRequest(ctx, "GET", "database/"));
100
88
  return data.data;
101
89
  },
102
90
  });
@@ -105,8 +93,7 @@ export default function metabase(rl) {
105
93
  description: "Get fields from a database",
106
94
  inputSchema: { databaseId: { type: "number", required: true } },
107
95
  async execute(input, ctx) {
108
- const { baseUrl, token } = conn(ctx);
109
- return apiRequest(baseUrl, token, "GET", `/api/database/${input.databaseId}/fields`);
96
+ return apiRequest(ctx, "GET", `database/${pathSegment(input.databaseId)}/fields`);
110
97
  },
111
98
  });
112
99
  rl.registerAction("database.add", {
@@ -144,7 +131,6 @@ export default function metabase(rl) {
144
131
  },
145
132
  async execute(input, ctx) {
146
133
  const { name, engine, host, port, user, password, dbName, isFullSync = true, } = input;
147
- const { baseUrl, token } = conn(ctx);
148
134
  const details = {};
149
135
  if (host)
150
136
  details.host = host;
@@ -156,7 +142,7 @@ export default function metabase(rl) {
156
142
  details.password = password;
157
143
  if (dbName)
158
144
  details.db = dbName;
159
- return apiRequest(baseUrl, token, "POST", "/api/database", {
145
+ return apiRequest(ctx, "POST", "database", {
160
146
  name,
161
147
  engine,
162
148
  details,
@@ -170,16 +156,14 @@ export default function metabase(rl) {
170
156
  description: "Get a specific metric",
171
157
  inputSchema: { metricId: { type: "number", required: true } },
172
158
  async execute(input, ctx) {
173
- const { baseUrl, token } = conn(ctx);
174
- return apiRequest(baseUrl, token, "GET", `/api/metric/${input.metricId}`);
159
+ return apiRequest(ctx, "GET", `metric/${pathSegment(input.metricId)}`);
175
160
  },
176
161
  });
177
162
  rl.registerAction("metric.list", {
178
163
  access: "read",
179
164
  description: "List all metrics",
180
165
  async execute(_input, ctx) {
181
- const { baseUrl, token } = conn(ctx);
182
- return apiRequest(baseUrl, token, "GET", "/api/metric/");
166
+ return apiRequest(ctx, "GET", "metric/");
183
167
  },
184
168
  });
185
169
  }
@@ -1,36 +1,66 @@
1
- import { graphRequest, microsoftSetupHelp, userBase } from "../../_shared/microsoftAuth.js";
1
+ import { graphRequest, microsoftCredential, microsoftOAuth, userBase, } from "../../_shared/microsoftAuth.js";
2
2
  const NAME = "microsoftCalendar";
3
3
  const SCOPES = ["https://graph.microsoft.com/Calendars.Read"];
4
4
  export default function microsoftCalendar(rl) {
5
5
  rl.setName(NAME);
6
6
  rl.setVersion("1.0.0");
7
+ rl.setCredential(microsoftCredential(NAME, SCOPES));
7
8
  rl.setConnectionSchema({
8
- authMethod: { type: "string", required: false, description: "delegated or appOnly; legacy configs infer the method from existing credentials" },
9
- tenantId: { type: "string", required: false, env: "MS_GRAPH_TENANT_ID", description: "Entra tenant id (app-only) or omit for OAuth /common" },
10
- clientId: { type: "string", required: false, env: "MS_GRAPH_CLIENT_ID", description: "App (client) id" },
11
- clientSecret: { type: "string", required: false, env: "MS_GRAPH_CLIENT_SECRET", description: "Client secret VALUE" },
12
- refreshToken: { type: "string", required: false, env: "MICROSOFTCALENDAR_REFRESH_TOKEN", description: "OAuth2 refresh token (set by the login flow)" },
13
- userUpn: { type: "string", required: false, env: "MS_GRAPH_USER_UPN", description: "App-only only: target user UPN" },
14
- });
15
- rl.setOAuth({
16
- authUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
17
- tokenUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/token",
18
- scopes: [...SCOPES, "offline_access"],
19
- setupHelp: microsoftSetupHelp("Calendars.Read"),
9
+ authMethod: {
10
+ type: "string",
11
+ required: false,
12
+ description: "delegated or appOnly; legacy configs infer the method from existing credentials",
13
+ },
14
+ tenantId: {
15
+ type: "string",
16
+ required: false,
17
+ env: "MS_GRAPH_TENANT_ID",
18
+ description: "Entra tenant id (app-only) or omit for OAuth /common",
19
+ },
20
+ clientId: {
21
+ type: "string",
22
+ required: false,
23
+ env: "MS_GRAPH_CLIENT_ID",
24
+ description: "App (client) id",
25
+ },
26
+ clientSecret: {
27
+ type: "string",
28
+ required: false,
29
+ env: "MS_GRAPH_CLIENT_SECRET",
30
+ description: "Client secret VALUE",
31
+ },
32
+ refreshToken: {
33
+ type: "string",
34
+ required: false,
35
+ env: "MICROSOFTCALENDAR_REFRESH_TOKEN",
36
+ description: "OAuth2 refresh token (set by the login flow)",
37
+ },
38
+ userUpn: {
39
+ type: "string",
40
+ required: false,
41
+ env: "MS_GRAPH_USER_UPN",
42
+ description: "App-only only: target user UPN",
43
+ },
20
44
  });
45
+ rl.setOAuth(microsoftOAuth(SCOPES, "Calendars.Read"));
21
46
  rl.registerAction("calendar.list", {
22
47
  access: "read",
23
48
  description: "List calendar events in a date range. Returns [{id,subject,start,end,location,organizer,attendees}].",
24
49
  inputSchema: {
25
- start: { type: "string", required: true, description: "ISO start datetime, e.g. 2026-05-01T00:00:00Z" },
50
+ start: {
51
+ type: "string",
52
+ required: true,
53
+ description: "ISO start datetime, e.g. 2026-05-01T00:00:00Z",
54
+ },
26
55
  end: { type: "string", required: true, description: "ISO end datetime" },
27
56
  top: { type: "number", required: false, default: 50 },
28
57
  },
29
58
  async execute(input, ctx) {
59
+ const p = input;
30
60
  const qs = new URLSearchParams({
31
- startDateTime: input.start,
32
- endDateTime: input.end,
33
- $top: String(input.top ?? 50),
61
+ startDateTime: p.start,
62
+ endDateTime: p.end,
63
+ $top: String(p.top ?? 50),
34
64
  $select: "id,subject,start,end,location,organizer,attendees,isAllDay,webLink",
35
65
  $orderby: "start/dateTime",
36
66
  });
@@ -43,7 +73,8 @@ export default function microsoftCalendar(rl) {
43
73
  description: "Get one calendar event by id (full details incl. body).",
44
74
  inputSchema: { id: { type: "string", required: true } },
45
75
  async execute(input, ctx) {
46
- return graphRequest(ctx, NAME, SCOPES, "GET", `${userBase(ctx)}/events/${encodeURIComponent(input.id)}`);
76
+ const p = input;
77
+ return graphRequest(ctx, NAME, SCOPES, "GET", `${userBase(ctx)}/events/${encodeURIComponent(p.id)}`);
47
78
  },
48
79
  });
49
80
  }
@@ -1,4 +1,6 @@
1
- import { graphRequest, graphResponse, microsoftDownload, microsoftDriveBase, microsoftSetupHelp, } from "../../_shared/microsoftAuth.js";
1
+ import { standardBase64 } from "../../_shared/base64.js";
2
+ import { jsonAnswer, pathSegment, pathSegments, requestFailed, } from "../../_shared/credentials.js";
3
+ import { graphRequest, graphResponse, microsoftCredential, microsoftDownload, microsoftDriveBase, microsoftOAuth, } from "../../_shared/microsoftAuth.js";
2
4
  const NAME = "microsoftFiles";
3
5
  const SCOPES = [
4
6
  "https://graph.microsoft.com/Files.ReadWrite.All",
@@ -14,22 +16,57 @@ async function binaryFetch(ctx, method, path, body) {
14
16
  export default function microsoftFiles(rl) {
15
17
  rl.setName(NAME);
16
18
  rl.setVersion("1.0.0");
19
+ rl.setCredential(microsoftCredential(NAME, SCOPES));
17
20
  rl.setConnectionSchema({
18
- authMethod: { type: "string", required: false, description: "delegated or appOnly; legacy configs infer the method from existing credentials" },
19
- tenantId: { type: "string", required: false, env: "MS_GRAPH_TENANT_ID", description: "Entra tenant id (app-only) or omit for OAuth /common" },
20
- clientId: { type: "string", required: false, env: "MS_GRAPH_CLIENT_ID", description: "App (client) id" },
21
- clientSecret: { type: "string", required: false, env: "MS_GRAPH_CLIENT_SECRET", description: "Client secret VALUE" },
22
- refreshToken: { type: "string", required: false, env: "MICROSOFTFILES_REFRESH_TOKEN", description: "OAuth2 refresh token (set by the login flow)" },
23
- userUpn: { type: "string", required: false, env: "MS_GRAPH_USER_UPN", description: "App-only only: target user UPN (their OneDrive)" },
24
- siteId: { type: "string", required: false, env: "MS_SHAREPOINT_SITE_ID", description: "Optional SharePoint site id (use its default drive)" },
25
- driveId: { type: "string", required: false, env: "MS_GRAPH_DRIVE_ID", description: "Optional explicit drive id (overrides site/user)" },
26
- });
27
- rl.setOAuth({
28
- authUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
29
- tokenUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/token",
30
- scopes: [...SCOPES, "offline_access"],
31
- setupHelp: microsoftSetupHelp("Files.ReadWrite.All, Sites.ReadWrite.All"),
21
+ authMethod: {
22
+ type: "string",
23
+ required: false,
24
+ description: "delegated or appOnly; legacy configs infer the method from existing credentials",
25
+ },
26
+ tenantId: {
27
+ type: "string",
28
+ required: false,
29
+ env: "MS_GRAPH_TENANT_ID",
30
+ description: "Entra tenant id (app-only) or omit for OAuth /common",
31
+ },
32
+ clientId: {
33
+ type: "string",
34
+ required: false,
35
+ env: "MS_GRAPH_CLIENT_ID",
36
+ description: "App (client) id",
37
+ },
38
+ clientSecret: {
39
+ type: "string",
40
+ required: false,
41
+ env: "MS_GRAPH_CLIENT_SECRET",
42
+ description: "Client secret VALUE",
43
+ },
44
+ refreshToken: {
45
+ type: "string",
46
+ required: false,
47
+ env: "MICROSOFTFILES_REFRESH_TOKEN",
48
+ description: "OAuth2 refresh token (set by the login flow)",
49
+ },
50
+ userUpn: {
51
+ type: "string",
52
+ required: false,
53
+ env: "MS_GRAPH_USER_UPN",
54
+ description: "App-only only: target user UPN (their OneDrive)",
55
+ },
56
+ siteId: {
57
+ type: "string",
58
+ required: false,
59
+ env: "MS_SHAREPOINT_SITE_ID",
60
+ description: "Optional SharePoint site id (use its default drive)",
61
+ },
62
+ driveId: {
63
+ type: "string",
64
+ required: false,
65
+ env: "MS_GRAPH_DRIVE_ID",
66
+ description: "Optional explicit drive id (overrides site/user)",
67
+ },
32
68
  });
69
+ rl.setOAuth(microsoftOAuth(SCOPES, "Files.ReadWrite.All, Sites.ReadWrite.All"));
33
70
  rl.registerAction("files.search", {
34
71
  access: "read",
35
72
  description: "Search the drive for files/folders by text. Returns [{id,name,size,lastModifiedDateTime,webUrl,folder?}].",
@@ -38,9 +75,10 @@ export default function microsoftFiles(rl) {
38
75
  top: { type: "number", required: false, default: 25 },
39
76
  },
40
77
  async execute(input, ctx) {
41
- const q = encodeURIComponent(String(input.query).replace(/'/g, "''"));
78
+ const p = input;
79
+ const q = encodeURIComponent(String(p.query).replace(/'/g, "''"));
42
80
  const qs = new URLSearchParams({
43
- $top: String(input.top ?? 25),
81
+ $top: String(p.top ?? 25),
44
82
  $select: "id,name,size,lastModifiedDateTime,webUrl,folder,file",
45
83
  });
46
84
  const r = await graphRequest(ctx, NAME, SCOPES, "GET", `${driveBase(ctx)}/root/search(q='${q}')?${qs}`);
@@ -51,13 +89,20 @@ export default function microsoftFiles(rl) {
51
89
  access: "read",
52
90
  description: "List children of a folder (default the drive root, or pass folderId).",
53
91
  inputSchema: {
54
- folderId: { type: "string", required: false, description: "Folder item id; omit for root" },
92
+ folderId: {
93
+ type: "string",
94
+ required: false,
95
+ description: "Folder item id; omit for root",
96
+ },
55
97
  top: { type: "number", required: false, default: 100 },
56
98
  },
57
99
  async execute(input, ctx) {
58
- const where = input.folderId ? `/items/${encodeURIComponent(input.folderId)}/children` : "/root/children";
100
+ const p = input;
101
+ const where = p.folderId
102
+ ? `/items/${pathSegment(p.folderId)}/children`
103
+ : "/root/children";
59
104
  const qs = new URLSearchParams({
60
- $top: String(input.top ?? 100),
105
+ $top: String(p.top ?? 100),
61
106
  $select: "id,name,size,lastModifiedDateTime,webUrl,folder,file",
62
107
  });
63
108
  const r = await graphRequest(ctx, NAME, SCOPES, "GET", `${driveBase(ctx)}${where}?${qs}`);
@@ -69,7 +114,8 @@ export default function microsoftFiles(rl) {
69
114
  description: "Download a file by id. Returns {id,name,size,contentType,base64}. base64 is the file bytes.",
70
115
  inputSchema: { id: { type: "string", required: true } },
71
116
  async execute(input, ctx) {
72
- const meta = await graphRequest(ctx, NAME, SCOPES, "GET", `${driveBase(ctx)}/items/${encodeURIComponent(input.id)}`);
117
+ const p = input;
118
+ const meta = await graphRequest(ctx, NAME, SCOPES, "GET", `${driveBase(ctx)}/items/${pathSegment(p.id)}`);
73
119
  const res = await microsoftDownload(meta["@microsoft.graph.downloadUrl"]);
74
120
  if (!res.ok)
75
121
  throw new Error(`${NAME}: download failed (HTTP ${res.status})`);
@@ -87,16 +133,27 @@ export default function microsoftFiles(rl) {
87
133
  access: "write",
88
134
  description: "Upload a file (base64) to a path in the drive, e.g. a dedicated output folder. Returns the created item. For files up to ~4MB.",
89
135
  inputSchema: {
90
- path: { type: "string", required: true, description: "Drive-relative path incl. filename, e.g. 'Agent Output/report.docx'" },
91
- base64: { type: "string", required: true, description: "File content, base64-encoded" },
136
+ path: {
137
+ type: "string",
138
+ required: true,
139
+ description: "Drive-relative path incl. filename, e.g. 'Agent Output/report.docx'",
140
+ },
141
+ base64: {
142
+ type: "string",
143
+ required: true,
144
+ description: "File content, base64-encoded",
145
+ },
92
146
  },
93
147
  async execute(input, ctx) {
94
- const bytes = Buffer.from(input.base64, "base64");
95
- const p = input.path.split("/").map(encodeURIComponent).join("/");
96
- const res = await binaryFetch(ctx, "PUT", `${driveBase(ctx)}/root:/${p}:/content`, bytes);
148
+ const { path, base64 } = input;
149
+ const content = standardBase64(base64);
150
+ if (content === undefined)
151
+ throw new Error(`${NAME}: base64 is not valid base64`);
152
+ const bytes = Buffer.from(content, "base64");
153
+ const res = await binaryFetch(ctx, "PUT", `${driveBase(ctx)}/root:/${pathSegments(path)}:/content`, bytes);
97
154
  if (!res.ok)
98
- throw new Error(`${NAME}: upload failed (HTTP ${res.status})`);
99
- return JSON.parse(await res.text());
155
+ throw requestFailed(NAME, res.status);
156
+ return jsonAnswer(res);
100
157
  },
101
158
  });
102
159
  rl.registerAction("folder.create", {
@@ -104,12 +161,19 @@ export default function microsoftFiles(rl) {
104
161
  description: "Create a folder (e.g. a dedicated agent output folder) under the drive root or a parent.",
105
162
  inputSchema: {
106
163
  name: { type: "string", required: true },
107
- parentId: { type: "string", required: false, description: "Parent folder id; omit for root" },
164
+ parentId: {
165
+ type: "string",
166
+ required: false,
167
+ description: "Parent folder id; omit for root",
168
+ },
108
169
  },
109
170
  async execute(input, ctx) {
110
- const where = input.parentId ? `/items/${encodeURIComponent(input.parentId)}/children` : "/root/children";
171
+ const p = input;
172
+ const where = p.parentId
173
+ ? `/items/${pathSegment(p.parentId)}/children`
174
+ : "/root/children";
111
175
  return graphRequest(ctx, NAME, SCOPES, "POST", `${driveBase(ctx)}${where}`, {
112
- name: input.name,
176
+ name: p.name,
113
177
  folder: {},
114
178
  "@microsoft.graph.conflictBehavior": "rename",
115
179
  });