@objectstack/platform-objects 0.1.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.
- package/LICENSE +202 -0
- package/dist/apps/index.d.mts +427 -0
- package/dist/apps/index.d.ts +427 -0
- package/dist/apps/index.js +520 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/index.mjs +510 -0
- package/dist/apps/index.mjs.map +1 -0
- package/dist/audit/index.d.mts +9507 -0
- package/dist/audit/index.d.ts +9507 -0
- package/dist/audit/index.js +492 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/index.mjs +487 -0
- package/dist/audit/index.mjs.map +1 -0
- package/dist/identity/index.d.mts +32482 -0
- package/dist/identity/index.d.ts +32482 -0
- package/dist/identity/index.js +1404 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/index.mjs +1385 -0
- package/dist/identity/index.mjs.map +1 -0
- package/dist/index.d.mts +10 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +4209 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +4160 -0
- package/dist/index.mjs.map +1 -0
- package/dist/metadata/index.d.mts +25601 -0
- package/dist/metadata/index.d.ts +25601 -0
- package/dist/metadata/index.js +911 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/index.mjs +902 -0
- package/dist/metadata/index.mjs.map +1 -0
- package/dist/security/index.d.mts +3554 -0
- package/dist/security/index.d.ts +3554 -0
- package/dist/security/index.js +178 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/index.mjs +175 -0
- package/dist/security/index.mjs.map +1 -0
- package/dist/state-machine.zod-BFg-VE0M.d-Ek3_yo9P.d.mts +41 -0
- package/dist/state-machine.zod-BFg-VE0M.d-Ek3_yo9P.d.ts +41 -0
- package/dist/tenant/index.d.mts +16454 -0
- package/dist/tenant/index.d.ts +16454 -0
- package/dist/tenant/index.js +741 -0
- package/dist/tenant/index.js.map +1 -0
- package/dist/tenant/index.mjs +733 -0
- package/dist/tenant/index.mjs.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var data = require('@objectstack/spec/data');
|
|
4
|
+
|
|
5
|
+
// src/audit/sys-audit-log.object.ts
|
|
6
|
+
var SysAuditLog = data.ObjectSchema.create({
|
|
7
|
+
name: "sys_audit_log",
|
|
8
|
+
label: "Audit Log",
|
|
9
|
+
pluralLabel: "Audit Logs",
|
|
10
|
+
icon: "scroll-text",
|
|
11
|
+
isSystem: true,
|
|
12
|
+
description: "Immutable audit trail for platform events",
|
|
13
|
+
displayNameField: "action",
|
|
14
|
+
titleFormat: "{action} \xB7 {object_name}",
|
|
15
|
+
compactLayout: ["created_at", "action", "object_name", "record_id", "user_id"],
|
|
16
|
+
fields: {
|
|
17
|
+
// ── Event ────────────────────────────────────────────────────
|
|
18
|
+
created_at: data.Field.datetime({
|
|
19
|
+
label: "Timestamp",
|
|
20
|
+
required: true,
|
|
21
|
+
defaultValue: "NOW()",
|
|
22
|
+
readonly: true,
|
|
23
|
+
group: "Event"
|
|
24
|
+
}),
|
|
25
|
+
action: data.Field.select(
|
|
26
|
+
["create", "update", "delete", "restore", "login", "logout", "permission_change", "config_change", "export", "import"],
|
|
27
|
+
{
|
|
28
|
+
label: "Action",
|
|
29
|
+
required: true,
|
|
30
|
+
readonly: true,
|
|
31
|
+
searchable: true,
|
|
32
|
+
description: "Action type (snake_case)",
|
|
33
|
+
group: "Event"
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
user_id: data.Field.lookup("sys_user", {
|
|
37
|
+
label: "Actor",
|
|
38
|
+
required: false,
|
|
39
|
+
readonly: true,
|
|
40
|
+
searchable: true,
|
|
41
|
+
description: "User who performed the action (null for system actions)",
|
|
42
|
+
group: "Event"
|
|
43
|
+
}),
|
|
44
|
+
// ── Target record ────────────────────────────────────────────
|
|
45
|
+
object_name: data.Field.text({
|
|
46
|
+
label: "Object",
|
|
47
|
+
required: false,
|
|
48
|
+
readonly: true,
|
|
49
|
+
searchable: true,
|
|
50
|
+
maxLength: 255,
|
|
51
|
+
description: "Target object (e.g. sys_user, project_task)",
|
|
52
|
+
group: "Target"
|
|
53
|
+
}),
|
|
54
|
+
record_id: data.Field.text({
|
|
55
|
+
label: "Record ID",
|
|
56
|
+
required: false,
|
|
57
|
+
readonly: true,
|
|
58
|
+
searchable: true,
|
|
59
|
+
description: "ID of the affected record",
|
|
60
|
+
group: "Target"
|
|
61
|
+
}),
|
|
62
|
+
// ── Change payload ───────────────────────────────────────────
|
|
63
|
+
old_value: data.Field.textarea({
|
|
64
|
+
label: "Old Value",
|
|
65
|
+
required: false,
|
|
66
|
+
readonly: true,
|
|
67
|
+
description: "JSON-serialized previous state",
|
|
68
|
+
group: "Changes"
|
|
69
|
+
}),
|
|
70
|
+
new_value: data.Field.textarea({
|
|
71
|
+
label: "New Value",
|
|
72
|
+
required: false,
|
|
73
|
+
readonly: true,
|
|
74
|
+
description: "JSON-serialized new state",
|
|
75
|
+
group: "Changes"
|
|
76
|
+
}),
|
|
77
|
+
// ── Client fingerprint ───────────────────────────────────────
|
|
78
|
+
ip_address: data.Field.text({
|
|
79
|
+
label: "IP Address",
|
|
80
|
+
required: false,
|
|
81
|
+
readonly: true,
|
|
82
|
+
maxLength: 45,
|
|
83
|
+
group: "Client"
|
|
84
|
+
}),
|
|
85
|
+
user_agent: data.Field.textarea({
|
|
86
|
+
label: "User Agent",
|
|
87
|
+
required: false,
|
|
88
|
+
readonly: true,
|
|
89
|
+
group: "Client"
|
|
90
|
+
}),
|
|
91
|
+
// ── Context ──────────────────────────────────────────────────
|
|
92
|
+
tenant_id: data.Field.lookup("sys_organization", {
|
|
93
|
+
label: "Tenant",
|
|
94
|
+
required: false,
|
|
95
|
+
readonly: true,
|
|
96
|
+
description: "Tenant context for multi-tenant isolation",
|
|
97
|
+
group: "Context"
|
|
98
|
+
}),
|
|
99
|
+
metadata: data.Field.textarea({
|
|
100
|
+
label: "Metadata",
|
|
101
|
+
required: false,
|
|
102
|
+
readonly: true,
|
|
103
|
+
description: "JSON-serialized additional context",
|
|
104
|
+
group: "Context"
|
|
105
|
+
}),
|
|
106
|
+
// ── System ───────────────────────────────────────────────────
|
|
107
|
+
id: data.Field.text({
|
|
108
|
+
label: "Audit Log ID",
|
|
109
|
+
required: true,
|
|
110
|
+
readonly: true,
|
|
111
|
+
group: "System"
|
|
112
|
+
})
|
|
113
|
+
},
|
|
114
|
+
indexes: [
|
|
115
|
+
{ fields: ["created_at"] },
|
|
116
|
+
{ fields: ["user_id"] },
|
|
117
|
+
{ fields: ["object_name", "record_id"] },
|
|
118
|
+
{ fields: ["action"] },
|
|
119
|
+
{ fields: ["tenant_id"] }
|
|
120
|
+
],
|
|
121
|
+
enable: {
|
|
122
|
+
trackHistory: false,
|
|
123
|
+
// Audit logs are themselves the audit trail
|
|
124
|
+
searchable: true,
|
|
125
|
+
apiEnabled: true,
|
|
126
|
+
apiMethods: ["get", "list"],
|
|
127
|
+
// Read-only — creation happens via internal system hooks only
|
|
128
|
+
trash: false,
|
|
129
|
+
// Never soft-delete audit logs
|
|
130
|
+
mru: false,
|
|
131
|
+
clone: false
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
var SysPresence = data.ObjectSchema.create({
|
|
135
|
+
name: "sys_presence",
|
|
136
|
+
label: "Presence",
|
|
137
|
+
pluralLabel: "Presences",
|
|
138
|
+
icon: "wifi",
|
|
139
|
+
isSystem: true,
|
|
140
|
+
description: "Real-time user presence and activity tracking",
|
|
141
|
+
titleFormat: "{user_id} ({status})",
|
|
142
|
+
compactLayout: ["user_id", "status", "last_seen"],
|
|
143
|
+
fields: {
|
|
144
|
+
id: data.Field.text({
|
|
145
|
+
label: "Presence ID",
|
|
146
|
+
required: true,
|
|
147
|
+
readonly: true
|
|
148
|
+
}),
|
|
149
|
+
created_at: data.Field.datetime({
|
|
150
|
+
label: "Created At",
|
|
151
|
+
defaultValue: "NOW()",
|
|
152
|
+
readonly: true
|
|
153
|
+
}),
|
|
154
|
+
updated_at: data.Field.datetime({
|
|
155
|
+
label: "Updated At",
|
|
156
|
+
defaultValue: "NOW()",
|
|
157
|
+
readonly: true
|
|
158
|
+
}),
|
|
159
|
+
user_id: data.Field.lookup("sys_user", {
|
|
160
|
+
label: "User",
|
|
161
|
+
required: true,
|
|
162
|
+
searchable: true
|
|
163
|
+
}),
|
|
164
|
+
session_id: data.Field.lookup("sys_session", {
|
|
165
|
+
label: "Session",
|
|
166
|
+
required: true
|
|
167
|
+
}),
|
|
168
|
+
status: data.Field.select({
|
|
169
|
+
label: "Status",
|
|
170
|
+
required: true,
|
|
171
|
+
defaultValue: "online",
|
|
172
|
+
options: [
|
|
173
|
+
{ value: "online", label: "Online" },
|
|
174
|
+
{ value: "away", label: "Away" },
|
|
175
|
+
{ value: "busy", label: "Busy" },
|
|
176
|
+
{ value: "offline", label: "Offline" }
|
|
177
|
+
]
|
|
178
|
+
}),
|
|
179
|
+
last_seen: data.Field.datetime({
|
|
180
|
+
label: "Last Seen",
|
|
181
|
+
required: true,
|
|
182
|
+
defaultValue: "NOW()"
|
|
183
|
+
}),
|
|
184
|
+
current_location: data.Field.text({
|
|
185
|
+
label: "Current Location",
|
|
186
|
+
required: false,
|
|
187
|
+
maxLength: 500
|
|
188
|
+
}),
|
|
189
|
+
device: data.Field.select({
|
|
190
|
+
label: "Device",
|
|
191
|
+
required: false,
|
|
192
|
+
options: [
|
|
193
|
+
{ value: "desktop", label: "Desktop" },
|
|
194
|
+
{ value: "mobile", label: "Mobile" },
|
|
195
|
+
{ value: "tablet", label: "Tablet" },
|
|
196
|
+
{ value: "other", label: "Other" }
|
|
197
|
+
]
|
|
198
|
+
}),
|
|
199
|
+
custom_status: data.Field.text({
|
|
200
|
+
label: "Custom Status",
|
|
201
|
+
required: false,
|
|
202
|
+
maxLength: 255
|
|
203
|
+
}),
|
|
204
|
+
metadata: data.Field.json({
|
|
205
|
+
label: "Metadata",
|
|
206
|
+
required: false,
|
|
207
|
+
description: "Arbitrary JSON metadata associated with the presence state (matches PresenceStateSchema.metadata)."
|
|
208
|
+
})
|
|
209
|
+
},
|
|
210
|
+
indexes: [
|
|
211
|
+
{ fields: ["user_id"], unique: false },
|
|
212
|
+
{ fields: ["session_id"], unique: true },
|
|
213
|
+
{ fields: ["status"], unique: false }
|
|
214
|
+
],
|
|
215
|
+
enable: {
|
|
216
|
+
trackHistory: false,
|
|
217
|
+
searchable: false,
|
|
218
|
+
apiEnabled: true,
|
|
219
|
+
apiMethods: ["get", "list", "create", "update", "delete"],
|
|
220
|
+
trash: false,
|
|
221
|
+
mru: false
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
var SysActivity = data.ObjectSchema.create({
|
|
225
|
+
name: "sys_activity",
|
|
226
|
+
label: "Activity",
|
|
227
|
+
pluralLabel: "Activities",
|
|
228
|
+
icon: "activity",
|
|
229
|
+
isSystem: true,
|
|
230
|
+
description: "Recent activity stream entries (lightweight, denormalized)",
|
|
231
|
+
displayNameField: "summary",
|
|
232
|
+
titleFormat: "{type} \xB7 {summary}",
|
|
233
|
+
compactLayout: ["timestamp", "type", "actor_name", "summary"],
|
|
234
|
+
fields: {
|
|
235
|
+
id: data.Field.text({
|
|
236
|
+
label: "Activity ID",
|
|
237
|
+
required: true,
|
|
238
|
+
readonly: true,
|
|
239
|
+
group: "System"
|
|
240
|
+
}),
|
|
241
|
+
timestamp: data.Field.datetime({
|
|
242
|
+
label: "Timestamp",
|
|
243
|
+
required: true,
|
|
244
|
+
defaultValue: "NOW()",
|
|
245
|
+
readonly: true,
|
|
246
|
+
group: "Event"
|
|
247
|
+
}),
|
|
248
|
+
type: data.Field.select(
|
|
249
|
+
[
|
|
250
|
+
"created",
|
|
251
|
+
"updated",
|
|
252
|
+
"deleted",
|
|
253
|
+
"commented",
|
|
254
|
+
"mentioned",
|
|
255
|
+
"shared",
|
|
256
|
+
"assigned",
|
|
257
|
+
"completed",
|
|
258
|
+
"login",
|
|
259
|
+
"logout",
|
|
260
|
+
"system"
|
|
261
|
+
],
|
|
262
|
+
{
|
|
263
|
+
label: "Type",
|
|
264
|
+
required: true,
|
|
265
|
+
readonly: true,
|
|
266
|
+
searchable: true,
|
|
267
|
+
group: "Event"
|
|
268
|
+
}
|
|
269
|
+
),
|
|
270
|
+
summary: data.Field.text({
|
|
271
|
+
label: "Summary",
|
|
272
|
+
required: true,
|
|
273
|
+
readonly: true,
|
|
274
|
+
maxLength: 500,
|
|
275
|
+
searchable: true,
|
|
276
|
+
description: "Human-readable one-line summary",
|
|
277
|
+
group: "Event"
|
|
278
|
+
}),
|
|
279
|
+
// ── Actor ───────────────────────────────────────────────────
|
|
280
|
+
actor_id: data.Field.lookup("sys_user", {
|
|
281
|
+
label: "Actor",
|
|
282
|
+
required: false,
|
|
283
|
+
readonly: true,
|
|
284
|
+
searchable: true,
|
|
285
|
+
group: "Actor"
|
|
286
|
+
}),
|
|
287
|
+
actor_name: data.Field.text({
|
|
288
|
+
label: "Actor Name",
|
|
289
|
+
required: false,
|
|
290
|
+
readonly: true,
|
|
291
|
+
group: "Actor"
|
|
292
|
+
}),
|
|
293
|
+
actor_avatar_url: data.Field.url({
|
|
294
|
+
label: "Actor Avatar",
|
|
295
|
+
required: false,
|
|
296
|
+
readonly: true,
|
|
297
|
+
group: "Actor"
|
|
298
|
+
}),
|
|
299
|
+
// ── Target ───────────────────────────────────────────────────
|
|
300
|
+
object_name: data.Field.text({
|
|
301
|
+
label: "Object",
|
|
302
|
+
required: false,
|
|
303
|
+
readonly: true,
|
|
304
|
+
searchable: true,
|
|
305
|
+
maxLength: 255,
|
|
306
|
+
description: "Target object short name (e.g. account, sys_user)",
|
|
307
|
+
group: "Target"
|
|
308
|
+
}),
|
|
309
|
+
record_id: data.Field.text({
|
|
310
|
+
label: "Record ID",
|
|
311
|
+
required: false,
|
|
312
|
+
readonly: true,
|
|
313
|
+
searchable: true,
|
|
314
|
+
group: "Target"
|
|
315
|
+
}),
|
|
316
|
+
record_label: data.Field.text({
|
|
317
|
+
label: "Record Label",
|
|
318
|
+
required: false,
|
|
319
|
+
readonly: true,
|
|
320
|
+
maxLength: 255,
|
|
321
|
+
description: "Display label of the target record at write time",
|
|
322
|
+
group: "Target"
|
|
323
|
+
}),
|
|
324
|
+
url: data.Field.url({
|
|
325
|
+
label: "URL",
|
|
326
|
+
required: false,
|
|
327
|
+
readonly: true,
|
|
328
|
+
description: "Optional deep-link to the activity target",
|
|
329
|
+
group: "Target"
|
|
330
|
+
}),
|
|
331
|
+
// ── Context ──────────────────────────────────────────────────
|
|
332
|
+
project_id: data.Field.lookup("sys_project", {
|
|
333
|
+
label: "Project",
|
|
334
|
+
required: false,
|
|
335
|
+
readonly: true,
|
|
336
|
+
searchable: true,
|
|
337
|
+
description: "Project context (multi-project deployments)",
|
|
338
|
+
group: "Context"
|
|
339
|
+
}),
|
|
340
|
+
metadata: data.Field.textarea({
|
|
341
|
+
label: "Metadata",
|
|
342
|
+
required: false,
|
|
343
|
+
readonly: true,
|
|
344
|
+
description: "JSON-serialized additional context",
|
|
345
|
+
group: "Context"
|
|
346
|
+
})
|
|
347
|
+
},
|
|
348
|
+
indexes: [
|
|
349
|
+
{ fields: ["timestamp"] },
|
|
350
|
+
{ fields: ["actor_id"] },
|
|
351
|
+
{ fields: ["object_name", "record_id"] },
|
|
352
|
+
{ fields: ["type"] },
|
|
353
|
+
{ fields: ["project_id"] }
|
|
354
|
+
],
|
|
355
|
+
enable: {
|
|
356
|
+
trackHistory: false,
|
|
357
|
+
searchable: true,
|
|
358
|
+
apiEnabled: true,
|
|
359
|
+
apiMethods: ["get", "list"],
|
|
360
|
+
trash: false,
|
|
361
|
+
mru: false,
|
|
362
|
+
clone: false
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
var SysComment = data.ObjectSchema.create({
|
|
366
|
+
name: "sys_comment",
|
|
367
|
+
label: "Comment",
|
|
368
|
+
pluralLabel: "Comments",
|
|
369
|
+
icon: "message-square",
|
|
370
|
+
isSystem: true,
|
|
371
|
+
description: "Threaded comments attached to records via thread_id",
|
|
372
|
+
displayNameField: "body",
|
|
373
|
+
titleFormat: "{author_name}: {body}",
|
|
374
|
+
compactLayout: ["created_at", "author_name", "body"],
|
|
375
|
+
fields: {
|
|
376
|
+
id: data.Field.text({
|
|
377
|
+
label: "Comment ID",
|
|
378
|
+
required: true,
|
|
379
|
+
readonly: true,
|
|
380
|
+
group: "System"
|
|
381
|
+
}),
|
|
382
|
+
// ── Thread ───────────────────────────────────────────────────
|
|
383
|
+
thread_id: data.Field.text({
|
|
384
|
+
label: "Thread",
|
|
385
|
+
required: true,
|
|
386
|
+
searchable: true,
|
|
387
|
+
maxLength: 255,
|
|
388
|
+
description: "Thread identifier \u2014 conventionally `{object}:{record_id}` (e.g. `sys_user:abc123`)",
|
|
389
|
+
group: "Thread"
|
|
390
|
+
}),
|
|
391
|
+
parent_id: data.Field.lookup("sys_comment", {
|
|
392
|
+
label: "Parent Comment",
|
|
393
|
+
required: false,
|
|
394
|
+
description: "Optional parent comment for nested replies",
|
|
395
|
+
group: "Thread"
|
|
396
|
+
}),
|
|
397
|
+
reply_count: data.Field.number({
|
|
398
|
+
label: "Reply Count",
|
|
399
|
+
defaultValue: 0,
|
|
400
|
+
readonly: true,
|
|
401
|
+
group: "Thread"
|
|
402
|
+
}),
|
|
403
|
+
// ── Author ───────────────────────────────────────────────────
|
|
404
|
+
author_id: data.Field.lookup("sys_user", {
|
|
405
|
+
label: "Author",
|
|
406
|
+
required: true,
|
|
407
|
+
searchable: true,
|
|
408
|
+
group: "Author"
|
|
409
|
+
}),
|
|
410
|
+
author_name: data.Field.text({
|
|
411
|
+
label: "Author Name",
|
|
412
|
+
required: false,
|
|
413
|
+
group: "Author"
|
|
414
|
+
}),
|
|
415
|
+
author_avatar_url: data.Field.url({
|
|
416
|
+
label: "Author Avatar",
|
|
417
|
+
required: false,
|
|
418
|
+
group: "Author"
|
|
419
|
+
}),
|
|
420
|
+
// ── Body ─────────────────────────────────────────────────────
|
|
421
|
+
body: data.Field.textarea({
|
|
422
|
+
label: "Body",
|
|
423
|
+
required: true,
|
|
424
|
+
searchable: true,
|
|
425
|
+
description: "Comment text (Markdown supported)",
|
|
426
|
+
group: "Body"
|
|
427
|
+
}),
|
|
428
|
+
mentions: data.Field.textarea({
|
|
429
|
+
label: "Mentions",
|
|
430
|
+
required: false,
|
|
431
|
+
description: "JSON array of @mention objects",
|
|
432
|
+
group: "Body"
|
|
433
|
+
}),
|
|
434
|
+
reactions: data.Field.textarea({
|
|
435
|
+
label: "Reactions",
|
|
436
|
+
required: false,
|
|
437
|
+
description: "JSON array of emoji reaction objects",
|
|
438
|
+
group: "Body"
|
|
439
|
+
}),
|
|
440
|
+
// ── Lifecycle ────────────────────────────────────────────────
|
|
441
|
+
is_edited: data.Field.boolean({
|
|
442
|
+
label: "Edited",
|
|
443
|
+
defaultValue: false,
|
|
444
|
+
group: "Lifecycle"
|
|
445
|
+
}),
|
|
446
|
+
edited_at: data.Field.datetime({
|
|
447
|
+
label: "Edited At",
|
|
448
|
+
required: false,
|
|
449
|
+
group: "Lifecycle"
|
|
450
|
+
}),
|
|
451
|
+
visibility: data.Field.select(
|
|
452
|
+
["public", "internal", "private"],
|
|
453
|
+
{
|
|
454
|
+
label: "Visibility",
|
|
455
|
+
defaultValue: "public",
|
|
456
|
+
group: "Lifecycle"
|
|
457
|
+
}
|
|
458
|
+
),
|
|
459
|
+
created_at: data.Field.datetime({
|
|
460
|
+
label: "Created At",
|
|
461
|
+
required: true,
|
|
462
|
+
defaultValue: "NOW()",
|
|
463
|
+
readonly: true,
|
|
464
|
+
group: "System"
|
|
465
|
+
}),
|
|
466
|
+
updated_at: data.Field.datetime({
|
|
467
|
+
label: "Updated At",
|
|
468
|
+
required: false,
|
|
469
|
+
group: "System"
|
|
470
|
+
})
|
|
471
|
+
},
|
|
472
|
+
indexes: [
|
|
473
|
+
{ fields: ["thread_id", "created_at"] },
|
|
474
|
+
{ fields: ["parent_id"] },
|
|
475
|
+
{ fields: ["author_id"] }
|
|
476
|
+
],
|
|
477
|
+
enable: {
|
|
478
|
+
trackHistory: true,
|
|
479
|
+
searchable: true,
|
|
480
|
+
apiEnabled: true,
|
|
481
|
+
trash: true,
|
|
482
|
+
mru: false,
|
|
483
|
+
clone: false
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
exports.SysActivity = SysActivity;
|
|
488
|
+
exports.SysAuditLog = SysAuditLog;
|
|
489
|
+
exports.SysComment = SysComment;
|
|
490
|
+
exports.SysPresence = SysPresence;
|
|
491
|
+
//# sourceMappingURL=index.js.map
|
|
492
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/audit/sys-audit-log.object.ts","../../src/audit/sys-presence.object.ts","../../src/audit/sys-activity.object.ts","../../src/audit/sys-comment.object.ts"],"names":["ObjectSchema","Field"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_audit_log — System Audit Log Object\n *\n * Immutable audit trail for all significant platform events.\n * Records who did what, when, and the before/after state.\n *\n * Every field is `readonly: true` — audit logs are written only by\n * internal system hooks, never via UI forms. API exposes only `get` + `list`.\n *\n * @namespace sys\n */\nexport const SysAuditLog = ObjectSchema.create({\n name: 'sys_audit_log',\n label: 'Audit Log',\n pluralLabel: 'Audit Logs',\n icon: 'scroll-text',\n isSystem: true,\n description: 'Immutable audit trail for platform events',\n displayNameField: 'action',\n titleFormat: '{action} · {object_name}',\n compactLayout: ['created_at', 'action', 'object_name', 'record_id', 'user_id'],\n\n fields: {\n // ── Event ────────────────────────────────────────────────────\n created_at: Field.datetime({\n label: 'Timestamp',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'Event',\n }),\n\n action: Field.select(\n ['create', 'update', 'delete', 'restore', 'login', 'logout', 'permission_change', 'config_change', 'export', 'import'],\n {\n label: 'Action',\n required: true,\n readonly: true,\n searchable: true,\n description: 'Action type (snake_case)',\n group: 'Event',\n },\n ),\n\n user_id: Field.lookup('sys_user', {\n label: 'Actor',\n required: false,\n readonly: true,\n searchable: true,\n description: 'User who performed the action (null for system actions)',\n group: 'Event',\n }),\n\n // ── Target record ────────────────────────────────────────────\n object_name: Field.text({\n label: 'Object',\n required: false,\n readonly: true,\n searchable: true,\n maxLength: 255,\n description: 'Target object (e.g. sys_user, project_task)',\n group: 'Target',\n }),\n\n record_id: Field.text({\n label: 'Record ID',\n required: false,\n readonly: true,\n searchable: true,\n description: 'ID of the affected record',\n group: 'Target',\n }),\n\n // ── Change payload ───────────────────────────────────────────\n old_value: Field.textarea({\n label: 'Old Value',\n required: false,\n readonly: true,\n description: 'JSON-serialized previous state',\n group: 'Changes',\n }),\n\n new_value: Field.textarea({\n label: 'New Value',\n required: false,\n readonly: true,\n description: 'JSON-serialized new state',\n group: 'Changes',\n }),\n\n // ── Client fingerprint ───────────────────────────────────────\n ip_address: Field.text({\n label: 'IP Address',\n required: false,\n readonly: true,\n maxLength: 45,\n group: 'Client',\n }),\n\n user_agent: Field.textarea({\n label: 'User Agent',\n required: false,\n readonly: true,\n group: 'Client',\n }),\n\n // ── Context ──────────────────────────────────────────────────\n tenant_id: Field.lookup('sys_organization', {\n label: 'Tenant',\n required: false,\n readonly: true,\n description: 'Tenant context for multi-tenant isolation',\n group: 'Context',\n }),\n\n metadata: Field.textarea({\n label: 'Metadata',\n required: false,\n readonly: true,\n description: 'JSON-serialized additional context',\n group: 'Context',\n }),\n\n // ── System ───────────────────────────────────────────────────\n id: Field.text({\n label: 'Audit Log ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['created_at'] },\n { fields: ['user_id'] },\n { fields: ['object_name', 'record_id'] },\n { fields: ['action'] },\n { fields: ['tenant_id'] },\n ],\n\n enable: {\n trackHistory: false, // Audit logs are themselves the audit trail\n searchable: true,\n apiEnabled: true,\n apiMethods: ['get', 'list'], // Read-only — creation happens via internal system hooks only\n trash: false, // Never soft-delete audit logs\n mru: false,\n clone: false,\n },\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_presence — System Presence Object\n *\n * Tracks real-time user presence and activity across the platform.\n * Fields align with the PresenceStateSchema protocol definition\n * from `@objectstack/spec/api` (websocket.zod.ts).\n *\n * Owned by `service-realtime` as the canonical Presence domain object.\n *\n * @namespace sys\n * @see PresenceStateSchema in packages/spec/src/api/websocket.zod.ts\n */\nexport const SysPresence = ObjectSchema.create({\n name: 'sys_presence',\n label: 'Presence',\n pluralLabel: 'Presences',\n icon: 'wifi',\n isSystem: true,\n description: 'Real-time user presence and activity tracking',\n titleFormat: '{user_id} ({status})',\n compactLayout: ['user_id', 'status', 'last_seen'],\n\n fields: {\n id: Field.text({\n label: 'Presence ID',\n required: true,\n readonly: true,\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n defaultValue: 'NOW()',\n readonly: true,\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n defaultValue: 'NOW()',\n readonly: true,\n }),\n\n user_id: Field.lookup('sys_user', {\n label: 'User',\n required: true,\n searchable: true,\n }),\n\n session_id: Field.lookup('sys_session', {\n label: 'Session',\n required: true,\n }),\n\n status: Field.select({\n label: 'Status',\n required: true,\n defaultValue: 'online',\n options: [\n { value: 'online', label: 'Online' },\n { value: 'away', label: 'Away' },\n { value: 'busy', label: 'Busy' },\n { value: 'offline', label: 'Offline' },\n ],\n }),\n\n last_seen: Field.datetime({\n label: 'Last Seen',\n required: true,\n defaultValue: 'NOW()',\n }),\n\n current_location: Field.text({\n label: 'Current Location',\n required: false,\n maxLength: 500,\n }),\n\n device: Field.select({\n label: 'Device',\n required: false,\n options: [\n { value: 'desktop', label: 'Desktop' },\n { value: 'mobile', label: 'Mobile' },\n { value: 'tablet', label: 'Tablet' },\n { value: 'other', label: 'Other' },\n ],\n }),\n\n custom_status: Field.text({\n label: 'Custom Status',\n required: false,\n maxLength: 255,\n }),\n\n metadata: Field.json({\n label: 'Metadata',\n required: false,\n description: 'Arbitrary JSON metadata associated with the presence state (matches PresenceStateSchema.metadata).',\n }),\n },\n\n indexes: [\n { fields: ['user_id'], unique: false },\n { fields: ['session_id'], unique: true },\n { fields: ['status'], unique: false },\n ],\n\n enable: {\n trackHistory: false,\n searchable: false,\n apiEnabled: true,\n apiMethods: ['get', 'list', 'create', 'update', 'delete'],\n trash: false,\n mru: false,\n },\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_activity — Lightweight Activity Stream\n *\n * Append-only \"recent activity\" feed shown on dashboards / overview\n * pages. Distinct from `sys_audit_log` (compliance-grade, structured\n * before/after diffs) and `feed_item` (record-scoped Chatter timeline\n * with comments/reactions/threads). Activity entries are denormalized\n * snapshots optimized for chronological \"what happened lately\" reads.\n *\n * Typical write sources: data triggers, plugin events, UI actions.\n * Typical readers: Studio dashboard, mobile inbox, notification jobs.\n *\n * @namespace sys\n */\nexport const SysActivity = ObjectSchema.create({\n name: 'sys_activity',\n label: 'Activity',\n pluralLabel: 'Activities',\n icon: 'activity',\n isSystem: true,\n description: 'Recent activity stream entries (lightweight, denormalized)',\n displayNameField: 'summary',\n titleFormat: '{type} · {summary}',\n compactLayout: ['timestamp', 'type', 'actor_name', 'summary'],\n\n fields: {\n id: Field.text({\n label: 'Activity ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n timestamp: Field.datetime({\n label: 'Timestamp',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'Event',\n }),\n\n type: Field.select(\n [\n 'created',\n 'updated',\n 'deleted',\n 'commented',\n 'mentioned',\n 'shared',\n 'assigned',\n 'completed',\n 'login',\n 'logout',\n 'system',\n ],\n {\n label: 'Type',\n required: true,\n readonly: true,\n searchable: true,\n group: 'Event',\n },\n ),\n\n summary: Field.text({\n label: 'Summary',\n required: true,\n readonly: true,\n maxLength: 500,\n searchable: true,\n description: 'Human-readable one-line summary',\n group: 'Event',\n }),\n\n // ── Actor ───────────────────────────────────────────────────\n actor_id: Field.lookup('sys_user', {\n label: 'Actor',\n required: false,\n readonly: true,\n searchable: true,\n group: 'Actor',\n }),\n\n actor_name: Field.text({\n label: 'Actor Name',\n required: false,\n readonly: true,\n group: 'Actor',\n }),\n\n actor_avatar_url: Field.url({\n label: 'Actor Avatar',\n required: false,\n readonly: true,\n group: 'Actor',\n }),\n\n // ── Target ───────────────────────────────────────────────────\n object_name: Field.text({\n label: 'Object',\n required: false,\n readonly: true,\n searchable: true,\n maxLength: 255,\n description: 'Target object short name (e.g. account, sys_user)',\n group: 'Target',\n }),\n\n record_id: Field.text({\n label: 'Record ID',\n required: false,\n readonly: true,\n searchable: true,\n group: 'Target',\n }),\n\n record_label: Field.text({\n label: 'Record Label',\n required: false,\n readonly: true,\n maxLength: 255,\n description: 'Display label of the target record at write time',\n group: 'Target',\n }),\n\n url: Field.url({\n label: 'URL',\n required: false,\n readonly: true,\n description: 'Optional deep-link to the activity target',\n group: 'Target',\n }),\n\n // ── Context ──────────────────────────────────────────────────\n project_id: Field.lookup('sys_project', {\n label: 'Project',\n required: false,\n readonly: true,\n searchable: true,\n description: 'Project context (multi-project deployments)',\n group: 'Context',\n }),\n\n metadata: Field.textarea({\n label: 'Metadata',\n required: false,\n readonly: true,\n description: 'JSON-serialized additional context',\n group: 'Context',\n }),\n },\n\n indexes: [\n { fields: ['timestamp'] },\n { fields: ['actor_id'] },\n { fields: ['object_name', 'record_id'] },\n { fields: ['type'] },\n { fields: ['project_id'] },\n ],\n\n enable: {\n trackHistory: false,\n searchable: true,\n apiEnabled: true,\n apiMethods: ['get', 'list'],\n trash: false,\n mru: false,\n clone: false,\n },\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_comment — Threaded Record Comments\n *\n * Generic threaded discussion attached to any record via `thread_id`.\n * `thread_id` is conventionally formatted as `{object}:{record_id}`\n * (e.g. `sys_user:abc123`, `account:9001`) so a single index covers\n * \"all comments on this record\" lookups across every object.\n *\n * Distinct from `feed_item` (Salesforce-style Chatter timeline that\n * mixes comments with field changes / events / approvals). Use\n * `sys_comment` when you want a focused threaded discussion surface\n * without the heavier Chatter envelope.\n *\n * @namespace sys\n */\nexport const SysComment = ObjectSchema.create({\n name: 'sys_comment',\n label: 'Comment',\n pluralLabel: 'Comments',\n icon: 'message-square',\n isSystem: true,\n description: 'Threaded comments attached to records via thread_id',\n displayNameField: 'body',\n titleFormat: '{author_name}: {body}',\n compactLayout: ['created_at', 'author_name', 'body'],\n\n fields: {\n id: Field.text({\n label: 'Comment ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Thread ───────────────────────────────────────────────────\n thread_id: Field.text({\n label: 'Thread',\n required: true,\n searchable: true,\n maxLength: 255,\n description:\n 'Thread identifier — conventionally `{object}:{record_id}` (e.g. `sys_user:abc123`)',\n group: 'Thread',\n }),\n\n parent_id: Field.lookup('sys_comment', {\n label: 'Parent Comment',\n required: false,\n description: 'Optional parent comment for nested replies',\n group: 'Thread',\n }),\n\n reply_count: Field.number({\n label: 'Reply Count',\n defaultValue: 0,\n readonly: true,\n group: 'Thread',\n }),\n\n // ── Author ───────────────────────────────────────────────────\n author_id: Field.lookup('sys_user', {\n label: 'Author',\n required: true,\n searchable: true,\n group: 'Author',\n }),\n\n author_name: Field.text({\n label: 'Author Name',\n required: false,\n group: 'Author',\n }),\n\n author_avatar_url: Field.url({\n label: 'Author Avatar',\n required: false,\n group: 'Author',\n }),\n\n // ── Body ─────────────────────────────────────────────────────\n body: Field.textarea({\n label: 'Body',\n required: true,\n searchable: true,\n description: 'Comment text (Markdown supported)',\n group: 'Body',\n }),\n\n mentions: Field.textarea({\n label: 'Mentions',\n required: false,\n description: 'JSON array of @mention objects',\n group: 'Body',\n }),\n\n reactions: Field.textarea({\n label: 'Reactions',\n required: false,\n description: 'JSON array of emoji reaction objects',\n group: 'Body',\n }),\n\n // ── Lifecycle ────────────────────────────────────────────────\n is_edited: Field.boolean({\n label: 'Edited',\n defaultValue: false,\n group: 'Lifecycle',\n }),\n\n edited_at: Field.datetime({\n label: 'Edited At',\n required: false,\n group: 'Lifecycle',\n }),\n\n visibility: Field.select(\n ['public', 'internal', 'private'],\n {\n label: 'Visibility',\n defaultValue: 'public',\n group: 'Lifecycle',\n },\n ),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['thread_id', 'created_at'] },\n { fields: ['parent_id'] },\n { fields: ['author_id'] },\n ],\n\n enable: {\n trackHistory: true,\n searchable: true,\n apiEnabled: true,\n trash: true,\n mru: false,\n clone: false,\n },\n});\n"]}
|