runline 0.11.6 → 0.13.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 (256) hide show
  1. package/dist/commands/actions.js +3 -1
  2. package/dist/core/engine.js +3 -0
  3. package/dist/index.d.ts +1 -1
  4. package/dist/plugin/api.d.ts +2 -1
  5. package/dist/plugin/types.d.ts +2 -0
  6. package/dist/plugins/_shared/googleSchemas.js +23 -0
  7. package/dist/plugins/actionNetwork/src/index.js +23 -0
  8. package/dist/plugins/activeCampaign/src/index.js +48 -0
  9. package/dist/plugins/adalo/src/index.js +5 -0
  10. package/dist/plugins/affinity/src/index.js +16 -0
  11. package/dist/plugins/agileCrm/src/index.js +15 -0
  12. package/dist/plugins/airtable/src/index.js +10 -0
  13. package/dist/plugins/airtop/src/index.js +24 -0
  14. package/dist/plugins/apiTemplateIo/src/index.js +4 -0
  15. package/dist/plugins/asana/src/index.js +22 -0
  16. package/dist/plugins/autopilot/src/index.js +11 -0
  17. package/dist/plugins/bambooHr/src/index.js +11 -0
  18. package/dist/plugins/bannerbear/src/index.js +4 -0
  19. package/dist/plugins/baserow/src/index.js +8 -0
  20. package/dist/plugins/beeminder/src/index.js +18 -0
  21. package/dist/plugins/bitly/src/index.js +3 -0
  22. package/dist/plugins/bitwarden/src/index.js +19 -0
  23. package/dist/plugins/box/src/index.js +11 -0
  24. package/dist/plugins/brandfetch/src/index.js +5 -0
  25. package/dist/plugins/brevo/src/index.js +15 -0
  26. package/dist/plugins/bubble/src/index.js +5 -0
  27. package/dist/plugins/chargebee/src/index.js +5 -0
  28. package/dist/plugins/circleci/src/index.js +3 -0
  29. package/dist/plugins/ciscoWebex/src/index.js +10 -0
  30. package/dist/plugins/clearbit/src/index.js +3 -0
  31. package/dist/plugins/clickup/src/index.js +61 -0
  32. package/dist/plugins/clockify/src/index.js +25 -0
  33. package/dist/plugins/cloudflare/src/index.js +4 -0
  34. package/dist/plugins/cockpit/src/index.js +5 -0
  35. package/dist/plugins/coda/src/index.js +18 -0
  36. package/dist/plugins/coingecko/src/index.js +10 -0
  37. package/dist/plugins/contentful/src/index.js +7 -0
  38. package/dist/plugins/convertkit/src/index.js +16 -0
  39. package/dist/plugins/copper/src/index.js +7 -0
  40. package/dist/plugins/cortex/src/index.js +4 -0
  41. package/dist/plugins/currents/src/index.js +22 -0
  42. package/dist/plugins/customerIo/src/index.js +9 -0
  43. package/dist/plugins/databricks/src/index.js +34 -0
  44. package/dist/plugins/deepl/src/index.js +2 -0
  45. package/dist/plugins/demio/src/index.js +4 -0
  46. package/dist/plugins/dhl/src/index.js +1 -0
  47. package/dist/plugins/discord/src/index.js +13 -0
  48. package/dist/plugins/discourse/src/index.js +16 -0
  49. package/dist/plugins/disqus/src/index.js +4 -0
  50. package/dist/plugins/docker/src/index.js +5 -0
  51. package/dist/plugins/drift/src/index.js +5 -0
  52. package/dist/plugins/dropbox/src/index.js +9 -0
  53. package/dist/plugins/dropcontact/src/index.js +2 -0
  54. package/dist/plugins/egoi/src/index.js +4 -0
  55. package/dist/plugins/elasticsearch/src/index.js +9 -0
  56. package/dist/plugins/emelia/src/index.js +9 -0
  57. package/dist/plugins/erpnext/src/index.js +5 -0
  58. package/dist/plugins/facebookGraph/src/index.js +1 -0
  59. package/dist/plugins/freshdesk/src/index.js +10 -0
  60. package/dist/plugins/freshservice/src/index.js +7 -0
  61. package/dist/plugins/freshworksCrm/src/index.js +7 -0
  62. package/dist/plugins/getresponse/src/index.js +5 -0
  63. package/dist/plugins/ghost/src/index.js +5 -0
  64. package/dist/plugins/github/src/index.js +37 -0
  65. package/dist/plugins/gitlab/src/index.js +17 -0
  66. package/dist/plugins/gmail/src/index.js +200 -184
  67. package/dist/plugins/gong/src/index.js +4 -0
  68. package/dist/plugins/googleAppsScript/src/index.js +98 -43
  69. package/dist/plugins/googleCalendar/src/index.js +329 -250
  70. package/dist/plugins/googleContacts/src/index.js +144 -145
  71. package/dist/plugins/googleDocs/src/documents.js +31 -38
  72. package/dist/plugins/googleDocs/src/formatting.js +51 -47
  73. package/dist/plugins/googleDocs/src/images.js +23 -26
  74. package/dist/plugins/googleDocs/src/shared.js +55 -0
  75. package/dist/plugins/googleDocs/src/structure.js +111 -123
  76. package/dist/plugins/googleDocs/src/tables.js +103 -154
  77. package/dist/plugins/googleDocs/src/tabs.js +27 -23
  78. package/dist/plugins/googleDocs/src/text.js +106 -136
  79. package/dist/plugins/googleDrive/src/index.js +461 -408
  80. package/dist/plugins/googleImage/src/index.js +14 -16
  81. package/dist/plugins/googleSheets/src/index.js +527 -339
  82. package/dist/plugins/googleSlides/src/index.js +92 -72
  83. package/dist/plugins/googleTasks/src/index.js +94 -92
  84. package/dist/plugins/gotify/src/index.js +3 -0
  85. package/dist/plugins/gotowebinar/src/index.js +20 -0
  86. package/dist/plugins/grafana/src/index.js +17 -0
  87. package/dist/plugins/graphql/src/index.js +2 -0
  88. package/dist/plugins/grist/src/index.js +4 -0
  89. package/dist/plugins/hackernews/src/index.js +6 -0
  90. package/dist/plugins/halopsa/src/index.js +5 -0
  91. package/dist/plugins/harvest/src/index.js +14 -0
  92. package/dist/plugins/helpscout/src/index.js +13 -0
  93. package/dist/plugins/highlevel/src/index.js +17 -0
  94. package/dist/plugins/homeAssistant/src/index.js +13 -0
  95. package/dist/plugins/hubspot/src/index.js +14 -0
  96. package/dist/plugins/humanticAi/src/index.js +3 -0
  97. package/dist/plugins/hunter/src/index.js +3 -0
  98. package/dist/plugins/intercom/src/index.js +10 -0
  99. package/dist/plugins/iterable/src/index.js +6 -0
  100. package/dist/plugins/jenkins/src/index.js +11 -0
  101. package/dist/plugins/jira/src/index.js +16 -0
  102. package/dist/plugins/keap/src/index.js +28 -0
  103. package/dist/plugins/kobotoolbox/src/index.js +17 -0
  104. package/dist/plugins/lemlist/src/index.js +15 -0
  105. package/dist/plugins/linear/src/attachments.js +6 -0
  106. package/dist/plugins/linear/src/comments.js +5 -0
  107. package/dist/plugins/linear/src/cycles.js +2 -0
  108. package/dist/plugins/linear/src/initiatives.js +5 -0
  109. package/dist/plugins/linear/src/issues.js +14 -0
  110. package/dist/plugins/linear/src/labels.js +5 -0
  111. package/dist/plugins/linear/src/organization.js +1 -0
  112. package/dist/plugins/linear/src/projects.js +11 -0
  113. package/dist/plugins/linear/src/shared.js +2 -0
  114. package/dist/plugins/linear/src/states.js +2 -0
  115. package/dist/plugins/linear/src/teams.js +3 -0
  116. package/dist/plugins/linear/src/users.js +2 -0
  117. package/dist/plugins/linear/src/views.js +4 -0
  118. package/dist/plugins/linear/src/webhooks.js +4 -0
  119. package/dist/plugins/lingvanex/src/index.js +1 -0
  120. package/dist/plugins/linkedin/src/index.js +1 -0
  121. package/dist/plugins/lonescale/src/index.js +4 -0
  122. package/dist/plugins/magento/src/index.js +15 -0
  123. package/dist/plugins/mailcheck/src/index.js +1 -0
  124. package/dist/plugins/mailchimp/src/index.js +14 -0
  125. package/dist/plugins/mailerlite/src/index.js +4 -0
  126. package/dist/plugins/mailgun/src/index.js +1 -0
  127. package/dist/plugins/mailjet/src/index.js +3 -0
  128. package/dist/plugins/mandrill/src/index.js +2 -0
  129. package/dist/plugins/marketstack/src/index.js +3 -0
  130. package/dist/plugins/matrix/src/index.js +10 -0
  131. package/dist/plugins/mattermost/src/index.js +19 -0
  132. package/dist/plugins/mautic/src/index.js +20 -0
  133. package/dist/plugins/medium/src/index.js +3 -0
  134. package/dist/plugins/messagebird/src/index.js +2 -0
  135. package/dist/plugins/metabase/src/index.js +10 -0
  136. package/dist/plugins/microsoftCalendar/src/index.js +2 -0
  137. package/dist/plugins/microsoftFiles/src/index.js +5 -0
  138. package/dist/plugins/microsoftMail/src/index.js +4 -0
  139. package/dist/plugins/misp/src/index.js +44 -0
  140. package/dist/plugins/mocean/src/index.js +2 -0
  141. package/dist/plugins/monday/src/index.js +18 -0
  142. package/dist/plugins/monicaCrm/src/index.js +5 -0
  143. package/dist/plugins/msg91/src/index.js +1 -0
  144. package/dist/plugins/nasa/src/index.js +7 -0
  145. package/dist/plugins/netlify/src/index.js +7 -0
  146. package/dist/plugins/netscalerAdc/src/index.js +3 -0
  147. package/dist/plugins/nextcloud/src/index.js +13 -0
  148. package/dist/plugins/nocodb/src/index.js +5 -0
  149. package/dist/plugins/node/src/index.js +38 -0
  150. package/dist/plugins/notion/src/index.js +14 -0
  151. package/dist/plugins/npm/src/index.js +5 -0
  152. package/dist/plugins/odoo/src/index.js +6 -0
  153. package/dist/plugins/okta/src/index.js +5 -0
  154. package/dist/plugins/oneSimpleApi/src/index.js +10 -0
  155. package/dist/plugins/onfleet/src/index.js +24 -0
  156. package/dist/plugins/openThesaurus/src/index.js +1 -0
  157. package/dist/plugins/openai/src/index.js +1 -0
  158. package/dist/plugins/openweathermap/src/index.js +2 -0
  159. package/dist/plugins/oura/src/index.js +2 -0
  160. package/dist/plugins/paddle/src/index.js +9 -0
  161. package/dist/plugins/pagerduty/src/index.js +9 -0
  162. package/dist/plugins/parallel/src/index.js +1 -0
  163. package/dist/plugins/paypal/src/index.js +4 -0
  164. package/dist/plugins/peekalink/src/index.js +2 -0
  165. package/dist/plugins/phantombuster/src/index.js +5 -0
  166. package/dist/plugins/philipsHue/src/index.js +4 -0
  167. package/dist/plugins/pipedrive/src/index.js +14 -0
  168. package/dist/plugins/plivo/src/index.js +3 -0
  169. package/dist/plugins/postbin/src/index.js +6 -0
  170. package/dist/plugins/posthog/src/index.js +5 -0
  171. package/dist/plugins/profitwell/src/index.js +2 -0
  172. package/dist/plugins/pushbullet/src/index.js +4 -0
  173. package/dist/plugins/pushcut/src/index.js +1 -0
  174. package/dist/plugins/pushover/src/index.js +1 -0
  175. package/dist/plugins/quickbase/src/index.js +8 -0
  176. package/dist/plugins/quickbooks/src/index.js +5 -0
  177. package/dist/plugins/quickchart/src/index.js +1 -0
  178. package/dist/plugins/raindrop/src/index.js +13 -0
  179. package/dist/plugins/recraft/src/index.js +1 -0
  180. package/dist/plugins/reddit/src/index.js +10 -0
  181. package/dist/plugins/replicate/src/index.js +1 -0
  182. package/dist/plugins/rocketchat/src/index.js +1 -0
  183. package/dist/plugins/rundeck/src/index.js +2 -0
  184. package/dist/plugins/salesforce/src/metadata.js +4 -0
  185. package/dist/plugins/salesforce/src/query.js +5 -0
  186. package/dist/plugins/salesforce/src/sobjects.js +12 -0
  187. package/dist/plugins/salesmate/src/index.js +5 -0
  188. package/dist/plugins/securityScorecard/src/index.js +14 -0
  189. package/dist/plugins/segment/src/index.js +4 -0
  190. package/dist/plugins/sendgrid/src/index.js +10 -0
  191. package/dist/plugins/sendy/src/index.js +6 -0
  192. package/dist/plugins/sentry/src/index.js +24 -0
  193. package/dist/plugins/servicenow/src/index.js +10 -0
  194. package/dist/plugins/shiftLabs/src/index.js +6 -0
  195. package/dist/plugins/shiftLabs/src/issues.js +4 -0
  196. package/dist/plugins/shiftLabs/src/pages.js +10 -0
  197. package/dist/plugins/shiftLabs/src/shared.js +2 -0
  198. package/dist/plugins/shiftLabs/src/transcription.js +203 -0
  199. package/dist/plugins/shopify/src/index.js +10 -0
  200. package/dist/plugins/signl4/src/index.js +2 -0
  201. package/dist/plugins/slack/src/index.js +38 -0
  202. package/dist/plugins/sms77/src/index.js +2 -0
  203. package/dist/plugins/splunk/src/index.js +16 -0
  204. package/dist/plugins/spotify/src/index.js +30 -0
  205. package/dist/plugins/stackby/src/index.js +4 -0
  206. package/dist/plugins/steel/src/browser.js +7 -0
  207. package/dist/plugins/steel/src/captchas.js +3 -0
  208. package/dist/plugins/steel/src/credentials.js +4 -0
  209. package/dist/plugins/steel/src/extensions.js +5 -0
  210. package/dist/plugins/steel/src/files.js +10 -0
  211. package/dist/plugins/steel/src/profiles.js +4 -0
  212. package/dist/plugins/steel/src/sessions.js +11 -0
  213. package/dist/plugins/storyblok/src/index.js +7 -0
  214. package/dist/plugins/strapi/src/index.js +5 -0
  215. package/dist/plugins/strava/src/index.js +6 -0
  216. package/dist/plugins/stripe/src/index.js +20 -0
  217. package/dist/plugins/supabase/src/index.js +5 -0
  218. package/dist/plugins/syncromsp/src/index.js +20 -0
  219. package/dist/plugins/tapfiliate/src/index.js +11 -0
  220. package/dist/plugins/telegram/src/index.js +21 -0
  221. package/dist/plugins/thehive/src/index.js +23 -0
  222. package/dist/plugins/thehiveProject/src/index.js +31 -0
  223. package/dist/plugins/todoist/src/index.js +31 -0
  224. package/dist/plugins/together/src/index.js +1 -0
  225. package/dist/plugins/travisci/src/index.js +5 -0
  226. package/dist/plugins/trello/src/index.js +37 -0
  227. package/dist/plugins/twake/src/index.js +1 -0
  228. package/dist/plugins/twilio/src/index.js +2 -0
  229. package/dist/plugins/twist/src/index.js +22 -0
  230. package/dist/plugins/twitter/src/index.js +8 -0
  231. package/dist/plugins/unleashedSoftware/src/index.js +3 -0
  232. package/dist/plugins/uplead/src/index.js +2 -0
  233. package/dist/plugins/uproc/src/index.js +1 -0
  234. package/dist/plugins/uptimerobot/src/index.js +22 -0
  235. package/dist/plugins/urlscanio/src/index.js +3 -0
  236. package/dist/plugins/vercel/src/account.js +1 -0
  237. package/dist/plugins/vercel/src/deployments.js +5 -0
  238. package/dist/plugins/vercel/src/env.js +4 -0
  239. package/dist/plugins/vercel/src/projects.js +2 -0
  240. package/dist/plugins/vercel/src/shared.js +1 -0
  241. package/dist/plugins/vero/src/index.js +6 -0
  242. package/dist/plugins/vonage/src/index.js +1 -0
  243. package/dist/plugins/wekan/src/index.js +24 -0
  244. package/dist/plugins/woocommerce/src/index.js +5 -0
  245. package/dist/plugins/wordpress/src/index.js +10 -0
  246. package/dist/plugins/xai/src/index.js +1 -0
  247. package/dist/plugins/xero/src/index.js +8 -0
  248. package/dist/plugins/yourls/src/index.js +3 -0
  249. package/dist/plugins/zammad/src/index.js +12 -0
  250. package/dist/plugins/zendesk/src/index.js +18 -0
  251. package/dist/plugins/zoho/src/index.js +6 -0
  252. package/dist/plugins/zoom/src/index.js +5 -0
  253. package/dist/plugins/zulip/src/index.js +15 -0
  254. package/dist/sdk.d.ts +2 -1
  255. package/dist/sdk.js +1 -0
  256. package/package.json +1 -1
@@ -53,6 +53,7 @@ export default function gotowebinar(rl) {
53
53
  });
54
54
  // ── Webinar ─────────────────────────────────────────
55
55
  rl.registerAction("webinar.create", {
56
+ access: "write",
56
57
  description: "Create a webinar",
57
58
  inputSchema: {
58
59
  subject: {
@@ -98,6 +99,7 @@ export default function gotowebinar(rl) {
98
99
  },
99
100
  });
100
101
  rl.registerAction("webinar.get", {
102
+ access: "read",
101
103
  description: "Get a webinar",
102
104
  inputSchema: {
103
105
  webinarKey: {
@@ -112,6 +114,7 @@ export default function gotowebinar(rl) {
112
114
  },
113
115
  });
114
116
  rl.registerAction("webinar.list", {
117
+ access: "read",
115
118
  description: "List webinars",
116
119
  inputSchema: {
117
120
  limit: { type: "number", required: false, description: "Max results" },
@@ -126,6 +129,7 @@ export default function gotowebinar(rl) {
126
129
  },
127
130
  });
128
131
  rl.registerAction("webinar.update", {
132
+ access: "write",
129
133
  description: "Update a webinar",
130
134
  inputSchema: {
131
135
  webinarKey: {
@@ -162,6 +166,7 @@ export default function gotowebinar(rl) {
162
166
  },
163
167
  });
164
168
  rl.registerAction("webinar.delete", {
169
+ access: "write",
165
170
  description: "Delete a webinar",
166
171
  inputSchema: {
167
172
  webinarKey: {
@@ -187,6 +192,7 @@ export default function gotowebinar(rl) {
187
192
  });
188
193
  // ── Registrant ──────────────────────────────────────
189
194
  rl.registerAction("registrant.create", {
195
+ access: "write",
190
196
  description: "Register a person for a webinar",
191
197
  inputSchema: {
192
198
  webinarKey: {
@@ -205,6 +211,7 @@ export default function gotowebinar(rl) {
205
211
  },
206
212
  });
207
213
  rl.registerAction("registrant.get", {
214
+ access: "read",
208
215
  description: "Get a registrant",
209
216
  inputSchema: {
210
217
  webinarKey: {
@@ -225,6 +232,7 @@ export default function gotowebinar(rl) {
225
232
  },
226
233
  });
227
234
  rl.registerAction("registrant.list", {
235
+ access: "read",
228
236
  description: "List registrants for a webinar",
229
237
  inputSchema: {
230
238
  webinarKey: {
@@ -239,6 +247,7 @@ export default function gotowebinar(rl) {
239
247
  },
240
248
  });
241
249
  rl.registerAction("registrant.delete", {
250
+ access: "write",
242
251
  description: "Delete a registrant",
243
252
  inputSchema: {
244
253
  webinarKey: {
@@ -261,6 +270,7 @@ export default function gotowebinar(rl) {
261
270
  });
262
271
  // ── Session ─────────────────────────────────────────
263
272
  rl.registerAction("session.get", {
273
+ access: "read",
264
274
  description: "Get a session",
265
275
  inputSchema: {
266
276
  webinarKey: {
@@ -281,6 +291,7 @@ export default function gotowebinar(rl) {
281
291
  },
282
292
  });
283
293
  rl.registerAction("session.list", {
294
+ access: "read",
284
295
  description: "List sessions for a webinar",
285
296
  inputSchema: {
286
297
  webinarKey: {
@@ -295,6 +306,7 @@ export default function gotowebinar(rl) {
295
306
  },
296
307
  });
297
308
  rl.registerAction("session.getPerformance", {
309
+ access: "read",
298
310
  description: "Get session performance details",
299
311
  inputSchema: {
300
312
  webinarKey: {
@@ -316,6 +328,7 @@ export default function gotowebinar(rl) {
316
328
  });
317
329
  // ── Attendee ────────────────────────────────────────
318
330
  rl.registerAction("attendee.get", {
331
+ access: "read",
319
332
  description: "Get an attendee",
320
333
  inputSchema: {
321
334
  webinarKey: {
@@ -341,6 +354,7 @@ export default function gotowebinar(rl) {
341
354
  },
342
355
  });
343
356
  rl.registerAction("attendee.list", {
357
+ access: "read",
344
358
  description: "List attendees for a session",
345
359
  inputSchema: {
346
360
  webinarKey: {
@@ -362,6 +376,7 @@ export default function gotowebinar(rl) {
362
376
  });
363
377
  // ── Coorganizer ─────────────────────────────────────
364
378
  rl.registerAction("coorganizer.create", {
379
+ access: "write",
365
380
  description: "Add a co-organizer to a webinar",
366
381
  inputSchema: {
367
382
  webinarKey: {
@@ -404,6 +419,7 @@ export default function gotowebinar(rl) {
404
419
  },
405
420
  });
406
421
  rl.registerAction("coorganizer.list", {
422
+ access: "read",
407
423
  description: "List co-organizers",
408
424
  inputSchema: {
409
425
  webinarKey: {
@@ -418,6 +434,7 @@ export default function gotowebinar(rl) {
418
434
  },
419
435
  });
420
436
  rl.registerAction("coorganizer.delete", {
437
+ access: "write",
421
438
  description: "Remove a co-organizer",
422
439
  inputSchema: {
423
440
  webinarKey: {
@@ -448,6 +465,7 @@ export default function gotowebinar(rl) {
448
465
  });
449
466
  // ── Panelist ────────────────────────────────────────
450
467
  rl.registerAction("panelist.create", {
468
+ access: "write",
451
469
  description: "Add a panelist to a webinar",
452
470
  inputSchema: {
453
471
  webinarKey: {
@@ -465,6 +483,7 @@ export default function gotowebinar(rl) {
465
483
  },
466
484
  });
467
485
  rl.registerAction("panelist.list", {
486
+ access: "read",
468
487
  description: "List panelists",
469
488
  inputSchema: {
470
489
  webinarKey: {
@@ -479,6 +498,7 @@ export default function gotowebinar(rl) {
479
498
  },
480
499
  });
481
500
  rl.registerAction("panelist.delete", {
501
+ access: "write",
482
502
  description: "Remove a panelist",
483
503
  inputSchema: {
484
504
  webinarKey: {
@@ -55,6 +55,7 @@ export default function grafana(rl) {
55
55
  });
56
56
  // ── Dashboard ───────────────────────────────────────
57
57
  rl.registerAction("dashboard.create", {
58
+ access: "write",
58
59
  description: "Create or save a dashboard",
59
60
  inputSchema: {
60
61
  dashboard: {
@@ -83,6 +84,7 @@ export default function grafana(rl) {
83
84
  },
84
85
  });
85
86
  rl.registerAction("dashboard.get", {
87
+ access: "read",
86
88
  description: "Get a dashboard by UID",
87
89
  inputSchema: {
88
90
  uid: { type: "string", required: true, description: "Dashboard UID" },
@@ -92,6 +94,7 @@ export default function grafana(rl) {
92
94
  },
93
95
  });
94
96
  rl.registerAction("dashboard.list", {
97
+ access: "read",
95
98
  description: "Search dashboards",
96
99
  inputSchema: {
97
100
  query: { type: "string", required: false, description: "Search query" },
@@ -125,6 +128,7 @@ export default function grafana(rl) {
125
128
  },
126
129
  });
127
130
  rl.registerAction("dashboard.delete", {
131
+ access: "write",
128
132
  description: "Delete a dashboard by UID",
129
133
  inputSchema: {
130
134
  uid: { type: "string", required: true, description: "Dashboard UID" },
@@ -134,6 +138,7 @@ export default function grafana(rl) {
134
138
  },
135
139
  });
136
140
  rl.registerAction("dashboard.update", {
141
+ access: "write",
137
142
  description: "Update an existing dashboard",
138
143
  inputSchema: {
139
144
  uid: {
@@ -164,6 +169,7 @@ export default function grafana(rl) {
164
169
  });
165
170
  // ── Team ────────────────────────────────────────────
166
171
  rl.registerAction("team.create", {
172
+ access: "write",
167
173
  description: "Create a team",
168
174
  inputSchema: {
169
175
  name: { type: "string", required: true, description: "Team name" },
@@ -178,6 +184,7 @@ export default function grafana(rl) {
178
184
  },
179
185
  });
180
186
  rl.registerAction("team.get", {
187
+ access: "read",
181
188
  description: "Get a team by ID",
182
189
  inputSchema: {
183
190
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -187,6 +194,7 @@ export default function grafana(rl) {
187
194
  },
188
195
  });
189
196
  rl.registerAction("team.list", {
197
+ access: "read",
190
198
  description: "Search teams",
191
199
  inputSchema: {
192
200
  query: { type: "string", required: false, description: "Search by name" },
@@ -207,6 +215,7 @@ export default function grafana(rl) {
207
215
  },
208
216
  });
209
217
  rl.registerAction("team.update", {
218
+ access: "write",
210
219
  description: "Update a team",
211
220
  inputSchema: {
212
221
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -224,6 +233,7 @@ export default function grafana(rl) {
224
233
  },
225
234
  });
226
235
  rl.registerAction("team.delete", {
236
+ access: "write",
227
237
  description: "Delete a team",
228
238
  inputSchema: {
229
239
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -234,6 +244,7 @@ export default function grafana(rl) {
234
244
  });
235
245
  // ── Team Member ─────────────────────────────────────
236
246
  rl.registerAction("teamMember.add", {
247
+ access: "write",
237
248
  description: "Add a user to a team",
238
249
  inputSchema: {
239
250
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -245,6 +256,7 @@ export default function grafana(rl) {
245
256
  },
246
257
  });
247
258
  rl.registerAction("teamMember.remove", {
259
+ access: "write",
248
260
  description: "Remove a user from a team",
249
261
  inputSchema: {
250
262
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -260,6 +272,7 @@ export default function grafana(rl) {
260
272
  },
261
273
  });
262
274
  rl.registerAction("teamMember.list", {
275
+ access: "read",
263
276
  description: "List members of a team",
264
277
  inputSchema: {
265
278
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -270,6 +283,7 @@ export default function grafana(rl) {
270
283
  });
271
284
  // ── User (Org) ──────────────────────────────────────
272
285
  rl.registerAction("user.create", {
286
+ access: "write",
273
287
  description: "Add a user to the current organization",
274
288
  inputSchema: {
275
289
  loginOrEmail: {
@@ -289,12 +303,14 @@ export default function grafana(rl) {
289
303
  },
290
304
  });
291
305
  rl.registerAction("user.list", {
306
+ access: "read",
292
307
  description: "List users in the current organization",
293
308
  async execute(_input, ctx) {
294
309
  return gf(ctx, "GET", "/org/users");
295
310
  },
296
311
  });
297
312
  rl.registerAction("user.update", {
313
+ access: "write",
298
314
  description: "Update a user's role in the organization",
299
315
  inputSchema: {
300
316
  userId: { type: "number", required: true, description: "User ID" },
@@ -310,6 +326,7 @@ export default function grafana(rl) {
310
326
  },
311
327
  });
312
328
  rl.registerAction("user.delete", {
329
+ access: "write",
313
330
  description: "Remove a user from the organization",
314
331
  inputSchema: {
315
332
  userId: { type: "number", required: true, description: "User ID" },
@@ -21,6 +21,7 @@ export default function graphql(rl) {
21
21
  },
22
22
  });
23
23
  rl.registerAction("query", {
24
+ access: "write",
24
25
  description: "Execute a GraphQL query",
25
26
  inputSchema: {
26
27
  query: {
@@ -72,6 +73,7 @@ export default function graphql(rl) {
72
73
  },
73
74
  });
74
75
  rl.registerAction("introspect", {
76
+ access: "read",
75
77
  description: "Run an introspection query to get the schema",
76
78
  async execute(_input, ctx) {
77
79
  const cfg = ctx.connection.config;
@@ -64,6 +64,7 @@ export default function grist(rl) {
64
64
  },
65
65
  });
66
66
  rl.registerAction("record.create", {
67
+ access: "write",
67
68
  description: "Create records in a table",
68
69
  inputSchema: {
69
70
  docId: { type: "string", required: true, description: "Document ID" },
@@ -81,6 +82,7 @@ export default function grist(rl) {
81
82
  },
82
83
  });
83
84
  rl.registerAction("record.list", {
85
+ access: "read",
84
86
  description: "List records from a table",
85
87
  inputSchema: {
86
88
  docId: { type: "string", required: true, description: "Document ID" },
@@ -112,6 +114,7 @@ export default function grist(rl) {
112
114
  },
113
115
  });
114
116
  rl.registerAction("record.update", {
117
+ access: "write",
115
118
  description: "Update records in a table",
116
119
  inputSchema: {
117
120
  docId: { type: "string", required: true, description: "Document ID" },
@@ -129,6 +132,7 @@ export default function grist(rl) {
129
132
  },
130
133
  });
131
134
  rl.registerAction("record.delete", {
135
+ access: "write",
132
136
  description: "Delete records from a table",
133
137
  inputSchema: {
134
138
  docId: { type: "string", required: true, description: "Document ID" },
@@ -25,6 +25,7 @@ export default function hackernews(rl) {
25
25
  // No auth needed
26
26
  rl.setConnectionSchema({});
27
27
  rl.registerAction("article.get", {
28
+ access: "read",
28
29
  description: "Get a Hacker News article/item by ID",
29
30
  inputSchema: {
30
31
  articleId: { type: "string", required: true, description: "Item ID" },
@@ -34,6 +35,7 @@ export default function hackernews(rl) {
34
35
  },
35
36
  });
36
37
  rl.registerAction("article.search", {
38
+ access: "read",
37
39
  description: "Search Hacker News articles",
38
40
  inputSchema: {
39
41
  query: { type: "string", required: true, description: "Search query" },
@@ -56,6 +58,7 @@ export default function hackernews(rl) {
56
58
  },
57
59
  });
58
60
  rl.registerAction("user.get", {
61
+ access: "read",
59
62
  description: "Get a Hacker News user by username",
60
63
  inputSchema: {
61
64
  username: { type: "string", required: true, description: "Username" },
@@ -65,6 +68,7 @@ export default function hackernews(rl) {
65
68
  },
66
69
  });
67
70
  rl.registerAction("all.top", {
71
+ access: "read",
68
72
  description: "Get top stories",
69
73
  inputSchema: {
70
74
  limit: {
@@ -81,6 +85,7 @@ export default function hackernews(rl) {
81
85
  },
82
86
  });
83
87
  rl.registerAction("all.new", {
88
+ access: "read",
84
89
  description: "Get newest stories",
85
90
  inputSchema: {
86
91
  limit: {
@@ -97,6 +102,7 @@ export default function hackernews(rl) {
97
102
  },
98
103
  });
99
104
  rl.registerAction("all.best", {
105
+ access: "read",
100
106
  description: "Get best stories",
101
107
  inputSchema: {
102
108
  limit: {
@@ -60,6 +60,7 @@ async function req(ctx, method, endpoint, body, qs) {
60
60
  }
61
61
  function registerCrud(rl, resource, apiPath) {
62
62
  rl.registerAction(`${resource}.create`, {
63
+ access: "write",
63
64
  description: `Create a ${resource}`,
64
65
  inputSchema: {
65
66
  properties: {
@@ -75,6 +76,7 @@ function registerCrud(rl, resource, apiPath) {
75
76
  },
76
77
  });
77
78
  rl.registerAction(`${resource}.get`, {
79
+ access: "read",
78
80
  description: `Get a ${resource}`,
79
81
  inputSchema: {
80
82
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -84,6 +86,7 @@ function registerCrud(rl, resource, apiPath) {
84
86
  },
85
87
  });
86
88
  rl.registerAction(`${resource}.list`, {
89
+ access: "read",
87
90
  description: `List ${resource}s`,
88
91
  inputSchema: {
89
92
  limit: { type: "number", required: false, description: "Max results" },
@@ -100,6 +103,7 @@ function registerCrud(rl, resource, apiPath) {
100
103
  },
101
104
  });
102
105
  rl.registerAction(`${resource}.update`, {
106
+ access: "write",
103
107
  description: `Update a ${resource}`,
104
108
  inputSchema: {
105
109
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -115,6 +119,7 @@ function registerCrud(rl, resource, apiPath) {
115
119
  },
116
120
  });
117
121
  rl.registerAction(`${resource}.delete`, {
122
+ access: "write",
118
123
  description: `Delete a ${resource}`,
119
124
  inputSchema: {
120
125
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -47,6 +47,7 @@ function unwrapList(data, key) {
47
47
  }
48
48
  function registerCrud(rl, resource, apiPath, listKey) {
49
49
  rl.registerAction(`${resource}.create`, {
50
+ access: "write",
50
51
  description: `Create a ${resource}`,
51
52
  inputSchema: {
52
53
  properties: {
@@ -60,6 +61,7 @@ function registerCrud(rl, resource, apiPath, listKey) {
60
61
  },
61
62
  });
62
63
  rl.registerAction(`${resource}.get`, {
64
+ access: "read",
63
65
  description: `Get a ${resource}`,
64
66
  inputSchema: {
65
67
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -69,6 +71,7 @@ function registerCrud(rl, resource, apiPath, listKey) {
69
71
  },
70
72
  });
71
73
  rl.registerAction(`${resource}.list`, {
74
+ access: "read",
72
75
  description: `List ${resource}s`,
73
76
  inputSchema: {
74
77
  limit: { type: "number", required: false, description: "Max results" },
@@ -85,6 +88,7 @@ function registerCrud(rl, resource, apiPath, listKey) {
85
88
  },
86
89
  });
87
90
  rl.registerAction(`${resource}.update`, {
91
+ access: "write",
88
92
  description: `Update a ${resource}`,
89
93
  inputSchema: {
90
94
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -100,6 +104,7 @@ function registerCrud(rl, resource, apiPath, listKey) {
100
104
  },
101
105
  });
102
106
  rl.registerAction(`${resource}.delete`, {
107
+ access: "write",
103
108
  description: `Delete a ${resource}`,
104
109
  inputSchema: {
105
110
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -138,6 +143,7 @@ export default function harvest(rl) {
138
143
  // User (CRUD + me)
139
144
  registerCrud(rl, "user", "users", "users");
140
145
  rl.registerAction("user.me", {
146
+ access: "read",
141
147
  description: "Get the currently authenticated user",
142
148
  async execute(_input, ctx) {
143
149
  return hv(ctx, "GET", "users/me");
@@ -145,6 +151,7 @@ export default function harvest(rl) {
145
151
  });
146
152
  // Time entry (special operations)
147
153
  rl.registerAction("timeEntry.create", {
154
+ access: "write",
148
155
  description: "Create a time entry",
149
156
  inputSchema: {
150
157
  projectId: { type: "number", required: true, description: "Project ID" },
@@ -197,6 +204,7 @@ export default function harvest(rl) {
197
204
  },
198
205
  });
199
206
  rl.registerAction("timeEntry.get", {
207
+ access: "read",
200
208
  description: "Get a time entry",
201
209
  inputSchema: {
202
210
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -206,6 +214,7 @@ export default function harvest(rl) {
206
214
  },
207
215
  });
208
216
  rl.registerAction("timeEntry.list", {
217
+ access: "read",
209
218
  description: "List time entries",
210
219
  inputSchema: {
211
220
  limit: { type: "number", required: false, description: "Max results" },
@@ -251,6 +260,7 @@ export default function harvest(rl) {
251
260
  },
252
261
  });
253
262
  rl.registerAction("timeEntry.update", {
263
+ access: "write",
254
264
  description: "Update a time entry",
255
265
  inputSchema: {
256
266
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -266,6 +276,7 @@ export default function harvest(rl) {
266
276
  },
267
277
  });
268
278
  rl.registerAction("timeEntry.delete", {
279
+ access: "write",
269
280
  description: "Delete a time entry",
270
281
  inputSchema: {
271
282
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -276,6 +287,7 @@ export default function harvest(rl) {
276
287
  },
277
288
  });
278
289
  rl.registerAction("timeEntry.restart", {
290
+ access: "write",
279
291
  description: "Restart a stopped time entry",
280
292
  inputSchema: {
281
293
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -285,6 +297,7 @@ export default function harvest(rl) {
285
297
  },
286
298
  });
287
299
  rl.registerAction("timeEntry.stop", {
300
+ access: "write",
288
301
  description: "Stop a running time entry",
289
302
  inputSchema: {
290
303
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -295,6 +308,7 @@ export default function harvest(rl) {
295
308
  });
296
309
  // Company (read-only)
297
310
  rl.registerAction("company.get", {
311
+ access: "read",
298
312
  description: "Get company info",
299
313
  async execute(_input, ctx) {
300
314
  return hv(ctx, "GET", "company");
@@ -48,6 +48,7 @@ export default function helpscout(rl) {
48
48
  const tok = (ctx) => ctx.connection.config.accessToken;
49
49
  // ── Conversation ────────────────────────────────────
50
50
  rl.registerAction("conversation.create", {
51
+ access: "write",
51
52
  description: "Create a conversation",
52
53
  inputSchema: {
53
54
  subject: { type: "string", required: true, description: "Subject" },
@@ -91,6 +92,7 @@ export default function helpscout(rl) {
91
92
  },
92
93
  });
93
94
  rl.registerAction("conversation.get", {
95
+ access: "read",
94
96
  description: "Get a conversation",
95
97
  inputSchema: {
96
98
  conversationId: {
@@ -104,6 +106,7 @@ export default function helpscout(rl) {
104
106
  },
105
107
  });
106
108
  rl.registerAction("conversation.list", {
109
+ access: "read",
107
110
  description: "List conversations",
108
111
  inputSchema: {
109
112
  mailboxId: {
@@ -134,6 +137,7 @@ export default function helpscout(rl) {
134
137
  },
135
138
  });
136
139
  rl.registerAction("conversation.delete", {
140
+ access: "write",
137
141
  description: "Delete a conversation",
138
142
  inputSchema: {
139
143
  conversationId: {
@@ -149,6 +153,7 @@ export default function helpscout(rl) {
149
153
  });
150
154
  // ── Customer ────────────────────────────────────────
151
155
  rl.registerAction("customer.create", {
156
+ access: "write",
152
157
  description: "Create a customer",
153
158
  inputSchema: {
154
159
  firstName: { type: "string", required: true, description: "First name" },
@@ -173,6 +178,7 @@ export default function helpscout(rl) {
173
178
  },
174
179
  });
175
180
  rl.registerAction("customer.get", {
181
+ access: "read",
176
182
  description: "Get a customer",
177
183
  inputSchema: {
178
184
  customerId: {
@@ -186,6 +192,7 @@ export default function helpscout(rl) {
186
192
  },
187
193
  });
188
194
  rl.registerAction("customer.list", {
195
+ access: "read",
189
196
  description: "List customers",
190
197
  inputSchema: {
191
198
  limit: { type: "number", required: false, description: "Max results" },
@@ -202,6 +209,7 @@ export default function helpscout(rl) {
202
209
  },
203
210
  });
204
211
  rl.registerAction("customer.update", {
212
+ access: "write",
205
213
  description: "Update a customer",
206
214
  inputSchema: {
207
215
  customerId: {
@@ -221,6 +229,7 @@ export default function helpscout(rl) {
221
229
  },
222
230
  });
223
231
  rl.registerAction("customer.getProperties", {
232
+ access: "read",
224
233
  description: "Get custom properties for a customer",
225
234
  inputSchema: {
226
235
  customerId: {
@@ -235,6 +244,7 @@ export default function helpscout(rl) {
235
244
  });
236
245
  // ── Mailbox ─────────────────────────────────────────
237
246
  rl.registerAction("mailbox.get", {
247
+ access: "read",
238
248
  description: "Get a mailbox",
239
249
  inputSchema: {
240
250
  mailboxId: { type: "number", required: true, description: "Mailbox ID" },
@@ -244,6 +254,7 @@ export default function helpscout(rl) {
244
254
  },
245
255
  });
246
256
  rl.registerAction("mailbox.list", {
257
+ access: "read",
247
258
  description: "List mailboxes",
248
259
  async execute(_input, ctx) {
249
260
  return unwrapEmbedded(await apiRequest(tok(ctx), "GET", "/mailboxes"), "mailboxes");
@@ -251,6 +262,7 @@ export default function helpscout(rl) {
251
262
  });
252
263
  // ── Thread ──────────────────────────────────────────
253
264
  rl.registerAction("thread.create", {
265
+ access: "write",
254
266
  description: "Create a thread (reply/note) on a conversation",
255
267
  inputSchema: {
256
268
  conversationId: {
@@ -283,6 +295,7 @@ export default function helpscout(rl) {
283
295
  },
284
296
  });
285
297
  rl.registerAction("thread.list", {
298
+ access: "read",
286
299
  description: "List threads in a conversation",
287
300
  inputSchema: {
288
301
  conversationId: {