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
@@ -6,6 +6,7 @@ export function registerInitiativeActions(rl) {
6
6
  listAction("initiative.list", "List initiatives.", "initiatives", "InitiativeFilter", INITIATIVE_FIELDS);
7
7
  getAction("initiative.get", "Get an initiative by ID or slug.", "initiative", INITIATIVE_FIELDS);
8
8
  rl.registerAction("initiative.create", {
9
+ access: "write",
9
10
  description: "Create an initiative. Status: Planned | Active | Completed.",
10
11
  inputSchema: t.Object({
11
12
  name: t.String({ description: "The name of the initiative" }),
@@ -39,6 +40,7 @@ export function registerInitiativeActions(rl) {
39
40
  },
40
41
  });
41
42
  rl.registerAction("initiative.update", {
43
+ access: "write",
42
44
  description: "Update an initiative.",
43
45
  inputSchema: t.Object({
44
46
  id: t.String({
@@ -76,6 +78,7 @@ export function registerInitiativeActions(rl) {
76
78
  },
77
79
  });
78
80
  rl.registerAction("initiative.delete", {
81
+ access: "write",
79
82
  description: "Trash an initiative.",
80
83
  inputSchema: t.Object({
81
84
  id: t.String({
@@ -89,6 +92,7 @@ export function registerInitiativeActions(rl) {
89
92
  },
90
93
  });
91
94
  rl.registerAction("initiative.addProject", {
95
+ access: "write",
92
96
  description: "Associate a project with an initiative. Use this action for project-to-initiative linking; project.update does not accept initiativeId. Verify with initiative.get or the returned initiative.projects list.",
93
97
  inputSchema: t.Object({
94
98
  initiativeId: t.String({
@@ -109,6 +113,7 @@ export function registerInitiativeActions(rl) {
109
113
  },
110
114
  });
111
115
  rl.registerAction("initiative.removeProject", {
116
+ access: "write",
112
117
  description: "Remove a project from an initiative. Pass the link id returned by initiative.addProject, then verify with initiative.get.",
113
118
  inputSchema: t.Object({
114
119
  id: t.String({
@@ -2,6 +2,7 @@ import * as t from "typebox";
2
2
  import { assertIssueInScope, buildConnArgs, COMMENT_FIELDS, ensureScopeLabelsOnCreateOrReplace, forbidScopeLabelRemoval, gql, ISSUE_FIELDS, ISSUE_LITE, issueHasScope, key, LIST_INPUT_SCHEMA, mergeIssueScopeFilter, } from "./shared.js";
3
3
  export function registerIssueActions(rl) {
4
4
  rl.registerAction("issue.create", {
5
+ access: "write",
5
6
  description: "Create an issue. teamId is required; title is required unless a template is applied.",
6
7
  inputSchema: t.Object({
7
8
  teamId: t.String({
@@ -63,6 +64,7 @@ export function registerIssueActions(rl) {
63
64
  },
64
65
  });
65
66
  rl.registerAction("issue.get", {
67
+ access: "read",
66
68
  description: "Get an issue by ID or identifier (e.g. 'THE-154')",
67
69
  inputSchema: t.Object({
68
70
  issueId: t.String({
@@ -78,6 +80,7 @@ export function registerIssueActions(rl) {
78
80
  },
79
81
  });
80
82
  rl.registerAction("issue.list", {
83
+ access: "read",
81
84
  description: "List issues. Pass `filter` for state/label/project/etc. Default hides archived.",
82
85
  inputSchema: t.Object({
83
86
  ...LIST_INPUT_SCHEMA,
@@ -100,6 +103,7 @@ export function registerIssueActions(rl) {
100
103
  },
101
104
  });
102
105
  rl.registerAction("issue.update", {
106
+ access: "write",
103
107
  description: "Update an issue. All fields optional; only provided fields are updated.",
104
108
  inputSchema: t.Object({
105
109
  issueId: t.String({
@@ -175,6 +179,7 @@ export function registerIssueActions(rl) {
175
179
  },
176
180
  });
177
181
  rl.registerAction("issue.delete", {
182
+ access: "write",
178
183
  description: "Trash (soft-delete) an issue. Pass permanentlyDelete=true to bypass 30d grace period (admin only).",
179
184
  inputSchema: t.Object({
180
185
  issueId: t.String(),
@@ -188,6 +193,7 @@ export function registerIssueActions(rl) {
188
193
  },
189
194
  });
190
195
  rl.registerAction("issue.archive", {
196
+ access: "write",
191
197
  description: "Archive an issue.",
192
198
  inputSchema: t.Object({
193
199
  issueId: t.String(),
@@ -201,6 +207,7 @@ export function registerIssueActions(rl) {
201
207
  },
202
208
  });
203
209
  rl.registerAction("issue.unarchive", {
210
+ access: "write",
204
211
  description: "Unarchive an issue.",
205
212
  inputSchema: t.Object({ issueId: t.String() }),
206
213
  async execute(input, ctx) {
@@ -211,6 +218,7 @@ export function registerIssueActions(rl) {
211
218
  },
212
219
  });
213
220
  rl.registerAction("issue.search", {
221
+ access: "read",
214
222
  description: "Search issues by text query using full-text and vector search. Rate-limited to 30 req/min.",
215
223
  inputSchema: t.Object({
216
224
  term: t.String({ description: "Search string to look for" }),
@@ -252,6 +260,7 @@ export function registerIssueActions(rl) {
252
260
  },
253
261
  });
254
262
  rl.registerAction("issue.addLabel", {
263
+ access: "write",
255
264
  description: "Add a single label to an issue.",
256
265
  inputSchema: t.Object({
257
266
  issueId: t.String(),
@@ -265,6 +274,7 @@ export function registerIssueActions(rl) {
265
274
  },
266
275
  });
267
276
  rl.registerAction("issue.removeLabel", {
277
+ access: "write",
268
278
  description: "Remove a single label from an issue.",
269
279
  inputSchema: t.Object({
270
280
  issueId: t.String(),
@@ -279,6 +289,7 @@ export function registerIssueActions(rl) {
279
289
  },
280
290
  });
281
291
  rl.registerAction("issue.subscribe", {
292
+ access: "write",
282
293
  description: "Subscribe a user to issue notifications (defaults to current user).",
283
294
  inputSchema: t.Object({
284
295
  issueId: t.String(),
@@ -295,6 +306,7 @@ export function registerIssueActions(rl) {
295
306
  },
296
307
  });
297
308
  rl.registerAction("issue.unsubscribe", {
309
+ access: "write",
298
310
  description: "Unsubscribe a user from issue notifications (defaults to current user).",
299
311
  inputSchema: t.Object({
300
312
  issueId: t.String(),
@@ -311,6 +323,7 @@ export function registerIssueActions(rl) {
311
323
  },
312
324
  });
313
325
  rl.registerAction("issue.addLink", {
326
+ access: "write",
314
327
  description: "Create a relation between two issues.",
315
328
  inputSchema: t.Object({
316
329
  issueId: t.String({
@@ -332,6 +345,7 @@ export function registerIssueActions(rl) {
332
345
  },
333
346
  });
334
347
  rl.registerAction("issue.listComments", {
348
+ access: "read",
335
349
  description: "List comments on an issue.",
336
350
  inputSchema: t.Object({
337
351
  issueId: t.String(),
@@ -6,6 +6,7 @@ export function registerLabelActions(rl) {
6
6
  listAction("label.list", "List labels (workspace + team-scoped).", "issueLabels", "IssueLabelFilter", LABEL_FIELDS);
7
7
  getAction("label.get", "Get a label by ID.", "issueLabel", LABEL_FIELDS);
8
8
  rl.registerAction("label.create", {
9
+ access: "write",
9
10
  description: "Create a label. Omit teamId for a workspace-level label.",
10
11
  inputSchema: t.Object({
11
12
  name: t.String({ description: "The name of the label" }),
@@ -36,6 +37,7 @@ export function registerLabelActions(rl) {
36
37
  },
37
38
  });
38
39
  rl.registerAction("label.update", {
40
+ access: "write",
39
41
  description: "Update a label.",
40
42
  inputSchema: t.Object({
41
43
  id: t.String({ description: "The identifier of the label to update" }),
@@ -59,6 +61,7 @@ export function registerLabelActions(rl) {
59
61
  },
60
62
  });
61
63
  rl.registerAction("label.delete", {
64
+ access: "write",
62
65
  description: "Delete a label.",
63
66
  inputSchema: t.Object({
64
67
  id: t.String({ description: "The identifier of the label to delete" }),
@@ -70,6 +73,7 @@ export function registerLabelActions(rl) {
70
73
  },
71
74
  });
72
75
  rl.registerAction("label.retire", {
76
+ access: "write",
73
77
  description: "Retire a label. Retired labels remain visible but cannot be applied to new issues.",
74
78
  inputSchema: t.Object({
75
79
  id: t.String({ description: "The identifier of the label to retire" }),
@@ -81,6 +85,7 @@ export function registerLabelActions(rl) {
81
85
  },
82
86
  });
83
87
  rl.registerAction("label.restore", {
88
+ access: "write",
84
89
  description: "Restore a previously retired label.",
85
90
  inputSchema: t.Object({
86
91
  id: t.String({ description: "The identifier of the label to restore" }),
@@ -2,6 +2,7 @@ import * as t from "typebox";
2
2
  import { gql, key, ORG_FIELDS, requireUnscoped } from "./shared.js";
3
3
  export function registerOrganizationActions(rl) {
4
4
  rl.registerAction("org.get", {
5
+ access: "read",
5
6
  description: "Get the authenticated workspace.",
6
7
  inputSchema: t.Object({}),
7
8
  async execute(_input, ctx) {
@@ -6,6 +6,7 @@ export function registerProjectActions(rl) {
6
6
  listAction("project.list", "List projects.", "projects", "ProjectFilter", PROJECT_FIELDS);
7
7
  getAction("project.get", "Get a project by ID or slug.", "project", PROJECT_FIELDS);
8
8
  rl.registerAction("project.create", {
9
+ access: "write",
9
10
  description: "Create a project. teamIds is required.",
10
11
  inputSchema: t.Object({
11
12
  name: t.String({ description: "The name of the project" }),
@@ -66,6 +67,7 @@ export function registerProjectActions(rl) {
66
67
  },
67
68
  });
68
69
  rl.registerAction("project.update", {
70
+ access: "write",
69
71
  description: "Update a project.",
70
72
  inputSchema: t.Object({
71
73
  id: t.String({
@@ -123,6 +125,7 @@ export function registerProjectActions(rl) {
123
125
  },
124
126
  });
125
127
  rl.registerAction("project.delete", {
128
+ access: "write",
126
129
  description: "Trash (soft-delete) a project. Restorable via project.unarchive.",
127
130
  inputSchema: t.Object({
128
131
  id: t.String({ description: "The identifier of the project to delete" }),
@@ -134,6 +137,7 @@ export function registerProjectActions(rl) {
134
137
  },
135
138
  });
136
139
  rl.registerAction("project.unarchive", {
140
+ access: "write",
137
141
  description: "Restore a previously trashed or archived project.",
138
142
  inputSchema: t.Object({
139
143
  id: t.String({
@@ -147,6 +151,7 @@ export function registerProjectActions(rl) {
147
151
  },
148
152
  });
149
153
  rl.registerAction("project.search", {
154
+ access: "read",
150
155
  description: "Search projects by text. Rate-limited to 30 req/min.",
151
156
  inputSchema: t.Object({
152
157
  term: t.String({ description: "Search string to look for" }),
@@ -179,6 +184,7 @@ export function registerProjectActions(rl) {
179
184
  listAction("milestone.list", "List project milestones.", "projectMilestones", "ProjectMilestoneFilter", MILESTONE_FIELDS);
180
185
  getAction("milestone.get", "Get a project milestone by ID.", "projectMilestone", MILESTONE_FIELDS);
181
186
  rl.registerAction("milestone.create", {
187
+ access: "write",
182
188
  description: "Create a project milestone.",
183
189
  inputSchema: t.Object({
184
190
  projectId: t.String({
@@ -206,6 +212,7 @@ export function registerProjectActions(rl) {
206
212
  },
207
213
  });
208
214
  rl.registerAction("milestone.update", {
215
+ access: "write",
209
216
  description: "Update a project milestone.",
210
217
  inputSchema: t.Object({
211
218
  id: t.String({
@@ -234,6 +241,7 @@ export function registerProjectActions(rl) {
234
241
  },
235
242
  });
236
243
  rl.registerAction("milestone.delete", {
244
+ access: "write",
237
245
  description: "Delete a project milestone.",
238
246
  inputSchema: t.Object({
239
247
  id: t.String({
@@ -249,6 +257,7 @@ export function registerProjectActions(rl) {
249
257
  // Project updates
250
258
  listAction("projectUpdate.list", "List project updates.", "projectUpdates", "ProjectUpdateFilter", PROJECT_UPDATE_FIELDS);
251
259
  rl.registerAction("projectUpdate.create", {
260
+ access: "write",
252
261
  description: "Post a status update on a project.",
253
262
  inputSchema: t.Object({
254
263
  projectId: t.String({
@@ -275,6 +284,7 @@ export function registerProjectActions(rl) {
275
284
  },
276
285
  });
277
286
  rl.registerAction("projectUpdate.update", {
287
+ access: "write",
278
288
  description: "Update a project status update.",
279
289
  inputSchema: t.Object({
280
290
  id: t.String({
@@ -299,6 +309,7 @@ export function registerProjectActions(rl) {
299
309
  },
300
310
  });
301
311
  rl.registerAction("projectUpdate.archive", {
312
+ access: "write",
302
313
  description: "Archive a project status update.",
303
314
  inputSchema: t.Object({
304
315
  id: t.String({
@@ -218,6 +218,7 @@ function requireRootFieldAvailable(ctx, action, rootField) {
218
218
  }
219
219
  export function registerListAction(rl, name, description, rootField, filterTypeName, selection) {
220
220
  rl.registerAction(name, {
221
+ access: "read",
221
222
  description,
222
223
  inputSchema: t.Object(LIST_INPUT_SCHEMA),
223
224
  async execute(input, ctx) {
@@ -232,6 +233,7 @@ export function registerListAction(rl, name, description, rootField, filterTypeN
232
233
  }
233
234
  export function registerGetAction(rl, name, description, rootField, selection) {
234
235
  rl.registerAction(name, {
236
+ access: "read",
235
237
  description,
236
238
  inputSchema: t.Object({
237
239
  id: t.String({ description: "Identifier or slug" }),
@@ -6,6 +6,7 @@ export function registerStateActions(rl) {
6
6
  listAction("state.list", "List workflow states. Filter by team for team-scoped states.", "workflowStates", "WorkflowStateFilter", STATE_FIELDS);
7
7
  getAction("state.get", "Get a workflow state by ID.", "workflowState", STATE_FIELDS);
8
8
  rl.registerAction("state.create", {
9
+ access: "write",
9
10
  description: "Create a workflow state in a team.",
10
11
  inputSchema: t.Object({
11
12
  teamId: t.String({ description: "The team associated with the state" }),
@@ -30,6 +31,7 @@ export function registerStateActions(rl) {
30
31
  },
31
32
  });
32
33
  rl.registerAction("state.update", {
34
+ access: "write",
33
35
  description: "Update a workflow state. Type cannot be changed after creation.",
34
36
  inputSchema: t.Object({
35
37
  id: t.String({ description: "The identifier of the state to update" }),
@@ -6,6 +6,7 @@ export function registerTeamActions(rl) {
6
6
  listAction("team.list", "List teams whose issues you can access.", "teams", "TeamFilter", TEAM_FIELDS);
7
7
  getAction("team.get", "Get a team by ID or key.", "team", TEAM_FIELDS);
8
8
  rl.registerAction("team.create", {
9
+ access: "write",
9
10
  description: "Create a team. Most settings have sensible defaults.",
10
11
  inputSchema: t.Object({
11
12
  name: t.String({ description: "The name of the team" }),
@@ -49,6 +50,7 @@ export function registerTeamActions(rl) {
49
50
  },
50
51
  });
51
52
  rl.registerAction("team.update", {
53
+ access: "write",
52
54
  description: "Update a team. Requires team owner or workspace admin permissions.",
53
55
  inputSchema: t.Object({
54
56
  id: t.String({ description: "The identifier of the team to update" }),
@@ -83,6 +85,7 @@ export function registerTeamActions(rl) {
83
85
  },
84
86
  });
85
87
  rl.registerAction("team.members", {
88
+ access: "read",
86
89
  description: "List members of a team.",
87
90
  inputSchema: t.Object({
88
91
  teamId: t.String({ description: "The identifier of the team" }),
@@ -6,6 +6,7 @@ export function registerUserActions(rl) {
6
6
  listAction("user.list", "List users in the workspace.", "users", "UserFilter", USER_FIELDS);
7
7
  getAction("user.get", "Get a user by ID. Use 'me' to reference the authenticated user.", "user", USER_FIELDS);
8
8
  rl.registerAction("user.me", {
9
+ access: "read",
9
10
  description: "Get the authenticated user.",
10
11
  inputSchema: t.Object({}),
11
12
  async execute(_input, ctx) {
@@ -14,6 +15,7 @@ export function registerUserActions(rl) {
14
15
  },
15
16
  });
16
17
  rl.registerAction("user.update", {
18
+ access: "write",
17
19
  description: "Update a user. Use id='me' to update the authenticated user.",
18
20
  inputSchema: t.Object({
19
21
  id: t.String({
@@ -6,6 +6,7 @@ export function registerViewActions(rl) {
6
6
  const getAction = bindGetAction(rl);
7
7
  function customViewConnectionAction(name, description, connectionField, filterTypeName, selection, includeSubTeamsDescription) {
8
8
  rl.registerAction(name, {
9
+ access: "read",
9
10
  description,
10
11
  inputSchema: t.Object({
11
12
  viewId: t.String({ description: "The custom view ID or slug" }),
@@ -44,6 +45,7 @@ export function registerViewActions(rl) {
44
45
  listAction("view.list", "List custom views accessible to the user, including personal and shared workspace views. Linear excludes views scoped to a specific project or initiative from this root query.", "customViews", "CustomViewFilter", CUSTOM_VIEW_FIELDS);
45
46
  getAction("view.get", "Get a custom view by ID or slug.", "customView", CUSTOM_VIEW_FIELDS);
46
47
  rl.registerAction("view.create", {
48
+ access: "write",
47
49
  description: "Create a custom view. Set filterData for issue views; projectFilterData, initiativeFilterData, or feedItemFilterData for other view types. Read matches back with view.issues/projects/initiatives/updates.",
48
50
  inputSchema: t.Object({
49
51
  name: t.String({ description: "The name of the custom view" }),
@@ -74,6 +76,7 @@ export function registerViewActions(rl) {
74
76
  },
75
77
  });
76
78
  rl.registerAction("view.update", {
79
+ access: "write",
77
80
  description: "Update a custom view. All fields optional; only provided fields are updated.",
78
81
  inputSchema: t.Object({
79
82
  id: t.String({
@@ -105,6 +108,7 @@ export function registerViewActions(rl) {
105
108
  },
106
109
  });
107
110
  rl.registerAction("view.delete", {
111
+ access: "write",
108
112
  description: "Delete a custom view.",
109
113
  inputSchema: t.Object({
110
114
  id: t.String({
@@ -6,6 +6,7 @@ export function registerWebhookActions(rl) {
6
6
  listAction("webhook.list", "List webhooks for the current workspace.", "webhooks", null, WEBHOOK_FIELDS);
7
7
  getAction("webhook.get", "Get a webhook by ID.", "webhook", WEBHOOK_FIELDS);
8
8
  rl.registerAction("webhook.create", {
9
+ access: "write",
9
10
  description: "Create a webhook. resourceTypes example: ['Issue','Comment','Project'].",
10
11
  inputSchema: t.Object({
11
12
  url: t.String({
@@ -38,6 +39,7 @@ export function registerWebhookActions(rl) {
38
39
  },
39
40
  });
40
41
  rl.registerAction("webhook.update", {
42
+ access: "write",
41
43
  description: "Update a webhook. teamId and allPublicTeams cannot be changed after creation.",
42
44
  inputSchema: t.Object({
43
45
  id: t.String({ description: "The identifier of the webhook to update" }),
@@ -61,6 +63,7 @@ export function registerWebhookActions(rl) {
61
63
  },
62
64
  });
63
65
  rl.registerAction("webhook.delete", {
66
+ access: "write",
64
67
  description: "Delete a webhook.",
65
68
  inputSchema: t.Object({
66
69
  id: t.String({ description: "The identifier of the webhook to delete" }),
@@ -72,6 +75,7 @@ export function registerWebhookActions(rl) {
72
75
  },
73
76
  });
74
77
  rl.registerAction("webhook.rotateSecret", {
78
+ access: "write",
75
79
  description: "Rotate a webhook's signing secret. Returns the new secret.",
76
80
  inputSchema: t.Object({
77
81
  id: t.String({
@@ -10,6 +10,7 @@ export default function lingvanex(rl) {
10
10
  },
11
11
  });
12
12
  rl.registerAction("translate", {
13
+ access: "write",
13
14
  description: "Translate text",
14
15
  inputSchema: {
15
16
  text: {
@@ -41,6 +41,7 @@ export default function linkedin(rl) {
41
41
  });
42
42
  const tok = (ctx) => ctx.connection.config.accessToken;
43
43
  rl.registerAction("post.create", {
44
+ access: "write",
44
45
  description: "Create a post on LinkedIn. Supports text-only, article shares, and text with commentary. Image uploads require binary data and are not supported in this plugin.",
45
46
  inputSchema: {
46
47
  postAs: {
@@ -34,6 +34,7 @@ export default function lonescale(rl) {
34
34
  });
35
35
  const key = (ctx) => ctx.connection.config.apiKey;
36
36
  rl.registerAction("list.create", {
37
+ access: "write",
37
38
  description: "Create a new list",
38
39
  inputSchema: {
39
40
  name: { type: "string", required: true, description: "List name" },
@@ -49,6 +50,7 @@ export default function lonescale(rl) {
49
50
  },
50
51
  });
51
52
  rl.registerAction("list.list", {
53
+ access: "read",
52
54
  description: "List all lists, optionally filtered by entity type",
53
55
  inputSchema: {
54
56
  entity: {
@@ -66,6 +68,7 @@ export default function lonescale(rl) {
66
68
  },
67
69
  });
68
70
  rl.registerAction("item.addPerson", {
71
+ access: "write",
69
72
  description: "Add a person (contact) to a list",
70
73
  inputSchema: {
71
74
  listId: { type: "string", required: true, description: "List ID" },
@@ -115,6 +118,7 @@ export default function lonescale(rl) {
115
118
  },
116
119
  });
117
120
  rl.registerAction("item.addCompany", {
121
+ access: "write",
118
122
  description: "Add a company to a list",
119
123
  inputSchema: {
120
124
  listId: { type: "string", required: true, description: "List ID" },
@@ -87,6 +87,7 @@ export default function magento(rl) {
87
87
  });
88
88
  // ── Customer ────────────────────────────────────────
89
89
  rl.registerAction("customer.create", {
90
+ access: "write",
90
91
  description: "Create a customer",
91
92
  inputSchema: {
92
93
  email: { type: "string", required: true },
@@ -130,6 +131,7 @@ export default function magento(rl) {
130
131
  },
131
132
  });
132
133
  rl.registerAction("customer.get", {
134
+ access: "read",
133
135
  description: "Get a customer by ID",
134
136
  inputSchema: { customerId: { type: "number", required: true } },
135
137
  async execute(input, ctx) {
@@ -138,6 +140,7 @@ export default function magento(rl) {
138
140
  },
139
141
  });
140
142
  rl.registerAction("customer.list", {
143
+ access: "read",
141
144
  description: "Search/list customers using Magento search_criteria",
142
145
  inputSchema: {
143
146
  searchCriteria: {
@@ -166,6 +169,7 @@ export default function magento(rl) {
166
169
  },
167
170
  });
168
171
  rl.registerAction("customer.update", {
172
+ access: "write",
169
173
  description: "Update a customer",
170
174
  inputSchema: {
171
175
  customerId: { type: "number", required: true },
@@ -204,6 +208,7 @@ export default function magento(rl) {
204
208
  },
205
209
  });
206
210
  rl.registerAction("customer.delete", {
211
+ access: "write",
207
212
  description: "Delete a customer",
208
213
  inputSchema: { customerId: { type: "number", required: true } },
209
214
  async execute(input, ctx) {
@@ -214,6 +219,7 @@ export default function magento(rl) {
214
219
  });
215
220
  // ── Invoice ─────────────────────────────────────────
216
221
  rl.registerAction("invoice.create", {
222
+ access: "write",
217
223
  description: "Create an invoice for an order",
218
224
  inputSchema: { orderId: { type: "number", required: true } },
219
225
  async execute(input, ctx) {
@@ -224,6 +230,7 @@ export default function magento(rl) {
224
230
  });
225
231
  // ── Order ───────────────────────────────────────────
226
232
  rl.registerAction("order.get", {
233
+ access: "read",
227
234
  description: "Get an order by ID",
228
235
  inputSchema: { orderId: { type: "number", required: true } },
229
236
  async execute(input, ctx) {
@@ -232,6 +239,7 @@ export default function magento(rl) {
232
239
  },
233
240
  });
234
241
  rl.registerAction("order.list", {
242
+ access: "read",
235
243
  description: "Search/list orders",
236
244
  inputSchema: {
237
245
  searchCriteria: {
@@ -256,6 +264,7 @@ export default function magento(rl) {
256
264
  },
257
265
  });
258
266
  rl.registerAction("order.cancel", {
267
+ access: "write",
259
268
  description: "Cancel an order",
260
269
  inputSchema: { orderId: { type: "number", required: true } },
261
270
  async execute(input, ctx) {
@@ -265,6 +274,7 @@ export default function magento(rl) {
265
274
  },
266
275
  });
267
276
  rl.registerAction("order.ship", {
277
+ access: "write",
268
278
  description: "Ship an order",
269
279
  inputSchema: { orderId: { type: "number", required: true } },
270
280
  async execute(input, ctx) {
@@ -275,6 +285,7 @@ export default function magento(rl) {
275
285
  });
276
286
  // ── Product ─────────────────────────────────────────
277
287
  rl.registerAction("product.create", {
288
+ access: "write",
278
289
  description: "Create a product",
279
290
  inputSchema: {
280
291
  sku: { type: "string", required: true },
@@ -311,6 +322,7 @@ export default function magento(rl) {
311
322
  },
312
323
  });
313
324
  rl.registerAction("product.get", {
325
+ access: "read",
314
326
  description: "Get a product by SKU",
315
327
  inputSchema: { sku: { type: "string", required: true } },
316
328
  async execute(input, ctx) {
@@ -319,6 +331,7 @@ export default function magento(rl) {
319
331
  },
320
332
  });
321
333
  rl.registerAction("product.list", {
334
+ access: "read",
322
335
  description: "Search/list products",
323
336
  inputSchema: {
324
337
  searchCriteria: { type: "object", required: false },
@@ -339,6 +352,7 @@ export default function magento(rl) {
339
352
  },
340
353
  });
341
354
  rl.registerAction("product.update", {
355
+ access: "write",
342
356
  description: "Update a product by SKU",
343
357
  inputSchema: {
344
358
  sku: { type: "string", required: true },
@@ -360,6 +374,7 @@ export default function magento(rl) {
360
374
  },
361
375
  });
362
376
  rl.registerAction("product.delete", {
377
+ access: "write",
363
378
  description: "Delete a product by SKU",
364
379
  inputSchema: { sku: { type: "string", required: true } },
365
380
  async execute(input, ctx) {
@@ -10,6 +10,7 @@ export default function mailcheck(rl) {
10
10
  },
11
11
  });
12
12
  rl.registerAction("email.check", {
13
+ access: "write",
13
14
  description: "Verify an email address",
14
15
  inputSchema: {
15
16
  email: {