runline 0.2.0 → 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 (190) hide show
  1. package/README.md +1 -1
  2. package/dist/plugins/actionNetwork/src/index.js +118 -25
  3. package/dist/plugins/activeCampaign/src/index.js +184 -38
  4. package/dist/plugins/adalo/src/index.js +40 -8
  5. package/dist/plugins/affinity/src/index.js +100 -20
  6. package/dist/plugins/agileCrm/src/index.js +115 -27
  7. package/dist/plugins/airtable/src/index.js +94 -19
  8. package/dist/plugins/airtop/src/index.js +266 -62
  9. package/dist/plugins/apiTemplateIo/src/index.js +25 -5
  10. package/dist/plugins/asana/src/index.js +195 -41
  11. package/dist/plugins/autopilot/src/index.js +39 -8
  12. package/dist/plugins/bambooHr/src/index.js +109 -22
  13. package/dist/plugins/bannerbear/src/index.js +36 -8
  14. package/dist/plugins/baserow/src/index.js +35 -7
  15. package/dist/plugins/beeminder/src/index.js +198 -40
  16. package/dist/plugins/bitly/src/index.js +46 -10
  17. package/dist/plugins/bitwarden/src/index.js +167 -36
  18. package/dist/plugins/box/src/index.js +172 -37
  19. package/dist/plugins/brandfetch/src/index.js +5 -1
  20. package/dist/plugins/brevo/src/index.js +136 -29
  21. package/dist/plugins/bubble/src/index.js +76 -17
  22. package/dist/plugins/chargebee/src/index.js +35 -7
  23. package/dist/plugins/circleci/src/index.js +50 -10
  24. package/dist/plugins/ciscoWebex/src/index.js +131 -27
  25. package/dist/plugins/clearbit/src/index.js +76 -17
  26. package/dist/plugins/clickup/src/index.js +500 -107
  27. package/dist/plugins/clockify/src/index.js +229 -47
  28. package/dist/plugins/cloudflare/src/index.js +28 -6
  29. package/dist/plugins/cockpit/src/index.js +54 -12
  30. package/dist/plugins/coda/src/index.js +81 -19
  31. package/dist/plugins/coingecko/src/index.js +157 -33
  32. package/dist/plugins/contentful/src/index.js +85 -17
  33. package/dist/plugins/convertkit/src/index.js +74 -18
  34. package/dist/plugins/copper/src/index.js +59 -11
  35. package/dist/plugins/cortex/src/index.js +55 -13
  36. package/dist/plugins/currents/src/index.js +310 -71
  37. package/dist/plugins/customerIo/src/index.js +112 -23
  38. package/dist/plugins/databricks/src/index.js +549 -115
  39. package/dist/plugins/deepl/src/index.js +26 -6
  40. package/dist/plugins/demio/src/index.js +56 -11
  41. package/dist/plugins/dhl/src/index.js +16 -3
  42. package/dist/plugins/discord/src/index.js +141 -31
  43. package/dist/plugins/discourse/src/index.js +136 -31
  44. package/dist/plugins/disqus/src/index.js +96 -20
  45. package/dist/plugins/docker/src/index.js +20 -4
  46. package/dist/plugins/drift/src/index.js +19 -5
  47. package/dist/plugins/dropbox/src/index.js +139 -30
  48. package/dist/plugins/dropcontact/src/index.js +21 -4
  49. package/dist/plugins/egoi/src/index.js +61 -15
  50. package/dist/plugins/elasticsearch/src/index.js +59 -13
  51. package/dist/plugins/emelia/src/index.js +95 -19
  52. package/dist/plugins/erpnext/src/index.js +74 -15
  53. package/dist/plugins/facebookGraph/src/index.js +52 -11
  54. package/dist/plugins/freshdesk/src/index.js +220 -48
  55. package/dist/plugins/freshservice/src/index.js +39 -9
  56. package/dist/plugins/freshworksCrm/src/index.js +58 -12
  57. package/dist/plugins/getresponse/src/index.js +87 -18
  58. package/dist/plugins/ghost/src/index.js +114 -26
  59. package/dist/plugins/github/src/index.js +483 -109
  60. package/dist/plugins/gitlab/src/index.js +193 -45
  61. package/dist/plugins/gong/src/index.js +68 -14
  62. package/dist/plugins/gotify/src/index.js +43 -9
  63. package/dist/plugins/gotowebinar/src/index.js +233 -47
  64. package/dist/plugins/grafana/src/index.js +92 -21
  65. package/dist/plugins/graphql/src/index.js +38 -8
  66. package/dist/plugins/grist/src/index.js +52 -10
  67. package/dist/plugins/hackernews/src/index.js +32 -6
  68. package/dist/plugins/halopsa/src/index.js +131 -26
  69. package/dist/plugins/harvest/src/index.js +182 -42
  70. package/dist/plugins/helpscout/src/index.js +153 -31
  71. package/dist/plugins/highlevel/src/index.js +291 -58
  72. package/dist/plugins/homeAssistant/src/index.js +124 -26
  73. package/dist/plugins/hubspot/src/index.js +163 -29
  74. package/dist/plugins/humanticAi/src/index.js +54 -5
  75. package/dist/plugins/hunter/src/index.js +21 -4
  76. package/dist/plugins/intercom/src/index.js +95 -20
  77. package/dist/plugins/iterable/src/index.js +96 -20
  78. package/dist/plugins/jenkins/src/index.js +75 -17
  79. package/dist/plugins/jira/src/index.js +193 -43
  80. package/dist/plugins/keap/src/index.js +222 -56
  81. package/dist/plugins/kobotoolbox/src/index.js +113 -25
  82. package/dist/plugins/lemlist/src/index.js +79 -18
  83. package/dist/plugins/linear/src/index.js +86 -19
  84. package/dist/plugins/lingvanex/src/index.js +38 -8
  85. package/dist/plugins/linkedin/src/index.js +37 -8
  86. package/dist/plugins/lonescale/src/index.js +41 -9
  87. package/dist/plugins/magento/src/index.js +98 -27
  88. package/dist/plugins/mailcheck/src/index.js +11 -2
  89. package/dist/plugins/mailchimp/src/index.js +193 -42
  90. package/dist/plugins/mailerlite/src/index.js +61 -12
  91. package/dist/plugins/mailgun/src/index.js +39 -7
  92. package/dist/plugins/mailjet/src/index.js +141 -30
  93. package/dist/plugins/mandrill/src/index.js +67 -14
  94. package/dist/plugins/marketstack/src/index.js +56 -10
  95. package/dist/plugins/matrix/src/index.js +97 -20
  96. package/dist/plugins/mattermost/src/index.js +124 -26
  97. package/dist/plugins/mautic/src/index.js +129 -26
  98. package/dist/plugins/medium/src/index.js +64 -13
  99. package/dist/plugins/messagebird/src/index.js +80 -15
  100. package/dist/plugins/metabase/src/index.js +57 -12
  101. package/dist/plugins/misp/src/index.js +135 -33
  102. package/dist/plugins/mocean/src/index.js +33 -7
  103. package/dist/plugins/monday/src/index.js +97 -23
  104. package/dist/plugins/monicaCrm/src/index.js +112 -23
  105. package/dist/plugins/msg91/src/index.js +11 -2
  106. package/dist/plugins/nasa/src/index.js +108 -21
  107. package/dist/plugins/netlify/src/index.js +28 -6
  108. package/dist/plugins/netscalerAdc/src/index.js +144 -29
  109. package/dist/plugins/nextcloud/src/index.js +103 -20
  110. package/dist/plugins/nocodb/src/index.js +57 -11
  111. package/dist/plugins/notion/src/index.js +148 -37
  112. package/dist/plugins/npm/src/index.js +59 -12
  113. package/dist/plugins/odoo/src/index.js +102 -20
  114. package/dist/plugins/okta/src/index.js +50 -10
  115. package/dist/plugins/oneSimpleApi/src/index.js +84 -17
  116. package/dist/plugins/onfleet/src/index.js +139 -32
  117. package/dist/plugins/openThesaurus/src/index.js +46 -9
  118. package/dist/plugins/openweathermap/src/index.js +31 -6
  119. package/dist/plugins/oura/src/index.js +36 -7
  120. package/dist/plugins/paddle/src/index.js +80 -17
  121. package/dist/plugins/pagerduty/src/index.js +53 -12
  122. package/dist/plugins/paypal/src/index.js +51 -11
  123. package/dist/plugins/peekalink/src/index.js +12 -3
  124. package/dist/plugins/phantombuster/src/index.js +39 -8
  125. package/dist/plugins/philipsHue/src/index.js +64 -13
  126. package/dist/plugins/pipedrive/src/index.js +167 -45
  127. package/dist/plugins/plivo/src/index.js +43 -8
  128. package/dist/plugins/postbin/src/index.js +9 -2
  129. package/dist/plugins/posthog/src/index.js +50 -13
  130. package/dist/plugins/profitwell/src/index.js +24 -5
  131. package/dist/plugins/pushbullet/src/index.js +45 -9
  132. package/dist/plugins/pushcut/src/index.js +31 -6
  133. package/dist/plugins/pushover/src/index.js +51 -10
  134. package/dist/plugins/quickbase/src/index.js +66 -13
  135. package/dist/plugins/quickbooks/src/index.js +86 -19
  136. package/dist/plugins/quickchart/src/index.js +35 -7
  137. package/dist/plugins/raindrop/src/index.js +54 -13
  138. package/dist/plugins/reddit/src/index.js +73 -18
  139. package/dist/plugins/rocketchat/src/index.js +47 -9
  140. package/dist/plugins/rundeck/src/index.js +26 -5
  141. package/dist/plugins/salesforce/src/index.js +161 -31
  142. package/dist/plugins/salesmate/src/index.js +75 -16
  143. package/dist/plugins/securityScorecard/src/index.js +73 -15
  144. package/dist/plugins/segment/src/index.js +21 -4
  145. package/dist/plugins/sendgrid/src/index.js +102 -24
  146. package/dist/plugins/sendy/src/index.js +54 -11
  147. package/dist/plugins/sentry/src/index.js +174 -34
  148. package/dist/plugins/servicenow/src/index.js +120 -27
  149. package/dist/plugins/shopify/src/index.js +53 -12
  150. package/dist/plugins/signl4/src/index.js +16 -3
  151. package/dist/plugins/slack/src/index.js +407 -105
  152. package/dist/plugins/sms77/src/index.js +26 -5
  153. package/dist/plugins/splunk/src/index.js +186 -45
  154. package/dist/plugins/spotify/src/index.js +265 -66
  155. package/dist/plugins/stackby/src/index.js +18 -6
  156. package/dist/plugins/storyblok/src/index.js +57 -11
  157. package/dist/plugins/strapi/src/index.js +63 -12
  158. package/dist/plugins/strava/src/index.js +58 -13
  159. package/dist/plugins/stripe/src/index.js +143 -30
  160. package/dist/plugins/supabase/src/index.js +49 -10
  161. package/dist/plugins/syncromsp/src/index.js +245 -67
  162. package/dist/plugins/tapfiliate/src/index.js +57 -14
  163. package/dist/plugins/telegram/src/index.js +202 -39
  164. package/dist/plugins/thehive/src/index.js +271 -66
  165. package/dist/plugins/thehiveProject/src/index.js +457 -89
  166. package/dist/plugins/todoist/src/index.js +326 -77
  167. package/dist/plugins/travisci/src/index.js +35 -8
  168. package/dist/plugins/trello/src/index.js +204 -46
  169. package/dist/plugins/twake/src/index.js +10 -2
  170. package/dist/plugins/twilio/src/index.js +56 -11
  171. package/dist/plugins/twist/src/index.js +241 -48
  172. package/dist/plugins/twitter/src/index.js +128 -30
  173. package/dist/plugins/unleashedSoftware/src/index.js +30 -6
  174. package/dist/plugins/uplead/src/index.js +9 -2
  175. package/dist/plugins/uproc/src/index.js +31 -6
  176. package/dist/plugins/uptimerobot/src/index.js +119 -25
  177. package/dist/plugins/urlscanio/src/index.js +25 -6
  178. package/dist/plugins/vero/src/index.js +68 -13
  179. package/dist/plugins/vonage/src/index.js +32 -6
  180. package/dist/plugins/wekan/src/index.js +297 -52
  181. package/dist/plugins/woocommerce/src/index.js +57 -12
  182. package/dist/plugins/wordpress/src/index.js +94 -18
  183. package/dist/plugins/xero/src/index.js +79 -13
  184. package/dist/plugins/yourls/src/index.js +33 -6
  185. package/dist/plugins/zammad/src/index.js +139 -36
  186. package/dist/plugins/zendesk/src/index.js +201 -48
  187. package/dist/plugins/zoho/src/index.js +88 -21
  188. package/dist/plugins/zoom/src/index.js +41 -7
  189. package/dist/plugins/zulip/src/index.js +101 -20
  190. package/package.json +1 -1
@@ -14,7 +14,10 @@ async function apiRequest(token, method, endpoint, body, qs) {
14
14
  Authorization: `Bearer ${token}`,
15
15
  },
16
16
  };
17
- if (body && Object.keys(body).length > 0 && method !== "GET" && method !== "DELETE") {
17
+ if (body &&
18
+ Object.keys(body).length > 0 &&
19
+ method !== "GET" &&
20
+ method !== "DELETE") {
18
21
  opts.body = JSON.stringify({ data: body });
19
22
  }
20
23
  const res = await fetch(url.toString(), opts);
@@ -76,12 +79,32 @@ export default function asana(rl) {
76
79
  description: "Create a new task",
77
80
  inputSchema: {
78
81
  name: { type: "string", required: true, description: "Task name" },
79
- workspace: { type: "string", required: true, description: "Workspace GID" },
80
- assignee: { type: "string", required: false, description: "Assignee GID" },
81
- projects: { type: "array", required: false, description: "Array of project GIDs" },
82
+ workspace: {
83
+ type: "string",
84
+ required: true,
85
+ description: "Workspace GID",
86
+ },
87
+ assignee: {
88
+ type: "string",
89
+ required: false,
90
+ description: "Assignee GID",
91
+ },
92
+ projects: {
93
+ type: "array",
94
+ required: false,
95
+ description: "Array of project GIDs",
96
+ },
82
97
  notes: { type: "string", required: false, description: "Task notes" },
83
- dueOn: { type: "string", required: false, description: "Due date (YYYY-MM-DD)" },
84
- completed: { type: "boolean", required: false, description: "Mark as completed" },
98
+ dueOn: {
99
+ type: "string",
100
+ required: false,
101
+ description: "Due date (YYYY-MM-DD)",
102
+ },
103
+ completed: {
104
+ type: "boolean",
105
+ required: false,
106
+ description: "Mark as completed",
107
+ },
85
108
  },
86
109
  async execute(input, ctx) {
87
110
  const { name, workspace, assignee, projects, notes, dueOn, completed, ...rest } = input;
@@ -114,12 +137,25 @@ export default function asana(rl) {
114
137
  inputSchema: {
115
138
  project: { type: "string", required: false, description: "Project GID" },
116
139
  section: { type: "string", required: false, description: "Section GID" },
117
- workspace: { type: "string", required: false, description: "Workspace GID" },
118
- assignee: { type: "string", required: false, description: "Assignee GID (required with workspace)" },
119
- limit: { type: "number", required: false, description: "Max results to return" },
140
+ workspace: {
141
+ type: "string",
142
+ required: false,
143
+ description: "Workspace GID",
144
+ },
145
+ assignee: {
146
+ type: "string",
147
+ required: false,
148
+ description: "Assignee GID (required with workspace)",
149
+ },
150
+ limit: {
151
+ type: "number",
152
+ required: false,
153
+ description: "Max results to return",
154
+ },
120
155
  },
121
156
  async execute(input, ctx) {
122
- const { project, section, workspace, assignee, limit } = (input ?? {});
157
+ const { project, section, workspace, assignee, limit } = (input ??
158
+ {});
123
159
  const qs = {};
124
160
  if (project)
125
161
  qs.project = project;
@@ -138,9 +174,21 @@ export default function asana(rl) {
138
174
  taskId: { type: "string", required: true, description: "Task GID" },
139
175
  name: { type: "string", required: false, description: "Task name" },
140
176
  notes: { type: "string", required: false, description: "Task notes" },
141
- assignee: { type: "string", required: false, description: "Assignee GID" },
142
- dueOn: { type: "string", required: false, description: "Due date (YYYY-MM-DD)" },
143
- completed: { type: "boolean", required: false, description: "Mark as completed" },
177
+ assignee: {
178
+ type: "string",
179
+ required: false,
180
+ description: "Assignee GID",
181
+ },
182
+ dueOn: {
183
+ type: "string",
184
+ required: false,
185
+ description: "Due date (YYYY-MM-DD)",
186
+ },
187
+ completed: {
188
+ type: "boolean",
189
+ required: false,
190
+ description: "Mark as completed",
191
+ },
144
192
  },
145
193
  async execute(input, ctx) {
146
194
  const { taskId, dueOn, ...fields } = input;
@@ -165,7 +213,11 @@ export default function asana(rl) {
165
213
  description: "Move a task to a section",
166
214
  inputSchema: {
167
215
  taskId: { type: "string", required: true, description: "Task GID" },
168
- sectionId: { type: "string", required: true, description: "Section GID to move into" },
216
+ sectionId: {
217
+ type: "string",
218
+ required: true,
219
+ description: "Section GID to move into",
220
+ },
169
221
  },
170
222
  async execute(input, ctx) {
171
223
  const { taskId, sectionId } = input;
@@ -176,9 +228,21 @@ export default function asana(rl) {
176
228
  rl.registerAction("task.search", {
177
229
  description: "Search for tasks in a workspace",
178
230
  inputSchema: {
179
- workspace: { type: "string", required: true, description: "Workspace GID" },
180
- text: { type: "string", required: false, description: "Text to search in name/notes" },
181
- completed: { type: "boolean", required: false, description: "Filter by completed status" },
231
+ workspace: {
232
+ type: "string",
233
+ required: true,
234
+ description: "Workspace GID",
235
+ },
236
+ text: {
237
+ type: "string",
238
+ required: false,
239
+ description: "Text to search in name/notes",
240
+ },
241
+ completed: {
242
+ type: "boolean",
243
+ required: false,
244
+ description: "Filter by completed status",
245
+ },
182
246
  },
183
247
  async execute(input, ctx) {
184
248
  const { workspace, text, completed } = input;
@@ -194,12 +258,28 @@ export default function asana(rl) {
194
258
  rl.registerAction("subtask.create", {
195
259
  description: "Create a subtask on a task",
196
260
  inputSchema: {
197
- taskId: { type: "string", required: true, description: "Parent task GID" },
261
+ taskId: {
262
+ type: "string",
263
+ required: true,
264
+ description: "Parent task GID",
265
+ },
198
266
  name: { type: "string", required: true, description: "Subtask name" },
199
- assignee: { type: "string", required: false, description: "Assignee GID" },
267
+ assignee: {
268
+ type: "string",
269
+ required: false,
270
+ description: "Assignee GID",
271
+ },
200
272
  notes: { type: "string", required: false, description: "Subtask notes" },
201
- dueOn: { type: "string", required: false, description: "Due date (YYYY-MM-DD)" },
202
- completed: { type: "boolean", required: false, description: "Mark as completed" },
273
+ dueOn: {
274
+ type: "string",
275
+ required: false,
276
+ description: "Due date (YYYY-MM-DD)",
277
+ },
278
+ completed: {
279
+ type: "boolean",
280
+ required: false,
281
+ description: "Mark as completed",
282
+ },
203
283
  },
204
284
  async execute(input, ctx) {
205
285
  const { taskId, dueOn, ...fields } = input;
@@ -212,8 +292,16 @@ export default function asana(rl) {
212
292
  rl.registerAction("subtask.list", {
213
293
  description: "List subtasks of a task",
214
294
  inputSchema: {
215
- taskId: { type: "string", required: true, description: "Parent task GID" },
216
- limit: { type: "number", required: false, description: "Max results to return" },
295
+ taskId: {
296
+ type: "string",
297
+ required: true,
298
+ description: "Parent task GID",
299
+ },
300
+ limit: {
301
+ type: "number",
302
+ required: false,
303
+ description: "Max results to return",
304
+ },
217
305
  },
218
306
  async execute(input, ctx) {
219
307
  const { taskId, limit } = input;
@@ -229,12 +317,22 @@ export default function asana(rl) {
229
317
  inputSchema: {
230
318
  taskId: { type: "string", required: true, description: "Task GID" },
231
319
  text: { type: "string", required: true, description: "Comment text" },
232
- isHtml: { type: "boolean", required: false, description: "Whether text is HTML" },
233
- isPinned: { type: "boolean", required: false, description: "Pin the comment" },
320
+ isHtml: {
321
+ type: "boolean",
322
+ required: false,
323
+ description: "Whether text is HTML",
324
+ },
325
+ isPinned: {
326
+ type: "boolean",
327
+ required: false,
328
+ description: "Pin the comment",
329
+ },
234
330
  },
235
331
  async execute(input, ctx) {
236
332
  const { taskId, text, isHtml, isPinned } = input;
237
- const body = isHtml ? { html_text: text } : { text };
333
+ const body = isHtml
334
+ ? { html_text: text }
335
+ : { text };
238
336
  if (isPinned)
239
337
  body.is_pinned = true;
240
338
  return apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/stories`, body);
@@ -243,7 +341,11 @@ export default function asana(rl) {
243
341
  rl.registerAction("taskComment.remove", {
244
342
  description: "Remove a comment (story) from a task",
245
343
  inputSchema: {
246
- commentId: { type: "string", required: true, description: "Comment/story GID" },
344
+ commentId: {
345
+ type: "string",
346
+ required: true,
347
+ description: "Comment/story GID",
348
+ },
247
349
  },
248
350
  async execute(input, ctx) {
249
351
  const { commentId } = input;
@@ -260,7 +362,9 @@ export default function asana(rl) {
260
362
  },
261
363
  async execute(input, ctx) {
262
364
  const { taskId, tagId } = input;
263
- await apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/addTag`, { tag: tagId });
365
+ await apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/addTag`, {
366
+ tag: tagId,
367
+ });
264
368
  return { success: true };
265
369
  },
266
370
  });
@@ -272,7 +376,9 @@ export default function asana(rl) {
272
376
  },
273
377
  async execute(input, ctx) {
274
378
  const { taskId, tagId } = input;
275
- await apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/removeTag`, { tag: tagId });
379
+ await apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/removeTag`, {
380
+ tag: tagId,
381
+ });
276
382
  return { success: true };
277
383
  },
278
384
  });
@@ -282,7 +388,11 @@ export default function asana(rl) {
282
388
  inputSchema: {
283
389
  taskId: { type: "string", required: true, description: "Task GID" },
284
390
  projectId: { type: "string", required: true, description: "Project GID" },
285
- section: { type: "string", required: false, description: "Section GID to insert into" },
391
+ section: {
392
+ type: "string",
393
+ required: false,
394
+ description: "Section GID to insert into",
395
+ },
286
396
  },
287
397
  async execute(input, ctx) {
288
398
  const { taskId, projectId, section } = input;
@@ -309,7 +419,11 @@ export default function asana(rl) {
309
419
  rl.registerAction("user.get", {
310
420
  description: "Get a user by ID (or 'me' for current user)",
311
421
  inputSchema: {
312
- userId: { type: "string", required: true, description: "User GID or 'me'" },
422
+ userId: {
423
+ type: "string",
424
+ required: true,
425
+ description: "User GID or 'me'",
426
+ },
313
427
  },
314
428
  async execute(input, ctx) {
315
429
  const { userId } = input;
@@ -319,7 +433,11 @@ export default function asana(rl) {
319
433
  rl.registerAction("user.list", {
320
434
  description: "List users in a workspace",
321
435
  inputSchema: {
322
- workspace: { type: "string", required: true, description: "Workspace GID" },
436
+ workspace: {
437
+ type: "string",
438
+ required: true,
439
+ description: "Workspace GID",
440
+ },
323
441
  },
324
442
  async execute(input, ctx) {
325
443
  const { workspace } = input;
@@ -331,11 +449,23 @@ export default function asana(rl) {
331
449
  description: "Create a new project",
332
450
  inputSchema: {
333
451
  name: { type: "string", required: true, description: "Project name" },
334
- workspace: { type: "string", required: true, description: "Workspace GID" },
452
+ workspace: {
453
+ type: "string",
454
+ required: true,
455
+ description: "Workspace GID",
456
+ },
335
457
  team: { type: "string", required: true, description: "Team GID" },
336
- notes: { type: "string", required: false, description: "Project description" },
458
+ notes: {
459
+ type: "string",
460
+ required: false,
461
+ description: "Project description",
462
+ },
337
463
  color: { type: "string", required: false, description: "Project color" },
338
- dueOn: { type: "string", required: false, description: "Due date (YYYY-MM-DD)" },
464
+ dueOn: {
465
+ type: "string",
466
+ required: false,
467
+ description: "Due date (YYYY-MM-DD)",
468
+ },
339
469
  },
340
470
  async execute(input, ctx) {
341
471
  const { name, workspace, team, notes, color, dueOn } = input;
@@ -362,10 +492,26 @@ export default function asana(rl) {
362
492
  rl.registerAction("project.list", {
363
493
  description: "List projects in a workspace",
364
494
  inputSchema: {
365
- workspace: { type: "string", required: true, description: "Workspace GID" },
366
- team: { type: "string", required: false, description: "Filter by team GID" },
367
- archived: { type: "boolean", required: false, description: "Filter by archived status" },
368
- limit: { type: "number", required: false, description: "Max results to return" },
495
+ workspace: {
496
+ type: "string",
497
+ required: true,
498
+ description: "Workspace GID",
499
+ },
500
+ team: {
501
+ type: "string",
502
+ required: false,
503
+ description: "Filter by team GID",
504
+ },
505
+ archived: {
506
+ type: "boolean",
507
+ required: false,
508
+ description: "Filter by archived status",
509
+ },
510
+ limit: {
511
+ type: "number",
512
+ required: false,
513
+ description: "Max results to return",
514
+ },
369
515
  },
370
516
  async execute(input, ctx) {
371
517
  const { workspace, team, archived, limit } = (input ?? {});
@@ -386,10 +532,18 @@ export default function asana(rl) {
386
532
  inputSchema: {
387
533
  projectId: { type: "string", required: true, description: "Project GID" },
388
534
  name: { type: "string", required: false, description: "Project name" },
389
- notes: { type: "string", required: false, description: "Project description" },
535
+ notes: {
536
+ type: "string",
537
+ required: false,
538
+ description: "Project description",
539
+ },
390
540
  color: { type: "string", required: false, description: "Project color" },
391
541
  owner: { type: "string", required: false, description: "Owner GID" },
392
- dueOn: { type: "string", required: false, description: "Due date (YYYY-MM-DD)" },
542
+ dueOn: {
543
+ type: "string",
544
+ required: false,
545
+ description: "Due date (YYYY-MM-DD)",
546
+ },
393
547
  },
394
548
  async execute(input, ctx) {
395
549
  const { projectId, dueOn, ...fields } = input;
@@ -7,7 +7,10 @@ async function apiRequest(apiKey, method, endpoint, body) {
7
7
  autopilotapikey: apiKey,
8
8
  },
9
9
  };
10
- if (body && Object.keys(body).length > 0 && method !== "GET" && method !== "DELETE") {
10
+ if (body &&
11
+ Object.keys(body).length > 0 &&
12
+ method !== "GET" &&
13
+ method !== "DELETE") {
11
14
  opts.body = JSON.stringify(body);
12
15
  }
13
16
  const res = await fetch(`${BASE_URL}${endpoint}`, opts);
@@ -58,8 +61,16 @@ export default function autopilot(rl) {
58
61
  lastName: { type: "string", required: false, description: "Last name" },
59
62
  company: { type: "string", required: false, description: "Company" },
60
63
  phone: { type: "string", required: false, description: "Phone" },
61
- listId: { type: "string", required: false, description: "Add to this list" },
62
- newEmail: { type: "string", required: false, description: "Change email address" },
64
+ listId: {
65
+ type: "string",
66
+ required: false,
67
+ description: "Add to this list",
68
+ },
69
+ newEmail: {
70
+ type: "string",
71
+ required: false,
72
+ description: "Change email address",
73
+ },
63
74
  },
64
75
  async execute(input, ctx) {
65
76
  const { email, firstName, lastName, company, phone, listId, newEmail, ...rest } = input;
@@ -82,7 +93,11 @@ export default function autopilot(rl) {
82
93
  rl.registerAction("contact.get", {
83
94
  description: "Get a contact by ID or email",
84
95
  inputSchema: {
85
- contactId: { type: "string", required: true, description: "Contact ID or email" },
96
+ contactId: {
97
+ type: "string",
98
+ required: true,
99
+ description: "Contact ID or email",
100
+ },
86
101
  },
87
102
  async execute(input, ctx) {
88
103
  const { contactId } = input;
@@ -92,7 +107,11 @@ export default function autopilot(rl) {
92
107
  rl.registerAction("contact.list", {
93
108
  description: "List all contacts",
94
109
  inputSchema: {
95
- limit: { type: "number", required: false, description: "Max results to return" },
110
+ limit: {
111
+ type: "number",
112
+ required: false,
113
+ description: "Max results to return",
114
+ },
96
115
  },
97
116
  async execute(input, ctx) {
98
117
  const { limit } = (input ?? {});
@@ -114,7 +133,11 @@ export default function autopilot(rl) {
114
133
  rl.registerAction("contactJourney.add", {
115
134
  description: "Add a contact to a journey/trigger",
116
135
  inputSchema: {
117
- triggerId: { type: "string", required: true, description: "Trigger/journey ID" },
136
+ triggerId: {
137
+ type: "string",
138
+ required: true,
139
+ description: "Trigger/journey ID",
140
+ },
118
141
  contactId: { type: "string", required: true, description: "Contact ID" },
119
142
  },
120
143
  async execute(input, ctx) {
@@ -169,7 +192,11 @@ export default function autopilot(rl) {
169
192
  description: "List all contacts in a list",
170
193
  inputSchema: {
171
194
  listId: { type: "string", required: true, description: "List ID" },
172
- limit: { type: "number", required: false, description: "Max results to return" },
195
+ limit: {
196
+ type: "number",
197
+ required: false,
198
+ description: "Max results to return",
199
+ },
173
200
  },
174
201
  async execute(input, ctx) {
175
202
  const { listId, limit } = input;
@@ -190,7 +217,11 @@ export default function autopilot(rl) {
190
217
  rl.registerAction("list.list", {
191
218
  description: "List all lists",
192
219
  inputSchema: {
193
- limit: { type: "number", required: false, description: "Max results to return" },
220
+ limit: {
221
+ type: "number",
222
+ required: false,
223
+ description: "Max results to return",
224
+ },
194
225
  },
195
226
  async execute(input, ctx) {
196
227
  const { limit } = (input ?? {});
@@ -11,7 +11,10 @@ async function apiRequest(subdomain, apiKey, method, endpoint, body) {
11
11
  Authorization: `Basic ${btoa(`${apiKey}:x`)}`,
12
12
  },
13
13
  };
14
- if (body && Object.keys(body).length > 0 && method !== "GET" && method !== "DELETE") {
14
+ if (body &&
15
+ Object.keys(body).length > 0 &&
16
+ method !== "GET" &&
17
+ method !== "DELETE") {
15
18
  opts.body = JSON.stringify(body);
16
19
  }
17
20
  const res = await fetch(url, opts);
@@ -55,14 +58,38 @@ export default function bambooHr(rl) {
55
58
  inputSchema: {
56
59
  firstName: { type: "string", required: true, description: "First name" },
57
60
  lastName: { type: "string", required: true, description: "Last name" },
58
- department: { type: "string", required: false, description: "Department" },
61
+ department: {
62
+ type: "string",
63
+ required: false,
64
+ description: "Department",
65
+ },
59
66
  division: { type: "string", required: false, description: "Division" },
60
- employeeNumber: { type: "string", required: false, description: "Employee number" },
61
- gender: { type: "string", required: false, description: "Gender (Male/Female)" },
62
- hireDate: { type: "string", required: false, description: "Hire date (YYYY-MM-DD)" },
67
+ employeeNumber: {
68
+ type: "string",
69
+ required: false,
70
+ description: "Employee number",
71
+ },
72
+ gender: {
73
+ type: "string",
74
+ required: false,
75
+ description: "Gender (Male/Female)",
76
+ },
77
+ hireDate: {
78
+ type: "string",
79
+ required: false,
80
+ description: "Hire date (YYYY-MM-DD)",
81
+ },
63
82
  location: { type: "string", required: false, description: "Location" },
64
- mobilePhone: { type: "string", required: false, description: "Mobile phone" },
65
- preferredName: { type: "string", required: false, description: "Preferred name" },
83
+ mobilePhone: {
84
+ type: "string",
85
+ required: false,
86
+ description: "Mobile phone",
87
+ },
88
+ preferredName: {
89
+ type: "string",
90
+ required: false,
91
+ description: "Preferred name",
92
+ },
66
93
  },
67
94
  async execute(input, ctx) {
68
95
  const { subdomain, apiKey } = getConn(ctx);
@@ -86,8 +113,16 @@ export default function bambooHr(rl) {
86
113
  rl.registerAction("employee.get", {
87
114
  description: "Get an employee by ID",
88
115
  inputSchema: {
89
- employeeId: { type: "string", required: true, description: "Employee ID" },
90
- fields: { type: "string", required: false, description: "Comma-separated field names (default: all)" },
116
+ employeeId: {
117
+ type: "string",
118
+ required: true,
119
+ description: "Employee ID",
120
+ },
121
+ fields: {
122
+ type: "string",
123
+ required: false,
124
+ description: "Comma-separated field names (default: all)",
125
+ },
91
126
  },
92
127
  async execute(input, ctx) {
93
128
  const { employeeId, fields } = input;
@@ -104,7 +139,11 @@ export default function bambooHr(rl) {
104
139
  rl.registerAction("employee.list", {
105
140
  description: "List all employees (directory)",
106
141
  inputSchema: {
107
- limit: { type: "number", required: false, description: "Max results to return" },
142
+ limit: {
143
+ type: "number",
144
+ required: false,
145
+ description: "Max results to return",
146
+ },
108
147
  },
109
148
  async execute(input, ctx) {
110
149
  const { limit } = (input ?? {});
@@ -119,15 +158,31 @@ export default function bambooHr(rl) {
119
158
  rl.registerAction("employee.update", {
120
159
  description: "Update an employee",
121
160
  inputSchema: {
122
- employeeId: { type: "string", required: true, description: "Employee ID" },
161
+ employeeId: {
162
+ type: "string",
163
+ required: true,
164
+ description: "Employee ID",
165
+ },
123
166
  firstName: { type: "string", required: false, description: "First name" },
124
167
  lastName: { type: "string", required: false, description: "Last name" },
125
- department: { type: "string", required: false, description: "Department" },
168
+ department: {
169
+ type: "string",
170
+ required: false,
171
+ description: "Department",
172
+ },
126
173
  division: { type: "string", required: false, description: "Division" },
127
174
  gender: { type: "string", required: false, description: "Gender" },
128
- hireDate: { type: "string", required: false, description: "Hire date (YYYY-MM-DD)" },
175
+ hireDate: {
176
+ type: "string",
177
+ required: false,
178
+ description: "Hire date (YYYY-MM-DD)",
179
+ },
129
180
  location: { type: "string", required: false, description: "Location" },
130
- mobilePhone: { type: "string", required: false, description: "Mobile phone" },
181
+ mobilePhone: {
182
+ type: "string",
183
+ required: false,
184
+ description: "Mobile phone",
185
+ },
131
186
  },
132
187
  async execute(input, ctx) {
133
188
  const { employeeId, ...fields } = input;
@@ -140,8 +195,16 @@ export default function bambooHr(rl) {
140
195
  rl.registerAction("employeeDocument.list", {
141
196
  description: "List documents for an employee",
142
197
  inputSchema: {
143
- employeeId: { type: "string", required: true, description: "Employee ID" },
144
- limit: { type: "number", required: false, description: "Max results to return" },
198
+ employeeId: {
199
+ type: "string",
200
+ required: true,
201
+ description: "Employee ID",
202
+ },
203
+ limit: {
204
+ type: "number",
205
+ required: false,
206
+ description: "Max results to return",
207
+ },
145
208
  },
146
209
  async execute(input, ctx) {
147
210
  const { employeeId, limit } = input;
@@ -162,7 +225,11 @@ export default function bambooHr(rl) {
162
225
  rl.registerAction("employeeDocument.delete", {
163
226
  description: "Delete an employee document",
164
227
  inputSchema: {
165
- employeeId: { type: "string", required: true, description: "Employee ID" },
228
+ employeeId: {
229
+ type: "string",
230
+ required: true,
231
+ description: "Employee ID",
232
+ },
166
233
  fileId: { type: "string", required: true, description: "File ID" },
167
234
  },
168
235
  async execute(input, ctx) {
@@ -175,9 +242,17 @@ export default function bambooHr(rl) {
175
242
  rl.registerAction("employeeDocument.update", {
176
243
  description: "Update an employee document's metadata",
177
244
  inputSchema: {
178
- employeeId: { type: "string", required: true, description: "Employee ID" },
245
+ employeeId: {
246
+ type: "string",
247
+ required: true,
248
+ description: "Employee ID",
249
+ },
179
250
  fileId: { type: "string", required: true, description: "File ID" },
180
- shareWithEmployee: { type: "boolean", required: false, description: "Share file with employee" },
251
+ shareWithEmployee: {
252
+ type: "boolean",
253
+ required: false,
254
+ description: "Share file with employee",
255
+ },
181
256
  },
182
257
  async execute(input, ctx) {
183
258
  const { employeeId, fileId, shareWithEmployee } = input;
@@ -192,7 +267,11 @@ export default function bambooHr(rl) {
192
267
  rl.registerAction("file.list", {
193
268
  description: "List company files",
194
269
  inputSchema: {
195
- limit: { type: "number", required: false, description: "Max results to return" },
270
+ limit: {
271
+ type: "number",
272
+ required: false,
273
+ description: "Max results to return",
274
+ },
196
275
  },
197
276
  async execute(input, ctx) {
198
277
  const { limit } = (input ?? {});
@@ -225,7 +304,11 @@ export default function bambooHr(rl) {
225
304
  description: "Update a company file's metadata",
226
305
  inputSchema: {
227
306
  fileId: { type: "string", required: true, description: "File ID" },
228
- shareWithEmployee: { type: "boolean", required: false, description: "Share with employees" },
307
+ shareWithEmployee: {
308
+ type: "boolean",
309
+ required: false,
310
+ description: "Share with employees",
311
+ },
229
312
  },
230
313
  async execute(input, ctx) {
231
314
  const { fileId, shareWithEmployee } = input;
@@ -241,7 +324,11 @@ export default function bambooHr(rl) {
241
324
  description: "Get a company report",
242
325
  inputSchema: {
243
326
  reportId: { type: "string", required: true, description: "Report ID" },
244
- format: { type: "string", required: false, description: "Format: JSON, CSV, XLS, XML, PDF (default: JSON)" },
327
+ format: {
328
+ type: "string",
329
+ required: false,
330
+ description: "Format: JSON, CSV, XLS, XML, PDF (default: JSON)",
331
+ },
245
332
  },
246
333
  async execute(input, ctx) {
247
334
  const { reportId, format = "JSON" } = input;