@objectstack/platform-objects 7.5.0 → 7.7.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/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var data = require('@objectstack/spec/data');
4
+ var metadataCore = require('@objectstack/metadata-core');
4
5
  var ui = require('@objectstack/spec/ui');
5
6
 
6
7
  // src/identity/sys-user.object.ts
@@ -410,17 +411,11 @@ var SysUser = data.ObjectSchema.create({
410
411
  apiMethods: ["get", "list", "create", "update", "delete"],
411
412
  trash: true,
412
413
  mru: true
413
- },
414
- validations: [
415
- {
416
- name: "email_unique",
417
- type: "unique",
418
- severity: "error",
419
- message: "Email must be unique",
420
- fields: ["email"],
421
- caseSensitive: false
422
- }
423
- ]
414
+ }
415
+ // Email uniqueness is enforced by the unique index above (and better-auth's
416
+ // managed user table). A declarative `unique` validation rule is intentionally
417
+ // not used — uniqueness needs a DB lookup, not a synchronous validation, so it
418
+ // is not one of the declarable validation-rule types.
424
419
  });
425
420
  var SysSession = data.ObjectSchema.create({
426
421
  name: "sys_session",
@@ -4074,590 +4069,6 @@ var SysJobQueue = data.ObjectSchema.create({
4074
4069
  { fields: ["status"] }
4075
4070
  ]
4076
4071
  });
4077
- var SysMetadataObject = data.ObjectSchema.create({
4078
- name: "sys_metadata",
4079
- label: "System Metadata",
4080
- pluralLabel: "System Metadata",
4081
- icon: "settings",
4082
- isSystem: true,
4083
- // managedBy: 'system' — the metadata table backs every other config
4084
- // object. Writing rows directly here bypasses the typed Zod APIs and
4085
- // would let an admin inject malformed payloads. The "All Metadata"
4086
- // menu is therefore a read-only debug surface (Export only); typed
4087
- // edits flow through the dedicated per-type pages (Approval Process,
4088
- // Sharing Rule, etc.).
4089
- managedBy: "system",
4090
- description: "Stores platform and user-scope metadata records (objects, views, flows, etc.)",
4091
- fields: {
4092
- /** Primary Key (UUID) */
4093
- id: data.Field.text({
4094
- label: "ID",
4095
- required: true,
4096
- readonly: true
4097
- }),
4098
- /** Machine name — unique identifier used in code references */
4099
- name: data.Field.text({
4100
- label: "Name",
4101
- required: true,
4102
- searchable: true,
4103
- maxLength: 255
4104
- }),
4105
- /** Metadata type (e.g. "object", "view", "flow") */
4106
- type: data.Field.text({
4107
- label: "Metadata Type",
4108
- required: true,
4109
- searchable: true,
4110
- maxLength: 100
4111
- }),
4112
- /** Namespace / module grouping (e.g. "crm", "core") */
4113
- namespace: data.Field.text({
4114
- label: "Namespace",
4115
- required: false,
4116
- defaultValue: "default",
4117
- maxLength: 100
4118
- }),
4119
- /** Package that owns/delivered this metadata (legacy string identifier, kept for compat) */
4120
- package_id: data.Field.text({
4121
- label: "Package ID",
4122
- required: false,
4123
- maxLength: 255,
4124
- description: "Legacy package manifest ID string. Use package_version_id for new records."
4125
- }),
4126
- /**
4127
- * FK → sys_package_version (UUID). Set for metadata that belongs to a specific
4128
- * package release snapshot. NULL = platform-built-in or environment override.
4129
- */
4130
- package_version_id: data.Field.lookup("sys_package_version", {
4131
- label: "Package Version",
4132
- required: false,
4133
- description: "Foreign key to sys_package_version (UUID). Null = platform-built-in or env-level override."
4134
- }),
4135
- /** Who manages this record: package, platform, or user */
4136
- managed_by: data.Field.select(["package", "platform", "user"], {
4137
- label: "Managed By",
4138
- required: false
4139
- }),
4140
- /** Scope: system (code), platform (admin DB), user (personal DB) */
4141
- scope: data.Field.select(["system", "platform", "user"], {
4142
- label: "Scope",
4143
- required: true,
4144
- defaultValue: "platform"
4145
- }),
4146
- /** JSON payload — the actual metadata configuration */
4147
- metadata: data.Field.textarea({
4148
- label: "Metadata",
4149
- required: true,
4150
- description: "JSON-serialized metadata payload"
4151
- }),
4152
- /** Parent metadata name for extension/override */
4153
- extends: data.Field.text({
4154
- label: "Extends",
4155
- required: false,
4156
- maxLength: 255
4157
- }),
4158
- /** Merge strategy when extending parent metadata */
4159
- strategy: data.Field.select(["merge", "replace"], {
4160
- label: "Strategy",
4161
- required: false,
4162
- defaultValue: "merge"
4163
- }),
4164
- /** Owner user ID (for user-scope items) */
4165
- owner: data.Field.text({
4166
- label: "Owner",
4167
- required: false,
4168
- maxLength: 255
4169
- }),
4170
- /** Lifecycle state */
4171
- state: data.Field.select(["draft", "active", "archived", "deprecated"], {
4172
- label: "State",
4173
- required: false,
4174
- defaultValue: "active"
4175
- }),
4176
- /** Organization ID for multi-tenant isolation */
4177
- organization_id: data.Field.lookup("sys_organization", {
4178
- label: "Organization",
4179
- required: false,
4180
- description: "Organization for multi-tenant isolation."
4181
- }),
4182
- /**
4183
- * @deprecated ADR-0005 (revised 2026-05): per-env DBs replace per-project
4184
- * isolation. `environment_id` is no longer written by saveMetaItem and not
4185
- * consulted by overlay reads. Kept for legacy rows; new writes leave it
4186
- * NULL. Will be dropped in a future schema migration.
4187
- */
4188
- environment_id: data.Field.lookup("sys_environment", {
4189
- label: "Environment (deprecated)",
4190
- required: false,
4191
- description: "DEPRECATED. Use organization_id for tenant isolation."
4192
- }),
4193
- /** Version number for optimistic concurrency */
4194
- version: data.Field.number({
4195
- label: "Version",
4196
- required: false,
4197
- defaultValue: 1
4198
- }),
4199
- /** Content checksum for change detection (e.g. `sha256:<64 hex>` = 71 chars) */
4200
- checksum: data.Field.text({
4201
- label: "Checksum",
4202
- required: false,
4203
- maxLength: 71
4204
- }),
4205
- /** Origin of this metadata record */
4206
- source: data.Field.select(["filesystem", "database", "api", "migration"], {
4207
- label: "Source",
4208
- required: false
4209
- }),
4210
- /** Classification tags (JSON array) */
4211
- tags: data.Field.textarea({
4212
- label: "Tags",
4213
- required: false,
4214
- description: "JSON-serialized array of classification tags"
4215
- }),
4216
- /** Audit fields */
4217
- created_by: data.Field.lookup("sys_user", {
4218
- label: "Created By",
4219
- required: false,
4220
- readonly: true
4221
- }),
4222
- created_at: data.Field.datetime({
4223
- label: "Created At",
4224
- required: false,
4225
- readonly: true
4226
- }),
4227
- updated_by: data.Field.lookup("sys_user", {
4228
- label: "Updated By",
4229
- required: false
4230
- }),
4231
- updated_at: data.Field.datetime({
4232
- label: "Updated At",
4233
- required: false
4234
- })
4235
- },
4236
- indexes: [
4237
- // ADR-0005 (revised 2026-05): overlay uniqueness is scoped by
4238
- // (type, name, organization_id), restricted to active rows so resets
4239
- // / archived versions don't collide. environment_id is deprecated and
4240
- // not part of the discriminator. The runtime layer (protocol.ts
4241
- // ensureOverlayIndex) issues a DROP-then-CREATE migration to
4242
- // replace any pre-existing legacy composite index in-place.
4243
- {
4244
- name: "idx_sys_metadata_overlay_active",
4245
- fields: ["type", "name", "organization_id"],
4246
- unique: true,
4247
- partial: "state = 'active'"
4248
- },
4249
- { name: "idx_sys_metadata_org_type", fields: ["organization_id", "type"] },
4250
- { fields: ["type", "scope"] },
4251
- { fields: ["package_version_id"] },
4252
- { fields: ["state"] },
4253
- { fields: ["namespace"] }
4254
- ],
4255
- enable: {
4256
- trackHistory: true,
4257
- searchable: false,
4258
- apiEnabled: true,
4259
- apiMethods: ["get", "list", "create", "update", "delete"],
4260
- trash: false
4261
- },
4262
- // Named list views — power the Setup App "Data Model" group so admins
4263
- // can browse object/field metadata in a typed grid instead of the raw
4264
- // `All Metadata` debug surface. Each entry pre-filters by `type` and
4265
- // shows the columns that matter for that type. The dedicated visual
4266
- // designer (objectui's <ObjectManager> / <FieldDesigner>) deep-links
4267
- // from the row's `Edit in Designer` action; the grid stays useful for
4268
- // search, audit (state / updated_at) and triage.
4269
- listViews: {
4270
- only_objects: {
4271
- type: "grid",
4272
- name: "only_objects",
4273
- label: "Objects",
4274
- data: { provider: "object", object: "sys_metadata" },
4275
- columns: ["name", "namespace", "scope", "managed_by", "state", "updated_at"],
4276
- filter: [{ field: "type", operator: "equals", value: "object" }],
4277
- sort: [{ field: "name", order: "asc" }],
4278
- pagination: { pageSize: 50 }
4279
- },
4280
- only_fields: {
4281
- type: "grid",
4282
- name: "only_fields",
4283
- label: "Fields",
4284
- data: { provider: "object", object: "sys_metadata" },
4285
- columns: ["name", "namespace", "scope", "managed_by", "state", "updated_at"],
4286
- filter: [{ field: "type", operator: "equals", value: "field" }],
4287
- sort: [{ field: "name", order: "asc" }],
4288
- pagination: { pageSize: 50 }
4289
- },
4290
- all_metadata: {
4291
- type: "grid",
4292
- name: "all_metadata",
4293
- label: "All",
4294
- data: { provider: "object", object: "sys_metadata" },
4295
- columns: ["name", "type", "namespace", "scope", "state", "updated_at"],
4296
- sort: [{ field: "updated_at", order: "desc" }],
4297
- pagination: { pageSize: 50 }
4298
- }
4299
- }
4300
- });
4301
- var SysMetadataHistoryObject = data.ObjectSchema.create({
4302
- name: "sys_metadata_history",
4303
- label: "Metadata History",
4304
- pluralLabel: "Metadata History",
4305
- icon: "history",
4306
- isSystem: true,
4307
- managedBy: "system",
4308
- description: "Durable event log of metadata overlay changes (per-org, append-only)",
4309
- fields: {
4310
- /** Primary Key (UUID) */
4311
- id: data.Field.text({
4312
- label: "ID",
4313
- required: true,
4314
- readonly: true
4315
- }),
4316
- /** Per-org monotonic event sequence (durable cursor for replay). */
4317
- event_seq: data.Field.number({
4318
- label: "Event Seq",
4319
- required: true,
4320
- readonly: true,
4321
- description: "Per-organization monotonic event log cursor."
4322
- }),
4323
- /** Machine name (denormalized for easier querying) */
4324
- name: data.Field.text({
4325
- label: "Name",
4326
- required: true,
4327
- searchable: true,
4328
- readonly: true,
4329
- maxLength: 255
4330
- }),
4331
- /** Metadata type (denormalized for easier querying) */
4332
- type: data.Field.text({
4333
- label: "Metadata Type",
4334
- required: true,
4335
- searchable: true,
4336
- readonly: true,
4337
- maxLength: 100
4338
- }),
4339
- /** Per-(org,type,name) lineage counter at this snapshot. */
4340
- version: data.Field.number({
4341
- label: "Version",
4342
- required: true,
4343
- readonly: true
4344
- }),
4345
- /** Type of operation that created this history entry */
4346
- operation_type: data.Field.select(["create", "update", "publish", "revert", "delete"], {
4347
- label: "Operation Type",
4348
- required: true,
4349
- readonly: true
4350
- }),
4351
- /**
4352
- * Historical metadata snapshot (JSON payload).
4353
- * Null for `operation_type = 'delete'` — the row carries no body.
4354
- */
4355
- metadata: data.Field.textarea({
4356
- label: "Metadata",
4357
- required: false,
4358
- readonly: true,
4359
- description: "JSON-serialized metadata snapshot at this version (null for deletes)."
4360
- }),
4361
- /** SHA-256 checksum of metadata content (null for deletes). */
4362
- checksum: data.Field.text({
4363
- label: "Checksum",
4364
- required: false,
4365
- readonly: true,
4366
- maxLength: 80
4367
- }),
4368
- /** Checksum of the previous version (null for the first event). */
4369
- previous_checksum: data.Field.text({
4370
- label: "Previous Checksum",
4371
- required: false,
4372
- readonly: true,
4373
- maxLength: 80
4374
- }),
4375
- /** Human-readable description of changes (= MetadataEvent.message). */
4376
- change_note: data.Field.textarea({
4377
- label: "Change Note",
4378
- required: false,
4379
- readonly: true,
4380
- description: "Description of what changed in this version."
4381
- }),
4382
- /**
4383
- * Producer of the event ('sys-metadata-repo', 'fs', 'studio',
4384
- * 'api', …). Defaults to 'sys-metadata-repo' on the canonical
4385
- * write path; preserved on history() reads as MetadataEvent.source.
4386
- */
4387
- source: data.Field.text({
4388
- label: "Source",
4389
- required: false,
4390
- readonly: true,
4391
- maxLength: 64
4392
- }),
4393
- /** Organization ID for multi-tenant isolation */
4394
- organization_id: data.Field.lookup("sys_organization", {
4395
- label: "Organization",
4396
- required: false,
4397
- readonly: true,
4398
- description: "Organization for multi-tenant isolation."
4399
- }),
4400
- /** User who made this change (= MetadataEvent.actor). */
4401
- recorded_by: data.Field.lookup("sys_user", {
4402
- label: "Recorded By",
4403
- required: false,
4404
- readonly: true
4405
- }),
4406
- /** When was this version recorded */
4407
- recorded_at: data.Field.datetime({
4408
- label: "Recorded At",
4409
- required: true,
4410
- readonly: true
4411
- })
4412
- },
4413
- indexes: [
4414
- { fields: ["organization_id", "event_seq"], unique: true },
4415
- { fields: ["organization_id", "type", "name", "version"], unique: true },
4416
- { fields: ["organization_id", "type", "name", "recorded_at"] },
4417
- // ADR-0009: getByHash() lookup — execution-pinned types resolve a
4418
- // historical body by content hash via this index.
4419
- { fields: ["organization_id", "type", "name", "checksum"] },
4420
- { fields: ["type", "name"] },
4421
- { fields: ["recorded_at"] },
4422
- { fields: ["operation_type"] }
4423
- ],
4424
- enable: {
4425
- trackHistory: false,
4426
- searchable: false,
4427
- apiEnabled: true,
4428
- apiMethods: ["get", "list"],
4429
- trash: false
4430
- }
4431
- });
4432
- var SysMetadataAuditObject = data.ObjectSchema.create({
4433
- name: "sys_metadata_audit",
4434
- label: "Metadata Audit",
4435
- pluralLabel: "Metadata Audit",
4436
- icon: "shield-check",
4437
- isSystem: true,
4438
- managedBy: "append-only",
4439
- description: "Append-only audit trail of metadata write decisions (ADR-0010).",
4440
- fields: {
4441
- /** Primary Key (UUID) */
4442
- id: data.Field.text({
4443
- label: "ID",
4444
- required: true,
4445
- readonly: true
4446
- }),
4447
- /** When the decision was made (ISO-8601 UTC). */
4448
- occurred_at: data.Field.datetime({
4449
- label: "Occurred At",
4450
- required: true,
4451
- readonly: true
4452
- }),
4453
- /** Acting principal (user id, system id, or 'system'). */
4454
- actor: data.Field.text({
4455
- label: "Actor",
4456
- required: true,
4457
- readonly: true,
4458
- maxLength: 255,
4459
- description: 'Acting principal \u2014 user id, system id, or "system".'
4460
- }),
4461
- /** Code path that produced the decision (e.g. `protocol.saveMetaItem`). */
4462
- source: data.Field.text({
4463
- label: "Source",
4464
- required: false,
4465
- readonly: true,
4466
- maxLength: 128
4467
- }),
4468
- /** Metadata type (singular, e.g. `app`, `object`, `view`). */
4469
- type: data.Field.text({
4470
- label: "Metadata Type",
4471
- required: true,
4472
- readonly: true,
4473
- searchable: true,
4474
- maxLength: 100
4475
- }),
4476
- /** Item machine name. */
4477
- name: data.Field.text({
4478
- label: "Name",
4479
- required: true,
4480
- readonly: true,
4481
- searchable: true,
4482
- maxLength: 255
4483
- }),
4484
- /** Organization for multi-tenant filtering. NULL for env-wide writes. */
4485
- organization_id: data.Field.lookup("sys_organization", {
4486
- label: "Organization",
4487
- required: false,
4488
- readonly: true
4489
- }),
4490
- /** Operation kind. */
4491
- operation: data.Field.select(["save", "publish", "rollback", "delete", "reset"], {
4492
- label: "Operation",
4493
- required: true,
4494
- readonly: true
4495
- }),
4496
- /** Decision outcome — allowed, denied (refused), or forced (bypassed via override). */
4497
- outcome: data.Field.select(["allowed", "denied", "forced"], {
4498
- label: "Outcome",
4499
- required: true,
4500
- readonly: true
4501
- }),
4502
- /**
4503
- * Machine-readable code for the decision:
4504
- * - on `allowed`: `'ok'`
4505
- * - on `denied`: `'not_overridable'` | `'not_creatable'` |
4506
- * `'item_locked'` | `'invalid_metadata'` | `'destructive_change'` |
4507
- * `'metadata_conflict'`
4508
- * - on `forced`: `'lock_override'` (Phase 3)
4509
- */
4510
- code: data.Field.text({
4511
- label: "Code",
4512
- required: true,
4513
- readonly: true,
4514
- maxLength: 64
4515
- }),
4516
- /**
4517
- * Lock state observed at the time of the decision (`none` if the
4518
- * item carried no `_lock`). Captured even on `allowed` rows so
4519
- * later compliance queries can see "what was the lock state when
4520
- * this write succeeded".
4521
- */
4522
- lock_state: data.Field.select(["none", "no-overlay", "no-delete", "full"], {
4523
- label: "Lock State",
4524
- required: false,
4525
- readonly: true
4526
- }),
4527
- /** True when the write succeeded by bypassing a lock (Phase 3). */
4528
- lock_overridden: data.Field.boolean({
4529
- label: "Lock Overridden",
4530
- required: false,
4531
- readonly: true
4532
- }),
4533
- /** Optional request correlation id for tracing. */
4534
- request_id: data.Field.text({
4535
- label: "Request ID",
4536
- required: false,
4537
- readonly: true,
4538
- maxLength: 128
4539
- }),
4540
- /** Optional free-form context (e.g. brief diff summary). */
4541
- note: data.Field.textarea({
4542
- label: "Note",
4543
- required: false,
4544
- readonly: true
4545
- })
4546
- },
4547
- indexes: [
4548
- { fields: ["organization_id", "occurred_at"] },
4549
- { fields: ["type", "name", "occurred_at"] },
4550
- { fields: ["actor", "occurred_at"] },
4551
- { fields: ["outcome"] }
4552
- ],
4553
- enable: {
4554
- trackHistory: false,
4555
- searchable: false,
4556
- apiEnabled: true,
4557
- apiMethods: ["get", "list"],
4558
- trash: false
4559
- }
4560
- });
4561
- var SysViewDefinitionObject = data.ObjectSchema.create({
4562
- name: "sys_view_definition",
4563
- label: "View Definition",
4564
- pluralLabel: "View Definitions",
4565
- icon: "layout-grid",
4566
- isSystem: true,
4567
- description: "Runtime-authored view definitions (shared / personal layers). The package layer ships from source.",
4568
- fields: {
4569
- /** Primary Key (UUID) */
4570
- id: data.Field.text({ label: "ID", required: true, readonly: true }),
4571
- /**
4572
- * Globally-unique qualified view id, `<object>.<viewKey>`, matching the
4573
- * spec `ViewItemSchema.name`. For personal views the runtime may suffix
4574
- * to keep it unique per owner.
4575
- */
4576
- name: data.Field.text({
4577
- label: "Name",
4578
- required: true,
4579
- searchable: true,
4580
- maxLength: 255
4581
- }),
4582
- /** Bound object — the foreign key used to aggregate views for the switcher. */
4583
- object: data.Field.text({
4584
- label: "Object",
4585
- required: true,
4586
- searchable: true,
4587
- maxLength: 255
4588
- }),
4589
- /** Whether `config` is a ListView (list family) or a FormView. */
4590
- view_kind: data.Field.select(["list", "form"], {
4591
- label: "View Kind",
4592
- required: true,
4593
- defaultValue: "list"
4594
- }),
4595
- /** Display label (plain string; i18n keys also accepted). */
4596
- label: data.Field.text({ label: "Label", required: false, maxLength: 255 }),
4597
- /** Whether this is the object's default view in the switcher. */
4598
- is_default: data.Field.boolean({ label: "Is Default", required: false, defaultValue: false }),
4599
- /** Sort order within the object's switcher / left rail. */
4600
- view_order: data.Field.number({ label: "Order", required: false, defaultValue: 0 }),
4601
- /**
4602
- * Identity layer. Only `shared` and `personal` are stored at runtime;
4603
- * `package` views come from source.
4604
- */
4605
- scope: data.Field.select(["shared", "personal"], {
4606
- label: "Scope",
4607
- required: true,
4608
- defaultValue: "personal"
4609
- }),
4610
- /** Owner user id — set when scope = personal; null for shared. */
4611
- owner: data.Field.text({ label: "Owner", required: false, maxLength: 255 }),
4612
- /** Hidden from the switcher (per-user / per-org declutter). */
4613
- hidden: data.Field.boolean({ label: "Hidden", required: false, defaultValue: false }),
4614
- /** The ListView / FormView configuration payload. */
4615
- config: data.Field.json({
4616
- label: "Config",
4617
- required: true,
4618
- description: "ListView or FormView configuration (matches spec ViewItem.config)."
4619
- }),
4620
- /** Organization for multi-tenant isolation. */
4621
- organization_id: data.Field.lookup("sys_organization", {
4622
- label: "Organization",
4623
- required: false,
4624
- description: "Organization for multi-tenant isolation."
4625
- }),
4626
- /** Lifecycle state. */
4627
- state: data.Field.select(["draft", "active", "archived"], {
4628
- label: "State",
4629
- required: false,
4630
- defaultValue: "active"
4631
- }),
4632
- /** Audit fields. */
4633
- created_by: data.Field.lookup("sys_user", { label: "Created By", required: false, readonly: true }),
4634
- created_at: data.Field.datetime({ label: "Created At", required: false, readonly: true }),
4635
- updated_by: data.Field.lookup("sys_user", { label: "Updated By", required: false }),
4636
- updated_at: data.Field.datetime({ label: "Updated At", required: false })
4637
- },
4638
- indexes: [
4639
- // A given view name is unique per (organization, owner) among active rows —
4640
- // a shared view (owner NULL) and each user's personal views don't collide.
4641
- {
4642
- name: "idx_sys_view_def_active",
4643
- fields: ["name", "organization_id", "owner"],
4644
- unique: true,
4645
- partial: "state = 'active'"
4646
- },
4647
- // The switcher query: views for one object within a tenant.
4648
- { name: "idx_sys_view_def_object", fields: ["organization_id", "object"] },
4649
- { fields: ["scope"] },
4650
- { fields: ["owner"] },
4651
- { fields: ["state"] }
4652
- ],
4653
- enable: {
4654
- trackHistory: true,
4655
- searchable: false,
4656
- apiEnabled: true,
4657
- apiMethods: ["get", "list", "create", "update", "delete"],
4658
- trash: false
4659
- }
4660
- });
4661
4072
  var SysSetting = data.ObjectSchema.create({
4662
4073
  name: "sys_setting",
4663
4074
  label: "Setting",
@@ -4818,12 +4229,10 @@ var SysSecret = data.ObjectSchema.create({
4818
4229
  isSystem: true,
4819
4230
  managedBy: "system",
4820
4231
  description: "Cipher store referenced by sys_setting handles. Never holds plaintext.",
4821
- scope: "tenant",
4822
4232
  compactLayout: ["namespace", "key", "kms_key_id", "version", "rotated_at"],
4823
- defaultViewName: "all",
4824
- views: {
4233
+ listViews: {
4825
4234
  all: {
4826
- type: "list",
4235
+ type: "grid",
4827
4236
  name: "all",
4828
4237
  label: "All Secrets",
4829
4238
  columns: ["namespace", "key", "kms_key_id", "version", "rotated_at", "created_at"]
@@ -4911,12 +4320,10 @@ var SysSettingAudit = data.ObjectSchema.create({
4911
4320
  isSystem: true,
4912
4321
  managedBy: "system",
4913
4322
  description: "Append-only audit trail for SettingsService mutations.",
4914
- scope: "tenant",
4915
4323
  compactLayout: ["namespace", "key", "scope", "action", "actor_id", "created_at"],
4916
- defaultViewName: "recent",
4917
- views: {
4324
+ listViews: {
4918
4325
  recent: {
4919
- type: "list",
4326
+ type: "grid",
4920
4327
  name: "recent",
4921
4328
  label: "Recent",
4922
4329
  columns: ["created_at", "namespace", "key", "scope", "action", "actor_id", "source"],
@@ -21899,6 +21306,26 @@ function createPlatformObjectsPlugin() {
21899
21306
  return new PlatformObjectsPlugin();
21900
21307
  }
21901
21308
 
21309
+ Object.defineProperty(exports, "SysMetadata", {
21310
+ enumerable: true,
21311
+ get: function () { return metadataCore.SysMetadata; }
21312
+ });
21313
+ Object.defineProperty(exports, "SysMetadataAuditObject", {
21314
+ enumerable: true,
21315
+ get: function () { return metadataCore.SysMetadataAuditObject; }
21316
+ });
21317
+ Object.defineProperty(exports, "SysMetadataHistoryObject", {
21318
+ enumerable: true,
21319
+ get: function () { return metadataCore.SysMetadataHistoryObject; }
21320
+ });
21321
+ Object.defineProperty(exports, "SysMetadataObject", {
21322
+ enumerable: true,
21323
+ get: function () { return metadataCore.SysMetadataObject; }
21324
+ });
21325
+ Object.defineProperty(exports, "SysViewDefinitionObject", {
21326
+ enumerable: true,
21327
+ get: function () { return metadataCore.SysViewDefinitionObject; }
21328
+ });
21902
21329
  exports.ACCOUNT_APP = ACCOUNT_APP;
21903
21330
  exports.MetadataFormsTranslations = MetadataFormsTranslations;
21904
21331
  exports.PlatformObjectsPlugin = PlatformObjectsPlugin;
@@ -21920,10 +21347,6 @@ exports.SysJobQueue = SysJobQueue;
21920
21347
  exports.SysJobRun = SysJobRun;
21921
21348
  exports.SysJwks = SysJwks;
21922
21349
  exports.SysMember = SysMember;
21923
- exports.SysMetadata = SysMetadataObject;
21924
- exports.SysMetadataAuditObject = SysMetadataAuditObject;
21925
- exports.SysMetadataHistoryObject = SysMetadataHistoryObject;
21926
- exports.SysMetadataObject = SysMetadataObject;
21927
21350
  exports.SysNotification = SysNotification;
21928
21351
  exports.SysOauthAccessToken = SysOauthAccessToken;
21929
21352
  exports.SysOauthApplication = SysOauthApplication;
@@ -21944,7 +21367,6 @@ exports.SysUser = SysUser;
21944
21367
  exports.SysUserDetailPage = SysUserDetailPage;
21945
21368
  exports.SysUserPreference = SysUserPreference;
21946
21369
  exports.SysVerification = SysVerification;
21947
- exports.SysViewDefinitionObject = SysViewDefinitionObject;
21948
21370
  exports.SystemOverviewDashboard = SystemOverviewDashboard;
21949
21371
  exports.createPlatformObjectsPlugin = createPlatformObjectsPlugin;
21950
21372
  exports.en = en;