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