@revealui/contracts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +160 -0
  3. package/dist/a2a/index.d.ts +383 -0
  4. package/dist/a2a/index.d.ts.map +1 -0
  5. package/dist/a2a/index.js +276 -0
  6. package/dist/a2a/index.js.map +1 -0
  7. package/dist/actions/action-validator.d.ts +48 -0
  8. package/dist/actions/action-validator.d.ts.map +1 -0
  9. package/dist/actions/action-validator.js +288 -0
  10. package/dist/actions/action-validator.js.map +1 -0
  11. package/dist/actions/index.d.ts +7 -0
  12. package/dist/actions/index.d.ts.map +1 -0
  13. package/dist/actions/index.js +7 -0
  14. package/dist/actions/index.js.map +1 -0
  15. package/dist/agents/index.d.ts +628 -0
  16. package/dist/agents/index.d.ts.map +1 -0
  17. package/dist/agents/index.js +511 -0
  18. package/dist/agents/index.js.map +1 -0
  19. package/dist/agents/types.d.ts +22 -0
  20. package/dist/agents/types.d.ts.map +1 -0
  21. package/dist/agents/types.js +2 -0
  22. package/dist/agents/types.js.map +1 -0
  23. package/dist/api/auth.d.ts +60 -0
  24. package/dist/api/auth.d.ts.map +1 -0
  25. package/dist/api/auth.js +84 -0
  26. package/dist/api/auth.js.map +1 -0
  27. package/dist/api/chat.d.ts +45 -0
  28. package/dist/api/chat.d.ts.map +1 -0
  29. package/dist/api/chat.js +55 -0
  30. package/dist/api/chat.js.map +1 -0
  31. package/dist/api/gdpr.d.ts +39 -0
  32. package/dist/api/gdpr.d.ts.map +1 -0
  33. package/dist/api/gdpr.js +53 -0
  34. package/dist/api/gdpr.js.map +1 -0
  35. package/dist/cms/collection.d.ts +108 -0
  36. package/dist/cms/collection.d.ts.map +1 -0
  37. package/dist/cms/collection.js +144 -0
  38. package/dist/cms/collection.js.map +1 -0
  39. package/dist/cms/compat.d.ts +128 -0
  40. package/dist/cms/compat.d.ts.map +1 -0
  41. package/dist/cms/compat.js +141 -0
  42. package/dist/cms/compat.js.map +1 -0
  43. package/dist/cms/config-contract.d.ts +278 -0
  44. package/dist/cms/config-contract.d.ts.map +1 -0
  45. package/dist/cms/config-contract.js +220 -0
  46. package/dist/cms/config-contract.js.map +1 -0
  47. package/dist/cms/config.d.ts +351 -0
  48. package/dist/cms/config.d.ts.map +1 -0
  49. package/dist/cms/config.js +50 -0
  50. package/dist/cms/config.js.map +1 -0
  51. package/dist/cms/errors.d.ts +122 -0
  52. package/dist/cms/errors.d.ts.map +1 -0
  53. package/dist/cms/errors.js +163 -0
  54. package/dist/cms/errors.js.map +1 -0
  55. package/dist/cms/extensibility.d.ts +211 -0
  56. package/dist/cms/extensibility.d.ts.map +1 -0
  57. package/dist/cms/extensibility.js +313 -0
  58. package/dist/cms/extensibility.js.map +1 -0
  59. package/dist/cms/field.d.ts +69 -0
  60. package/dist/cms/field.d.ts.map +1 -0
  61. package/dist/cms/field.js +94 -0
  62. package/dist/cms/field.js.map +1 -0
  63. package/dist/cms/functions.d.ts +466 -0
  64. package/dist/cms/functions.d.ts.map +1 -0
  65. package/dist/cms/functions.js +19 -0
  66. package/dist/cms/functions.js.map +1 -0
  67. package/dist/cms/global.d.ts +45 -0
  68. package/dist/cms/global.d.ts.map +1 -0
  69. package/dist/cms/global.js +62 -0
  70. package/dist/cms/global.js.map +1 -0
  71. package/dist/cms/index.d.ts +23 -0
  72. package/dist/cms/index.d.ts.map +1 -0
  73. package/dist/cms/index.js +42 -0
  74. package/dist/cms/index.js.map +1 -0
  75. package/dist/cms/structure.d.ts +1601 -0
  76. package/dist/cms/structure.d.ts.map +1 -0
  77. package/dist/cms/structure.js +757 -0
  78. package/dist/cms/structure.js.map +1 -0
  79. package/dist/content/index.d.ts +1542 -0
  80. package/dist/content/index.d.ts.map +1 -0
  81. package/dist/content/index.js +522 -0
  82. package/dist/content/index.js.map +1 -0
  83. package/dist/database/bridge.d.ts +177 -0
  84. package/dist/database/bridge.d.ts.map +1 -0
  85. package/dist/database/bridge.js +139 -0
  86. package/dist/database/bridge.js.map +1 -0
  87. package/dist/database/index.d.ts +8 -0
  88. package/dist/database/index.d.ts.map +1 -0
  89. package/dist/database/index.js +9 -0
  90. package/dist/database/index.js.map +1 -0
  91. package/dist/database/type-bridge.d.ts +178 -0
  92. package/dist/database/type-bridge.d.ts.map +1 -0
  93. package/dist/database/type-bridge.js +154 -0
  94. package/dist/database/type-bridge.js.map +1 -0
  95. package/dist/entities/agent-context.d.ts +280 -0
  96. package/dist/entities/agent-context.d.ts.map +1 -0
  97. package/dist/entities/agent-context.js +390 -0
  98. package/dist/entities/agent-context.js.map +1 -0
  99. package/dist/entities/agent-memory.d.ts +661 -0
  100. package/dist/entities/agent-memory.d.ts.map +1 -0
  101. package/dist/entities/agent-memory.js +544 -0
  102. package/dist/entities/agent-memory.js.map +1 -0
  103. package/dist/entities/board.d.ts +95 -0
  104. package/dist/entities/board.d.ts.map +1 -0
  105. package/dist/entities/board.js +99 -0
  106. package/dist/entities/board.js.map +1 -0
  107. package/dist/entities/code-provenance.d.ts +270 -0
  108. package/dist/entities/code-provenance.d.ts.map +1 -0
  109. package/dist/entities/code-provenance.js +339 -0
  110. package/dist/entities/code-provenance.js.map +1 -0
  111. package/dist/entities/index.d.ts +22 -0
  112. package/dist/entities/index.d.ts.map +1 -0
  113. package/dist/entities/index.js +22 -0
  114. package/dist/entities/index.js.map +1 -0
  115. package/dist/entities/media.d.ts +485 -0
  116. package/dist/entities/media.d.ts.map +1 -0
  117. package/dist/entities/media.js +606 -0
  118. package/dist/entities/media.js.map +1 -0
  119. package/dist/entities/page-revision.d.ts +390 -0
  120. package/dist/entities/page-revision.d.ts.map +1 -0
  121. package/dist/entities/page-revision.js +406 -0
  122. package/dist/entities/page-revision.js.map +1 -0
  123. package/dist/entities/page.d.ts +2349 -0
  124. package/dist/entities/page.d.ts.map +1 -0
  125. package/dist/entities/page.js +377 -0
  126. package/dist/entities/page.js.map +1 -0
  127. package/dist/entities/post.d.ts +619 -0
  128. package/dist/entities/post.d.ts.map +1 -0
  129. package/dist/entities/post.js +555 -0
  130. package/dist/entities/post.js.map +1 -0
  131. package/dist/entities/price.d.ts +772 -0
  132. package/dist/entities/price.d.ts.map +1 -0
  133. package/dist/entities/price.js +308 -0
  134. package/dist/entities/price.js.map +1 -0
  135. package/dist/entities/product.d.ts +753 -0
  136. package/dist/entities/product.d.ts.map +1 -0
  137. package/dist/entities/product.js +307 -0
  138. package/dist/entities/product.js.map +1 -0
  139. package/dist/entities/session.d.ts +222 -0
  140. package/dist/entities/session.d.ts.map +1 -0
  141. package/dist/entities/session.js +253 -0
  142. package/dist/entities/session.js.map +1 -0
  143. package/dist/entities/site.d.ts +387 -0
  144. package/dist/entities/site.d.ts.map +1 -0
  145. package/dist/entities/site.js +348 -0
  146. package/dist/entities/site.js.map +1 -0
  147. package/dist/entities/ticket-comment.d.ts +49 -0
  148. package/dist/entities/ticket-comment.d.ts.map +1 -0
  149. package/dist/entities/ticket-comment.js +58 -0
  150. package/dist/entities/ticket-comment.js.map +1 -0
  151. package/dist/entities/ticket-label.d.ts +64 -0
  152. package/dist/entities/ticket-label.d.ts.map +1 -0
  153. package/dist/entities/ticket-label.js +77 -0
  154. package/dist/entities/ticket-label.js.map +1 -0
  155. package/dist/entities/ticket.d.ts +204 -0
  156. package/dist/entities/ticket.d.ts.map +1 -0
  157. package/dist/entities/ticket.js +205 -0
  158. package/dist/entities/ticket.js.map +1 -0
  159. package/dist/entities/user.d.ts +336 -0
  160. package/dist/entities/user.d.ts.map +1 -0
  161. package/dist/entities/user.js +255 -0
  162. package/dist/entities/user.js.map +1 -0
  163. package/dist/foundation/contract.d.ts +221 -0
  164. package/dist/foundation/contract.d.ts.map +1 -0
  165. package/dist/foundation/contract.js +133 -0
  166. package/dist/foundation/contract.js.map +1 -0
  167. package/dist/foundation/index.d.ts +7 -0
  168. package/dist/foundation/index.d.ts.map +1 -0
  169. package/dist/foundation/index.js +7 -0
  170. package/dist/foundation/index.js.map +1 -0
  171. package/dist/generated/contracts.d.ts +1514 -0
  172. package/dist/generated/contracts.d.ts.map +1 -0
  173. package/dist/generated/contracts.js +959 -0
  174. package/dist/generated/contracts.js.map +1 -0
  175. package/dist/generated/database.d.ts +48 -0
  176. package/dist/generated/database.d.ts.map +1 -0
  177. package/dist/generated/database.js +17 -0
  178. package/dist/generated/database.js.map +1 -0
  179. package/dist/generated/zod-schemas.d.ts +14793 -0
  180. package/dist/generated/zod-schemas.d.ts.map +1 -0
  181. package/dist/generated/zod-schemas.js +547 -0
  182. package/dist/generated/zod-schemas.js.map +1 -0
  183. package/dist/index.d.ts +50 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +81 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/representation/index.d.ts +304 -0
  188. package/dist/representation/index.d.ts.map +1 -0
  189. package/dist/representation/index.js +280 -0
  190. package/dist/representation/index.js.map +1 -0
  191. package/package.json +117 -0
@@ -0,0 +1,336 @@
1
+ /**
2
+ * User Schema
3
+ *
4
+ * Users can be humans or agents. Both are first-class citizens in RevealUI.
5
+ * Humans interact through visual interfaces; agents through structured APIs.
6
+ * Both operate on the same underlying data with full audit trails.
7
+ *
8
+ * This schema extends the auto-generated UsersSelectSchema from the database
9
+ * and adds dual representation (human + agent views) and computed fields.
10
+ */
11
+ import { z } from 'zod/v4';
12
+ export declare const USER_SCHEMA_VERSION = 1;
13
+ export declare const UserTypeSchema: z.ZodEnum<{
14
+ human: "human";
15
+ agent: "agent";
16
+ system: "system";
17
+ }>;
18
+ export type UserType = z.infer<typeof UserTypeSchema>;
19
+ export declare const UserRoleSchema: z.ZodEnum<{
20
+ agent: "agent";
21
+ admin: "admin";
22
+ editor: "editor";
23
+ viewer: "viewer";
24
+ owner: "owner";
25
+ contributor: "contributor";
26
+ }>;
27
+ export type UserRole = z.infer<typeof UserRoleSchema>;
28
+ export declare const UserStatusSchema: z.ZodEnum<{
29
+ active: "active";
30
+ suspended: "suspended";
31
+ deleted: "deleted";
32
+ pending: "pending";
33
+ }>;
34
+ export type UserStatus = z.infer<typeof UserStatusSchema>;
35
+ export declare const UserPreferencesSchema: z.ZodObject<{
36
+ theme: z.ZodDefault<z.ZodEnum<{
37
+ light: "light";
38
+ dark: "dark";
39
+ system: "system";
40
+ }>>;
41
+ language: z.ZodDefault<z.ZodString>;
42
+ timezone: z.ZodDefault<z.ZodString>;
43
+ notifications: z.ZodOptional<z.ZodObject<{
44
+ email: z.ZodDefault<z.ZodBoolean>;
45
+ push: z.ZodDefault<z.ZodBoolean>;
46
+ inApp: z.ZodDefault<z.ZodBoolean>;
47
+ }, z.core.$strip>>;
48
+ editor: z.ZodOptional<z.ZodObject<{
49
+ fontSize: z.ZodDefault<z.ZodNumber>;
50
+ tabSize: z.ZodDefault<z.ZodNumber>;
51
+ wordWrap: z.ZodDefault<z.ZodBoolean>;
52
+ autoSave: z.ZodDefault<z.ZodBoolean>;
53
+ autoSaveIntervalMs: z.ZodDefault<z.ZodNumber>;
54
+ }, z.core.$strip>>;
55
+ ai: z.ZodOptional<z.ZodObject<{
56
+ enabled: z.ZodDefault<z.ZodBoolean>;
57
+ autoSuggest: z.ZodDefault<z.ZodBoolean>;
58
+ voiceEnabled: z.ZodDefault<z.ZodBoolean>;
59
+ }, z.core.$strip>>;
60
+ }, z.core.$strip>;
61
+ export type UserPreferences = z.infer<typeof UserPreferencesSchema>;
62
+ /**
63
+ * User schema with dual representation and computed fields.
64
+ *
65
+ * NOTE: The auto-generated UsersSelectSchema from packages/db is available
66
+ * and can be used to extend this schema in the future for tighter integration.
67
+ * For now, we maintain the existing schema structure for backward compatibility.
68
+ *
69
+ * Future refactoring: Extend UsersSelectSchema.merge(DualEntitySchema)
70
+ */
71
+ export declare const UserSchema: z.ZodObject<{
72
+ id: z.ZodString;
73
+ version: z.ZodDefault<z.ZodNumber>;
74
+ human: z.ZodOptional<z.ZodObject<{
75
+ label: z.ZodString;
76
+ description: z.ZodOptional<z.ZodString>;
77
+ icon: z.ZodOptional<z.ZodString>;
78
+ color: z.ZodOptional<z.ZodString>;
79
+ preview: z.ZodOptional<z.ZodString>;
80
+ suggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
81
+ helpText: z.ZodOptional<z.ZodString>;
82
+ }, z.core.$strip>>;
83
+ agent: z.ZodOptional<z.ZodObject<{
84
+ semanticType: z.ZodString;
85
+ embedding: z.ZodOptional<z.ZodObject<{
86
+ model: z.ZodString;
87
+ vector: z.ZodArray<z.ZodNumber>;
88
+ dimension: z.ZodNumber;
89
+ generatedAt: z.ZodString;
90
+ }, z.core.$strip>>;
91
+ constraints: z.ZodOptional<z.ZodArray<z.ZodObject<{
92
+ type: z.ZodEnum<{
93
+ custom: "custom";
94
+ readonly: "readonly";
95
+ pattern: "pattern";
96
+ required: "required";
97
+ immutable: "immutable";
98
+ range: "range";
99
+ dependency: "dependency";
100
+ capability: "capability";
101
+ permission: "permission";
102
+ }>;
103
+ field: z.ZodOptional<z.ZodString>;
104
+ params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
105
+ message: z.ZodOptional<z.ZodString>;
106
+ }, z.core.$strip>>>;
107
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
108
+ name: z.ZodString;
109
+ description: z.ZodString;
110
+ params: z.ZodRecord<z.ZodString, z.ZodObject<{
111
+ type: z.ZodString;
112
+ required: z.ZodOptional<z.ZodBoolean>;
113
+ description: z.ZodOptional<z.ZodString>;
114
+ default: z.ZodOptional<z.ZodUnknown>;
115
+ enum: z.ZodOptional<z.ZodArray<z.ZodString>>;
116
+ }, z.core.$strip>>;
117
+ returns: z.ZodOptional<z.ZodObject<{
118
+ type: z.ZodString;
119
+ description: z.ZodOptional<z.ZodString>;
120
+ }, z.core.$strip>>;
121
+ requiredCapabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
122
+ sideEffects: z.ZodOptional<z.ZodArray<z.ZodString>>;
123
+ destructive: z.ZodOptional<z.ZodBoolean>;
124
+ }, z.core.$strip>>>;
125
+ relations: z.ZodOptional<z.ZodArray<z.ZodObject<{
126
+ type: z.ZodEnum<{
127
+ dependency: "dependency";
128
+ parent: "parent";
129
+ child: "child";
130
+ sibling: "sibling";
131
+ reference: "reference";
132
+ related: "related";
133
+ }>;
134
+ targetId: z.ZodString;
135
+ targetType: z.ZodString;
136
+ weight: z.ZodDefault<z.ZodNumber>;
137
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
138
+ }, z.core.$strip>>>;
139
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
140
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
141
+ priority: z.ZodOptional<z.ZodNumber>;
142
+ }, z.core.$strip>>;
143
+ createdAt: z.ZodString;
144
+ updatedAt: z.ZodString;
145
+ schemaVersion: z.ZodDefault<z.ZodNumber>;
146
+ type: z.ZodEnum<{
147
+ human: "human";
148
+ agent: "agent";
149
+ system: "system";
150
+ }>;
151
+ status: z.ZodDefault<z.ZodEnum<{
152
+ active: "active";
153
+ suspended: "suspended";
154
+ deleted: "deleted";
155
+ pending: "pending";
156
+ }>>;
157
+ email: z.ZodOptional<z.ZodString>;
158
+ name: z.ZodString;
159
+ avatarUrl: z.ZodOptional<z.ZodURL>;
160
+ role: z.ZodEnum<{
161
+ agent: "agent";
162
+ admin: "admin";
163
+ editor: "editor";
164
+ viewer: "viewer";
165
+ owner: "owner";
166
+ contributor: "contributor";
167
+ }>;
168
+ agentModel: z.ZodOptional<z.ZodString>;
169
+ agentCapabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
170
+ agentConfig: z.ZodOptional<z.ZodObject<{
171
+ systemPrompt: z.ZodOptional<z.ZodString>;
172
+ temperature: z.ZodOptional<z.ZodNumber>;
173
+ maxTokens: z.ZodOptional<z.ZodNumber>;
174
+ }, z.core.$strip>>;
175
+ preferences: z.ZodOptional<z.ZodObject<{
176
+ theme: z.ZodDefault<z.ZodEnum<{
177
+ light: "light";
178
+ dark: "dark";
179
+ system: "system";
180
+ }>>;
181
+ language: z.ZodDefault<z.ZodString>;
182
+ timezone: z.ZodDefault<z.ZodString>;
183
+ notifications: z.ZodOptional<z.ZodObject<{
184
+ email: z.ZodDefault<z.ZodBoolean>;
185
+ push: z.ZodDefault<z.ZodBoolean>;
186
+ inApp: z.ZodDefault<z.ZodBoolean>;
187
+ }, z.core.$strip>>;
188
+ editor: z.ZodOptional<z.ZodObject<{
189
+ fontSize: z.ZodDefault<z.ZodNumber>;
190
+ tabSize: z.ZodDefault<z.ZodNumber>;
191
+ wordWrap: z.ZodDefault<z.ZodBoolean>;
192
+ autoSave: z.ZodDefault<z.ZodBoolean>;
193
+ autoSaveIntervalMs: z.ZodDefault<z.ZodNumber>;
194
+ }, z.core.$strip>>;
195
+ ai: z.ZodOptional<z.ZodObject<{
196
+ enabled: z.ZodDefault<z.ZodBoolean>;
197
+ autoSuggest: z.ZodDefault<z.ZodBoolean>;
198
+ voiceEnabled: z.ZodDefault<z.ZodBoolean>;
199
+ }, z.core.$strip>>;
200
+ }, z.core.$strip>>;
201
+ lastActiveAt: z.ZodOptional<z.ZodString>;
202
+ emailVerified: z.ZodDefault<z.ZodBoolean>;
203
+ }, z.core.$strip>;
204
+ export type User = z.infer<typeof UserSchema>;
205
+ /**
206
+ * User creation input - defines required fields for creating a new user
207
+ * Based on the auto-generated UsersInsertSchema structure
208
+ */
209
+ export declare const CreateUserInputSchema: z.ZodObject<{
210
+ type: z.ZodEnum<{
211
+ human: "human";
212
+ agent: "agent";
213
+ system: "system";
214
+ }>;
215
+ email: z.ZodOptional<z.ZodString>;
216
+ name: z.ZodString;
217
+ role: z.ZodEnum<{
218
+ agent: "agent";
219
+ admin: "admin";
220
+ editor: "editor";
221
+ viewer: "viewer";
222
+ owner: "owner";
223
+ contributor: "contributor";
224
+ }>;
225
+ avatarUrl: z.ZodOptional<z.ZodURL>;
226
+ agentModel: z.ZodOptional<z.ZodString>;
227
+ agentCapabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
228
+ agentConfig: z.ZodOptional<z.ZodObject<{
229
+ systemPrompt: z.ZodOptional<z.ZodString>;
230
+ temperature: z.ZodOptional<z.ZodNumber>;
231
+ maxTokens: z.ZodOptional<z.ZodNumber>;
232
+ }, z.core.$strip>>;
233
+ preferences: z.ZodOptional<z.ZodObject<{
234
+ theme: z.ZodDefault<z.ZodEnum<{
235
+ light: "light";
236
+ dark: "dark";
237
+ system: "system";
238
+ }>>;
239
+ language: z.ZodDefault<z.ZodString>;
240
+ timezone: z.ZodDefault<z.ZodString>;
241
+ notifications: z.ZodOptional<z.ZodObject<{
242
+ email: z.ZodDefault<z.ZodBoolean>;
243
+ push: z.ZodDefault<z.ZodBoolean>;
244
+ inApp: z.ZodDefault<z.ZodBoolean>;
245
+ }, z.core.$strip>>;
246
+ editor: z.ZodOptional<z.ZodObject<{
247
+ fontSize: z.ZodDefault<z.ZodNumber>;
248
+ tabSize: z.ZodDefault<z.ZodNumber>;
249
+ wordWrap: z.ZodDefault<z.ZodBoolean>;
250
+ autoSave: z.ZodDefault<z.ZodBoolean>;
251
+ autoSaveIntervalMs: z.ZodDefault<z.ZodNumber>;
252
+ }, z.core.$strip>>;
253
+ ai: z.ZodOptional<z.ZodObject<{
254
+ enabled: z.ZodDefault<z.ZodBoolean>;
255
+ autoSuggest: z.ZodDefault<z.ZodBoolean>;
256
+ voiceEnabled: z.ZodDefault<z.ZodBoolean>;
257
+ }, z.core.$strip>>;
258
+ }, z.core.$strip>>;
259
+ }, z.core.$strip>;
260
+ export type CreateUserInput = z.infer<typeof CreateUserInputSchema>;
261
+ /**
262
+ * Creates a new user with dual representation
263
+ */
264
+ export declare function createUser(id: string, input: CreateUserInput): User;
265
+ export declare const UpdateUserInputSchema: z.ZodObject<{
266
+ name: z.ZodOptional<z.ZodString>;
267
+ avatarUrl: z.ZodOptional<z.ZodURL>;
268
+ role: z.ZodOptional<z.ZodEnum<{
269
+ agent: "agent";
270
+ admin: "admin";
271
+ editor: "editor";
272
+ viewer: "viewer";
273
+ owner: "owner";
274
+ contributor: "contributor";
275
+ }>>;
276
+ status: z.ZodOptional<z.ZodEnum<{
277
+ active: "active";
278
+ suspended: "suspended";
279
+ deleted: "deleted";
280
+ pending: "pending";
281
+ }>>;
282
+ preferences: z.ZodOptional<z.ZodObject<{
283
+ theme: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
284
+ light: "light";
285
+ dark: "dark";
286
+ system: "system";
287
+ }>>>;
288
+ language: z.ZodOptional<z.ZodDefault<z.ZodString>>;
289
+ timezone: z.ZodOptional<z.ZodDefault<z.ZodString>>;
290
+ notifications: z.ZodOptional<z.ZodOptional<z.ZodObject<{
291
+ email: z.ZodDefault<z.ZodBoolean>;
292
+ push: z.ZodDefault<z.ZodBoolean>;
293
+ inApp: z.ZodDefault<z.ZodBoolean>;
294
+ }, z.core.$strip>>>;
295
+ editor: z.ZodOptional<z.ZodOptional<z.ZodObject<{
296
+ fontSize: z.ZodDefault<z.ZodNumber>;
297
+ tabSize: z.ZodDefault<z.ZodNumber>;
298
+ wordWrap: z.ZodDefault<z.ZodBoolean>;
299
+ autoSave: z.ZodDefault<z.ZodBoolean>;
300
+ autoSaveIntervalMs: z.ZodDefault<z.ZodNumber>;
301
+ }, z.core.$strip>>>;
302
+ ai: z.ZodOptional<z.ZodOptional<z.ZodObject<{
303
+ enabled: z.ZodDefault<z.ZodBoolean>;
304
+ autoSuggest: z.ZodDefault<z.ZodBoolean>;
305
+ voiceEnabled: z.ZodDefault<z.ZodBoolean>;
306
+ }, z.core.$strip>>>;
307
+ }, z.core.$strip>>;
308
+ agentConfig: z.ZodOptional<z.ZodObject<{
309
+ systemPrompt: z.ZodOptional<z.ZodString>;
310
+ temperature: z.ZodOptional<z.ZodNumber>;
311
+ maxTokens: z.ZodOptional<z.ZodNumber>;
312
+ }, z.core.$strip>>;
313
+ }, z.core.$strip>;
314
+ export type UpdateUserInput = z.infer<typeof UpdateUserInputSchema>;
315
+ export declare const SessionSchema: z.ZodObject<{
316
+ id: z.ZodString;
317
+ version: z.ZodDefault<z.ZodNumber>;
318
+ userId: z.ZodString;
319
+ tokenHash: z.ZodString;
320
+ expiresAt: z.ZodString;
321
+ userAgent: z.ZodOptional<z.ZodString>;
322
+ ipAddress: z.ZodOptional<z.ZodString>;
323
+ persistent: z.ZodDefault<z.ZodBoolean>;
324
+ createdAt: z.ZodString;
325
+ lastActivityAt: z.ZodString;
326
+ }, z.core.$strip>;
327
+ export type Session = z.infer<typeof SessionSchema>;
328
+ /**
329
+ * Creates a new session
330
+ */
331
+ export declare function createSession(id: string, userId: string, tokenHash: string, expiresAt: Date, options?: {
332
+ userAgent?: string;
333
+ ipAddress?: string;
334
+ persistent?: boolean;
335
+ }): Session;
336
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/entities/user.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAgB1B,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAMpC,eAAO,MAAM,cAAc;;;;EAIzB,CAAA;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAA;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD,eAAO,MAAM,gBAAgB;;;;;EAK3B,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAMzD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;iBAsChC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAMnE;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6CrB,CAAA;AAEF,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAM7C;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBhC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CA6CnE;AAMD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAahC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAMnE,eAAO,MAAM,aAAa;;;;;;;;;;;iBA8BxB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAEnD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,IAAI,EACf,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,GACA,OAAO,CAcT"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * User Schema
3
+ *
4
+ * Users can be humans or agents. Both are first-class citizens in RevealUI.
5
+ * Humans interact through visual interfaces; agents through structured APIs.
6
+ * Both operate on the same underlying data with full audit trails.
7
+ *
8
+ * This schema extends the auto-generated UsersSelectSchema from the database
9
+ * and adds dual representation (human + agent views) and computed fields.
10
+ */
11
+ import { z } from 'zod/v4';
12
+ import { createTimestamps, DualEntitySchema, REPRESENTATION_SCHEMA_VERSION, toAgentRepresentation, toHumanRepresentation, } from '../representation/index.js';
13
+ // NOTE: Auto-generated schemas available for future use:
14
+ // import { UsersSelectSchema, UsersInsertSchema } from '../generated/zod-schemas.js'
15
+ // These can be used to extend/compose with business logic in the future
16
+ // =============================================================================
17
+ // Schema Version
18
+ // =============================================================================
19
+ export const USER_SCHEMA_VERSION = 1;
20
+ // =============================================================================
21
+ // User Types
22
+ // =============================================================================
23
+ export const UserTypeSchema = z.enum([
24
+ 'human', // A human user
25
+ 'agent', // An AI agent
26
+ 'system', // System user (for automated tasks)
27
+ ]);
28
+ export const UserRoleSchema = z.enum([
29
+ 'owner', // Full control
30
+ 'admin', // Administrative access
31
+ 'editor', // Can edit content
32
+ 'viewer', // Read-only access
33
+ 'agent', // AI agent role
34
+ 'contributor', // Can suggest changes
35
+ ]);
36
+ export const UserStatusSchema = z.enum([
37
+ 'active', // Normal operation
38
+ 'suspended', // Temporarily disabled
39
+ 'deleted', // Soft deleted
40
+ 'pending', // Awaiting verification
41
+ ]);
42
+ // =============================================================================
43
+ // User Preferences
44
+ // =============================================================================
45
+ export const UserPreferencesSchema = z.object({
46
+ /** UI theme */
47
+ theme: z.enum(['light', 'dark', 'system']).default('system'),
48
+ /** Preferred language */
49
+ language: z.string().default('en'),
50
+ /** Timezone */
51
+ timezone: z.string().default('UTC'),
52
+ /** Enable notifications */
53
+ notifications: z
54
+ .object({
55
+ email: z.boolean().default(true),
56
+ push: z.boolean().default(false),
57
+ inApp: z.boolean().default(true),
58
+ })
59
+ .optional(),
60
+ /** Editor preferences */
61
+ editor: z
62
+ .object({
63
+ fontSize: z.number().int().min(10).max(24).default(14),
64
+ tabSize: z.number().int().min(1).max(8).default(2),
65
+ wordWrap: z.boolean().default(true),
66
+ autoSave: z.boolean().default(true),
67
+ autoSaveIntervalMs: z.number().int().min(1000).default(5000),
68
+ })
69
+ .optional(),
70
+ /** AI assistance preferences */
71
+ ai: z
72
+ .object({
73
+ enabled: z.boolean().default(true),
74
+ autoSuggest: z.boolean().default(true),
75
+ voiceEnabled: z.boolean().default(false),
76
+ })
77
+ .optional(),
78
+ });
79
+ // =============================================================================
80
+ // User Schema (extends auto-generated base)
81
+ // =============================================================================
82
+ /**
83
+ * User schema with dual representation and computed fields.
84
+ *
85
+ * NOTE: The auto-generated UsersSelectSchema from packages/db is available
86
+ * and can be used to extend this schema in the future for tighter integration.
87
+ * For now, we maintain the existing schema structure for backward compatibility.
88
+ *
89
+ * Future refactoring: Extend UsersSelectSchema.merge(DualEntitySchema)
90
+ */
91
+ export const UserSchema = DualEntitySchema.extend({
92
+ /** Schema version for migrations */
93
+ schemaVersion: z.number().int().default(USER_SCHEMA_VERSION),
94
+ /** User type: human, agent, or system */
95
+ type: UserTypeSchema,
96
+ /** User status */
97
+ status: UserStatusSchema.default('active'),
98
+ /** Email (for humans) or identifier (for agents) */
99
+ email: z.string().email().optional(),
100
+ /** Display name */
101
+ name: z.string().min(1).max(100),
102
+ /** Avatar URL */
103
+ avatarUrl: z.url().optional(),
104
+ /** User's role */
105
+ role: UserRoleSchema,
106
+ /** For agents: the model/version identifier */
107
+ agentModel: z.string().optional(),
108
+ /** For agents: capabilities this agent has */
109
+ agentCapabilities: z.array(z.string()).optional(),
110
+ /** For agents: configuration */
111
+ agentConfig: z
112
+ .object({
113
+ systemPrompt: z.string().optional(),
114
+ temperature: z.number().min(0).max(2).optional(),
115
+ maxTokens: z.number().int().positive().optional(),
116
+ })
117
+ .optional(),
118
+ /** User preferences (human-native settings) */
119
+ preferences: UserPreferencesSchema.optional(),
120
+ /** Last active timestamp */
121
+ lastActiveAt: z.string().datetime().optional(),
122
+ /** Email verified */
123
+ emailVerified: z.boolean().default(false),
124
+ });
125
+ // =============================================================================
126
+ // User Creation
127
+ // =============================================================================
128
+ /**
129
+ * User creation input - defines required fields for creating a new user
130
+ * Based on the auto-generated UsersInsertSchema structure
131
+ */
132
+ export const CreateUserInputSchema = z.object({
133
+ type: UserTypeSchema,
134
+ email: z.string().email().optional(),
135
+ name: z.string().min(1).max(100),
136
+ role: UserRoleSchema,
137
+ avatarUrl: z.url().optional(),
138
+ agentModel: z.string().optional(),
139
+ agentCapabilities: z.array(z.string()).optional(),
140
+ agentConfig: z
141
+ .object({
142
+ systemPrompt: z.string().optional(),
143
+ temperature: z.number().min(0).max(2).optional(),
144
+ maxTokens: z.number().int().positive().optional(),
145
+ })
146
+ .optional(),
147
+ preferences: UserPreferencesSchema.optional(),
148
+ });
149
+ /**
150
+ * Creates a new user with dual representation
151
+ */
152
+ export function createUser(id, input) {
153
+ const timestamps = createTimestamps();
154
+ return {
155
+ id,
156
+ version: REPRESENTATION_SCHEMA_VERSION,
157
+ schemaVersion: USER_SCHEMA_VERSION,
158
+ type: input.type,
159
+ status: 'active',
160
+ email: input.email,
161
+ name: input.name,
162
+ role: input.role,
163
+ avatarUrl: input.avatarUrl,
164
+ agentModel: input.agentModel,
165
+ agentCapabilities: input.agentCapabilities,
166
+ agentConfig: input.agentConfig,
167
+ preferences: input.preferences,
168
+ emailVerified: false,
169
+ human: toHumanRepresentation({
170
+ name: input.name,
171
+ description: input.type === 'agent'
172
+ ? `AI Agent: ${input.agentModel || 'Unknown model'}`
173
+ : `User: ${input.email || input.name}`,
174
+ icon: input.type === 'agent' ? 'robot' : 'user',
175
+ }),
176
+ agent: toAgentRepresentation('user', {
177
+ constraints: input.type === 'agent'
178
+ ? [
179
+ {
180
+ type: 'capability',
181
+ params: { allowed: input.agentCapabilities || [] },
182
+ message: 'Agent can only perform actions within its capabilities',
183
+ },
184
+ ]
185
+ : undefined,
186
+ metadata: {
187
+ userType: input.type,
188
+ role: input.role,
189
+ },
190
+ keywords: [input.type, input.role, input.name.toLowerCase()],
191
+ }),
192
+ ...timestamps,
193
+ };
194
+ }
195
+ // =============================================================================
196
+ // User Update
197
+ // =============================================================================
198
+ export const UpdateUserInputSchema = z.object({
199
+ name: z.string().min(1).max(100).optional(),
200
+ avatarUrl: z.url().optional(),
201
+ role: UserRoleSchema.optional(),
202
+ status: UserStatusSchema.optional(),
203
+ preferences: UserPreferencesSchema.partial().optional(),
204
+ agentConfig: z
205
+ .object({
206
+ systemPrompt: z.string().optional(),
207
+ temperature: z.number().min(0).max(2).optional(),
208
+ maxTokens: z.number().int().positive().optional(),
209
+ })
210
+ .optional(),
211
+ });
212
+ // =============================================================================
213
+ // Session Schema
214
+ // =============================================================================
215
+ export const SessionSchema = z.object({
216
+ /** Session ID */
217
+ id: z.string(),
218
+ /** Schema version */
219
+ version: z.number().int().default(USER_SCHEMA_VERSION),
220
+ /** User who owns this session */
221
+ userId: z.string(),
222
+ /** Session token (hashed) */
223
+ tokenHash: z.string(),
224
+ /** When the session expires */
225
+ expiresAt: z.string().datetime(),
226
+ /** Device/client info */
227
+ userAgent: z.string().optional(),
228
+ /** IP address (for security) */
229
+ ipAddress: z.string().optional(),
230
+ /** Whether this is a long-lived session (remember me) */
231
+ persistent: z.boolean().default(false),
232
+ /** Creation timestamp */
233
+ createdAt: z.string().datetime(),
234
+ /** Last activity timestamp */
235
+ lastActivityAt: z.string().datetime(),
236
+ });
237
+ /**
238
+ * Creates a new session
239
+ */
240
+ export function createSession(id, userId, tokenHash, expiresAt, options) {
241
+ const now = new Date().toISOString();
242
+ return {
243
+ id,
244
+ version: USER_SCHEMA_VERSION,
245
+ userId,
246
+ tokenHash,
247
+ expiresAt: expiresAt.toISOString(),
248
+ userAgent: options?.userAgent,
249
+ ipAddress: options?.ipAddress,
250
+ persistent: options?.persistent ?? false,
251
+ createdAt: now,
252
+ lastActivityAt: now,
253
+ };
254
+ }
255
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/entities/user.ts"],"names":[],"mappings":"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"}