@notionhq/workers 0.4.0 → 0.6.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.
Files changed (204) hide show
  1. package/dist/alpha/builder.d.ts +149 -0
  2. package/dist/alpha/builder.d.ts.map +1 -0
  3. package/dist/alpha/builder.js +260 -0
  4. package/dist/alpha/builder.test.d.ts +2 -0
  5. package/dist/alpha/builder.test.d.ts.map +1 -0
  6. package/dist/alpha/cli/build.d.ts +13 -0
  7. package/dist/alpha/cli/build.d.ts.map +1 -0
  8. package/dist/alpha/cli/build.js +36 -0
  9. package/dist/alpha/cli/build.test.d.ts +2 -0
  10. package/dist/alpha/cli/build.test.d.ts.map +1 -0
  11. package/dist/alpha/cli/codegen.d.ts +10 -0
  12. package/dist/alpha/cli/codegen.d.ts.map +1 -0
  13. package/dist/alpha/cli/codegen.js +41 -0
  14. package/dist/alpha/cli/codegen.test.d.ts +2 -0
  15. package/dist/alpha/cli/codegen.test.d.ts.map +1 -0
  16. package/dist/alpha/cli/discover.d.ts +35 -0
  17. package/dist/alpha/cli/discover.d.ts.map +1 -0
  18. package/dist/alpha/cli/discover.js +39 -0
  19. package/dist/alpha/cli/discover.test.d.ts +2 -0
  20. package/dist/alpha/cli/discover.test.d.ts.map +1 -0
  21. package/dist/alpha/cli/emit-manifest.d.ts +33 -0
  22. package/dist/alpha/cli/emit-manifest.d.ts.map +1 -0
  23. package/dist/alpha/cli/emit-manifest.js +266 -0
  24. package/dist/alpha/cli/emit-manifest.test.d.ts +2 -0
  25. package/dist/alpha/cli/emit-manifest.test.d.ts.map +1 -0
  26. package/dist/alpha/cli/index.d.ts +3 -0
  27. package/dist/alpha/cli/index.d.ts.map +1 -0
  28. package/dist/alpha/cli/index.js +36 -0
  29. package/dist/alpha/context.d.ts +8 -0
  30. package/dist/alpha/context.d.ts.map +1 -0
  31. package/dist/alpha/context.js +33 -0
  32. package/dist/alpha/database.d.ts +90 -0
  33. package/dist/alpha/database.d.ts.map +1 -0
  34. package/dist/alpha/database.js +9 -0
  35. package/dist/alpha/error.d.ts +41 -0
  36. package/dist/alpha/error.d.ts.map +1 -0
  37. package/dist/alpha/error.js +25 -0
  38. package/dist/alpha/icon-names.d.ts +6 -0
  39. package/dist/alpha/icon-names.d.ts.map +1 -0
  40. package/dist/alpha/icon-names.js +0 -0
  41. package/dist/alpha/json-schema.d.ts +117 -0
  42. package/dist/alpha/json-schema.d.ts.map +1 -0
  43. package/dist/alpha/json-schema.js +0 -0
  44. package/dist/alpha/manifest.d.ts +44 -0
  45. package/dist/alpha/manifest.d.ts.map +1 -0
  46. package/dist/alpha/manifest.js +0 -0
  47. package/dist/alpha/output.d.ts +7 -0
  48. package/dist/alpha/output.d.ts.map +1 -0
  49. package/dist/alpha/output.js +8 -0
  50. package/dist/alpha/pacer.d.ts +74 -0
  51. package/dist/alpha/pacer.d.ts.map +1 -0
  52. package/dist/alpha/pacer.js +66 -0
  53. package/dist/alpha/pacer.test.d.ts +2 -0
  54. package/dist/alpha/pacer.test.d.ts.map +1 -0
  55. package/dist/alpha/schedule.d.ts +6 -0
  56. package/dist/alpha/schedule.d.ts.map +1 -0
  57. package/dist/alpha/schedule.js +43 -0
  58. package/dist/alpha/schedule.test.d.ts +2 -0
  59. package/dist/alpha/schedule.test.d.ts.map +1 -0
  60. package/dist/alpha/schema-builder.d.ts +79 -0
  61. package/dist/alpha/schema-builder.d.ts.map +1 -0
  62. package/dist/alpha/schema-builder.js +135 -0
  63. package/dist/alpha/schema.d.ts +185 -0
  64. package/dist/alpha/schema.d.ts.map +1 -0
  65. package/dist/alpha/schema.js +115 -0
  66. package/dist/alpha/sync.d.ts +233 -0
  67. package/dist/alpha/sync.d.ts.map +1 -0
  68. package/dist/alpha/sync.js +70 -0
  69. package/dist/alpha/sync.test.d.ts +2 -0
  70. package/dist/alpha/sync.test.d.ts.map +1 -0
  71. package/dist/alpha/tool.d.ts +132 -0
  72. package/dist/alpha/tool.d.ts.map +1 -0
  73. package/dist/alpha/tool.js +156 -0
  74. package/dist/alpha/tool.test.d.ts +2 -0
  75. package/dist/alpha/tool.test.d.ts.map +1 -0
  76. package/dist/alpha/triggers.d.ts +365 -0
  77. package/dist/alpha/triggers.d.ts.map +1 -0
  78. package/dist/alpha/triggers.generated.d.ts +246 -0
  79. package/dist/alpha/triggers.generated.d.ts.map +1 -0
  80. package/dist/alpha/triggers.generated.js +239 -0
  81. package/dist/alpha/triggers.js +0 -0
  82. package/dist/alpha/types.d.ts +228 -0
  83. package/dist/alpha/types.d.ts.map +1 -0
  84. package/dist/alpha/types.js +0 -0
  85. package/dist/alpha/workflow.d.ts +70 -0
  86. package/dist/alpha/workflow.d.ts.map +1 -0
  87. package/dist/alpha/workflow.js +39 -0
  88. package/dist/alpha/workflow.test.d.ts +2 -0
  89. package/dist/alpha/workflow.test.d.ts.map +1 -0
  90. package/dist/builder.d.ts +7 -1
  91. package/dist/builder.d.ts.map +1 -1
  92. package/dist/builder.js +12 -3
  93. package/dist/capabilities/ai_connector.d.ts.map +1 -1
  94. package/dist/capabilities/automation.d.ts.map +1 -1
  95. package/dist/capabilities/context.d.ts.map +1 -1
  96. package/dist/capabilities/context.js +1 -1
  97. package/dist/capabilities/custom-block.d.ts +124 -0
  98. package/dist/capabilities/custom-block.d.ts.map +1 -0
  99. package/dist/capabilities/custom-block.js +22 -0
  100. package/dist/capabilities/oauth.d.ts.map +1 -1
  101. package/dist/capabilities/output.d.ts.map +1 -1
  102. package/dist/capabilities/output.js +2 -4
  103. package/dist/capabilities/stateful-capability.d.ts.map +1 -1
  104. package/dist/capabilities/stateful-capability.js +3 -7
  105. package/dist/capabilities/sync.d.ts +11 -1
  106. package/dist/capabilities/sync.d.ts.map +1 -1
  107. package/dist/capabilities/sync.js +2 -8
  108. package/dist/capabilities/tool.d.ts.map +1 -1
  109. package/dist/capabilities/tool.js +6 -20
  110. package/dist/capabilities/webhook.d.ts.map +1 -1
  111. package/dist/capabilities/workflow.d.ts +50 -0
  112. package/dist/capabilities/workflow.d.ts.map +1 -0
  113. package/dist/capabilities/workflow.js +40 -0
  114. package/dist/capabilities/workflow.test.d.ts +2 -0
  115. package/dist/capabilities/workflow.test.d.ts.map +1 -0
  116. package/dist/index.d.ts +5 -3
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +2 -1
  119. package/dist/json-schema.d.ts.map +1 -1
  120. package/dist/schema-builder.d.ts.map +1 -1
  121. package/dist/schema.d.ts.map +1 -1
  122. package/dist/triggers.d.ts +365 -0
  123. package/dist/triggers.d.ts.map +1 -0
  124. package/dist/triggers.generated.d.ts +246 -0
  125. package/dist/triggers.generated.d.ts.map +1 -0
  126. package/dist/triggers.generated.js +239 -0
  127. package/dist/triggers.js +0 -0
  128. package/dist/types.d.ts +18 -0
  129. package/dist/types.d.ts.map +1 -1
  130. package/dist/worker.d.ts +72 -2
  131. package/dist/worker.d.ts.map +1 -1
  132. package/dist/worker.js +85 -4
  133. package/package.json +81 -14
  134. package/src/alpha/ajv-formats.d.ts +7 -0
  135. package/src/alpha/builder.test.ts +197 -0
  136. package/src/alpha/builder.ts +338 -0
  137. package/src/alpha/cli/build.test.ts +240 -0
  138. package/src/alpha/cli/build.ts +57 -0
  139. package/src/alpha/cli/codegen.test.ts +31 -0
  140. package/src/alpha/cli/codegen.ts +51 -0
  141. package/src/alpha/cli/discover.test.ts +43 -0
  142. package/src/alpha/cli/discover.ts +81 -0
  143. package/src/alpha/cli/emit-manifest.test.ts +45 -0
  144. package/src/alpha/cli/emit-manifest.ts +409 -0
  145. package/src/alpha/cli/index.ts +41 -0
  146. package/src/alpha/context.ts +61 -0
  147. package/src/alpha/database.ts +102 -0
  148. package/src/alpha/error.ts +49 -0
  149. package/src/alpha/icon-names.ts +890 -0
  150. package/src/alpha/json-schema.ts +180 -0
  151. package/src/alpha/manifest.ts +47 -0
  152. package/src/alpha/output.ts +8 -0
  153. package/src/alpha/pacer.test.ts +81 -0
  154. package/src/alpha/pacer.ts +181 -0
  155. package/src/alpha/schedule.test.ts +31 -0
  156. package/src/alpha/schedule.ts +53 -0
  157. package/src/alpha/schema-builder.ts +193 -0
  158. package/src/alpha/schema.ts +222 -0
  159. package/src/alpha/sync.test.ts +191 -0
  160. package/src/alpha/sync.ts +340 -0
  161. package/src/alpha/tool.test.ts +116 -0
  162. package/src/alpha/tool.ts +319 -0
  163. package/src/alpha/triggers.generated.ts +489 -0
  164. package/src/alpha/triggers.ts +500 -0
  165. package/src/alpha/types.ts +284 -0
  166. package/src/alpha/workflow.test.ts +84 -0
  167. package/src/alpha/workflow.ts +131 -0
  168. package/src/builder.test.ts +28 -60
  169. package/src/builder.ts +20 -7
  170. package/src/capabilities/ai_connector.test.ts +9 -32
  171. package/src/capabilities/ai_connector.ts +5 -17
  172. package/src/capabilities/automation.test.ts +3 -12
  173. package/src/capabilities/automation.ts +3 -11
  174. package/src/capabilities/context.ts +5 -8
  175. package/src/capabilities/custom-block.ts +181 -0
  176. package/src/capabilities/oauth.test.ts +1 -0
  177. package/src/capabilities/oauth.ts +1 -3
  178. package/src/capabilities/output.ts +1 -3
  179. package/src/capabilities/stateful-capability.test.ts +1 -0
  180. package/src/capabilities/stateful-capability.ts +3 -7
  181. package/src/capabilities/sync.test.ts +76 -42
  182. package/src/capabilities/sync.ts +16 -40
  183. package/src/capabilities/tool.test.ts +106 -146
  184. package/src/capabilities/tool.ts +17 -39
  185. package/src/capabilities/webhook.ts +3 -10
  186. package/src/capabilities/workflow.test.ts +163 -0
  187. package/src/capabilities/workflow.ts +112 -0
  188. package/src/index.ts +18 -6
  189. package/src/json-schema.test.ts +2 -4
  190. package/src/json-schema.ts +7 -6
  191. package/src/pacer.test.ts +1 -3
  192. package/src/pacer_internal.ts +1 -5
  193. package/src/schema-builder.test.ts +10 -35
  194. package/src/schema-builder.ts +6 -16
  195. package/src/schema.ts +2 -10
  196. package/src/triggers.generated.ts +489 -0
  197. package/src/triggers.ts +504 -0
  198. package/src/types.ts +21 -7
  199. package/src/worker.test.ts +147 -0
  200. package/src/worker.ts +155 -32
  201. package/dist/block.d.ts +0 -321
  202. package/dist/block.d.ts.map +0 -1
  203. package/src/block.ts +0 -529
  204. /package/dist/{block.js → alpha/ajv-formats.d.js} +0 -0
@@ -47,12 +47,8 @@ function makeBuilder<T>(schema: AnyJSONSchema): SchemaBuilder<T> {
47
47
  return makeBuilder<T>({ ...schema, description: text });
48
48
  },
49
49
  nullable() {
50
- const { description: desc, ...rest } = schema as unknown as Record<
51
- string,
52
- unknown
53
- >;
54
- const inner =
55
- desc !== undefined ? (rest as unknown as AnyJSONSchema) : schema;
50
+ const { description: desc, ...rest } = schema as unknown as Record<string, unknown>;
51
+ const inner = desc !== undefined ? (rest as unknown as AnyJSONSchema) : schema;
56
52
  const wrapper: Record<string, unknown> = {
57
53
  anyOf: [inner, { type: "null" }],
58
54
  };
@@ -82,18 +78,13 @@ export function boolean(): SchemaBuilder<boolean> {
82
78
 
83
79
  // ---- Enum ----
84
80
 
85
- function enumBuilder<T extends string>(
86
- ...values: readonly T[]
87
- ): SchemaBuilder<T>;
88
- function enumBuilder<T extends number>(
89
- ...values: readonly T[]
90
- ): SchemaBuilder<T>;
91
- function enumBuilder(
92
- ...values: readonly (string | number)[]
93
- ): SchemaBuilder<unknown> {
81
+ function enumBuilder<T extends string>(...values: readonly T[]): SchemaBuilder<T>;
82
+ function enumBuilder<T extends number>(...values: readonly T[]): SchemaBuilder<T>;
83
+ function enumBuilder(...values: readonly (string | number)[]): SchemaBuilder<unknown> {
94
84
  const type = typeof values[0] === "string" ? "string" : "number";
95
85
  return makeBuilder({ type, enum: values } as AnyJSONSchema);
96
86
  }
87
+
97
88
  export { enumBuilder as enum };
98
89
 
99
90
  // ---- String format shorthands ----
@@ -154,7 +145,6 @@ export function object<P extends Record<string, SchemaBuilder<unknown>>>(
154
145
  const schemaProps: Record<string, AnyJSONSchema> = {};
155
146
  const keys = Object.keys(properties);
156
147
  for (const key of keys) {
157
- // biome-ignore lint/style/noNonNullAssertion: key comes from Object.keys(properties)
158
148
  schemaProps[key] = getSchema(properties[key]!);
159
149
  }
160
150
  return makeBuilder({
package/src/schema.ts CHANGED
@@ -1,10 +1,4 @@
1
- import type {
2
- DateFormat,
3
- Icon,
4
- NumberFormat,
5
- SelectOption,
6
- StatusGroup,
7
- } from "./types.js";
1
+ import type { DateFormat, Icon, NumberFormat, SelectOption, StatusGroup } from "./types.js";
8
2
 
9
3
  /**
10
4
  * Supported property types for sync schemas.
@@ -182,9 +176,7 @@ export function multiSelect(options: SelectOption[]): PropertyConfiguration {
182
176
  /**
183
177
  * Creates a status property definition with groups.
184
178
  */
185
- export function status(config: {
186
- groups: StatusGroup[];
187
- }): PropertyConfiguration {
179
+ export function status(config: { groups: StatusGroup[] }): PropertyConfiguration {
188
180
  return { type: "status", groups: config.groups };
189
181
  }
190
182
 
@@ -0,0 +1,489 @@
1
+ // Generated by scripts/generate-triggers.ts — do not edit by hand.
2
+ // Regenerate with: npm run generate
3
+
4
+ import type {
5
+ CalendarEventCanceledEvent,
6
+ CalendarEventCreatedEvent,
7
+ CalendarEventUpdatedEvent,
8
+ DiscordInteractionEvent,
9
+ GoogleDriveOauthFilesChangedEvent,
10
+ MailEmailReceivedEvent,
11
+ MailEmailSentEvent,
12
+ MailLabelAppliedEvent,
13
+ NotionAgentMentionedEvent,
14
+ NotionButtonPressedEvent,
15
+ NotionCommentAddedEvent,
16
+ NotionDatabaseAgentUpdatedEvent,
17
+ NotionMeetingNoteSummaryCompletedEvent,
18
+ NotionPageCreatedEvent,
19
+ NotionPageDeletedEvent,
20
+ NotionPageUpdatedEvent,
21
+ RecurrenceEvent,
22
+ SlackAppMentionEvent,
23
+ SlackMessageEvent,
24
+ SlackReactionAddedEvent,
25
+ WebhookEvent,
26
+ } from "./triggers.js";
27
+
28
+ export type {
29
+ Actor,
30
+ ActorLike,
31
+ CalendarEventCanceledEvent,
32
+ CalendarEventCreatedEvent,
33
+ CalendarEventLike,
34
+ CalendarEventUpdatedEvent,
35
+ ChatMessageLike,
36
+ ChatThreadMessage,
37
+ DiscordChatThreadMessage,
38
+ DiscordInteractionEvent,
39
+ EmailMessageLike,
40
+ EmailThreadLike,
41
+ EmailTriggerMessage,
42
+ GoogleDriveOauthFilesChangedEvent,
43
+ LinkLike,
44
+ MailEmailReceivedEvent,
45
+ MailEmailSentEvent,
46
+ MailLabelAppliedEvent,
47
+ MessageLike,
48
+ NotionAgentMentionedEvent,
49
+ NotionButtonPressedEvent,
50
+ NotionCommentAddedEvent,
51
+ NotionDatabaseAgentUpdatedEvent,
52
+ NotionMeetingNoteSummaryCompletedEvent,
53
+ NotionPageCreatedEvent,
54
+ NotionPageDeletedEvent,
55
+ NotionPageEdit,
56
+ NotionPageUpdatedEvent,
57
+ RecurrenceEvent,
58
+ RecurrenceFrequency,
59
+ SlackAppMentionEvent,
60
+ SlackChatThreadMessage,
61
+ SlackMessageEvent,
62
+ SlackReactionAddedEvent,
63
+ ThreadLike,
64
+ ThreadMessage,
65
+ TimestampLike,
66
+ TriggerEvent,
67
+ TriggerEventBase,
68
+ TriggerEventMap,
69
+ TriggerType,
70
+ VendorActor,
71
+ VendorExtensions,
72
+ WebhookEvent,
73
+ } from "./triggers.js";
74
+
75
+ /** A message was posted in a subscribed Slack channel. */
76
+ export type SlackMessageTrigger = {
77
+ type: "slack.message";
78
+ };
79
+
80
+ /** A reaction was added to a Slack message. */
81
+ export type SlackReactionAddedTrigger = {
82
+ type: "slack.reaction.added";
83
+ };
84
+
85
+ /** The Notion app was mentioned in a Slack message. */
86
+ export type SlackAppMentionTrigger = {
87
+ type: "slack.app.mention";
88
+ };
89
+
90
+ /** A Discord interaction was received. */
91
+ export type DiscordInteractionTrigger = {
92
+ type: "discord.interaction";
93
+ };
94
+
95
+ /** An email was received. */
96
+ export type MailEmailReceivedTrigger = {
97
+ type: "mail.email.received";
98
+ };
99
+
100
+ /** An email was sent. */
101
+ export type MailEmailSentTrigger = {
102
+ type: "mail.email.sent";
103
+ };
104
+
105
+ /** A label was applied to an email. */
106
+ export type MailLabelAppliedTrigger = {
107
+ type: "mail.label.applied";
108
+ };
109
+
110
+ /** A calendar event was created. */
111
+ export type CalendarEventCreatedTrigger = {
112
+ type: "calendar.event.created";
113
+ };
114
+
115
+ /** A calendar event was updated. */
116
+ export type CalendarEventUpdatedTrigger = {
117
+ type: "calendar.event.updated";
118
+ };
119
+
120
+ /** A calendar event was canceled. */
121
+ export type CalendarEventCanceledTrigger = {
122
+ type: "calendar.event.canceled";
123
+ };
124
+
125
+ /** A page has been added to a database. */
126
+ export type NotionPageCreatedTrigger = {
127
+ type: "notion.page.created";
128
+ };
129
+
130
+ /** A page was updated. */
131
+ export type NotionPageUpdatedTrigger = {
132
+ type: "notion.page.updated";
133
+ };
134
+
135
+ /** A page was deleted. */
136
+ export type NotionPageDeletedTrigger = {
137
+ type: "notion.page.deleted";
138
+ };
139
+
140
+ /** A meeting note's AI summary finished generating. */
141
+ export type NotionMeetingNoteSummaryCompletedTrigger = {
142
+ type: "notion.meetingNote.summary.completed";
143
+ };
144
+
145
+ /** A comment was added to a page discussion. */
146
+ export type NotionCommentAddedTrigger = {
147
+ type: "notion.page.discussion.comment.added";
148
+ };
149
+
150
+ /** An agent was mentioned in page content or a person property. */
151
+ export type NotionAgentMentionedTrigger = {
152
+ type: "notion.agent.mentioned";
153
+ };
154
+
155
+ /** A button block was pressed. */
156
+ export type NotionButtonPressedTrigger = {
157
+ type: "notion.button.pressed";
158
+ };
159
+
160
+ /** A database agent's configuration was updated. */
161
+ export type NotionDatabaseAgentUpdatedTrigger = {
162
+ type: "notion.database.agent.updated";
163
+ };
164
+
165
+ /** An incoming webhook request was received. */
166
+ export type WebhookTrigger = {
167
+ type: "webhooks.webhook";
168
+ };
169
+
170
+ /** Files changed in a watched Google Drive folder or drive. */
171
+ export type GoogleDriveOauthFilesChangedTrigger = {
172
+ type: "googleDriveOauth.filesChanged";
173
+ };
174
+
175
+ /** A recurring schedule fired. */
176
+ export type RecurrenceTrigger = {
177
+ type: "recurrence";
178
+ };
179
+
180
+ /** Creators for each event that can trigger a workflow. */
181
+ export const triggers = {
182
+ /**
183
+ * Declare that a workflow can run on `slack.message` events.
184
+ *
185
+ * A message was posted in a subscribed Slack channel.
186
+ */
187
+ slackMessage(): SlackMessageTrigger {
188
+ return {
189
+ type: "slack.message",
190
+ };
191
+ },
192
+
193
+ /**
194
+ * Declare that a workflow can run on `slack.reaction.added` events.
195
+ *
196
+ * A reaction was added to a Slack message.
197
+ */
198
+ slackReactionAdded(): SlackReactionAddedTrigger {
199
+ return {
200
+ type: "slack.reaction.added",
201
+ };
202
+ },
203
+
204
+ /**
205
+ * Declare that a workflow can run on `slack.app.mention` events.
206
+ *
207
+ * The Notion app was mentioned in a Slack message.
208
+ */
209
+ slackAppMention(): SlackAppMentionTrigger {
210
+ return {
211
+ type: "slack.app.mention",
212
+ };
213
+ },
214
+
215
+ /**
216
+ * Declare that a workflow can run on `discord.interaction` events.
217
+ *
218
+ * A Discord interaction was received.
219
+ */
220
+ discordInteraction(): DiscordInteractionTrigger {
221
+ return {
222
+ type: "discord.interaction",
223
+ };
224
+ },
225
+
226
+ /**
227
+ * Declare that a workflow can run on `mail.email.received` events.
228
+ *
229
+ * An email was received.
230
+ */
231
+ mailEmailReceived(): MailEmailReceivedTrigger {
232
+ return {
233
+ type: "mail.email.received",
234
+ };
235
+ },
236
+
237
+ /**
238
+ * Declare that a workflow can run on `mail.email.sent` events.
239
+ *
240
+ * An email was sent.
241
+ */
242
+ mailEmailSent(): MailEmailSentTrigger {
243
+ return {
244
+ type: "mail.email.sent",
245
+ };
246
+ },
247
+
248
+ /**
249
+ * Declare that a workflow can run on `mail.label.applied` events.
250
+ *
251
+ * A label was applied to an email.
252
+ */
253
+ mailLabelApplied(): MailLabelAppliedTrigger {
254
+ return {
255
+ type: "mail.label.applied",
256
+ };
257
+ },
258
+
259
+ /**
260
+ * Declare that a workflow can run on `calendar.event.created` events.
261
+ *
262
+ * A calendar event was created.
263
+ */
264
+ calendarEventCreated(): CalendarEventCreatedTrigger {
265
+ return {
266
+ type: "calendar.event.created",
267
+ };
268
+ },
269
+
270
+ /**
271
+ * Declare that a workflow can run on `calendar.event.updated` events.
272
+ *
273
+ * A calendar event was updated.
274
+ */
275
+ calendarEventUpdated(): CalendarEventUpdatedTrigger {
276
+ return {
277
+ type: "calendar.event.updated",
278
+ };
279
+ },
280
+
281
+ /**
282
+ * Declare that a workflow can run on `calendar.event.canceled` events.
283
+ *
284
+ * A calendar event was canceled.
285
+ */
286
+ calendarEventCanceled(): CalendarEventCanceledTrigger {
287
+ return {
288
+ type: "calendar.event.canceled",
289
+ };
290
+ },
291
+
292
+ /**
293
+ * Declare that a workflow can run on `notion.page.created` events.
294
+ *
295
+ * A page has been added to a database.
296
+ */
297
+ notionPageCreated(): NotionPageCreatedTrigger {
298
+ return {
299
+ type: "notion.page.created",
300
+ };
301
+ },
302
+
303
+ /**
304
+ * Declare that a workflow can run on `notion.page.updated` events.
305
+ *
306
+ * A page was updated.
307
+ */
308
+ notionPageUpdated(): NotionPageUpdatedTrigger {
309
+ return {
310
+ type: "notion.page.updated",
311
+ };
312
+ },
313
+
314
+ /**
315
+ * Declare that a workflow can run on `notion.page.deleted` events.
316
+ *
317
+ * A page was deleted.
318
+ */
319
+ notionPageDeleted(): NotionPageDeletedTrigger {
320
+ return {
321
+ type: "notion.page.deleted",
322
+ };
323
+ },
324
+
325
+ /**
326
+ * Declare that a workflow can run on `notion.meetingNote.summary.completed` events.
327
+ *
328
+ * A meeting note's AI summary finished generating.
329
+ */
330
+ notionMeetingNoteSummaryCompleted(): NotionMeetingNoteSummaryCompletedTrigger {
331
+ return {
332
+ type: "notion.meetingNote.summary.completed",
333
+ };
334
+ },
335
+
336
+ /**
337
+ * Declare that a workflow can run on `notion.page.discussion.comment.added` events.
338
+ *
339
+ * A comment was added to a page discussion.
340
+ */
341
+ notionCommentAdded(): NotionCommentAddedTrigger {
342
+ return {
343
+ type: "notion.page.discussion.comment.added",
344
+ };
345
+ },
346
+
347
+ /**
348
+ * Declare that a workflow can run on `notion.agent.mentioned` events.
349
+ *
350
+ * An agent was mentioned in page content or a person property.
351
+ */
352
+ notionAgentMentioned(): NotionAgentMentionedTrigger {
353
+ return {
354
+ type: "notion.agent.mentioned",
355
+ };
356
+ },
357
+
358
+ /**
359
+ * Declare that a workflow can run on `notion.button.pressed` events.
360
+ *
361
+ * A button block was pressed.
362
+ */
363
+ notionButtonPressed(): NotionButtonPressedTrigger {
364
+ return {
365
+ type: "notion.button.pressed",
366
+ };
367
+ },
368
+
369
+ /**
370
+ * Declare that a workflow can run on `notion.database.agent.updated` events.
371
+ *
372
+ * A database agent's configuration was updated.
373
+ */
374
+ notionDatabaseAgentUpdated(): NotionDatabaseAgentUpdatedTrigger {
375
+ return {
376
+ type: "notion.database.agent.updated",
377
+ };
378
+ },
379
+
380
+ /**
381
+ * Declare that a workflow can run on `webhooks.webhook` events.
382
+ *
383
+ * An incoming webhook request was received.
384
+ */
385
+ webhook(): WebhookTrigger {
386
+ return {
387
+ type: "webhooks.webhook",
388
+ };
389
+ },
390
+
391
+ /**
392
+ * Declare that a workflow can run on `googleDriveOauth.filesChanged` events.
393
+ *
394
+ * Files changed in a watched Google Drive folder or drive.
395
+ */
396
+ googleDriveOauthFilesChanged(): GoogleDriveOauthFilesChangedTrigger {
397
+ return {
398
+ type: "googleDriveOauth.filesChanged",
399
+ };
400
+ },
401
+
402
+ /**
403
+ * Declare that a workflow can run on `recurrence` events.
404
+ *
405
+ * A recurring schedule fired.
406
+ */
407
+ recurrence(): RecurrenceTrigger {
408
+ return {
409
+ type: "recurrence",
410
+ };
411
+ },
412
+ } as const;
413
+
414
+ /** Event that can trigger a workflow. */
415
+ export type WorkflowTrigger =
416
+ | SlackMessageTrigger
417
+ | SlackReactionAddedTrigger
418
+ | SlackAppMentionTrigger
419
+ | DiscordInteractionTrigger
420
+ | MailEmailReceivedTrigger
421
+ | MailEmailSentTrigger
422
+ | MailLabelAppliedTrigger
423
+ | CalendarEventCreatedTrigger
424
+ | CalendarEventUpdatedTrigger
425
+ | CalendarEventCanceledTrigger
426
+ | NotionPageCreatedTrigger
427
+ | NotionPageUpdatedTrigger
428
+ | NotionPageDeletedTrigger
429
+ | NotionMeetingNoteSummaryCompletedTrigger
430
+ | NotionCommentAddedTrigger
431
+ | NotionAgentMentionedTrigger
432
+ | NotionButtonPressedTrigger
433
+ | NotionDatabaseAgentUpdatedTrigger
434
+ | WebhookTrigger
435
+ | GoogleDriveOauthFilesChangedTrigger
436
+ | RecurrenceTrigger;
437
+
438
+ /** All workflow trigger type strings. */
439
+ export const WORKFLOW_TRIGGER_TYPES = [
440
+ "slack.message",
441
+ "slack.reaction.added",
442
+ "slack.app.mention",
443
+ "discord.interaction",
444
+ "mail.email.received",
445
+ "mail.email.sent",
446
+ "mail.label.applied",
447
+ "calendar.event.created",
448
+ "calendar.event.updated",
449
+ "calendar.event.canceled",
450
+ "notion.page.created",
451
+ "notion.page.updated",
452
+ "notion.page.deleted",
453
+ "notion.meetingNote.summary.completed",
454
+ "notion.page.discussion.comment.added",
455
+ "notion.agent.mentioned",
456
+ "notion.button.pressed",
457
+ "notion.database.agent.updated",
458
+ "webhooks.webhook",
459
+ "googleDriveOauth.filesChanged",
460
+ "recurrence",
461
+ ] as const;
462
+
463
+ /** A workflow trigger type string. */
464
+ export type WorkflowTriggerType = (typeof WORKFLOW_TRIGGER_TYPES)[number];
465
+
466
+ /** Maps each supported workflow trigger to the event its handler receives. */
467
+ export type WorkflowEventMap = {
468
+ "slack.message": SlackMessageEvent;
469
+ "slack.reaction.added": SlackReactionAddedEvent;
470
+ "slack.app.mention": SlackAppMentionEvent;
471
+ "discord.interaction": DiscordInteractionEvent;
472
+ "mail.email.received": MailEmailReceivedEvent;
473
+ "mail.email.sent": MailEmailSentEvent;
474
+ "mail.label.applied": MailLabelAppliedEvent;
475
+ "calendar.event.created": CalendarEventCreatedEvent;
476
+ "calendar.event.updated": CalendarEventUpdatedEvent;
477
+ "calendar.event.canceled": CalendarEventCanceledEvent;
478
+ "notion.page.created": NotionPageCreatedEvent;
479
+ "notion.page.updated": NotionPageUpdatedEvent;
480
+ "notion.page.deleted": NotionPageDeletedEvent;
481
+ "notion.meetingNote.summary.completed": NotionMeetingNoteSummaryCompletedEvent;
482
+ "notion.page.discussion.comment.added": NotionCommentAddedEvent;
483
+ "notion.agent.mentioned": NotionAgentMentionedEvent;
484
+ "notion.button.pressed": NotionButtonPressedEvent;
485
+ "notion.database.agent.updated": NotionDatabaseAgentUpdatedEvent;
486
+ "webhooks.webhook": WebhookEvent;
487
+ "googleDriveOauth.filesChanged": GoogleDriveOauthFilesChangedEvent;
488
+ recurrence: RecurrenceEvent;
489
+ };