@notionhq/workers 0.4.0 → 0.5.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 (44) hide show
  1. package/dist/block.d.ts +1 -1
  2. package/dist/block.d.ts.map +1 -1
  3. package/dist/builder.d.ts +7 -1
  4. package/dist/builder.d.ts.map +1 -1
  5. package/dist/builder.js +13 -0
  6. package/dist/capabilities/context.js +1 -1
  7. package/dist/capabilities/stateful-capability.js +1 -1
  8. package/dist/capabilities/sync.d.ts +11 -1
  9. package/dist/capabilities/sync.d.ts.map +1 -1
  10. package/dist/capabilities/workflow.d.ts +50 -0
  11. package/dist/capabilities/workflow.d.ts.map +1 -0
  12. package/dist/capabilities/workflow.js +40 -0
  13. package/dist/capabilities/workflow.test.d.ts +2 -0
  14. package/dist/capabilities/workflow.test.d.ts.map +1 -0
  15. package/dist/index.d.ts +3 -2
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +8 -1
  18. package/dist/schema-builder.d.ts.map +1 -1
  19. package/dist/triggers.d.ts +365 -0
  20. package/dist/triggers.d.ts.map +1 -0
  21. package/dist/triggers.generated.d.ts +246 -0
  22. package/dist/triggers.generated.d.ts.map +1 -0
  23. package/dist/triggers.generated.js +239 -0
  24. package/dist/triggers.js +0 -0
  25. package/dist/types.d.ts +18 -0
  26. package/dist/types.d.ts.map +1 -1
  27. package/dist/worker.d.ts +32 -2
  28. package/dist/worker.d.ts.map +1 -1
  29. package/dist/worker.js +34 -0
  30. package/package.json +8 -1
  31. package/src/block.ts +40 -40
  32. package/src/builder.ts +20 -0
  33. package/src/capabilities/context.ts +2 -2
  34. package/src/capabilities/stateful-capability.ts +1 -1
  35. package/src/capabilities/sync.test.ts +64 -0
  36. package/src/capabilities/sync.ts +6 -0
  37. package/src/capabilities/workflow.test.ts +184 -0
  38. package/src/capabilities/workflow.ts +119 -0
  39. package/src/index.ts +16 -1
  40. package/src/schema-builder.ts +1 -0
  41. package/src/triggers.generated.ts +489 -0
  42. package/src/triggers.ts +504 -0
  43. package/src/types.ts +20 -0
  44. package/src/worker.ts +99 -8
@@ -0,0 +1,239 @@
1
+ const triggers = {
2
+ /**
3
+ * Declare that a workflow can run on `slack.message` events.
4
+ *
5
+ * A message was posted in a subscribed Slack channel.
6
+ */
7
+ slackMessage() {
8
+ return {
9
+ type: "slack.message"
10
+ };
11
+ },
12
+ /**
13
+ * Declare that a workflow can run on `slack.reaction.added` events.
14
+ *
15
+ * A reaction was added to a Slack message.
16
+ */
17
+ slackReactionAdded() {
18
+ return {
19
+ type: "slack.reaction.added"
20
+ };
21
+ },
22
+ /**
23
+ * Declare that a workflow can run on `slack.app.mention` events.
24
+ *
25
+ * The Notion app was mentioned in a Slack message.
26
+ */
27
+ slackAppMention() {
28
+ return {
29
+ type: "slack.app.mention"
30
+ };
31
+ },
32
+ /**
33
+ * Declare that a workflow can run on `discord.interaction` events.
34
+ *
35
+ * A Discord interaction was received.
36
+ */
37
+ discordInteraction() {
38
+ return {
39
+ type: "discord.interaction"
40
+ };
41
+ },
42
+ /**
43
+ * Declare that a workflow can run on `mail.email.received` events.
44
+ *
45
+ * An email was received.
46
+ */
47
+ mailEmailReceived() {
48
+ return {
49
+ type: "mail.email.received"
50
+ };
51
+ },
52
+ /**
53
+ * Declare that a workflow can run on `mail.email.sent` events.
54
+ *
55
+ * An email was sent.
56
+ */
57
+ mailEmailSent() {
58
+ return {
59
+ type: "mail.email.sent"
60
+ };
61
+ },
62
+ /**
63
+ * Declare that a workflow can run on `mail.label.applied` events.
64
+ *
65
+ * A label was applied to an email.
66
+ */
67
+ mailLabelApplied() {
68
+ return {
69
+ type: "mail.label.applied"
70
+ };
71
+ },
72
+ /**
73
+ * Declare that a workflow can run on `calendar.event.created` events.
74
+ *
75
+ * A calendar event was created.
76
+ */
77
+ calendarEventCreated() {
78
+ return {
79
+ type: "calendar.event.created"
80
+ };
81
+ },
82
+ /**
83
+ * Declare that a workflow can run on `calendar.event.updated` events.
84
+ *
85
+ * A calendar event was updated.
86
+ */
87
+ calendarEventUpdated() {
88
+ return {
89
+ type: "calendar.event.updated"
90
+ };
91
+ },
92
+ /**
93
+ * Declare that a workflow can run on `calendar.event.canceled` events.
94
+ *
95
+ * A calendar event was canceled.
96
+ */
97
+ calendarEventCanceled() {
98
+ return {
99
+ type: "calendar.event.canceled"
100
+ };
101
+ },
102
+ /**
103
+ * Declare that a workflow can run on `notion.page.created` events.
104
+ *
105
+ * A page has been added to a database.
106
+ */
107
+ notionPageCreated() {
108
+ return {
109
+ type: "notion.page.created"
110
+ };
111
+ },
112
+ /**
113
+ * Declare that a workflow can run on `notion.page.updated` events.
114
+ *
115
+ * A page was updated.
116
+ */
117
+ notionPageUpdated() {
118
+ return {
119
+ type: "notion.page.updated"
120
+ };
121
+ },
122
+ /**
123
+ * Declare that a workflow can run on `notion.page.deleted` events.
124
+ *
125
+ * A page was deleted.
126
+ */
127
+ notionPageDeleted() {
128
+ return {
129
+ type: "notion.page.deleted"
130
+ };
131
+ },
132
+ /**
133
+ * Declare that a workflow can run on `notion.meetingNote.summary.completed` events.
134
+ *
135
+ * A meeting note's AI summary finished generating.
136
+ */
137
+ notionMeetingNoteSummaryCompleted() {
138
+ return {
139
+ type: "notion.meetingNote.summary.completed"
140
+ };
141
+ },
142
+ /**
143
+ * Declare that a workflow can run on `notion.page.discussion.comment.added` events.
144
+ *
145
+ * A comment was added to a page discussion.
146
+ */
147
+ notionCommentAdded() {
148
+ return {
149
+ type: "notion.page.discussion.comment.added"
150
+ };
151
+ },
152
+ /**
153
+ * Declare that a workflow can run on `notion.agent.mentioned` events.
154
+ *
155
+ * An agent was mentioned in page content or a person property.
156
+ */
157
+ notionAgentMentioned() {
158
+ return {
159
+ type: "notion.agent.mentioned"
160
+ };
161
+ },
162
+ /**
163
+ * Declare that a workflow can run on `notion.button.pressed` events.
164
+ *
165
+ * A button block was pressed.
166
+ */
167
+ notionButtonPressed() {
168
+ return {
169
+ type: "notion.button.pressed"
170
+ };
171
+ },
172
+ /**
173
+ * Declare that a workflow can run on `notion.database.agent.updated` events.
174
+ *
175
+ * A database agent's configuration was updated.
176
+ */
177
+ notionDatabaseAgentUpdated() {
178
+ return {
179
+ type: "notion.database.agent.updated"
180
+ };
181
+ },
182
+ /**
183
+ * Declare that a workflow can run on `webhooks.webhook` events.
184
+ *
185
+ * An incoming webhook request was received.
186
+ */
187
+ webhook() {
188
+ return {
189
+ type: "webhooks.webhook"
190
+ };
191
+ },
192
+ /**
193
+ * Declare that a workflow can run on `googleDriveOauth.filesChanged` events.
194
+ *
195
+ * Files changed in a watched Google Drive folder or drive.
196
+ */
197
+ googleDriveOauthFilesChanged() {
198
+ return {
199
+ type: "googleDriveOauth.filesChanged"
200
+ };
201
+ },
202
+ /**
203
+ * Declare that a workflow can run on `recurrence` events.
204
+ *
205
+ * A recurring schedule fired.
206
+ */
207
+ recurrence() {
208
+ return {
209
+ type: "recurrence"
210
+ };
211
+ }
212
+ };
213
+ const WORKFLOW_TRIGGER_TYPES = [
214
+ "slack.message",
215
+ "slack.reaction.added",
216
+ "slack.app.mention",
217
+ "discord.interaction",
218
+ "mail.email.received",
219
+ "mail.email.sent",
220
+ "mail.label.applied",
221
+ "calendar.event.created",
222
+ "calendar.event.updated",
223
+ "calendar.event.canceled",
224
+ "notion.page.created",
225
+ "notion.page.updated",
226
+ "notion.page.deleted",
227
+ "notion.meetingNote.summary.completed",
228
+ "notion.page.discussion.comment.added",
229
+ "notion.agent.mentioned",
230
+ "notion.button.pressed",
231
+ "notion.database.agent.updated",
232
+ "webhooks.webhook",
233
+ "googleDriveOauth.filesChanged",
234
+ "recurrence"
235
+ ];
236
+ export {
237
+ WORKFLOW_TRIGGER_TYPES,
238
+ triggers
239
+ };
File without changes
package/dist/types.d.ts CHANGED
@@ -122,6 +122,24 @@ export interface ImageIcon {
122
122
  * All possible icon types
123
123
  */
124
124
  export type Icon = EmojiIcon | NoticonIcon | ImageIcon;
125
+ /**
126
+ * Cover image for a Notion page.
127
+ */
128
+ export interface ImageCover {
129
+ type: "image";
130
+ /**
131
+ * The URL of the image (must be a valid http/https URL)
132
+ */
133
+ url: string;
134
+ /**
135
+ * Vertical image position, from 0 (top) to 1 (bottom).
136
+ */
137
+ position?: number;
138
+ }
139
+ /**
140
+ * All possible cover types
141
+ */
142
+ export type Cover = ImageCover;
125
143
  /**
126
144
  * Person reference - represents a user in a people property
127
145
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/worker.d.ts CHANGED
@@ -6,12 +6,14 @@ import type { SyncCapability, SyncConfiguration } from "./capabilities/sync.js";
6
6
  import type { ToolCapability, ToolConfiguration } from "./capabilities/tool.js";
7
7
  import type { WebhookCapability, WebhookConfiguration, WebhookEvent } from "./capabilities/webhook.js";
8
8
  import { WebhookVerificationError } from "./capabilities/webhook.js";
9
+ import type { WorkflowCapability, WorkflowConfiguration, WorkflowEvent } from "./capabilities/workflow.js";
9
10
  import type { PacerDeclaration } from "./pacer_internal.js";
10
11
  import type { Schema } from "./schema.js";
12
+ import type { WorkflowTrigger } from "./triggers.generated.js";
11
13
  import type { HandlerOptions, JSONValue } from "./types.js";
12
- export type { AutomationConfiguration, AutomationEvent, AiConnectorConfiguration, CapabilityContext, OAuthConfiguration, NotionManagedOAuthConfiguration, UserManagedOAuthConfiguration, SyncConfiguration, ToolConfiguration, WebhookConfiguration, WebhookEvent, };
14
+ export type { AiConnectorConfiguration, AutomationConfiguration, AutomationEvent, CapabilityContext, NotionManagedOAuthConfiguration, OAuthConfiguration, SyncConfiguration, ToolConfiguration, UserManagedOAuthConfiguration, WebhookConfiguration, WebhookEvent, WorkflowConfiguration, WorkflowEvent, };
13
15
  export { WebhookVerificationError };
14
- type Capability = SyncCapability | AiConnectorCapability | ToolCapability<any, any> | AutomationCapability | OAuthCapability | WebhookCapability;
16
+ type Capability = SyncCapability | AiConnectorCapability | ToolCapability<any, any> | AutomationCapability | WorkflowCapability | OAuthCapability | WebhookCapability;
15
17
  export type CapabilityType = Capability["_tag"];
16
18
  /**
17
19
  * Configuration for a database that Notion creates and manages on behalf
@@ -299,6 +301,34 @@ export declare class Worker {
299
301
  * @returns The capability object.
300
302
  */
301
303
  automation(key: string, config: AutomationConfiguration): AutomationCapability;
304
+ /**
305
+ * Register a workflow capability.
306
+ *
307
+ * Example:
308
+ *
309
+ * ```ts
310
+ * import { Worker } from "@notionhq/workers";
311
+ * import { triggers } from "@notionhq/workers/triggers";
312
+ *
313
+ * const worker = new Worker();
314
+ * export default worker;
315
+ *
316
+ * worker.workflow("sendWelcomeEmail", {
317
+ * title: "Send Welcome Email",
318
+ * description: "Sends a welcome email when a new user is added",
319
+ * triggers: [triggers.notionPageCreated()],
320
+ * execute: async (event) => {
321
+ * console.log(event.page);
322
+ * console.log(event.content);
323
+ * },
324
+ * })
325
+ * ```
326
+ *
327
+ * @param key - The unique key for this capability.
328
+ * @param config - The workflow configuration.
329
+ * @returns The capability object.
330
+ */
331
+ workflow<const TTriggers extends readonly [WorkflowTrigger, ...WorkflowTrigger[]]>(key: string, config: WorkflowConfiguration<TTriggers>): WorkflowCapability<TTriggers>;
302
332
  /**
303
333
  * Register a webhook capability.
304
334
  *
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/dist/worker.js CHANGED
@@ -7,6 +7,7 @@ import {
7
7
  createWebhookCapability,
8
8
  WebhookVerificationError
9
9
  } from "./capabilities/webhook.js";
10
+ import { createWorkflowCapability } from "./capabilities/workflow.js";
10
11
  import { pacerWait } from "./pacer_internal.js";
11
12
  import { createRequire } from "node:module";
12
13
  const SDK_VERSION = (() => {
@@ -253,6 +254,39 @@ class Worker {
253
254
  this.#capabilities.set(key, capability);
254
255
  return capability;
255
256
  }
257
+ /**
258
+ * Register a workflow capability.
259
+ *
260
+ * Example:
261
+ *
262
+ * ```ts
263
+ * import { Worker } from "@notionhq/workers";
264
+ * import { triggers } from "@notionhq/workers/triggers";
265
+ *
266
+ * const worker = new Worker();
267
+ * export default worker;
268
+ *
269
+ * worker.workflow("sendWelcomeEmail", {
270
+ * title: "Send Welcome Email",
271
+ * description: "Sends a welcome email when a new user is added",
272
+ * triggers: [triggers.notionPageCreated()],
273
+ * execute: async (event) => {
274
+ * console.log(event.page);
275
+ * console.log(event.content);
276
+ * },
277
+ * })
278
+ * ```
279
+ *
280
+ * @param key - The unique key for this capability.
281
+ * @param config - The workflow configuration.
282
+ * @returns The capability object.
283
+ */
284
+ workflow(key, config) {
285
+ this.#validateUniqueKey(key);
286
+ const capability = createWorkflowCapability(key, config);
287
+ this.#capabilities.set(key, capability);
288
+ return capability;
289
+ }
256
290
  /**
257
291
  * Register a webhook capability.
258
292
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notionhq/workers",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "An SDK for building workers for the Notion Workers platform",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -29,6 +29,10 @@
29
29
  "types": "./dist/schema-builder.d.ts",
30
30
  "default": "./dist/schema-builder.js"
31
31
  },
32
+ "./triggers": {
33
+ "types": "./dist/triggers.generated.d.ts",
34
+ "default": "./dist/triggers.generated.js"
35
+ },
32
36
  "./types": {
33
37
  "types": "./dist/types.d.ts",
34
38
  "default": "./dist/types.js"
@@ -59,6 +63,9 @@
59
63
  "build:watch": "concurrently --group \"npm run build:watch:types\" \"npm run build:watch:js\"",
60
64
  "build:watch:types": "tsc --watch",
61
65
  "build:watch:js": "esbuild --watch --format=esm --outdir=dist --target=esnext --packages=external ./src/**.ts ./src/**/*.ts",
66
+ "generate": "tsx scripts/generate-triggers.ts",
67
+ "generate:check": "tsx scripts/generate-triggers.ts --check",
68
+ "sync:triggers": "tsx scripts/sync-triggers.ts",
62
69
  "test": "vitest run"
63
70
  },
64
71
  "devDependencies": {
package/src/block.ts CHANGED
@@ -473,57 +473,57 @@ type Block =
473
473
 
474
474
  // Export all types
475
475
  export type {
476
- RichText,
477
- RichTextItem,
478
- RichTextBase,
479
- RichTextAnnotations,
480
- TextContent,
481
- EquationContent,
482
- MentionContent,
483
- DateMention,
484
- CustomEmojiMention,
485
- LinkPreviewMention,
486
- LinkMention,
476
+ AIBlock,
487
477
  ApiColor,
488
- Icon,
478
+ AudioBlock,
479
+ Block,
480
+ BlockBase,
481
+ BookmarkBlock,
482
+ BreadcrumbBlock,
483
+ BulletedListItemBlock,
484
+ CalloutBlock,
485
+ ChildDatabaseBlock,
486
+ ChildPageBlock,
487
+ CodeBlock,
488
+ ColumnBlock,
489
+ ColumnListBlock,
490
+ CustomEmojiMention,
491
+ DateMention,
492
+ DividerBlock,
493
+ EmbedBlock,
489
494
  EmojiIcon,
495
+ EquationBlock,
496
+ EquationContent,
497
+ ExternalFile,
490
498
  ExternalIcon,
499
+ FileBlock,
491
500
  FileIcon,
492
501
  FileObject,
493
- ExternalFile,
494
- HostedFile,
495
- BlockBase,
496
- ParagraphBlock,
497
502
  Heading1Block,
498
503
  Heading2Block,
499
504
  Heading3Block,
500
- BulletedListItemBlock,
501
- NumberedListItemBlock,
502
- ToDoBlock,
503
- ToggleBlock,
504
- QuoteBlock,
505
- CalloutBlock,
506
- CodeBlock,
507
- EquationBlock,
508
- DividerBlock,
509
- BreadcrumbBlock,
510
- TableOfContentsBlock,
511
- ColumnListBlock,
512
- ColumnBlock,
505
+ HostedFile,
506
+ Icon,
513
507
  ImageBlock,
514
- VideoBlock,
515
- AudioBlock,
516
- PDFBlock,
517
- FileBlock,
518
- EmbedBlock,
519
- BookmarkBlock,
508
+ LinkMention,
520
509
  LinkPreviewBlock,
521
- ChildPageBlock,
522
- ChildDatabaseBlock,
523
- TemplateBlock,
510
+ LinkPreviewMention,
511
+ MentionContent,
512
+ NumberedListItemBlock,
513
+ ParagraphBlock,
514
+ PDFBlock,
515
+ QuoteBlock,
516
+ RichText,
517
+ RichTextAnnotations,
518
+ RichTextBase,
519
+ RichTextItem,
524
520
  TableBlock,
521
+ TableOfContentsBlock,
525
522
  TableRowBlock,
526
- AIBlock,
523
+ TemplateBlock,
524
+ TextContent,
525
+ ToDoBlock,
526
+ ToggleBlock,
527
527
  UnsupportedBlock,
528
- Block,
528
+ VideoBlock,
529
529
  };
package/src/builder.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { NoticonName } from "./icon-names.js";
2
2
  import type {
3
+ Cover,
3
4
  DateValue,
4
5
  Icon,
5
6
  NoticonColor,
@@ -310,3 +311,22 @@ export function imageIcon(url: string): Icon {
310
311
  url,
311
312
  };
312
313
  }
314
+
315
+ /**
316
+ * Creates an image cover from an external URL.
317
+ * @param url - The URL of the image (e.g., "https://example.com/cover.png")
318
+ * @param position - Vertical image position, from 0 (top) to 1 (bottom). Defaults to 0.5.
319
+ */
320
+ export function imageCover(url: string, position = 0.5): Cover {
321
+ if (!Number.isFinite(position) || position < 0 || position > 1) {
322
+ throw new Error(
323
+ `Invalid cover position: ${position}. Expected a number between 0 and 1.`,
324
+ );
325
+ }
326
+
327
+ return {
328
+ type: "image",
329
+ url,
330
+ position,
331
+ };
332
+ }
@@ -9,8 +9,8 @@ export type CapabilityContext = {
9
9
 
10
10
  const FIX_STEPS =
11
11
  "\n\nTo fix this:\n" +
12
- "1. Create an internal integration at https://www.notion.so/profile/integrations/internal\n" +
13
- "2. Give the integration access to the relevant pages/databases\n" +
12
+ "1. Create a connection at https://app.notion.com/developers/connections\n" +
13
+ "2. Give the connection access to the relevant pages/databases\n" +
14
14
  "3. Add NOTION_API_TOKEN=<your-token> to your .env file\n" +
15
15
  "4. For deployed workers, run: ntn workers env push";
16
16
 
@@ -48,7 +48,7 @@ export function parseSchedule(schedule: Schedule): SyncSchedule {
48
48
  }
49
49
 
50
50
  const match = schedule.match(/^(\d+)(m|h|d)$/);
51
- if (!match || !match[1] || !match[2]) {
51
+ if (!match?.[1] || !match[2]) {
52
52
  throw new Error(
53
53
  `Invalid schedule format: "${schedule}". Use "continuous" or an interval like "30m", "1h", "1d".`,
54
54
  );
@@ -59,6 +59,34 @@ describe("Worker.sync", () => {
59
59
  });
60
60
  });
61
61
 
62
+ describe("Builder.imageCover", () => {
63
+ it("creates an image cover with the default position", () => {
64
+ const value = Builder.imageCover("https://example.com/cover.jpg");
65
+
66
+ expect(value).toEqual({
67
+ type: "image",
68
+ url: "https://example.com/cover.jpg",
69
+ position: 0.5,
70
+ });
71
+ });
72
+
73
+ it("creates an image cover with a custom position", () => {
74
+ const value = Builder.imageCover("https://example.com/cover.jpg", 0.25);
75
+
76
+ expect(value).toEqual({
77
+ type: "image",
78
+ url: "https://example.com/cover.jpg",
79
+ position: 0.25,
80
+ });
81
+ });
82
+
83
+ it("rejects cover positions outside the supported range", () => {
84
+ expect(() =>
85
+ Builder.imageCover("https://example.com/cover.jpg", 1.5),
86
+ ).toThrow("Expected a number between 0 and 1");
87
+ });
88
+ });
89
+
62
90
  describe("SyncedObject with relation properties", () => {
63
91
  it("allows relation values in synced objects", async () => {
64
92
  const worker = new Worker();
@@ -107,6 +135,42 @@ describe("Worker.sync", () => {
107
135
  });
108
136
  });
109
137
 
138
+ describe("SyncedObject with page covers", () => {
139
+ it("allows cover values in synced objects", async () => {
140
+ const worker = new Worker();
141
+ const tasks = worker.database("tasks", {
142
+ type: "managed",
143
+ initialTitle: "Tasks",
144
+ primaryKeyProperty: "Task ID",
145
+ schema: {
146
+ properties: {
147
+ "Task ID": Schema.title(),
148
+ },
149
+ },
150
+ });
151
+
152
+ const capability = createSyncCapability("tasksSync", {
153
+ database: tasks,
154
+ execute: async () => ({
155
+ changes: [
156
+ {
157
+ type: "upsert",
158
+ key: "task-1",
159
+ properties: {
160
+ "Task ID": Builder.title("TASK-001"),
161
+ },
162
+ cover: Builder.imageCover("https://example.com/cover.jpg"),
163
+ },
164
+ ],
165
+ hasMore: false,
166
+ }),
167
+ });
168
+
169
+ expect(capability._tag).toBe("sync");
170
+ expect(capability.config.databaseKey).toBe("tasks");
171
+ });
172
+ });
173
+
110
174
  describe("pacer local fallback", () => {
111
175
  it("seeds pacer state from declarations when runtime context has no pacers", async () => {
112
176
  const worker = new Worker();
@@ -10,6 +10,7 @@ import type {
10
10
  Schema,
11
11
  } from "../schema.js";
12
12
  import type {
13
+ Cover,
13
14
  HandlerOptions,
14
15
  Icon,
15
16
  PeopleValue,
@@ -98,6 +99,11 @@ export type SyncChangeUpsert<
98
99
  * Use the `Builder.emojiIcon()`, `Builder.notionIcon()`, or `Builder.imageIcon()` helpers.
99
100
  */
100
101
  icon?: Icon;
102
+ /**
103
+ * Optional cover to use as the cover for this row's page.
104
+ * Use the `Builder.imageCover()` helper.
105
+ */
106
+ cover?: Cover;
101
107
  /**
102
108
  * Optional markdown content to add to the page body.
103
109
  * This will be converted to Notion blocks and added as page content.