@automate.ax/catalog 0.81.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;
@@ -452,11 +488,11 @@ export declare const perplexityService: {
452
488
  export declare const postgresService: {
453
489
  readonly connectionMethods: readonly [{
454
490
  readonly fields: readonly [{
455
- readonly description: "A postgresql:// connection string.";
491
+ readonly description: "For Supabase, use its provided URL and append ?uselibpqcompat=true&sslmode=require only when you intend libpq's encrypted, non-verifying require behavior.";
456
492
  readonly input: "password";
457
493
  readonly label: "Connection string";
458
494
  readonly name: "connectionString";
459
- readonly placeholder: "postgresql://user:password@host:5432/database?sslmode=require";
495
+ readonly placeholder: "postgresql://postgres.project-ref:password@aws-0-region.pooler.supabase.com:5432/postgres?uselibpqcompat=true&sslmode=require";
460
496
  readonly required: true;
461
497
  }];
462
498
  readonly id: "credentials";
@@ -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;
@@ -1054,11 +1125,11 @@ export declare const integrationCatalog: readonly [{
1054
1125
  }, {
1055
1126
  readonly connectionMethods: readonly [{
1056
1127
  readonly fields: readonly [{
1057
- readonly description: "A postgresql:// connection string.";
1128
+ readonly description: "For Supabase, use its provided URL and append ?uselibpqcompat=true&sslmode=require only when you intend libpq's encrypted, non-verifying require behavior.";
1058
1129
  readonly input: "password";
1059
1130
  readonly label: "Connection string";
1060
1131
  readonly name: "connectionString";
1061
- readonly placeholder: "postgresql://user:password@host:5432/database?sslmode=require";
1132
+ readonly placeholder: "postgresql://postgres.project-ref:password@aws-0-region.pooler.supabase.com:5432/postgres?uselibpqcompat=true&sslmode=require";
1062
1133
  readonly required: true;
1063
1134
  }];
1064
1135
  readonly id: "credentials";
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",
@@ -240,11 +279,11 @@ export const postgresService = defineIntegrationService({
240
279
  {
241
280
  fields: [
242
281
  {
243
- description: "A postgresql:// connection string.",
282
+ description: "For Supabase, use its provided URL and append ?uselibpqcompat=true&sslmode=require only when you intend libpq's encrypted, non-verifying require behavior.",
244
283
  input: "password",
245
284
  label: "Connection string",
246
285
  name: "connectionString",
247
- placeholder: "postgresql://user:password@host:5432/database?sslmode=require",
286
+ placeholder: "postgresql://postgres.project-ref:password@aws-0-region.pooler.supabase.com:5432/postgres?uselibpqcompat=true&sslmode=require",
248
287
  required: true,
249
288
  },
250
289
  ],
@@ -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.81.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",
@@ -270,12 +312,13 @@ export const postgresService = defineIntegrationService({
270
312
  {
271
313
  fields: [
272
314
  {
273
- description: "A postgresql:// connection string.",
315
+ description:
316
+ "For Supabase, use its provided URL and append ?uselibpqcompat=true&sslmode=require only when you intend libpq's encrypted, non-verifying require behavior.",
274
317
  input: "password",
275
318
  label: "Connection string",
276
319
  name: "connectionString",
277
320
  placeholder:
278
- "postgresql://user:password@host:5432/database?sslmode=require",
321
+ "postgresql://postgres.project-ref:password@aws-0-region.pooler.supabase.com:5432/postgres?uselibpqcompat=true&sslmode=require",
279
322
  required: true,
280
323
  },
281
324
  ],
@@ -397,6 +440,7 @@ export const integrationCatalog = defineIntegrationCatalog([
397
440
  cloudflareService,
398
441
  codexService,
399
442
  cohereService,
443
+ convexService,
400
444
  deepinfraService,
401
445
  deepseekService,
402
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,