@objectstack/platform-objects 6.5.1 → 6.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.mjs CHANGED
@@ -423,6 +423,30 @@ var SysAccount = ObjectSchema.create({
423
423
  description: "OAuth and authentication provider accounts",
424
424
  titleFormat: "{provider_id} - {account_id}",
425
425
  compactLayout: ["provider_id", "user_id", "account_id"],
426
+ // Custom actions — sysadmins routinely need to revoke a user's OAuth
427
+ // link (e.g. when an SSO provider is decommissioned or the user
428
+ // requests it). Better-auth exposes `/unlink-account { providerId,
429
+ // accountId }` for this. The form is locked to the row's values so
430
+ // it acts as a one-click confirmation rather than a free-form edit.
431
+ actions: [
432
+ {
433
+ name: "unlink_account",
434
+ label: "Unlink Account",
435
+ icon: "unlink",
436
+ variant: "danger",
437
+ mode: "delete",
438
+ locations: ["list_item", "record_header"],
439
+ type: "api",
440
+ target: "/api/v1/auth/unlink-account",
441
+ confirmText: "Unlink this identity link? The user will no longer be able to sign in with this provider until they re-link it from their account settings.",
442
+ successMessage: "Identity link removed",
443
+ refreshAfter: true,
444
+ params: [
445
+ { name: "providerId", field: "provider_id", defaultFromRow: true, required: true },
446
+ { name: "accountId", field: "account_id", defaultFromRow: true, required: true }
447
+ ]
448
+ }
449
+ ],
426
450
  listViews: {
427
451
  mine: {
428
452
  type: "grid",
@@ -1977,6 +2001,96 @@ var SysOauthApplication = ObjectSchema.create({
1977
2001
  displayNameField: "name",
1978
2002
  titleFormat: "{name}",
1979
2003
  compactLayout: ["name", "client_id", "type", "disabled"],
2004
+ // Custom actions — all OAuth-application mutations are routed through
2005
+ // better-auth's `@better-auth/oauth-provider` endpoints (and a thin
2006
+ // ObjectStack-added auth route for the enable/disable toggle) rather
2007
+ // than the generic data layer, so server-side validation, secret
2008
+ // hashing, and audit hooks all run. The generic `delete` API method
2009
+ // is intentionally dropped from `apiMethods` below so the only delete
2010
+ // path is the better-auth wrapper.
2011
+ //
2012
+ // Upstream gap (better-auth 1.6.11): the stock `/admin/oauth2/update-client`
2013
+ // endpoint's Zod body schema does NOT accept the `disabled` flag, even
2014
+ // though the column exists and the runtime honours it. We bridge the
2015
+ // gap with `POST /api/v1/auth/admin/oauth2/toggle-disabled`, registered
2016
+ // by plugin-auth, which writes through better-auth's own adapter under
2017
+ // the auth namespace (no generic data-layer bypass). When upstream
2018
+ // ships `disabled` support, retarget the enable/disable actions and
2019
+ // delete the bridge route.
2020
+ actions: [
2021
+ {
2022
+ name: "disable_oauth_application",
2023
+ label: "Disable OAuth Application",
2024
+ icon: "pause-circle",
2025
+ variant: "secondary",
2026
+ mode: "custom",
2027
+ locations: ["list_item", "record_header"],
2028
+ type: "api",
2029
+ method: "POST",
2030
+ target: "/api/v1/auth/admin/oauth2/toggle-disabled",
2031
+ confirmText: "Disable this OAuth application? Active access/refresh tokens issued to it will continue to be rejected at the token, authorize, and introspect endpoints. Existing integrations will stop working immediately.",
2032
+ successMessage: "OAuth application disabled",
2033
+ refreshAfter: true,
2034
+ visible: "!record.disabled",
2035
+ bodyExtra: { disabled: true },
2036
+ params: [
2037
+ { name: "client_id", field: "client_id", defaultFromRow: true, required: true }
2038
+ ]
2039
+ },
2040
+ {
2041
+ name: "enable_oauth_application",
2042
+ label: "Enable OAuth Application",
2043
+ icon: "play-circle",
2044
+ variant: "primary",
2045
+ mode: "custom",
2046
+ locations: ["list_item", "record_header"],
2047
+ type: "api",
2048
+ method: "POST",
2049
+ target: "/api/v1/auth/admin/oauth2/toggle-disabled",
2050
+ confirmText: "Re-enable this OAuth application? Token issuance, authorization, and introspection will resume immediately.",
2051
+ successMessage: "OAuth application enabled",
2052
+ refreshAfter: true,
2053
+ visible: "record.disabled",
2054
+ bodyExtra: { disabled: false },
2055
+ params: [
2056
+ { name: "client_id", field: "client_id", defaultFromRow: true, required: true }
2057
+ ]
2058
+ },
2059
+ {
2060
+ name: "rotate_client_secret",
2061
+ label: "Rotate Client Secret",
2062
+ icon: "refresh-cw",
2063
+ variant: "secondary",
2064
+ mode: "custom",
2065
+ locations: ["list_item", "record_header"],
2066
+ type: "api",
2067
+ method: "POST",
2068
+ target: "/api/v1/auth/oauth2/client/rotate-secret",
2069
+ confirmText: "Rotate this OAuth client's secret? The previous secret will stop working immediately and any integrations using it will break until they are updated with the new secret. The new secret is shown only once.",
2070
+ successMessage: "Client secret rotated \u2014 copy the new value from the response now.",
2071
+ refreshAfter: true,
2072
+ params: [
2073
+ { name: "client_id", field: "client_id", defaultFromRow: true, required: true }
2074
+ ]
2075
+ },
2076
+ {
2077
+ name: "delete_oauth_application",
2078
+ label: "Delete OAuth Application",
2079
+ icon: "trash-2",
2080
+ variant: "danger",
2081
+ mode: "delete",
2082
+ locations: ["list_item", "record_header"],
2083
+ type: "api",
2084
+ method: "POST",
2085
+ target: "/api/v1/auth/oauth2/delete-client",
2086
+ confirmText: "Permanently delete this OAuth application? All issued tokens and consents will be invalidated and integrations using this client_id will stop working immediately. This cannot be undone.",
2087
+ successMessage: "OAuth application deleted",
2088
+ refreshAfter: true,
2089
+ params: [
2090
+ { name: "client_id", field: "client_id", defaultFromRow: true, required: true }
2091
+ ]
2092
+ }
2093
+ ],
1980
2094
  listViews: {
1981
2095
  active: {
1982
2096
  type: "grid",
@@ -2208,7 +2322,12 @@ var SysOauthApplication = ObjectSchema.create({
2208
2322
  trackHistory: true,
2209
2323
  searchable: true,
2210
2324
  apiEnabled: true,
2211
- apiMethods: ["get", "list", "delete"],
2325
+ // All mutations (create/update/delete) must go through better-auth's
2326
+ // oauth-provider endpoints under /api/v1/auth/{admin/,}oauth2/* — the
2327
+ // generic data layer is read-only for this object so sysadmins cannot
2328
+ // bypass server-side OAuth validation. The Delete row action above is
2329
+ // wired to /api/v1/auth/oauth2/delete-client.
2330
+ apiMethods: ["get", "list"],
2212
2331
  trash: false,
2213
2332
  mru: false
2214
2333
  }
@@ -2491,6 +2610,83 @@ var SysRole = ObjectSchema.create({
2491
2610
  displayNameField: "label",
2492
2611
  titleFormat: "{label}",
2493
2612
  compactLayout: ["label", "name", "active", "is_default"],
2613
+ // Custom actions — system roles drive RBAC and are edited rarely but
2614
+ // require the four high-frequency sysadmin affordances every IdP
2615
+ // (Salesforce, ServiceNow, Okta) ships: activate/deactivate (lifecycle
2616
+ // without losing assignments), mark default (auto-assign to new users),
2617
+ // and clone (template for new roles). All operations hit the generic
2618
+ // data CRUD endpoint exposed by `apiEnabled` — no custom server route
2619
+ // required because `managedBy: 'config'` allows direct mutation.
2620
+ actions: [
2621
+ {
2622
+ name: "activate_role",
2623
+ label: "Activate Role",
2624
+ icon: "circle-check",
2625
+ variant: "secondary",
2626
+ mode: "custom",
2627
+ locations: ["list_item", "record_header"],
2628
+ type: "api",
2629
+ method: "PATCH",
2630
+ target: "/api/v1/data/sys_role/{id}",
2631
+ bodyExtra: { active: true },
2632
+ successMessage: "Role activated",
2633
+ refreshAfter: true
2634
+ },
2635
+ {
2636
+ name: "deactivate_role",
2637
+ label: "Deactivate Role",
2638
+ icon: "circle-off",
2639
+ variant: "danger",
2640
+ mode: "custom",
2641
+ locations: ["list_item", "record_header"],
2642
+ type: "api",
2643
+ method: "PATCH",
2644
+ target: "/api/v1/data/sys_role/{id}",
2645
+ bodyExtra: { active: false },
2646
+ confirmText: "Deactivate this role? Users with the role keep their assignment but the role stops granting permissions until re-activated.",
2647
+ successMessage: "Role deactivated",
2648
+ refreshAfter: true
2649
+ },
2650
+ {
2651
+ name: "set_default_role",
2652
+ label: "Set as Default",
2653
+ icon: "star",
2654
+ variant: "secondary",
2655
+ mode: "custom",
2656
+ locations: ["list_item", "record_header"],
2657
+ type: "api",
2658
+ method: "PATCH",
2659
+ target: "/api/v1/data/sys_role/{id}",
2660
+ bodyExtra: { is_default: true },
2661
+ confirmText: "Make this the default role for new users? Existing users are unaffected.",
2662
+ successMessage: "Default role updated",
2663
+ refreshAfter: true
2664
+ },
2665
+ {
2666
+ // Clone — POST a new sys_role row pre-filled from the source. The
2667
+ // dialog asks only for the new API name / label so the operator
2668
+ // can rename atomically; permissions JSON is copied wholesale via
2669
+ // defaultFromRow.
2670
+ name: "clone_role",
2671
+ label: "Clone Role",
2672
+ icon: "copy",
2673
+ variant: "secondary",
2674
+ mode: "custom",
2675
+ locations: ["list_item", "record_header"],
2676
+ type: "api",
2677
+ method: "POST",
2678
+ target: "/api/v1/data/sys_role",
2679
+ bodyExtra: { is_default: false, active: true },
2680
+ successMessage: "Role cloned",
2681
+ refreshAfter: true,
2682
+ params: [
2683
+ { name: "label", label: "New Display Name", type: "text", required: true },
2684
+ { name: "name", label: "New API Name", type: "text", required: true, helpText: "Unique snake_case machine name" },
2685
+ { field: "description", defaultFromRow: true },
2686
+ { field: "permissions", defaultFromRow: true }
2687
+ ]
2688
+ }
2689
+ ],
2494
2690
  listViews: {
2495
2691
  active: {
2496
2692
  type: "grid",
@@ -2617,6 +2813,64 @@ var SysPermissionSet = ObjectSchema.create({
2617
2813
  displayNameField: "label",
2618
2814
  titleFormat: "{label}",
2619
2815
  compactLayout: ["label", "name", "active"],
2816
+ // Custom actions — permission sets are templates assigned to roles or
2817
+ // users (via sys_role_permission_set / sys_user_permission_set). The
2818
+ // sysadmin operations that don't live on the parent-detail tabs are
2819
+ // lifecycle (activate/deactivate without losing assignments) and
2820
+ // clone (build a new permset by tweaking an existing one). Both hit
2821
+ // the generic data CRUD endpoint — managedBy: 'config' permits it.
2822
+ actions: [
2823
+ {
2824
+ name: "activate_permission_set",
2825
+ label: "Activate",
2826
+ icon: "circle-check",
2827
+ variant: "secondary",
2828
+ mode: "custom",
2829
+ locations: ["list_item", "record_header"],
2830
+ type: "api",
2831
+ method: "PATCH",
2832
+ target: "/api/v1/data/sys_permission_set/{id}",
2833
+ bodyExtra: { active: true },
2834
+ successMessage: "Permission set activated",
2835
+ refreshAfter: true
2836
+ },
2837
+ {
2838
+ name: "deactivate_permission_set",
2839
+ label: "Deactivate",
2840
+ icon: "circle-off",
2841
+ variant: "danger",
2842
+ mode: "custom",
2843
+ locations: ["list_item", "record_header"],
2844
+ type: "api",
2845
+ method: "PATCH",
2846
+ target: "/api/v1/data/sys_permission_set/{id}",
2847
+ bodyExtra: { active: false },
2848
+ confirmText: "Deactivate this permission set? Existing assignments stay in place but stop granting access until re-activated.",
2849
+ successMessage: "Permission set deactivated",
2850
+ refreshAfter: true
2851
+ },
2852
+ {
2853
+ name: "clone_permission_set",
2854
+ label: "Clone",
2855
+ icon: "copy",
2856
+ variant: "secondary",
2857
+ mode: "custom",
2858
+ locations: ["list_item", "record_header"],
2859
+ type: "api",
2860
+ method: "POST",
2861
+ target: "/api/v1/data/sys_permission_set",
2862
+ bodyExtra: { active: true },
2863
+ successMessage: "Permission set cloned",
2864
+ refreshAfter: true,
2865
+ params: [
2866
+ { name: "label", label: "New Display Name", type: "text", required: true },
2867
+ { name: "name", label: "New API Name", type: "text", required: true, helpText: "Unique snake_case machine name" },
2868
+ { field: "description", defaultFromRow: true },
2869
+ { field: "object_permissions", defaultFromRow: true },
2870
+ { field: "field_permissions", defaultFromRow: true }
2871
+ ]
2872
+ }
2873
+ ],
2620
2874
  listViews: {
2621
2875
  active: {
2622
2876
  type: "grid",
@@ -6252,8 +6506,7 @@ var SETUP_APP = {
6252
6506
  label: "Overview",
6253
6507
  icon: "layout-dashboard",
6254
6508
  children: [
6255
- { id: "nav_system_overview", type: "dashboard", label: "System Overview", dashboardName: "system_overview", icon: "activity" },
6256
- { id: "nav_security_overview", type: "dashboard", label: "Security Overview", dashboardName: "security_overview", icon: "shield" }
6509
+ { id: "nav_system_overview", type: "dashboard", label: "System Overview", dashboardName: "system_overview", icon: "activity" }
6257
6510
  ]
6258
6511
  },
6259
6512
  {
@@ -6315,9 +6568,17 @@ var SETUP_APP = {
6315
6568
  // is used (not `object`) because settings are stored in a generic
6316
6569
  // K/V table (`sys_setting`) rather than per-namespace objects, and
6317
6570
  // the renderer is a dedicated <SettingsView> page in objectui.
6571
+ //
6572
+ // Order mirrors `builtinSettingsManifests` so left-nav order matches
6573
+ // the All-Settings index. AI groups chat + embedder under one entry
6574
+ // because operators reason about them together; Knowledge is its
6575
+ // own entry because the adapter selection is independent.
6318
6576
  { id: "nav_settings_hub", type: "url", label: "All Settings", url: "/apps/setup/system/settings", icon: "settings-2" },
6319
- { id: "nav_settings_mail", type: "url", label: "Email", url: "/apps/setup/system/settings/mail", icon: "mail" },
6320
6577
  { id: "nav_settings_branding", type: "url", label: "Branding", url: "/apps/setup/system/settings/branding", icon: "palette" },
6578
+ { id: "nav_settings_mail", type: "url", label: "Email", url: "/apps/setup/system/settings/mail", icon: "mail" },
6579
+ { id: "nav_settings_storage", type: "url", label: "File Storage", url: "/apps/setup/system/settings/storage", icon: "hard-drive" },
6580
+ { id: "nav_settings_ai", type: "url", label: "AI & Embedder", url: "/apps/setup/system/settings/ai", icon: "sparkles" },
6581
+ { id: "nav_settings_knowledge", type: "url", label: "Knowledge", url: "/apps/setup/system/settings/knowledge", icon: "book-open" },
6321
6582
  { id: "nav_settings_feature_flags", type: "url", label: "Feature Flags", url: "/apps/setup/system/settings/feature_flags", icon: "flag" }
6322
6583
  ]
6323
6584
  },
@@ -6396,63 +6657,42 @@ var SETUP_APP = {
6396
6657
  var SystemOverviewDashboard = Dashboard.create({
6397
6658
  name: "system_overview",
6398
6659
  label: "System Overview",
6399
- description: "Platform health, sessions, and audit activity",
6400
- // 12-column grid matches the widget `w` values below (3, 6, 12). Without
6401
- // this, the renderer falls back to a 4-column grid and `w: 3` becomes 75%
6402
- // width per metric — so KPI cards stack vertically instead of forming a
6403
- // 4-up row.
6660
+ description: "Platform health, security activity, and recent audit events",
6661
+ // 12-column grid matches the widget `w` values below.
6404
6662
  columns: 12,
6405
6663
  gap: 4,
6406
6664
  widgets: [
6407
- // ── Active Sessions Widget ──────────────────────────────────────
6408
- {
6409
- id: "widget_active_sessions",
6410
- title: "Active Sessions",
6411
- type: "metric",
6412
- object: "sys_session",
6413
- layout: {
6414
- x: 0,
6415
- y: 0,
6416
- w: 3,
6417
- h: 2
6418
- },
6419
- aggregate: "count",
6420
- colorVariant: "blue",
6421
- description: "Number of currently active user sessions"
6422
- },
6423
- // ── Total Users Widget ──────────────────────────────────────────
6665
+ // ── Row 1: Platform KPIs ────────────────────────────────────────
6424
6666
  {
6425
6667
  id: "widget_total_users",
6426
6668
  title: "Total Users",
6427
6669
  type: "metric",
6428
6670
  object: "sys_user",
6429
- layout: {
6430
- x: 3,
6431
- y: 0,
6432
- w: 3,
6433
- h: 2
6434
- },
6671
+ layout: { x: 0, y: 0, w: 3, h: 2 },
6435
6672
  aggregate: "count",
6436
6673
  colorVariant: "teal",
6437
6674
  description: "Total registered users in the system"
6438
6675
  },
6439
- // ── Organizations Widget ────────────────────────────────────────
6440
6676
  {
6441
6677
  id: "widget_organizations",
6442
6678
  title: "Organizations",
6443
6679
  type: "metric",
6444
6680
  object: "sys_organization",
6445
- layout: {
6446
- x: 6,
6447
- y: 0,
6448
- w: 3,
6449
- h: 2
6450
- },
6681
+ layout: { x: 3, y: 0, w: 3, h: 2 },
6451
6682
  aggregate: "count",
6452
6683
  colorVariant: "orange",
6453
6684
  description: "Total organizations on the platform"
6454
6685
  },
6455
- // ── Packages Installed Widget ───────────────────────────────────
6686
+ {
6687
+ id: "widget_active_sessions",
6688
+ title: "Active Sessions",
6689
+ type: "metric",
6690
+ object: "sys_session",
6691
+ layout: { x: 6, y: 0, w: 3, h: 2 },
6692
+ aggregate: "count",
6693
+ colorVariant: "blue",
6694
+ description: "Number of currently active user sessions"
6695
+ },
6456
6696
  {
6457
6697
  id: "widget_packages_installed",
6458
6698
  title: "Packages Installed",
@@ -6461,97 +6701,13 @@ var SystemOverviewDashboard = Dashboard.create({
6461
6701
  // Cloud-only object — only registered when service-tenant is loaded.
6462
6702
  // Hide this widget gracefully in single-environment runtimes.
6463
6703
  requiresObject: "sys_package_installation",
6464
- layout: {
6465
- x: 9,
6466
- y: 0,
6467
- w: 3,
6468
- h: 2
6469
- },
6704
+ layout: { x: 9, y: 0, w: 3, h: 2 },
6470
6705
  filter: { status: "installed" },
6471
6706
  aggregate: "count",
6472
6707
  colorVariant: "success",
6473
6708
  description: "Active package installations across projects"
6474
6709
  },
6475
- // ── Audit Actions by Type ───────────────────────────────────────
6476
- // Note: relative date filters like `NOW() - INTERVAL 7 DAY` are not
6477
- // currently substituted by the analytics layer (see
6478
- // service-analytics/strategies/filter-normalizer.ts). The dashboard's
6479
- // `globalFilters` date-range bar at the bottom is the supported way
6480
- // to scope this widget.
6481
- {
6482
- id: "widget_audit_actions",
6483
- title: "Audit Actions",
6484
- description: "Distribution of audit events by action type",
6485
- type: "pie",
6486
- object: "sys_audit_log",
6487
- layout: {
6488
- x: 0,
6489
- y: 2,
6490
- w: 6,
6491
- h: 4
6492
- },
6493
- categoryField: "action",
6494
- aggregate: "count"
6495
- },
6496
- // ── Session Status Overview ─────────────────────────────────────
6497
- {
6498
- id: "widget_active_orgs",
6499
- title: "Sessions by Organization",
6500
- description: "Active sessions grouped by organization",
6501
- type: "bar",
6502
- object: "sys_session",
6503
- layout: {
6504
- x: 6,
6505
- y: 2,
6506
- w: 6,
6507
- h: 4
6508
- },
6509
- categoryField: "active_organization_id",
6510
- aggregate: "count"
6511
- },
6512
- // ── Recent Audit Log (Table) ────────────────────────────────────
6513
- // `type: 'table'` renders the underlying rows directly, so this
6514
- // panel actually shows the latest events instead of just repeating
6515
- // the total-count metric. `valueField`/`aggregate` are intentionally
6516
- // omitted — table widgets pull raw records.
6517
- {
6518
- id: "widget_recent_events",
6519
- title: "Recent Audit Events",
6520
- description: "Latest platform events",
6521
- type: "table",
6522
- object: "sys_audit_log",
6523
- layout: {
6524
- x: 0,
6525
- y: 6,
6526
- w: 12,
6527
- h: 4
6528
- },
6529
- options: {
6530
- columns: ["created_at", "user_id", "action", "object_name", "record_id"],
6531
- sort: [{ field: "created_at", order: "desc" }],
6532
- pageSize: 20
6533
- }
6534
- }
6535
- ],
6536
- globalFilters: [
6537
- {
6538
- field: "created_at",
6539
- type: "date",
6540
- label: "Date Range",
6541
- scope: "dashboard",
6542
- defaultValue: "last_7_days"
6543
- }
6544
- ]
6545
- });
6546
- var SecurityOverviewDashboard = Dashboard.create({
6547
- name: "security_overview",
6548
- label: "Security Overview",
6549
- description: "Security events, authentication, and audit trails",
6550
- // 12-column grid matches the widget `w` values below.
6551
- columns: 12,
6552
- gap: 4,
6553
- widgets: [
6554
- // ── Login Events Widget ─────────────────────────────────────────
6710
+ // ── Row 2: Security KPIs ────────────────────────────────────────
6555
6711
  // The `sys_audit_log.action` enum doesn't distinguish failed vs
6556
6712
  // successful logins (both fold into `action='login'`). Surfacing a
6557
6713
  // total Login Events count is honest; a "Failed Logins" widget will
@@ -6561,116 +6717,72 @@ var SecurityOverviewDashboard = Dashboard.create({
6561
6717
  title: "Login Events",
6562
6718
  type: "metric",
6563
6719
  object: "sys_audit_log",
6564
- layout: {
6565
- x: 0,
6566
- y: 0,
6567
- w: 3,
6568
- h: 2
6569
- },
6720
+ layout: { x: 0, y: 2, w: 4, h: 2 },
6570
6721
  filter: { action: "login" },
6571
6722
  aggregate: "count",
6572
6723
  colorVariant: "blue",
6573
6724
  description: "Authentication events recorded by the audit log"
6574
6725
  },
6575
- // ── Permission Changes Widget ───────────────────────────────────
6576
6726
  {
6577
6727
  id: "widget_permission_changes",
6578
6728
  title: "Permission Changes",
6579
6729
  type: "metric",
6580
6730
  object: "sys_audit_log",
6581
- layout: {
6582
- x: 3,
6583
- y: 0,
6584
- w: 3,
6585
- h: 2
6586
- },
6731
+ layout: { x: 4, y: 2, w: 4, h: 2 },
6587
6732
  filter: { action: "permission_change" },
6588
6733
  aggregate: "count",
6589
6734
  colorVariant: "warning",
6590
6735
  description: "Recent permission and role modifications"
6591
6736
  },
6592
- // ── System Config Changes Widget ────────────────────────────────
6593
6737
  {
6594
6738
  id: "widget_config_changes",
6595
6739
  title: "Config Changes",
6596
6740
  type: "metric",
6597
6741
  object: "sys_audit_log",
6598
- layout: {
6599
- x: 6,
6600
- y: 0,
6601
- w: 3,
6602
- h: 2
6603
- },
6742
+ layout: { x: 8, y: 2, w: 4, h: 2 },
6604
6743
  filter: { action: "config_change" },
6605
6744
  aggregate: "count",
6606
6745
  colorVariant: "blue",
6607
6746
  description: "System configuration modifications"
6608
6747
  },
6609
- // ── Active Sessions Widget ──────────────────────────────────────
6610
- {
6611
- id: "widget_active_sessions",
6612
- title: "Active Sessions",
6613
- type: "metric",
6614
- object: "sys_session",
6615
- layout: {
6616
- x: 9,
6617
- y: 0,
6618
- w: 3,
6619
- h: 2
6620
- },
6621
- aggregate: "count",
6622
- colorVariant: "success",
6623
- description: "Currently active user sessions"
6624
- },
6625
- // ── Audit Events by Type ────────────────────────────────────────
6748
+ // ── Row 3: Distribution charts ──────────────────────────────────
6749
+ // Note: relative date filters like `NOW() - INTERVAL 7 DAY` are not
6750
+ // currently substituted by the analytics layer (see
6751
+ // service-analytics/strategies/filter-normalizer.ts). The dashboard's
6752
+ // `globalFilters` date-range bar at the bottom is the supported way
6753
+ // to scope these widgets.
6626
6754
  {
6627
6755
  id: "widget_events_by_type",
6628
- title: "Audit Events by Type",
6629
- description: "Distribution of security and audit events",
6756
+ title: "Audit Events by Action",
6757
+ description: "Distribution of audit events by action type",
6630
6758
  type: "pie",
6631
6759
  object: "sys_audit_log",
6632
- layout: {
6633
- x: 0,
6634
- y: 2,
6635
- w: 6,
6636
- h: 4
6637
- },
6760
+ layout: { x: 0, y: 4, w: 6, h: 4 },
6638
6761
  categoryField: "action",
6639
6762
  aggregate: "count"
6640
6763
  },
6641
- // ── Audit Events by User ────────────────────────────────────────
6642
6764
  {
6643
6765
  id: "widget_events_by_user",
6644
6766
  title: "Events by User",
6645
6767
  description: "Activity distribution across users",
6646
6768
  type: "bar",
6647
6769
  object: "sys_audit_log",
6648
- layout: {
6649
- x: 6,
6650
- y: 2,
6651
- w: 6,
6652
- h: 4
6653
- },
6770
+ layout: { x: 6, y: 4, w: 6, h: 4 },
6654
6771
  categoryField: "user_id",
6655
6772
  aggregate: "count"
6656
6773
  },
6657
- // ── Recent Security Events (Table) ──────────────────────────────
6658
- // Real table widget pulls the latest permission/config rows.
6774
+ // ── Row 4: Recent audit events table ────────────────────────────
6775
+ // `type: 'table'` renders the underlying rows directly, so this
6776
+ // panel actually shows the latest events instead of just repeating
6777
+ // the total-count metric. `valueField`/`aggregate` are intentionally
6778
+ // omitted — table widgets pull raw records.
6659
6779
  {
6660
- id: "widget_recent_security_events",
6661
- title: "Recent Security Events",
6662
- description: "Latest permission and config changes",
6780
+ id: "widget_recent_events",
6781
+ title: "Recent Audit Events",
6782
+ description: "Latest platform events (login, permission, config, \u2026)",
6663
6783
  type: "table",
6664
6784
  object: "sys_audit_log",
6665
- layout: {
6666
- x: 0,
6667
- y: 6,
6668
- w: 12,
6669
- h: 4
6670
- },
6671
- filter: {
6672
- action: { $in: ["login", "logout", "permission_change", "config_change"] }
6673
- },
6785
+ layout: { x: 0, y: 8, w: 12, h: 4 },
6674
6786
  options: {
6675
6787
  columns: ["created_at", "user_id", "action", "object_name", "record_id"],
6676
6788
  sort: [{ field: "created_at", order: "desc" }],
@@ -9614,7 +9726,6 @@ var en = {
9614
9726
  group_advanced: { label: "Advanced" },
9615
9727
  // Overview
9616
9728
  nav_system_overview: { label: "System Overview" },
9617
- nav_security_overview: { label: "Security Overview" },
9618
9729
  // People & Organization
9619
9730
  nav_users: { label: "Users" },
9620
9731
  nav_departments: { label: "Departments" },
@@ -9655,12 +9766,8 @@ var en = {
9655
9766
  dashboards: {
9656
9767
  system_overview: {
9657
9768
  label: "System Overview",
9658
- description: "Platform health, sessions, and audit activity",
9769
+ description: "Platform health, security activity, and recent audit events",
9659
9770
  widgets: {
9660
- widget_active_sessions: {
9661
- title: "Active Sessions",
9662
- description: "Number of currently active user sessions"
9663
- },
9664
9771
  widget_total_users: {
9665
9772
  title: "Total Users",
9666
9773
  description: "Total registered users in the system"
@@ -9669,28 +9776,14 @@ var en = {
9669
9776
  title: "Organizations",
9670
9777
  description: "Total organizations on the platform"
9671
9778
  },
9779
+ widget_active_sessions: {
9780
+ title: "Active Sessions",
9781
+ description: "Number of currently active user sessions"
9782
+ },
9672
9783
  widget_packages_installed: {
9673
9784
  title: "Packages Installed",
9674
9785
  description: "Active package installations across projects"
9675
9786
  },
9676
- widget_audit_actions: {
9677
- title: "Audit Actions",
9678
- description: "Distribution of audit events by action type"
9679
- },
9680
- widget_active_orgs: {
9681
- title: "Sessions by Organization",
9682
- description: "Active sessions grouped by organization"
9683
- },
9684
- widget_recent_events: {
9685
- title: "Recent Audit Events",
9686
- description: "Latest platform events"
9687
- }
9688
- }
9689
- },
9690
- security_overview: {
9691
- label: "Security Overview",
9692
- description: "Security events, authentication, and audit trails",
9693
- widgets: {
9694
9787
  widget_login_events: {
9695
9788
  title: "Login Events",
9696
9789
  description: "Authentication events recorded by the audit log"
@@ -9703,21 +9796,17 @@ var en = {
9703
9796
  title: "Config Changes",
9704
9797
  description: "System configuration modifications"
9705
9798
  },
9706
- widget_active_sessions: {
9707
- title: "Active Sessions",
9708
- description: "Currently active user sessions"
9709
- },
9710
9799
  widget_events_by_type: {
9711
- title: "Audit Events by Type",
9712
- description: "Distribution of security and audit events"
9800
+ title: "Audit Events by Action",
9801
+ description: "Distribution of audit events by action type"
9713
9802
  },
9714
9803
  widget_events_by_user: {
9715
9804
  title: "Events by User",
9716
9805
  description: "Activity distribution across users"
9717
9806
  },
9718
- widget_recent_security_events: {
9719
- title: "Recent Security Events",
9720
- description: "Latest permission and config changes"
9807
+ widget_recent_events: {
9808
+ title: "Recent Audit Events",
9809
+ description: "Latest platform events (login, permission, config, \u2026)"
9721
9810
  }
9722
9811
  }
9723
9812
  }
@@ -12651,7 +12740,6 @@ var zhCN = {
12651
12740
  group_diagnostics: { label: "\u8BCA\u65AD" },
12652
12741
  group_advanced: { label: "\u9AD8\u7EA7" },
12653
12742
  nav_system_overview: { label: "\u7CFB\u7EDF\u6982\u89C8" },
12654
- nav_security_overview: { label: "\u5B89\u5168\u6982\u89C8" },
12655
12743
  nav_users: { label: "\u7528\u6237" },
12656
12744
  nav_departments: { label: "\u90E8\u95E8" },
12657
12745
  nav_teams: { label: "\u56E2\u961F" },
@@ -12686,28 +12774,18 @@ var zhCN = {
12686
12774
  dashboards: {
12687
12775
  system_overview: {
12688
12776
  label: "\u7CFB\u7EDF\u6982\u89C8",
12689
- description: "\u5E73\u53F0\u8FD0\u884C\u72B6\u51B5\u3001\u4F1A\u8BDD\u4E0E\u5BA1\u8BA1\u6D3B\u52A8",
12777
+ description: "\u5E73\u53F0\u8FD0\u884C\u72B6\u51B5\u3001\u5B89\u5168\u6D3B\u52A8\u4E0E\u6700\u8FD1\u5BA1\u8BA1\u4E8B\u4EF6",
12690
12778
  widgets: {
12691
- widget_active_sessions: { title: "\u6D3B\u8DC3\u4F1A\u8BDD", description: "\u5F53\u524D\u6D3B\u8DC3\u7528\u6237\u4F1A\u8BDD\u6570\u91CF" },
12692
12779
  widget_total_users: { title: "\u7528\u6237\u603B\u6570", description: "\u7CFB\u7EDF\u4E2D\u5DF2\u6CE8\u518C\u7684\u7528\u6237\u603B\u6570" },
12693
12780
  widget_organizations: { title: "\u7EC4\u7EC7\u6570", description: "\u5E73\u53F0\u4E0A\u7684\u7EC4\u7EC7\u603B\u6570" },
12781
+ widget_active_sessions: { title: "\u6D3B\u8DC3\u4F1A\u8BDD", description: "\u5F53\u524D\u6D3B\u8DC3\u7528\u6237\u4F1A\u8BDD\u6570\u91CF" },
12694
12782
  widget_packages_installed: { title: "\u5DF2\u5B89\u88C5\u5305", description: "\u9879\u76EE\u4E2D\u5DF2\u6FC0\u6D3B\u7684\u5B89\u88C5\u5305\u6570" },
12695
- widget_audit_actions: { title: "\u5BA1\u8BA1\u64CD\u4F5C", description: "\u6309\u64CD\u4F5C\u7C7B\u578B\u5206\u5E03\u7684\u5BA1\u8BA1\u4E8B\u4EF6" },
12696
- widget_active_orgs: { title: "\u6309\u7EC4\u7EC7\u5212\u5206\u4F1A\u8BDD", description: "\u6309\u7EC4\u7EC7\u5206\u7EC4\u7684\u6D3B\u8DC3\u4F1A\u8BDD" },
12697
- widget_recent_events: { title: "\u6700\u8FD1\u5BA1\u8BA1\u4E8B\u4EF6", description: "\u6700\u65B0\u7684\u5E73\u53F0\u4E8B\u4EF6" }
12698
- }
12699
- },
12700
- security_overview: {
12701
- label: "\u5B89\u5168\u6982\u89C8",
12702
- description: "\u5B89\u5168\u4E8B\u4EF6\u3001\u8EAB\u4EFD\u8BA4\u8BC1\u4E0E\u5BA1\u8BA1\u8FFD\u8E2A",
12703
- widgets: {
12704
12783
  widget_login_events: { title: "\u767B\u5F55\u4E8B\u4EF6", description: "\u5BA1\u8BA1\u65E5\u5FD7\u4E2D\u8BB0\u5F55\u7684\u8BA4\u8BC1\u4E8B\u4EF6" },
12705
12784
  widget_permission_changes: { title: "\u6743\u9650\u53D8\u66F4", description: "\u6700\u8FD1\u7684\u6743\u9650\u548C\u89D2\u8272\u4FEE\u6539" },
12706
12785
  widget_config_changes: { title: "\u914D\u7F6E\u53D8\u66F4", description: "\u7CFB\u7EDF\u914D\u7F6E\u4FEE\u6539" },
12707
- widget_active_sessions: { title: "\u6D3B\u8DC3\u4F1A\u8BDD", description: "\u5F53\u524D\u6D3B\u8DC3\u7528\u6237\u4F1A\u8BDD" },
12708
- widget_events_by_type: { title: "\u6309\u7C7B\u578B\u5206\u5E03\u7684\u5BA1\u8BA1\u4E8B\u4EF6", description: "\u5B89\u5168\u4E0E\u5BA1\u8BA1\u4E8B\u4EF6\u5206\u5E03" },
12786
+ widget_events_by_type: { title: "\u6309\u64CD\u4F5C\u5206\u5E03\u7684\u5BA1\u8BA1\u4E8B\u4EF6", description: "\u5BA1\u8BA1\u4E8B\u4EF6\u6309\u64CD\u4F5C\u7C7B\u578B\u5206\u5E03" },
12709
12787
  widget_events_by_user: { title: "\u6309\u7528\u6237\u5206\u5E03\u7684\u4E8B\u4EF6", description: "\u7528\u6237\u6D3B\u52A8\u5206\u5E03" },
12710
- widget_recent_security_events: { title: "\u6700\u8FD1\u5B89\u5168\u4E8B\u4EF6", description: "\u6700\u65B0\u7684\u6743\u9650\u4E0E\u914D\u7F6E\u53D8\u66F4" }
12788
+ widget_recent_events: { title: "\u6700\u8FD1\u5BA1\u8BA1\u4E8B\u4EF6", description: "\u6700\u65B0\u7684\u5E73\u53F0\u4E8B\u4EF6\uFF08\u767B\u5F55\u3001\u6743\u9650\u3001\u914D\u7F6E\u7B49\uFF09" }
12711
12789
  }
12712
12790
  }
12713
12791
  }
@@ -15636,7 +15714,6 @@ var jaJP = {
15636
15714
  group_diagnostics: { label: "\u8A3A\u65AD" },
15637
15715
  group_advanced: { label: "\u8A73\u7D30" },
15638
15716
  nav_system_overview: { label: "\u30B7\u30B9\u30C6\u30E0\u6982\u8981" },
15639
- nav_security_overview: { label: "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u6982\u8981" },
15640
15717
  nav_users: { label: "\u30E6\u30FC\u30B6\u30FC" },
15641
15718
  nav_departments: { label: "\u90E8\u7F72" },
15642
15719
  nav_teams: { label: "\u30C1\u30FC\u30E0" },
@@ -15671,28 +15748,18 @@ var jaJP = {
15671
15748
  dashboards: {
15672
15749
  system_overview: {
15673
15750
  label: "\u30B7\u30B9\u30C6\u30E0\u6982\u8981",
15674
- description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306E\u5065\u5168\u6027\u3001\u30BB\u30C3\u30B7\u30E7\u30F3\u3001\u76E3\u67FB\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
15751
+ description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306E\u5065\u5168\u6027\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u6D3B\u52D5\u3001\u6700\u8FD1\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8",
15675
15752
  widgets: {
15676
- widget_active_sessions: { title: "\u30A2\u30AF\u30C6\u30A3\u30D6\u30BB\u30C3\u30B7\u30E7\u30F3", description: "\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30E6\u30FC\u30B6\u30FC\u30BB\u30C3\u30B7\u30E7\u30F3\u6570" },
15677
15753
  widget_total_users: { title: "\u30E6\u30FC\u30B6\u30FC\u7DCF\u6570", description: "\u30B7\u30B9\u30C6\u30E0\u306B\u767B\u9332\u3055\u308C\u305F\u30E6\u30FC\u30B6\u30FC\u306E\u7DCF\u6570" },
15678
15754
  widget_organizations: { title: "\u7D44\u7E54", description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u4E0A\u306E\u7D44\u7E54\u7DCF\u6570" },
15755
+ widget_active_sessions: { title: "\u30A2\u30AF\u30C6\u30A3\u30D6\u30BB\u30C3\u30B7\u30E7\u30F3", description: "\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30E6\u30FC\u30B6\u30FC\u30BB\u30C3\u30B7\u30E7\u30F3\u6570" },
15679
15756
  widget_packages_installed: { title: "\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F\u30D1\u30C3\u30B1\u30FC\u30B8", description: "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D1\u30C3\u30B1\u30FC\u30B8\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6570" },
15680
- widget_audit_actions: { title: "\u76E3\u67FB\u30A2\u30AF\u30B7\u30E7\u30F3", description: "\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\u5225\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8\u5206\u5E03" },
15681
- widget_active_orgs: { title: "\u7D44\u7E54\u5225\u30BB\u30C3\u30B7\u30E7\u30F3", description: "\u7D44\u7E54\u5225\u306B\u30B0\u30EB\u30FC\u30D7\u5316\u3055\u308C\u305F\u30A2\u30AF\u30C6\u30A3\u30D6\u30BB\u30C3\u30B7\u30E7\u30F3" },
15682
- widget_recent_events: { title: "\u6700\u8FD1\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8", description: "\u6700\u65B0\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30A4\u30D9\u30F3\u30C8" }
15683
- }
15684
- },
15685
- security_overview: {
15686
- label: "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u6982\u8981",
15687
- description: "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30A4\u30D9\u30F3\u30C8\u3001\u8A8D\u8A3C\u3001\u76E3\u67FB\u8A3C\u8DE1",
15688
- widgets: {
15689
15757
  widget_login_events: { title: "\u30ED\u30B0\u30A4\u30F3\u30A4\u30D9\u30F3\u30C8", description: "\u76E3\u67FB\u30ED\u30B0\u306B\u8A18\u9332\u3055\u308C\u305F\u8A8D\u8A3C\u30A4\u30D9\u30F3\u30C8" },
15690
15758
  widget_permission_changes: { title: "\u6A29\u9650\u5909\u66F4", description: "\u6700\u8FD1\u306E\u6A29\u9650\u3068\u30ED\u30FC\u30EB\u306E\u5909\u66F4" },
15691
15759
  widget_config_changes: { title: "\u69CB\u6210\u5909\u66F4", description: "\u30B7\u30B9\u30C6\u30E0\u69CB\u6210\u306E\u5909\u66F4" },
15692
- widget_active_sessions: { title: "\u30A2\u30AF\u30C6\u30A3\u30D6\u30BB\u30C3\u30B7\u30E7\u30F3", description: "\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30E6\u30FC\u30B6\u30FC\u30BB\u30C3\u30B7\u30E7\u30F3" },
15693
- widget_events_by_type: { title: "\u30BF\u30A4\u30D7\u5225\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8", description: "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3068\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8\u306E\u5206\u5E03" },
15760
+ widget_events_by_type: { title: "\u30A2\u30AF\u30B7\u30E7\u30F3\u5225\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8", description: "\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\u5225\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8\u5206\u5E03" },
15694
15761
  widget_events_by_user: { title: "\u30E6\u30FC\u30B6\u30FC\u5225\u30A4\u30D9\u30F3\u30C8", description: "\u30E6\u30FC\u30B6\u30FC\u5225\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u5206\u5E03" },
15695
- widget_recent_security_events: { title: "\u6700\u8FD1\u306E\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30A4\u30D9\u30F3\u30C8", description: "\u6700\u65B0\u306E\u6A29\u9650\u3068\u69CB\u6210\u306E\u5909\u66F4" }
15762
+ widget_recent_events: { title: "\u6700\u8FD1\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8", description: "\u6700\u65B0\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30A4\u30D9\u30F3\u30C8\uFF08\u30ED\u30B0\u30A4\u30F3\u3001\u6A29\u9650\u3001\u69CB\u6210\u306A\u3069\uFF09" }
15696
15763
  }
15697
15764
  }
15698
15765
  }
@@ -18621,7 +18688,6 @@ var esES = {
18621
18688
  group_diagnostics: { label: "Diagn\xF3stico" },
18622
18689
  group_advanced: { label: "Avanzado" },
18623
18690
  nav_system_overview: { label: "Resumen del Sistema" },
18624
- nav_security_overview: { label: "Resumen de Seguridad" },
18625
18691
  nav_users: { label: "Usuarios" },
18626
18692
  nav_departments: { label: "Departamentos" },
18627
18693
  nav_teams: { label: "Equipos" },
@@ -18656,28 +18722,18 @@ var esES = {
18656
18722
  dashboards: {
18657
18723
  system_overview: {
18658
18724
  label: "Resumen del Sistema",
18659
- description: "Estado de la plataforma, sesiones y actividad de auditor\xEDa",
18725
+ description: "Estado de la plataforma, actividad de seguridad y eventos de auditor\xEDa recientes",
18660
18726
  widgets: {
18661
- widget_active_sessions: { title: "Sesiones Activas", description: "N\xFAmero de sesiones de usuario activas en este momento" },
18662
18727
  widget_total_users: { title: "Usuarios Totales", description: "Total de usuarios registrados en el sistema" },
18663
18728
  widget_organizations: { title: "Organizaciones", description: "Total de organizaciones en la plataforma" },
18729
+ widget_active_sessions: { title: "Sesiones Activas", description: "N\xFAmero de sesiones de usuario activas en este momento" },
18664
18730
  widget_packages_installed: { title: "Paquetes Instalados", description: "Instalaciones de paquetes activas en los proyectos" },
18665
- widget_audit_actions: { title: "Acciones de Auditor\xEDa", description: "Distribuci\xF3n de eventos de auditor\xEDa por tipo de acci\xF3n" },
18666
- widget_active_orgs: { title: "Sesiones por Organizaci\xF3n", description: "Sesiones activas agrupadas por organizaci\xF3n" },
18667
- widget_recent_events: { title: "Eventos de Auditor\xEDa Recientes", description: "\xDAltimos eventos de la plataforma" }
18668
- }
18669
- },
18670
- security_overview: {
18671
- label: "Resumen de Seguridad",
18672
- description: "Eventos de seguridad, autenticaci\xF3n y registros de auditor\xEDa",
18673
- widgets: {
18674
18731
  widget_login_events: { title: "Eventos de Inicio de Sesi\xF3n", description: "Eventos de autenticaci\xF3n registrados por el log de auditor\xEDa" },
18675
18732
  widget_permission_changes: { title: "Cambios de Permisos", description: "Modificaciones recientes de permisos y roles" },
18676
18733
  widget_config_changes: { title: "Cambios de Configuraci\xF3n", description: "Modificaciones de configuraci\xF3n del sistema" },
18677
- widget_active_sessions: { title: "Sesiones Activas", description: "Sesiones de usuario actualmente activas" },
18678
- widget_events_by_type: { title: "Eventos de Auditor\xEDa por Tipo", description: "Distribuci\xF3n de eventos de seguridad y auditor\xEDa" },
18734
+ widget_events_by_type: { title: "Eventos de Auditor\xEDa por Acci\xF3n", description: "Distribuci\xF3n de eventos de auditor\xEDa por tipo de acci\xF3n" },
18679
18735
  widget_events_by_user: { title: "Eventos por Usuario", description: "Distribuci\xF3n de actividad entre usuarios" },
18680
- widget_recent_security_events: { title: "Eventos de Seguridad Recientes", description: "\xDAltimos cambios de permisos y configuraci\xF3n" }
18736
+ widget_recent_events: { title: "Eventos de Auditor\xEDa Recientes", description: "\xDAltimos eventos de la plataforma (inicio de sesi\xF3n, permisos, configuraci\xF3n, \u2026)" }
18681
18737
  }
18682
18738
  }
18683
18739
  }
@@ -18691,6 +18747,6 @@ var SetupAppTranslations = {
18691
18747
  "es-ES": esES
18692
18748
  };
18693
18749
 
18694
- export { SETUP_APP, SecurityOverviewDashboard, SetupAppTranslations, SysAccount, SysActivity, SysApiKey, SysApprovalAction, SysApprovalProcess, SysApprovalRequest, SysAttachment, SysAuditLog, SysComment, SysDepartment, SysDepartmentMember, SysDeviceCode, SysEmail, SysEmailTemplate, SysInvitation, SysJob, SysJobQueue, SysJobRun, SysJwks, SysMember, SysMetadataObject as SysMetadata, SysMetadataHistoryObject, SysMetadataObject, SysNotification, SysOauthAccessToken, SysOauthApplication, SysOauthConsent, SysOauthRefreshToken, SysOrganization, SysPermissionSet, SysPresence, SysRecordShare, SysReportSchedule, SysRole, SysRolePermissionSet, SysSavedReport, SysSecret, SysSession, SysSetting, SysSettingAudit, SysSharingRule, SysTeam, SysTeamMember, SysTwoFactor, SysUser, SysUserPermissionSet, SysUserPreference, SysVerification, SysWebhook, SystemOverviewDashboard, defaultPermissionSets, en, esES, jaJP, zhCN };
18750
+ export { SETUP_APP, SetupAppTranslations, SysAccount, SysActivity, SysApiKey, SysApprovalAction, SysApprovalProcess, SysApprovalRequest, SysAttachment, SysAuditLog, SysComment, SysDepartment, SysDepartmentMember, SysDeviceCode, SysEmail, SysEmailTemplate, SysInvitation, SysJob, SysJobQueue, SysJobRun, SysJwks, SysMember, SysMetadataObject as SysMetadata, SysMetadataHistoryObject, SysMetadataObject, SysNotification, SysOauthAccessToken, SysOauthApplication, SysOauthConsent, SysOauthRefreshToken, SysOrganization, SysPermissionSet, SysPresence, SysRecordShare, SysReportSchedule, SysRole, SysRolePermissionSet, SysSavedReport, SysSecret, SysSession, SysSetting, SysSettingAudit, SysSharingRule, SysTeam, SysTeamMember, SysTwoFactor, SysUser, SysUserPermissionSet, SysUserPreference, SysVerification, SysWebhook, SystemOverviewDashboard, defaultPermissionSets, en, esES, jaJP, zhCN };
18695
18751
  //# sourceMappingURL=index.mjs.map
18696
18752
  //# sourceMappingURL=index.mjs.map