runline 0.11.5 → 0.12.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 (253) 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/actionNetwork/src/index.js +23 -0
  7. package/dist/plugins/activeCampaign/src/index.js +48 -0
  8. package/dist/plugins/adalo/src/index.js +5 -0
  9. package/dist/plugins/affinity/src/index.js +16 -0
  10. package/dist/plugins/agileCrm/src/index.js +15 -0
  11. package/dist/plugins/airtable/src/index.js +10 -0
  12. package/dist/plugins/airtop/src/index.js +24 -0
  13. package/dist/plugins/apiTemplateIo/src/index.js +4 -0
  14. package/dist/plugins/asana/src/index.js +22 -0
  15. package/dist/plugins/autopilot/src/index.js +11 -0
  16. package/dist/plugins/bambooHr/src/index.js +11 -0
  17. package/dist/plugins/bannerbear/src/index.js +4 -0
  18. package/dist/plugins/baserow/src/index.js +8 -0
  19. package/dist/plugins/beeminder/src/index.js +18 -0
  20. package/dist/plugins/bitly/src/index.js +3 -0
  21. package/dist/plugins/bitwarden/src/index.js +19 -0
  22. package/dist/plugins/box/src/index.js +11 -0
  23. package/dist/plugins/brandfetch/src/index.js +5 -0
  24. package/dist/plugins/brevo/src/index.js +15 -0
  25. package/dist/plugins/bubble/src/index.js +5 -0
  26. package/dist/plugins/chargebee/src/index.js +5 -0
  27. package/dist/plugins/circleci/src/index.js +3 -0
  28. package/dist/plugins/ciscoWebex/src/index.js +10 -0
  29. package/dist/plugins/clearbit/src/index.js +3 -0
  30. package/dist/plugins/clickup/src/index.js +61 -0
  31. package/dist/plugins/clockify/src/index.js +25 -0
  32. package/dist/plugins/cloudflare/src/index.js +4 -0
  33. package/dist/plugins/cockpit/src/index.js +5 -0
  34. package/dist/plugins/coda/src/index.js +18 -0
  35. package/dist/plugins/coingecko/src/index.js +10 -0
  36. package/dist/plugins/contentful/src/index.js +7 -0
  37. package/dist/plugins/convertkit/src/index.js +16 -0
  38. package/dist/plugins/copper/src/index.js +7 -0
  39. package/dist/plugins/cortex/src/index.js +4 -0
  40. package/dist/plugins/currents/src/index.js +22 -0
  41. package/dist/plugins/customerIo/src/index.js +9 -0
  42. package/dist/plugins/databricks/src/index.js +34 -0
  43. package/dist/plugins/deepl/src/index.js +2 -0
  44. package/dist/plugins/demio/src/index.js +4 -0
  45. package/dist/plugins/dhl/src/index.js +1 -0
  46. package/dist/plugins/discord/src/index.js +13 -0
  47. package/dist/plugins/discourse/src/index.js +16 -0
  48. package/dist/plugins/disqus/src/index.js +4 -0
  49. package/dist/plugins/docker/src/index.js +5 -0
  50. package/dist/plugins/drift/src/index.js +5 -0
  51. package/dist/plugins/dropbox/src/index.js +9 -0
  52. package/dist/plugins/dropcontact/src/index.js +2 -0
  53. package/dist/plugins/egoi/src/index.js +4 -0
  54. package/dist/plugins/elasticsearch/src/index.js +9 -0
  55. package/dist/plugins/emelia/src/index.js +9 -0
  56. package/dist/plugins/erpnext/src/index.js +5 -0
  57. package/dist/plugins/facebookGraph/src/index.js +1 -0
  58. package/dist/plugins/freshdesk/src/index.js +10 -0
  59. package/dist/plugins/freshservice/src/index.js +7 -0
  60. package/dist/plugins/freshworksCrm/src/index.js +7 -0
  61. package/dist/plugins/getresponse/src/index.js +5 -0
  62. package/dist/plugins/ghost/src/index.js +5 -0
  63. package/dist/plugins/github/src/index.js +37 -0
  64. package/dist/plugins/gitlab/src/index.js +17 -0
  65. package/dist/plugins/gmail/src/index.js +32 -0
  66. package/dist/plugins/gong/src/index.js +4 -0
  67. package/dist/plugins/googleAppsScript/src/index.js +10 -0
  68. package/dist/plugins/googleCalendar/src/index.js +22 -0
  69. package/dist/plugins/googleContacts/src/index.js +10 -0
  70. package/dist/plugins/googleDocs/src/documents.js +4 -0
  71. package/dist/plugins/googleDocs/src/formatting.js +2 -0
  72. package/dist/plugins/googleDocs/src/images.js +2 -0
  73. package/dist/plugins/googleDocs/src/structure.js +13 -0
  74. package/dist/plugins/googleDocs/src/tables.js +11 -0
  75. package/dist/plugins/googleDocs/src/tabs.js +3 -0
  76. package/dist/plugins/googleDocs/src/text.js +9 -0
  77. package/dist/plugins/googleDrive/src/index.js +47 -0
  78. package/dist/plugins/googleImage/src/index.js +1 -0
  79. package/dist/plugins/googleSheets/src/index.js +23 -0
  80. package/dist/plugins/googleSlides/src/index.js +7 -0
  81. package/dist/plugins/googleTasks/src/index.js +12 -0
  82. package/dist/plugins/gotify/src/index.js +3 -0
  83. package/dist/plugins/gotowebinar/src/index.js +20 -0
  84. package/dist/plugins/grafana/src/index.js +17 -0
  85. package/dist/plugins/graphql/src/index.js +2 -0
  86. package/dist/plugins/grist/src/index.js +4 -0
  87. package/dist/plugins/hackernews/src/index.js +6 -0
  88. package/dist/plugins/halopsa/src/index.js +5 -0
  89. package/dist/plugins/harvest/src/index.js +14 -0
  90. package/dist/plugins/helpscout/src/index.js +13 -0
  91. package/dist/plugins/highlevel/src/index.js +17 -0
  92. package/dist/plugins/homeAssistant/src/index.js +13 -0
  93. package/dist/plugins/hubspot/src/index.js +14 -0
  94. package/dist/plugins/humanticAi/src/index.js +3 -0
  95. package/dist/plugins/hunter/src/index.js +3 -0
  96. package/dist/plugins/intercom/src/index.js +10 -0
  97. package/dist/plugins/iterable/src/index.js +6 -0
  98. package/dist/plugins/jenkins/src/index.js +11 -0
  99. package/dist/plugins/jira/src/index.js +16 -0
  100. package/dist/plugins/keap/src/index.js +28 -0
  101. package/dist/plugins/kobotoolbox/src/index.js +17 -0
  102. package/dist/plugins/lemlist/src/index.js +15 -0
  103. package/dist/plugins/linear/src/attachments.js +6 -0
  104. package/dist/plugins/linear/src/comments.js +5 -0
  105. package/dist/plugins/linear/src/cycles.js +2 -0
  106. package/dist/plugins/linear/src/initiatives.js +5 -0
  107. package/dist/plugins/linear/src/issues.js +14 -0
  108. package/dist/plugins/linear/src/labels.js +5 -0
  109. package/dist/plugins/linear/src/organization.js +1 -0
  110. package/dist/plugins/linear/src/projects.js +11 -0
  111. package/dist/plugins/linear/src/shared.js +2 -0
  112. package/dist/plugins/linear/src/states.js +2 -0
  113. package/dist/plugins/linear/src/teams.js +3 -0
  114. package/dist/plugins/linear/src/users.js +2 -0
  115. package/dist/plugins/linear/src/views.js +4 -0
  116. package/dist/plugins/linear/src/webhooks.js +4 -0
  117. package/dist/plugins/lingvanex/src/index.js +1 -0
  118. package/dist/plugins/linkedin/src/index.js +1 -0
  119. package/dist/plugins/lonescale/src/index.js +4 -0
  120. package/dist/plugins/magento/src/index.js +15 -0
  121. package/dist/plugins/mailcheck/src/index.js +1 -0
  122. package/dist/plugins/mailchimp/src/index.js +14 -0
  123. package/dist/plugins/mailerlite/src/index.js +4 -0
  124. package/dist/plugins/mailgun/src/index.js +1 -0
  125. package/dist/plugins/mailjet/src/index.js +3 -0
  126. package/dist/plugins/mandrill/src/index.js +2 -0
  127. package/dist/plugins/marketstack/src/index.js +3 -0
  128. package/dist/plugins/matrix/src/index.js +10 -0
  129. package/dist/plugins/mattermost/src/index.js +19 -0
  130. package/dist/plugins/mautic/src/index.js +20 -0
  131. package/dist/plugins/medium/src/index.js +3 -0
  132. package/dist/plugins/messagebird/src/index.js +2 -0
  133. package/dist/plugins/metabase/src/index.js +10 -0
  134. package/dist/plugins/microsoftCalendar/src/index.js +2 -0
  135. package/dist/plugins/microsoftFiles/src/index.js +5 -0
  136. package/dist/plugins/microsoftMail/src/index.js +4 -0
  137. package/dist/plugins/misp/src/index.js +44 -0
  138. package/dist/plugins/mocean/src/index.js +2 -0
  139. package/dist/plugins/monday/src/index.js +18 -0
  140. package/dist/plugins/monicaCrm/src/index.js +5 -0
  141. package/dist/plugins/msg91/src/index.js +1 -0
  142. package/dist/plugins/nasa/src/index.js +7 -0
  143. package/dist/plugins/netlify/src/index.js +7 -0
  144. package/dist/plugins/netscalerAdc/src/index.js +3 -0
  145. package/dist/plugins/nextcloud/src/index.js +13 -0
  146. package/dist/plugins/nocodb/src/index.js +5 -0
  147. package/dist/plugins/node/src/index.js +38 -0
  148. package/dist/plugins/notion/src/index.js +14 -0
  149. package/dist/plugins/npm/src/index.js +5 -0
  150. package/dist/plugins/odoo/src/index.js +6 -0
  151. package/dist/plugins/okta/src/index.js +5 -0
  152. package/dist/plugins/oneSimpleApi/src/index.js +10 -0
  153. package/dist/plugins/onfleet/src/index.js +24 -0
  154. package/dist/plugins/openThesaurus/src/index.js +1 -0
  155. package/dist/plugins/openai/src/index.js +1 -0
  156. package/dist/plugins/openweathermap/src/index.js +2 -0
  157. package/dist/plugins/oura/src/index.js +2 -0
  158. package/dist/plugins/paddle/src/index.js +9 -0
  159. package/dist/plugins/pagerduty/src/index.js +9 -0
  160. package/dist/plugins/parallel/src/index.js +1 -0
  161. package/dist/plugins/paypal/src/index.js +4 -0
  162. package/dist/plugins/peekalink/src/index.js +2 -0
  163. package/dist/plugins/phantombuster/src/index.js +5 -0
  164. package/dist/plugins/philipsHue/src/index.js +4 -0
  165. package/dist/plugins/pipedrive/src/index.js +14 -0
  166. package/dist/plugins/plivo/src/index.js +3 -0
  167. package/dist/plugins/postbin/src/index.js +6 -0
  168. package/dist/plugins/posthog/src/index.js +5 -0
  169. package/dist/plugins/profitwell/src/index.js +2 -0
  170. package/dist/plugins/pushbullet/src/index.js +4 -0
  171. package/dist/plugins/pushcut/src/index.js +1 -0
  172. package/dist/plugins/pushover/src/index.js +1 -0
  173. package/dist/plugins/quickbase/src/index.js +8 -0
  174. package/dist/plugins/quickbooks/src/index.js +5 -0
  175. package/dist/plugins/quickchart/src/index.js +1 -0
  176. package/dist/plugins/raindrop/src/index.js +13 -0
  177. package/dist/plugins/recraft/src/index.js +1 -0
  178. package/dist/plugins/reddit/src/index.js +10 -0
  179. package/dist/plugins/replicate/src/index.js +1 -0
  180. package/dist/plugins/rocketchat/src/index.js +1 -0
  181. package/dist/plugins/rundeck/src/index.js +2 -0
  182. package/dist/plugins/salesforce/src/metadata.js +4 -0
  183. package/dist/plugins/salesforce/src/query.js +5 -0
  184. package/dist/plugins/salesforce/src/sobjects.js +12 -0
  185. package/dist/plugins/salesmate/src/index.js +5 -0
  186. package/dist/plugins/securityScorecard/src/index.js +14 -0
  187. package/dist/plugins/segment/src/index.js +4 -0
  188. package/dist/plugins/sendgrid/src/index.js +10 -0
  189. package/dist/plugins/sendy/src/index.js +6 -0
  190. package/dist/plugins/sentry/src/index.js +24 -0
  191. package/dist/plugins/servicenow/src/index.js +10 -0
  192. package/dist/plugins/shiftLabs/src/index.js +15 -0
  193. package/dist/plugins/shiftLabs/src/issues.js +74 -0
  194. package/dist/plugins/shiftLabs/src/pages.js +148 -0
  195. package/dist/plugins/shiftLabs/src/shared.js +69 -0
  196. package/dist/plugins/shopify/src/index.js +10 -0
  197. package/dist/plugins/signl4/src/index.js +2 -0
  198. package/dist/plugins/slack/src/index.js +38 -0
  199. package/dist/plugins/sms77/src/index.js +2 -0
  200. package/dist/plugins/splunk/src/index.js +16 -0
  201. package/dist/plugins/spotify/src/index.js +30 -0
  202. package/dist/plugins/stackby/src/index.js +4 -0
  203. package/dist/plugins/steel/src/browser.js +7 -0
  204. package/dist/plugins/steel/src/captchas.js +3 -0
  205. package/dist/plugins/steel/src/credentials.js +4 -0
  206. package/dist/plugins/steel/src/extensions.js +5 -0
  207. package/dist/plugins/steel/src/files.js +10 -0
  208. package/dist/plugins/steel/src/profiles.js +4 -0
  209. package/dist/plugins/steel/src/sessions.js +11 -0
  210. package/dist/plugins/storyblok/src/index.js +7 -0
  211. package/dist/plugins/strapi/src/index.js +5 -0
  212. package/dist/plugins/strava/src/index.js +6 -0
  213. package/dist/plugins/stripe/src/index.js +20 -0
  214. package/dist/plugins/supabase/src/index.js +5 -0
  215. package/dist/plugins/syncromsp/src/index.js +20 -0
  216. package/dist/plugins/tapfiliate/src/index.js +11 -0
  217. package/dist/plugins/telegram/src/index.js +21 -0
  218. package/dist/plugins/thehive/src/index.js +23 -0
  219. package/dist/plugins/thehiveProject/src/index.js +31 -0
  220. package/dist/plugins/todoist/src/index.js +31 -0
  221. package/dist/plugins/together/src/index.js +1 -0
  222. package/dist/plugins/travisci/src/index.js +5 -0
  223. package/dist/plugins/trello/src/index.js +37 -0
  224. package/dist/plugins/twake/src/index.js +1 -0
  225. package/dist/plugins/twilio/src/index.js +2 -0
  226. package/dist/plugins/twist/src/index.js +22 -0
  227. package/dist/plugins/twitter/src/index.js +8 -0
  228. package/dist/plugins/unleashedSoftware/src/index.js +3 -0
  229. package/dist/plugins/uplead/src/index.js +2 -0
  230. package/dist/plugins/uproc/src/index.js +1 -0
  231. package/dist/plugins/uptimerobot/src/index.js +22 -0
  232. package/dist/plugins/urlscanio/src/index.js +3 -0
  233. package/dist/plugins/vercel/src/account.js +1 -0
  234. package/dist/plugins/vercel/src/deployments.js +5 -0
  235. package/dist/plugins/vercel/src/env.js +4 -0
  236. package/dist/plugins/vercel/src/projects.js +2 -0
  237. package/dist/plugins/vercel/src/shared.js +1 -0
  238. package/dist/plugins/vero/src/index.js +6 -0
  239. package/dist/plugins/vonage/src/index.js +1 -0
  240. package/dist/plugins/wekan/src/index.js +24 -0
  241. package/dist/plugins/woocommerce/src/index.js +5 -0
  242. package/dist/plugins/wordpress/src/index.js +10 -0
  243. package/dist/plugins/xai/src/index.js +1 -0
  244. package/dist/plugins/xero/src/index.js +8 -0
  245. package/dist/plugins/yourls/src/index.js +3 -0
  246. package/dist/plugins/zammad/src/index.js +12 -0
  247. package/dist/plugins/zendesk/src/index.js +18 -0
  248. package/dist/plugins/zoho/src/index.js +6 -0
  249. package/dist/plugins/zoom/src/index.js +5 -0
  250. package/dist/plugins/zulip/src/index.js +15 -0
  251. package/dist/sdk.d.ts +2 -1
  252. package/dist/sdk.js +1 -0
  253. package/package.json +1 -1
@@ -11,6 +11,7 @@ async function queryPage(ctx, endpoint, query) {
11
11
  }
12
12
  export function registerQueryActions(rl) {
13
13
  rl.registerAction("soql.query", {
14
+ access: "read",
14
15
  description: "Execute a raw SOQL query and return the first page of records",
15
16
  inputSchema: QueryInput,
16
17
  async execute(input, ctx) {
@@ -18,6 +19,7 @@ export function registerQueryActions(rl) {
18
19
  },
19
20
  });
20
21
  rl.registerAction("soql.queryPage", {
22
+ access: "read",
21
23
  description: "Execute a raw SOQL query and return Salesforce pagination metadata",
22
24
  inputSchema: QueryInput,
23
25
  async execute(input, ctx) {
@@ -25,6 +27,7 @@ export function registerQueryActions(rl) {
25
27
  },
26
28
  });
27
29
  rl.registerAction("soql.queryAll", {
30
+ access: "read",
28
31
  description: "Execute a raw SOQL query including deleted and archived records; returns the first page of records",
29
32
  inputSchema: QueryInput,
30
33
  async execute(input, ctx) {
@@ -32,6 +35,7 @@ export function registerQueryActions(rl) {
32
35
  },
33
36
  });
34
37
  rl.registerAction("soql.queryAllPage", {
38
+ access: "read",
35
39
  description: "Execute a raw SOQL query including deleted and archived records and return Salesforce pagination metadata",
36
40
  inputSchema: QueryInput,
37
41
  async execute(input, ctx) {
@@ -39,6 +43,7 @@ export function registerQueryActions(rl) {
39
43
  },
40
44
  });
41
45
  rl.registerAction("soql.nextPage", {
46
+ access: "read",
42
47
  description: "Fetch the next page from a Salesforce nextRecordsUrl returned by soql.queryPage or soql.queryAllPage",
43
48
  inputSchema: t.Object({
44
49
  nextRecordsUrl: t.String({
@@ -42,6 +42,7 @@ function buildQuery(sObject, input) {
42
42
  function registerSObject(rl, sObject) {
43
43
  const lower = sObject.toLowerCase();
44
44
  rl.registerAction(`${lower}.create`, {
45
+ access: "write",
45
46
  description: `Create a ${sObject}`,
46
47
  inputSchema: t.Object({ data: Data }),
47
48
  async execute(input, ctx) {
@@ -49,6 +50,7 @@ function registerSObject(rl, sObject) {
49
50
  },
50
51
  });
51
52
  rl.registerAction(`${lower}.get`, {
53
+ access: "read",
52
54
  description: `Get a ${sObject} by ID`,
53
55
  inputSchema: t.Object({ id: t.String() }),
54
56
  async execute(input, ctx) {
@@ -56,6 +58,7 @@ function registerSObject(rl, sObject) {
56
58
  },
57
59
  });
58
60
  rl.registerAction(`${lower}.update`, {
61
+ access: "write",
59
62
  description: `Update a ${sObject}`,
60
63
  inputSchema: t.Object({ id: t.String(), data: Data }),
61
64
  async execute(input, ctx) {
@@ -65,6 +68,7 @@ function registerSObject(rl, sObject) {
65
68
  },
66
69
  });
67
70
  rl.registerAction(`${lower}.delete`, {
71
+ access: "write",
68
72
  description: `Delete a ${sObject}`,
69
73
  inputSchema: t.Object({ id: t.String() }),
70
74
  async execute(input, ctx) {
@@ -73,6 +77,7 @@ function registerSObject(rl, sObject) {
73
77
  },
74
78
  });
75
79
  rl.registerAction(`${lower}.query`, {
80
+ access: "read",
76
81
  description: `Query ${sObject}s with SOQL`,
77
82
  inputSchema: QueryInput(sObject),
78
83
  async execute(input, ctx) {
@@ -82,6 +87,7 @@ function registerSObject(rl, sObject) {
82
87
  },
83
88
  });
84
89
  rl.registerAction(`${lower}.queryPage`, {
90
+ access: "read",
85
91
  description: `Query ${sObject}s with SOQL and return Salesforce pagination metadata`,
86
92
  inputSchema: QueryInput(sObject),
87
93
  async execute(input, ctx) {
@@ -91,6 +97,7 @@ function registerSObject(rl, sObject) {
91
97
  },
92
98
  });
93
99
  rl.registerAction(`${lower}.upsert`, {
100
+ access: "write",
94
101
  description: `Upsert a ${sObject} by external ID`,
95
102
  inputSchema: t.Object({
96
103
  externalIdField: t.String(),
@@ -109,6 +116,7 @@ export function registerStandardSObjectActions(rl) {
109
116
  }
110
117
  export function registerGenericSObjectActions(rl) {
111
118
  rl.registerAction("sobject.create", {
119
+ access: "write",
112
120
  description: "Create any sObject record",
113
121
  inputSchema: t.Object({ sObject: t.String(), data: Data }),
114
122
  async execute(input, ctx) {
@@ -117,6 +125,7 @@ export function registerGenericSObjectActions(rl) {
117
125
  },
118
126
  });
119
127
  rl.registerAction("sobject.get", {
128
+ access: "read",
120
129
  description: "Get any sObject record",
121
130
  inputSchema: t.Object({ sObject: t.String(), id: t.String() }),
122
131
  async execute(input, ctx) {
@@ -125,6 +134,7 @@ export function registerGenericSObjectActions(rl) {
125
134
  },
126
135
  });
127
136
  rl.registerAction("sobject.update", {
137
+ access: "write",
128
138
  description: "Update any sObject record",
129
139
  inputSchema: t.Object({ sObject: t.String(), id: t.String(), data: Data }),
130
140
  async execute(input, ctx) {
@@ -134,6 +144,7 @@ export function registerGenericSObjectActions(rl) {
134
144
  },
135
145
  });
136
146
  rl.registerAction("sobject.delete", {
147
+ access: "write",
137
148
  description: "Delete any sObject record",
138
149
  inputSchema: t.Object({ sObject: t.String(), id: t.String() }),
139
150
  async execute(input, ctx) {
@@ -143,6 +154,7 @@ export function registerGenericSObjectActions(rl) {
143
154
  },
144
155
  });
145
156
  rl.registerAction("sobject.describe", {
157
+ access: "read",
146
158
  description: "Describe an sObject's metadata/fields",
147
159
  inputSchema: t.Object({ sObject: t.String() }),
148
160
  async execute(input, ctx) {
@@ -30,6 +30,7 @@ async function api(conn, method, endpoint, body, qs) {
30
30
  }
31
31
  function registerCrud(rl, resource, plural, conn, createSchema) {
32
32
  rl.registerAction(`${resource}.create`, {
33
+ access: "write",
33
34
  description: `Create a ${resource}`,
34
35
  inputSchema: createSchema,
35
36
  async execute(input, ctx) {
@@ -38,6 +39,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
38
39
  },
39
40
  });
40
41
  rl.registerAction(`${resource}.get`, {
42
+ access: "read",
41
43
  description: `Get a ${resource} by ID`,
42
44
  inputSchema: { id: { type: "string", required: true } },
43
45
  async execute(input, ctx) {
@@ -46,6 +48,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
46
48
  },
47
49
  });
48
50
  rl.registerAction(`${resource}.list`, {
51
+ access: "read",
49
52
  description: `Search/list ${plural}`,
50
53
  inputSchema: {
51
54
  limit: { type: "number", required: false },
@@ -74,6 +77,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
74
77
  },
75
78
  });
76
79
  rl.registerAction(`${resource}.update`, {
80
+ access: "write",
77
81
  description: `Update a ${resource}`,
78
82
  inputSchema: {
79
83
  id: { type: "string", required: true },
@@ -86,6 +90,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
86
90
  },
87
91
  });
88
92
  rl.registerAction(`${resource}.delete`, {
93
+ access: "write",
89
94
  description: `Delete a ${resource}`,
90
95
  inputSchema: { id: { type: "string", required: true } },
91
96
  async execute(input, ctx) {
@@ -36,6 +36,7 @@ export default function securityScorecard(rl) {
36
36
  const key = (ctx) => ctx.connection.config.apiKey;
37
37
  // ── Company ─────────────────────────────────────────
38
38
  rl.registerAction("company.getScorecard", {
39
+ access: "read",
39
40
  description: "Get a company's scorecard by domain",
40
41
  inputSchema: { domain: { type: "string", required: true } },
41
42
  async execute(input, ctx) {
@@ -43,6 +44,7 @@ export default function securityScorecard(rl) {
43
44
  },
44
45
  });
45
46
  rl.registerAction("company.getFactors", {
47
+ access: "read",
46
48
  description: "Get factor scores for a company",
47
49
  inputSchema: {
48
50
  domain: { type: "string", required: true },
@@ -58,6 +60,7 @@ export default function securityScorecard(rl) {
58
60
  },
59
61
  });
60
62
  rl.registerAction("company.getHistoricalScore", {
63
+ access: "read",
61
64
  description: "Get historical score data for a company",
62
65
  inputSchema: {
63
66
  domain: { type: "string", required: true },
@@ -88,6 +91,7 @@ export default function securityScorecard(rl) {
88
91
  },
89
92
  });
90
93
  rl.registerAction("company.getScorePlan", {
94
+ access: "read",
91
95
  description: "Get score improvement plan for a target score",
92
96
  inputSchema: {
93
97
  domain: { type: "string", required: true },
@@ -101,6 +105,7 @@ export default function securityScorecard(rl) {
101
105
  });
102
106
  // ── Industry ────────────────────────────────────────
103
107
  rl.registerAction("industry.getScore", {
108
+ access: "read",
104
109
  description: "Get an industry's average score",
105
110
  inputSchema: { industry: { type: "string", required: true } },
106
111
  async execute(input, ctx) {
@@ -109,6 +114,7 @@ export default function securityScorecard(rl) {
109
114
  });
110
115
  // ── Portfolio ───────────────────────────────────────
111
116
  rl.registerAction("portfolio.create", {
117
+ access: "write",
112
118
  description: "Create a portfolio",
113
119
  inputSchema: {
114
120
  name: { type: "string", required: true },
@@ -129,6 +135,7 @@ export default function securityScorecard(rl) {
129
135
  },
130
136
  });
131
137
  rl.registerAction("portfolio.list", {
138
+ access: "read",
132
139
  description: "List all portfolios",
133
140
  inputSchema: { limit: { type: "number", required: false } },
134
141
  async execute(input, ctx) {
@@ -140,6 +147,7 @@ export default function securityScorecard(rl) {
140
147
  },
141
148
  });
142
149
  rl.registerAction("portfolio.delete", {
150
+ access: "write",
143
151
  description: "Delete a portfolio",
144
152
  inputSchema: { portfolioId: { type: "string", required: true } },
145
153
  async execute(input, ctx) {
@@ -148,6 +156,7 @@ export default function securityScorecard(rl) {
148
156
  },
149
157
  });
150
158
  rl.registerAction("portfolioCompany.add", {
159
+ access: "write",
151
160
  description: "Add a company to a portfolio",
152
161
  inputSchema: {
153
162
  portfolioId: { type: "string", required: true },
@@ -159,6 +168,7 @@ export default function securityScorecard(rl) {
159
168
  },
160
169
  });
161
170
  rl.registerAction("portfolioCompany.remove", {
171
+ access: "write",
162
172
  description: "Remove a company from a portfolio",
163
173
  inputSchema: {
164
174
  portfolioId: { type: "string", required: true },
@@ -171,6 +181,7 @@ export default function securityScorecard(rl) {
171
181
  },
172
182
  });
173
183
  rl.registerAction("portfolioCompany.list", {
184
+ access: "read",
174
185
  description: "List companies in a portfolio",
175
186
  inputSchema: {
176
187
  portfolioId: { type: "string", required: true },
@@ -187,6 +198,7 @@ export default function securityScorecard(rl) {
187
198
  });
188
199
  // ── Invite ──────────────────────────────────────────
189
200
  rl.registerAction("invite.create", {
201
+ access: "write",
190
202
  description: "Send an invitation",
191
203
  inputSchema: {
192
204
  email: { type: "string", required: true },
@@ -206,6 +218,7 @@ export default function securityScorecard(rl) {
206
218
  });
207
219
  // ── Report ──────────────────────────────────────────
208
220
  rl.registerAction("report.generate", {
221
+ access: "write",
209
222
  description: "Generate a report",
210
223
  inputSchema: {
211
224
  reportType: {
@@ -245,6 +258,7 @@ export default function securityScorecard(rl) {
245
258
  },
246
259
  });
247
260
  rl.registerAction("report.list", {
261
+ access: "read",
248
262
  description: "List recent reports",
249
263
  inputSchema: { limit: { type: "number", required: false } },
250
264
  async execute(input, ctx) {
@@ -25,6 +25,7 @@ export default function segment(rl) {
25
25
  });
26
26
  const key = (ctx) => ctx.connection.config.writeKey;
27
27
  rl.registerAction("identify.create", {
28
+ access: "write",
28
29
  description: "Identify a user (tie user to traits)",
29
30
  inputSchema: {
30
31
  userId: {
@@ -58,6 +59,7 @@ export default function segment(rl) {
58
59
  },
59
60
  });
60
61
  rl.registerAction("track.event", {
62
+ access: "write",
61
63
  description: "Track an event",
62
64
  inputSchema: {
63
65
  event: { type: "string", required: true, description: "Event name" },
@@ -88,6 +90,7 @@ export default function segment(rl) {
88
90
  },
89
91
  });
90
92
  rl.registerAction("track.page", {
93
+ access: "write",
91
94
  description: "Track a page view",
92
95
  inputSchema: {
93
96
  name: { type: "string", required: true, description: "Page name" },
@@ -114,6 +117,7 @@ export default function segment(rl) {
114
117
  },
115
118
  });
116
119
  rl.registerAction("group.add", {
120
+ access: "write",
117
121
  description: "Associate a user with a group",
118
122
  inputSchema: {
119
123
  groupId: { type: "string", required: true },
@@ -40,6 +40,7 @@ export default function sendgrid(rl) {
40
40
  const key = (ctx) => ctx.connection.config.apiKey;
41
41
  // ── Mail ────────────────────────────────────────────
42
42
  rl.registerAction("mail.send", {
43
+ access: "write",
43
44
  description: "Send an email via SendGrid",
44
45
  inputSchema: {
45
46
  to: {
@@ -117,6 +118,7 @@ export default function sendgrid(rl) {
117
118
  });
118
119
  // ── Contact ─────────────────────────────────────────
119
120
  rl.registerAction("contact.get", {
121
+ access: "read",
120
122
  description: "Get a contact by ID or email",
121
123
  inputSchema: {
122
124
  contactId: { type: "string", required: false },
@@ -138,6 +140,7 @@ export default function sendgrid(rl) {
138
140
  },
139
141
  });
140
142
  rl.registerAction("contact.list", {
143
+ access: "read",
141
144
  description: "List contacts (optionally with SGQL query)",
142
145
  inputSchema: {
143
146
  query: {
@@ -166,6 +169,7 @@ export default function sendgrid(rl) {
166
169
  },
167
170
  });
168
171
  rl.registerAction("contact.upsert", {
172
+ access: "write",
169
173
  description: "Create or update contacts",
170
174
  inputSchema: {
171
175
  contacts: {
@@ -189,6 +193,7 @@ export default function sendgrid(rl) {
189
193
  },
190
194
  });
191
195
  rl.registerAction("contact.delete", {
196
+ access: "write",
192
197
  description: "Delete contacts by IDs",
193
198
  inputSchema: {
194
199
  ids: {
@@ -205,6 +210,7 @@ export default function sendgrid(rl) {
205
210
  });
206
211
  // ── List ────────────────────────────────────────────
207
212
  rl.registerAction("list.create", {
213
+ access: "write",
208
214
  description: "Create a contact list",
209
215
  inputSchema: { name: { type: "string", required: true } },
210
216
  async execute(input, ctx) {
@@ -215,6 +221,7 @@ export default function sendgrid(rl) {
215
221
  },
216
222
  });
217
223
  rl.registerAction("list.get", {
224
+ access: "read",
218
225
  description: "Get a list by ID",
219
226
  inputSchema: { listId: { type: "string", required: true } },
220
227
  async execute(input, ctx) {
@@ -223,6 +230,7 @@ export default function sendgrid(rl) {
223
230
  },
224
231
  });
225
232
  rl.registerAction("list.list", {
233
+ access: "read",
226
234
  description: "List all contact lists",
227
235
  inputSchema: { limit: { type: "number", required: false } },
228
236
  async execute(input, ctx) {
@@ -235,6 +243,7 @@ export default function sendgrid(rl) {
235
243
  },
236
244
  });
237
245
  rl.registerAction("list.update", {
246
+ access: "write",
238
247
  description: "Update a list name",
239
248
  inputSchema: {
240
249
  listId: { type: "string", required: true },
@@ -247,6 +256,7 @@ export default function sendgrid(rl) {
247
256
  },
248
257
  });
249
258
  rl.registerAction("list.delete", {
259
+ access: "write",
250
260
  description: "Delete a list",
251
261
  inputSchema: {
252
262
  listId: { type: "string", required: true },
@@ -38,6 +38,7 @@ export default function sendy(rl) {
38
38
  },
39
39
  });
40
40
  rl.registerAction("campaign.create", {
41
+ access: "write",
41
42
  description: "Create (and optionally send) an email campaign",
42
43
  inputSchema: {
43
44
  fromName: { type: "string", required: true },
@@ -97,6 +98,7 @@ export default function sendy(rl) {
97
98
  },
98
99
  });
99
100
  rl.registerAction("subscriber.add", {
101
+ access: "write",
100
102
  description: "Add a subscriber to a list",
101
103
  inputSchema: {
102
104
  email: { type: "string", required: true },
@@ -115,6 +117,7 @@ export default function sendy(rl) {
115
117
  },
116
118
  });
117
119
  rl.registerAction("subscriber.count", {
120
+ access: "read",
118
121
  description: "Get active subscriber count for a list",
119
122
  inputSchema: { listId: { type: "string", required: true } },
120
123
  async execute(input, ctx) {
@@ -126,6 +129,7 @@ export default function sendy(rl) {
126
129
  },
127
130
  });
128
131
  rl.registerAction("subscriber.delete", {
132
+ access: "write",
129
133
  description: "Delete a subscriber from a list",
130
134
  inputSchema: {
131
135
  email: { type: "string", required: true },
@@ -140,6 +144,7 @@ export default function sendy(rl) {
140
144
  },
141
145
  });
142
146
  rl.registerAction("subscriber.unsubscribe", {
147
+ access: "write",
143
148
  description: "Unsubscribe an email from a list",
144
149
  inputSchema: {
145
150
  email: { type: "string", required: true },
@@ -157,6 +162,7 @@ export default function sendy(rl) {
157
162
  },
158
163
  });
159
164
  rl.registerAction("subscriber.status", {
165
+ access: "read",
160
166
  description: "Get subscription status of an email",
161
167
  inputSchema: {
162
168
  email: { type: "string", required: true },
@@ -28,6 +28,7 @@ async function apiRequest(conn, method, endpoint, body, qs) {
28
28
  }
29
29
  function registerCrud(rl, resource, basePath, idField, extraCreateFields) {
30
30
  rl.registerAction(`${resource}.get`, {
31
+ access: "read",
31
32
  description: `Get a ${resource} by ${idField}`,
32
33
  inputSchema: {
33
34
  [idField]: { type: "string", required: true },
@@ -39,6 +40,7 @@ function registerCrud(rl, resource, basePath, idField, extraCreateFields) {
39
40
  },
40
41
  });
41
42
  rl.registerAction(`${resource}.list`, {
43
+ access: "read",
42
44
  description: `List ${resource}s`,
43
45
  inputSchema: {
44
46
  org: { type: "string", required: true },
@@ -63,6 +65,7 @@ function registerCrud(rl, resource, basePath, idField, extraCreateFields) {
63
65
  },
64
66
  });
65
67
  rl.registerAction(`${resource}.delete`, {
68
+ access: "write",
66
69
  description: `Delete a ${resource}`,
67
70
  inputSchema: {
68
71
  [idField]: { type: "string", required: true },
@@ -94,6 +97,7 @@ export default function sentry(rl) {
94
97
  });
95
98
  // ── Event ───────────────────────────────────────────
96
99
  rl.registerAction("event.get", {
100
+ access: "read",
97
101
  description: "Get a project event by ID",
98
102
  inputSchema: {
99
103
  org: { type: "string", required: true },
@@ -106,6 +110,7 @@ export default function sentry(rl) {
106
110
  },
107
111
  });
108
112
  rl.registerAction("event.list", {
113
+ access: "read",
109
114
  description: "List project events",
110
115
  inputSchema: {
111
116
  org: { type: "string", required: true },
@@ -125,6 +130,7 @@ export default function sentry(rl) {
125
130
  });
126
131
  // ── Issue ───────────────────────────────────────────
127
132
  rl.registerAction("issue.get", {
133
+ access: "read",
128
134
  description: "Get an issue by ID",
129
135
  inputSchema: { issueId: { type: "string", required: true } },
130
136
  async execute(input, ctx) {
@@ -132,6 +138,7 @@ export default function sentry(rl) {
132
138
  },
133
139
  });
134
140
  rl.registerAction("issue.list", {
141
+ access: "read",
135
142
  description: "List issues for a project",
136
143
  inputSchema: {
137
144
  org: { type: "string", required: true },
@@ -150,6 +157,7 @@ export default function sentry(rl) {
150
157
  },
151
158
  });
152
159
  rl.registerAction("issue.update", {
160
+ access: "write",
153
161
  description: "Update an issue",
154
162
  inputSchema: {
155
163
  issueId: { type: "string", required: true },
@@ -164,6 +172,7 @@ export default function sentry(rl) {
164
172
  },
165
173
  });
166
174
  rl.registerAction("issue.delete", {
175
+ access: "write",
167
176
  description: "Delete an issue",
168
177
  inputSchema: { issueId: { type: "string", required: true } },
169
178
  async execute(input, ctx) {
@@ -173,6 +182,7 @@ export default function sentry(rl) {
173
182
  });
174
183
  // ── Organization ────────────────────────────────────
175
184
  rl.registerAction("organization.get", {
185
+ access: "read",
176
186
  description: "Get an organization",
177
187
  inputSchema: { org: { type: "string", required: true } },
178
188
  async execute(input, ctx) {
@@ -180,6 +190,7 @@ export default function sentry(rl) {
180
190
  },
181
191
  });
182
192
  rl.registerAction("organization.list", {
193
+ access: "read",
183
194
  description: "List organizations",
184
195
  inputSchema: { limit: { type: "number", required: false } },
185
196
  async execute(input, ctx) {
@@ -190,6 +201,7 @@ export default function sentry(rl) {
190
201
  },
191
202
  });
192
203
  rl.registerAction("organization.create", {
204
+ access: "write",
193
205
  description: "Create an organization",
194
206
  inputSchema: {
195
207
  name: { type: "string", required: true },
@@ -206,6 +218,7 @@ export default function sentry(rl) {
206
218
  });
207
219
  // ── Project ─────────────────────────────────────────
208
220
  rl.registerAction("project.get", {
221
+ access: "read",
209
222
  description: "Get a project",
210
223
  inputSchema: {
211
224
  org: { type: "string", required: true },
@@ -217,6 +230,7 @@ export default function sentry(rl) {
217
230
  },
218
231
  });
219
232
  rl.registerAction("project.list", {
233
+ access: "read",
220
234
  description: "List all projects",
221
235
  inputSchema: { limit: { type: "number", required: false } },
222
236
  async execute(input, ctx) {
@@ -226,6 +240,7 @@ export default function sentry(rl) {
226
240
  },
227
241
  });
228
242
  rl.registerAction("project.create", {
243
+ access: "write",
229
244
  description: "Create a project",
230
245
  inputSchema: {
231
246
  org: { type: "string", required: true },
@@ -245,6 +260,7 @@ export default function sentry(rl) {
245
260
  },
246
261
  });
247
262
  rl.registerAction("project.delete", {
263
+ access: "write",
248
264
  description: "Delete a project",
249
265
  inputSchema: {
250
266
  org: { type: "string", required: true },
@@ -258,6 +274,7 @@ export default function sentry(rl) {
258
274
  });
259
275
  // ── Release ─────────────────────────────────────────
260
276
  rl.registerAction("release.get", {
277
+ access: "read",
261
278
  description: "Get a release",
262
279
  inputSchema: {
263
280
  org: { type: "string", required: true },
@@ -269,6 +286,7 @@ export default function sentry(rl) {
269
286
  },
270
287
  });
271
288
  rl.registerAction("release.list", {
289
+ access: "read",
272
290
  description: "List releases",
273
291
  inputSchema: {
274
292
  org: { type: "string", required: true },
@@ -286,6 +304,7 @@ export default function sentry(rl) {
286
304
  },
287
305
  });
288
306
  rl.registerAction("release.create", {
307
+ access: "write",
289
308
  description: "Create a release",
290
309
  inputSchema: {
291
310
  org: { type: "string", required: true },
@@ -309,6 +328,7 @@ export default function sentry(rl) {
309
328
  },
310
329
  });
311
330
  rl.registerAction("release.delete", {
331
+ access: "write",
312
332
  description: "Delete a release",
313
333
  inputSchema: {
314
334
  org: { type: "string", required: true },
@@ -322,6 +342,7 @@ export default function sentry(rl) {
322
342
  });
323
343
  // ── Team ────────────────────────────────────────────
324
344
  rl.registerAction("team.get", {
345
+ access: "read",
325
346
  description: "Get a team",
326
347
  inputSchema: {
327
348
  org: { type: "string", required: true },
@@ -333,6 +354,7 @@ export default function sentry(rl) {
333
354
  },
334
355
  });
335
356
  rl.registerAction("team.list", {
357
+ access: "read",
336
358
  description: "List teams in an organization",
337
359
  inputSchema: {
338
360
  org: { type: "string", required: true },
@@ -344,6 +366,7 @@ export default function sentry(rl) {
344
366
  },
345
367
  });
346
368
  rl.registerAction("team.create", {
369
+ access: "write",
347
370
  description: "Create a team",
348
371
  inputSchema: {
349
372
  org: { type: "string", required: true },
@@ -359,6 +382,7 @@ export default function sentry(rl) {
359
382
  },
360
383
  });
361
384
  rl.registerAction("team.delete", {
385
+ access: "write",
362
386
  description: "Delete a team",
363
387
  inputSchema: {
364
388
  org: { type: "string", required: true },