@vibesdotdev/integrations-notion 0.0.0-stage → 1.0.0-rc.1

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 (139) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +142 -2
  3. package/dist/client/helper.d.ts +16 -0
  4. package/dist/client/helper.d.ts.map +1 -0
  5. package/dist/client/helper.js +17 -0
  6. package/dist/client/helper.js.map +1 -0
  7. package/dist/client/index.d.ts +3 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +3 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/client/runtime-client.d.ts +89 -0
  12. package/dist/client/runtime-client.d.ts.map +1 -0
  13. package/dist/client/runtime-client.js +130 -0
  14. package/dist/client/runtime-client.js.map +1 -0
  15. package/dist/docs/integrations-notion.docs.descriptor.d.ts +19 -0
  16. package/dist/docs/integrations-notion.docs.descriptor.d.ts.map +1 -0
  17. package/dist/docs/integrations-notion.docs.descriptor.js +62 -0
  18. package/dist/docs/integrations-notion.docs.descriptor.js.map +1 -0
  19. package/dist/index.d.ts +23 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +28 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/integrations-notion.plugin.d.ts +19 -0
  24. package/dist/integrations-notion.plugin.d.ts.map +1 -0
  25. package/dist/integrations-notion.plugin.js +37 -0
  26. package/dist/integrations-notion.plugin.js.map +1 -0
  27. package/dist/notion/index.d.ts +12 -0
  28. package/dist/notion/index.d.ts.map +1 -0
  29. package/dist/notion/index.js +13 -0
  30. package/dist/notion/index.js.map +1 -0
  31. package/dist/notion/notion-client.d.ts +119 -0
  32. package/dist/notion/notion-client.d.ts.map +1 -0
  33. package/dist/notion/notion-client.js +438 -0
  34. package/dist/notion/notion-client.js.map +1 -0
  35. package/dist/notion/notion-implementation.d.ts +72 -0
  36. package/dist/notion/notion-implementation.d.ts.map +1 -0
  37. package/dist/notion/notion-implementation.js +222 -0
  38. package/dist/notion/notion-implementation.js.map +1 -0
  39. package/dist/notion/notion-schemas.d.ts +2 -0
  40. package/dist/notion/notion-schemas.d.ts.map +1 -0
  41. package/dist/notion/notion-schemas.js +2 -0
  42. package/dist/notion/notion-schemas.js.map +1 -0
  43. package/dist/notion/system.integration.notion.descriptor.d.ts +69 -0
  44. package/dist/notion/system.integration.notion.descriptor.d.ts.map +1 -0
  45. package/dist/notion/system.integration.notion.descriptor.js +109 -0
  46. package/dist/notion/system.integration.notion.descriptor.js.map +1 -0
  47. package/dist/notion.catalog.plugin.d.ts +78 -0
  48. package/dist/notion.catalog.plugin.d.ts.map +1 -0
  49. package/dist/notion.catalog.plugin.js +21 -0
  50. package/dist/notion.catalog.plugin.js.map +1 -0
  51. package/dist/notion.client.plugin.d.ts +3 -0
  52. package/dist/notion.client.plugin.d.ts.map +1 -0
  53. package/dist/notion.client.plugin.js +49 -0
  54. package/dist/notion.client.plugin.js.map +1 -0
  55. package/dist/schemas/json.d.ts +6 -0
  56. package/dist/schemas/json.d.ts.map +1 -0
  57. package/dist/schemas/json.js +4 -0
  58. package/dist/schemas/json.js.map +1 -0
  59. package/dist/schemas/notion.d.ts +221 -0
  60. package/dist/schemas/notion.d.ts.map +1 -0
  61. package/dist/schemas/notion.js +130 -0
  62. package/dist/schemas/notion.js.map +1 -0
  63. package/dist/schemas/oauth.d.ts +63 -0
  64. package/dist/schemas/oauth.d.ts.map +1 -0
  65. package/dist/schemas/oauth.js +15 -0
  66. package/dist/schemas/oauth.js.map +1 -0
  67. package/dist/schemas/operations.d.ts +556 -0
  68. package/dist/schemas/operations.d.ts.map +1 -0
  69. package/dist/schemas/operations.js +39 -0
  70. package/dist/schemas/operations.js.map +1 -0
  71. package/dist/schemas/sync.d.ts +32 -0
  72. package/dist/schemas/sync.d.ts.map +1 -0
  73. package/dist/schemas/sync.js +12 -0
  74. package/dist/schemas/sync.js.map +1 -0
  75. package/dist/schemas/tools.d.ts +239 -0
  76. package/dist/schemas/tools.d.ts.map +1 -0
  77. package/dist/schemas/tools.js +93 -0
  78. package/dist/schemas/tools.js.map +1 -0
  79. package/dist/schemas/vendor.d.ts +150 -0
  80. package/dist/schemas/vendor.d.ts.map +1 -0
  81. package/dist/schemas/vendor.js +31 -0
  82. package/dist/schemas/vendor.js.map +1 -0
  83. package/dist/server/oauth.d.ts +17 -0
  84. package/dist/server/oauth.d.ts.map +1 -0
  85. package/dist/server/oauth.js +64 -0
  86. package/dist/server/oauth.js.map +1 -0
  87. package/dist/sync/knowledge.notion.sync-mapping.descriptor.d.ts +15 -0
  88. package/dist/sync/knowledge.notion.sync-mapping.descriptor.d.ts.map +1 -0
  89. package/dist/sync/knowledge.notion.sync-mapping.descriptor.js +15 -0
  90. package/dist/sync/knowledge.notion.sync-mapping.descriptor.js.map +1 -0
  91. package/dist/sync/knowledge.notion.sync-mapping.impl.d.ts +13 -0
  92. package/dist/sync/knowledge.notion.sync-mapping.impl.d.ts.map +1 -0
  93. package/dist/sync/knowledge.notion.sync-mapping.impl.js +27 -0
  94. package/dist/sync/knowledge.notion.sync-mapping.impl.js.map +1 -0
  95. package/dist/sync/notion-record-projection.d.ts +16 -0
  96. package/dist/sync/notion-record-projection.d.ts.map +1 -0
  97. package/dist/sync/notion-record-projection.js +50 -0
  98. package/dist/sync/notion-record-projection.js.map +1 -0
  99. package/dist/sync/notion.sync-endpoint.descriptor.d.ts +14 -0
  100. package/dist/sync/notion.sync-endpoint.descriptor.d.ts.map +1 -0
  101. package/dist/sync/notion.sync-endpoint.descriptor.js +10 -0
  102. package/dist/sync/notion.sync-endpoint.descriptor.js.map +1 -0
  103. package/dist/sync/notion.sync-endpoint.impl.d.ts +55 -0
  104. package/dist/sync/notion.sync-endpoint.impl.d.ts.map +1 -0
  105. package/dist/sync/notion.sync-endpoint.impl.js +557 -0
  106. package/dist/sync/notion.sync-endpoint.impl.js.map +1 -0
  107. package/dist/sync/projects.notion.sync-mapping.descriptor.d.ts +15 -0
  108. package/dist/sync/projects.notion.sync-mapping.descriptor.d.ts.map +1 -0
  109. package/dist/sync/projects.notion.sync-mapping.descriptor.js +15 -0
  110. package/dist/sync/projects.notion.sync-mapping.descriptor.js.map +1 -0
  111. package/dist/sync/projects.notion.sync-mapping.impl.d.ts +13 -0
  112. package/dist/sync/projects.notion.sync-mapping.impl.d.ts.map +1 -0
  113. package/dist/sync/projects.notion.sync-mapping.impl.js +26 -0
  114. package/dist/sync/projects.notion.sync-mapping.impl.js.map +1 -0
  115. package/dist/sync/work.notion.sync-mapping.descriptor.d.ts +15 -0
  116. package/dist/sync/work.notion.sync-mapping.descriptor.d.ts.map +1 -0
  117. package/dist/sync/work.notion.sync-mapping.descriptor.js +15 -0
  118. package/dist/sync/work.notion.sync-mapping.descriptor.js.map +1 -0
  119. package/dist/sync/work.notion.sync-mapping.impl.d.ts +13 -0
  120. package/dist/sync/work.notion.sync-mapping.impl.d.ts.map +1 -0
  121. package/dist/sync/work.notion.sync-mapping.impl.js +63 -0
  122. package/dist/sync/work.notion.sync-mapping.impl.js.map +1 -0
  123. package/dist/tools/descriptors.d.ts +781 -0
  124. package/dist/tools/descriptors.d.ts.map +1 -0
  125. package/dist/tools/descriptors.js +129 -0
  126. package/dist/tools/descriptors.js.map +1 -0
  127. package/dist/tools/impl.d.ts +12 -0
  128. package/dist/tools/impl.d.ts.map +1 -0
  129. package/dist/tools/impl.js +61 -0
  130. package/dist/tools/impl.js.map +1 -0
  131. package/dist/tools/index.d.ts +3 -0
  132. package/dist/tools/index.d.ts.map +1 -0
  133. package/dist/tools/index.js +3 -0
  134. package/dist/tools/index.js.map +1 -0
  135. package/dist/tools/schemas.d.ts +2 -0
  136. package/dist/tools/schemas.d.ts.map +1 -0
  137. package/dist/tools/schemas.js +2 -0
  138. package/dist/tools/schemas.js.map +1 -0
  139. package/package.json +105 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/schemas/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,oBAAoB,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAC,aAAa,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1G,eAAe,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAC,mBAAmB,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3G,iBAAiB,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAC,cAAc,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxG,gBAAgB,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,UAAU,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,CAAC;AAC9I,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC,MAAM,EAAE,EAAC,YAAY,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC"}
@@ -0,0 +1,239 @@
1
+ import * as z from 'zod/v4';
2
+ export declare const NotionSearchToolInputSchema: z.ZodObject<{
3
+ query: z.ZodOptional<z.ZodString>;
4
+ filter: z.ZodOptional<z.ZodEnum<{
5
+ data_source: "data_source";
6
+ page: "page";
7
+ }>>;
8
+ pageSize: z.ZodDefault<z.ZodNumber>;
9
+ startCursor: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strict>;
11
+ export declare const NotionSearchToolOutputSchema: z.ZodObject<{
12
+ dataSources: z.ZodArray<z.ZodObject<{
13
+ id: z.ZodString;
14
+ name: z.ZodString;
15
+ url: z.ZodString;
16
+ properties: z.ZodArray<z.ZodObject<{
17
+ id: z.ZodString;
18
+ name: z.ZodString;
19
+ type: z.ZodString;
20
+ config: z.ZodOptional<z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>;
21
+ }, z.core.$strip>>;
22
+ createdAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
23
+ updatedAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
24
+ parentDatabaseId: z.ZodOptional<z.ZodString>;
25
+ inTrash: z.ZodDefault<z.ZodBoolean>;
26
+ }, z.core.$strip>>;
27
+ pages: z.ZodArray<z.ZodObject<{
28
+ id: z.ZodString;
29
+ url: z.ZodString;
30
+ icon: z.ZodOptional<z.ZodString>;
31
+ cover: z.ZodOptional<z.ZodString>;
32
+ properties: z.ZodRecord<z.ZodString, z.ZodObject<{
33
+ id: z.ZodString;
34
+ type: z.ZodString;
35
+ value: z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>;
36
+ }, z.core.$strip>>;
37
+ createdAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
38
+ updatedAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
39
+ createdBy: z.ZodOptional<z.ZodObject<{
40
+ id: z.ZodString;
41
+ name: z.ZodDefault<z.ZodString>;
42
+ email: z.ZodOptional<z.ZodString>;
43
+ avatarUrl: z.ZodOptional<z.ZodString>;
44
+ type: z.ZodDefault<z.ZodEnum<{
45
+ person: "person";
46
+ bot: "bot";
47
+ }>>;
48
+ }, z.core.$strip>>;
49
+ lastEditedBy: z.ZodOptional<z.ZodObject<{
50
+ id: z.ZodString;
51
+ name: z.ZodDefault<z.ZodString>;
52
+ email: z.ZodOptional<z.ZodString>;
53
+ avatarUrl: z.ZodOptional<z.ZodString>;
54
+ type: z.ZodDefault<z.ZodEnum<{
55
+ person: "person";
56
+ bot: "bot";
57
+ }>>;
58
+ }, z.core.$strip>>;
59
+ parentDataSourceId: z.ZodOptional<z.ZodString>;
60
+ parentDatabaseId: z.ZodOptional<z.ZodString>;
61
+ parentPageId: z.ZodOptional<z.ZodString>;
62
+ inTrash: z.ZodDefault<z.ZodBoolean>;
63
+ archived: z.ZodDefault<z.ZodBoolean>;
64
+ }, z.core.$strip>>;
65
+ hasMore: z.ZodBoolean;
66
+ nextCursor: z.ZodOptional<z.ZodString>;
67
+ }, z.core.$strip>;
68
+ export declare const NotionDataSourcesGetToolInputSchema: z.ZodObject<{
69
+ dataSourceId: z.ZodString;
70
+ }, z.core.$strict>;
71
+ export declare const NotionDataSourcesGetToolOutputSchema: z.ZodObject<{
72
+ dataSource: z.ZodNullable<z.ZodObject<{
73
+ id: z.ZodString;
74
+ name: z.ZodString;
75
+ url: z.ZodString;
76
+ properties: z.ZodArray<z.ZodObject<{
77
+ id: z.ZodString;
78
+ name: z.ZodString;
79
+ type: z.ZodString;
80
+ config: z.ZodOptional<z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>;
81
+ }, z.core.$strip>>;
82
+ createdAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
83
+ updatedAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
84
+ parentDatabaseId: z.ZodOptional<z.ZodString>;
85
+ inTrash: z.ZodDefault<z.ZodBoolean>;
86
+ }, z.core.$strip>>;
87
+ }, z.core.$strip>;
88
+ export declare const NotionDataSourcesQueryToolInputSchema: z.ZodObject<{
89
+ dataSourceId: z.ZodString;
90
+ filter: z.ZodOptional<z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>;
91
+ sorts: z.ZodOptional<z.ZodArray<z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>>;
92
+ pageSize: z.ZodDefault<z.ZodNumber>;
93
+ startCursor: z.ZodOptional<z.ZodString>;
94
+ }, z.core.$strict>;
95
+ export declare const NotionDataSourcesQueryToolOutputSchema: z.ZodObject<{
96
+ pages: z.ZodArray<z.ZodObject<{
97
+ id: z.ZodString;
98
+ url: z.ZodString;
99
+ icon: z.ZodOptional<z.ZodString>;
100
+ cover: z.ZodOptional<z.ZodString>;
101
+ properties: z.ZodRecord<z.ZodString, z.ZodObject<{
102
+ id: z.ZodString;
103
+ type: z.ZodString;
104
+ value: z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>;
105
+ }, z.core.$strip>>;
106
+ createdAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
107
+ updatedAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
108
+ createdBy: z.ZodOptional<z.ZodObject<{
109
+ id: z.ZodString;
110
+ name: z.ZodDefault<z.ZodString>;
111
+ email: z.ZodOptional<z.ZodString>;
112
+ avatarUrl: z.ZodOptional<z.ZodString>;
113
+ type: z.ZodDefault<z.ZodEnum<{
114
+ person: "person";
115
+ bot: "bot";
116
+ }>>;
117
+ }, z.core.$strip>>;
118
+ lastEditedBy: z.ZodOptional<z.ZodObject<{
119
+ id: z.ZodString;
120
+ name: z.ZodDefault<z.ZodString>;
121
+ email: z.ZodOptional<z.ZodString>;
122
+ avatarUrl: z.ZodOptional<z.ZodString>;
123
+ type: z.ZodDefault<z.ZodEnum<{
124
+ person: "person";
125
+ bot: "bot";
126
+ }>>;
127
+ }, z.core.$strip>>;
128
+ parentDataSourceId: z.ZodOptional<z.ZodString>;
129
+ parentDatabaseId: z.ZodOptional<z.ZodString>;
130
+ parentPageId: z.ZodOptional<z.ZodString>;
131
+ inTrash: z.ZodDefault<z.ZodBoolean>;
132
+ archived: z.ZodDefault<z.ZodBoolean>;
133
+ }, z.core.$strip>>;
134
+ hasMore: z.ZodBoolean;
135
+ nextCursor: z.ZodOptional<z.ZodString>;
136
+ }, z.core.$strip>;
137
+ export declare const NotionPagesGetToolInputSchema: z.ZodObject<{
138
+ pageId: z.ZodString;
139
+ }, z.core.$strip>;
140
+ export declare const NotionPageToolOutputSchema: z.ZodObject<{
141
+ page: z.ZodNullable<z.ZodObject<{
142
+ id: z.ZodString;
143
+ url: z.ZodString;
144
+ icon: z.ZodOptional<z.ZodString>;
145
+ cover: z.ZodOptional<z.ZodString>;
146
+ properties: z.ZodRecord<z.ZodString, z.ZodObject<{
147
+ id: z.ZodString;
148
+ type: z.ZodString;
149
+ value: z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>;
150
+ }, z.core.$strip>>;
151
+ createdAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
152
+ updatedAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
153
+ createdBy: z.ZodOptional<z.ZodObject<{
154
+ id: z.ZodString;
155
+ name: z.ZodDefault<z.ZodString>;
156
+ email: z.ZodOptional<z.ZodString>;
157
+ avatarUrl: z.ZodOptional<z.ZodString>;
158
+ type: z.ZodDefault<z.ZodEnum<{
159
+ person: "person";
160
+ bot: "bot";
161
+ }>>;
162
+ }, z.core.$strip>>;
163
+ lastEditedBy: z.ZodOptional<z.ZodObject<{
164
+ id: z.ZodString;
165
+ name: z.ZodDefault<z.ZodString>;
166
+ email: z.ZodOptional<z.ZodString>;
167
+ avatarUrl: z.ZodOptional<z.ZodString>;
168
+ type: z.ZodDefault<z.ZodEnum<{
169
+ person: "person";
170
+ bot: "bot";
171
+ }>>;
172
+ }, z.core.$strip>>;
173
+ parentDataSourceId: z.ZodOptional<z.ZodString>;
174
+ parentDatabaseId: z.ZodOptional<z.ZodString>;
175
+ parentPageId: z.ZodOptional<z.ZodString>;
176
+ inTrash: z.ZodDefault<z.ZodBoolean>;
177
+ archived: z.ZodDefault<z.ZodBoolean>;
178
+ }, z.core.$strip>>;
179
+ }, z.core.$strip>;
180
+ export declare const NotionPagesCreateToolInputSchema: z.ZodObject<{
181
+ parentDataSourceId: z.ZodOptional<z.ZodString>;
182
+ parentPageId: z.ZodOptional<z.ZodString>;
183
+ icon: z.ZodOptional<z.ZodString>;
184
+ properties: z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>;
185
+ children: z.ZodOptional<z.ZodArray<z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>>;
186
+ }, z.core.$strict>;
187
+ export declare const NotionPagesUpdateToolInputSchema: z.ZodObject<{
188
+ pageId: z.ZodString;
189
+ icon: z.ZodOptional<z.ZodString>;
190
+ cover: z.ZodOptional<z.ZodString>;
191
+ properties: z.ZodOptional<z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>;
192
+ }, z.core.$strict>;
193
+ export declare const NotionPageWriteToolOutputSchema: z.ZodObject<{
194
+ page: z.ZodObject<{
195
+ id: z.ZodString;
196
+ url: z.ZodString;
197
+ icon: z.ZodOptional<z.ZodString>;
198
+ cover: z.ZodOptional<z.ZodString>;
199
+ properties: z.ZodRecord<z.ZodString, z.ZodObject<{
200
+ id: z.ZodString;
201
+ type: z.ZodString;
202
+ value: z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>;
203
+ }, z.core.$strip>>;
204
+ createdAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
205
+ updatedAt: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>>;
206
+ createdBy: z.ZodOptional<z.ZodObject<{
207
+ id: z.ZodString;
208
+ name: z.ZodDefault<z.ZodString>;
209
+ email: z.ZodOptional<z.ZodString>;
210
+ avatarUrl: z.ZodOptional<z.ZodString>;
211
+ type: z.ZodDefault<z.ZodEnum<{
212
+ person: "person";
213
+ bot: "bot";
214
+ }>>;
215
+ }, z.core.$strip>>;
216
+ lastEditedBy: z.ZodOptional<z.ZodObject<{
217
+ id: z.ZodString;
218
+ name: z.ZodDefault<z.ZodString>;
219
+ email: z.ZodOptional<z.ZodString>;
220
+ avatarUrl: z.ZodOptional<z.ZodString>;
221
+ type: z.ZodDefault<z.ZodEnum<{
222
+ person: "person";
223
+ bot: "bot";
224
+ }>>;
225
+ }, z.core.$strip>>;
226
+ parentDataSourceId: z.ZodOptional<z.ZodString>;
227
+ parentDatabaseId: z.ZodOptional<z.ZodString>;
228
+ parentPageId: z.ZodOptional<z.ZodString>;
229
+ inTrash: z.ZodDefault<z.ZodBoolean>;
230
+ archived: z.ZodDefault<z.ZodBoolean>;
231
+ }, z.core.$strip>;
232
+ }, z.core.$strip>;
233
+ export type NotionSearchToolInput = z.input<typeof NotionSearchToolInputSchema>;
234
+ export type NotionDataSourcesGetToolInput = z.infer<typeof NotionDataSourcesGetToolInputSchema>;
235
+ export type NotionDataSourcesQueryToolInput = z.input<typeof NotionDataSourcesQueryToolInputSchema>;
236
+ export type NotionPagesGetToolInput = z.infer<typeof NotionPagesGetToolInputSchema>;
237
+ export type NotionPagesCreateToolInput = z.infer<typeof NotionPagesCreateToolInputSchema>;
238
+ export type NotionPagesUpdateToolInput = z.infer<typeof NotionPagesUpdateToolInputSchema>;
239
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/schemas/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AA2B5B,eAAO,MAAM,2BAA2B;;;;;;;;kBAO9B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKvC,CAAC;AAEH,eAAO,MAAM,mCAAmC;;kBAEtC,CAAC;AACX,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;iBAE/C,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;;kBAW/C,CAAC;AAEJ,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIjD,CAAC;AAEH,eAAO,MAAM,6BAA6B;;iBAAyC,CAAC;AACpF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAkD,CAAC;AAE1F,eAAO,MAAM,gCAAgC;;;;;;kBAmB1C,CAAC;AAEJ,eAAO,MAAM,gCAAgC;;;;;kBAiB1C,CAAC;AAEJ,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAuC,CAAC;AAEpF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAChG,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AACpG,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { JsonObjectSchema, JsonValueSchema } from "./json.js";
2
+ import * as z from 'zod/v4';
3
+ import { NotionDataSourceSchema, NotionPageSchema, NotionQueryFilterSchema } from "./notion.js";
4
+ const MAX_QUERY_BYTES = 16_384;
5
+ const MAX_WRITE_BYTES = 65_536;
6
+ const NonEmptyIdSchema = z.string().trim().min(1).max(200);
7
+ const UnknownRecordSchema = JsonObjectSchema;
8
+ const CREDENTIAL_KEY = /^(?:api[_-]?key|access[_-]?token|refresh[_-]?token|client[_-]?secret|password|authorization|cookie|secret)$/i;
9
+ function containsCredentialKey(value, depth = 0) {
10
+ if (depth > 10)
11
+ return true;
12
+ if (Array.isArray(value))
13
+ return value.some(entry => containsCredentialKey(entry, depth + 1));
14
+ const object = JsonObjectSchema.safeParse(value);
15
+ if (!object.success)
16
+ return false;
17
+ return Object.entries(object.data).some(([key, entry]) => CREDENTIAL_KEY.test(key) || containsCredentialKey(entry, depth + 1));
18
+ }
19
+ function safePayload(value, maxBytes) {
20
+ const json = JsonValueSchema.parse(JSON.parse(JSON.stringify(value)));
21
+ return new TextEncoder().encode(JSON.stringify(json)).length <= maxBytes && !containsCredentialKey(json);
22
+ }
23
+ export const NotionSearchToolInputSchema = z
24
+ .object({
25
+ query: z.string().trim().min(1).max(200).optional(),
26
+ filter: z.enum(['data_source', 'page']).optional(),
27
+ pageSize: z.number().int().min(1).max(50).default(20),
28
+ startCursor: z.string().trim().min(1).max(1_000).optional()
29
+ })
30
+ .strict();
31
+ export const NotionSearchToolOutputSchema = z.object({
32
+ dataSources: z.array(NotionDataSourceSchema).max(50),
33
+ pages: z.array(NotionPageSchema).max(50),
34
+ hasMore: z.boolean(),
35
+ nextCursor: z.string().optional()
36
+ });
37
+ export const NotionDataSourcesGetToolInputSchema = z
38
+ .object({ dataSourceId: NonEmptyIdSchema })
39
+ .strict();
40
+ export const NotionDataSourcesGetToolOutputSchema = z.object({
41
+ dataSource: NotionDataSourceSchema.nullable()
42
+ });
43
+ export const NotionDataSourcesQueryToolInputSchema = z
44
+ .object({
45
+ dataSourceId: NonEmptyIdSchema,
46
+ filter: NotionQueryFilterSchema,
47
+ sorts: z.array(UnknownRecordSchema).max(10).optional(),
48
+ pageSize: z.number().int().min(1).max(50).default(20),
49
+ startCursor: z.string().trim().min(1).max(1_000).optional()
50
+ })
51
+ .strict()
52
+ .refine((value) => safePayload({ filter: value.filter, sorts: value.sorts }, MAX_QUERY_BYTES), {
53
+ message: 'Notion query filters are limited to 16 KiB and cannot contain credential fields.'
54
+ });
55
+ export const NotionDataSourcesQueryToolOutputSchema = z.object({
56
+ pages: z.array(NotionPageSchema).max(50),
57
+ hasMore: z.boolean(),
58
+ nextCursor: z.string().optional()
59
+ });
60
+ export const NotionPagesGetToolInputSchema = z.object({ pageId: NonEmptyIdSchema });
61
+ export const NotionPageToolOutputSchema = z.object({ page: NotionPageSchema.nullable() });
62
+ export const NotionPagesCreateToolInputSchema = z
63
+ .object({
64
+ parentDataSourceId: NonEmptyIdSchema.optional(),
65
+ parentPageId: NonEmptyIdSchema.optional(),
66
+ icon: z.string().max(2_000).optional(),
67
+ properties: UnknownRecordSchema.refine((value) => Object.keys(value).length <= 50, {
68
+ message: 'At most 50 properties may be written in one call.'
69
+ }),
70
+ children: z.array(UnknownRecordSchema).max(20).optional()
71
+ })
72
+ .strict()
73
+ .refine((value) => Number(value.parentDataSourceId !== undefined) + Number(value.parentPageId !== undefined) ===
74
+ 1, { message: 'Exactly one parentDataSourceId or parentPageId is required.' })
75
+ .refine((value) => safePayload(value, MAX_WRITE_BYTES), {
76
+ message: 'Notion page writes are limited to 64 KiB and cannot contain credential fields.'
77
+ });
78
+ export const NotionPagesUpdateToolInputSchema = z
79
+ .object({
80
+ pageId: NonEmptyIdSchema,
81
+ icon: z.string().max(2_000).optional(),
82
+ cover: z.string().max(2_000).optional(),
83
+ properties: UnknownRecordSchema.refine((value) => Object.keys(value).length <= 50, {
84
+ message: 'At most 50 properties may be written in one call.'
85
+ }).optional()
86
+ })
87
+ .strict()
88
+ .refine((value) => value.icon !== undefined || value.cover !== undefined || value.properties !== undefined, { message: 'At least one mutable page field is required.' })
89
+ .refine((value) => safePayload(value, MAX_WRITE_BYTES), {
90
+ message: 'Notion page writes are limited to 64 KiB and cannot contain credential fields.'
91
+ });
92
+ export const NotionPageWriteToolOutputSchema = z.object({ page: NotionPageSchema });
93
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/schemas/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import * as z from 'zod/v4';
2
+ export declare const VendorUserSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5
+ type: z.ZodOptional<z.ZodEnum<{
6
+ person: "person";
7
+ bot: "bot";
8
+ }>>;
9
+ person: z.ZodOptional<z.ZodObject<{
10
+ email: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strip>>;
12
+ avatar_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
13
+ }, z.core.$strip>;
14
+ export declare const VendorDatabaseSchema: z.ZodObject<{
15
+ id: z.ZodString;
16
+ url: z.ZodString;
17
+ title: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
18
+ plain_text: z.ZodOptional<z.ZodString>;
19
+ text: z.ZodOptional<z.ZodObject<{
20
+ content: z.ZodString;
21
+ }, z.core.$strip>>;
22
+ }, z.core.$strip>>]>>, z.ZodTransform<string, string | {
23
+ plain_text?: string | undefined;
24
+ text?: {
25
+ content: string;
26
+ } | undefined;
27
+ }[]>>;
28
+ name: z.ZodOptional<z.ZodString>;
29
+ created_time: z.ZodOptional<z.ZodString>;
30
+ last_edited_time: z.ZodOptional<z.ZodString>;
31
+ parent: z.ZodDefault<z.ZodObject<{
32
+ page_id: z.ZodOptional<z.ZodString>;
33
+ database_id: z.ZodOptional<z.ZodString>;
34
+ data_source_id: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strip>>;
36
+ in_trash: z.ZodDefault<z.ZodBoolean>;
37
+ data_sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
38
+ id: z.ZodString;
39
+ name: z.ZodDefault<z.ZodString>;
40
+ }, z.core.$strip>>>;
41
+ workspace_id: z.ZodOptional<z.ZodString>;
42
+ }, z.core.$strip>;
43
+ export declare const VendorDataSourceSchema: z.ZodObject<{
44
+ id: z.ZodString;
45
+ url: z.ZodString;
46
+ title: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
47
+ plain_text: z.ZodOptional<z.ZodString>;
48
+ text: z.ZodOptional<z.ZodObject<{
49
+ content: z.ZodString;
50
+ }, z.core.$strip>>;
51
+ }, z.core.$strip>>]>>, z.ZodTransform<string, string | {
52
+ plain_text?: string | undefined;
53
+ text?: {
54
+ content: string;
55
+ } | undefined;
56
+ }[]>>;
57
+ name: z.ZodOptional<z.ZodString>;
58
+ created_time: z.ZodOptional<z.ZodString>;
59
+ last_edited_time: z.ZodOptional<z.ZodString>;
60
+ parent: z.ZodDefault<z.ZodObject<{
61
+ page_id: z.ZodOptional<z.ZodString>;
62
+ database_id: z.ZodOptional<z.ZodString>;
63
+ data_source_id: z.ZodOptional<z.ZodString>;
64
+ }, z.core.$strip>>;
65
+ in_trash: z.ZodDefault<z.ZodBoolean>;
66
+ properties: z.ZodRecord<z.ZodString, z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>;
67
+ }, z.core.$strip>;
68
+ export declare const VendorPropertySchema: z.ZodObject<{
69
+ id: z.ZodString;
70
+ type: z.ZodString;
71
+ }, z.core.$strip>;
72
+ export declare const VendorPageSchema: z.ZodObject<{
73
+ id: z.ZodString;
74
+ url: z.ZodString;
75
+ title: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
76
+ plain_text: z.ZodOptional<z.ZodString>;
77
+ text: z.ZodOptional<z.ZodObject<{
78
+ content: z.ZodString;
79
+ }, z.core.$strip>>;
80
+ }, z.core.$strip>>]>>, z.ZodTransform<string, string | {
81
+ plain_text?: string | undefined;
82
+ text?: {
83
+ content: string;
84
+ } | undefined;
85
+ }[]>>;
86
+ name: z.ZodOptional<z.ZodString>;
87
+ created_time: z.ZodOptional<z.ZodString>;
88
+ last_edited_time: z.ZodOptional<z.ZodString>;
89
+ parent: z.ZodDefault<z.ZodObject<{
90
+ page_id: z.ZodOptional<z.ZodString>;
91
+ database_id: z.ZodOptional<z.ZodString>;
92
+ data_source_id: z.ZodOptional<z.ZodString>;
93
+ }, z.core.$strip>>;
94
+ in_trash: z.ZodDefault<z.ZodBoolean>;
95
+ properties: z.ZodRecord<z.ZodString, z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>;
96
+ icon: z.ZodOptional<z.ZodNullable<z.ZodObject<{
97
+ emoji: z.ZodOptional<z.ZodString>;
98
+ external: z.ZodOptional<z.ZodObject<{
99
+ url: z.ZodString;
100
+ }, z.core.$strip>>;
101
+ }, z.core.$strip>>>;
102
+ cover: z.ZodOptional<z.ZodNullable<z.ZodObject<{
103
+ emoji: z.ZodOptional<z.ZodString>;
104
+ external: z.ZodOptional<z.ZodObject<{
105
+ url: z.ZodString;
106
+ }, z.core.$strip>>;
107
+ }, z.core.$strip>>>;
108
+ created_by: z.ZodOptional<z.ZodObject<{
109
+ id: z.ZodString;
110
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
111
+ type: z.ZodOptional<z.ZodEnum<{
112
+ person: "person";
113
+ bot: "bot";
114
+ }>>;
115
+ person: z.ZodOptional<z.ZodObject<{
116
+ email: z.ZodOptional<z.ZodString>;
117
+ }, z.core.$strip>>;
118
+ avatar_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
119
+ }, z.core.$strip>>;
120
+ last_edited_by: z.ZodOptional<z.ZodObject<{
121
+ id: z.ZodString;
122
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
123
+ type: z.ZodOptional<z.ZodEnum<{
124
+ person: "person";
125
+ bot: "bot";
126
+ }>>;
127
+ person: z.ZodOptional<z.ZodObject<{
128
+ email: z.ZodOptional<z.ZodString>;
129
+ }, z.core.$strip>>;
130
+ avatar_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
131
+ }, z.core.$strip>>;
132
+ archived: z.ZodOptional<z.ZodBoolean>;
133
+ }, z.core.$strip>;
134
+ export declare const VendorBlockSchema: z.ZodObject<{
135
+ id: z.ZodString;
136
+ type: z.ZodString;
137
+ has_children: z.ZodDefault<z.ZodBoolean>;
138
+ }, z.core.$catchall<z.ZodUnion<[z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>, z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>]>>>;
139
+ export declare const VendorListSchema: z.ZodObject<{
140
+ results: z.ZodArray<z.ZodType<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/schemas/json").JsonObject, import("@vibesdotdev/kernel/schemas/json").JsonObject>>>;
141
+ has_more: z.ZodBoolean;
142
+ next_cursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
143
+ }, z.core.$strip>;
144
+ export declare const VendorObjectSchema: z.ZodObject<{
145
+ object: z.ZodEnum<{
146
+ data_source: "data_source";
147
+ page: "page";
148
+ }>;
149
+ }, z.core.$strip>;
150
+ //# sourceMappingURL=vendor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.d.ts","sourceRoot":"","sources":["../../src/schemas/vendor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAS5B,eAAO,MAAM,gBAAgB;;;;;;;;;;;iBAAoM,CAAC;AAMlO,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG/B,CAAC;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;iBAEjC,CAAC;AACH,eAAO,MAAM,oBAAoB;;;iBAAyD,CAAC;AAC3F,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI3B,CAAC;AACH,eAAO,MAAM,iBAAiB;;;;ohBAAiJ,CAAC;AAChL,eAAO,MAAM,gBAAgB;;;;iBAAsG,CAAC;AACpI,eAAO,MAAM,kBAAkB;;;;;iBAAoD,CAAC"}
@@ -0,0 +1,31 @@
1
+ import * as z from 'zod/v4';
2
+ import { JsonObjectSchema } from "./json.js";
3
+ import { NotionDatabasePropertySchema } from "./notion.js";
4
+ import { JsonValueSchema } from '@vibesdotdev/kernel/schemas/json';
5
+ const TextSchema = z.object({ plain_text: z.string().optional(), text: z.object({ content: z.string() }).optional() });
6
+ const TitleSchema = z.union([z.string(), z.array(TextSchema)]).default([]).transform(value => Array.isArray(value) ? value.map(part => part.plain_text ?? part.text?.content ?? '').join('') : value);
7
+ const ParentSchema = z.object({ page_id: z.string().optional(), database_id: z.string().optional(), data_source_id: z.string().optional() }).default({});
8
+ const IconSchema = z.object({ emoji: z.string().optional(), external: z.object({ url: z.string() }).optional() }).nullable().optional();
9
+ export const VendorUserSchema = z.object({ id: z.string().min(1), name: z.string().nullish(), type: z.enum(['person', 'bot']).optional(), person: z.object({ email: z.string().optional() }).optional(), avatar_url: z.string().nullish() });
10
+ const CommonSchema = z.object({
11
+ id: z.string().min(1), url: z.string().url(), title: TitleSchema, name: z.string().optional(),
12
+ created_time: z.string().optional(), last_edited_time: z.string().optional(),
13
+ parent: ParentSchema, in_trash: z.boolean().default(false)
14
+ });
15
+ export const VendorDatabaseSchema = CommonSchema.extend({
16
+ data_sources: z.array(z.object({ id: z.string().min(1), name: z.string().default('') })).default([]),
17
+ workspace_id: z.string().optional()
18
+ });
19
+ export const VendorDataSourceSchema = CommonSchema.extend({
20
+ properties: z.record(z.string(), JsonObjectSchema)
21
+ });
22
+ export const VendorPropertySchema = NotionDatabasePropertySchema.pick({ id: true, type: true });
23
+ export const VendorPageSchema = CommonSchema.extend({
24
+ properties: z.record(z.string(), JsonObjectSchema), icon: IconSchema, cover: IconSchema,
25
+ created_by: VendorUserSchema.optional(), last_edited_by: VendorUserSchema.optional(),
26
+ archived: z.boolean().optional()
27
+ });
28
+ export const VendorBlockSchema = z.object({ id: z.string().min(1), type: z.string().min(1), has_children: z.boolean().default(false) }).catchall(JsonObjectSchema.or(JsonValueSchema));
29
+ export const VendorListSchema = z.object({ results: z.array(JsonObjectSchema), has_more: z.boolean(), next_cursor: z.string().nullish() });
30
+ export const VendorObjectSchema = z.object({ object: z.enum(['page', 'data_source']) });
31
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../src/schemas/vendor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpH,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpJ,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAC,CAAC,CAAC,MAAM,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;AACjI,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAC,CAAC,CAAC,MAAM,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC;AAClO,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzF,YAAY,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1E,MAAM,EAAC,YAAY,EAAE,QAAQ,EAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACxD,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAAC;IACvD,YAAY,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9F,YAAY,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC,MAAM,CAAC;IACzD,UAAU,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC;CACjD,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,4BAA4B,CAAC,IAAI,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC;IACnD,UAAU,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAC,UAAU,EAAE,KAAK,EAAC,UAAU;IACpF,UAAU,EAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAC,gBAAgB,CAAC,QAAQ,EAAE;IAClF,QAAQ,EAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,YAAY,EAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAChL,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,EAAE,EAAC,WAAW,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC;AACpI,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,aAAa,CAAC,CAAC,EAAC,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type OAuthSecretService, type OAuthSecretServiceContext, type NotionTokenResponse, type NotionOAuthClient } from '../schemas/oauth.ts';
2
+ export type { OAuthSecretMetadataValue, OAuthSecretService, OAuthSecretServiceContext, NotionTokenResponse, NotionOAuthClient } from '../schemas/oauth.ts';
3
+ export declare function exchangeNotionCodeForTokens(params: NotionOAuthClient & {
4
+ code: string;
5
+ redirectUri: string;
6
+ }): Promise<NotionTokenResponse>;
7
+ export declare function refreshNotionTokens(params: NotionOAuthClient & {
8
+ refreshToken: string;
9
+ }): Promise<NotionTokenResponse>;
10
+ /** Replace through the secret owner's update operation; absent refresh tokens preserve the old token. */
11
+ export declare function storeNotionTokens(params: {
12
+ service: OAuthSecretService;
13
+ context: OAuthSecretServiceContext;
14
+ scopeId: string;
15
+ tokens: NotionTokenResponse;
16
+ }): Promise<void>;
17
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/server/oauth.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwI,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtR,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAoB3J,wBAAgB,2BAA2B,CAAC,MAAM,EAAC,iBAAiB,GAAG;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAA;CAAC,GAAE,OAAO,CAAC,mBAAmB,CAAC,CAEpI;AACD,wBAAgB,mBAAmB,CAAC,MAAM,EAAC,iBAAiB,GAAG;IAAC,YAAY,EAAC,MAAM,CAAA;CAAC,GAAE,OAAO,CAAC,mBAAmB,CAAC,CAEjH;AAED,yGAAyG;AACzG,wBAAsB,iBAAiB,CAAC,MAAM,EAAC;IAAC,OAAO,EAAC,kBAAkB,CAAC;IAAA,OAAO,EAAC,yBAAyB,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,mBAAmB,CAAA;CAAC,GAAE,OAAO,CAAC,IAAI,CAAC,CAoBrK"}
@@ -0,0 +1,64 @@
1
+ import { CaughtFailureSchema, valueFreeFailure } from '@vibesdotdev/kernel';
2
+ import { CapabilityError } from '@vibesdotdev/kernel';
3
+ import * as z from 'zod/v4';
4
+ import { contract } from "../schemas/operations.js";
5
+ import { OAuthSecretRecordsSchema, NotionOAuthClientSchema, NotionTokenResponseSchema, OAuthSecretServiceContextSchema } from "../schemas/oauth.js";
6
+ async function requestNotionTokens(client, body) {
7
+ const credentials = contract(NotionOAuthClientSchema).parse(client);
8
+ let response;
9
+ try {
10
+ response = await fetch('https://api.notion.com/v1/oauth/token', {
11
+ method: 'POST',
12
+ headers: { Authorization: `Basic ${btoa(`${credentials.clientId}:${credentials.clientSecret}`)}`, 'Content-Type': 'application/json', Accept: 'application/json', 'Notion-Version': '2026-03-11' },
13
+ body: JSON.stringify(body)
14
+ });
15
+ }
16
+ catch (cause) {
17
+ throw new CapabilityError('Notion token transport failed.', 'INTERNAL', { reason: 'notion-oauth-transport-failed', cause: valueFreeFailure(CaughtFailureSchema.parse(cause)) });
18
+ }
19
+ if (!response.ok)
20
+ throw new CapabilityError('Notion token request failed.', 'PERMISSION_DENIED', { reason: 'notion-oauth-rejected', details: { status: response.status } });
21
+ let data;
22
+ try {
23
+ data = await response.json();
24
+ }
25
+ catch (cause) {
26
+ throw new CapabilityError('Notion token response is malformed.', 'INTERNAL', { reason: 'notion-oauth-response-invalid', cause: valueFreeFailure(CaughtFailureSchema.parse(cause)) });
27
+ }
28
+ return contract(NotionTokenResponseSchema).parse(data);
29
+ }
30
+ export function exchangeNotionCodeForTokens(params) {
31
+ return requestNotionTokens(params, { grant_type: 'authorization_code', code: contract(z.string().min(1)).parse(params.code), redirect_uri: contract(z.string().url()).parse(params.redirectUri) });
32
+ }
33
+ export function refreshNotionTokens(params) {
34
+ return requestNotionTokens(params, { grant_type: 'refresh_token', refresh_token: contract(z.string().min(1)).parse(params.refreshToken) });
35
+ }
36
+ /** Replace through the secret owner's update operation; absent refresh tokens preserve the old token. */
37
+ export async function storeNotionTokens(params) {
38
+ const tokens = contract(NotionTokenResponseSchema).parse(params.tokens);
39
+ const context = contract(OAuthSecretServiceContextSchema).parse(params.context);
40
+ const scopeId = contract(z.string().min(1)).parse(params.scopeId);
41
+ const metadata = { integration: 'notion', workspaceId: tokens.workspace_id, workspaceName: tokens.workspace_name ?? null, workspaceIcon: tokens.workspace_icon ?? null, botId: tokens.bot_id, duplicatedTemplateId: tokens.duplicated_template_id ?? null };
42
+ try {
43
+ const existing = contract(OAuthSecretRecordsSchema).parse(await params.service.list({ scope: 'org', scopeId, providerType: 'notion' }, context));
44
+ const writes = [{ name: 'accessToken', scope: 'org', scopeId, providerType: 'notion', value: tokens.access_token, metadata: { ...metadata, tokenType: 'access', expiresAt: null } }];
45
+ if (tokens.refresh_token)
46
+ writes.unshift({ name: 'refreshToken', scope: 'org', scopeId, providerType: 'notion', value: tokens.refresh_token, metadata: { ...metadata, tokenType: 'refresh', expiresAt: null } });
47
+ for (const input of writes) {
48
+ const matches = existing.filter(secret => secret.name === input.name);
49
+ if (matches.length > 1)
50
+ throw new CapabilityError('Notion token storage is ambiguous.', 'CONFLICT', { reason: 'notion-oauth-storage-ambiguous' });
51
+ const previous = matches[0];
52
+ if (previous)
53
+ await params.service.update(previous.id, { value: input.value, metadata: input.metadata }, context);
54
+ else
55
+ await params.service.create(input, context);
56
+ }
57
+ }
58
+ catch (cause) {
59
+ if (cause instanceof CapabilityError)
60
+ throw cause;
61
+ throw new CapabilityError('Notion token persistence failed.', 'INTERNAL', { reason: 'notion-oauth-storage-failed', cause: valueFreeFailure(CaughtFailureSchema.parse(cause)) });
62
+ }
63
+ }
64
+ //# sourceMappingURL=oauth.js.map