runline 0.11.6 → 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 (251) 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/issues.js +4 -0
  193. package/dist/plugins/shiftLabs/src/pages.js +10 -0
  194. package/dist/plugins/shopify/src/index.js +10 -0
  195. package/dist/plugins/signl4/src/index.js +2 -0
  196. package/dist/plugins/slack/src/index.js +38 -0
  197. package/dist/plugins/sms77/src/index.js +2 -0
  198. package/dist/plugins/splunk/src/index.js +16 -0
  199. package/dist/plugins/spotify/src/index.js +30 -0
  200. package/dist/plugins/stackby/src/index.js +4 -0
  201. package/dist/plugins/steel/src/browser.js +7 -0
  202. package/dist/plugins/steel/src/captchas.js +3 -0
  203. package/dist/plugins/steel/src/credentials.js +4 -0
  204. package/dist/plugins/steel/src/extensions.js +5 -0
  205. package/dist/plugins/steel/src/files.js +10 -0
  206. package/dist/plugins/steel/src/profiles.js +4 -0
  207. package/dist/plugins/steel/src/sessions.js +11 -0
  208. package/dist/plugins/storyblok/src/index.js +7 -0
  209. package/dist/plugins/strapi/src/index.js +5 -0
  210. package/dist/plugins/strava/src/index.js +6 -0
  211. package/dist/plugins/stripe/src/index.js +20 -0
  212. package/dist/plugins/supabase/src/index.js +5 -0
  213. package/dist/plugins/syncromsp/src/index.js +20 -0
  214. package/dist/plugins/tapfiliate/src/index.js +11 -0
  215. package/dist/plugins/telegram/src/index.js +21 -0
  216. package/dist/plugins/thehive/src/index.js +23 -0
  217. package/dist/plugins/thehiveProject/src/index.js +31 -0
  218. package/dist/plugins/todoist/src/index.js +31 -0
  219. package/dist/plugins/together/src/index.js +1 -0
  220. package/dist/plugins/travisci/src/index.js +5 -0
  221. package/dist/plugins/trello/src/index.js +37 -0
  222. package/dist/plugins/twake/src/index.js +1 -0
  223. package/dist/plugins/twilio/src/index.js +2 -0
  224. package/dist/plugins/twist/src/index.js +22 -0
  225. package/dist/plugins/twitter/src/index.js +8 -0
  226. package/dist/plugins/unleashedSoftware/src/index.js +3 -0
  227. package/dist/plugins/uplead/src/index.js +2 -0
  228. package/dist/plugins/uproc/src/index.js +1 -0
  229. package/dist/plugins/uptimerobot/src/index.js +22 -0
  230. package/dist/plugins/urlscanio/src/index.js +3 -0
  231. package/dist/plugins/vercel/src/account.js +1 -0
  232. package/dist/plugins/vercel/src/deployments.js +5 -0
  233. package/dist/plugins/vercel/src/env.js +4 -0
  234. package/dist/plugins/vercel/src/projects.js +2 -0
  235. package/dist/plugins/vercel/src/shared.js +1 -0
  236. package/dist/plugins/vero/src/index.js +6 -0
  237. package/dist/plugins/vonage/src/index.js +1 -0
  238. package/dist/plugins/wekan/src/index.js +24 -0
  239. package/dist/plugins/woocommerce/src/index.js +5 -0
  240. package/dist/plugins/wordpress/src/index.js +10 -0
  241. package/dist/plugins/xai/src/index.js +1 -0
  242. package/dist/plugins/xero/src/index.js +8 -0
  243. package/dist/plugins/yourls/src/index.js +3 -0
  244. package/dist/plugins/zammad/src/index.js +12 -0
  245. package/dist/plugins/zendesk/src/index.js +18 -0
  246. package/dist/plugins/zoho/src/index.js +6 -0
  247. package/dist/plugins/zoom/src/index.js +5 -0
  248. package/dist/plugins/zulip/src/index.js +15 -0
  249. package/dist/sdk.d.ts +2 -1
  250. package/dist/sdk.js +1 -0
  251. package/package.json +1 -1
@@ -40,6 +40,7 @@ const TABLES = {
40
40
  };
41
41
  function registerTableResource(rl, resource, table, conn) {
42
42
  rl.registerAction(`${resource}.create`, {
43
+ access: "write",
43
44
  description: `Create a ${resource}`,
44
45
  inputSchema: { data: { type: "object", required: true } },
45
46
  async execute(input, ctx) {
@@ -48,6 +49,7 @@ function registerTableResource(rl, resource, table, conn) {
48
49
  },
49
50
  });
50
51
  rl.registerAction(`${resource}.get`, {
52
+ access: "read",
51
53
  description: `Get a ${resource} by sys_id`,
52
54
  inputSchema: { sysId: { type: "string", required: true } },
53
55
  async execute(input, ctx) {
@@ -56,6 +58,7 @@ function registerTableResource(rl, resource, table, conn) {
56
58
  },
57
59
  });
58
60
  rl.registerAction(`${resource}.list`, {
61
+ access: "read",
59
62
  description: `List ${resource}s`,
60
63
  inputSchema: {
61
64
  limit: { type: "number", required: false },
@@ -84,6 +87,7 @@ function registerTableResource(rl, resource, table, conn) {
84
87
  },
85
88
  });
86
89
  rl.registerAction(`${resource}.update`, {
90
+ access: "write",
87
91
  description: `Update a ${resource}`,
88
92
  inputSchema: {
89
93
  sysId: { type: "string", required: true },
@@ -96,6 +100,7 @@ function registerTableResource(rl, resource, table, conn) {
96
100
  },
97
101
  });
98
102
  rl.registerAction(`${resource}.delete`, {
103
+ access: "write",
99
104
  description: `Delete a ${resource}`,
100
105
  inputSchema: { sysId: { type: "string", required: true } },
101
106
  async execute(input, ctx) {
@@ -132,6 +137,7 @@ export default function servicenow(rl) {
132
137
  }
133
138
  // ── Generic Table Record ────────────────────────────
134
139
  rl.registerAction("tableRecord.create", {
140
+ access: "write",
135
141
  description: "Create a record in any table",
136
142
  inputSchema: {
137
143
  tableName: { type: "string", required: true },
@@ -144,6 +150,7 @@ export default function servicenow(rl) {
144
150
  },
145
151
  });
146
152
  rl.registerAction("tableRecord.get", {
153
+ access: "read",
147
154
  description: "Get a record from any table",
148
155
  inputSchema: {
149
156
  tableName: { type: "string", required: true },
@@ -156,6 +163,7 @@ export default function servicenow(rl) {
156
163
  },
157
164
  });
158
165
  rl.registerAction("tableRecord.list", {
166
+ access: "read",
159
167
  description: "List records from any table",
160
168
  inputSchema: {
161
169
  tableName: { type: "string", required: true },
@@ -174,6 +182,7 @@ export default function servicenow(rl) {
174
182
  },
175
183
  });
176
184
  rl.registerAction("tableRecord.update", {
185
+ access: "write",
177
186
  description: "Update a record in any table",
178
187
  inputSchema: {
179
188
  tableName: { type: "string", required: true },
@@ -187,6 +196,7 @@ export default function servicenow(rl) {
187
196
  },
188
197
  });
189
198
  rl.registerAction("tableRecord.delete", {
199
+ access: "write",
190
200
  description: "Delete a record from any table",
191
201
  inputSchema: {
192
202
  tableName: { type: "string", required: true },
@@ -2,6 +2,7 @@ import * as t from "typebox";
2
2
  import { enumSchema, ISSUE_KIND, ISSUE_PRIORITY, ISSUE_SEVERITY, ISSUE_SOURCE, ISSUE_STATUS, request, } from "./shared.js";
3
3
  export function registerIssueActions(rl) {
4
4
  rl.registerAction("issue.list", {
5
+ access: "read",
5
6
  description: "List Shift Labs issues for the API key's organization.",
6
7
  inputSchema: t.Object({
7
8
  status: t.Optional(enumSchema("Issue status", ISSUE_STATUS)),
@@ -22,6 +23,7 @@ export function registerIssueActions(rl) {
22
23
  },
23
24
  });
24
25
  rl.registerAction("issue.get", {
26
+ access: "read",
25
27
  description: "Get a Shift Labs issue by ID.",
26
28
  inputSchema: t.Object({ id: t.String({ description: "Issue ID" }) }),
27
29
  async execute(input, ctx) {
@@ -31,6 +33,7 @@ export function registerIssueActions(rl) {
31
33
  },
32
34
  });
33
35
  rl.registerAction("issue.create", {
36
+ access: "write",
34
37
  description: "Create a Shift Labs issue. The issue starts in triage.",
35
38
  inputSchema: t.Object({
36
39
  title: t.String({ description: "Issue title" }),
@@ -56,6 +59,7 @@ export function registerIssueActions(rl) {
56
59
  },
57
60
  });
58
61
  rl.registerAction("issue.comment", {
62
+ access: "write",
59
63
  description: "Add a comment to a Shift Labs issue.",
60
64
  inputSchema: t.Object({
61
65
  id: t.String({ description: "Issue ID" }),
@@ -2,6 +2,7 @@ import * as t from "typebox";
2
2
  import { enumSchema, PAGE_STATUS, PAGE_VISIBILITY, pageRenderUrl, request, } from "./shared.js";
3
3
  export function registerPageActions(rl) {
4
4
  rl.registerAction("page.list", {
5
+ access: "read",
5
6
  description: "List Shift Labs pages for the API key's organization.",
6
7
  inputSchema: t.Object({
7
8
  status: t.Optional(enumSchema("Page status", PAGE_STATUS)),
@@ -19,6 +20,7 @@ export function registerPageActions(rl) {
19
20
  },
20
21
  });
21
22
  rl.registerAction("page.get", {
23
+ access: "read",
22
24
  description: "Get a Shift Labs page by ID.",
23
25
  inputSchema: t.Object({ id: t.String({ description: "Page ID" }) }),
24
26
  async execute(input, ctx) {
@@ -28,6 +30,7 @@ export function registerPageActions(rl) {
28
30
  },
29
31
  });
30
32
  rl.registerAction("page.create", {
33
+ access: "write",
31
34
  description: "Create a draft hosted HTML page. Agents can publish it with page.publish.",
32
35
  inputSchema: t.Object({
33
36
  slug: t.String({ description: "Lowercase kebab-case page slug" }),
@@ -49,6 +52,7 @@ export function registerPageActions(rl) {
49
52
  },
50
53
  });
51
54
  rl.registerAction("page.update", {
55
+ access: "write",
52
56
  description: "Update a hosted HTML page's slug, title, visibility, or HTML.",
53
57
  inputSchema: t.Object({
54
58
  id: t.String({ description: "Page ID" }),
@@ -67,6 +71,7 @@ export function registerPageActions(rl) {
67
71
  },
68
72
  });
69
73
  rl.registerAction("page.publish", {
74
+ access: "write",
70
75
  description: "Publish a Shift Labs hosted HTML page.",
71
76
  inputSchema: t.Object({ id: t.String({ description: "Page ID" }) }),
72
77
  async execute(input, ctx) {
@@ -76,6 +81,7 @@ export function registerPageActions(rl) {
76
81
  },
77
82
  });
78
83
  rl.registerAction("page.archive", {
84
+ access: "write",
79
85
  description: "Archive a Shift Labs page.",
80
86
  inputSchema: t.Object({ id: t.String({ description: "Page ID" }) }),
81
87
  async execute(input, ctx) {
@@ -85,6 +91,7 @@ export function registerPageActions(rl) {
85
91
  },
86
92
  });
87
93
  rl.registerAction("page.shares", {
94
+ access: "read",
88
95
  description: "List shares for a Shift Labs page.",
89
96
  inputSchema: t.Object({ pageId: t.String({ description: "Page ID" }) }),
90
97
  async execute(input, ctx) {
@@ -94,6 +101,7 @@ export function registerPageActions(rl) {
94
101
  },
95
102
  });
96
103
  rl.registerAction("page.share", {
104
+ access: "write",
97
105
  description: "Create a viewer share for a Shift Labs page.",
98
106
  inputSchema: t.Object({
99
107
  pageId: t.String({ description: "Page ID" }),
@@ -110,6 +118,7 @@ export function registerPageActions(rl) {
110
118
  },
111
119
  });
112
120
  rl.registerAction("page.revokeShare", {
121
+ access: "write",
113
122
  description: "Revoke a Shift Labs page share.",
114
123
  inputSchema: t.Object({
115
124
  shareId: t.String({ description: "Page share ID" }),
@@ -123,6 +132,7 @@ export function registerPageActions(rl) {
123
132
  },
124
133
  });
125
134
  rl.registerAction("page.renderUrl", {
135
+ access: "read",
126
136
  description: "Return the authenticated render URL for a page.",
127
137
  inputSchema: t.Object({
128
138
  pageId: t.String({ description: "Page ID" }),
@@ -75,6 +75,7 @@ export default function shopify(rl) {
75
75
  });
76
76
  // ── Order ───────────────────────────────────────────
77
77
  rl.registerAction("order.create", {
78
+ access: "write",
78
79
  description: "Create an order",
79
80
  inputSchema: {
80
81
  lineItems: {
@@ -110,6 +111,7 @@ export default function shopify(rl) {
110
111
  },
111
112
  });
112
113
  rl.registerAction("order.get", {
114
+ access: "read",
113
115
  description: "Get an order by ID",
114
116
  inputSchema: {
115
117
  orderId: { type: "string", required: true },
@@ -125,6 +127,7 @@ export default function shopify(rl) {
125
127
  },
126
128
  });
127
129
  rl.registerAction("order.list", {
130
+ access: "read",
128
131
  description: "List orders",
129
132
  inputSchema: {
130
133
  status: {
@@ -155,6 +158,7 @@ export default function shopify(rl) {
155
158
  },
156
159
  });
157
160
  rl.registerAction("order.update", {
161
+ access: "write",
158
162
  description: "Update an order",
159
163
  inputSchema: {
160
164
  orderId: { type: "string", required: true },
@@ -176,6 +180,7 @@ export default function shopify(rl) {
176
180
  },
177
181
  });
178
182
  rl.registerAction("order.delete", {
183
+ access: "write",
179
184
  description: "Delete an order",
180
185
  inputSchema: { orderId: { type: "string", required: true } },
181
186
  async execute(input, ctx) {
@@ -185,6 +190,7 @@ export default function shopify(rl) {
185
190
  });
186
191
  // ── Product ─────────────────────────────────────────
187
192
  rl.registerAction("product.create", {
193
+ access: "write",
188
194
  description: "Create a product",
189
195
  inputSchema: {
190
196
  title: { type: "string", required: true },
@@ -202,6 +208,7 @@ export default function shopify(rl) {
202
208
  },
203
209
  });
204
210
  rl.registerAction("product.get", {
211
+ access: "read",
205
212
  description: "Get a product by ID",
206
213
  inputSchema: {
207
214
  productId: { type: "string", required: true },
@@ -217,6 +224,7 @@ export default function shopify(rl) {
217
224
  },
218
225
  });
219
226
  rl.registerAction("product.list", {
227
+ access: "read",
220
228
  description: "List products",
221
229
  inputSchema: {
222
230
  limit: { type: "number", required: false },
@@ -237,6 +245,7 @@ export default function shopify(rl) {
237
245
  },
238
246
  });
239
247
  rl.registerAction("product.update", {
248
+ access: "write",
240
249
  description: "Update a product",
241
250
  inputSchema: {
242
251
  productId: { type: "string", required: true },
@@ -253,6 +262,7 @@ export default function shopify(rl) {
253
262
  },
254
263
  });
255
264
  rl.registerAction("product.delete", {
265
+ access: "write",
256
266
  description: "Delete a product",
257
267
  inputSchema: { productId: { type: "string", required: true } },
258
268
  async execute(input, ctx) {
@@ -11,6 +11,7 @@ export default function signl4(rl) {
11
11
  });
12
12
  const url = (ctx) => `https://connect.signl4.com/webhook/${ctx.connection.config.teamSecret}`;
13
13
  rl.registerAction("alert.send", {
14
+ access: "write",
14
15
  description: "Send a SIGNL4 alert",
15
16
  inputSchema: {
16
17
  message: { type: "string", required: true },
@@ -55,6 +56,7 @@ export default function signl4(rl) {
55
56
  },
56
57
  });
57
58
  rl.registerAction("alert.resolve", {
59
+ access: "write",
58
60
  description: "Resolve a SIGNL4 alert by external ID",
59
61
  inputSchema: {
60
62
  externalId: { type: "string", required: true },
@@ -37,6 +37,7 @@ export default function slack(rl) {
37
37
  const t = (ctx) => ctx.connection.config.accessToken;
38
38
  // ── Message ─────────────────────────────────────────
39
39
  rl.registerAction("message.post", {
40
+ access: "write",
40
41
  description: "Post a message to a channel or user",
41
42
  inputSchema: {
42
43
  channel: { type: "string", required: true },
@@ -63,6 +64,7 @@ export default function slack(rl) {
63
64
  },
64
65
  });
65
66
  rl.registerAction("message.update", {
67
+ access: "write",
66
68
  description: "Update a message",
67
69
  inputSchema: {
68
70
  channel: { type: "string", required: true },
@@ -75,6 +77,7 @@ export default function slack(rl) {
75
77
  },
76
78
  });
77
79
  rl.registerAction("message.delete", {
80
+ access: "write",
78
81
  description: "Delete a message",
79
82
  inputSchema: {
80
83
  channel: { type: "string", required: true },
@@ -85,6 +88,7 @@ export default function slack(rl) {
85
88
  },
86
89
  });
87
90
  rl.registerAction("message.getPermalink", {
91
+ access: "read",
88
92
  description: "Get a message permalink",
89
93
  inputSchema: {
90
94
  channel: { type: "string", required: true },
@@ -99,6 +103,7 @@ export default function slack(rl) {
99
103
  },
100
104
  });
101
105
  rl.registerAction("message.search", {
106
+ access: "read",
102
107
  description: "Search messages",
103
108
  inputSchema: {
104
109
  query: { type: "string", required: true },
@@ -122,6 +127,7 @@ export default function slack(rl) {
122
127
  });
123
128
  // ── Channel ─────────────────────────────────────────
124
129
  rl.registerAction("channel.create", {
130
+ access: "write",
125
131
  description: "Create a channel",
126
132
  inputSchema: {
127
133
  name: { type: "string", required: true },
@@ -137,6 +143,7 @@ export default function slack(rl) {
137
143
  },
138
144
  });
139
145
  rl.registerAction("channel.get", {
146
+ access: "read",
140
147
  description: "Get channel info",
141
148
  inputSchema: { channel: { type: "string", required: true } },
142
149
  async execute(input, ctx) {
@@ -145,6 +152,7 @@ export default function slack(rl) {
145
152
  },
146
153
  });
147
154
  rl.registerAction("channel.list", {
155
+ access: "read",
148
156
  description: "List channels",
149
157
  inputSchema: {
150
158
  limit: { type: "number", required: false },
@@ -169,6 +177,7 @@ export default function slack(rl) {
169
177
  },
170
178
  });
171
179
  rl.registerAction("channel.history", {
180
+ access: "read",
172
181
  description: "Get channel message history",
173
182
  inputSchema: {
174
183
  channel: { type: "string", required: true },
@@ -190,6 +199,7 @@ export default function slack(rl) {
190
199
  },
191
200
  });
192
201
  rl.registerAction("channel.replies", {
202
+ access: "read",
193
203
  description: "Get thread replies",
194
204
  inputSchema: {
195
205
  channel: { type: "string", required: true },
@@ -206,6 +216,7 @@ export default function slack(rl) {
206
216
  },
207
217
  });
208
218
  rl.registerAction("channel.invite", {
219
+ access: "write",
209
220
  description: "Invite users to a channel",
210
221
  inputSchema: {
211
222
  channel: { type: "string", required: true },
@@ -225,6 +236,7 @@ export default function slack(rl) {
225
236
  },
226
237
  });
227
238
  rl.registerAction("channel.kick", {
239
+ access: "write",
228
240
  description: "Remove a user from a channel",
229
241
  inputSchema: {
230
242
  channel: { type: "string", required: true },
@@ -235,6 +247,7 @@ export default function slack(rl) {
235
247
  },
236
248
  });
237
249
  rl.registerAction("channel.join", {
250
+ access: "write",
238
251
  description: "Join a channel",
239
252
  inputSchema: { channel: { type: "string", required: true } },
240
253
  async execute(input, ctx) {
@@ -245,6 +258,7 @@ export default function slack(rl) {
245
258
  },
246
259
  });
247
260
  rl.registerAction("channel.leave", {
261
+ access: "write",
248
262
  description: "Leave a channel",
249
263
  inputSchema: { channel: { type: "string", required: true } },
250
264
  async execute(input, ctx) {
@@ -254,6 +268,7 @@ export default function slack(rl) {
254
268
  },
255
269
  });
256
270
  rl.registerAction("channel.archive", {
271
+ access: "write",
257
272
  description: "Archive a channel",
258
273
  inputSchema: { channel: { type: "string", required: true } },
259
274
  async execute(input, ctx) {
@@ -263,6 +278,7 @@ export default function slack(rl) {
263
278
  },
264
279
  });
265
280
  rl.registerAction("channel.unarchive", {
281
+ access: "write",
266
282
  description: "Unarchive a channel",
267
283
  inputSchema: { channel: { type: "string", required: true } },
268
284
  async execute(input, ctx) {
@@ -272,6 +288,7 @@ export default function slack(rl) {
272
288
  },
273
289
  });
274
290
  rl.registerAction("channel.rename", {
291
+ access: "write",
275
292
  description: "Rename a channel",
276
293
  inputSchema: {
277
294
  channel: { type: "string", required: true },
@@ -283,6 +300,7 @@ export default function slack(rl) {
283
300
  },
284
301
  });
285
302
  rl.registerAction("channel.setTopic", {
303
+ access: "write",
286
304
  description: "Set channel topic",
287
305
  inputSchema: {
288
306
  channel: { type: "string", required: true },
@@ -294,6 +312,7 @@ export default function slack(rl) {
294
312
  },
295
313
  });
296
314
  rl.registerAction("channel.setPurpose", {
315
+ access: "write",
297
316
  description: "Set channel purpose",
298
317
  inputSchema: {
299
318
  channel: { type: "string", required: true },
@@ -305,6 +324,7 @@ export default function slack(rl) {
305
324
  },
306
325
  });
307
326
  rl.registerAction("channel.members", {
327
+ access: "read",
308
328
  description: "List channel members",
309
329
  inputSchema: {
310
330
  channel: { type: "string", required: true },
@@ -321,6 +341,7 @@ export default function slack(rl) {
321
341
  });
322
342
  // ── Reaction ────────────────────────────────────────
323
343
  rl.registerAction("reaction.add", {
344
+ access: "write",
324
345
  description: "Add a reaction to a message",
325
346
  inputSchema: {
326
347
  channel: { type: "string", required: true },
@@ -336,6 +357,7 @@ export default function slack(rl) {
336
357
  },
337
358
  });
338
359
  rl.registerAction("reaction.remove", {
360
+ access: "write",
339
361
  description: "Remove a reaction",
340
362
  inputSchema: {
341
363
  channel: { type: "string", required: true },
@@ -347,6 +369,7 @@ export default function slack(rl) {
347
369
  },
348
370
  });
349
371
  rl.registerAction("reaction.get", {
372
+ access: "read",
350
373
  description: "Get reactions for a message",
351
374
  inputSchema: {
352
375
  channel: { type: "string", required: true },
@@ -358,6 +381,7 @@ export default function slack(rl) {
358
381
  });
359
382
  // ── User ────────────────────────────────────────────
360
383
  rl.registerAction("user.info", {
384
+ access: "read",
361
385
  description: "Get user info",
362
386
  inputSchema: { user: { type: "string", required: true } },
363
387
  async execute(input, ctx) {
@@ -368,6 +392,7 @@ export default function slack(rl) {
368
392
  },
369
393
  });
370
394
  rl.registerAction("user.list", {
395
+ access: "read",
371
396
  description: "List all users",
372
397
  inputSchema: { limit: { type: "number", required: false } },
373
398
  async execute(input, ctx) {
@@ -379,6 +404,7 @@ export default function slack(rl) {
379
404
  },
380
405
  });
381
406
  rl.registerAction("user.getPresence", {
407
+ access: "read",
382
408
  description: "Get a user's presence",
383
409
  inputSchema: { user: { type: "string", required: true } },
384
410
  async execute(input, ctx) {
@@ -388,6 +414,7 @@ export default function slack(rl) {
388
414
  },
389
415
  });
390
416
  rl.registerAction("user.getProfile", {
417
+ access: "read",
391
418
  description: "Get a user's profile",
392
419
  inputSchema: { user: { type: "string", required: true } },
393
420
  async execute(input, ctx) {
@@ -398,6 +425,7 @@ export default function slack(rl) {
398
425
  },
399
426
  });
400
427
  rl.registerAction("user.updateProfile", {
428
+ access: "write",
401
429
  description: "Update the authenticated user's profile",
402
430
  inputSchema: {
403
431
  profile: {
@@ -415,6 +443,7 @@ export default function slack(rl) {
415
443
  });
416
444
  // ── User Group ──────────────────────────────────────
417
445
  rl.registerAction("userGroup.create", {
446
+ access: "write",
418
447
  description: "Create a user group",
419
448
  inputSchema: {
420
449
  name: { type: "string", required: true },
@@ -427,6 +456,7 @@ export default function slack(rl) {
427
456
  },
428
457
  });
429
458
  rl.registerAction("userGroup.list", {
459
+ access: "read",
430
460
  description: "List user groups",
431
461
  inputSchema: { includeUsers: { type: "boolean", required: false } },
432
462
  async execute(input, ctx) {
@@ -438,6 +468,7 @@ export default function slack(rl) {
438
468
  },
439
469
  });
440
470
  rl.registerAction("userGroup.update", {
471
+ access: "write",
441
472
  description: "Update a user group",
442
473
  inputSchema: {
443
474
  usergroup: { type: "string", required: true },
@@ -451,6 +482,7 @@ export default function slack(rl) {
451
482
  },
452
483
  });
453
484
  rl.registerAction("userGroup.enable", {
485
+ access: "write",
454
486
  description: "Enable a user group",
455
487
  inputSchema: { usergroup: { type: "string", required: true } },
456
488
  async execute(input, ctx) {
@@ -461,6 +493,7 @@ export default function slack(rl) {
461
493
  },
462
494
  });
463
495
  rl.registerAction("userGroup.disable", {
496
+ access: "write",
464
497
  description: "Disable a user group",
465
498
  inputSchema: { usergroup: { type: "string", required: true } },
466
499
  async execute(input, ctx) {
@@ -472,6 +505,7 @@ export default function slack(rl) {
472
505
  });
473
506
  // ── File ────────────────────────────────────────────
474
507
  rl.registerAction("file.get", {
508
+ access: "read",
475
509
  description: "Get file info",
476
510
  inputSchema: { file: { type: "string", required: true } },
477
511
  async execute(input, ctx) {
@@ -482,6 +516,7 @@ export default function slack(rl) {
482
516
  },
483
517
  });
484
518
  rl.registerAction("file.list", {
519
+ access: "read",
485
520
  description: "List files",
486
521
  inputSchema: {
487
522
  channel: { type: "string", required: false },
@@ -503,6 +538,7 @@ export default function slack(rl) {
503
538
  });
504
539
  // ── Star ────────────────────────────────────────────
505
540
  rl.registerAction("star.add", {
541
+ access: "write",
506
542
  description: "Star an item",
507
543
  inputSchema: {
508
544
  channel: { type: "string", required: false },
@@ -514,6 +550,7 @@ export default function slack(rl) {
514
550
  },
515
551
  });
516
552
  rl.registerAction("star.remove", {
553
+ access: "write",
517
554
  description: "Unstar an item",
518
555
  inputSchema: {
519
556
  channel: { type: "string", required: false },
@@ -525,6 +562,7 @@ export default function slack(rl) {
525
562
  },
526
563
  });
527
564
  rl.registerAction("star.list", {
565
+ access: "read",
528
566
  description: "List starred items",
529
567
  inputSchema: { limit: { type: "number", required: false } },
530
568
  async execute(input, ctx) {
@@ -27,6 +27,7 @@ export default function sms77(rl) {
27
27
  });
28
28
  const key = (ctx) => ctx.connection.config.apiKey;
29
29
  rl.registerAction("sms.send", {
30
+ access: "write",
30
31
  description: "Send an SMS via seven",
31
32
  inputSchema: {
32
33
  to: {
@@ -67,6 +68,7 @@ export default function sms77(rl) {
67
68
  },
68
69
  });
69
70
  rl.registerAction("voice.send", {
71
+ access: "write",
70
72
  description: "Convert text to voice and call a number",
71
73
  inputSchema: {
72
74
  to: { type: "string", required: true },