@automate.ax/catalog 0.141.0 → 0.142.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,9 +9,11 @@ import { convexTriggerDefinitions } from "./convex.js";
9
9
  import { discordTriggerDefinitions } from "./discord.js";
10
10
  import { closeTriggerDefinitions } from "./close.js";
11
11
  import { cloudflareTriggerDefinitions } from "./cloudflare.js";
12
+ import { clickUpTriggerDefinitions } from "./clickup.js";
12
13
  import { coreTriggerDefinitions } from "./core.js";
13
14
  import { githubTriggerDefinitions } from "./github.js";
14
15
  import { googleTriggerDefinitions } from "./google.js";
16
+ import { googleAdsTriggerDefinitions } from "./google-ads.js";
15
17
  import { hubspotTriggerDefinitions } from "./hubspot.js";
16
18
  import { linearTriggerDefinitions } from "./linear.js";
17
19
  import { millionVerifierTriggerDefinitions } from "./millionverifier.js";
@@ -42,9 +44,11 @@ export const triggerDefinitions = {
42
44
  ...discordTriggerDefinitions,
43
45
  ...closeTriggerDefinitions,
44
46
  ...cloudflareTriggerDefinitions,
47
+ ...clickUpTriggerDefinitions,
45
48
  ...coreTriggerDefinitions,
46
49
  ...githubTriggerDefinitions,
47
50
  ...googleTriggerDefinitions,
51
+ ...googleAdsTriggerDefinitions,
48
52
  ...hubspotTriggerDefinitions,
49
53
  ...linearTriggerDefinitions,
50
54
  ...millionVerifierTriggerDefinitions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/catalog",
3
- "version": "0.141.0",
3
+ "version": "0.142.0",
4
4
  "description": "Shared integration service and trigger definitions for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,6 +26,7 @@
26
26
  "./triggers/axiom": "./src/triggers/axiom.ts",
27
27
  "./triggers/automate": "./src/triggers/automate.ts",
28
28
  "./triggers/asana": "./src/triggers/asana.ts",
29
+ "./triggers/clickup": "./src/triggers/clickup.ts",
29
30
  "./triggers/brevo": "./src/triggers/brevo.ts",
30
31
  "./triggers/cloudflare": "./src/triggers/cloudflare.ts",
31
32
  "./triggers/convex": "./src/triggers/convex.ts",
@@ -38,6 +39,7 @@
38
39
  "./triggers/core-schedule": "./src/triggers/core-schedule.ts",
39
40
  "./triggers/github": "./src/triggers/github.ts",
40
41
  "./triggers/google": "./src/triggers/google.ts",
42
+ "./triggers/google-ads": "./src/triggers/google-ads.ts",
41
43
  "./triggers/hubspot": "./src/triggers/hubspot.ts",
42
44
  "./triggers/linear": "./src/triggers/linear.ts",
43
45
  "./triggers/millionverifier": "./src/triggers/millionverifier.ts",
@@ -60,7 +62,7 @@
60
62
  }
61
63
  },
62
64
  "devDependencies": {
63
- "@internal/config": "0.2.0",
65
+ "@internal/config": "0.3.0",
64
66
  "@types/bun": "latest",
65
67
  "@typescript/native": "npm:typescript@^7.0.2",
66
68
  "@zachsents/oxlint-config": "^0.4.1",
@@ -131,6 +133,11 @@
131
133
  "types": "./dist/triggers/asana.d.ts",
132
134
  "default": "./dist/triggers/asana.js"
133
135
  },
136
+ "./triggers/clickup": {
137
+ "bun": "./src/triggers/clickup.ts",
138
+ "types": "./dist/triggers/clickup.d.ts",
139
+ "default": "./dist/triggers/clickup.js"
140
+ },
134
141
  "./triggers/brevo": {
135
142
  "bun": "./src/triggers/brevo.ts",
136
143
  "types": "./dist/triggers/brevo.d.ts",
@@ -191,6 +198,11 @@
191
198
  "types": "./dist/triggers/google.d.ts",
192
199
  "default": "./dist/triggers/google.js"
193
200
  },
201
+ "./triggers/google-ads": {
202
+ "bun": "./src/triggers/google-ads.ts",
203
+ "types": "./dist/triggers/google-ads.d.ts",
204
+ "default": "./dist/triggers/google-ads.js"
205
+ },
194
206
  "./triggers/hubspot": {
195
207
  "bun": "./src/triggers/hubspot.ts",
196
208
  "types": "./dist/triggers/hubspot.d.ts",
package/src/catalog.ts CHANGED
@@ -247,6 +247,31 @@ export const closeBotService = defineApiKeyService({
247
247
  placeholder: "CloseBot API key",
248
248
  })
249
249
 
250
+ export const clickUpService = defineIntegrationService({
251
+ connectionMethods: [
252
+ { id: "oauth", name: "OAuth", type: "redirect" },
253
+ {
254
+ credentialUrl: "https://app.clickup.com/settings/apps",
255
+ fields: [
256
+ {
257
+ input: "password",
258
+ label: "Personal API token",
259
+ name: "apiKey",
260
+ placeholder: "pk_...",
261
+ required: true,
262
+ },
263
+ ],
264
+ id: "personal-token",
265
+ name: "Personal API token",
266
+ type: "form",
267
+ },
268
+ ],
269
+ description: "Connect a ClickUp account with OAuth or a personal API token.",
270
+ id: "clickup",
271
+ name: "ClickUp",
272
+ preferredConnectionMethodId: "oauth",
273
+ })
274
+
250
275
  export const chatgptService = defineIntegrationService({
251
276
  connectionMethods: [
252
277
  {
@@ -853,6 +878,7 @@ export const integrationCatalog = defineIntegrationCatalog([
853
878
  metaAdsService,
854
879
  closeService,
855
880
  closeBotService,
881
+ clickUpService,
856
882
  codexService,
857
883
  cohereService,
858
884
  convexService,
package/src/index.ts CHANGED
@@ -14,6 +14,7 @@ export {
14
14
  metaAdsService,
15
15
  closeService,
16
16
  closeBotService,
17
+ clickUpService,
17
18
  codexService,
18
19
  cohereService,
19
20
  convexService,
@@ -0,0 +1,82 @@
1
+ import type {
2
+ IntegrationAccountRequirement,
3
+ TriggerDefinition,
4
+ TriggerPresentationContext,
5
+ } from "../types"
6
+
7
+ const CLICKUP_ACCOUNT = {
8
+ connectionOptions: [
9
+ { connectionMethodId: "oauth", requiredScopes: [] },
10
+ { connectionMethodId: "personal-token", requiredScopes: [] },
11
+ ],
12
+ serviceId: "clickup",
13
+ } as const satisfies IntegrationAccountRequirement
14
+
15
+ export const clickUpTriggerDefinitions = {
16
+ clickUpFolderCreated: definition("clickup.folder.created"),
17
+ clickUpFolderDeleted: definition("clickup.folder.deleted"),
18
+ clickUpFolderUpdated: definition("clickup.folder.updated"),
19
+ clickUpGoalCreated: definition("clickup.goal.created"),
20
+ clickUpGoalDeleted: definition("clickup.goal.deleted"),
21
+ clickUpGoalUpdated: definition("clickup.goal.updated"),
22
+ clickUpListCreated: definition("clickup.list.created"),
23
+ clickUpListDeleted: definition("clickup.list.deleted"),
24
+ clickUpListUpdated: definition("clickup.list.updated"),
25
+ clickUpSpaceCreated: definition("clickup.space.created"),
26
+ clickUpSpaceDeleted: definition("clickup.space.deleted"),
27
+ clickUpSpaceUpdated: definition("clickup.space.updated"),
28
+ clickUpTargetCreated: definition("clickup.target.created"),
29
+ clickUpTargetDeleted: definition("clickup.target.deleted"),
30
+ clickUpTargetUpdated: definition("clickup.target.updated"),
31
+ clickUpTaskAssigneeUpdated: definition("clickup.task.assignee.updated"),
32
+ clickUpTaskCommentPosted: definition("clickup.task.comment.posted"),
33
+ clickUpTaskCommentUpdated: definition("clickup.task.comment.updated"),
34
+ clickUpTaskCreated: definition("clickup.task.created"),
35
+ clickUpTaskDeleted: definition("clickup.task.deleted"),
36
+ clickUpTaskDueDateUpdated: definition("clickup.task.due-date.updated"),
37
+ clickUpTaskMoved: definition("clickup.task.moved"),
38
+ clickUpTaskPriorityUpdated: definition("clickup.task.priority.updated"),
39
+ clickUpTaskStatusUpdated: definition("clickup.task.status.updated"),
40
+ clickUpTaskTagUpdated: definition("clickup.task.tag.updated"),
41
+ clickUpTaskTimeEstimateUpdated: definition(
42
+ "clickup.task.time-estimate.updated",
43
+ ),
44
+ clickUpTaskTimeTrackedUpdated: definition(
45
+ "clickup.task.time-tracked.updated",
46
+ ),
47
+ clickUpTaskUpdated: definition("clickup.task.updated"),
48
+ clickUpWorkspaceEvent: definition("clickup.workspace.event"),
49
+ } as const satisfies Record<string, TriggerDefinition>
50
+
51
+ /**
52
+ * Builds one full-permission ClickUp trigger definition.
53
+ *
54
+ * @param type - Internal event type.
55
+ */
56
+ function definition<TType extends string>(type: TType) {
57
+ return {
58
+ account: CLICKUP_ACCOUNT,
59
+ getPrimary: clickUpWorkspacePrimary,
60
+ type,
61
+ } as const
62
+ }
63
+
64
+ /**
65
+ * Reads a trigger's configured ClickUp Workspace for presentation.
66
+ *
67
+ * @param context - Resolved trigger presentation context.
68
+ * @throws When canonical trigger configuration is missing its Workspace ID.
69
+ */
70
+ function clickUpWorkspacePrimary(context: TriggerPresentationContext) {
71
+ if (
72
+ typeof context.config !== "object" ||
73
+ context.config === null ||
74
+ !("workspaceId" in context.config) ||
75
+ typeof context.config.workspaceId !== "string"
76
+ ) {
77
+ throw new TypeError(
78
+ "ClickUp trigger configuration requires a Workspace ID.",
79
+ )
80
+ }
81
+ return { copyable: true, value: context.config.workspaceId }
82
+ }
@@ -0,0 +1,131 @@
1
+ import type {
2
+ IntegrationAccountRequirement,
3
+ TriggerDefinition,
4
+ TriggerPresentationContext,
5
+ } from "../types"
6
+
7
+ const GOOGLE_ADS_ACCOUNT = {
8
+ connectionOptions: [
9
+ {
10
+ connectionMethodId: "oauth",
11
+ requiredScopes: ["https://www.googleapis.com/auth/adwords"],
12
+ },
13
+ ],
14
+ serviceId: "google",
15
+ } as const satisfies IntegrationAccountRequirement<"google">
16
+
17
+ const changeTrigger = <const TType extends string>(type: TType, name: string) =>
18
+ ({
19
+ account: GOOGLE_ADS_ACCOUNT,
20
+ getPrimary: customerPrimary,
21
+ name,
22
+ type,
23
+ }) as const satisfies TriggerDefinition
24
+
25
+ export const googleAdsTriggerDefinitions = {
26
+ googleAdsAdGroupCreated: changeTrigger(
27
+ "googleAds.adGroup.created",
28
+ "Google Ads ad group created",
29
+ ),
30
+ googleAdsAdGroupRemoved: changeTrigger(
31
+ "googleAds.adGroup.removed",
32
+ "Google Ads ad group removed",
33
+ ),
34
+ googleAdsAdGroupUpdated: changeTrigger(
35
+ "googleAds.adGroup.updated",
36
+ "Google Ads ad group updated",
37
+ ),
38
+ googleAdsAdGroupAdCreated: changeTrigger(
39
+ "googleAds.adGroupAd.created",
40
+ "Google Ads ad created",
41
+ ),
42
+ googleAdsAdGroupAdRemoved: changeTrigger(
43
+ "googleAds.adGroupAd.removed",
44
+ "Google Ads ad removed",
45
+ ),
46
+ googleAdsAdGroupAdUpdated: changeTrigger(
47
+ "googleAds.adGroupAd.updated",
48
+ "Google Ads ad updated",
49
+ ),
50
+ googleAdsAdGroupAssetCreated: changeTrigger(
51
+ "googleAds.adGroupAsset.created",
52
+ "Google Ads ad-group asset linked",
53
+ ),
54
+ googleAdsAdGroupAssetRemoved: changeTrigger(
55
+ "googleAds.adGroupAsset.removed",
56
+ "Google Ads ad-group asset unlinked",
57
+ ),
58
+ googleAdsAdGroupAssetUpdated: changeTrigger(
59
+ "googleAds.adGroupAsset.updated",
60
+ "Google Ads ad-group asset updated",
61
+ ),
62
+ googleAdsAssetCreated: changeTrigger(
63
+ "googleAds.asset.created",
64
+ "Google Ads asset created",
65
+ ),
66
+ googleAdsAssetRemoved: changeTrigger(
67
+ "googleAds.asset.removed",
68
+ "Google Ads asset removed",
69
+ ),
70
+ googleAdsAssetUpdated: changeTrigger(
71
+ "googleAds.asset.updated",
72
+ "Google Ads asset updated",
73
+ ),
74
+ googleAdsCampaignCreated: changeTrigger(
75
+ "googleAds.campaign.created",
76
+ "Google Ads campaign created",
77
+ ),
78
+ googleAdsCampaignRemoved: changeTrigger(
79
+ "googleAds.campaign.removed",
80
+ "Google Ads campaign removed",
81
+ ),
82
+ googleAdsCampaignUpdated: changeTrigger(
83
+ "googleAds.campaign.updated",
84
+ "Google Ads campaign updated",
85
+ ),
86
+ googleAdsCampaignAssetCreated: changeTrigger(
87
+ "googleAds.campaignAsset.created",
88
+ "Google Ads campaign asset linked",
89
+ ),
90
+ googleAdsCampaignAssetRemoved: changeTrigger(
91
+ "googleAds.campaignAsset.removed",
92
+ "Google Ads campaign asset unlinked",
93
+ ),
94
+ googleAdsCampaignAssetUpdated: changeTrigger(
95
+ "googleAds.campaignAsset.updated",
96
+ "Google Ads campaign asset updated",
97
+ ),
98
+ googleAdsCampaignBudgetCreated: changeTrigger(
99
+ "googleAds.campaignBudget.created",
100
+ "Google Ads campaign budget created",
101
+ ),
102
+ googleAdsCampaignBudgetRemoved: changeTrigger(
103
+ "googleAds.campaignBudget.removed",
104
+ "Google Ads campaign budget removed",
105
+ ),
106
+ googleAdsCampaignBudgetUpdated: changeTrigger(
107
+ "googleAds.campaignBudget.updated",
108
+ "Google Ads campaign budget updated",
109
+ ),
110
+ googleAdsChange: changeTrigger("googleAds.change", "Google Ads change"),
111
+ } as const satisfies Record<string, TriggerDefinition>
112
+
113
+ /**
114
+ * Presents the configured customer ID for one Google Ads trigger.
115
+ *
116
+ * @param context - Resolved trigger presentation context.
117
+ * @throws {TypeError} When the trigger configuration has no customer ID.
118
+ */
119
+ function customerPrimary(context: TriggerPresentationContext) {
120
+ if (
121
+ typeof context.config !== "object" ||
122
+ context.config === null ||
123
+ !("customerId" in context.config) ||
124
+ typeof context.config.customerId !== "string"
125
+ ) {
126
+ throw new TypeError(
127
+ "Google Ads trigger configuration requires a customer ID.",
128
+ )
129
+ }
130
+ return { value: context.config.customerId }
131
+ }
@@ -9,9 +9,11 @@ import { convexTriggerDefinitions } from "./convex"
9
9
  import { discordTriggerDefinitions } from "./discord"
10
10
  import { closeTriggerDefinitions } from "./close"
11
11
  import { cloudflareTriggerDefinitions } from "./cloudflare"
12
+ import { clickUpTriggerDefinitions } from "./clickup"
12
13
  import { coreTriggerDefinitions } from "./core"
13
14
  import { githubTriggerDefinitions } from "./github"
14
15
  import { googleTriggerDefinitions } from "./google"
16
+ import { googleAdsTriggerDefinitions } from "./google-ads"
15
17
  import { hubspotTriggerDefinitions } from "./hubspot"
16
18
  import { linearTriggerDefinitions } from "./linear"
17
19
  import { millionVerifierTriggerDefinitions } from "./millionverifier"
@@ -66,9 +68,11 @@ export const triggerDefinitions = {
66
68
  ...discordTriggerDefinitions,
67
69
  ...closeTriggerDefinitions,
68
70
  ...cloudflareTriggerDefinitions,
71
+ ...clickUpTriggerDefinitions,
69
72
  ...coreTriggerDefinitions,
70
73
  ...githubTriggerDefinitions,
71
74
  ...googleTriggerDefinitions,
75
+ ...googleAdsTriggerDefinitions,
72
76
  ...hubspotTriggerDefinitions,
73
77
  ...linearTriggerDefinitions,
74
78
  ...millionVerifierTriggerDefinitions,