@automate.ax/catalog 0.82.0 → 0.83.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.
package/dist/catalog.d.ts CHANGED
@@ -175,6 +175,42 @@ export declare const cohereService: {
175
175
  }];
176
176
  readonly description: string;
177
177
  };
178
+ export declare const convexService: {
179
+ readonly connectionMethods: readonly [{
180
+ readonly id: "oauth";
181
+ readonly name: "Project OAuth";
182
+ readonly type: "redirect";
183
+ }, {
184
+ readonly fields: readonly [{
185
+ readonly description: "Use the deployment's https://<name>.convex.cloud URL.";
186
+ readonly input: "url";
187
+ readonly label: "Deployment URL";
188
+ readonly name: "deploymentUrl";
189
+ readonly placeholder: "https://example.convex.cloud";
190
+ readonly required: true;
191
+ }, {
192
+ readonly input: "password";
193
+ readonly label: "Deploy key";
194
+ readonly name: "deployKey";
195
+ readonly placeholder: "Paste a Convex deploy key";
196
+ readonly required: true;
197
+ }, {
198
+ readonly description: "Set the same value as AUTOMATE_AX_WEBHOOK_SECRET in Convex to emit signed semantic events.";
199
+ readonly input: "password";
200
+ readonly label: "Webhook signing secret";
201
+ readonly name: "webhookSecret";
202
+ readonly placeholder: "At least 32 characters";
203
+ readonly required: true;
204
+ }];
205
+ readonly id: "deployment-key";
206
+ readonly name: "Deployment key";
207
+ readonly type: "form";
208
+ }];
209
+ readonly description: "Connect a Convex project for function calls and durable event triggers.";
210
+ readonly id: "convex";
211
+ readonly name: "Convex";
212
+ readonly preferredConnectionMethodId: "oauth";
213
+ };
178
214
  export declare const deepinfraService: {
179
215
  readonly id: "deepinfra";
180
216
  readonly name: string;
@@ -793,6 +829,41 @@ export declare const integrationCatalog: readonly [{
793
829
  readonly credentialUrl?: string | undefined;
794
830
  }];
795
831
  readonly description: string;
832
+ }, {
833
+ readonly connectionMethods: readonly [{
834
+ readonly id: "oauth";
835
+ readonly name: "Project OAuth";
836
+ readonly type: "redirect";
837
+ }, {
838
+ readonly fields: readonly [{
839
+ readonly description: "Use the deployment's https://<name>.convex.cloud URL.";
840
+ readonly input: "url";
841
+ readonly label: "Deployment URL";
842
+ readonly name: "deploymentUrl";
843
+ readonly placeholder: "https://example.convex.cloud";
844
+ readonly required: true;
845
+ }, {
846
+ readonly input: "password";
847
+ readonly label: "Deploy key";
848
+ readonly name: "deployKey";
849
+ readonly placeholder: "Paste a Convex deploy key";
850
+ readonly required: true;
851
+ }, {
852
+ readonly description: "Set the same value as AUTOMATE_AX_WEBHOOK_SECRET in Convex to emit signed semantic events.";
853
+ readonly input: "password";
854
+ readonly label: "Webhook signing secret";
855
+ readonly name: "webhookSecret";
856
+ readonly placeholder: "At least 32 characters";
857
+ readonly required: true;
858
+ }];
859
+ readonly id: "deployment-key";
860
+ readonly name: "Deployment key";
861
+ readonly type: "form";
862
+ }];
863
+ readonly description: "Connect a Convex project for function calls and durable event triggers.";
864
+ readonly id: "convex";
865
+ readonly name: "Convex";
866
+ readonly preferredConnectionMethodId: "oauth";
796
867
  }, {
797
868
  readonly id: "deepinfra";
798
869
  readonly name: string;
package/dist/catalog.js CHANGED
@@ -121,6 +121,45 @@ export const cohereService = defineApiKeyService({
121
121
  id: "cohere",
122
122
  name: "Cohere",
123
123
  });
124
+ export const convexService = defineIntegrationService({
125
+ connectionMethods: [
126
+ { id: "oauth", name: "Project OAuth", type: "redirect" },
127
+ {
128
+ fields: [
129
+ {
130
+ description: "Use the deployment's https://<name>.convex.cloud URL.",
131
+ input: "url",
132
+ label: "Deployment URL",
133
+ name: "deploymentUrl",
134
+ placeholder: "https://example.convex.cloud",
135
+ required: true,
136
+ },
137
+ {
138
+ input: "password",
139
+ label: "Deploy key",
140
+ name: "deployKey",
141
+ placeholder: "Paste a Convex deploy key",
142
+ required: true,
143
+ },
144
+ {
145
+ description: "Set the same value as AUTOMATE_AX_WEBHOOK_SECRET in Convex to emit signed semantic events.",
146
+ input: "password",
147
+ label: "Webhook signing secret",
148
+ name: "webhookSecret",
149
+ placeholder: "At least 32 characters",
150
+ required: true,
151
+ },
152
+ ],
153
+ id: "deployment-key",
154
+ name: "Deployment key",
155
+ type: "form",
156
+ },
157
+ ],
158
+ description: "Connect a Convex project for function calls and durable event triggers.",
159
+ id: "convex",
160
+ name: "Convex",
161
+ preferredConnectionMethodId: "oauth",
162
+ });
124
163
  export const deepinfraService = defineApiKeyService({
125
164
  description: "Connect a DeepInfra API key.",
126
165
  id: "deepinfra",
@@ -355,6 +394,7 @@ export const integrationCatalog = defineIntegrationCatalog([
355
394
  cloudflareService,
356
395
  codexService,
357
396
  cohereService,
397
+ convexService,
358
398
  deepinfraService,
359
399
  deepseekService,
360
400
  firecrawlService,
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, codexService, cohereService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, whatsappService, xaiService, type IntegrationServiceId, } from "./catalog.js";
1
+ export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, whatsappService, xaiService, type IntegrationServiceId, } from "./catalog.js";
2
2
  export { defineIntegrationCatalog, defineIntegrationService, integrationScope, type IntegrationAccountConnectionOption, type IntegrationAccountRequirement, type IntegrationConnectionDefinition, type IntegrationConnectionNotice, type IntegrationFormField, type IntegrationScopeRequirement, type IntegrationServiceDefinition, type ScopeRequirementGroup, type TriggerDefinition, type TriggerPresentation, type TriggerPresentationContext, type TriggerPresentationDetail, type TriggerScopePresentation, type TriggerPresentationValue, } from "./types.js";
3
3
  export { getDashboardRunEndpoint, getDashboardRunEndpointKey, getHttpTriggerEndpoint, getHttpTriggerEndpointKey, getMailhookAddress, getMailhookAddressKey, DASHBOARD_RUN_CONFIG_SCHEMA, getTriggerDefinition, getTriggerName, getTriggerPresentation, isTriggerVisible, PLATFORM_EMAIL_DOMAIN, triggerCatalog, triggerDefinitions, type DashboardRunConfig, type DashboardRunEndpointOptions, type DashboardRunField, type HttpTriggerEndpointOptions, type HttpTriggerScope, type MailhookAddressOptions, type MailhookScope, type TriggerType, } from "./triggers/index.js";
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, codexService, cohereService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, whatsappService, xaiService, } from "./catalog.js";
1
+ export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, whatsappService, xaiService, } from "./catalog.js";
2
2
  export { defineIntegrationCatalog, defineIntegrationService, integrationScope, } from "./types.js";
3
3
  export { getDashboardRunEndpoint, getDashboardRunEndpointKey, getHttpTriggerEndpoint, getHttpTriggerEndpointKey, getMailhookAddress, getMailhookAddressKey, DASHBOARD_RUN_CONFIG_SCHEMA, getTriggerDefinition, getTriggerName, getTriggerPresentation, isTriggerVisible, PLATFORM_EMAIL_DOMAIN, triggerCatalog, triggerDefinitions, } from "./triggers/index.js";
@@ -0,0 +1,87 @@
1
+ export interface ConvexEventEndpointOptions {
2
+ appOrigin: string;
3
+ automationId: string;
4
+ hookSlot: number;
5
+ scopePath?: readonly number[];
6
+ }
7
+ /**
8
+ * Returns the public endpoint for one signed Convex semantic-event trigger.
9
+ *
10
+ * @param options - Public origin and trigger identity.
11
+ */
12
+ export declare function getConvexEventEndpoint(options: ConvexEventEndpointOptions): string;
13
+ /**
14
+ * Returns the stable source key for one Convex semantic-event trigger.
15
+ *
16
+ * @param options - Trigger identity without the public origin.
17
+ */
18
+ export declare function getConvexEventEndpointKey(options: Omit<ConvexEventEndpointOptions, "appOrigin">): string;
19
+ export declare const convexTriggerDefinitions: {
20
+ readonly convexDocumentCreated: {
21
+ readonly account: {
22
+ readonly connectionOptions: readonly [{
23
+ readonly connectionMethodId: "oauth";
24
+ readonly requiredScopes: readonly [];
25
+ }, {
26
+ readonly connectionMethodId: "deployment-key";
27
+ readonly requiredScopes: readonly [];
28
+ }];
29
+ readonly serviceId: "convex";
30
+ };
31
+ readonly type: "convex.document.created";
32
+ };
33
+ readonly convexDocumentDeleted: {
34
+ readonly account: {
35
+ readonly connectionOptions: readonly [{
36
+ readonly connectionMethodId: "oauth";
37
+ readonly requiredScopes: readonly [];
38
+ }, {
39
+ readonly connectionMethodId: "deployment-key";
40
+ readonly requiredScopes: readonly [];
41
+ }];
42
+ readonly serviceId: "convex";
43
+ };
44
+ readonly type: "convex.document.deleted";
45
+ };
46
+ readonly convexDocumentEvent: {
47
+ readonly account: {
48
+ readonly connectionOptions: readonly [{
49
+ readonly connectionMethodId: "oauth";
50
+ readonly requiredScopes: readonly [];
51
+ }, {
52
+ readonly connectionMethodId: "deployment-key";
53
+ readonly requiredScopes: readonly [];
54
+ }];
55
+ readonly serviceId: "convex";
56
+ };
57
+ readonly type: "convex.document.event";
58
+ };
59
+ readonly convexDocumentUpdated: {
60
+ readonly account: {
61
+ readonly connectionOptions: readonly [{
62
+ readonly connectionMethodId: "oauth";
63
+ readonly requiredScopes: readonly [];
64
+ }, {
65
+ readonly connectionMethodId: "deployment-key";
66
+ readonly requiredScopes: readonly [];
67
+ }];
68
+ readonly serviceId: "convex";
69
+ };
70
+ readonly type: "convex.document.updated";
71
+ };
72
+ readonly convexEvent: {
73
+ readonly account: {
74
+ readonly connectionOptions: readonly [{
75
+ readonly connectionMethodId: "deployment-key";
76
+ readonly requiredScopes: readonly [];
77
+ }];
78
+ readonly serviceId: "convex";
79
+ };
80
+ readonly getPrimary: ({ appOrigin, automationId, hookSlot, scopePath }: import("..").TriggerPresentationContext) => {
81
+ copyable: true;
82
+ value: string;
83
+ };
84
+ readonly name: "Convex event";
85
+ readonly type: "convex.event.received";
86
+ };
87
+ };
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Returns the public endpoint for one signed Convex semantic-event trigger.
3
+ *
4
+ * @param options - Public origin and trigger identity.
5
+ */
6
+ export function getConvexEventEndpoint(options) {
7
+ return new URL(`/api/v1/events/convex/${encodeURIComponent(getConvexEventEndpointKey(options))}`, options.appOrigin).toString();
8
+ }
9
+ /**
10
+ * Returns the stable source key for one Convex semantic-event trigger.
11
+ *
12
+ * @param options - Trigger identity without the public origin.
13
+ */
14
+ export function getConvexEventEndpointKey(options) {
15
+ return `${options.automationId}:${[
16
+ ...(options.scopePath ?? []),
17
+ options.hookSlot,
18
+ ].join(".")}`;
19
+ }
20
+ const CONVEX_ACCOUNT = {
21
+ connectionOptions: [
22
+ { connectionMethodId: "oauth", requiredScopes: [] },
23
+ { connectionMethodId: "deployment-key", requiredScopes: [] },
24
+ ],
25
+ serviceId: "convex",
26
+ };
27
+ const CONVEX_DEPLOYMENT_KEY_ACCOUNT = {
28
+ connectionOptions: [
29
+ { connectionMethodId: "deployment-key", requiredScopes: [] },
30
+ ],
31
+ serviceId: "convex",
32
+ };
33
+ export const convexTriggerDefinitions = {
34
+ convexDocumentCreated: {
35
+ account: CONVEX_ACCOUNT,
36
+ type: "convex.document.created",
37
+ },
38
+ convexDocumentDeleted: {
39
+ account: CONVEX_ACCOUNT,
40
+ type: "convex.document.deleted",
41
+ },
42
+ convexDocumentEvent: {
43
+ account: CONVEX_ACCOUNT,
44
+ type: "convex.document.event",
45
+ },
46
+ convexDocumentUpdated: {
47
+ account: CONVEX_ACCOUNT,
48
+ type: "convex.document.updated",
49
+ },
50
+ convexEvent: {
51
+ account: CONVEX_DEPLOYMENT_KEY_ACCOUNT,
52
+ getPrimary: ({ appOrigin, automationId, hookSlot, scopePath }) => ({
53
+ copyable: true,
54
+ value: getConvexEventEndpoint({
55
+ appOrigin,
56
+ automationId,
57
+ hookSlot,
58
+ scopePath,
59
+ }),
60
+ }),
61
+ name: "Convex event",
62
+ type: "convex.event.received",
63
+ },
64
+ };
@@ -1236,6 +1236,73 @@ export declare const triggerDefinitions: {
1236
1236
  readonly name: "Mailhook";
1237
1237
  readonly type: "mailhook.email.received";
1238
1238
  };
1239
+ readonly convexDocumentCreated: {
1240
+ readonly account: {
1241
+ readonly connectionOptions: readonly [{
1242
+ readonly connectionMethodId: "oauth";
1243
+ readonly requiredScopes: readonly [];
1244
+ }, {
1245
+ readonly connectionMethodId: "deployment-key";
1246
+ readonly requiredScopes: readonly [];
1247
+ }];
1248
+ readonly serviceId: "convex";
1249
+ };
1250
+ readonly type: "convex.document.created";
1251
+ };
1252
+ readonly convexDocumentDeleted: {
1253
+ readonly account: {
1254
+ readonly connectionOptions: readonly [{
1255
+ readonly connectionMethodId: "oauth";
1256
+ readonly requiredScopes: readonly [];
1257
+ }, {
1258
+ readonly connectionMethodId: "deployment-key";
1259
+ readonly requiredScopes: readonly [];
1260
+ }];
1261
+ readonly serviceId: "convex";
1262
+ };
1263
+ readonly type: "convex.document.deleted";
1264
+ };
1265
+ readonly convexDocumentEvent: {
1266
+ readonly account: {
1267
+ readonly connectionOptions: readonly [{
1268
+ readonly connectionMethodId: "oauth";
1269
+ readonly requiredScopes: readonly [];
1270
+ }, {
1271
+ readonly connectionMethodId: "deployment-key";
1272
+ readonly requiredScopes: readonly [];
1273
+ }];
1274
+ readonly serviceId: "convex";
1275
+ };
1276
+ readonly type: "convex.document.event";
1277
+ };
1278
+ readonly convexDocumentUpdated: {
1279
+ readonly account: {
1280
+ readonly connectionOptions: readonly [{
1281
+ readonly connectionMethodId: "oauth";
1282
+ readonly requiredScopes: readonly [];
1283
+ }, {
1284
+ readonly connectionMethodId: "deployment-key";
1285
+ readonly requiredScopes: readonly [];
1286
+ }];
1287
+ readonly serviceId: "convex";
1288
+ };
1289
+ readonly type: "convex.document.updated";
1290
+ };
1291
+ readonly convexEvent: {
1292
+ readonly account: {
1293
+ readonly connectionOptions: readonly [{
1294
+ readonly connectionMethodId: "deployment-key";
1295
+ readonly requiredScopes: readonly [];
1296
+ }];
1297
+ readonly serviceId: "convex";
1298
+ };
1299
+ readonly getPrimary: ({ appOrigin, automationId, hookSlot, scopePath }: TriggerPresentationContext) => {
1300
+ copyable: true;
1301
+ value: string;
1302
+ };
1303
+ readonly name: "Convex event";
1304
+ readonly type: "convex.event.received";
1305
+ };
1239
1306
  readonly brevoTransactionalBlocked: {
1240
1307
  readonly account: {
1241
1308
  readonly connectionOptions: readonly [{
@@ -1692,6 +1759,72 @@ export declare const triggerCatalog: ({
1692
1759
  readonly serviceId: "brevo";
1693
1760
  };
1694
1761
  type: "brevo.transactional.unsubscribed";
1762
+ } | {
1763
+ name: string;
1764
+ account: {
1765
+ readonly connectionOptions: readonly [{
1766
+ readonly connectionMethodId: "oauth";
1767
+ readonly requiredScopes: readonly [];
1768
+ }, {
1769
+ readonly connectionMethodId: "deployment-key";
1770
+ readonly requiredScopes: readonly [];
1771
+ }];
1772
+ readonly serviceId: "convex";
1773
+ };
1774
+ type: "convex.document.created";
1775
+ } | {
1776
+ name: string;
1777
+ account: {
1778
+ readonly connectionOptions: readonly [{
1779
+ readonly connectionMethodId: "oauth";
1780
+ readonly requiredScopes: readonly [];
1781
+ }, {
1782
+ readonly connectionMethodId: "deployment-key";
1783
+ readonly requiredScopes: readonly [];
1784
+ }];
1785
+ readonly serviceId: "convex";
1786
+ };
1787
+ type: "convex.document.deleted";
1788
+ } | {
1789
+ name: string;
1790
+ account: {
1791
+ readonly connectionOptions: readonly [{
1792
+ readonly connectionMethodId: "oauth";
1793
+ readonly requiredScopes: readonly [];
1794
+ }, {
1795
+ readonly connectionMethodId: "deployment-key";
1796
+ readonly requiredScopes: readonly [];
1797
+ }];
1798
+ readonly serviceId: "convex";
1799
+ };
1800
+ type: "convex.document.event";
1801
+ } | {
1802
+ name: string;
1803
+ account: {
1804
+ readonly connectionOptions: readonly [{
1805
+ readonly connectionMethodId: "oauth";
1806
+ readonly requiredScopes: readonly [];
1807
+ }, {
1808
+ readonly connectionMethodId: "deployment-key";
1809
+ readonly requiredScopes: readonly [];
1810
+ }];
1811
+ readonly serviceId: "convex";
1812
+ };
1813
+ type: "convex.document.updated";
1814
+ } | {
1815
+ name: string;
1816
+ account: {
1817
+ readonly connectionOptions: readonly [{
1818
+ readonly connectionMethodId: "deployment-key";
1819
+ readonly requiredScopes: readonly [];
1820
+ }];
1821
+ readonly serviceId: "convex";
1822
+ };
1823
+ getPrimary: ({ appOrigin, automationId, hookSlot, scopePath }: TriggerPresentationContext) => {
1824
+ copyable: true;
1825
+ value: string;
1826
+ };
1827
+ type: "convex.event.received";
1695
1828
  } | {
1696
1829
  name: string;
1697
1830
  getDetails: ({ config }: TriggerPresentationContext) => {
@@ -1,6 +1,7 @@
1
1
  import { airtableTriggerDefinitions } from "./airtable.js";
2
2
  import { asanaTriggerDefinitions } from "./asana.js";
3
3
  import { brevoTriggerDefinitions } from "./brevo.js";
4
+ import { convexTriggerDefinitions } from "./convex.js";
4
5
  import { coreTriggerDefinitions } from "./core.js";
5
6
  import { githubTriggerDefinitions } from "./github.js";
6
7
  import { googleTriggerDefinitions } from "./google.js";
@@ -19,6 +20,7 @@ export const triggerDefinitions = {
19
20
  ...airtableTriggerDefinitions,
20
21
  ...asanaTriggerDefinitions,
21
22
  ...brevoTriggerDefinitions,
23
+ ...convexTriggerDefinitions,
22
24
  ...coreTriggerDefinitions,
23
25
  ...githubTriggerDefinitions,
24
26
  ...googleTriggerDefinitions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/catalog",
3
- "version": "0.82.0",
3
+ "version": "0.83.0",
4
4
  "description": "Shared integration service and trigger definitions for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -23,6 +23,7 @@
23
23
  "./triggers/airtable": "./src/triggers/airtable.ts",
24
24
  "./triggers/asana": "./src/triggers/asana.ts",
25
25
  "./triggers/brevo": "./src/triggers/brevo.ts",
26
+ "./triggers/convex": "./src/triggers/convex.ts",
26
27
  "./triggers/core-dashboard": "./src/triggers/core-dashboard.ts",
27
28
  "./triggers/core-http": "./src/triggers/core-http.ts",
28
29
  "./triggers/core-invocation": "./src/triggers/core-invocation.ts",
@@ -45,7 +46,7 @@
45
46
  }
46
47
  },
47
48
  "devDependencies": {
48
- "@internal/config": "0.0.0",
49
+ "@internal/config": "0.1.0",
49
50
  "@types/bun": "latest",
50
51
  "@typescript/native": "npm:typescript@^7.0.2",
51
52
  "@zachsents/oxlint-config": "^0.4.1",
@@ -101,6 +102,11 @@
101
102
  "types": "./dist/triggers/brevo.d.ts",
102
103
  "default": "./dist/triggers/brevo.js"
103
104
  },
105
+ "./triggers/convex": {
106
+ "bun": "./src/triggers/convex.ts",
107
+ "types": "./dist/triggers/convex.d.ts",
108
+ "default": "./dist/triggers/convex.js"
109
+ },
104
110
  "./triggers/core-dashboard": {
105
111
  "bun": "./src/triggers/core-dashboard.ts",
106
112
  "types": "./dist/triggers/core-dashboard.d.ts",
package/src/catalog.ts CHANGED
@@ -134,6 +134,48 @@ export const cohereService = defineApiKeyService({
134
134
  name: "Cohere",
135
135
  })
136
136
 
137
+ export const convexService = defineIntegrationService({
138
+ connectionMethods: [
139
+ { id: "oauth", name: "Project OAuth", type: "redirect" },
140
+ {
141
+ fields: [
142
+ {
143
+ description: "Use the deployment's https://<name>.convex.cloud URL.",
144
+ input: "url",
145
+ label: "Deployment URL",
146
+ name: "deploymentUrl",
147
+ placeholder: "https://example.convex.cloud",
148
+ required: true,
149
+ },
150
+ {
151
+ input: "password",
152
+ label: "Deploy key",
153
+ name: "deployKey",
154
+ placeholder: "Paste a Convex deploy key",
155
+ required: true,
156
+ },
157
+ {
158
+ description:
159
+ "Set the same value as AUTOMATE_AX_WEBHOOK_SECRET in Convex to emit signed semantic events.",
160
+ input: "password",
161
+ label: "Webhook signing secret",
162
+ name: "webhookSecret",
163
+ placeholder: "At least 32 characters",
164
+ required: true,
165
+ },
166
+ ],
167
+ id: "deployment-key",
168
+ name: "Deployment key",
169
+ type: "form",
170
+ },
171
+ ],
172
+ description:
173
+ "Connect a Convex project for function calls and durable event triggers.",
174
+ id: "convex",
175
+ name: "Convex",
176
+ preferredConnectionMethodId: "oauth",
177
+ })
178
+
137
179
  export const deepinfraService = defineApiKeyService({
138
180
  description: "Connect a DeepInfra API key.",
139
181
  id: "deepinfra",
@@ -398,6 +440,7 @@ export const integrationCatalog = defineIntegrationCatalog([
398
440
  cloudflareService,
399
441
  codexService,
400
442
  cohereService,
443
+ convexService,
401
444
  deepinfraService,
402
445
  deepseekService,
403
446
  firecrawlService,
package/src/index.ts CHANGED
@@ -9,6 +9,7 @@ export {
9
9
  cloudflareService,
10
10
  codexService,
11
11
  cohereService,
12
+ convexService,
12
13
  deepinfraService,
13
14
  deepseekService,
14
15
  firecrawlService,
@@ -0,0 +1,82 @@
1
+ import type { IntegrationAccountRequirement, TriggerDefinition } from "../types"
2
+
3
+ export interface ConvexEventEndpointOptions {
4
+ appOrigin: string
5
+ automationId: string
6
+ hookSlot: number
7
+ scopePath?: readonly number[]
8
+ }
9
+
10
+ /**
11
+ * Returns the public endpoint for one signed Convex semantic-event trigger.
12
+ *
13
+ * @param options - Public origin and trigger identity.
14
+ */
15
+ export function getConvexEventEndpoint(options: ConvexEventEndpointOptions) {
16
+ return new URL(
17
+ `/api/v1/events/convex/${encodeURIComponent(getConvexEventEndpointKey(options))}`,
18
+ options.appOrigin,
19
+ ).toString()
20
+ }
21
+
22
+ /**
23
+ * Returns the stable source key for one Convex semantic-event trigger.
24
+ *
25
+ * @param options - Trigger identity without the public origin.
26
+ */
27
+ export function getConvexEventEndpointKey(
28
+ options: Omit<ConvexEventEndpointOptions, "appOrigin">,
29
+ ) {
30
+ return `${options.automationId}:${[
31
+ ...(options.scopePath ?? []),
32
+ options.hookSlot,
33
+ ].join(".")}`
34
+ }
35
+
36
+ const CONVEX_ACCOUNT = {
37
+ connectionOptions: [
38
+ { connectionMethodId: "oauth", requiredScopes: [] },
39
+ { connectionMethodId: "deployment-key", requiredScopes: [] },
40
+ ],
41
+ serviceId: "convex",
42
+ } as const satisfies IntegrationAccountRequirement
43
+
44
+ const CONVEX_DEPLOYMENT_KEY_ACCOUNT = {
45
+ connectionOptions: [
46
+ { connectionMethodId: "deployment-key", requiredScopes: [] },
47
+ ],
48
+ serviceId: "convex",
49
+ } as const satisfies IntegrationAccountRequirement
50
+
51
+ export const convexTriggerDefinitions = {
52
+ convexDocumentCreated: {
53
+ account: CONVEX_ACCOUNT,
54
+ type: "convex.document.created",
55
+ },
56
+ convexDocumentDeleted: {
57
+ account: CONVEX_ACCOUNT,
58
+ type: "convex.document.deleted",
59
+ },
60
+ convexDocumentEvent: {
61
+ account: CONVEX_ACCOUNT,
62
+ type: "convex.document.event",
63
+ },
64
+ convexDocumentUpdated: {
65
+ account: CONVEX_ACCOUNT,
66
+ type: "convex.document.updated",
67
+ },
68
+ convexEvent: {
69
+ account: CONVEX_DEPLOYMENT_KEY_ACCOUNT,
70
+ getPrimary: ({ appOrigin, automationId, hookSlot, scopePath }) => ({
71
+ copyable: true,
72
+ value: getConvexEventEndpoint({
73
+ appOrigin,
74
+ automationId,
75
+ hookSlot,
76
+ scopePath,
77
+ }),
78
+ }),
79
+ name: "Convex event",
80
+ type: "convex.event.received",
81
+ },
82
+ } as const satisfies Record<string, TriggerDefinition>
@@ -1,6 +1,7 @@
1
1
  import { airtableTriggerDefinitions } from "./airtable"
2
2
  import { asanaTriggerDefinitions } from "./asana"
3
3
  import { brevoTriggerDefinitions } from "./brevo"
4
+ import { convexTriggerDefinitions } from "./convex"
4
5
  import { coreTriggerDefinitions } from "./core"
5
6
  import { githubTriggerDefinitions } from "./github"
6
7
  import { googleTriggerDefinitions } from "./google"
@@ -43,6 +44,7 @@ export const triggerDefinitions = {
43
44
  ...airtableTriggerDefinitions,
44
45
  ...asanaTriggerDefinitions,
45
46
  ...brevoTriggerDefinitions,
47
+ ...convexTriggerDefinitions,
46
48
  ...coreTriggerDefinitions,
47
49
  ...githubTriggerDefinitions,
48
50
  ...googleTriggerDefinitions,