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
@@ -84,6 +84,7 @@ export default function nextcloud(rl) {
84
84
  });
85
85
  // ── File/Folder operations (non-binary) ─────────────
86
86
  rl.registerAction("file.copy", {
87
+ access: "write",
87
88
  description: "Copy a file on Nextcloud",
88
89
  inputSchema: {
89
90
  path: {
@@ -107,6 +108,7 @@ export default function nextcloud(rl) {
107
108
  },
108
109
  });
109
110
  rl.registerAction("file.delete", {
111
+ access: "write",
110
112
  description: "Delete a file on Nextcloud",
111
113
  inputSchema: {
112
114
  path: {
@@ -122,6 +124,7 @@ export default function nextcloud(rl) {
122
124
  },
123
125
  });
124
126
  rl.registerAction("file.move", {
127
+ access: "write",
125
128
  description: "Move/rename a file on Nextcloud",
126
129
  inputSchema: {
127
130
  path: { type: "string", required: true, description: "Source file path" },
@@ -141,6 +144,7 @@ export default function nextcloud(rl) {
141
144
  },
142
145
  });
143
146
  rl.registerAction("file.share", {
147
+ access: "write",
144
148
  description: "Share a file or folder via Nextcloud sharing API",
145
149
  inputSchema: {
146
150
  path: {
@@ -185,6 +189,7 @@ export default function nextcloud(rl) {
185
189
  },
186
190
  });
187
191
  rl.registerAction("folder.create", {
192
+ access: "write",
188
193
  description: "Create a folder on Nextcloud",
189
194
  inputSchema: {
190
195
  path: {
@@ -200,6 +205,7 @@ export default function nextcloud(rl) {
200
205
  },
201
206
  });
202
207
  rl.registerAction("folder.delete", {
208
+ access: "write",
203
209
  description: "Delete a folder on Nextcloud",
204
210
  inputSchema: {
205
211
  path: {
@@ -215,6 +221,7 @@ export default function nextcloud(rl) {
215
221
  },
216
222
  });
217
223
  rl.registerAction("folder.copy", {
224
+ access: "write",
218
225
  description: "Copy a folder on Nextcloud",
219
226
  inputSchema: {
220
227
  path: {
@@ -238,6 +245,7 @@ export default function nextcloud(rl) {
238
245
  },
239
246
  });
240
247
  rl.registerAction("folder.move", {
248
+ access: "write",
241
249
  description: "Move/rename a folder on Nextcloud",
242
250
  inputSchema: {
243
251
  path: {
@@ -262,6 +270,7 @@ export default function nextcloud(rl) {
262
270
  });
263
271
  // ── User operations ─────────────────────────────────
264
272
  rl.registerAction("user.create", {
273
+ access: "write",
265
274
  description: "Create a user on Nextcloud",
266
275
  inputSchema: {
267
276
  userId: { type: "string", required: true, description: "Username" },
@@ -284,6 +293,7 @@ export default function nextcloud(rl) {
284
293
  },
285
294
  });
286
295
  rl.registerAction("user.delete", {
296
+ access: "write",
287
297
  description: "Delete a user on Nextcloud",
288
298
  inputSchema: {
289
299
  userId: { type: "string", required: true, description: "Username" },
@@ -295,6 +305,7 @@ export default function nextcloud(rl) {
295
305
  },
296
306
  });
297
307
  rl.registerAction("user.get", {
308
+ access: "read",
298
309
  description: "Get a user's information",
299
310
  inputSchema: {
300
311
  userId: { type: "string", required: true, description: "Username" },
@@ -306,6 +317,7 @@ export default function nextcloud(rl) {
306
317
  },
307
318
  });
308
319
  rl.registerAction("user.list", {
320
+ access: "read",
309
321
  description: "List all users",
310
322
  inputSchema: {
311
323
  limit: { type: "number", required: false, description: "Max results" },
@@ -326,6 +338,7 @@ export default function nextcloud(rl) {
326
338
  },
327
339
  });
328
340
  rl.registerAction("user.update", {
341
+ access: "write",
329
342
  description: "Update a user attribute (email, displayname, password, address, twitter, website)",
330
343
  inputSchema: {
331
344
  userId: { type: "string", required: true, description: "Username" },
@@ -59,6 +59,7 @@ export default function nocodb(rl) {
59
59
  },
60
60
  });
61
61
  rl.registerAction("row.create", {
62
+ access: "write",
62
63
  description: "Create one or more rows in a NocoDB table (v2 API)",
63
64
  inputSchema: {
64
65
  tableId: { type: "string", required: true, description: "Table ID" },
@@ -75,6 +76,7 @@ export default function nocodb(rl) {
75
76
  },
76
77
  });
77
78
  rl.registerAction("row.get", {
79
+ access: "read",
78
80
  description: "Get a single row by ID",
79
81
  inputSchema: {
80
82
  tableId: { type: "string", required: true, description: "Table ID" },
@@ -86,6 +88,7 @@ export default function nocodb(rl) {
86
88
  },
87
89
  });
88
90
  rl.registerAction("row.list", {
91
+ access: "read",
89
92
  description: "List rows from a NocoDB table",
90
93
  inputSchema: {
91
94
  tableId: { type: "string", required: true, description: "Table ID" },
@@ -144,6 +147,7 @@ export default function nocodb(rl) {
144
147
  },
145
148
  });
146
149
  rl.registerAction("row.update", {
150
+ access: "write",
147
151
  description: "Update one or more rows (include primary key in each row object)",
148
152
  inputSchema: {
149
153
  tableId: { type: "string", required: true, description: "Table ID" },
@@ -159,6 +163,7 @@ export default function nocodb(rl) {
159
163
  },
160
164
  });
161
165
  rl.registerAction("row.delete", {
166
+ access: "write",
162
167
  description: "Delete one or more rows by ID",
163
168
  inputSchema: {
164
169
  tableId: { type: "string", required: true, description: "Table ID" },
@@ -23,6 +23,7 @@ export default function node(rl) {
23
23
  const nodeActions = [
24
24
  // fs/promises-shaped actions
25
25
  action("fs.readFile", {
26
+ access: "read",
26
27
  description: "Read a file from the host filesystem",
27
28
  inputSchema: {
28
29
  path: { type: "string", required: true, description: "File path" },
@@ -38,6 +39,7 @@ const nodeActions = [
38
39
  },
39
40
  }),
40
41
  action("fs.writeFile", {
42
+ access: "write",
41
43
  description: "Write text data to a file on the host filesystem",
42
44
  inputSchema: {
43
45
  path: { type: "string", required: true, description: "File path" },
@@ -55,6 +57,7 @@ const nodeActions = [
55
57
  },
56
58
  }),
57
59
  action("fs.appendFile", {
60
+ access: "write",
58
61
  description: "Append text data to a file on the host filesystem",
59
62
  inputSchema: {
60
63
  path: { type: "string", required: true, description: "File path" },
@@ -76,6 +79,7 @@ const nodeActions = [
76
79
  },
77
80
  }),
78
81
  action("fs.readdir", {
82
+ access: "read",
79
83
  description: "List a directory",
80
84
  inputSchema: {
81
85
  ...pathInput("Directory path"),
@@ -99,6 +103,7 @@ const nodeActions = [
99
103
  },
100
104
  }),
101
105
  action("fs.stat", {
106
+ access: "read",
102
107
  description: "Stat a filesystem path",
103
108
  inputSchema: pathInput(),
104
109
  async execute(input) {
@@ -106,6 +111,7 @@ const nodeActions = [
106
111
  },
107
112
  }),
108
113
  action("fs.lstat", {
114
+ access: "read",
109
115
  description: "lstat a filesystem path",
110
116
  inputSchema: pathInput(),
111
117
  async execute(input) {
@@ -113,6 +119,7 @@ const nodeActions = [
113
119
  },
114
120
  }),
115
121
  action("fs.exists", {
122
+ access: "read",
116
123
  description: "Check whether a filesystem path exists",
117
124
  inputSchema: pathInput(),
118
125
  execute(input) {
@@ -120,6 +127,7 @@ const nodeActions = [
120
127
  },
121
128
  }),
122
129
  action("fs.access", {
130
+ access: "read",
123
131
  description: "Check file access",
124
132
  inputSchema: pathInput(),
125
133
  async execute(input) {
@@ -128,6 +136,7 @@ const nodeActions = [
128
136
  },
129
137
  }),
130
138
  action("fs.mkdir", {
139
+ access: "write",
131
140
  description: "Create a directory",
132
141
  inputSchema: {
133
142
  ...pathInput(),
@@ -144,6 +153,7 @@ const nodeActions = [
144
153
  },
145
154
  }),
146
155
  action("fs.rm", {
156
+ access: "write",
147
157
  description: "Remove a file or directory",
148
158
  inputSchema: {
149
159
  ...pathInput(),
@@ -165,6 +175,7 @@ const nodeActions = [
165
175
  },
166
176
  }),
167
177
  action("fs.unlink", {
178
+ access: "write",
168
179
  description: "Remove a file",
169
180
  inputSchema: pathInput(),
170
181
  async execute(input) {
@@ -174,6 +185,7 @@ const nodeActions = [
174
185
  },
175
186
  }),
176
187
  action("fs.rename", {
188
+ access: "write",
177
189
  description: "Rename a file or directory",
178
190
  inputSchema: {
179
191
  from: { type: "string", required: true, description: "Source path" },
@@ -186,6 +198,7 @@ const nodeActions = [
186
198
  },
187
199
  }),
188
200
  action("fs.copyFile", {
201
+ access: "write",
189
202
  description: "Copy a file",
190
203
  inputSchema: {
191
204
  from: { type: "string", required: true, description: "Source path" },
@@ -199,6 +212,7 @@ const nodeActions = [
199
212
  }),
200
213
  // path-shaped actions. Most accept either an array or { segments: string[] }.
201
214
  action("path.join", {
215
+ access: "read",
202
216
  description: "Join path segments",
203
217
  inputSchema: {
204
218
  segments: {
@@ -212,6 +226,7 @@ const nodeActions = [
212
226
  },
213
227
  }),
214
228
  action("path.resolve", {
229
+ access: "read",
215
230
  description: "Resolve path segments",
216
231
  inputSchema: {
217
232
  segments: {
@@ -225,6 +240,7 @@ const nodeActions = [
225
240
  },
226
241
  }),
227
242
  action("path.normalize", {
243
+ access: "read",
228
244
  description: "Normalize a path",
229
245
  inputSchema: pathInput(),
230
246
  execute(input) {
@@ -232,6 +248,7 @@ const nodeActions = [
232
248
  },
233
249
  }),
234
250
  action("path.dirname", {
251
+ access: "read",
235
252
  description: "Get a path dirname",
236
253
  inputSchema: pathInput(),
237
254
  execute(input) {
@@ -239,6 +256,7 @@ const nodeActions = [
239
256
  },
240
257
  }),
241
258
  action("path.basename", {
259
+ access: "read",
242
260
  description: "Get a path basename",
243
261
  inputSchema: {
244
262
  ...pathInput(),
@@ -254,6 +272,7 @@ const nodeActions = [
254
272
  },
255
273
  }),
256
274
  action("path.extname", {
275
+ access: "read",
257
276
  description: "Get a path extension",
258
277
  inputSchema: pathInput(),
259
278
  execute(input) {
@@ -261,6 +280,7 @@ const nodeActions = [
261
280
  },
262
281
  }),
263
282
  action("path.relative", {
283
+ access: "read",
264
284
  description: "Get a relative path",
265
285
  inputSchema: {
266
286
  from: { type: "string", required: true, description: "Source path" },
@@ -272,6 +292,7 @@ const nodeActions = [
272
292
  },
273
293
  }),
274
294
  action("path.isAbsolute", {
295
+ access: "read",
275
296
  description: "Check whether a path is absolute",
276
297
  inputSchema: pathInput(),
277
298
  execute(input) {
@@ -279,6 +300,7 @@ const nodeActions = [
279
300
  },
280
301
  }),
281
302
  action("path.parse", {
303
+ access: "read",
282
304
  description: "Parse a path into components",
283
305
  inputSchema: pathInput(),
284
306
  execute(input) {
@@ -286,6 +308,7 @@ const nodeActions = [
286
308
  },
287
309
  }),
288
310
  action("path.format", {
311
+ access: "read",
289
312
  description: "Format a path object into a path string",
290
313
  inputSchema: {
291
314
  pathObject: {
@@ -300,6 +323,7 @@ const nodeActions = [
300
323
  },
301
324
  }),
302
325
  action("path.constants", {
326
+ access: "read",
303
327
  description: "Get path separator constants",
304
328
  execute() {
305
329
  return { sep, delimiter };
@@ -307,6 +331,7 @@ const nodeActions = [
307
331
  }),
308
332
  // os/process/shell actions
309
333
  action("os.info", {
334
+ access: "read",
310
335
  description: "Get useful host OS information",
311
336
  execute() {
312
337
  return {
@@ -326,22 +351,27 @@ const nodeActions = [
326
351
  },
327
352
  }),
328
353
  action("os.platform", {
354
+ access: "read",
329
355
  description: "Get OS platform",
330
356
  execute: () => platform(),
331
357
  }),
332
358
  action("os.arch", {
359
+ access: "read",
333
360
  description: "Get OS architecture",
334
361
  execute: () => arch(),
335
362
  }),
336
363
  action("os.homedir", {
364
+ access: "read",
337
365
  description: "Get home directory",
338
366
  execute: () => homedir(),
339
367
  }),
340
368
  action("os.tmpdir", {
369
+ access: "read",
341
370
  description: "Get temp directory",
342
371
  execute: () => tmpdir(),
343
372
  }),
344
373
  action("os.userInfo", {
374
+ access: "read",
345
375
  description: "Get current user information",
346
376
  execute() {
347
377
  const info = userInfo();
@@ -355,10 +385,12 @@ const nodeActions = [
355
385
  },
356
386
  }),
357
387
  action("process.cwd", {
388
+ access: "read",
358
389
  description: "Get the current working directory",
359
390
  execute: () => process.cwd(),
360
391
  }),
361
392
  action("process.env", {
393
+ access: "read",
362
394
  description: "Read environment variables from the host process",
363
395
  inputSchema: {
364
396
  name: {
@@ -373,6 +405,7 @@ const nodeActions = [
373
405
  },
374
406
  }),
375
407
  action("process.exec", {
408
+ access: "write",
376
409
  description: "Run a shell command on the host",
377
410
  inputSchema: {
378
411
  command: {
@@ -402,6 +435,7 @@ const nodeActions = [
402
435
  },
403
436
  }),
404
437
  action("process.execFile", {
438
+ access: "write",
405
439
  description: "Run a host executable without a shell",
406
440
  inputSchema: {
407
441
  file: {
@@ -432,12 +466,14 @@ const nodeActions = [
432
466
  },
433
467
  }),
434
468
  action("crypto.randomUUID", {
469
+ access: "read",
435
470
  description: "Generate a random UUID using the host crypto runtime",
436
471
  execute() {
437
472
  return randomUUID();
438
473
  },
439
474
  }),
440
475
  action("crypto.randomBytes", {
476
+ access: "read",
441
477
  description: "Generate cryptographically strong random bytes as hex or base64",
442
478
  inputSchema: {
443
479
  size: {
@@ -457,6 +493,7 @@ const nodeActions = [
457
493
  },
458
494
  }),
459
495
  action("crypto.hash", {
496
+ access: "read",
460
497
  description: "Hash text data with a Node crypto digest algorithm",
461
498
  inputSchema: {
462
499
  algorithm: {
@@ -477,6 +514,7 @@ const nodeActions = [
477
514
  },
478
515
  }),
479
516
  action("fetch", {
517
+ access: "write",
480
518
  description: "Perform an HTTP fetch from the host runtime",
481
519
  inputSchema: {
482
520
  url: { type: "string", required: true, description: "Request URL" },
@@ -37,6 +37,7 @@ export default function notion(rl) {
37
37
  const t = (ctx) => ctx.connection.config.apiKey;
38
38
  // ── Block ───────────────────────────────────────────
39
39
  rl.registerAction("block.append", {
40
+ access: "write",
40
41
  description: "Append children blocks to a block/page",
41
42
  inputSchema: {
42
43
  blockId: { type: "string", required: true },
@@ -54,6 +55,7 @@ export default function notion(rl) {
54
55
  },
55
56
  });
56
57
  rl.registerAction("block.getChildren", {
58
+ access: "read",
57
59
  description: "Get child blocks of a block/page",
58
60
  inputSchema: {
59
61
  blockId: { type: "string", required: true },
@@ -69,6 +71,7 @@ export default function notion(rl) {
69
71
  },
70
72
  });
71
73
  rl.registerAction("block.delete", {
74
+ access: "write",
72
75
  description: "Delete (archive) a block",
73
76
  inputSchema: { blockId: { type: "string", required: true } },
74
77
  async execute(input, ctx) {
@@ -77,6 +80,7 @@ export default function notion(rl) {
77
80
  });
78
81
  // ── Database ────────────────────────────────────────
79
82
  rl.registerAction("database.get", {
83
+ access: "read",
80
84
  description: "Get a database",
81
85
  inputSchema: { databaseId: { type: "string", required: true } },
82
86
  async execute(input, ctx) {
@@ -84,6 +88,7 @@ export default function notion(rl) {
84
88
  },
85
89
  });
86
90
  rl.registerAction("database.list", {
91
+ access: "read",
87
92
  description: "List all databases (via search)",
88
93
  inputSchema: { limit: { type: "number", required: false } },
89
94
  async execute(input, ctx) {
@@ -97,6 +102,7 @@ export default function notion(rl) {
97
102
  },
98
103
  });
99
104
  rl.registerAction("database.query", {
105
+ access: "read",
100
106
  description: "Query a database (list pages with filters)",
101
107
  inputSchema: {
102
108
  databaseId: { type: "string", required: true },
@@ -127,6 +133,7 @@ export default function notion(rl) {
127
133
  });
128
134
  // ── Page ────────────────────────────────────────────
129
135
  rl.registerAction("page.create", {
136
+ access: "write",
130
137
  description: "Create a page (in a database or under a page)",
131
138
  inputSchema: {
132
139
  parent: {
@@ -151,6 +158,7 @@ export default function notion(rl) {
151
158
  },
152
159
  });
153
160
  rl.registerAction("page.get", {
161
+ access: "read",
154
162
  description: "Get a page",
155
163
  inputSchema: { pageId: { type: "string", required: true } },
156
164
  async execute(input, ctx) {
@@ -158,6 +166,7 @@ export default function notion(rl) {
158
166
  },
159
167
  });
160
168
  rl.registerAction("page.update", {
169
+ access: "write",
161
170
  description: "Update page properties",
162
171
  inputSchema: {
163
172
  pageId: { type: "string", required: true },
@@ -171,6 +180,7 @@ export default function notion(rl) {
171
180
  },
172
181
  });
173
182
  rl.registerAction("page.archive", {
183
+ access: "write",
174
184
  description: "Archive a page",
175
185
  inputSchema: { pageId: { type: "string", required: true } },
176
186
  async execute(input, ctx) {
@@ -178,6 +188,7 @@ export default function notion(rl) {
178
188
  },
179
189
  });
180
190
  rl.registerAction("page.search", {
191
+ access: "read",
181
192
  description: "Search pages",
182
193
  inputSchema: {
183
194
  query: { type: "string", required: false },
@@ -196,6 +207,7 @@ export default function notion(rl) {
196
207
  });
197
208
  // ── User ────────────────────────────────────────────
198
209
  rl.registerAction("user.get", {
210
+ access: "read",
199
211
  description: "Get a user",
200
212
  inputSchema: { userId: { type: "string", required: true } },
201
213
  async execute(input, ctx) {
@@ -203,6 +215,7 @@ export default function notion(rl) {
203
215
  },
204
216
  });
205
217
  rl.registerAction("user.list", {
218
+ access: "read",
206
219
  description: "List all users",
207
220
  inputSchema: { limit: { type: "number", required: false } },
208
221
  async execute(input, ctx) {
@@ -214,6 +227,7 @@ export default function notion(rl) {
214
227
  },
215
228
  });
216
229
  rl.registerAction("user.me", {
230
+ access: "read",
217
231
  description: "Get the bot user",
218
232
  inputSchema: {},
219
233
  async execute(_input, ctx) {
@@ -39,6 +39,7 @@ export default function npm(rl) {
39
39
  },
40
40
  });
41
41
  rl.registerAction("package.getMetadata", {
42
+ access: "read",
42
43
  description: "Get metadata for a package at a specific version",
43
44
  inputSchema: {
44
45
  packageName: {
@@ -59,6 +60,7 @@ export default function npm(rl) {
59
60
  },
60
61
  });
61
62
  rl.registerAction("package.getVersions", {
63
+ access: "read",
62
64
  description: "Get all versions for a package with publish dates",
63
65
  inputSchema: {
64
66
  packageName: {
@@ -80,6 +82,7 @@ export default function npm(rl) {
80
82
  },
81
83
  });
82
84
  rl.registerAction("package.search", {
85
+ access: "read",
83
86
  description: "Search for packages on the npm registry",
84
87
  inputSchema: {
85
88
  query: { type: "string", required: true, description: "Search query" },
@@ -111,6 +114,7 @@ export default function npm(rl) {
111
114
  },
112
115
  });
113
116
  rl.registerAction("distTag.list", {
117
+ access: "read",
114
118
  description: "Get all dist-tags for a package",
115
119
  inputSchema: {
116
120
  packageName: {
@@ -125,6 +129,7 @@ export default function npm(rl) {
125
129
  },
126
130
  });
127
131
  rl.registerAction("distTag.update", {
132
+ access: "write",
128
133
  description: "Update a dist-tag for a package (requires auth)",
129
134
  inputSchema: {
130
135
  packageName: {
@@ -101,6 +101,7 @@ export default function odoo(rl) {
101
101
  return { url: c.url, db, uid, password: c.password };
102
102
  }
103
103
  rl.registerAction("record.create", {
104
+ access: "write",
104
105
  description: "Create a record in any Odoo model (contact, opportunity, note, or custom model name)",
105
106
  inputSchema: {
106
107
  model: {
@@ -122,6 +123,7 @@ export default function odoo(rl) {
122
123
  },
123
124
  });
124
125
  rl.registerAction("record.get", {
126
+ access: "read",
125
127
  description: "Read a record by ID",
126
128
  inputSchema: {
127
129
  model: {
@@ -144,6 +146,7 @@ export default function odoo(rl) {
144
146
  },
145
147
  });
146
148
  rl.registerAction("record.list", {
149
+ access: "read",
147
150
  description: "Search and read records from any Odoo model",
148
151
  inputSchema: {
149
152
  model: {
@@ -183,6 +186,7 @@ export default function odoo(rl) {
183
186
  },
184
187
  });
185
188
  rl.registerAction("record.update", {
189
+ access: "write",
186
190
  description: "Update a record by ID",
187
191
  inputSchema: {
188
192
  model: {
@@ -205,6 +209,7 @@ export default function odoo(rl) {
205
209
  },
206
210
  });
207
211
  rl.registerAction("record.delete", {
212
+ access: "write",
208
213
  description: "Delete a record by ID",
209
214
  inputSchema: {
210
215
  model: {
@@ -222,6 +227,7 @@ export default function odoo(rl) {
222
227
  },
223
228
  });
224
229
  rl.registerAction("model.getFields", {
230
+ access: "read",
225
231
  description: "Get field definitions for an Odoo model",
226
232
  inputSchema: {
227
233
  model: {
@@ -64,6 +64,7 @@ export default function okta(rl) {
64
64
  },
65
65
  });
66
66
  rl.registerAction("user.create", {
67
+ access: "write",
67
68
  description: "Create a new user in Okta",
68
69
  inputSchema: {
69
70
  firstName: { type: "string", required: true },
@@ -109,6 +110,7 @@ export default function okta(rl) {
109
110
  },
110
111
  });
111
112
  rl.registerAction("user.get", {
113
+ access: "read",
112
114
  description: "Get user details by ID or login",
113
115
  inputSchema: {
114
116
  userId: {
@@ -124,6 +126,7 @@ export default function okta(rl) {
124
126
  },
125
127
  });
126
128
  rl.registerAction("user.list", {
129
+ access: "read",
127
130
  description: "List users (with optional search query)",
128
131
  inputSchema: {
129
132
  search: {
@@ -152,6 +155,7 @@ export default function okta(rl) {
152
155
  },
153
156
  });
154
157
  rl.registerAction("user.update", {
158
+ access: "write",
155
159
  description: "Update a user's profile",
156
160
  inputSchema: {
157
161
  userId: { type: "string", required: true, description: "User ID" },
@@ -168,6 +172,7 @@ export default function okta(rl) {
168
172
  },
169
173
  });
170
174
  rl.registerAction("user.delete", {
175
+ access: "write",
171
176
  description: "Delete (deactivate and then delete) a user",
172
177
  inputSchema: {
173
178
  userId: { type: "string", required: true, description: "User ID" },