@objectstack/platform-objects 10.2.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -132,12 +132,6 @@ declare const SystemOverviewDashboard: {
132
132
  type: "bar" | "line" | "pie" | "area" | "scatter" | "table" | "horizontal-bar" | "column" | "donut" | "funnel" | "treemap" | "sankey" | "gauge" | "solid-gauge" | "metric" | "kpi" | "bullet" | "radar" | "pivot";
133
133
  dataset: string;
134
134
  values: string[];
135
- layout: {
136
- x: number;
137
- y: number;
138
- w: number;
139
- h: number;
140
- };
141
135
  title?: string | undefined;
142
136
  description?: string | undefined;
143
137
  chartConfig?: {
@@ -180,7 +174,7 @@ declare const SystemOverviewDashboard: {
180
174
  dashArray?: string | undefined;
181
175
  opacity?: number | undefined;
182
176
  }[] | undefined;
183
- colors?: string[] | undefined;
177
+ colors?: string[] | Record<string, string> | undefined;
184
178
  height?: number | undefined;
185
179
  annotations?: {
186
180
  type: "line" | "region";
@@ -214,6 +208,12 @@ declare const SystemOverviewDashboard: {
214
208
  offset: string;
215
209
  } | undefined;
216
210
  dimensions?: string[] | undefined;
211
+ layout?: {
212
+ x: number;
213
+ y: number;
214
+ w: number;
215
+ h: number;
216
+ } | undefined;
217
217
  options?: unknown;
218
218
  suppressWarnings?: string[] | undefined;
219
219
  responsive?: {
@@ -323,8 +323,8 @@ declare const SystemOverviewDatasets: {
323
323
  }[];
324
324
  measures: {
325
325
  name: string;
326
- aggregate: "min" | "max" | "count" | "sum" | "avg" | "count_distinct" | "array_agg" | "string_agg";
327
326
  label?: string | undefined;
327
+ aggregate?: "min" | "max" | "count" | "sum" | "avg" | "count_distinct" | "array_agg" | "string_agg" | undefined;
328
328
  field?: string | undefined;
329
329
  filter?: unknown;
330
330
  format?: string | undefined;
@@ -132,12 +132,6 @@ declare const SystemOverviewDashboard: {
132
132
  type: "bar" | "line" | "pie" | "area" | "scatter" | "table" | "horizontal-bar" | "column" | "donut" | "funnel" | "treemap" | "sankey" | "gauge" | "solid-gauge" | "metric" | "kpi" | "bullet" | "radar" | "pivot";
133
133
  dataset: string;
134
134
  values: string[];
135
- layout: {
136
- x: number;
137
- y: number;
138
- w: number;
139
- h: number;
140
- };
141
135
  title?: string | undefined;
142
136
  description?: string | undefined;
143
137
  chartConfig?: {
@@ -180,7 +174,7 @@ declare const SystemOverviewDashboard: {
180
174
  dashArray?: string | undefined;
181
175
  opacity?: number | undefined;
182
176
  }[] | undefined;
183
- colors?: string[] | undefined;
177
+ colors?: string[] | Record<string, string> | undefined;
184
178
  height?: number | undefined;
185
179
  annotations?: {
186
180
  type: "line" | "region";
@@ -214,6 +208,12 @@ declare const SystemOverviewDashboard: {
214
208
  offset: string;
215
209
  } | undefined;
216
210
  dimensions?: string[] | undefined;
211
+ layout?: {
212
+ x: number;
213
+ y: number;
214
+ w: number;
215
+ h: number;
216
+ } | undefined;
217
217
  options?: unknown;
218
218
  suppressWarnings?: string[] | undefined;
219
219
  responsive?: {
@@ -323,8 +323,8 @@ declare const SystemOverviewDatasets: {
323
323
  }[];
324
324
  measures: {
325
325
  name: string;
326
- aggregate: "min" | "max" | "count" | "sum" | "avg" | "count_distinct" | "array_agg" | "string_agg";
327
326
  label?: string | undefined;
327
+ aggregate?: "min" | "max" | "count" | "sum" | "avg" | "count_distinct" | "array_agg" | "string_agg" | undefined;
328
328
  field?: string | undefined;
329
329
  filter?: unknown;
330
330
  format?: string | undefined;
@@ -118,7 +118,7 @@ var SETUP_NAV_CONTRIBUTIONS = [
118
118
  items: [
119
119
  { id: "nav_users", type: "object", label: "Users", objectName: "sys_user", icon: "user" },
120
120
  { id: "nav_business_units", type: "object", label: "Business Units", objectName: "sys_business_unit", icon: "building", requiresObject: "sys_business_unit" },
121
- { id: "nav_teams", type: "object", label: "Teams", objectName: "sys_team", icon: "users-round" },
121
+ { id: "nav_teams", type: "object", label: "Teams", objectName: "sys_team", icon: "users-round", requiresService: "org-scoping" },
122
122
  { id: "nav_organizations", type: "object", label: "Organizations", objectName: "sys_organization", icon: "building-2", requiresService: "org-scoping" },
123
123
  { id: "nav_invitations", type: "object", label: "Invitations", objectName: "sys_invitation", icon: "mail", requiresService: "org-scoping" }
124
124
  ]
@@ -146,6 +146,16 @@ var SETUP_NAV_CONTRIBUTIONS = [
146
146
  priority: BASE_PRIORITY,
147
147
  items: [
148
148
  { id: "nav_settings_hub", type: "url", label: "All Settings", url: "/apps/setup/system/settings", icon: "settings-2", requiredPermissions: ["manage_platform_settings"] },
149
+ // Workspace identity first — Localization (order 2) and Company (order 3)
150
+ // are the lowest-`order` settings manifests and the first thing a new
151
+ // company admin configures. They ship as `service-settings` manifests
152
+ // (tenant scope, read=`setup.access`) but were never pinned here, so they
153
+ // were reachable only by drilling into the "All Settings" hub. Mainstream
154
+ // admin consoles (Salesforce "Company Information", ServiceNow) surface
155
+ // both directly. No `requiredPermissions` — matches Branding (read perm is
156
+ // the app's base `setup.access`).
157
+ { id: "nav_settings_localization", type: "url", label: "Localization", url: "/apps/setup/system/settings/localization", icon: "globe" },
158
+ { id: "nav_settings_company", type: "url", label: "Company", url: "/apps/setup/system/settings/company", icon: "building-2" },
149
159
  { id: "nav_settings_branding", type: "url", label: "Branding", url: "/apps/setup/system/settings/branding", icon: "palette" },
150
160
  { id: "nav_settings_auth", type: "url", label: "Authentication", url: "/apps/setup/system/settings/auth", icon: "lock-keyhole", requiredPermissions: ["manage_platform_settings"] },
151
161
  { id: "nav_settings_mail", type: "url", label: "Email", url: "/apps/setup/system/settings/mail", icon: "mail", requiredPermissions: ["manage_platform_settings"] },
@@ -173,8 +183,12 @@ var SETUP_NAV_CONTRIBUTIONS = [
173
183
  items: [
174
184
  { id: "nav_oauth_apps", type: "object", label: "OAuth Applications", objectName: "sys_oauth_application", icon: "app-window" },
175
185
  { id: "nav_jwks", type: "object", label: "Signing Keys (JWKS)", objectName: "sys_jwks", icon: "key-round" },
176
- { id: "nav_verifications", type: "object", label: "Verifications", objectName: "sys_verification", icon: "mail-check" },
177
- { id: "nav_device_codes", type: "object", label: "Device Codes", objectName: "sys_device_code", icon: "qr-code" },
186
+ // `sys_verification` (email/phone tokens) and `sys_device_code` (OAuth
187
+ // device-grant codes) deliberately omit `list` from their `apiMethods`
188
+ // (sensitive, ephemeral secrets — not browsable), so an object/list-view
189
+ // nav entry for them can only ever render "failed to load". They're
190
+ // reachable by id (get) when needed; no browse menu. (Re-adding requires
191
+ // enabling `list` on the object — a security decision.)
178
192
  { id: "nav_accounts", type: "object", label: "Identity Links", objectName: "sys_account", icon: "link-2" },
179
193
  { id: "nav_user_preferences", type: "object", label: "User Preferences", objectName: "sys_user_preference", icon: "sliders" }
180
194
  ]
@@ -560,7 +574,13 @@ var ACCOUNT_APP = {
560
574
  objectName: "sys_member",
561
575
  viewName: "mine",
562
576
  icon: "building-2",
563
- requiresObject: "sys_member"
577
+ // Membership is a multi-org concept: in single-org mode the
578
+ // `mine` view is always empty (no sys_organization rows, no
579
+ // auto-stamped memberships). Gate on the org-scoping service so
580
+ // this entry disappears entirely — matching Organizations/
581
+ // Invitations in setup-nav. `requiresObject: 'sys_member'` was
582
+ // the wrong gate (the system object is always registered).
583
+ requiresService: "org-scoping"
564
584
  }
565
585
  ]
566
586
  },
@@ -653,6 +673,12 @@ var SystemOverviewDashboard = ui.Dashboard.create({
653
673
  values: ["org_count"],
654
674
  title: "Organizations",
655
675
  type: "metric",
676
+ // Organizations only exist under multi-tenant org-scoping. In a
677
+ // single-tenant runtime the count is always 0 and the matching
678
+ // nav entries (nav_organizations / nav_invitations) are hidden via
679
+ // `requiresService: 'org-scoping'` — gate this KPI the same way so the
680
+ // overview doesn't dangle a metric the admin can't act on.
681
+ requiresService: "org-scoping",
656
682
  layout: { x: 3, y: 0, w: 3, h: 2 },
657
683
  colorVariant: "orange",
658
684
  description: "Total organizations on the platform"
@@ -6168,6 +6194,7 @@ var zhCN = {
6168
6194
  group_apps: { label: "\u5E94\u7528" },
6169
6195
  nav_marketplace_browse: { label: "\u6D4F\u89C8\u5E94\u7528\u5E02\u573A" },
6170
6196
  nav_marketplace_installed: { label: "\u5DF2\u5B89\u88C5\u5E94\u7528" },
6197
+ nav_cloud_connection: { label: "\u4E91\u8FDE\u63A5" },
6171
6198
  group_people_org: { label: "\u4EBA\u5458\u4E0E\u7EC4\u7EC7" },
6172
6199
  group_access_control: { label: "\u8BBF\u95EE\u63A7\u5236" },
6173
6200
  group_approvals: { label: "\u5BA1\u6279" },
@@ -6182,6 +6209,7 @@ var zhCN = {
6182
6209
  nav_organizations: { label: "\u7EC4\u7EC7" },
6183
6210
  nav_invitations: { label: "\u9080\u8BF7" },
6184
6211
  nav_roles: { label: "\u89D2\u8272" },
6212
+ nav_capabilities: { label: "\u80FD\u529B" },
6185
6213
  nav_permission_sets: { label: "\u6743\u9650\u96C6" },
6186
6214
  nav_sharing_rules: { label: "\u5171\u4EAB\u89C4\u5219" },
6187
6215
  nav_record_shares: { label: "\u8BB0\u5F55\u5171\u4EAB" },
@@ -6190,6 +6218,8 @@ var zhCN = {
6190
6218
  nav_approval_requests: { label: "\u5BA1\u6279\u7533\u8BF7" },
6191
6219
  nav_approval_actions: { label: "\u5BA1\u6279\u5386\u53F2" },
6192
6220
  nav_settings_hub: { label: "\u5168\u90E8\u8BBE\u7F6E" },
6221
+ nav_settings_localization: { label: "\u672C\u5730\u5316" },
6222
+ nav_settings_company: { label: "\u516C\u53F8\u4FE1\u606F" },
6193
6223
  nav_settings_mail: { label: "\u90AE\u4EF6" },
6194
6224
  nav_settings_branding: { label: "\u54C1\u724C" },
6195
6225
  nav_settings_auth: { label: "\u8BA4\u8BC1" },
@@ -6203,10 +6233,9 @@ var zhCN = {
6203
6233
  nav_sessions: { label: "\u4F1A\u8BDD" },
6204
6234
  nav_audit_logs: { label: "\u5BA1\u8BA1\u65E5\u5FD7" },
6205
6235
  nav_notifications: { label: "\u901A\u77E5" },
6236
+ nav_datasources: { label: "\u6570\u636E\u6E90" },
6206
6237
  nav_oauth_apps: { label: "OAuth \u5E94\u7528" },
6207
6238
  nav_jwks: { label: "\u7B7E\u540D\u5BC6\u94A5 (JWKS)" },
6208
- nav_verifications: { label: "\u9A8C\u8BC1\u8BB0\u5F55" },
6209
- nav_device_codes: { label: "\u8BBE\u5907\u4EE3\u7801" },
6210
6239
  nav_accounts: { label: "\u8EAB\u4EFD\u94FE\u63A5" },
6211
6240
  nav_user_preferences: { label: "\u7528\u6237\u504F\u597D" },
6212
6241
  nav_metadata: { label: "\u5168\u90E8\u5143\u6570\u636E" }