@keystrokehq/notion 0.1.2 → 0.1.3

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 (266) hide show
  1. package/README.md +1 -1
  2. package/dist/actions/add-multiple-page-content.cjs +5 -5
  3. package/dist/actions/add-multiple-page-content.cjs.map +1 -1
  4. package/dist/actions/add-multiple-page-content.d.cts +18 -16
  5. package/dist/actions/add-multiple-page-content.d.cts.map +1 -1
  6. package/dist/actions/add-multiple-page-content.d.mts +18 -16
  7. package/dist/actions/add-multiple-page-content.d.mts.map +1 -1
  8. package/dist/actions/add-multiple-page-content.mjs +5 -5
  9. package/dist/actions/add-multiple-page-content.mjs.map +1 -1
  10. package/dist/actions/append-code-blocks.cjs +60 -60
  11. package/dist/actions/append-code-blocks.cjs.map +1 -1
  12. package/dist/actions/append-code-blocks.d.cts +167 -149
  13. package/dist/actions/append-code-blocks.d.mts +167 -149
  14. package/dist/actions/append-code-blocks.mjs +60 -60
  15. package/dist/actions/append-code-blocks.mjs.map +1 -1
  16. package/dist/actions/append-layout-blocks.cjs +51 -51
  17. package/dist/actions/append-layout-blocks.cjs.map +1 -1
  18. package/dist/actions/append-layout-blocks.d.cts +151 -141
  19. package/dist/actions/append-layout-blocks.d.mts +151 -141
  20. package/dist/actions/append-layout-blocks.mjs +51 -51
  21. package/dist/actions/append-layout-blocks.mjs.map +1 -1
  22. package/dist/actions/append-media-blocks.cjs +85 -85
  23. package/dist/actions/append-media-blocks.cjs.map +1 -1
  24. package/dist/actions/append-media-blocks.d.cts +217 -174
  25. package/dist/actions/append-media-blocks.d.mts +217 -174
  26. package/dist/actions/append-media-blocks.mjs +85 -85
  27. package/dist/actions/append-media-blocks.mjs.map +1 -1
  28. package/dist/actions/append-table-blocks.cjs +47 -47
  29. package/dist/actions/append-table-blocks.cjs.map +1 -1
  30. package/dist/actions/append-table-blocks.d.cts +143 -137
  31. package/dist/actions/append-table-blocks.d.mts +143 -137
  32. package/dist/actions/append-table-blocks.mjs +47 -47
  33. package/dist/actions/append-table-blocks.mjs.map +1 -1
  34. package/dist/actions/append-task-blocks.cjs +61 -61
  35. package/dist/actions/append-task-blocks.cjs.map +1 -1
  36. package/dist/actions/append-task-blocks.d.cts +169 -150
  37. package/dist/actions/append-task-blocks.d.mts +169 -150
  38. package/dist/actions/append-task-blocks.mjs +61 -61
  39. package/dist/actions/append-task-blocks.mjs.map +1 -1
  40. package/dist/actions/append-text-blocks.cjs +78 -78
  41. package/dist/actions/append-text-blocks.cjs.map +1 -1
  42. package/dist/actions/append-text-blocks.d.cts +203 -167
  43. package/dist/actions/append-text-blocks.d.mts +203 -167
  44. package/dist/actions/append-text-blocks.mjs +78 -78
  45. package/dist/actions/append-text-blocks.mjs.map +1 -1
  46. package/dist/actions/archive-notion-page.cjs +17 -17
  47. package/dist/actions/archive-notion-page.cjs.map +1 -1
  48. package/dist/actions/archive-notion-page.d.cts +20 -20
  49. package/dist/actions/archive-notion-page.d.mts +20 -20
  50. package/dist/actions/archive-notion-page.mjs +17 -17
  51. package/dist/actions/archive-notion-page.mjs.map +1 -1
  52. package/dist/actions/create-comment.d.cts +9 -9
  53. package/dist/actions/create-comment.d.mts +9 -9
  54. package/dist/actions/create-database.cjs +15 -15
  55. package/dist/actions/create-database.cjs.map +1 -1
  56. package/dist/actions/create-database.d.cts +26 -25
  57. package/dist/actions/create-database.d.mts +26 -25
  58. package/dist/actions/create-database.mjs +15 -15
  59. package/dist/actions/create-database.mjs.map +1 -1
  60. package/dist/actions/create-file-upload.cjs +1 -1
  61. package/dist/actions/create-file-upload.cjs.map +1 -1
  62. package/dist/actions/create-file-upload.d.cts +1 -1
  63. package/dist/actions/create-file-upload.d.mts +1 -1
  64. package/dist/actions/create-file-upload.mjs +1 -1
  65. package/dist/actions/create-file-upload.mjs.map +1 -1
  66. package/dist/actions/create-notion-page.cjs +14 -14
  67. package/dist/actions/create-notion-page.cjs.map +1 -1
  68. package/dist/actions/create-notion-page.d.cts +18 -18
  69. package/dist/actions/create-notion-page.d.mts +18 -18
  70. package/dist/actions/create-notion-page.mjs +14 -14
  71. package/dist/actions/create-notion-page.mjs.map +1 -1
  72. package/dist/actions/delete-block.cjs +46 -46
  73. package/dist/actions/delete-block.cjs.map +1 -1
  74. package/dist/actions/delete-block.d.cts +338 -338
  75. package/dist/actions/delete-block.d.mts +338 -338
  76. package/dist/actions/delete-block.mjs +46 -46
  77. package/dist/actions/delete-block.mjs.map +1 -1
  78. package/dist/actions/duplicate-page.cjs +20 -20
  79. package/dist/actions/duplicate-page.cjs.map +1 -1
  80. package/dist/actions/duplicate-page.d.cts +24 -24
  81. package/dist/actions/duplicate-page.d.mts +24 -24
  82. package/dist/actions/duplicate-page.mjs +20 -20
  83. package/dist/actions/duplicate-page.mjs.map +1 -1
  84. package/dist/actions/fetch-all-block-contents.cjs +58 -58
  85. package/dist/actions/fetch-all-block-contents.cjs.map +1 -1
  86. package/dist/actions/fetch-all-block-contents.d.cts +4 -4
  87. package/dist/actions/fetch-all-block-contents.d.mts +4 -4
  88. package/dist/actions/fetch-all-block-contents.mjs +58 -58
  89. package/dist/actions/fetch-all-block-contents.mjs.map +1 -1
  90. package/dist/actions/fetch-block-contents.cjs +49 -49
  91. package/dist/actions/fetch-block-contents.cjs.map +1 -1
  92. package/dist/actions/fetch-block-contents.d.cts +172 -172
  93. package/dist/actions/fetch-block-contents.d.mts +172 -172
  94. package/dist/actions/fetch-block-contents.mjs +49 -49
  95. package/dist/actions/fetch-block-contents.mjs.map +1 -1
  96. package/dist/actions/fetch-block-metadata.cjs +43 -43
  97. package/dist/actions/fetch-block-metadata.cjs.map +1 -1
  98. package/dist/actions/fetch-block-metadata.d.cts +296 -296
  99. package/dist/actions/fetch-block-metadata.d.mts +296 -296
  100. package/dist/actions/fetch-block-metadata.mjs +43 -43
  101. package/dist/actions/fetch-block-metadata.mjs.map +1 -1
  102. package/dist/actions/fetch-comments.cjs +24 -24
  103. package/dist/actions/fetch-comments.cjs.map +1 -1
  104. package/dist/actions/fetch-comments.d.cts +33 -33
  105. package/dist/actions/fetch-comments.d.mts +33 -33
  106. package/dist/actions/fetch-comments.mjs +24 -24
  107. package/dist/actions/fetch-comments.mjs.map +1 -1
  108. package/dist/actions/fetch-data.cjs +33 -33
  109. package/dist/actions/fetch-data.cjs.map +1 -1
  110. package/dist/actions/fetch-data.d.cts +131 -131
  111. package/dist/actions/fetch-data.d.mts +131 -131
  112. package/dist/actions/fetch-data.mjs +33 -33
  113. package/dist/actions/fetch-data.mjs.map +1 -1
  114. package/dist/actions/fetch-database.cjs +13 -13
  115. package/dist/actions/fetch-database.cjs.map +1 -1
  116. package/dist/actions/fetch-database.d.cts +18 -18
  117. package/dist/actions/fetch-database.d.mts +18 -18
  118. package/dist/actions/fetch-database.mjs +13 -13
  119. package/dist/actions/fetch-database.mjs.map +1 -1
  120. package/dist/actions/fetch-row.cjs +23 -23
  121. package/dist/actions/fetch-row.cjs.map +1 -1
  122. package/dist/actions/fetch-row.d.cts +40 -40
  123. package/dist/actions/fetch-row.d.mts +40 -40
  124. package/dist/actions/fetch-row.mjs +23 -23
  125. package/dist/actions/fetch-row.mjs.map +1 -1
  126. package/dist/actions/get-about-user.cjs +6 -6
  127. package/dist/actions/get-about-user.cjs.map +1 -1
  128. package/dist/actions/get-about-user.d.cts +8 -8
  129. package/dist/actions/get-about-user.d.mts +8 -8
  130. package/dist/actions/get-about-user.mjs +6 -6
  131. package/dist/actions/get-about-user.mjs.map +1 -1
  132. package/dist/actions/get-page-markdown.cjs +1 -1
  133. package/dist/actions/get-page-markdown.cjs.map +1 -1
  134. package/dist/actions/get-page-markdown.d.cts +1 -1
  135. package/dist/actions/get-page-markdown.d.mts +1 -1
  136. package/dist/actions/get-page-markdown.mjs +1 -1
  137. package/dist/actions/get-page-markdown.mjs.map +1 -1
  138. package/dist/actions/insert-row-database.cjs +22 -22
  139. package/dist/actions/insert-row-database.cjs.map +1 -1
  140. package/dist/actions/insert-row-database.d.cts +40 -38
  141. package/dist/actions/insert-row-database.d.mts +40 -38
  142. package/dist/actions/insert-row-database.mjs +22 -22
  143. package/dist/actions/insert-row-database.mjs.map +1 -1
  144. package/dist/actions/insert-row-from-nl.cjs +1 -1
  145. package/dist/actions/insert-row-from-nl.cjs.map +1 -1
  146. package/dist/actions/insert-row-from-nl.d.cts +1 -1
  147. package/dist/actions/insert-row-from-nl.d.mts +1 -1
  148. package/dist/actions/insert-row-from-nl.mjs +1 -1
  149. package/dist/actions/insert-row-from-nl.mjs.map +1 -1
  150. package/dist/actions/list-data-source-templates.cjs +2 -2
  151. package/dist/actions/list-data-source-templates.cjs.map +1 -1
  152. package/dist/actions/list-data-source-templates.d.cts +2 -2
  153. package/dist/actions/list-data-source-templates.d.mts +2 -2
  154. package/dist/actions/list-data-source-templates.mjs +2 -2
  155. package/dist/actions/list-data-source-templates.mjs.map +1 -1
  156. package/dist/actions/list-file-uploads.cjs +2 -2
  157. package/dist/actions/list-file-uploads.cjs.map +1 -1
  158. package/dist/actions/list-file-uploads.d.cts +2 -2
  159. package/dist/actions/list-file-uploads.d.mts +2 -2
  160. package/dist/actions/list-file-uploads.mjs +2 -2
  161. package/dist/actions/list-file-uploads.mjs.map +1 -1
  162. package/dist/actions/list-users.cjs +8 -8
  163. package/dist/actions/list-users.cjs.map +1 -1
  164. package/dist/actions/list-users.d.cts +11 -11
  165. package/dist/actions/list-users.d.mts +11 -11
  166. package/dist/actions/list-users.mjs +8 -8
  167. package/dist/actions/list-users.mjs.map +1 -1
  168. package/dist/actions/move-page.cjs +18 -18
  169. package/dist/actions/move-page.cjs.map +1 -1
  170. package/dist/actions/move-page.d.cts +23 -21
  171. package/dist/actions/move-page.d.mts +23 -21
  172. package/dist/actions/move-page.mjs +18 -18
  173. package/dist/actions/move-page.mjs.map +1 -1
  174. package/dist/actions/query-data-source.cjs +18 -18
  175. package/dist/actions/query-data-source.cjs.map +1 -1
  176. package/dist/actions/query-data-source.d.cts +34 -32
  177. package/dist/actions/query-data-source.d.cts.map +1 -1
  178. package/dist/actions/query-data-source.d.mts +34 -32
  179. package/dist/actions/query-data-source.d.mts.map +1 -1
  180. package/dist/actions/query-data-source.mjs +18 -18
  181. package/dist/actions/query-data-source.mjs.map +1 -1
  182. package/dist/actions/query-database-with-filter.cjs +25 -25
  183. package/dist/actions/query-database-with-filter.cjs.map +1 -1
  184. package/dist/actions/query-database-with-filter.d.cts +50 -48
  185. package/dist/actions/query-database-with-filter.d.cts.map +1 -1
  186. package/dist/actions/query-database-with-filter.d.mts +50 -48
  187. package/dist/actions/query-database-with-filter.d.mts.map +1 -1
  188. package/dist/actions/query-database-with-filter.mjs +25 -25
  189. package/dist/actions/query-database-with-filter.mjs.map +1 -1
  190. package/dist/actions/query-database.cjs +24 -24
  191. package/dist/actions/query-database.cjs.map +1 -1
  192. package/dist/actions/query-database.d.cts +49 -48
  193. package/dist/actions/query-database.d.mts +49 -48
  194. package/dist/actions/query-database.mjs +24 -24
  195. package/dist/actions/query-database.mjs.map +1 -1
  196. package/dist/actions/replace-page-content.cjs +130 -130
  197. package/dist/actions/replace-page-content.cjs.map +1 -1
  198. package/dist/actions/replace-page-content.d.cts +261 -131
  199. package/dist/actions/replace-page-content.d.mts +261 -131
  200. package/dist/actions/replace-page-content.mjs +130 -130
  201. package/dist/actions/replace-page-content.mjs.map +1 -1
  202. package/dist/actions/retrieve-database-property.cjs +25 -25
  203. package/dist/actions/retrieve-database-property.cjs.map +1 -1
  204. package/dist/actions/retrieve-database-property.d.cts +28 -28
  205. package/dist/actions/retrieve-database-property.d.mts +28 -28
  206. package/dist/actions/retrieve-database-property.mjs +25 -25
  207. package/dist/actions/retrieve-database-property.mjs.map +1 -1
  208. package/dist/actions/retrieve-file-upload.cjs +1 -1
  209. package/dist/actions/retrieve-file-upload.cjs.map +1 -1
  210. package/dist/actions/retrieve-file-upload.d.cts +1 -1
  211. package/dist/actions/retrieve-file-upload.d.mts +1 -1
  212. package/dist/actions/retrieve-file-upload.mjs +1 -1
  213. package/dist/actions/retrieve-file-upload.mjs.map +1 -1
  214. package/dist/actions/retrieve-page.cjs +23 -23
  215. package/dist/actions/retrieve-page.cjs.map +1 -1
  216. package/dist/actions/retrieve-page.d.cts +38 -38
  217. package/dist/actions/retrieve-page.d.mts +38 -38
  218. package/dist/actions/retrieve-page.mjs +23 -23
  219. package/dist/actions/retrieve-page.mjs.map +1 -1
  220. package/dist/actions/search-notion-page.cjs +34 -34
  221. package/dist/actions/search-notion-page.cjs.map +1 -1
  222. package/dist/actions/search-notion-page.d.cts +157 -157
  223. package/dist/actions/search-notion-page.d.mts +157 -157
  224. package/dist/actions/search-notion-page.mjs +34 -34
  225. package/dist/actions/search-notion-page.mjs.map +1 -1
  226. package/dist/actions/send-file-upload.cjs +1 -1
  227. package/dist/actions/send-file-upload.cjs.map +1 -1
  228. package/dist/actions/send-file-upload.d.cts +1 -1
  229. package/dist/actions/send-file-upload.d.mts +1 -1
  230. package/dist/actions/send-file-upload.mjs +1 -1
  231. package/dist/actions/send-file-upload.mjs.map +1 -1
  232. package/dist/actions/update-block.cjs +47 -47
  233. package/dist/actions/update-block.cjs.map +1 -1
  234. package/dist/actions/update-block.d.cts +141 -141
  235. package/dist/actions/update-block.d.mts +141 -141
  236. package/dist/actions/update-block.mjs +47 -47
  237. package/dist/actions/update-block.mjs.map +1 -1
  238. package/dist/actions/update-page.cjs +16 -16
  239. package/dist/actions/update-page.cjs.map +1 -1
  240. package/dist/actions/update-page.d.cts +23 -23
  241. package/dist/actions/update-page.d.mts +23 -23
  242. package/dist/actions/update-page.mjs +16 -16
  243. package/dist/actions/update-page.mjs.map +1 -1
  244. package/dist/actions/update-row-database.cjs +21 -21
  245. package/dist/actions/update-row-database.cjs.map +1 -1
  246. package/dist/actions/update-row-database.d.cts +29 -28
  247. package/dist/actions/update-row-database.d.mts +29 -28
  248. package/dist/actions/update-row-database.mjs +21 -21
  249. package/dist/actions/update-row-database.mjs.map +1 -1
  250. package/dist/actions/update-schema-database.cjs +8 -8
  251. package/dist/actions/update-schema-database.cjs.map +1 -1
  252. package/dist/actions/update-schema-database.d.cts +12 -11
  253. package/dist/actions/update-schema-database.d.mts +12 -11
  254. package/dist/actions/update-schema-database.mjs +8 -8
  255. package/dist/actions/update-schema-database.mjs.map +1 -1
  256. package/dist/actions/upsert-row-database.cjs +28 -28
  257. package/dist/actions/upsert-row-database.cjs.map +1 -1
  258. package/dist/actions/upsert-row-database.d.cts +54 -30
  259. package/dist/actions/upsert-row-database.d.mts +54 -30
  260. package/dist/actions/upsert-row-database.mjs +28 -28
  261. package/dist/actions/upsert-row-database.mjs.map +1 -1
  262. package/dist/execute.cjs +1 -1
  263. package/dist/execute.cjs.map +1 -1
  264. package/dist/execute.mjs +1 -1
  265. package/dist/execute.mjs.map +1 -1
  266. package/package.json +1 -1
@@ -35,9 +35,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
35
35
  ]).default("default").describe("Color of the paragraph text or background.").optional(),
36
36
  rich_text: z.array(z.object({
37
37
  text: z.object({
38
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
38
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
39
39
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
40
- }).describe("The text content object."),
40
+ }).passthrough().describe("The text content object."),
41
41
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
42
42
  annotations: z.object({
43
43
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -66,10 +66,10 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
66
66
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
67
67
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
68
68
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
69
- }).describe("Text styling annotations for rich text.").nullable().optional()
70
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects. Each text.content is limited to 2000 chars.")
71
- }).describe("Paragraph content.")
72
- }).describe("A paragraph block object."),
69
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
70
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects. Each text.content is limited to 2000 chars.")
71
+ }).passthrough().describe("Paragraph content.")
72
+ }).passthrough().describe("A paragraph block object."),
73
73
  z.object({
74
74
  type: z.string().default("heading_1").describe("Block type.").optional(),
75
75
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -97,9 +97,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
97
97
  ]).default("default").describe("Color of the heading.").optional(),
98
98
  rich_text: z.array(z.object({
99
99
  text: z.object({
100
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
100
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
101
101
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
102
- }).describe("The text content object."),
102
+ }).passthrough().describe("The text content object."),
103
103
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
104
104
  annotations: z.object({
105
105
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -128,11 +128,11 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
128
128
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
129
129
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
130
130
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
131
- }).describe("Text styling annotations for rich text.").nullable().optional()
132
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the heading text."),
131
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
132
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the heading text."),
133
133
  is_toggleable: z.boolean().default(false).describe("Whether the heading can be toggled to show/hide content.").optional()
134
- }).describe("Heading 1 content.")
135
- }).describe("A heading 1 block object (largest heading)."),
134
+ }).passthrough().describe("Heading 1 content.")
135
+ }).passthrough().describe("A heading 1 block object (largest heading)."),
136
136
  z.object({
137
137
  type: z.string().default("heading_2").describe("Block type.").optional(),
138
138
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -160,9 +160,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
160
160
  ]).default("default").describe("Color of the heading.").optional(),
161
161
  rich_text: z.array(z.object({
162
162
  text: z.object({
163
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
163
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
164
164
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
165
- }).describe("The text content object."),
165
+ }).passthrough().describe("The text content object."),
166
166
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
167
167
  annotations: z.object({
168
168
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -191,11 +191,11 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
191
191
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
192
192
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
193
193
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
194
- }).describe("Text styling annotations for rich text.").nullable().optional()
195
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the heading text."),
194
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
195
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the heading text."),
196
196
  is_toggleable: z.boolean().default(false).describe("Whether the heading can be toggled to show/hide content.").optional()
197
- }).describe("Heading 2 content.")
198
- }).describe("A heading 2 block object (medium heading)."),
197
+ }).passthrough().describe("Heading 2 content.")
198
+ }).passthrough().describe("A heading 2 block object (medium heading)."),
199
199
  z.object({
200
200
  type: z.string().default("heading_3").describe("Block type.").optional(),
201
201
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -223,9 +223,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
223
223
  ]).default("default").describe("Color of the heading.").optional(),
224
224
  rich_text: z.array(z.object({
225
225
  text: z.object({
226
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
226
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
227
227
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
228
- }).describe("The text content object."),
228
+ }).passthrough().describe("The text content object."),
229
229
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
230
230
  annotations: z.object({
231
231
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -254,11 +254,11 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
254
254
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
255
255
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
256
256
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
257
- }).describe("Text styling annotations for rich text.").nullable().optional()
258
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the heading text."),
257
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
258
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the heading text."),
259
259
  is_toggleable: z.boolean().default(false).describe("Whether the heading can be toggled to show/hide content.").optional()
260
- }).describe("Heading 3 content.")
261
- }).describe("A heading 3 block object (smallest heading)."),
260
+ }).passthrough().describe("Heading 3 content.")
261
+ }).passthrough().describe("A heading 3 block object (smallest heading)."),
262
262
  z.object({
263
263
  type: z.string().default("bulleted_list_item").describe("Block type.").optional(),
264
264
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -286,9 +286,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
286
286
  ]).default("default").describe("Color of the list item.").optional(),
287
287
  rich_text: z.array(z.object({
288
288
  text: z.object({
289
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
289
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
290
290
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
291
- }).describe("The text content object."),
291
+ }).passthrough().describe("The text content object."),
292
292
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
293
293
  annotations: z.object({
294
294
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -317,10 +317,10 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
317
317
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
318
318
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
319
319
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
320
- }).describe("Text styling annotations for rich text.").nullable().optional()
321
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the list item text.")
322
- }).describe("Bulleted list item content.")
323
- }).describe("A bulleted list item block object."),
320
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
321
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the list item text.")
322
+ }).passthrough().describe("Bulleted list item content.")
323
+ }).passthrough().describe("A bulleted list item block object."),
324
324
  z.object({
325
325
  type: z.string().default("numbered_list_item").describe("Block type.").optional(),
326
326
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -348,9 +348,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
348
348
  ]).default("default").describe("Color of the list item.").optional(),
349
349
  rich_text: z.array(z.object({
350
350
  text: z.object({
351
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
351
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
352
352
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
353
- }).describe("The text content object."),
353
+ }).passthrough().describe("The text content object."),
354
354
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
355
355
  annotations: z.object({
356
356
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -379,10 +379,10 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
379
379
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
380
380
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
381
381
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
382
- }).describe("Text styling annotations for rich text.").nullable().optional()
383
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the list item text.")
384
- }).describe("Numbered list item content.")
385
- }).describe("A numbered list item block object."),
382
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
383
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the list item text.")
384
+ }).passthrough().describe("Numbered list item content.")
385
+ }).passthrough().describe("A numbered list item block object."),
386
386
  z.object({
387
387
  type: z.string().default("to_do").describe("Block type.").optional(),
388
388
  to_do: z.object({
@@ -410,9 +410,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
410
410
  checked: z.boolean().default(false).describe("Whether the to-do item is checked/completed.").optional(),
411
411
  rich_text: z.array(z.object({
412
412
  text: z.object({
413
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
413
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
414
414
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
415
- }).describe("The text content object."),
415
+ }).passthrough().describe("The text content object."),
416
416
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
417
417
  annotations: z.object({
418
418
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -441,11 +441,11 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
441
441
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
442
442
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
443
443
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
444
- }).describe("Text styling annotations for rich text.").nullable().optional()
445
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the to-do text.")
446
- }).describe("To-do content."),
444
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
445
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the to-do text.")
446
+ }).passthrough().describe("To-do content."),
447
447
  object: z.string().default("block").describe("Always 'block'.").optional()
448
- }).describe("A to-do/checkbox block object."),
448
+ }).passthrough().describe("A to-do/checkbox block object."),
449
449
  z.object({
450
450
  type: z.string().default("toggle").describe("Block type.").optional(),
451
451
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -473,9 +473,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
473
473
  ]).default("default").describe("Color of the toggle.").optional(),
474
474
  rich_text: z.array(z.object({
475
475
  text: z.object({
476
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
476
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
477
477
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
478
- }).describe("The text content object."),
478
+ }).passthrough().describe("The text content object."),
479
479
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
480
480
  annotations: z.object({
481
481
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -504,10 +504,10 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
504
504
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
505
505
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
506
506
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
507
- }).describe("Text styling annotations for rich text.").nullable().optional()
508
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the toggle header text.")
509
- }).describe("Toggle content.")
510
- }).describe("A toggle block object (collapsible content)."),
507
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
508
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the toggle header text.")
509
+ }).passthrough().describe("Toggle content.")
510
+ }).passthrough().describe("A toggle block object (collapsible content)."),
511
511
  z.object({
512
512
  type: z.string().default("callout").describe("Block type.").optional(),
513
513
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -515,7 +515,7 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
515
515
  icon: z.object({
516
516
  type: z.string().default("emoji").describe("Icon type.").optional(),
517
517
  emoji: z.string().describe("Emoji character for the icon.")
518
- }).describe("Emoji icon for callout blocks.").nullable().optional(),
518
+ }).passthrough().describe("Emoji icon for callout blocks.").nullable().optional(),
519
519
  color: z.enum([
520
520
  "default",
521
521
  "gray",
@@ -539,9 +539,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
539
539
  ]).default("default").describe("Background color of the callout.").optional(),
540
540
  rich_text: z.array(z.object({
541
541
  text: z.object({
542
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
542
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
543
543
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
544
- }).describe("The text content object."),
544
+ }).passthrough().describe("The text content object."),
545
545
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
546
546
  annotations: z.object({
547
547
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -570,17 +570,17 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
570
570
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
571
571
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
572
572
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
573
- }).describe("Text styling annotations for rich text.").nullable().optional()
574
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the callout text.")
575
- }).describe("Callout content.")
576
- }).describe("A callout block object (highlighted content with icon)."),
573
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
574
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the callout text.")
575
+ }).passthrough().describe("Callout content.")
576
+ }).passthrough().describe("A callout block object (highlighted content with icon)."),
577
577
  z.object({
578
578
  code: z.object({
579
579
  caption: z.array(z.object({
580
580
  text: z.object({
581
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
581
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
582
582
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
583
- }).describe("The text content object."),
583
+ }).passthrough().describe("The text content object."),
584
584
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
585
585
  annotations: z.object({
586
586
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -609,8 +609,8 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
609
609
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
610
610
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
611
611
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
612
- }).describe("Text styling annotations for rich text.").nullable().optional()
613
- }).describe("Rich text object for creating text content in blocks.")).nullable().optional(),
612
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
613
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).nullable().optional(),
614
614
  language: z.enum([
615
615
  "abap",
616
616
  "arduino",
@@ -687,9 +687,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
687
687
  ]).default("plain text").describe("Programming language for syntax highlighting.").optional(),
688
688
  rich_text: z.array(z.object({
689
689
  text: z.object({
690
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
690
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
691
691
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
692
- }).describe("The text content object."),
692
+ }).passthrough().describe("The text content object."),
693
693
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
694
694
  annotations: z.object({
695
695
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -718,12 +718,12 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
718
718
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
719
719
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
720
720
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
721
- }).describe("Text styling annotations for rich text.").nullable().optional()
722
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects containing the code. Each text.content is limited to 2000 chars.")
723
- }).describe("Code content."),
721
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
722
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects containing the code. Each text.content is limited to 2000 chars.")
723
+ }).passthrough().describe("Code content."),
724
724
  type: z.string().default("code").describe("Block type.").optional(),
725
725
  object: z.string().default("block").describe("Always 'block'.").optional()
726
- }).describe("A code block object with syntax highlighting."),
726
+ }).passthrough().describe("A code block object with syntax highlighting."),
727
727
  z.object({
728
728
  type: z.string().default("quote").describe("Block type.").optional(),
729
729
  quote: z.object({
@@ -750,9 +750,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
750
750
  ]).default("default").describe("Color of the quote.").optional(),
751
751
  rich_text: z.array(z.object({
752
752
  text: z.object({
753
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
753
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
754
754
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
755
- }).describe("The text content object."),
755
+ }).passthrough().describe("The text content object."),
756
756
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
757
757
  annotations: z.object({
758
758
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -781,25 +781,25 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
781
781
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
782
782
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
783
783
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
784
- }).describe("Text styling annotations for rich text.").nullable().optional()
785
- }).describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the quote text.")
786
- }).describe("Quote content."),
784
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
785
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).describe("Array of rich text objects for the quote text.")
786
+ }).passthrough().describe("Quote content."),
787
787
  object: z.string().default("block").describe("Always 'block'.").optional()
788
- }).describe("A quote block object."),
788
+ }).passthrough().describe("A quote block object."),
789
789
  z.object({
790
790
  type: z.string().default("equation").describe("Block type.").optional(),
791
791
  object: z.string().default("block").describe("Always 'block'.").optional(),
792
- equation: z.object({ expression: z.string().describe("LaTeX/KaTeX expression for the equation.") }).describe("Equation content.")
793
- }).describe("An equation block object (LaTeX/KaTeX)."),
792
+ equation: z.object({ expression: z.string().describe("LaTeX/KaTeX expression for the equation.") }).passthrough().describe("Equation content.")
793
+ }).passthrough().describe("An equation block object (LaTeX/KaTeX)."),
794
794
  z.object({
795
795
  type: z.string().default("image").describe("Block type.").optional(),
796
796
  image: z.object({
797
797
  type: z.string().default("external").describe("Image source type. Use 'external' for URLs.").optional(),
798
798
  caption: z.array(z.object({
799
799
  text: z.object({
800
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
800
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
801
801
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
802
- }).describe("The text content object."),
802
+ }).passthrough().describe("The text content object."),
803
803
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
804
804
  annotations: z.object({
805
805
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -828,21 +828,21 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
828
828
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
829
829
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
830
830
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
831
- }).describe("Text styling annotations for rich text.").nullable().optional()
832
- }).describe("Rich text object for creating text content in blocks.")).nullable().optional(),
833
- external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).describe("External image URL.")
834
- }).describe("Image content."),
831
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
832
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).nullable().optional(),
833
+ external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).passthrough().describe("External image URL.")
834
+ }).passthrough().describe("Image content."),
835
835
  object: z.string().default("block").describe("Always 'block'.").optional()
836
- }).describe("An image block object."),
836
+ }).passthrough().describe("An image block object."),
837
837
  z.object({
838
838
  type: z.string().default("video").describe("Block type.").optional(),
839
839
  video: z.object({
840
840
  type: z.string().default("external").describe("Video source type. Use 'external' for URLs.").optional(),
841
841
  caption: z.array(z.object({
842
842
  text: z.object({
843
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
843
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
844
844
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
845
- }).describe("The text content object."),
845
+ }).passthrough().describe("The text content object."),
846
846
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
847
847
  annotations: z.object({
848
848
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -871,21 +871,21 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
871
871
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
872
872
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
873
873
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
874
- }).describe("Text styling annotations for rich text.").nullable().optional()
875
- }).describe("Rich text object for creating text content in blocks.")).nullable().optional(),
876
- external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).describe("External video URL. Supports YouTube, Vimeo, and direct video file URLs.")
877
- }).describe("Video content."),
874
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
875
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).nullable().optional(),
876
+ external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).passthrough().describe("External video URL. Supports YouTube, Vimeo, and direct video file URLs.")
877
+ }).passthrough().describe("Video content."),
878
878
  object: z.string().default("block").describe("Always 'block'.").optional()
879
- }).describe("A video block object."),
879
+ }).passthrough().describe("A video block object."),
880
880
  z.object({
881
881
  type: z.string().default("audio").describe("Block type.").optional(),
882
882
  audio: z.object({
883
883
  type: z.string().default("external").describe("Audio source type. Use 'external' for URLs.").optional(),
884
884
  caption: z.array(z.object({
885
885
  text: z.object({
886
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
886
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
887
887
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
888
- }).describe("The text content object."),
888
+ }).passthrough().describe("The text content object."),
889
889
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
890
890
  annotations: z.object({
891
891
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -914,20 +914,20 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
914
914
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
915
915
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
916
916
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
917
- }).describe("Text styling annotations for rich text.").nullable().optional()
918
- }).describe("Rich text object for creating text content in blocks.")).nullable().optional(),
919
- external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).describe("External audio URL.")
920
- }).describe("Audio content."),
917
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
918
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).nullable().optional(),
919
+ external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).passthrough().describe("External audio URL.")
920
+ }).passthrough().describe("Audio content."),
921
921
  object: z.string().default("block").describe("Always 'block'.").optional()
922
- }).describe("An audio block object."),
922
+ }).passthrough().describe("An audio block object."),
923
923
  z.object({
924
924
  file: z.object({
925
925
  type: z.string().default("external").describe("File source type. Use 'external' for URLs.").optional(),
926
926
  caption: z.array(z.object({
927
927
  text: z.object({
928
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
928
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
929
929
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
930
- }).describe("The text content object."),
930
+ }).passthrough().describe("The text content object."),
931
931
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
932
932
  annotations: z.object({
933
933
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -956,21 +956,21 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
956
956
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
957
957
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
958
958
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
959
- }).describe("Text styling annotations for rich text.").nullable().optional()
960
- }).describe("Rich text object for creating text content in blocks.")).nullable().optional(),
961
- external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).describe("External file URL.")
962
- }).describe("File content."),
959
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
960
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).nullable().optional(),
961
+ external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).passthrough().describe("External file URL.")
962
+ }).passthrough().describe("File content."),
963
963
  type: z.string().default("file").describe("Block type.").optional(),
964
964
  object: z.string().default("block").describe("Always 'block'.").optional()
965
- }).describe("A file block object."),
965
+ }).passthrough().describe("A file block object."),
966
966
  z.object({
967
967
  pdf: z.object({
968
968
  type: z.string().default("external").describe("PDF source type. Use 'external' for URLs.").optional(),
969
969
  caption: z.array(z.object({
970
970
  text: z.object({
971
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
971
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
972
972
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
973
- }).describe("The text content object."),
973
+ }).passthrough().describe("The text content object."),
974
974
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
975
975
  annotations: z.object({
976
976
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -999,18 +999,18 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
999
999
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
1000
1000
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
1001
1001
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
1002
- }).describe("Text styling annotations for rich text.").nullable().optional()
1003
- }).describe("Rich text object for creating text content in blocks.")).nullable().optional(),
1004
- external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).describe("External PDF URL.")
1005
- }).describe("PDF content."),
1002
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
1003
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).nullable().optional(),
1004
+ external: z.object({ url: z.string().describe("URL of the external file, image, or video.") }).passthrough().describe("External PDF URL.")
1005
+ }).passthrough().describe("PDF content."),
1006
1006
  type: z.string().default("pdf").describe("Block type.").optional(),
1007
1007
  object: z.string().default("block").describe("Always 'block'.").optional()
1008
- }).describe("A PDF block object."),
1008
+ }).passthrough().describe("A PDF block object."),
1009
1009
  z.object({
1010
1010
  type: z.string().default("embed").describe("Block type.").optional(),
1011
- embed: z.object({ url: z.string().describe("URL to embed. Supports Twitter, Google Maps, Figma, CodePen, and more.") }).describe("Embed content."),
1011
+ embed: z.object({ url: z.string().describe("URL to embed. Supports Twitter, Google Maps, Figma, CodePen, and more.") }).passthrough().describe("Embed content."),
1012
1012
  object: z.string().default("block").describe("Always 'block'.").optional()
1013
- }).describe("An embed block object (iframe for supported services)."),
1013
+ }).passthrough().describe("An embed block object (iframe for supported services)."),
1014
1014
  z.object({
1015
1015
  type: z.string().default("bookmark").describe("Block type.").optional(),
1016
1016
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -1018,9 +1018,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
1018
1018
  url: z.string().describe("URL of the webpage to bookmark."),
1019
1019
  caption: z.array(z.object({
1020
1020
  text: z.object({
1021
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
1021
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
1022
1022
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
1023
- }).describe("The text content object."),
1023
+ }).passthrough().describe("The text content object."),
1024
1024
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
1025
1025
  annotations: z.object({
1026
1026
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -1049,15 +1049,15 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
1049
1049
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
1050
1050
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
1051
1051
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
1052
- }).describe("Text styling annotations for rich text.").nullable().optional()
1053
- }).describe("Rich text object for creating text content in blocks.")).nullable().optional()
1054
- }).describe("Bookmark content.")
1055
- }).describe("A bookmark block object (link preview)."),
1052
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
1053
+ }).passthrough().describe("Rich text object for creating text content in blocks.")).nullable().optional()
1054
+ }).passthrough().describe("Bookmark content.")
1055
+ }).passthrough().describe("A bookmark block object (link preview)."),
1056
1056
  z.object({
1057
1057
  type: z.string().default("divider").describe("Block type.").optional(),
1058
1058
  object: z.string().default("block").describe("Always 'block'.").optional(),
1059
1059
  divider: z.object({}).describe("Divider content (empty object).").optional()
1060
- }).describe("A divider block object (horizontal line)."),
1060
+ }).passthrough().describe("A divider block object (horizontal line)."),
1061
1061
  z.object({
1062
1062
  type: z.string().default("table_of_contents").describe("Block type.").optional(),
1063
1063
  object: z.string().default("block").describe("Always 'block'.").optional(),
@@ -1081,23 +1081,23 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
1081
1081
  "purple_background",
1082
1082
  "pink_background",
1083
1083
  "red_background"
1084
- ]).default("default").describe("Color of the table of contents.").optional() }).describe("Table of contents content.").optional()
1085
- }).describe("A table of contents block object."),
1084
+ ]).default("default").describe("Color of the table of contents.").optional() }).passthrough().describe("Table of contents content.").optional()
1085
+ }).passthrough().describe("A table of contents block object."),
1086
1086
  z.object({
1087
1087
  type: z.string().default("breadcrumb").describe("Block type.").optional(),
1088
1088
  object: z.string().default("block").describe("Always 'block'.").optional(),
1089
1089
  breadcrumb: z.object({}).describe("Breadcrumb content (empty object - auto-generated).").optional()
1090
- }).describe("A breadcrumb block object."),
1090
+ }).passthrough().describe("A breadcrumb block object."),
1091
1091
  z.object({
1092
1092
  type: z.string().default("column_list").describe("Block type.").optional(),
1093
1093
  object: z.string().default("block").describe("Always 'block'.").optional(),
1094
1094
  column_list: z.object({ children: z.array(z.record(z.string(), z.unknown())).nullable().optional() }).describe("Column list content.").optional()
1095
- }).describe("A column list block object. Children must be column blocks."),
1095
+ }).passthrough().describe("A column list block object. Children must be column blocks."),
1096
1096
  z.object({
1097
1097
  type: z.string().default("column").describe("Block type.").optional(),
1098
1098
  column: z.object({ children: z.array(z.record(z.string(), z.unknown())).nullable().optional() }).describe("Column content.").optional(),
1099
1099
  object: z.string().default("block").describe("Always 'block'.").optional()
1100
- }).describe("A column block object. Must be a child of column_list."),
1100
+ }).passthrough().describe("A column block object. Must be a child of column_list."),
1101
1101
  z.object({
1102
1102
  type: z.string().default("table").describe("Block type.").optional(),
1103
1103
  table: z.object({
@@ -1105,17 +1105,17 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
1105
1105
  table_width: z.number().int().describe("Number of columns in the table. Cannot be changed after creation."),
1106
1106
  has_row_header: z.boolean().default(false).describe("Whether the first column is styled as a header.").optional(),
1107
1107
  has_column_header: z.boolean().default(false).describe("Whether the first row is styled as a header.").optional()
1108
- }).describe("Table content."),
1108
+ }).passthrough().describe("Table content."),
1109
1109
  object: z.string().default("block").describe("Always 'block'.").optional()
1110
- }).describe("A table block object."),
1110
+ }).passthrough().describe("A table block object."),
1111
1111
  z.object({
1112
1112
  type: z.string().default("table_row").describe("Block type.").optional(),
1113
1113
  object: z.string().default("block").describe("Always 'block'.").optional(),
1114
1114
  table_row: z.object({ cells: z.array(z.array(z.object({
1115
1115
  text: z.object({
1116
- link: z.object({ url: z.string().describe("The URL the text links to.") }).describe("Link object for hyperlinked text.").nullable().optional(),
1116
+ link: z.object({ url: z.string().describe("The URL the text links to.") }).passthrough().describe("Link object for hyperlinked text.").nullable().optional(),
1117
1117
  content: z.string().describe("The actual text content. CRITICAL: Maximum 2000 characters per text object.")
1118
- }).describe("The text content object."),
1118
+ }).passthrough().describe("The text content object."),
1119
1119
  type: z.string().default("text").describe("Type of rich text. Currently only 'text' is supported for input.").optional(),
1120
1120
  annotations: z.object({
1121
1121
  bold: z.boolean().default(false).describe("Whether the text is bold.").optional(),
@@ -1144,9 +1144,9 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
1144
1144
  italic: z.boolean().default(false).describe("Whether the text is italic.").optional(),
1145
1145
  underline: z.boolean().default(false).describe("Whether the text is underlined.").optional(),
1146
1146
  strikethrough: z.boolean().default(false).describe("Whether the text has strikethrough.").optional()
1147
- }).describe("Text styling annotations for rich text.").nullable().optional()
1148
- }).describe("Rich text object for creating text content in blocks."))).describe("Array of cells, where each cell is an array of rich text objects. Number of cells must match table_width.") }).describe("Table row content.")
1149
- }).describe("A table_row block object. Must be a child of table.")
1147
+ }).passthrough().describe("Text styling annotations for rich text.").nullable().optional()
1148
+ }).passthrough().describe("Rich text object for creating text content in blocks."))).describe("Array of cells, where each cell is an array of rich text objects. Number of cells must match table_width.") }).passthrough().describe("Table row content.")
1149
+ }).passthrough().describe("A table_row block object. Must be a child of table.")
1150
1150
  ])).describe("Array of block objects to append to the page after clearing existing content. Supported types: paragraph, heading_1/2/3, bulleted_list_item, numbered_list_item, to_do, toggle, callout, code, quote, equation, image, video, audio, file, pdf, embed, bookmark, divider, table_of_contents, breadcrumb, column_list, column, table, table_row. Each block MUST include 'type' field and type-specific content. Text blocks must use 'rich_text' array structure with max 2000 chars per text.content. Will be appended in batches of up to 100 blocks to respect Notion API limits."),
1151
1151
  backup_parent: z.object({
1152
1152
  page_id: z.string().describe("UUID of the parent page for the backup. If both page_id and data_source_id are None, the original page's parent will be used.").optional(),
@@ -1164,7 +1164,7 @@ const notionReplacePageContent = action("NOTION_REPLACE_PAGE_CONTENT", {
1164
1164
  backup_page_id: z.string().describe("UUID of the backup page if create_backup was True.").nullable().optional(),
1165
1165
  appended_block_ids: z.array(z.string()).describe("List of block IDs that were appended. Empty if dry_run was True."),
1166
1166
  deleted_child_block_ids: z.array(z.string()).describe("List of block IDs that were deleted (archived). Empty if archive_existing_children was False or dry_run was True.")
1167
- }).describe("Response model for the replace page content action.")
1167
+ }).passthrough().describe("Response model for the replace page content action.")
1168
1168
  });
1169
1169
  //#endregion
1170
1170
  export { notionReplacePageContent };