runline 0.2.1 → 0.2.2

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 (189) hide show
  1. package/dist/plugins/actionNetwork/src/index.js +118 -25
  2. package/dist/plugins/activeCampaign/src/index.js +184 -38
  3. package/dist/plugins/adalo/src/index.js +40 -8
  4. package/dist/plugins/affinity/src/index.js +100 -20
  5. package/dist/plugins/agileCrm/src/index.js +115 -27
  6. package/dist/plugins/airtable/src/index.js +94 -19
  7. package/dist/plugins/airtop/src/index.js +266 -62
  8. package/dist/plugins/apiTemplateIo/src/index.js +25 -5
  9. package/dist/plugins/asana/src/index.js +195 -41
  10. package/dist/plugins/autopilot/src/index.js +39 -8
  11. package/dist/plugins/bambooHr/src/index.js +109 -22
  12. package/dist/plugins/bannerbear/src/index.js +36 -8
  13. package/dist/plugins/baserow/src/index.js +35 -7
  14. package/dist/plugins/beeminder/src/index.js +198 -40
  15. package/dist/plugins/bitly/src/index.js +46 -10
  16. package/dist/plugins/bitwarden/src/index.js +167 -36
  17. package/dist/plugins/box/src/index.js +172 -37
  18. package/dist/plugins/brandfetch/src/index.js +5 -1
  19. package/dist/plugins/brevo/src/index.js +136 -29
  20. package/dist/plugins/bubble/src/index.js +76 -17
  21. package/dist/plugins/chargebee/src/index.js +35 -7
  22. package/dist/plugins/circleci/src/index.js +50 -10
  23. package/dist/plugins/ciscoWebex/src/index.js +131 -27
  24. package/dist/plugins/clearbit/src/index.js +76 -17
  25. package/dist/plugins/clickup/src/index.js +500 -107
  26. package/dist/plugins/clockify/src/index.js +229 -47
  27. package/dist/plugins/cloudflare/src/index.js +28 -6
  28. package/dist/plugins/cockpit/src/index.js +54 -12
  29. package/dist/plugins/coda/src/index.js +81 -19
  30. package/dist/plugins/coingecko/src/index.js +157 -33
  31. package/dist/plugins/contentful/src/index.js +85 -17
  32. package/dist/plugins/convertkit/src/index.js +74 -18
  33. package/dist/plugins/copper/src/index.js +59 -11
  34. package/dist/plugins/cortex/src/index.js +55 -13
  35. package/dist/plugins/currents/src/index.js +310 -71
  36. package/dist/plugins/customerIo/src/index.js +112 -23
  37. package/dist/plugins/databricks/src/index.js +549 -115
  38. package/dist/plugins/deepl/src/index.js +26 -6
  39. package/dist/plugins/demio/src/index.js +56 -11
  40. package/dist/plugins/dhl/src/index.js +16 -3
  41. package/dist/plugins/discord/src/index.js +141 -31
  42. package/dist/plugins/discourse/src/index.js +136 -31
  43. package/dist/plugins/disqus/src/index.js +96 -20
  44. package/dist/plugins/docker/src/index.js +20 -4
  45. package/dist/plugins/drift/src/index.js +19 -5
  46. package/dist/plugins/dropbox/src/index.js +139 -30
  47. package/dist/plugins/dropcontact/src/index.js +21 -4
  48. package/dist/plugins/egoi/src/index.js +61 -15
  49. package/dist/plugins/elasticsearch/src/index.js +59 -13
  50. package/dist/plugins/emelia/src/index.js +95 -19
  51. package/dist/plugins/erpnext/src/index.js +74 -15
  52. package/dist/plugins/facebookGraph/src/index.js +52 -11
  53. package/dist/plugins/freshdesk/src/index.js +220 -48
  54. package/dist/plugins/freshservice/src/index.js +39 -9
  55. package/dist/plugins/freshworksCrm/src/index.js +58 -12
  56. package/dist/plugins/getresponse/src/index.js +87 -18
  57. package/dist/plugins/ghost/src/index.js +114 -26
  58. package/dist/plugins/github/src/index.js +483 -109
  59. package/dist/plugins/gitlab/src/index.js +193 -45
  60. package/dist/plugins/gong/src/index.js +68 -14
  61. package/dist/plugins/gotify/src/index.js +43 -9
  62. package/dist/plugins/gotowebinar/src/index.js +233 -47
  63. package/dist/plugins/grafana/src/index.js +92 -21
  64. package/dist/plugins/graphql/src/index.js +38 -8
  65. package/dist/plugins/grist/src/index.js +52 -10
  66. package/dist/plugins/hackernews/src/index.js +32 -6
  67. package/dist/plugins/halopsa/src/index.js +131 -26
  68. package/dist/plugins/harvest/src/index.js +182 -42
  69. package/dist/plugins/helpscout/src/index.js +153 -31
  70. package/dist/plugins/highlevel/src/index.js +291 -58
  71. package/dist/plugins/homeAssistant/src/index.js +124 -26
  72. package/dist/plugins/hubspot/src/index.js +163 -29
  73. package/dist/plugins/humanticAi/src/index.js +54 -5
  74. package/dist/plugins/hunter/src/index.js +21 -4
  75. package/dist/plugins/intercom/src/index.js +95 -20
  76. package/dist/plugins/iterable/src/index.js +96 -20
  77. package/dist/plugins/jenkins/src/index.js +75 -17
  78. package/dist/plugins/jira/src/index.js +193 -43
  79. package/dist/plugins/keap/src/index.js +222 -56
  80. package/dist/plugins/kobotoolbox/src/index.js +113 -25
  81. package/dist/plugins/lemlist/src/index.js +79 -18
  82. package/dist/plugins/linear/src/index.js +86 -19
  83. package/dist/plugins/lingvanex/src/index.js +38 -8
  84. package/dist/plugins/linkedin/src/index.js +37 -8
  85. package/dist/plugins/lonescale/src/index.js +41 -9
  86. package/dist/plugins/magento/src/index.js +98 -27
  87. package/dist/plugins/mailcheck/src/index.js +11 -2
  88. package/dist/plugins/mailchimp/src/index.js +193 -42
  89. package/dist/plugins/mailerlite/src/index.js +61 -12
  90. package/dist/plugins/mailgun/src/index.js +39 -7
  91. package/dist/plugins/mailjet/src/index.js +141 -30
  92. package/dist/plugins/mandrill/src/index.js +67 -14
  93. package/dist/plugins/marketstack/src/index.js +56 -10
  94. package/dist/plugins/matrix/src/index.js +97 -20
  95. package/dist/plugins/mattermost/src/index.js +124 -26
  96. package/dist/plugins/mautic/src/index.js +129 -26
  97. package/dist/plugins/medium/src/index.js +64 -13
  98. package/dist/plugins/messagebird/src/index.js +80 -15
  99. package/dist/plugins/metabase/src/index.js +57 -12
  100. package/dist/plugins/misp/src/index.js +135 -33
  101. package/dist/plugins/mocean/src/index.js +33 -7
  102. package/dist/plugins/monday/src/index.js +97 -23
  103. package/dist/plugins/monicaCrm/src/index.js +112 -23
  104. package/dist/plugins/msg91/src/index.js +11 -2
  105. package/dist/plugins/nasa/src/index.js +108 -21
  106. package/dist/plugins/netlify/src/index.js +28 -6
  107. package/dist/plugins/netscalerAdc/src/index.js +144 -29
  108. package/dist/plugins/nextcloud/src/index.js +103 -20
  109. package/dist/plugins/nocodb/src/index.js +57 -11
  110. package/dist/plugins/notion/src/index.js +148 -37
  111. package/dist/plugins/npm/src/index.js +59 -12
  112. package/dist/plugins/odoo/src/index.js +102 -20
  113. package/dist/plugins/okta/src/index.js +50 -10
  114. package/dist/plugins/oneSimpleApi/src/index.js +84 -17
  115. package/dist/plugins/onfleet/src/index.js +139 -32
  116. package/dist/plugins/openThesaurus/src/index.js +46 -9
  117. package/dist/plugins/openweathermap/src/index.js +31 -6
  118. package/dist/plugins/oura/src/index.js +36 -7
  119. package/dist/plugins/paddle/src/index.js +80 -17
  120. package/dist/plugins/pagerduty/src/index.js +53 -12
  121. package/dist/plugins/paypal/src/index.js +51 -11
  122. package/dist/plugins/peekalink/src/index.js +12 -3
  123. package/dist/plugins/phantombuster/src/index.js +39 -8
  124. package/dist/plugins/philipsHue/src/index.js +64 -13
  125. package/dist/plugins/pipedrive/src/index.js +167 -45
  126. package/dist/plugins/plivo/src/index.js +43 -8
  127. package/dist/plugins/postbin/src/index.js +9 -2
  128. package/dist/plugins/posthog/src/index.js +50 -13
  129. package/dist/plugins/profitwell/src/index.js +24 -5
  130. package/dist/plugins/pushbullet/src/index.js +45 -9
  131. package/dist/plugins/pushcut/src/index.js +31 -6
  132. package/dist/plugins/pushover/src/index.js +51 -10
  133. package/dist/plugins/quickbase/src/index.js +66 -13
  134. package/dist/plugins/quickbooks/src/index.js +86 -19
  135. package/dist/plugins/quickchart/src/index.js +35 -7
  136. package/dist/plugins/raindrop/src/index.js +54 -13
  137. package/dist/plugins/reddit/src/index.js +73 -18
  138. package/dist/plugins/rocketchat/src/index.js +47 -9
  139. package/dist/plugins/rundeck/src/index.js +26 -5
  140. package/dist/plugins/salesforce/src/index.js +161 -31
  141. package/dist/plugins/salesmate/src/index.js +75 -16
  142. package/dist/plugins/securityScorecard/src/index.js +73 -15
  143. package/dist/plugins/segment/src/index.js +21 -4
  144. package/dist/plugins/sendgrid/src/index.js +102 -24
  145. package/dist/plugins/sendy/src/index.js +54 -11
  146. package/dist/plugins/sentry/src/index.js +174 -34
  147. package/dist/plugins/servicenow/src/index.js +120 -27
  148. package/dist/plugins/shopify/src/index.js +53 -12
  149. package/dist/plugins/signl4/src/index.js +16 -3
  150. package/dist/plugins/slack/src/index.js +407 -105
  151. package/dist/plugins/sms77/src/index.js +26 -5
  152. package/dist/plugins/splunk/src/index.js +186 -45
  153. package/dist/plugins/spotify/src/index.js +265 -66
  154. package/dist/plugins/stackby/src/index.js +18 -6
  155. package/dist/plugins/storyblok/src/index.js +57 -11
  156. package/dist/plugins/strapi/src/index.js +63 -12
  157. package/dist/plugins/strava/src/index.js +58 -13
  158. package/dist/plugins/stripe/src/index.js +143 -30
  159. package/dist/plugins/supabase/src/index.js +49 -10
  160. package/dist/plugins/syncromsp/src/index.js +245 -67
  161. package/dist/plugins/tapfiliate/src/index.js +57 -14
  162. package/dist/plugins/telegram/src/index.js +202 -39
  163. package/dist/plugins/thehive/src/index.js +271 -66
  164. package/dist/plugins/thehiveProject/src/index.js +457 -89
  165. package/dist/plugins/todoist/src/index.js +326 -77
  166. package/dist/plugins/travisci/src/index.js +35 -8
  167. package/dist/plugins/trello/src/index.js +204 -46
  168. package/dist/plugins/twake/src/index.js +10 -2
  169. package/dist/plugins/twilio/src/index.js +56 -11
  170. package/dist/plugins/twist/src/index.js +241 -48
  171. package/dist/plugins/twitter/src/index.js +128 -30
  172. package/dist/plugins/unleashedSoftware/src/index.js +30 -6
  173. package/dist/plugins/uplead/src/index.js +9 -2
  174. package/dist/plugins/uproc/src/index.js +31 -6
  175. package/dist/plugins/uptimerobot/src/index.js +119 -25
  176. package/dist/plugins/urlscanio/src/index.js +25 -6
  177. package/dist/plugins/vero/src/index.js +68 -13
  178. package/dist/plugins/vonage/src/index.js +32 -6
  179. package/dist/plugins/wekan/src/index.js +297 -52
  180. package/dist/plugins/woocommerce/src/index.js +57 -12
  181. package/dist/plugins/wordpress/src/index.js +94 -18
  182. package/dist/plugins/xero/src/index.js +79 -13
  183. package/dist/plugins/yourls/src/index.js +33 -6
  184. package/dist/plugins/zammad/src/index.js +139 -36
  185. package/dist/plugins/zendesk/src/index.js +201 -48
  186. package/dist/plugins/zoho/src/index.js +88 -21
  187. package/dist/plugins/zoom/src/index.js +41 -7
  188. package/dist/plugins/zulip/src/index.js +101 -20
  189. package/package.json +1 -1
@@ -2,7 +2,10 @@ const BASE = "https://api.raindrop.io/rest/v1";
2
2
  async function apiRequest(token, method, endpoint, body) {
3
3
  const init = {
4
4
  method,
5
- headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
5
+ headers: {
6
+ Authorization: `Bearer ${token}`,
7
+ "Content-Type": "application/json",
8
+ },
6
9
  };
7
10
  if (body && Object.keys(body).length > 0)
8
11
  init.body = JSON.stringify(body);
@@ -15,7 +18,12 @@ export default function raindrop(rl) {
15
18
  rl.setName("raindrop");
16
19
  rl.setVersion("0.1.0");
17
20
  rl.setConnectionSchema({
18
- accessToken: { type: "string", required: true, description: "Raindrop.io access token", env: "RAINDROP_ACCESS_TOKEN" },
21
+ accessToken: {
22
+ type: "string",
23
+ required: true,
24
+ description: "Raindrop.io access token",
25
+ env: "RAINDROP_ACCESS_TOKEN",
26
+ },
19
27
  });
20
28
  const key = (ctx) => ctx.connection.config.accessToken;
21
29
  // ── Bookmark ────────────────────────────────────────
@@ -25,16 +33,27 @@ export default function raindrop(rl) {
25
33
  link: { type: "string", required: true, description: "URL to bookmark" },
26
34
  collectionId: { type: "string", required: true },
27
35
  title: { type: "string", required: false },
28
- tags: { type: "string", required: false, description: "Comma-separated tags" },
29
- pleaseParse: { type: "boolean", required: false, description: "Auto-parse page metadata" },
36
+ tags: {
37
+ type: "string",
38
+ required: false,
39
+ description: "Comma-separated tags",
40
+ },
41
+ pleaseParse: {
42
+ type: "boolean",
43
+ required: false,
44
+ description: "Auto-parse page metadata",
45
+ },
30
46
  },
31
47
  async execute(input, ctx) {
32
48
  const p = input;
33
- const body = { link: p.link, collection: { $id: Number(p.collectionId) } };
49
+ const body = {
50
+ link: p.link,
51
+ collection: { $id: Number(p.collectionId) },
52
+ };
34
53
  if (p.title)
35
54
  body.title = p.title;
36
55
  if (p.tags)
37
- body.tags = p.tags.split(",").map(t => t.trim());
56
+ body.tags = p.tags.split(",").map((t) => t.trim());
38
57
  if (p.pleaseParse)
39
58
  body.pleaseParse = {};
40
59
  const data = (await apiRequest(key(ctx), "POST", "/raindrop", body));
@@ -71,7 +90,11 @@ export default function raindrop(rl) {
71
90
  bookmarkId: { type: "string", required: true },
72
91
  title: { type: "string", required: false },
73
92
  link: { type: "string", required: false },
74
- tags: { type: "string", required: false, description: "Comma-separated tags" },
93
+ tags: {
94
+ type: "string",
95
+ required: false,
96
+ description: "Comma-separated tags",
97
+ },
75
98
  collectionId: { type: "string", required: false },
76
99
  },
77
100
  async execute(input, ctx) {
@@ -82,7 +105,7 @@ export default function raindrop(rl) {
82
105
  if (p.link)
83
106
  body.link = p.link;
84
107
  if (p.tags)
85
- body.tags = p.tags.split(",").map(t => t.trim());
108
+ body.tags = p.tags.split(",").map((t) => t.trim());
86
109
  if (p.collectionId)
87
110
  body.collection = { $id: Number(p.collectionId) };
88
111
  const data = (await apiRequest(key(ctx), "PUT", `/raindrop/${p.bookmarkId}`, body));
@@ -102,7 +125,11 @@ export default function raindrop(rl) {
102
125
  description: "Create a collection",
103
126
  inputSchema: {
104
127
  title: { type: "string", required: true },
105
- parentId: { type: "string", required: false, description: "Parent collection ID" },
128
+ parentId: {
129
+ type: "string",
130
+ required: false,
131
+ description: "Parent collection ID",
132
+ },
106
133
  },
107
134
  async execute(input, ctx) {
108
135
  const p = input;
@@ -125,7 +152,11 @@ export default function raindrop(rl) {
125
152
  rl.registerAction("collection.list", {
126
153
  description: "List collections",
127
154
  inputSchema: {
128
- type: { type: "string", required: false, description: "parent (default) or children" },
155
+ type: {
156
+ type: "string",
157
+ required: false,
158
+ description: "parent (default) or children",
159
+ },
129
160
  limit: { type: "number", required: false },
130
161
  },
131
162
  async execute(input, ctx) {
@@ -184,20 +215,30 @@ export default function raindrop(rl) {
184
215
  rl.registerAction("tag.delete", {
185
216
  description: "Delete tags",
186
217
  inputSchema: {
187
- tags: { type: "string", required: true, description: "Comma-separated tag names to delete" },
218
+ tags: {
219
+ type: "string",
220
+ required: true,
221
+ description: "Comma-separated tag names to delete",
222
+ },
188
223
  collectionId: { type: "string", required: false },
189
224
  },
190
225
  async execute(input, ctx) {
191
226
  const p = input;
192
227
  const endpoint = p.collectionId ? `/tags/${p.collectionId}` : "/tags";
193
- return apiRequest(key(ctx), "DELETE", endpoint, { tags: p.tags.split(",").map(t => t.trim()) });
228
+ return apiRequest(key(ctx), "DELETE", endpoint, {
229
+ tags: p.tags.split(",").map((t) => t.trim()),
230
+ });
194
231
  },
195
232
  });
196
233
  // ── User ────────────────────────────────────────────
197
234
  rl.registerAction("user.get", {
198
235
  description: "Get user info (self or by ID)",
199
236
  inputSchema: {
200
- userId: { type: "string", required: false, description: "User ID (omit for self)" },
237
+ userId: {
238
+ type: "string",
239
+ required: false,
240
+ description: "User ID (omit for self)",
241
+ },
201
242
  },
202
243
  async execute(input, ctx) {
203
244
  const userId = input?.userId;
@@ -24,7 +24,12 @@ export default function reddit(rl) {
24
24
  rl.setName("reddit");
25
25
  rl.setVersion("0.1.0");
26
26
  rl.setConnectionSchema({
27
- accessToken: { type: "string", required: false, description: "Reddit OAuth2 access token (required for post/comment/profile actions)", env: "REDDIT_ACCESS_TOKEN" },
27
+ accessToken: {
28
+ type: "string",
29
+ required: false,
30
+ description: "Reddit OAuth2 access token (required for post/comment/profile actions)",
31
+ env: "REDDIT_ACCESS_TOKEN",
32
+ },
28
33
  });
29
34
  // ── Post ────────────────────────────────────────────
30
35
  rl.registerAction("post.create", {
@@ -32,14 +37,30 @@ export default function reddit(rl) {
32
37
  inputSchema: {
33
38
  subreddit: { type: "string", required: true },
34
39
  title: { type: "string", required: true },
35
- kind: { type: "string", required: true, description: "self (text) or link" },
36
- text: { type: "string", required: false, description: "Post body (for self posts)" },
37
- url: { type: "string", required: false, description: "URL (for link posts)" },
40
+ kind: {
41
+ type: "string",
42
+ required: true,
43
+ description: "self (text) or link",
44
+ },
45
+ text: {
46
+ type: "string",
47
+ required: false,
48
+ description: "Post body (for self posts)",
49
+ },
50
+ url: {
51
+ type: "string",
52
+ required: false,
53
+ description: "URL (for link posts)",
54
+ },
38
55
  resubmit: { type: "boolean", required: false },
39
56
  },
40
57
  async execute(input, ctx) {
41
58
  const p = input;
42
- const qs = { title: p.title, sr: p.subreddit, kind: p.kind };
59
+ const qs = {
60
+ title: p.title,
61
+ sr: p.subreddit,
62
+ kind: p.kind,
63
+ };
43
64
  if (p.kind === "self")
44
65
  qs.text = p.text;
45
66
  else
@@ -69,19 +90,29 @@ export default function reddit(rl) {
69
90
  description: "List posts from a subreddit (no auth required for public subreddits)",
70
91
  inputSchema: {
71
92
  subreddit: { type: "string", required: true },
72
- category: { type: "string", required: false, description: "hot (default), new, rising, top, controversial" },
73
- limit: { type: "number", required: false, description: "Max results (default 25)" },
93
+ category: {
94
+ type: "string",
95
+ required: false,
96
+ description: "hot (default), new, rising, top, controversial",
97
+ },
98
+ limit: {
99
+ type: "number",
100
+ required: false,
101
+ description: "Max results (default 25)",
102
+ },
74
103
  },
75
104
  async execute(input, ctx) {
76
105
  const p = (input ?? {});
77
106
  const cat = p.category ?? "";
78
- const endpoint = cat ? `r/${p.subreddit}/${cat}.json` : `r/${p.subreddit}.json`;
107
+ const endpoint = cat
108
+ ? `r/${p.subreddit}/${cat}.json`
109
+ : `r/${p.subreddit}.json`;
79
110
  const qs = {};
80
111
  if (p.limit)
81
112
  qs.limit = p.limit;
82
113
  const data = (await apiRequest(getToken(ctx), "GET", endpoint, qs));
83
114
  const ld = data.data;
84
- return ld.children.map(c => c.data);
115
+ return ld.children.map((c) => c.data);
85
116
  },
86
117
  });
87
118
  rl.registerAction("post.delete", {
@@ -89,7 +120,9 @@ export default function reddit(rl) {
89
120
  inputSchema: { postId: { type: "string", required: true } },
90
121
  async execute(input, ctx) {
91
122
  const { postId } = input;
92
- await apiRequest(getToken(ctx), "POST", "api/del", { id: `t3_${postId}` });
123
+ await apiRequest(getToken(ctx), "POST", "api/del", {
124
+ id: `t3_${postId}`,
125
+ });
93
126
  return { success: true };
94
127
  },
95
128
  });
@@ -97,8 +130,16 @@ export default function reddit(rl) {
97
130
  description: "Search posts",
98
131
  inputSchema: {
99
132
  keyword: { type: "string", required: true },
100
- subreddit: { type: "string", required: false, description: "Limit search to subreddit" },
101
- sort: { type: "string", required: false, description: "relevance, hot, top, new, comments" },
133
+ subreddit: {
134
+ type: "string",
135
+ required: false,
136
+ description: "Limit search to subreddit",
137
+ },
138
+ sort: {
139
+ type: "string",
140
+ required: false,
141
+ description: "relevance, hot, top, new, comments",
142
+ },
102
143
  limit: { type: "number", required: false },
103
144
  },
104
145
  async execute(input, ctx) {
@@ -108,12 +149,14 @@ export default function reddit(rl) {
108
149
  qs.sort = p.sort;
109
150
  if (p.limit)
110
151
  qs.limit = p.limit;
111
- const endpoint = p.subreddit ? `r/${p.subreddit}/search.json` : "search.json";
152
+ const endpoint = p.subreddit
153
+ ? `r/${p.subreddit}/search.json`
154
+ : "search.json";
112
155
  if (p.subreddit)
113
156
  qs.restrict_sr = "true";
114
157
  const data = (await apiRequest(getToken(ctx), "GET", endpoint, qs));
115
158
  const ld = data.data;
116
- return ld.children.map(c => c.data);
159
+ return ld.children.map((c) => c.data);
117
160
  },
118
161
  });
119
162
  // ── Comment ─────────────────────────────────────────
@@ -125,7 +168,10 @@ export default function reddit(rl) {
125
168
  },
126
169
  async execute(input, ctx) {
127
170
  const { postId, text } = input;
128
- const data = (await apiRequest(getToken(ctx), "POST", "api/comment", { thing_id: `t3_${postId}`, text }));
171
+ const data = (await apiRequest(getToken(ctx), "POST", "api/comment", {
172
+ thing_id: `t3_${postId}`,
173
+ text,
174
+ }));
129
175
  const json = data.json;
130
176
  const jd = json.data;
131
177
  const things = jd.things;
@@ -140,7 +186,10 @@ export default function reddit(rl) {
140
186
  },
141
187
  async execute(input, ctx) {
142
188
  const { commentId, text } = input;
143
- const data = (await apiRequest(getToken(ctx), "POST", "api/comment", { thing_id: `t1_${commentId}`, text }));
189
+ const data = (await apiRequest(getToken(ctx), "POST", "api/comment", {
190
+ thing_id: `t1_${commentId}`,
191
+ text,
192
+ }));
144
193
  const json = data.json;
145
194
  const jd = json.data;
146
195
  const things = jd.things;
@@ -152,7 +201,9 @@ export default function reddit(rl) {
152
201
  inputSchema: { commentId: { type: "string", required: true } },
153
202
  async execute(input, ctx) {
154
203
  const { commentId } = input;
155
- await apiRequest(getToken(ctx), "POST", "api/del", { id: `t1_${commentId}` });
204
+ await apiRequest(getToken(ctx), "POST", "api/del", {
205
+ id: `t1_${commentId}`,
206
+ });
156
207
  return { success: true };
157
208
  },
158
209
  });
@@ -161,7 +212,11 @@ export default function reddit(rl) {
161
212
  description: "Get subreddit info or rules (no auth required)",
162
213
  inputSchema: {
163
214
  subreddit: { type: "string", required: true },
164
- content: { type: "string", required: false, description: "about (default) or rules" },
215
+ content: {
216
+ type: "string",
217
+ required: false,
218
+ description: "about (default) or rules",
219
+ },
165
220
  },
166
221
  async execute(input, ctx) {
167
222
  const p = input;
@@ -10,24 +10,62 @@ export default function rocketchat(rl) {
10
10
  rl.setName("rocketchat");
11
11
  rl.setVersion("0.1.0");
12
12
  rl.setConnectionSchema({
13
- domain: { type: "string", required: true, description: "Rocket.Chat server URL (e.g. https://chat.example.com)", env: "ROCKETCHAT_DOMAIN" },
14
- userId: { type: "string", required: true, description: "User ID", env: "ROCKETCHAT_USER_ID" },
15
- authToken: { type: "string", required: true, description: "Auth token", env: "ROCKETCHAT_AUTH_TOKEN" },
13
+ domain: {
14
+ type: "string",
15
+ required: true,
16
+ description: "Rocket.Chat server URL (e.g. https://chat.example.com)",
17
+ env: "ROCKETCHAT_DOMAIN",
18
+ },
19
+ userId: {
20
+ type: "string",
21
+ required: true,
22
+ description: "User ID",
23
+ env: "ROCKETCHAT_USER_ID",
24
+ },
25
+ authToken: {
26
+ type: "string",
27
+ required: true,
28
+ description: "Auth token",
29
+ env: "ROCKETCHAT_AUTH_TOKEN",
30
+ },
16
31
  });
17
32
  rl.registerAction("chat.postMessage", {
18
33
  description: "Post a message to a Rocket.Chat channel or DM",
19
34
  inputSchema: {
20
- channel: { type: "string", required: true, description: "Channel name with prefix (e.g. #general or @username)" },
35
+ channel: {
36
+ type: "string",
37
+ required: true,
38
+ description: "Channel name with prefix (e.g. #general or @username)",
39
+ },
21
40
  text: { type: "string", required: true },
22
- alias: { type: "string", required: false, description: "Display name alias" },
23
- emoji: { type: "string", required: false, description: "Emoji avatar (e.g. :smile:)" },
24
- avatar: { type: "string", required: false, description: "Avatar image URL" },
25
- attachments: { type: "object", required: false, description: "Array of attachment objects" },
41
+ alias: {
42
+ type: "string",
43
+ required: false,
44
+ description: "Display name alias",
45
+ },
46
+ emoji: {
47
+ type: "string",
48
+ required: false,
49
+ description: "Emoji avatar (e.g. :smile:)",
50
+ },
51
+ avatar: {
52
+ type: "string",
53
+ required: false,
54
+ description: "Avatar image URL",
55
+ },
56
+ attachments: {
57
+ type: "object",
58
+ required: false,
59
+ description: "Array of attachment objects",
60
+ },
26
61
  },
27
62
  async execute(input, ctx) {
28
63
  const p = input;
29
64
  const conn = getConn(ctx);
30
- const body = { channel: p.channel, text: p.text };
65
+ const body = {
66
+ channel: p.channel,
67
+ text: p.text,
68
+ };
31
69
  if (p.alias)
32
70
  body.alias = p.alias;
33
71
  if (p.emoji)
@@ -1,6 +1,9 @@
1
1
  function getConn(ctx) {
2
2
  const c = ctx.connection.config;
3
- return { url: c.url.replace(/\/$/, ""), token: c.token };
3
+ return {
4
+ url: c.url.replace(/\/$/, ""),
5
+ token: c.token,
6
+ };
4
7
  }
5
8
  async function apiRequest(conn, method, endpoint, body, qs) {
6
9
  const url = new URL(`${conn.url}${endpoint}`);
@@ -26,15 +29,33 @@ export default function rundeck(rl) {
26
29
  rl.setName("rundeck");
27
30
  rl.setVersion("0.1.0");
28
31
  rl.setConnectionSchema({
29
- url: { type: "string", required: true, description: "Rundeck server URL (e.g. https://rundeck.example.com)", env: "RUNDECK_URL" },
30
- token: { type: "string", required: true, description: "Rundeck API token", env: "RUNDECK_TOKEN" },
32
+ url: {
33
+ type: "string",
34
+ required: true,
35
+ description: "Rundeck server URL (e.g. https://rundeck.example.com)",
36
+ env: "RUNDECK_URL",
37
+ },
38
+ token: {
39
+ type: "string",
40
+ required: true,
41
+ description: "Rundeck API token",
42
+ env: "RUNDECK_TOKEN",
43
+ },
31
44
  });
32
45
  rl.registerAction("job.execute", {
33
46
  description: "Execute a Rundeck job",
34
47
  inputSchema: {
35
48
  jobId: { type: "string", required: true },
36
- arguments: { type: "object", required: false, description: "Array of {name, value} argument pairs" },
37
- filter: { type: "string", required: false, description: "Node filter string" },
49
+ arguments: {
50
+ type: "object",
51
+ required: false,
52
+ description: "Array of {name, value} argument pairs",
53
+ },
54
+ filter: {
55
+ type: "string",
56
+ required: false,
57
+ description: "Node filter string",
58
+ },
38
59
  },
39
60
  async execute(input, ctx) {
40
61
  const p = input;