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
@@ -11,7 +11,10 @@ async function apiRequest(apiKey, method, endpoint, body, qs) {
11
11
  method,
12
12
  headers: { "Content-Type": "application/json", "X-Api-Key": apiKey },
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.toString(), opts);
@@ -31,7 +34,11 @@ async function paginateAll(apiKey, endpoint, qs, limit) {
31
34
  let page = 1;
32
35
  const size = 50;
33
36
  while (true) {
34
- const data = (await apiRequest(apiKey, "GET", endpoint, undefined, { ...qs, page, "page-size": size }));
37
+ const data = (await apiRequest(apiKey, "GET", endpoint, undefined, {
38
+ ...qs,
39
+ page,
40
+ "page-size": size,
41
+ }));
35
42
  if (!Array.isArray(data))
36
43
  break;
37
44
  results.push(...data);
@@ -61,7 +68,11 @@ export default function clockify(rl) {
61
68
  rl.registerAction("client.create", {
62
69
  description: "Create a client",
63
70
  inputSchema: {
64
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
71
+ workspaceId: {
72
+ type: "string",
73
+ required: true,
74
+ description: "Workspace ID",
75
+ },
65
76
  name: { type: "string", required: true, description: "Client name" },
66
77
  },
67
78
  async execute(input, ctx) {
@@ -72,7 +83,11 @@ export default function clockify(rl) {
72
83
  rl.registerAction("client.get", {
73
84
  description: "Get a client",
74
85
  inputSchema: {
75
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
86
+ workspaceId: {
87
+ type: "string",
88
+ required: true,
89
+ description: "Workspace ID",
90
+ },
76
91
  clientId: { type: "string", required: true, description: "Client ID" },
77
92
  },
78
93
  async execute(input, ctx) {
@@ -83,9 +98,17 @@ export default function clockify(rl) {
83
98
  rl.registerAction("client.list", {
84
99
  description: "List clients in a workspace",
85
100
  inputSchema: {
86
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
101
+ workspaceId: {
102
+ type: "string",
103
+ required: true,
104
+ description: "Workspace ID",
105
+ },
87
106
  name: { type: "string", required: false, description: "Filter by name" },
88
- archived: { type: "boolean", required: false, description: "Include archived" },
107
+ archived: {
108
+ type: "boolean",
109
+ required: false,
110
+ description: "Include archived",
111
+ },
89
112
  limit: { type: "number", required: false, description: "Max results" },
90
113
  },
91
114
  async execute(input, ctx) {
@@ -101,7 +124,11 @@ export default function clockify(rl) {
101
124
  rl.registerAction("client.update", {
102
125
  description: "Update a client",
103
126
  inputSchema: {
104
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
127
+ workspaceId: {
128
+ type: "string",
129
+ required: true,
130
+ description: "Workspace ID",
131
+ },
105
132
  clientId: { type: "string", required: true, description: "Client ID" },
106
133
  name: { type: "string", required: true, description: "Client name" },
107
134
  archived: { type: "boolean", required: false, description: "Archived" },
@@ -114,7 +141,11 @@ export default function clockify(rl) {
114
141
  rl.registerAction("client.delete", {
115
142
  description: "Delete a client",
116
143
  inputSchema: {
117
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
144
+ workspaceId: {
145
+ type: "string",
146
+ required: true,
147
+ description: "Workspace ID",
148
+ },
118
149
  clientId: { type: "string", required: true, description: "Client ID" },
119
150
  },
120
151
  async execute(input, ctx) {
@@ -127,10 +158,18 @@ export default function clockify(rl) {
127
158
  rl.registerAction("project.create", {
128
159
  description: "Create a project",
129
160
  inputSchema: {
130
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
161
+ workspaceId: {
162
+ type: "string",
163
+ required: true,
164
+ description: "Workspace ID",
165
+ },
131
166
  name: { type: "string", required: true, description: "Project name" },
132
167
  clientId: { type: "string", required: false, description: "Client ID" },
133
- isPublic: { type: "boolean", required: false, description: "Public project" },
168
+ isPublic: {
169
+ type: "boolean",
170
+ required: false,
171
+ description: "Public project",
172
+ },
134
173
  billable: { type: "boolean", required: false, description: "Billable" },
135
174
  color: { type: "string", required: false, description: "Color hex" },
136
175
  note: { type: "string", required: false, description: "Note" },
@@ -143,7 +182,11 @@ export default function clockify(rl) {
143
182
  rl.registerAction("project.get", {
144
183
  description: "Get a project",
145
184
  inputSchema: {
146
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
185
+ workspaceId: {
186
+ type: "string",
187
+ required: true,
188
+ description: "Workspace ID",
189
+ },
147
190
  projectId: { type: "string", required: true, description: "Project ID" },
148
191
  },
149
192
  async execute(input, ctx) {
@@ -154,9 +197,17 @@ export default function clockify(rl) {
154
197
  rl.registerAction("project.list", {
155
198
  description: "List projects in a workspace",
156
199
  inputSchema: {
157
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
200
+ workspaceId: {
201
+ type: "string",
202
+ required: true,
203
+ description: "Workspace ID",
204
+ },
158
205
  name: { type: "string", required: false, description: "Filter by name" },
159
- archived: { type: "boolean", required: false, description: "Include archived" },
206
+ archived: {
207
+ type: "boolean",
208
+ required: false,
209
+ description: "Include archived",
210
+ },
160
211
  limit: { type: "number", required: false, description: "Max results" },
161
212
  },
162
213
  async execute(input, ctx) {
@@ -172,7 +223,11 @@ export default function clockify(rl) {
172
223
  rl.registerAction("project.update", {
173
224
  description: "Update a project",
174
225
  inputSchema: {
175
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
226
+ workspaceId: {
227
+ type: "string",
228
+ required: true,
229
+ description: "Workspace ID",
230
+ },
176
231
  projectId: { type: "string", required: true, description: "Project ID" },
177
232
  name: { type: "string", required: false, description: "Name" },
178
233
  clientId: { type: "string", required: false, description: "Client ID" },
@@ -190,7 +245,11 @@ export default function clockify(rl) {
190
245
  rl.registerAction("project.delete", {
191
246
  description: "Delete a project",
192
247
  inputSchema: {
193
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
248
+ workspaceId: {
249
+ type: "string",
250
+ required: true,
251
+ description: "Workspace ID",
252
+ },
194
253
  projectId: { type: "string", required: true, description: "Project ID" },
195
254
  },
196
255
  async execute(input, ctx) {
@@ -203,20 +262,34 @@ export default function clockify(rl) {
203
262
  rl.registerAction("tag.create", {
204
263
  description: "Create a tag",
205
264
  inputSchema: {
206
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
265
+ workspaceId: {
266
+ type: "string",
267
+ required: true,
268
+ description: "Workspace ID",
269
+ },
207
270
  name: { type: "string", required: true, description: "Tag name" },
208
271
  },
209
272
  async execute(input, ctx) {
210
273
  const { workspaceId, name } = input;
211
- return apiRequest(getKey(ctx), "POST", `workspaces/${workspaceId}/tags`, { name });
274
+ return apiRequest(getKey(ctx), "POST", `workspaces/${workspaceId}/tags`, {
275
+ name,
276
+ });
212
277
  },
213
278
  });
214
279
  rl.registerAction("tag.list", {
215
280
  description: "List tags in a workspace",
216
281
  inputSchema: {
217
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
282
+ workspaceId: {
283
+ type: "string",
284
+ required: true,
285
+ description: "Workspace ID",
286
+ },
218
287
  name: { type: "string", required: false, description: "Filter by name" },
219
- archived: { type: "boolean", required: false, description: "Include archived" },
288
+ archived: {
289
+ type: "boolean",
290
+ required: false,
291
+ description: "Include archived",
292
+ },
220
293
  limit: { type: "number", required: false, description: "Max results" },
221
294
  },
222
295
  async execute(input, ctx) {
@@ -232,7 +305,11 @@ export default function clockify(rl) {
232
305
  rl.registerAction("tag.update", {
233
306
  description: "Update a tag",
234
307
  inputSchema: {
235
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
308
+ workspaceId: {
309
+ type: "string",
310
+ required: true,
311
+ description: "Workspace ID",
312
+ },
236
313
  tagId: { type: "string", required: true, description: "Tag ID" },
237
314
  name: { type: "string", required: false, description: "Name" },
238
315
  archived: { type: "boolean", required: false, description: "Archived" },
@@ -245,7 +322,11 @@ export default function clockify(rl) {
245
322
  rl.registerAction("tag.delete", {
246
323
  description: "Delete a tag",
247
324
  inputSchema: {
248
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
325
+ workspaceId: {
326
+ type: "string",
327
+ required: true,
328
+ description: "Workspace ID",
329
+ },
249
330
  tagId: { type: "string", required: true, description: "Tag ID" },
250
331
  },
251
332
  async execute(input, ctx) {
@@ -258,12 +339,28 @@ export default function clockify(rl) {
258
339
  rl.registerAction("task.create", {
259
340
  description: "Create a task in a project",
260
341
  inputSchema: {
261
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
342
+ workspaceId: {
343
+ type: "string",
344
+ required: true,
345
+ description: "Workspace ID",
346
+ },
262
347
  projectId: { type: "string", required: true, description: "Project ID" },
263
348
  name: { type: "string", required: true, description: "Task name" },
264
- assigneeIds: { type: "array", required: false, description: "Assignee user IDs" },
265
- estimate: { type: "string", required: false, description: "Estimate (HH:MM format)" },
266
- status: { type: "string", required: false, description: "Status: ACTIVE or DONE" },
349
+ assigneeIds: {
350
+ type: "array",
351
+ required: false,
352
+ description: "Assignee user IDs",
353
+ },
354
+ estimate: {
355
+ type: "string",
356
+ required: false,
357
+ description: "Estimate (HH:MM format)",
358
+ },
359
+ status: {
360
+ type: "string",
361
+ required: false,
362
+ description: "Status: ACTIVE or DONE",
363
+ },
267
364
  },
268
365
  async execute(input, ctx) {
269
366
  const { workspaceId, projectId, estimate, ...body } = input;
@@ -277,7 +374,11 @@ export default function clockify(rl) {
277
374
  rl.registerAction("task.get", {
278
375
  description: "Get a task",
279
376
  inputSchema: {
280
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
377
+ workspaceId: {
378
+ type: "string",
379
+ required: true,
380
+ description: "Workspace ID",
381
+ },
281
382
  projectId: { type: "string", required: true, description: "Project ID" },
282
383
  taskId: { type: "string", required: true, description: "Task ID" },
283
384
  },
@@ -289,14 +390,23 @@ export default function clockify(rl) {
289
390
  rl.registerAction("task.list", {
290
391
  description: "List tasks in a project",
291
392
  inputSchema: {
292
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
393
+ workspaceId: {
394
+ type: "string",
395
+ required: true,
396
+ description: "Workspace ID",
397
+ },
293
398
  projectId: { type: "string", required: true, description: "Project ID" },
294
- isActive: { type: "boolean", required: false, description: "Filter active tasks" },
399
+ isActive: {
400
+ type: "boolean",
401
+ required: false,
402
+ description: "Filter active tasks",
403
+ },
295
404
  name: { type: "string", required: false, description: "Filter by name" },
296
405
  limit: { type: "number", required: false, description: "Max results" },
297
406
  },
298
407
  async execute(input, ctx) {
299
- const { workspaceId, projectId, isActive, name, limit } = (input ?? {});
408
+ const { workspaceId, projectId, isActive, name, limit } = (input ??
409
+ {});
300
410
  const qs = {};
301
411
  if (isActive !== undefined)
302
412
  qs["is-active"] = isActive;
@@ -312,12 +422,24 @@ export default function clockify(rl) {
312
422
  rl.registerAction("task.update", {
313
423
  description: "Update a task",
314
424
  inputSchema: {
315
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
425
+ workspaceId: {
426
+ type: "string",
427
+ required: true,
428
+ description: "Workspace ID",
429
+ },
316
430
  projectId: { type: "string", required: true, description: "Project ID" },
317
431
  taskId: { type: "string", required: true, description: "Task ID" },
318
432
  name: { type: "string", required: false, description: "Name" },
319
- assigneeIds: { type: "array", required: false, description: "Assignee IDs" },
320
- estimate: { type: "string", required: false, description: "Estimate (HH:MM)" },
433
+ assigneeIds: {
434
+ type: "array",
435
+ required: false,
436
+ description: "Assignee IDs",
437
+ },
438
+ estimate: {
439
+ type: "string",
440
+ required: false,
441
+ description: "Estimate (HH:MM)",
442
+ },
321
443
  status: { type: "string", required: false, description: "Status" },
322
444
  },
323
445
  async execute(input, ctx) {
@@ -332,7 +454,11 @@ export default function clockify(rl) {
332
454
  rl.registerAction("task.delete", {
333
455
  description: "Delete a task",
334
456
  inputSchema: {
335
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
457
+ workspaceId: {
458
+ type: "string",
459
+ required: true,
460
+ description: "Workspace ID",
461
+ },
336
462
  projectId: { type: "string", required: true, description: "Project ID" },
337
463
  taskId: { type: "string", required: true, description: "Task ID" },
338
464
  },
@@ -346,10 +472,26 @@ export default function clockify(rl) {
346
472
  rl.registerAction("timeEntry.create", {
347
473
  description: "Create a time entry",
348
474
  inputSchema: {
349
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
350
- start: { type: "string", required: true, description: "Start time (ISO 8601)" },
351
- end: { type: "string", required: false, description: "End time (ISO 8601)" },
352
- description: { type: "string", required: false, description: "Description" },
475
+ workspaceId: {
476
+ type: "string",
477
+ required: true,
478
+ description: "Workspace ID",
479
+ },
480
+ start: {
481
+ type: "string",
482
+ required: true,
483
+ description: "Start time (ISO 8601)",
484
+ },
485
+ end: {
486
+ type: "string",
487
+ required: false,
488
+ description: "End time (ISO 8601)",
489
+ },
490
+ description: {
491
+ type: "string",
492
+ required: false,
493
+ description: "Description",
494
+ },
353
495
  projectId: { type: "string", required: false, description: "Project ID" },
354
496
  taskId: { type: "string", required: false, description: "Task ID" },
355
497
  tagIds: { type: "array", required: false, description: "Tag IDs" },
@@ -363,8 +505,16 @@ export default function clockify(rl) {
363
505
  rl.registerAction("timeEntry.get", {
364
506
  description: "Get a time entry",
365
507
  inputSchema: {
366
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
367
- timeEntryId: { type: "string", required: true, description: "Time entry ID" },
508
+ workspaceId: {
509
+ type: "string",
510
+ required: true,
511
+ description: "Workspace ID",
512
+ },
513
+ timeEntryId: {
514
+ type: "string",
515
+ required: true,
516
+ description: "Time entry ID",
517
+ },
368
518
  },
369
519
  async execute(input, ctx) {
370
520
  const { workspaceId, timeEntryId } = input;
@@ -374,11 +524,23 @@ export default function clockify(rl) {
374
524
  rl.registerAction("timeEntry.update", {
375
525
  description: "Update a time entry",
376
526
  inputSchema: {
377
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
378
- timeEntryId: { type: "string", required: true, description: "Time entry ID" },
527
+ workspaceId: {
528
+ type: "string",
529
+ required: true,
530
+ description: "Workspace ID",
531
+ },
532
+ timeEntryId: {
533
+ type: "string",
534
+ required: true,
535
+ description: "Time entry ID",
536
+ },
379
537
  start: { type: "string", required: false, description: "Start time" },
380
538
  end: { type: "string", required: false, description: "End time" },
381
- description: { type: "string", required: false, description: "Description" },
539
+ description: {
540
+ type: "string",
541
+ required: false,
542
+ description: "Description",
543
+ },
382
544
  projectId: { type: "string", required: false, description: "Project ID" },
383
545
  taskId: { type: "string", required: false, description: "Task ID" },
384
546
  tagIds: { type: "array", required: false, description: "Tag IDs" },
@@ -398,8 +560,16 @@ export default function clockify(rl) {
398
560
  rl.registerAction("timeEntry.delete", {
399
561
  description: "Delete a time entry",
400
562
  inputSchema: {
401
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
402
- timeEntryId: { type: "string", required: true, description: "Time entry ID" },
563
+ workspaceId: {
564
+ type: "string",
565
+ required: true,
566
+ description: "Workspace ID",
567
+ },
568
+ timeEntryId: {
569
+ type: "string",
570
+ required: true,
571
+ description: "Time entry ID",
572
+ },
403
573
  },
404
574
  async execute(input, ctx) {
405
575
  const { workspaceId, timeEntryId } = input;
@@ -411,9 +581,21 @@ export default function clockify(rl) {
411
581
  rl.registerAction("user.list", {
412
582
  description: "List users in a workspace",
413
583
  inputSchema: {
414
- workspaceId: { type: "string", required: true, description: "Workspace ID" },
415
- email: { type: "string", required: false, description: "Filter by email" },
416
- status: { type: "string", required: false, description: "Filter by status: ACTIVE, PENDING, DECLINED" },
584
+ workspaceId: {
585
+ type: "string",
586
+ required: true,
587
+ description: "Workspace ID",
588
+ },
589
+ email: {
590
+ type: "string",
591
+ required: false,
592
+ description: "Filter by email",
593
+ },
594
+ status: {
595
+ type: "string",
596
+ required: false,
597
+ description: "Filter by status: ACTIVE, PENDING, DECLINED",
598
+ },
417
599
  limit: { type: "number", required: false, description: "Max results" },
418
600
  },
419
601
  async execute(input, ctx) {
@@ -9,9 +9,15 @@ async function apiRequest(token, method, endpoint, body, qs) {
9
9
  }
10
10
  const opts = {
11
11
  method,
12
- headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}` },
12
+ headers: {
13
+ "Content-Type": "application/json",
14
+ Authorization: `Bearer ${token}`,
15
+ },
13
16
  };
14
- 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") {
15
21
  opts.body = JSON.stringify(body);
16
22
  }
17
23
  const res = await fetch(url.toString(), opts);
@@ -39,7 +45,11 @@ export default function cloudflare(rl) {
39
45
  description: "Get a zone-level origin certificate",
40
46
  inputSchema: {
41
47
  zoneId: { type: "string", required: true, description: "Zone ID" },
42
- certificateId: { type: "string", required: true, description: "Certificate ID" },
48
+ certificateId: {
49
+ type: "string",
50
+ required: true,
51
+ description: "Certificate ID",
52
+ },
43
53
  },
44
54
  async execute(input, ctx) {
45
55
  const { zoneId, certificateId } = input;
@@ -66,8 +76,16 @@ export default function cloudflare(rl) {
66
76
  description: "Upload a zone-level origin certificate",
67
77
  inputSchema: {
68
78
  zoneId: { type: "string", required: true, description: "Zone ID" },
69
- certificate: { type: "string", required: true, description: "PEM certificate" },
70
- privateKey: { type: "string", required: true, description: "PEM private key" },
79
+ certificate: {
80
+ type: "string",
81
+ required: true,
82
+ description: "PEM certificate",
83
+ },
84
+ privateKey: {
85
+ type: "string",
86
+ required: true,
87
+ description: "PEM private key",
88
+ },
71
89
  },
72
90
  async execute(input, ctx) {
73
91
  const { zoneId, certificate, privateKey } = input;
@@ -82,7 +100,11 @@ export default function cloudflare(rl) {
82
100
  description: "Delete a zone-level origin certificate",
83
101
  inputSchema: {
84
102
  zoneId: { type: "string", required: true, description: "Zone ID" },
85
- certificateId: { type: "string", required: true, description: "Certificate ID" },
103
+ certificateId: {
104
+ type: "string",
105
+ required: true,
106
+ description: "Certificate ID",
107
+ },
86
108
  },
87
109
  async execute(input, ctx) {
88
110
  const { zoneId, certificateId } = input;
@@ -42,8 +42,16 @@ export default function cockpit(rl) {
42
42
  rl.registerAction("collection.create", {
43
43
  description: "Create an entry in a collection",
44
44
  inputSchema: {
45
- collection: { type: "string", required: true, description: "Collection name" },
46
- data: { type: "object", required: true, description: "Entry data as key-value pairs" },
45
+ collection: {
46
+ type: "string",
47
+ required: true,
48
+ description: "Collection name",
49
+ },
50
+ data: {
51
+ type: "object",
52
+ required: true,
53
+ description: "Entry data as key-value pairs",
54
+ },
47
55
  },
48
56
  async execute(input, ctx) {
49
57
  const { collection, data } = input;
@@ -54,17 +62,37 @@ export default function cockpit(rl) {
54
62
  rl.registerAction("collection.list", {
55
63
  description: "List entries in a collection",
56
64
  inputSchema: {
57
- collection: { type: "string", required: true, description: "Collection name" },
65
+ collection: {
66
+ type: "string",
67
+ required: true,
68
+ description: "Collection name",
69
+ },
58
70
  filter: { type: "object", required: false, description: "Filter object" },
59
- fields: { type: "array", required: false, description: "Array of field names to return" },
60
- sort: { type: "object", required: false, description: "Sort object (e.g. {fieldName: 1})" },
71
+ fields: {
72
+ type: "array",
73
+ required: false,
74
+ description: "Array of field names to return",
75
+ },
76
+ sort: {
77
+ type: "object",
78
+ required: false,
79
+ description: "Sort object (e.g. {fieldName: 1})",
80
+ },
61
81
  limit: { type: "number", required: false, description: "Max results" },
62
82
  skip: { type: "number", required: false, description: "Number to skip" },
63
- populate: { type: "boolean", required: false, description: "Populate linked entries" },
64
- language: { type: "string", required: false, description: "Language code" },
83
+ populate: {
84
+ type: "boolean",
85
+ required: false,
86
+ description: "Populate linked entries",
87
+ },
88
+ language: {
89
+ type: "string",
90
+ required: false,
91
+ description: "Language code",
92
+ },
65
93
  },
66
94
  async execute(input, ctx) {
67
- const { collection, filter, fields, sort, limit, skip, populate, language } = (input ?? {});
95
+ const { collection, filter, fields, sort, limit, skip, populate, language, } = (input ?? {});
68
96
  const { baseUrl, token } = getConn(ctx);
69
97
  const body = { simple: true };
70
98
  if (filter)
@@ -91,7 +119,11 @@ export default function cockpit(rl) {
91
119
  rl.registerAction("collection.update", {
92
120
  description: "Update an entry in a collection",
93
121
  inputSchema: {
94
- collection: { type: "string", required: true, description: "Collection name" },
122
+ collection: {
123
+ type: "string",
124
+ required: true,
125
+ description: "Collection name",
126
+ },
95
127
  id: { type: "string", required: true, description: "Entry _id" },
96
128
  data: { type: "object", required: true, description: "Fields to update" },
97
129
  },
@@ -108,19 +140,29 @@ export default function cockpit(rl) {
108
140
  description: "Submit a form",
109
141
  inputSchema: {
110
142
  form: { type: "string", required: true, description: "Form name" },
111
- data: { type: "object", required: true, description: "Form data as key-value pairs" },
143
+ data: {
144
+ type: "object",
145
+ required: true,
146
+ description: "Form data as key-value pairs",
147
+ },
112
148
  },
113
149
  async execute(input, ctx) {
114
150
  const { form, data } = input;
115
151
  const { baseUrl, token } = getConn(ctx);
116
- return apiRequest(baseUrl, token, "POST", `/forms/submit/${form}`, { form: data });
152
+ return apiRequest(baseUrl, token, "POST", `/forms/submit/${form}`, {
153
+ form: data,
154
+ });
117
155
  },
118
156
  });
119
157
  // ── Singleton ───────────────────────────────────────
120
158
  rl.registerAction("singleton.get", {
121
159
  description: "Get a singleton's data",
122
160
  inputSchema: {
123
- singleton: { type: "string", required: true, description: "Singleton name" },
161
+ singleton: {
162
+ type: "string",
163
+ required: true,
164
+ description: "Singleton name",
165
+ },
124
166
  },
125
167
  async execute(input, ctx) {
126
168
  const { singleton } = input;