@objectstack/platform-objects 11.6.0 → 11.9.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/apps/index.js +26 -3
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/index.mjs +26 -3
- package/dist/apps/index.mjs.map +1 -1
- package/dist/audit/index.d.mts +70 -250
- package/dist/audit/index.d.ts +70 -250
- package/dist/audit/index.js +10 -10
- package/dist/audit/index.js.map +1 -1
- package/dist/audit/index.mjs +10 -10
- package/dist/audit/index.mjs.map +1 -1
- package/dist/identity/index.d.mts +154 -550
- package/dist/identity/index.d.ts +154 -550
- package/dist/identity/index.js +22 -22
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/index.mjs +22 -22
- package/dist/identity/index.mjs.map +1 -1
- package/dist/index.js +61 -38
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +61 -38
- package/dist/index.mjs.map +1 -1
- package/dist/system/index.d.mts +21 -75
- package/dist/system/index.d.ts +21 -75
- package/dist/system/index.js +3 -3
- package/dist/system/index.js.map +1 -1
- package/dist/system/index.mjs +3 -3
- package/dist/system/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ var SysUser = data.ObjectSchema.create({
|
|
|
23
23
|
nameField: "name",
|
|
24
24
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
25
25
|
titleFormat: "{name}",
|
|
26
|
-
|
|
26
|
+
highlightFields: ["name", "email", "email_verified"],
|
|
27
27
|
// Custom actions — generic CRUD is suppressed because user accounts are
|
|
28
28
|
// managed by better-auth, but we still need first-class affordances for
|
|
29
29
|
// common operations. Each action delegates to a Console-side named script
|
|
@@ -549,7 +549,7 @@ var SysSession = data.ObjectSchema.create({
|
|
|
549
549
|
nameField: "user_id",
|
|
550
550
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
551
551
|
titleFormat: "Session \u2014 {user_id}",
|
|
552
|
-
|
|
552
|
+
highlightFields: ["user_id", "ip_address", "expires_at"],
|
|
553
553
|
// Custom actions — sessions are managed by better-auth (generic CRUD
|
|
554
554
|
// suppressed). "Sign out other devices" is the high-value self-service
|
|
555
555
|
// affordance every IdP exposes. Maps to better-auth's
|
|
@@ -734,7 +734,7 @@ var SysAccount = data.ObjectSchema.create({
|
|
|
734
734
|
},
|
|
735
735
|
description: "OAuth and authentication provider accounts",
|
|
736
736
|
titleFormat: "{provider_id} - {account_id}",
|
|
737
|
-
|
|
737
|
+
highlightFields: ["provider_id", "user_id", "account_id"],
|
|
738
738
|
// Custom actions — sysadmins routinely need to revoke a user's OAuth
|
|
739
739
|
// link (e.g. when an SSO provider is decommissioned or the user
|
|
740
740
|
// requests it). Better-auth exposes `/unlink-account { providerId,
|
|
@@ -925,7 +925,7 @@ var SysVerification = data.ObjectSchema.create({
|
|
|
925
925
|
},
|
|
926
926
|
description: "Email and phone verification tokens",
|
|
927
927
|
titleFormat: "Verification for {identifier}",
|
|
928
|
-
|
|
928
|
+
highlightFields: ["identifier", "expires_at", "created_at"],
|
|
929
929
|
fields: {
|
|
930
930
|
id: data.Field.text({
|
|
931
931
|
label: "Verification ID",
|
|
@@ -997,7 +997,7 @@ var SysOrganization = data.ObjectSchema.create({
|
|
|
997
997
|
nameField: "name",
|
|
998
998
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
999
999
|
titleFormat: "{name}",
|
|
1000
|
-
|
|
1000
|
+
highlightFields: ["name", "slug"],
|
|
1001
1001
|
// Custom actions — generic CRUD is suppressed (better-auth-managed),
|
|
1002
1002
|
// but admins still need to create new orgs from the Setup app.
|
|
1003
1003
|
actions: [
|
|
@@ -1228,7 +1228,7 @@ var SysMember = data.ObjectSchema.create({
|
|
|
1228
1228
|
// '{user_id} in {organization_id}' format renders "… in null". User + role
|
|
1229
1229
|
// identifies the membership in both single- and multi-org deployments.
|
|
1230
1230
|
titleFormat: "{user_id} ({role})",
|
|
1231
|
-
|
|
1231
|
+
highlightFields: ["user_id", "organization_id", "role"],
|
|
1232
1232
|
// Row-level actions: better-auth `organization/update-member-role` and
|
|
1233
1233
|
// `organization/remove-member`. Generic CRUD is suppressed on better-auth
|
|
1234
1234
|
// managed tables, so these are the canonical edit/delete entry points.
|
|
@@ -1398,7 +1398,7 @@ var SysInvitation = data.ObjectSchema.create({
|
|
|
1398
1398
|
// single-org mode (renders "Invitation to null"), and the recipient email is
|
|
1399
1399
|
// the more useful identifier in both modes anyway.
|
|
1400
1400
|
titleFormat: "Invitation for {email}",
|
|
1401
|
-
|
|
1401
|
+
highlightFields: ["email", "organization_id", "status"],
|
|
1402
1402
|
// Custom actions — generic CRUD is suppressed (better-auth-managed).
|
|
1403
1403
|
// Mirror the `invite_user` toolbar action from sys_user here so admins
|
|
1404
1404
|
// landing on the Invitations page get an obvious entry point.
|
|
@@ -1621,7 +1621,7 @@ var SysTeam = data.ObjectSchema.create({
|
|
|
1621
1621
|
nameField: "name",
|
|
1622
1622
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
1623
1623
|
titleFormat: "{name}",
|
|
1624
|
-
|
|
1624
|
+
highlightFields: ["name", "organization_id"],
|
|
1625
1625
|
// Custom actions calling better-auth's team endpoints. Generic CRUD is
|
|
1626
1626
|
// suppressed (managedBy: 'better-auth'), so these are the canonical
|
|
1627
1627
|
// entry points for create/update/delete.
|
|
@@ -1776,7 +1776,7 @@ var SysTeamMember = data.ObjectSchema.create({
|
|
|
1776
1776
|
},
|
|
1777
1777
|
description: "Team membership records linking users to teams",
|
|
1778
1778
|
titleFormat: "{user_id} in {team_id}",
|
|
1779
|
-
|
|
1779
|
+
highlightFields: ["user_id", "team_id", "created_at"],
|
|
1780
1780
|
// Custom actions calling better-auth's team-member endpoints. Generic
|
|
1781
1781
|
// CRUD is suppressed (managedBy: 'better-auth') so these are the
|
|
1782
1782
|
// canonical add/remove entry points.
|
|
@@ -1869,7 +1869,7 @@ var SysBusinessUnit = data.ObjectSchema.create({
|
|
|
1869
1869
|
nameField: "name",
|
|
1870
1870
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
1871
1871
|
titleFormat: "{name}",
|
|
1872
|
-
|
|
1872
|
+
highlightFields: ["name", "kind", "parent_business_unit_id", "manager_user_id"],
|
|
1873
1873
|
listViews: {
|
|
1874
1874
|
// Org chart — the hierarchy view. Surfaces the self-referencing
|
|
1875
1875
|
// `parent_business_unit_id` tree (ADR-0057 D2) as an indented, expand/
|
|
@@ -2052,7 +2052,7 @@ var SysBusinessUnitMember = data.ObjectSchema.create({
|
|
|
2052
2052
|
managedBy: "platform",
|
|
2053
2053
|
description: "User assignment to a business unit (matrix-org friendly, effective-dated).",
|
|
2054
2054
|
titleFormat: "{user_id} in {business_unit_id}",
|
|
2055
|
-
|
|
2055
|
+
highlightFields: ["user_id", "business_unit_id", "role_in_business_unit", "is_primary"],
|
|
2056
2056
|
fields: {
|
|
2057
2057
|
id: data.Field.text({
|
|
2058
2058
|
label: "Member ID",
|
|
@@ -2144,7 +2144,7 @@ var SysApiKey = data.ObjectSchema.create({
|
|
|
2144
2144
|
nameField: "name",
|
|
2145
2145
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
2146
2146
|
titleFormat: "{name}",
|
|
2147
|
-
|
|
2147
|
+
highlightFields: ["name", "prefix", "user_id", "expires_at", "revoked"],
|
|
2148
2148
|
// Custom actions — sys_api_key is managed-by 'better-auth' but the
|
|
2149
2149
|
// `revoked` boolean is a column we control via the data API. These row
|
|
2150
2150
|
// actions use the generic PATCH /api/v1/sys_api_key/{id} endpoint with
|
|
@@ -2333,7 +2333,7 @@ var SysTwoFactor = data.ObjectSchema.create({
|
|
|
2333
2333
|
},
|
|
2334
2334
|
description: "Two-factor authentication credentials",
|
|
2335
2335
|
titleFormat: "Two-factor for {user_id}",
|
|
2336
|
-
|
|
2336
|
+
highlightFields: ["user_id", "created_at"],
|
|
2337
2337
|
listViews: {
|
|
2338
2338
|
mine: {
|
|
2339
2339
|
type: "grid",
|
|
@@ -2489,7 +2489,7 @@ var SysDeviceCode = data.ObjectSchema.create({
|
|
|
2489
2489
|
nameField: "user_code",
|
|
2490
2490
|
// [ADR-0079] canonical primary-title pointer (single-field titleFormat)
|
|
2491
2491
|
titleFormat: "{user_code}",
|
|
2492
|
-
|
|
2492
|
+
highlightFields: ["user_code", "status", "client_id", "expires_at"],
|
|
2493
2493
|
fields: {
|
|
2494
2494
|
id: data.Field.text({
|
|
2495
2495
|
label: "Device Code ID",
|
|
@@ -2584,7 +2584,7 @@ var SysUserPreference = data.ObjectSchema.create({
|
|
|
2584
2584
|
nameField: "key",
|
|
2585
2585
|
// [ADR-0079] canonical primary-title pointer (single-field titleFormat)
|
|
2586
2586
|
titleFormat: "{key}",
|
|
2587
|
-
|
|
2587
|
+
highlightFields: ["user_id", "key"],
|
|
2588
2588
|
listViews: {
|
|
2589
2589
|
mine: {
|
|
2590
2590
|
type: "grid",
|
|
@@ -2681,7 +2681,7 @@ var SysOauthApplication = data.ObjectSchema.create({
|
|
|
2681
2681
|
nameField: "name",
|
|
2682
2682
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
2683
2683
|
titleFormat: "{name}",
|
|
2684
|
-
|
|
2684
|
+
highlightFields: ["name", "client_id", "type", "disabled"],
|
|
2685
2685
|
// Custom actions — all OAuth-application mutations are routed through
|
|
2686
2686
|
// better-auth's `@better-auth/oauth-provider` endpoints (and a thin
|
|
2687
2687
|
// ObjectStack-added auth route for the enable/disable toggle) rather
|
|
@@ -3081,7 +3081,7 @@ var SysOauthAccessToken = data.ObjectSchema.create({
|
|
|
3081
3081
|
docsUrl: "https://docs.objectstack.ai/adr/0010-metadata-protection"
|
|
3082
3082
|
},
|
|
3083
3083
|
description: "Opaque OAuth access tokens issued to client applications",
|
|
3084
|
-
|
|
3084
|
+
highlightFields: ["client_id", "user_id", "expires_at"],
|
|
3085
3085
|
fields: {
|
|
3086
3086
|
id: data.Field.text({
|
|
3087
3087
|
label: "ID",
|
|
@@ -3167,7 +3167,7 @@ var SysOauthRefreshToken = data.ObjectSchema.create({
|
|
|
3167
3167
|
docsUrl: "https://docs.objectstack.ai/adr/0010-metadata-protection"
|
|
3168
3168
|
},
|
|
3169
3169
|
description: "Opaque OAuth refresh tokens (linked to a session)",
|
|
3170
|
-
|
|
3170
|
+
highlightFields: ["client_id", "user_id", "expires_at"],
|
|
3171
3171
|
fields: {
|
|
3172
3172
|
id: data.Field.text({
|
|
3173
3173
|
label: "ID",
|
|
@@ -3257,7 +3257,7 @@ var SysOauthConsent = data.ObjectSchema.create({
|
|
|
3257
3257
|
docsUrl: "https://docs.objectstack.ai/adr/0010-metadata-protection"
|
|
3258
3258
|
},
|
|
3259
3259
|
description: "User consent records for OAuth client applications",
|
|
3260
|
-
|
|
3260
|
+
highlightFields: ["client_id", "user_id", "scopes"],
|
|
3261
3261
|
fields: {
|
|
3262
3262
|
id: data.Field.text({
|
|
3263
3263
|
label: "ID",
|
|
@@ -3325,7 +3325,7 @@ var SysJwks = data.ObjectSchema.create({
|
|
|
3325
3325
|
docsUrl: "https://docs.objectstack.ai/adr/0010-metadata-protection"
|
|
3326
3326
|
},
|
|
3327
3327
|
description: "Asymmetric key pairs used to sign and verify issued JWTs",
|
|
3328
|
-
|
|
3328
|
+
highlightFields: ["id", "created_at", "expires_at"],
|
|
3329
3329
|
fields: {
|
|
3330
3330
|
id: data.Field.text({
|
|
3331
3331
|
label: "Key ID",
|
|
@@ -3398,7 +3398,7 @@ var SysSsoProvider = data.ObjectSchema.create({
|
|
|
3398
3398
|
nameField: "provider_id",
|
|
3399
3399
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
3400
3400
|
titleFormat: "{provider_id}",
|
|
3401
|
-
|
|
3401
|
+
highlightFields: ["provider_id", "issuer", "domain"],
|
|
3402
3402
|
// All mutations go through @better-auth/sso's endpoints under
|
|
3403
3403
|
// /api/v1/auth/sso/* (register / delete-provider) rather than the generic
|
|
3404
3404
|
// data layer, so server-side config validation + secret handling run.
|
|
@@ -3640,7 +3640,7 @@ var SysScimProvider = data.ObjectSchema.create({
|
|
|
3640
3640
|
nameField: "provider_id",
|
|
3641
3641
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
3642
3642
|
titleFormat: "{provider_id}",
|
|
3643
|
-
|
|
3643
|
+
highlightFields: ["provider_id", "organization_id"],
|
|
3644
3644
|
listViews: {
|
|
3645
3645
|
all: {
|
|
3646
3646
|
type: "grid",
|
|
@@ -3716,7 +3716,7 @@ var SysNotification = data.ObjectSchema.create({
|
|
|
3716
3716
|
nameField: "topic",
|
|
3717
3717
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
3718
3718
|
titleFormat: "{topic}",
|
|
3719
|
-
|
|
3719
|
+
highlightFields: ["topic", "severity", "source_object", "created_at"],
|
|
3720
3720
|
listViews: {
|
|
3721
3721
|
recent: {
|
|
3722
3722
|
type: "grid",
|
|
@@ -3824,7 +3824,7 @@ var SysAttachment = data.ObjectSchema.create({
|
|
|
3824
3824
|
managedBy: "platform",
|
|
3825
3825
|
description: "Polymorphic link between a sys_file and any other record",
|
|
3826
3826
|
titleFormat: "{file_name} \u2192 {parent_object}/{parent_id}",
|
|
3827
|
-
|
|
3827
|
+
highlightFields: ["created_at", "parent_object", "file_name", "mime_type", "size"],
|
|
3828
3828
|
fields: {
|
|
3829
3829
|
id: data.Field.text({
|
|
3830
3830
|
label: "Attachment ID",
|
|
@@ -3944,7 +3944,7 @@ var SysEmail = data.ObjectSchema.create({
|
|
|
3944
3944
|
nameField: "subject",
|
|
3945
3945
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
3946
3946
|
titleFormat: "{subject}",
|
|
3947
|
-
|
|
3947
|
+
highlightFields: ["subject", "to", "status", "sent_at"],
|
|
3948
3948
|
fields: {
|
|
3949
3949
|
id: data.Field.text({
|
|
3950
3950
|
label: "Email ID",
|
|
@@ -4094,7 +4094,7 @@ var SysEmailTemplate = data.ObjectSchema.create({
|
|
|
4094
4094
|
nameField: "label",
|
|
4095
4095
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
4096
4096
|
titleFormat: "{label}",
|
|
4097
|
-
|
|
4097
|
+
highlightFields: ["name", "label", "category", "locale", "active"],
|
|
4098
4098
|
fields: {
|
|
4099
4099
|
id: data.Field.text({
|
|
4100
4100
|
label: "ID",
|
|
@@ -4232,7 +4232,7 @@ var SysSavedReport = data.ObjectSchema.create({
|
|
|
4232
4232
|
nameField: "name",
|
|
4233
4233
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
4234
4234
|
titleFormat: "{name}",
|
|
4235
|
-
|
|
4235
|
+
highlightFields: ["name", "object_name", "format", "owner_id", "updated_at"],
|
|
4236
4236
|
fields: {
|
|
4237
4237
|
id: data.Field.text({
|
|
4238
4238
|
label: "Report ID",
|
|
@@ -4320,7 +4320,7 @@ var SysReportSchedule = data.ObjectSchema.create({
|
|
|
4320
4320
|
managedBy: "platform",
|
|
4321
4321
|
description: "Recurring delivery of a sys_saved_report via email",
|
|
4322
4322
|
titleFormat: "{report_id} \u2192 {recipients}",
|
|
4323
|
-
|
|
4323
|
+
highlightFields: ["report_id", "recipients", "interval_minutes", "active", "next_run_at"],
|
|
4324
4324
|
fields: {
|
|
4325
4325
|
id: data.Field.text({
|
|
4326
4326
|
label: "Schedule ID",
|
|
@@ -4452,7 +4452,7 @@ var SysJob = data.ObjectSchema.create({
|
|
|
4452
4452
|
nameField: "name",
|
|
4453
4453
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
4454
4454
|
titleFormat: "{name}",
|
|
4455
|
-
|
|
4455
|
+
highlightFields: ["name", "schedule_type", "active", "last_run_at", "last_status"],
|
|
4456
4456
|
fields: {
|
|
4457
4457
|
id: data.Field.text({ label: "Job ID", required: true, readonly: true, group: "System" }),
|
|
4458
4458
|
name: data.Field.text({
|
|
@@ -4522,7 +4522,7 @@ var SysJobRun = data.ObjectSchema.create({
|
|
|
4522
4522
|
nameField: "job_name",
|
|
4523
4523
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
4524
4524
|
titleFormat: "{job_name} @ {started_at}",
|
|
4525
|
-
|
|
4525
|
+
highlightFields: ["job_name", "status", "started_at", "duration_ms", "attempt"],
|
|
4526
4526
|
fields: {
|
|
4527
4527
|
id: data.Field.text({ label: "Run ID", required: true, readonly: true, group: "System" }),
|
|
4528
4528
|
job_name: data.Field.text({
|
|
@@ -4576,7 +4576,7 @@ var SysJobQueue = data.ObjectSchema.create({
|
|
|
4576
4576
|
nameField: "queue",
|
|
4577
4577
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
4578
4578
|
titleFormat: "{queue} #{id}",
|
|
4579
|
-
|
|
4579
|
+
highlightFields: ["queue", "status", "attempts", "scheduled_for", "last_error"],
|
|
4580
4580
|
fields: {
|
|
4581
4581
|
id: data.Field.text({ label: "Message ID", required: true, readonly: true, group: "System" }),
|
|
4582
4582
|
queue: data.Field.text({
|
|
@@ -4688,7 +4688,7 @@ var SysImportJob = data.ObjectSchema.create({
|
|
|
4688
4688
|
nameField: "object_name",
|
|
4689
4689
|
// [ADR-0079] canonical primary-title pointer
|
|
4690
4690
|
titleFormat: "{object_name} import @ {created_at}",
|
|
4691
|
-
|
|
4691
|
+
highlightFields: ["object_name", "status", "processed_rows", "total_rows", "created_at"],
|
|
4692
4692
|
fields: {
|
|
4693
4693
|
id: data.Field.text({ label: "Job ID", required: true, readonly: true, group: "System" }),
|
|
4694
4694
|
object_name: data.Field.text({
|
|
@@ -4768,7 +4768,7 @@ var SysSetting = data.ObjectSchema.create({
|
|
|
4768
4768
|
nameField: "key",
|
|
4769
4769
|
// [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
|
|
4770
4770
|
titleFormat: "{namespace}.{key}",
|
|
4771
|
-
|
|
4771
|
+
highlightFields: ["namespace", "key", "scope", "updated_at"],
|
|
4772
4772
|
listViews: {
|
|
4773
4773
|
by_namespace: {
|
|
4774
4774
|
type: "grid",
|
|
@@ -4918,7 +4918,7 @@ var SysSecret = data.ObjectSchema.create({
|
|
|
4918
4918
|
isSystem: true,
|
|
4919
4919
|
managedBy: "system",
|
|
4920
4920
|
description: "Cipher store referenced by sys_setting handles. Never holds plaintext.",
|
|
4921
|
-
|
|
4921
|
+
highlightFields: ["namespace", "key", "kms_key_id", "version", "rotated_at"],
|
|
4922
4922
|
listViews: {
|
|
4923
4923
|
all: {
|
|
4924
4924
|
type: "grid",
|
|
@@ -5009,7 +5009,7 @@ var SysSettingAudit = data.ObjectSchema.create({
|
|
|
5009
5009
|
isSystem: true,
|
|
5010
5010
|
managedBy: "system",
|
|
5011
5011
|
description: "Append-only audit trail for SettingsService mutations.",
|
|
5012
|
-
|
|
5012
|
+
highlightFields: ["namespace", "key", "scope", "action", "actor_id", "created_at"],
|
|
5013
5013
|
listViews: {
|
|
5014
5014
|
recent: {
|
|
5015
5015
|
type: "grid",
|
|
@@ -5245,9 +5245,19 @@ var SETUP_NAV_CONTRIBUTIONS = [
|
|
|
5245
5245
|
{ id: "nav_system_overview", type: "dashboard", label: "System Overview", dashboardName: "system_overview", icon: "activity" }
|
|
5246
5246
|
]
|
|
5247
5247
|
},
|
|
5248
|
-
|
|
5249
|
-
|
|
5250
|
-
|
|
5248
|
+
{
|
|
5249
|
+
// Package ADMINISTRATION is a platform/operator concern (ADR-0084:
|
|
5250
|
+
// packages are Operate, out of the builder) — so its home is Setup, not
|
|
5251
|
+
// the application builder. The console binds `developer:packages` to the
|
|
5252
|
+
// existing package-management page. Building/creating apps is a separate
|
|
5253
|
+
// journey (Home cover → /studio); this entry is for install/inspect/admin.
|
|
5254
|
+
app: "setup",
|
|
5255
|
+
group: "group_apps",
|
|
5256
|
+
priority: BASE_PRIORITY,
|
|
5257
|
+
items: [
|
|
5258
|
+
{ id: "nav_packages", type: "component", label: "Packages", componentRef: "developer:packages", icon: "package" }
|
|
5259
|
+
]
|
|
5260
|
+
},
|
|
5251
5261
|
{
|
|
5252
5262
|
app: "setup",
|
|
5253
5263
|
group: "group_people_org",
|
|
@@ -5391,6 +5401,19 @@ var STUDIO_APP = {
|
|
|
5391
5401
|
label: "Overview",
|
|
5392
5402
|
icon: "layout-dashboard",
|
|
5393
5403
|
children: [
|
|
5404
|
+
{
|
|
5405
|
+
// The application builder's front door (ADR-0080/0084): pick or
|
|
5406
|
+
// create a writable base package, then design in the full-screen
|
|
5407
|
+
// pillar builder (/studio/:packageId/:tab). The console binds
|
|
5408
|
+
// `studio:builder` to the BuilderLanding page — this makes the
|
|
5409
|
+
// builder reachable from login (Home → Studio → App Builder)
|
|
5410
|
+
// instead of being a URL-only surface.
|
|
5411
|
+
id: "nav_app_builder",
|
|
5412
|
+
type: "component",
|
|
5413
|
+
label: "App Builder",
|
|
5414
|
+
componentRef: "studio:builder",
|
|
5415
|
+
icon: "hammer"
|
|
5416
|
+
},
|
|
5394
5417
|
{
|
|
5395
5418
|
id: "nav_metadata_directory",
|
|
5396
5419
|
type: "component",
|