@notionhq/apps 0.0.20 → 0.0.21

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.
@@ -1,4 +1,77 @@
1
1
  import type { NotionAsCodeIcon, ResourceId } from "./intents.js";
2
+ type RecurrenceWeekday = "MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU";
3
+ /** A nonempty selection of weekdays for a weekly recurrence. */
4
+ export type RecurrenceWeekdays = {
5
+ [Day in RecurrenceWeekday]?: true;
6
+ } & {
7
+ [Day in RecurrenceWeekday]: Required<Pick<Record<RecurrenceWeekday, true>, Day>>;
8
+ }[RecurrenceWeekday];
9
+ export type MonthlyWeekdayOccurrence = "1st" | "2nd" | "3rd" | "4th" | "last";
10
+ export type MonthlyRecurrenceRestriction = {
11
+ type: "day_of_month";
12
+ day: number;
13
+ } | {
14
+ type: "weekday_of_month";
15
+ weekday: RecurrenceWeekday;
16
+ occurrence: MonthlyWeekdayOccurrence;
17
+ };
18
+ export type RecurrenceScheduleEnd = {
19
+ type: "date";
20
+ endsAt: string;
21
+ } | {
22
+ type: "occurrences";
23
+ count: number;
24
+ };
25
+ type RecurrenceScheduleBase = {
26
+ interval: number;
27
+ start: string;
28
+ timeZone: string;
29
+ end?: RecurrenceScheduleEnd;
30
+ };
31
+ export type HourlyRecurrenceSchedule = RecurrenceScheduleBase & {
32
+ frequency: "hour";
33
+ };
34
+ export type DailyRecurrenceSchedule = RecurrenceScheduleBase & {
35
+ frequency: "day";
36
+ };
37
+ export type WeeklyRecurrenceSchedule = RecurrenceScheduleBase & {
38
+ frequency: "week";
39
+ weekdays: RecurrenceWeekdays;
40
+ };
41
+ export type MonthlyRecurrenceSchedule = RecurrenceScheduleBase & {
42
+ frequency: "month";
43
+ monthlyRestriction: MonthlyRecurrenceRestriction;
44
+ };
45
+ export type YearlyRecurrenceSchedule = RecurrenceScheduleBase & {
46
+ frequency: "year";
47
+ };
48
+ export type CustomAgentRecurrenceSchedule = (HourlyRecurrenceSchedule | DailyRecurrenceSchedule | WeeklyRecurrenceSchedule | MonthlyRecurrenceSchedule | YearlyRecurrenceSchedule) & {
49
+ type: "recurrence";
50
+ };
51
+ export type CustomAgentTriggerBase = {
52
+ resourceId: ResourceId;
53
+ enabled?: boolean;
54
+ };
55
+ export type CustomAgentRecurrenceTrigger = CustomAgentTriggerBase & CustomAgentRecurrenceSchedule;
56
+ export type PropertyTriggerCondition = {
57
+ type: "property_edited";
58
+ };
59
+ export type CustomAgentPageAddedTrigger = CustomAgentTriggerBase & {
60
+ type: "page_added";
61
+ dataSourceResourceId: ResourceId;
62
+ };
63
+ type PropertyUpdatedTriggerTarget = {
64
+ propertyConditions: Readonly<Record<ResourceId, PropertyTriggerCondition>>;
65
+ triggerWhenPageContentEdited?: boolean;
66
+ } | {
67
+ propertyConditions?: never;
68
+ triggerWhenPageContentEdited: true;
69
+ };
70
+ export type CustomAgentPropertyUpdatedTrigger = CustomAgentTriggerBase & PropertyUpdatedTriggerTarget & {
71
+ type: "property_updated";
72
+ dataSourceResourceId: ResourceId;
73
+ };
74
+ export type CustomAgentTrigger = CustomAgentRecurrenceTrigger | CustomAgentPageAddedTrigger | CustomAgentPropertyUpdatedTrigger;
2
75
  export type CustomAgentArgs = {
3
76
  resourceId: ResourceId;
4
77
  name: string;
@@ -8,7 +81,7 @@ export type CustomAgentArgs = {
8
81
  instructions?: string;
9
82
  model?: "ambrosia-tart-high" | "opal-quince-medium" | "almond-croissant-low";
10
83
  sharedResources?: readonly ResourceId[];
11
- triggers?: readonly unknown[];
84
+ triggers?: readonly CustomAgentTrigger[];
12
85
  };
13
86
  export type CustomAgentHandle = {
14
87
  readonly resourceType: "customAgent";
@@ -16,4 +89,5 @@ export type CustomAgentHandle = {
16
89
  };
17
90
  /** Declare a custom agent and validate every shared resource reference. */
18
91
  export declare function customAgent(args: CustomAgentArgs): CustomAgentHandle;
92
+ export {};
19
93
  //# sourceMappingURL=custom-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-agent.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/custom-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAIpF,MAAM,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;IAC7E,eAAe,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAExC,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CASpE"}
1
+ {"version":3,"file":"custom-agent.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/custom-agent.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,17 @@ function customAgent(args) {
5
5
  for (const resourceId of args.sharedResources ?? []) {
6
6
  assertUserResourceId(resourceId);
7
7
  }
8
+ for (const trigger of args.triggers ?? []) {
9
+ assertUserResourceId(trigger.resourceId);
10
+ if (trigger.type === "page_added" || trigger.type === "property_updated") {
11
+ assertUserResourceId(trigger.dataSourceResourceId);
12
+ }
13
+ if (trigger.type === "property_updated") {
14
+ for (const propertyResourceId of Object.keys(trigger.propertyConditions ?? {})) {
15
+ assertUserResourceId(propertyResourceId);
16
+ }
17
+ }
18
+ }
8
19
  recordIntent({ type: "custom_agent", ...args });
9
20
  return { resourceType: "customAgent", resourceId: args.resourceId };
10
21
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=custom-agent.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-agent.test.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/custom-agent.test.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import type { Database } from "../database.js";
2
- import { type DatabaseIntent, type NotionAsCodeIcon, type NotionAsCodeSchema, type Parent, type ResourceId } from "./intents.js";
2
+ import { type DatabaseIntent, type DatabasePageLayout, type NotionAsCodeIcon, type NotionAsCodeSchema, type Parent, type ResourceId } from "./intents.js";
3
3
  import { type ChildPageArgs, type PageHandle } from "./page.js";
4
4
  import { type AppsSchemaForSchema } from "./schema.js";
5
5
  import type { ViewSchema } from "./views.js";
@@ -12,6 +12,7 @@ export type DataSourceArgs<Schema extends NotionAsCodeSchema = NotionAsCodeSchem
12
12
  name?: never;
13
13
  schema: Schema;
14
14
  icon?: NotionAsCodeIcon;
15
+ pageLayout?: DatabasePageLayout<Schema>;
15
16
  };
16
17
  /** Data sources keyed by the names used to access their handles. */
17
18
  export type DataSourceMap = Record<string, DataSourceArgs>;
@@ -23,6 +24,7 @@ type SingleSourceDatabaseOptions<Schema extends NotionAsCodeSchema = NotionAsCod
23
24
  dataSourceResourceId: ResourceId;
24
25
  name: string;
25
26
  schema: Schema;
27
+ pageLayout?: DatabasePageLayout<Schema>;
26
28
  datasources?: never;
27
29
  };
28
30
  /** Top-level single-source inputs may choose a parent; page.addDatabase/teamspace.addDatabase bind it instead. */
@@ -38,6 +40,7 @@ type MultiSourceDatabaseOptions<DataSources extends DataSourceMap = DataSourceMa
38
40
  datasources: DataSources;
39
41
  dataSourceResourceId?: never;
40
42
  schema?: never;
43
+ pageLayout?: never;
41
44
  } & (keyof NoInfer<DataSources> extends never ? {
42
45
  views: NonEmptyViewSchemas;
43
46
  } : {
@@ -52,6 +55,7 @@ type ViewOnlyDatabaseOptions = DatabaseMetadata & {
52
55
  datasources?: never;
53
56
  dataSourceResourceId?: never;
54
57
  schema?: never;
58
+ pageLayout?: never;
55
59
  views: NonEmptyViewSchemas;
56
60
  };
57
61
  type ViewOnlyDatabaseArgs = ViewOnlyDatabaseOptions & {
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAc,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5E,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,0FAA0F;AAC1F,KAAK,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,QAAQ,GAAG,aAAa,CAAC,CAAC;AAEtF,KAAK,mBAAmB,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;AAElE,mGAAmG;AACnG,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,IAAI;IACpF,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,UAAU,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE3D;;;GAGG;AACH,KAAK,2BAA2B,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,IAAI,IAAI,CAC9F,gBAAgB,EAChB,MAAM,CACN,GAAG;IACH,oBAAoB,EAAE,UAAU,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,KAAK,CAAC;CACpB,CAAC;AAEF,kHAAkH;AAClH,MAAM,MAAM,wBAAwB,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,IAC1F,2BAA2B,CAAC,MAAM,CAAC,GAAG;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEH;;;;GAIG;AACH,KAAK,0BAA0B,CAAC,WAAW,SAAS,aAAa,GAAG,aAAa,IAChF,gBAAgB,GAAG;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,oBAAoB,CAAC,EAAE,KAAK,CAAC;IAC7B,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC;CACnB,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,KAAK,GACzC;IAAE,KAAK,EAAE,mBAAmB,CAAA;CAAE,GAC9B;IAAE,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAAC,CAAC;AAExC,iHAAiH;AACjH,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,aAAa,GAAG,aAAa,IACpF,0BAA0B,CAAC,WAAW,CAAC,GAAG;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEH,wFAAwF;AACxF,KAAK,uBAAuB,GAAG,gBAAgB,GAAG;IACjD,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,oBAAoB,CAAC,EAAE,KAAK,CAAC;IAC7B,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,KAAK,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEF,KAAK,oBAAoB,GAAG,uBAAuB,GAAG;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,6BAA6B,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,IAC/F,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAElD,gFAAgF;AAChF,MAAM,MAAM,4BAA4B,CAAC,WAAW,SAAS,aAAa,GAAG,aAAa,IAAI,IAAI,CACjG,uBAAuB,CAAC,WAAW,CAAC,EACpC,QAAQ,CACR,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,YAAY,CACvB,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,EACtD,WAAW,SAAS,aAAa,GAAG,aAAa,IAC9C,wBAAwB,CAAC,MAAM,CAAC,GAAG,uBAAuB,CAAC,WAAW,CAAC,GAAG,oBAAoB,CAAC;AAEnG;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAC5B,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,EACtD,WAAW,SAAS,aAAa,GAAG,aAAa,IAE/C,6BAA6B,CAAC,MAAM,CAAC,GACrC,4BAA4B,CAAC,WAAW,CAAC,GACzC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AAExC,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,IAAI;IACtF,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,UAAU,CAAC;CAC7C,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACzB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,cAAc,CAAC,WAAW,SAAS,aAAa,GAAG,aAAa,IAC3E,kBAAkB,GAAG;IACpB,QAAQ,CAAC,WAAW,EAAE;QACrB,QAAQ,EAAE,cAAc,IAAI,MAAM,WAAW,GAAG,gBAAgB,CAC/D,WAAW,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CACrC;KACD,CAAC;CACF,CAAC;AAEH,2EAA2E;AAC3E,MAAM,MAAM,0BAA0B,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,IAC5F,kBAAkB,GAAG;IACpB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAClC,CAAC,KAAK,CAAC,MAAM,SAAS,kBAAkB,EACvC,kBAAkB,EAAE,UAAU,EAC9B,IAAI,EAAE,6BAA6B,CAAC,MAAM,CAAC,GACzC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,KAAK,CAAC,WAAW,SAAS,aAAa,EACvC,kBAAkB,EAAE,UAAU,EAC9B,IAAI,EAAE,4BAA4B,CAAC,WAAW,CAAC,GAC7C,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/B,CACC,kBAAkB,EAAE,UAAU,EAC9B,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,GACxC,cAAc,CAAC,EAAE,CAAC,CAAC;CACtB,CAAC;AAEF,4DAA4D;AAC5D,wBAAgB,QAAQ,CAAC,KAAK,CAAC,MAAM,SAAS,kBAAkB,EAC/D,kBAAkB,EAAE,UAAU,EAC9B,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,GACpC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACtC,wBAAgB,QAAQ,CAAC,KAAK,CAAC,WAAW,SAAS,aAAa,EAC/D,kBAAkB,EAAE,UAAU,EAC9B,IAAI,EAAE,uBAAuB,CAAC,WAAW,CAAC,GACxC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC/B,wBAAgB,QAAQ,CACvB,kBAAkB,EAAE,UAAU,EAC9B,IAAI,EAAE,oBAAoB,GACxB,cAAc,CAAC,EAAE,CAAC,CAAC;AAmBtB,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAuBxE"}
@@ -43,7 +43,8 @@ function buildDatabaseHandle(databaseResourceId, args, parent) {
43
43
  const source = {
44
44
  resourceId: args.dataSourceResourceId,
45
45
  name: args.name,
46
- properties: normalizeProperties(args.schema)
46
+ properties: normalizeProperties(args.schema),
47
+ ...args.pageLayout === void 0 ? {} : { pageLayout: args.pageLayout }
47
48
  };
48
49
  const handle = recordDatabase(databaseResourceId, args, parent, [
49
50
  { key: "dataSource", schema: args.schema, definition: source }
@@ -76,6 +77,7 @@ function normalizeDatabaseMetadata(args) {
76
77
  schema: _schema,
77
78
  datasources: _datasources,
78
79
  dataSourceResourceId: _dataSourceResourceId,
80
+ pageLayout: _pageLayout,
79
81
  ...metadata
80
82
  } = args;
81
83
  return metadata;
@@ -1,6 +1,6 @@
1
1
  export { APPS_RESERVED_RESOURCE_ID_PREFIX, APPS_WORKSPACE_RESOURCE_ID } from "./intents.js";
2
- export type { DatabaseIntent, DataSourceDefinition, NotionAsCodeIcon, NotionAsCodeProperty, NotionAsCodePropertyConfig, NotionAsCodeSchema, NotionAsCodeSelectOption, NotionAsCodeStatusOption, Parent, ResourceId, } from "./intents.js";
3
- export type { CustomAgentArgs, CustomAgentHandle } from "./custom-agent.js";
2
+ export type { ContentPageLayoutTab, DatabasePageLayout, DatabasePageLayoutTab, DatabaseIntent, DataSourceDefinition, NotionAsCodeIcon, NotionAsCodeProperty, NotionAsCodePropertyConfig, NotionAsCodeSchema, NotionAsCodeSelectOption, NotionAsCodeStatusOption, PageCoverReference, PageLayoutMainModule, PageLayoutNumberAndFormulaStyle, PageLayoutPersonStyle, PageLayoutPropertiesModule, PageLayoutPropertyConfig, PageLayoutPropertyModule, PageLayoutPropertySection, PageLayoutRelationConfig, PageLayoutRelationsGroupModule, PageLayoutSidebarModule, Parent, ResourceId, RollupBaseAggregationType, RollupDateAggregationType, RollupNumberAggregationType, RollupTargetPropertyType, ViewPageLayoutTab, } from "./intents.js";
3
+ export type { CustomAgentArgs, CustomAgentHandle, CustomAgentPageAddedTrigger, CustomAgentPropertyUpdatedTrigger, CustomAgentRecurrenceSchedule, CustomAgentRecurrenceTrigger, CustomAgentTrigger, CustomAgentTriggerBase, DailyRecurrenceSchedule, HourlyRecurrenceSchedule, MonthlyRecurrenceRestriction, MonthlyRecurrenceSchedule, MonthlyWeekdayOccurrence, PropertyTriggerCondition, RecurrenceScheduleEnd, RecurrenceWeekdays, WeeklyRecurrenceSchedule, YearlyRecurrenceSchedule, } from "./custom-agent.js";
4
4
  export type { ChildDatabaseArgs, ChildDatabaseFactory, ChildMultiSourceDatabaseArgs, ChildSingleSourceDatabaseArgs, DataSourceArgs, DataSourceHandle, DataSourceMap, DatabaseArgs, DatabaseHandle, MultiSourceDatabaseArgs, SingleSourceDatabaseArgs, SingleSourceDatabaseHandle, } from "./database.js";
5
5
  export type { ChildPageArgs, PageArgs, PageHandle, PropertyValue, SimpleTextToken, TextValue, VerificationInput, VerificationPropertyValue, } from "./page.js";
6
6
  export type { TeamspaceArgs, TeamspaceHandle } from "./teamspace.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gCAAgC,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC5F,YAAY,EACX,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,MAAM,EACN,UAAU,GACV,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EACX,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,6BAA6B,EAC7B,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC1B,MAAM,eAAe,CAAC;AACvB,YAAY,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,yBAAyB,GACzB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EACX,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,4BAA4B,EAC5B,iCAAiC,EACjC,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,+BAA+B,EAC/B,qBAAqB,EACrB,sCAAsC,EACtC,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,QAAQ,GACR,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gCAAgC,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC5F,YAAY,EACX,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,+BAA+B,EAC/B,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,MAAM,EACN,UAAU,EACV,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,eAAe,EACf,iBAAiB,EACjB,2BAA2B,EAC3B,iCAAiC,EACjC,6BAA6B,EAC7B,4BAA4B,EAC5B,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,6BAA6B,EAC7B,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC1B,MAAM,eAAe,CAAC;AACvB,YAAY,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,yBAAyB,GACzB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EACX,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,4BAA4B,EAC5B,iCAAiC,EACjC,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,+BAA+B,EAC/B,qBAAqB,EACrB,sCAAsC,EACtC,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,QAAQ,GACR,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAAiB,CAAC"}
@@ -23,6 +23,13 @@ export type NotionAsCodeIcon = {
23
23
  type: "file";
24
24
  resourceId: ResourceId;
25
25
  };
26
+ /** A URL reference used as a page or database cover. */
27
+ export type PageCoverReference = {
28
+ type: "url";
29
+ url: string;
30
+ /** Vertical position from the top, where 0 is the top and 1 is the bottom. */
31
+ position?: number;
32
+ };
26
33
  export type NotionAsCodeSelectColor = "default" | "gray" | "brown" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "red";
27
34
  export type NotionAsCodeSelectOption = {
28
35
  name: string;
@@ -39,9 +46,49 @@ type PropertyBase = {
39
46
  }>;
40
47
  description?: string;
41
48
  };
42
- type UnsupportedProperty = PropertyBase & {
43
- type: "relation" | "formula" | "rollup" | "created_time" | "last_edited_time" | "created_by" | "last_edited_by" | "auto_increment_id" | "person" | "verification";
44
- [key: string]: unknown;
49
+ /** Rollup aggregations supported for every target property type. */
50
+ export type RollupBaseAggregationType = "count" | "count_values" | "unique" | "empty" | "not_empty" | "percent_empty" | "percent_not_empty" | "show_unique";
51
+ /** Numeric-only rollup aggregations. */
52
+ export type RollupNumberAggregationType = RollupBaseAggregationType | "sum" | "average" | "median" | "min" | "max" | "range";
53
+ /** Date-only rollup aggregations. */
54
+ export type RollupDateAggregationType = RollupBaseAggregationType | "earliest_date" | "latest_date" | "date_range";
55
+ export type RollupTargetPropertyType = "title" | "text" | "number" | "select" | "multi_select" | "status" | "date" | "checkbox" | "url" | "email" | "phone_number" | "relation" | "person" | "created_time" | "last_edited_time" | "created_by" | "last_edited_by";
56
+ type RollupTarget = {
57
+ targetPropertyType: "number";
58
+ aggregation?: RollupNumberAggregationType;
59
+ } | {
60
+ targetPropertyType: "date" | "created_time" | "last_edited_time";
61
+ aggregation?: RollupDateAggregationType;
62
+ } | {
63
+ targetPropertyType: Exclude<RollupTargetPropertyType, "number" | "date" | "created_time" | "last_edited_time">;
64
+ aggregation?: RollupBaseAggregationType;
65
+ };
66
+ type RelationProperty = PropertyBase & {
67
+ type: "relation";
68
+ targetDataSourceResourceId: ResourceId;
69
+ targetDataSourcePropertyResourceId?: ResourceId;
70
+ limit?: 1;
71
+ };
72
+ type FormulaProperty = PropertyBase & {
73
+ type: "formula";
74
+ expression?: string;
75
+ };
76
+ type RollupProperty = PropertyBase & RollupTarget & {
77
+ type: "rollup";
78
+ relationPropertyResourceId: ResourceId;
79
+ targetPropertyResourceId: ResourceId;
80
+ };
81
+ type AutoIncrementIdProperty = PropertyBase & {
82
+ type: "auto_increment_id";
83
+ prefix?: string;
84
+ };
85
+ type PersonProperty = PropertyBase & {
86
+ type: "person";
87
+ limit?: 1;
88
+ };
89
+ type VerificationProperty = PropertyBase & {
90
+ type: "verification";
91
+ verifierPropertyResourceId: ResourceId;
45
92
  };
46
93
  /** A normalized Notion-as-Code property with its resolved display name. */
47
94
  export type NotionAsCodeProperty = (PropertyBase & {
@@ -81,31 +128,106 @@ export type NotionAsCodeProperty = (PropertyBase & {
81
128
  type: "phone_number";
82
129
  }) | (PropertyBase & {
83
130
  type: "file";
84
- }) | UnsupportedProperty;
131
+ }) | RelationProperty | FormulaProperty | RollupProperty | (PropertyBase & {
132
+ type: "created_time";
133
+ }) | (PropertyBase & {
134
+ type: "last_edited_time";
135
+ }) | (PropertyBase & {
136
+ type: "created_by";
137
+ }) | (PropertyBase & {
138
+ type: "last_edited_by";
139
+ }) | AutoIncrementIdProperty | PersonProperty | VerificationProperty;
85
140
  /**
86
141
  * `T extends unknown` applies Omit to each property variant separately, preserving
87
142
  * variant-specific fields such as required status options. Plain Omit on the union
88
- * would retain only shared keys. Pick also restores type/resourceId on the
89
- * unsupported variant, whose string index signature would otherwise erase them.
143
+ * would retain only shared keys.
90
144
  */
91
- type DistributivePropertyConfig<T extends NotionAsCodeProperty> = T extends unknown ? Omit<T, "name"> & Pick<T, "type" | "resourceId"> : never;
145
+ type DistributivePropertyConfig<T extends NotionAsCodeProperty> = T extends unknown ? Omit<T, "name"> : never;
92
146
  /**
93
147
  * Authoring properties are keyed by their schema object name. A property-level
94
- * `name` override would make the key and serialized property diverge, so it is
95
- * explicitly rejected even for the string-indexed unsupported-property variant.
148
+ * `name` override would make the key and serialized property diverge.
96
149
  */
97
150
  export type NotionAsCodePropertyConfig = DistributivePropertyConfig<NotionAsCodeProperty> & {
98
151
  name?: never;
99
152
  };
100
153
  /** A keyed property schema, with object keys supplying serialized property names. */
101
154
  export type NotionAsCodeSchema = Record<string, NotionAsCodePropertyConfig>;
155
+ type SchemaProperty<Schema extends NotionAsCodeSchema> = Schema[keyof Schema & string];
156
+ type PropertyType = NotionAsCodePropertyConfig["type"];
157
+ type PropertyResourceIdFor<Schema extends NotionAsCodeSchema, Types extends PropertyType = PropertyType> = Extract<SchemaProperty<Schema>, {
158
+ type: Types;
159
+ }>["resourceId"];
160
+ export type PageLayoutPropertyConfig<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = {
161
+ property: PropertyResourceIdFor<Schema>;
162
+ visibility?: "show" | "hide_if_empty" | "hide";
163
+ };
164
+ export type PageLayoutPropertySection<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = {
165
+ name: string;
166
+ properties: readonly PageLayoutPropertyConfig<Schema>[];
167
+ };
168
+ export type PageLayoutPropertiesModule<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = {
169
+ type: "properties";
170
+ } & ({
171
+ properties?: readonly PageLayoutPropertyConfig<Schema>[];
172
+ sections?: never;
173
+ } | {
174
+ sections: readonly PageLayoutPropertySection<Schema>[];
175
+ properties?: never;
176
+ });
177
+ export type PageLayoutPersonStyle = "compact" | "large";
178
+ export type PageLayoutNumberAndFormulaStyle = "large" | "small";
179
+ type PageLayoutStyleFor<Property extends NotionAsCodePropertyConfig> = Property["type"] extends "person" | "created_by" | "last_edited_by" ? {
180
+ style?: PageLayoutPersonStyle;
181
+ } : Property["type"] extends "number" | "formula" ? {
182
+ style?: PageLayoutNumberAndFormulaStyle;
183
+ } : {
184
+ style?: never;
185
+ };
186
+ type PageLayoutPropertyModuleFor<Property extends NotionAsCodePropertyConfig> = Property extends unknown ? {
187
+ type: "property";
188
+ property: Property["resourceId"];
189
+ } & PageLayoutStyleFor<Property> : never;
190
+ /**
191
+ * A standalone property module. Its available style is inferred from the
192
+ * referenced property's type when the layout is declared with a literal schema.
193
+ */
194
+ export type PageLayoutPropertyModule<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = PageLayoutPropertyModuleFor<SchemaProperty<Schema>>;
195
+ export type PageLayoutRelationConfig<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = {
196
+ property: PropertyResourceIdFor<Schema, "relation">;
197
+ display: "pageSection" | "minimal";
198
+ };
199
+ export type PageLayoutRelationsGroupModule<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = {
200
+ type: "relations";
201
+ relations: readonly PageLayoutRelationConfig<Schema>[];
202
+ };
203
+ export type PageLayoutMainModule<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = PageLayoutPropertiesModule<Schema> | PageLayoutPropertyModule<Schema> | PageLayoutRelationsGroupModule<Schema>;
204
+ export type PageLayoutSidebarModule<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = PageLayoutPropertiesModule<Schema> | PageLayoutPropertyModule<Schema>;
205
+ export type ContentPageLayoutTab = {
206
+ type: "content";
207
+ name?: string;
208
+ };
209
+ export type ViewPageLayoutTab = {
210
+ type: "view";
211
+ resourceId: ResourceId;
212
+ };
213
+ export type DatabasePageLayoutTab = ContentPageLayoutTab | ViewPageLayoutTab;
214
+ export type DatabasePageLayout<Schema extends NotionAsCodeSchema = NotionAsCodeSchema> = {
215
+ main: readonly PageLayoutMainModule<Schema>[];
216
+ sidebar?: readonly PageLayoutSidebarModule<Schema>[];
217
+ pinnedProperties?: readonly PropertyResourceIdFor<Schema>[];
218
+ discussions?: "top" | "bottom" | "hidden";
219
+ tabs?: readonly DatabasePageLayoutTab[];
220
+ fullWidth?: boolean;
221
+ showPropertyIcons?: boolean;
222
+ showTemplates?: boolean;
223
+ };
102
224
  /** The normalized data-source shape emitted in provisioning artifacts. */
103
225
  export type DataSourceDefinition<Properties extends readonly NotionAsCodeProperty[] = readonly NotionAsCodeProperty[]> = {
104
226
  resourceId: ResourceId;
105
227
  name: string;
106
228
  properties: Properties;
107
229
  icon?: NotionAsCodeIcon;
108
- pageLayout?: unknown;
230
+ pageLayout?: DatabasePageLayout;
109
231
  };
110
232
  export type TeamspaceIntent = TeamspaceArgs & {
111
233
  parent: Parent;
@@ -122,7 +244,7 @@ export type DatabaseIntent = {
122
244
  dataSources: readonly DataSourceDefinition[];
123
245
  views?: readonly ViewSchema[];
124
246
  icon?: NotionAsCodeIcon;
125
- cover?: unknown;
247
+ cover?: PageCoverReference;
126
248
  hideDataSourceTitle?: boolean;
127
249
  hideDatabaseTitleIfEmpty?: boolean;
128
250
  name?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"intents.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/intents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intents.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/intents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=notion-as-code-types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion-as-code-types.test.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/notion-as-code-types.test.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import { type Parent, type ResourceId } from "./intents.js";
1
+ import { type PageCoverReference, type Parent, type ResourceId } from "./intents.js";
2
2
  import { type ChildDatabaseFactory } from "./database.js";
3
3
  /**
4
4
  * A single text token: plain text as `[string]`, or text with annotations as
@@ -37,7 +37,7 @@ export type PageArgs = {
37
37
  resourceId: ResourceId;
38
38
  /** Omit to create a private top-level page in the Apps workspace. */
39
39
  parent?: Parent;
40
- cover?: unknown;
40
+ cover?: PageCoverReference;
41
41
  /**
42
42
  * Page properties, including the page title.
43
43
  *
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,MAAM,EACX,KAAK,UAAU,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAI/E;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAC1B;IACA,KAAK,EAAE,UAAU,CAAC;IAClB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,SAAS,CAAC;CACpB,GACD;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAC3D,IAAI,EAAE,cAAc,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACtB,MAAM,GACN,MAAM,GACN,SAAS,GACT,MAAM,EAAE,GACR,yBAAyB,GACzB,SAAS,CAAC;AAEb;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC,CAAC;IACvD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,oBAAoB,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,UAAU,CAAC;CAC7C,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAS/C;AAED,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAgBrF"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/notion-as-code/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAI/E;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAC1B;IACA,KAAK,EAAE,UAAU,CAAC;IAClB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,SAAS,CAAC;CACpB,GACD;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAC3D,IAAI,EAAE,cAAc,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACtB,MAAM,GACN,MAAM,GACN,SAAS,GACT,MAAM,EAAE,GACR,yBAAyB,GACzB,SAAS,CAAC;AAEb;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC,CAAC;IACvD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,oBAAoB,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,UAAU,CAAC;CAC7C,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAS/C;AAED,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAgBrF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notionhq/apps",
3
- "version": "0.0.20",
3
+ "version": "0.0.21",
4
4
  "description": "An SDK for building workflow apps for Notion",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -124,12 +124,17 @@ use `{ type: "resourceId", resourceId: parent.resourceId }`; child helpers set
124
124
  this reference for you. Pages and databases without a parent default to private
125
125
  top-level resources in the Apps workspace.
126
126
 
127
- Several fields, including database covers and custom-agent triggers,
128
- still have incomplete types. A field typed as `unknown` is not proof
129
- that any payload is supported. Check implementation and examples before using
130
- it; do not assume parity with other Notion as Code packages. Database views are
131
- typed with `ViewSchema`; standalone declarations accept `ViewArgs`, which adds
132
- the owning `databaseResourceId`.
127
+ Page and database covers accept `{ type: "url", url, position? }`. Custom-agent
128
+ triggers are discriminated unions for recurrence, page-added, and
129
+ property-updated triggers. Weekly recurrences require at least one weekday, and
130
+ property-updated triggers require property conditions or
131
+ `triggerWhenPageContentEdited: true`.
132
+
133
+ Database page layouts are typed against their keyed data-source schema. Reference
134
+ property resource IDs, not schema keys. The SDK restricts relation groups to
135
+ relation properties and narrows standalone property styles by property type.
136
+ Database views are typed with `ViewSchema`; standalone declarations accept
137
+ `ViewArgs`, which adds the owning `databaseResourceId`.
133
138
 
134
139
  The Apps SDK exposes a subset of Notion as Code. Data sources are nested inside
135
140
  `database(resourceId, { datasources: { ... } })`, not declared by a separate
@@ -0,0 +1,79 @@
1
+ import { describe, expect, it } from "vitest";
2
+
3
+ import { notion } from "./index.js";
4
+ import { finishMetadataRecording, startMetadataRecording } from "./recorder.js";
5
+
6
+ describe("Notion-as-Code custom agent declarations", () => {
7
+ it("records typed recurrence and database triggers", () => {
8
+ const recorder = startMetadataRecording();
9
+
10
+ notion.customAgent({
11
+ resourceId: "triage-agent",
12
+ name: "Triage agent",
13
+ triggers: [
14
+ {
15
+ type: "recurrence",
16
+ resourceId: "weekday-trigger",
17
+ frequency: "week",
18
+ interval: 1,
19
+ start: "2026-09-21T09:00:00",
20
+ timeZone: "America/Los_Angeles",
21
+ weekdays: { MO: true, FR: true },
22
+ },
23
+ {
24
+ type: "property_updated",
25
+ resourceId: "task-update-trigger",
26
+ dataSourceResourceId: "tasks",
27
+ propertyConditions: {
28
+ status: { type: "property_edited" },
29
+ },
30
+ triggerWhenPageContentEdited: true,
31
+ },
32
+ ],
33
+ });
34
+
35
+ expect(finishMetadataRecording(recorder).intents).toEqual([
36
+ {
37
+ type: "custom_agent",
38
+ resourceId: "triage-agent",
39
+ name: "Triage agent",
40
+ triggers: [
41
+ {
42
+ type: "recurrence",
43
+ resourceId: "weekday-trigger",
44
+ frequency: "week",
45
+ interval: 1,
46
+ start: "2026-09-21T09:00:00",
47
+ timeZone: "America/Los_Angeles",
48
+ weekdays: { MO: true, FR: true },
49
+ },
50
+ {
51
+ type: "property_updated",
52
+ resourceId: "task-update-trigger",
53
+ dataSourceResourceId: "tasks",
54
+ propertyConditions: {
55
+ status: { type: "property_edited" },
56
+ },
57
+ triggerWhenPageContentEdited: true,
58
+ },
59
+ ],
60
+ },
61
+ ]);
62
+ });
63
+
64
+ it("rejects reserved resource IDs inside triggers", () => {
65
+ expect(() =>
66
+ notion.customAgent({
67
+ resourceId: "triage-agent",
68
+ name: "Triage agent",
69
+ triggers: [
70
+ {
71
+ type: "page_added",
72
+ resourceId: "__notion_apps_trigger",
73
+ dataSourceResourceId: "tasks",
74
+ },
75
+ ],
76
+ }),
77
+ ).toThrow("reserved");
78
+ });
79
+ });