@objectstack/platform-objects 14.3.0 → 14.6.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/plugin.mjs CHANGED
@@ -33,14 +33,64 @@ var enObjects = {
33
33
  label: "Ban Expires",
34
34
  help: "When set, the ban auto-clears at this time."
35
35
  },
36
+ failed_login_count: {
37
+ label: "Failed Login Count",
38
+ help: "Consecutive failed sign-in attempts; reset to 0 on success. Maintained by the auth manager."
39
+ },
40
+ locked_until: {
41
+ label: "Locked Until",
42
+ help: "When set and in the future, sign-in is rejected (brute-force lockout). Auto-clears past this time; an admin can clear it early via Unlock."
43
+ },
44
+ password_changed_at: {
45
+ label: "Password Changed At",
46
+ help: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
47
+ },
48
+ phone_number: {
49
+ label: "Phone Number",
50
+ help: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
51
+ },
52
+ phone_number_verified: {
53
+ label: "Phone Verified",
54
+ help: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
55
+ },
56
+ must_change_password: {
57
+ label: "Must Change Password",
58
+ help: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
59
+ },
60
+ mfa_required_at: {
61
+ label: "MFA Required At",
62
+ help: "When enforced MFA first applied to this user (grace-period clock). Backs mfa_required; system-managed."
63
+ },
64
+ last_login_at: {
65
+ label: "Last Login At",
66
+ help: "Timestamp of the last successful sign-in. Stamped by the auth manager; system-managed."
67
+ },
68
+ last_login_ip: {
69
+ label: "Last Login IP",
70
+ help: "Client IP of the last successful sign-in (from the trusted proxy forwarded header). System-managed."
71
+ },
72
+ ai_access: {
73
+ label: "AI Access",
74
+ help: "Whether this user holds an AI seat \u2014 grants access to the in-UI AI agents (build / ask). The framework synthesizes the `ai_seat` capability from this flag (plugin-hono-server resolveCtx). Assignment is capped by the licensed / purchased seat count (enforced by @objectstack/security-enterprise AiSeatPlugin). Owned by objectql (better-auth is oblivious to this column)."
75
+ },
36
76
  image: {
37
77
  label: "Profile Image"
38
78
  },
39
79
  manager_id: {
40
- label: "Manager"
80
+ label: "Manager",
81
+ help: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
41
82
  },
42
83
  primary_business_unit_id: {
43
- label: "Primary Business Unit"
84
+ label: "Primary Business Unit",
85
+ help: "The user's primary business unit \u2014 a denormalised projection of sys_business_unit_member.is_primary, maintained by plugin-sharing (ADR-0057 addendum D12). Lets a user-lookup filter candidates by business unit without traversing the membership junction. Do not edit directly; set it via business-unit membership."
86
+ },
87
+ source: {
88
+ label: "Identity Source",
89
+ help: "How this identity was created \u2014 idp_provisioned (federated SSO JIT) or env_native (local signup / app end-user). System-managed; do not edit.",
90
+ options: {
91
+ idp_provisioned: "IdP-Provisioned",
92
+ env_native: "Env-Native"
93
+ }
44
94
  },
45
95
  id: {
46
96
  label: "User ID"
@@ -83,6 +133,14 @@ var enObjects = {
83
133
  label: "Unban User",
84
134
  successMessage: "User unbanned"
85
135
  },
136
+ unlock_user: {
137
+ label: "Unlock Account",
138
+ successMessage: "Account unlocked"
139
+ },
140
+ create_user: {
141
+ label: "Create User",
142
+ successMessage: "User created"
143
+ },
86
144
  set_user_password: {
87
145
  label: "Set Password",
88
146
  successMessage: "Password updated"
@@ -144,6 +202,18 @@ var enObjects = {
144
202
  expires_at: {
145
203
  label: "Expires At"
146
204
  },
205
+ last_activity_at: {
206
+ label: "Last Activity At",
207
+ help: "Timestamp of the last request on this session; drives idle-timeout. System-managed."
208
+ },
209
+ revoked_at: {
210
+ label: "Revoked At",
211
+ help: "When set, this session was revoked (idle / absolute-max / concurrent-cap / admin). System-managed."
212
+ },
213
+ revoke_reason: {
214
+ label: "Revoke Reason",
215
+ help: "Why the session was revoked (idle_timeout, absolute_max, concurrent_cap, \u2026)."
216
+ },
147
217
  active_organization_id: {
148
218
  label: "Active Organization"
149
219
  },
@@ -242,6 +312,10 @@ var enObjects = {
242
312
  password: {
243
313
  label: "Password Hash",
244
314
  help: "Hashed password for email/password provider"
315
+ },
316
+ previous_password_hashes: {
317
+ label: "Previous Password Hashes",
318
+ help: "JSON array of prior password hashes (bounded by password_history_count); reuse-prevention only. System-managed."
245
319
  }
246
320
  },
247
321
  _views: {
@@ -312,6 +386,10 @@ var enObjects = {
312
386
  label: "Metadata",
313
387
  help: "JSON-serialized organization metadata"
314
388
  },
389
+ require_mfa: {
390
+ label: "Require Multi-Factor Auth",
391
+ help: "When true, every member of this organization must enroll an authenticator app to access data."
392
+ },
315
393
  id: {
316
394
  label: "Organization ID"
317
395
  },
@@ -636,6 +714,9 @@ var enObjects = {
636
714
  }
637
715
  },
638
716
  _views: {
717
+ org_chart: {
718
+ label: "Org Chart"
719
+ },
639
720
  active: {
640
721
  label: "Active"
641
722
  },
@@ -1217,263 +1298,57 @@ var enObjects = {
1217
1298
  }
1218
1299
  }
1219
1300
  },
1220
- sys_audit_log: {
1221
- label: "Audit Log",
1222
- pluralLabel: "Audit Logs",
1223
- description: "Immutable audit trail for platform events",
1224
- fields: {
1225
- created_at: {
1226
- label: "Timestamp"
1227
- },
1228
- action: {
1229
- label: "Action",
1230
- help: "Action type (snake_case)",
1231
- options: {
1232
- create: "create",
1233
- update: "update",
1234
- delete: "delete",
1235
- restore: "restore",
1236
- login: "login",
1237
- logout: "logout",
1238
- permission_change: "permission_change",
1239
- config_change: "config_change",
1240
- export: "export",
1241
- import: "import"
1242
- }
1243
- },
1244
- user_id: {
1245
- label: "Actor",
1246
- help: "User who performed the action (null for system actions)"
1247
- },
1248
- object_name: {
1249
- label: "Object",
1250
- help: "Target object (e.g. sys_user, project_task)"
1251
- },
1252
- record_id: {
1253
- label: "Record ID",
1254
- help: "ID of the affected record"
1255
- },
1256
- old_value: {
1257
- label: "Old Value",
1258
- help: "JSON-serialized previous state"
1259
- },
1260
- new_value: {
1261
- label: "New Value",
1262
- help: "JSON-serialized new state"
1263
- },
1264
- ip_address: {
1265
- label: "IP Address"
1266
- },
1267
- user_agent: {
1268
- label: "User Agent"
1269
- },
1270
- tenant_id: {
1271
- label: "Tenant",
1272
- help: "Tenant context for multi-tenant isolation"
1273
- },
1274
- metadata: {
1275
- label: "Metadata",
1276
- help: "JSON-serialized additional context"
1277
- },
1278
- id: {
1279
- label: "Audit Log ID"
1280
- }
1281
- },
1282
- _views: {
1283
- recent: {
1284
- label: "Recent"
1285
- },
1286
- writes_only: {
1287
- label: "Writes"
1288
- },
1289
- auth_events: {
1290
- label: "Auth"
1291
- },
1292
- config_changes: {
1293
- label: "Config"
1294
- },
1295
- all_events: {
1296
- label: "All"
1297
- }
1298
- }
1299
- },
1300
- sys_presence: {
1301
- label: "Presence",
1302
- pluralLabel: "Presences",
1303
- description: "Real-time user presence and activity tracking",
1301
+ sys_notification: {
1302
+ label: "Notification",
1303
+ pluralLabel: "Notifications",
1304
+ description: "Per-user notification inbox entries",
1304
1305
  fields: {
1305
1306
  id: {
1306
- label: "Presence ID"
1307
- },
1308
- created_at: {
1309
- label: "Created At"
1310
- },
1311
- updated_at: {
1312
- label: "Updated At"
1313
- },
1314
- user_id: {
1315
- label: "User"
1316
- },
1317
- session_id: {
1318
- label: "Session"
1319
- },
1320
- status: {
1321
- label: "Status",
1322
- options: {
1323
- online: "Online",
1324
- away: "Away",
1325
- busy: "Busy",
1326
- offline: "Offline"
1327
- }
1307
+ label: "Notification ID"
1328
1308
  },
1329
- last_seen: {
1330
- label: "Last Seen"
1309
+ topic: {
1310
+ label: "Topic",
1311
+ help: "Notification topic, e.g. task.assigned, collab.mention"
1331
1312
  },
1332
- current_location: {
1333
- label: "Current Location"
1313
+ payload: {
1314
+ label: "Payload",
1315
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
1334
1316
  },
1335
- device: {
1336
- label: "Device",
1317
+ severity: {
1318
+ label: "Severity",
1319
+ help: "Severity hint for rendering / filtering",
1337
1320
  options: {
1338
- desktop: "Desktop",
1339
- mobile: "Mobile",
1340
- tablet: "Tablet",
1341
- other: "Other"
1321
+ info: "info",
1322
+ warning: "warning",
1323
+ critical: "critical"
1342
1324
  }
1343
1325
  },
1344
- custom_status: {
1345
- label: "Custom Status"
1346
- },
1347
- metadata: {
1348
- label: "Metadata",
1349
- help: "Arbitrary JSON metadata associated with the presence state (matches PresenceStateSchema.metadata)."
1350
- }
1351
- }
1352
- },
1353
- sys_activity: {
1354
- label: "Activity",
1355
- pluralLabel: "Activities",
1356
- description: "Recent activity stream entries (lightweight, denormalized)",
1357
- fields: {
1358
- id: {
1359
- label: "Activity ID"
1360
- },
1361
- timestamp: {
1362
- label: "Timestamp"
1326
+ dedup_key: {
1327
+ label: "Dedup Key",
1328
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
1363
1329
  },
1364
- type: {
1365
- label: "Type",
1366
- options: {
1367
- created: "created",
1368
- updated: "updated",
1369
- deleted: "deleted",
1370
- commented: "commented",
1371
- mentioned: "mentioned",
1372
- shared: "shared",
1373
- assigned: "assigned",
1374
- completed: "completed",
1375
- login: "login",
1376
- logout: "logout",
1377
- system: "system"
1378
- }
1330
+ source_object: {
1331
+ label: "Source Object",
1332
+ help: "Object name of the related record (e.g. lead, opportunity)"
1379
1333
  },
1380
- summary: {
1381
- label: "Summary",
1382
- help: "Human-readable one-line summary"
1334
+ source_id: {
1335
+ label: "Source Record",
1336
+ help: "Record id within source_object"
1383
1337
  },
1384
1338
  actor_id: {
1385
- label: "Actor"
1386
- },
1387
- actor_name: {
1388
- label: "Actor Name"
1389
- },
1390
- actor_avatar_url: {
1391
- label: "Actor Avatar"
1392
- },
1393
- object_name: {
1394
- label: "Object",
1395
- help: "Target object short name (e.g. account, sys_user)"
1396
- },
1397
- record_id: {
1398
- label: "Record ID"
1399
- },
1400
- record_label: {
1401
- label: "Record Label",
1402
- help: "Display label of the target record at write time"
1403
- },
1404
- url: {
1405
- label: "URL",
1406
- help: "Optional deep-link to the activity target"
1407
- },
1408
- environment_id: {
1409
- label: "Project",
1410
- help: "Environment context (multi-environment deployments)"
1411
- },
1412
- metadata: {
1413
- label: "Metadata",
1414
- help: "JSON-serialized additional context"
1415
- }
1416
- }
1417
- },
1418
- sys_comment: {
1419
- label: "Comment",
1420
- pluralLabel: "Comments",
1421
- description: "Threaded comments attached to records via thread_id",
1422
- fields: {
1423
- id: {
1424
- label: "Comment ID"
1425
- },
1426
- thread_id: {
1427
- label: "Thread",
1428
- help: "Thread identifier \u2014 conventionally `{object}:{record_id}` (e.g. `sys_user:abc123`)"
1429
- },
1430
- parent_id: {
1431
- label: "Parent Comment",
1432
- help: "Optional parent comment for nested replies"
1433
- },
1434
- reply_count: {
1435
- label: "Reply Count"
1436
- },
1437
- author_id: {
1438
- label: "Author"
1439
- },
1440
- author_name: {
1441
- label: "Author Name"
1442
- },
1443
- author_avatar_url: {
1444
- label: "Author Avatar"
1445
- },
1446
- body: {
1447
- label: "Body",
1448
- help: "Comment text (Markdown supported)"
1449
- },
1450
- mentions: {
1451
- label: "Mentions",
1452
- help: "JSON array of @mention objects"
1453
- },
1454
- reactions: {
1455
- label: "Reactions",
1456
- help: "JSON array of emoji reaction objects"
1457
- },
1458
- is_edited: {
1459
- label: "Edited"
1460
- },
1461
- edited_at: {
1462
- label: "Edited At"
1463
- },
1464
- visibility: {
1465
- label: "Visibility",
1466
- options: {
1467
- public: "public",
1468
- internal: "internal",
1469
- private: "private"
1470
- }
1339
+ label: "Actor",
1340
+ help: "User who caused the notification (mentioner, assigner)"
1471
1341
  },
1472
1342
  created_at: {
1473
1343
  label: "Created At"
1344
+ }
1345
+ },
1346
+ _views: {
1347
+ recent: {
1348
+ label: "Recent"
1474
1349
  },
1475
- updated_at: {
1476
- label: "Updated At"
1350
+ by_topic: {
1351
+ label: "By Topic"
1477
1352
  }
1478
1353
  }
1479
1354
  },
@@ -1538,60 +1413,6 @@ var enObjects = {
1538
1413
  }
1539
1414
  }
1540
1415
  },
1541
- sys_notification: {
1542
- label: "Notification",
1543
- pluralLabel: "Notifications",
1544
- description: "Per-user notification inbox entries",
1545
- fields: {
1546
- id: {
1547
- label: "Notification ID"
1548
- },
1549
- topic: {
1550
- label: "Topic",
1551
- help: "Notification topic, e.g. task.assigned, collab.mention"
1552
- },
1553
- payload: {
1554
- label: "Payload",
1555
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
1556
- },
1557
- severity: {
1558
- label: "Severity",
1559
- help: "Severity hint for rendering / filtering",
1560
- options: {
1561
- info: "info",
1562
- warning: "warning",
1563
- critical: "critical"
1564
- }
1565
- },
1566
- dedup_key: {
1567
- label: "Dedup Key",
1568
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
1569
- },
1570
- source_object: {
1571
- label: "Source Object",
1572
- help: "Object name of the related record (e.g. lead, opportunity)"
1573
- },
1574
- source_id: {
1575
- label: "Source Record",
1576
- help: "Record id within source_object"
1577
- },
1578
- actor_id: {
1579
- label: "Actor",
1580
- help: "User who caused the notification (mentioner, assigner)"
1581
- },
1582
- created_at: {
1583
- label: "Created At"
1584
- }
1585
- },
1586
- _views: {
1587
- recent: {
1588
- label: "Recent"
1589
- },
1590
- by_topic: {
1591
- label: "By Topic"
1592
- }
1593
- }
1594
- },
1595
1416
  sys_email: {
1596
1417
  label: "Email",
1597
1418
  pluralLabel: "Emails",
@@ -2496,6 +2317,11 @@ var enObjects = {
2496
2317
  label: "Ciphertext",
2497
2318
  help: "Provider-encoded ciphertext blob (base64 / JSON). Implementation-defined; only the matching ICryptoProvider can read it."
2498
2319
  }
2320
+ },
2321
+ _views: {
2322
+ all: {
2323
+ label: "All Secrets"
2324
+ }
2499
2325
  }
2500
2326
  },
2501
2327
  sys_setting_audit: {
@@ -2571,6 +2397,11 @@ var enObjects = {
2571
2397
  label: "Request ID",
2572
2398
  help: "Correlates with sys_audit_log / tracing."
2573
2399
  }
2400
+ },
2401
+ _views: {
2402
+ recent: {
2403
+ label: "Recent"
2404
+ }
2574
2405
  }
2575
2406
  }
2576
2407
  };
@@ -2780,14 +2611,64 @@ var zhCNObjects = {
2780
2611
  label: "\u5C01\u7981\u5230\u671F\u65F6\u95F4",
2781
2612
  help: "\u8BBE\u7F6E\u540E\uFF0C\u5230\u8FBE\u8BE5\u65F6\u95F4\u4F1A\u81EA\u52A8\u89E3\u9664\u5C01\u7981\u3002"
2782
2613
  },
2614
+ failed_login_count: {
2615
+ label: "Failed Login Count",
2616
+ help: "Consecutive failed sign-in attempts; reset to 0 on success. Maintained by the auth manager."
2617
+ },
2618
+ locked_until: {
2619
+ label: "Locked Until",
2620
+ help: "When set and in the future, sign-in is rejected (brute-force lockout). Auto-clears past this time; an admin can clear it early via Unlock."
2621
+ },
2622
+ password_changed_at: {
2623
+ label: "Password Changed At",
2624
+ help: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
2625
+ },
2626
+ phone_number: {
2627
+ label: "Phone Number",
2628
+ help: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
2629
+ },
2630
+ phone_number_verified: {
2631
+ label: "Phone Verified",
2632
+ help: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
2633
+ },
2634
+ must_change_password: {
2635
+ label: "Must Change Password",
2636
+ help: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
2637
+ },
2638
+ mfa_required_at: {
2639
+ label: "MFA Required At",
2640
+ help: "When enforced MFA first applied to this user (grace-period clock). Backs mfa_required; system-managed."
2641
+ },
2642
+ last_login_at: {
2643
+ label: "Last Login At",
2644
+ help: "Timestamp of the last successful sign-in. Stamped by the auth manager; system-managed."
2645
+ },
2646
+ last_login_ip: {
2647
+ label: "Last Login IP",
2648
+ help: "Client IP of the last successful sign-in (from the trusted proxy forwarded header). System-managed."
2649
+ },
2650
+ ai_access: {
2651
+ label: "AI Access",
2652
+ help: "Whether this user holds an AI seat \u2014 grants access to the in-UI AI agents (build / ask). The framework synthesizes the `ai_seat` capability from this flag (plugin-hono-server resolveCtx). Assignment is capped by the licensed / purchased seat count (enforced by @objectstack/security-enterprise AiSeatPlugin). Owned by objectql (better-auth is oblivious to this column)."
2653
+ },
2783
2654
  image: {
2784
2655
  label: "\u5934\u50CF"
2785
2656
  },
2786
2657
  manager_id: {
2787
- label: "\u7ECF\u7406"
2658
+ label: "\u7ECF\u7406",
2659
+ help: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
2788
2660
  },
2789
2661
  primary_business_unit_id: {
2790
- label: "\u4E3B\u5C5E\u4E1A\u52A1\u5355\u5143"
2662
+ label: "\u4E3B\u5C5E\u4E1A\u52A1\u5355\u5143",
2663
+ help: "The user's primary business unit \u2014 a denormalised projection of sys_business_unit_member.is_primary, maintained by plugin-sharing (ADR-0057 addendum D12). Lets a user-lookup filter candidates by business unit without traversing the membership junction. Do not edit directly; set it via business-unit membership."
2664
+ },
2665
+ source: {
2666
+ label: "Identity Source",
2667
+ help: "How this identity was created \u2014 idp_provisioned (federated SSO JIT) or env_native (local signup / app end-user). System-managed; do not edit.",
2668
+ options: {
2669
+ idp_provisioned: "IdP-Provisioned",
2670
+ env_native: "Env-Native"
2671
+ }
2791
2672
  },
2792
2673
  id: {
2793
2674
  label: "\u7528\u6237 ID"
@@ -2830,6 +2711,14 @@ var zhCNObjects = {
2830
2711
  label: "\u89E3\u9664\u5C01\u7981",
2831
2712
  successMessage: "\u7528\u6237\u5DF2\u89E3\u9664\u5C01\u7981"
2832
2713
  },
2714
+ unlock_user: {
2715
+ label: "Unlock Account",
2716
+ successMessage: "Account unlocked"
2717
+ },
2718
+ create_user: {
2719
+ label: "Create User",
2720
+ successMessage: "User created"
2721
+ },
2833
2722
  set_user_password: {
2834
2723
  label: "\u8BBE\u7F6E\u5BC6\u7801",
2835
2724
  successMessage: "\u5BC6\u7801\u5DF2\u66F4\u65B0"
@@ -2891,7 +2780,19 @@ var zhCNObjects = {
2891
2780
  expires_at: {
2892
2781
  label: "\u8FC7\u671F\u65F6\u95F4"
2893
2782
  },
2894
- active_organization_id: {
2783
+ last_activity_at: {
2784
+ label: "Last Activity At",
2785
+ help: "Timestamp of the last request on this session; drives idle-timeout. System-managed."
2786
+ },
2787
+ revoked_at: {
2788
+ label: "Revoked At",
2789
+ help: "When set, this session was revoked (idle / absolute-max / concurrent-cap / admin). System-managed."
2790
+ },
2791
+ revoke_reason: {
2792
+ label: "Revoke Reason",
2793
+ help: "Why the session was revoked (idle_timeout, absolute_max, concurrent_cap, \u2026)."
2794
+ },
2795
+ active_organization_id: {
2895
2796
  label: "\u5F53\u524D\u7EC4\u7EC7"
2896
2797
  },
2897
2798
  active_team_id: {
@@ -2989,6 +2890,10 @@ var zhCNObjects = {
2989
2890
  password: {
2990
2891
  label: "\u5BC6\u7801\u54C8\u5E0C",
2991
2892
  help: "\u90AE\u7BB1/\u5BC6\u7801\u63D0\u4F9B\u65B9\u4F7F\u7528\u7684\u5BC6\u7801\u54C8\u5E0C"
2893
+ },
2894
+ previous_password_hashes: {
2895
+ label: "Previous Password Hashes",
2896
+ help: "JSON array of prior password hashes (bounded by password_history_count); reuse-prevention only. System-managed."
2992
2897
  }
2993
2898
  },
2994
2899
  _views: {
@@ -3059,6 +2964,10 @@ var zhCNObjects = {
3059
2964
  label: "\u5143\u6570\u636E",
3060
2965
  help: "JSON \u5E8F\u5217\u5316\u7684\u7EC4\u7EC7\u5143\u6570\u636E"
3061
2966
  },
2967
+ require_mfa: {
2968
+ label: "Require Multi-Factor Auth",
2969
+ help: "When true, every member of this organization must enroll an authenticator app to access data."
2970
+ },
3062
2971
  id: {
3063
2972
  label: "\u7EC4\u7EC7 ID"
3064
2973
  },
@@ -3383,6 +3292,9 @@ var zhCNObjects = {
3383
3292
  }
3384
3293
  },
3385
3294
  _views: {
3295
+ org_chart: {
3296
+ label: "Org Chart"
3297
+ },
3386
3298
  active: {
3387
3299
  label: "\u542F\u7528"
3388
3300
  },
@@ -3964,263 +3876,57 @@ var zhCNObjects = {
3964
3876
  }
3965
3877
  }
3966
3878
  },
3967
- sys_audit_log: {
3968
- label: "\u5BA1\u8BA1\u65E5\u5FD7",
3969
- pluralLabel: "\u5BA1\u8BA1\u65E5\u5FD7",
3970
- description: "\u5E73\u53F0\u4E8B\u4EF6\u7684\u4E0D\u53EF\u53D8\u5BA1\u8BA1\u8FFD\u8E2A",
3971
- fields: {
3972
- created_at: {
3973
- label: "\u65F6\u95F4\u6233"
3974
- },
3975
- action: {
3976
- label: "\u64CD\u4F5C",
3977
- help: "\u64CD\u4F5C\u7C7B\u578B\uFF08snake_case\uFF09",
3978
- options: {
3979
- create: "\u521B\u5EFA",
3980
- update: "\u66F4\u65B0",
3981
- delete: "\u5220\u9664",
3982
- restore: "\u6062\u590D",
3983
- login: "\u767B\u5F55",
3984
- logout: "\u767B\u51FA",
3985
- permission_change: "\u6743\u9650\u53D8\u66F4",
3986
- config_change: "\u914D\u7F6E\u53D8\u66F4",
3987
- export: "\u5BFC\u51FA",
3988
- import: "\u5BFC\u5165"
3989
- }
3990
- },
3991
- user_id: {
3992
- label: "\u6267\u884C\u4EBA",
3993
- help: "\u6267\u884C\u8BE5\u64CD\u4F5C\u7684\u7528\u6237\uFF08\u7CFB\u7EDF\u64CD\u4F5C\u65F6\u4E3A null\uFF09"
3994
- },
3995
- object_name: {
3996
- label: "\u5BF9\u8C61",
3997
- help: "\u76EE\u6807\u5BF9\u8C61\uFF08\u4F8B\u5982 sys_user\u3001project_task\uFF09"
3998
- },
3999
- record_id: {
4000
- label: "\u8BB0\u5F55 ID",
4001
- help: "\u53D7\u5F71\u54CD\u8BB0\u5F55\u7684 ID"
4002
- },
4003
- old_value: {
4004
- label: "\u65E7\u503C",
4005
- help: "\u65E7\u72B6\u6001\u7684 JSON \u5E8F\u5217\u5316\u5185\u5BB9"
4006
- },
4007
- new_value: {
4008
- label: "\u65B0\u503C",
4009
- help: "\u65B0\u72B6\u6001\u7684 JSON \u5E8F\u5217\u5316\u5185\u5BB9"
4010
- },
4011
- ip_address: {
4012
- label: "IP \u5730\u5740"
4013
- },
4014
- user_agent: {
4015
- label: "\u7528\u6237\u4EE3\u7406"
4016
- },
4017
- tenant_id: {
4018
- label: "\u79DF\u6237",
4019
- help: "\u7528\u4E8E\u591A\u79DF\u6237\u9694\u79BB\u7684\u79DF\u6237\u4E0A\u4E0B\u6587"
4020
- },
4021
- metadata: {
4022
- label: "\u5143\u6570\u636E",
4023
- help: "\u9644\u52A0\u4E0A\u4E0B\u6587\u7684 JSON \u5E8F\u5217\u5316\u5185\u5BB9"
4024
- },
4025
- id: {
4026
- label: "\u5BA1\u8BA1\u65E5\u5FD7 ID"
4027
- }
4028
- },
4029
- _views: {
4030
- recent: {
4031
- label: "\u6700\u8FD1"
4032
- },
4033
- writes_only: {
4034
- label: "\u5199\u5165"
4035
- },
4036
- auth_events: {
4037
- label: "\u8BA4\u8BC1"
4038
- },
4039
- config_changes: {
4040
- label: "\u914D\u7F6E"
4041
- },
4042
- all_events: {
4043
- label: "\u5168\u90E8"
4044
- }
4045
- }
4046
- },
4047
- sys_presence: {
4048
- label: "\u5728\u7EBF\u72B6\u6001",
4049
- pluralLabel: "\u5728\u7EBF\u72B6\u6001",
4050
- description: "\u5B9E\u65F6\u7528\u6237\u5728\u7EBF\u4E0E\u6D3B\u52A8\u8DDF\u8E2A",
3879
+ sys_notification: {
3880
+ label: "\u901A\u77E5",
3881
+ pluralLabel: "\u901A\u77E5",
3882
+ description: "\u6309\u7528\u6237\u5B58\u50A8\u7684\u901A\u77E5\u6536\u4EF6\u7BB1\u6761\u76EE",
4051
3883
  fields: {
4052
3884
  id: {
4053
- label: "\u5728\u7EBF\u72B6\u6001 ID"
4054
- },
4055
- created_at: {
4056
- label: "\u521B\u5EFA\u65F6\u95F4"
4057
- },
4058
- updated_at: {
4059
- label: "\u66F4\u65B0\u65F6\u95F4"
4060
- },
4061
- user_id: {
4062
- label: "\u7528\u6237"
4063
- },
4064
- session_id: {
4065
- label: "\u4F1A\u8BDD"
4066
- },
4067
- status: {
4068
- label: "\u72B6\u6001",
4069
- options: {
4070
- online: "\u5728\u7EBF",
4071
- away: "\u79BB\u5F00",
4072
- busy: "\u5FD9\u788C",
4073
- offline: "\u79BB\u7EBF"
4074
- }
3885
+ label: "\u901A\u77E5 ID"
4075
3886
  },
4076
- last_seen: {
4077
- label: "\u6700\u8FD1\u5728\u7EBF\u65F6\u95F4"
3887
+ topic: {
3888
+ label: "Topic",
3889
+ help: "Notification topic, e.g. task.assigned, collab.mention"
4078
3890
  },
4079
- current_location: {
4080
- label: "\u5F53\u524D\u4F4D\u7F6E"
3891
+ payload: {
3892
+ label: "Payload",
3893
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
4081
3894
  },
4082
- device: {
4083
- label: "\u8BBE\u5907",
3895
+ severity: {
3896
+ label: "Severity",
3897
+ help: "Severity hint for rendering / filtering",
4084
3898
  options: {
4085
- desktop: "\u684C\u9762\u7AEF",
4086
- mobile: "\u79FB\u52A8\u7AEF",
4087
- tablet: "\u5E73\u677F\u7AEF",
4088
- other: "\u5176\u4ED6"
3899
+ info: "info",
3900
+ warning: "warning",
3901
+ critical: "critical"
4089
3902
  }
4090
3903
  },
4091
- custom_status: {
4092
- label: "\u81EA\u5B9A\u4E49\u72B6\u6001"
4093
- },
4094
- metadata: {
4095
- label: "\u5143\u6570\u636E",
4096
- help: "\u4E0E\u5728\u7EBF\u72B6\u6001\u5173\u8054\u7684\u4EFB\u610F JSON \u5143\u6570\u636E\uFF08\u5BF9\u5E94 PresenceStateSchema.metadata\uFF09\u3002"
4097
- }
4098
- }
4099
- },
4100
- sys_activity: {
4101
- label: "\u6D3B\u52A8",
4102
- pluralLabel: "\u6D3B\u52A8",
4103
- description: "\u6700\u8FD1\u6D3B\u52A8\u6D41\u6761\u76EE\uFF08\u8F7B\u91CF\u3001\u53BB\u89C4\u8303\u5316\uFF09",
4104
- fields: {
4105
- id: {
4106
- label: "\u6D3B\u52A8 ID"
4107
- },
4108
- timestamp: {
4109
- label: "\u65F6\u95F4\u6233"
3904
+ dedup_key: {
3905
+ label: "Dedup Key",
3906
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
4110
3907
  },
4111
- type: {
4112
- label: "\u7C7B\u578B",
4113
- options: {
4114
- created: "\u5DF2\u521B\u5EFA",
4115
- updated: "\u5DF2\u66F4\u65B0",
4116
- deleted: "\u5DF2\u5220\u9664",
4117
- commented: "\u5DF2\u8BC4\u8BBA",
4118
- mentioned: "\u88AB\u63D0\u53CA",
4119
- shared: "\u5DF2\u5171\u4EAB",
4120
- assigned: "\u5DF2\u5206\u914D",
4121
- completed: "\u5DF2\u5B8C\u6210",
4122
- login: "\u767B\u5F55",
4123
- logout: "\u767B\u51FA",
4124
- system: "\u7CFB\u7EDF"
4125
- }
3908
+ source_object: {
3909
+ label: "\u6765\u6E90\u5BF9\u8C61",
3910
+ help: "\u5173\u8054\u8BB0\u5F55\u7684\u5BF9\u8C61\u540D\u79F0\uFF08\u4F8B\u5982 lead\u3001opportunity\uFF09"
4126
3911
  },
4127
- summary: {
4128
- label: "\u6458\u8981",
4129
- help: "\u4EBA\u7C7B\u53EF\u8BFB\u7684\u5355\u884C\u6458\u8981"
3912
+ source_id: {
3913
+ label: "\u6765\u6E90\u8BB0\u5F55",
3914
+ help: "source_object \u4E2D\u7684\u8BB0\u5F55 ID"
4130
3915
  },
4131
3916
  actor_id: {
4132
- label: "\u6267\u884C\u4EBA"
4133
- },
4134
- actor_name: {
4135
- label: "\u6267\u884C\u4EBA\u540D\u79F0"
4136
- },
4137
- actor_avatar_url: {
4138
- label: "\u6267\u884C\u4EBA\u5934\u50CF"
4139
- },
4140
- object_name: {
4141
- label: "\u5BF9\u8C61",
4142
- help: "\u76EE\u6807\u5BF9\u8C61\u77ED\u540D\u79F0\uFF08\u4F8B\u5982 account\u3001sys_user\uFF09"
4143
- },
4144
- record_id: {
4145
- label: "\u8BB0\u5F55 ID"
4146
- },
4147
- record_label: {
4148
- label: "\u8BB0\u5F55\u6807\u7B7E",
4149
- help: "\u5199\u5165\u65F6\u76EE\u6807\u8BB0\u5F55\u7684\u663E\u793A\u6807\u7B7E"
4150
- },
4151
- url: {
4152
- label: "URL",
4153
- help: "\u6307\u5411\u6D3B\u52A8\u76EE\u6807\u7684\u53EF\u9009\u6DF1\u5EA6\u94FE\u63A5"
4154
- },
4155
- environment_id: {
4156
- label: "\u9879\u76EE",
4157
- help: "\u9879\u76EE\u4E0A\u4E0B\u6587\uFF08\u591A\u9879\u76EE\u90E8\u7F72\uFF09"
4158
- },
4159
- metadata: {
4160
- label: "\u5143\u6570\u636E",
4161
- help: "\u9644\u52A0\u4E0A\u4E0B\u6587\u7684 JSON \u5E8F\u5217\u5316\u5185\u5BB9"
4162
- }
4163
- }
4164
- },
4165
- sys_comment: {
4166
- label: "\u8BC4\u8BBA",
4167
- pluralLabel: "\u8BC4\u8BBA",
4168
- description: "\u901A\u8FC7 thread_id \u9644\u52A0\u5230\u8BB0\u5F55\u7684\u7EBF\u7A0B\u5316\u8BC4\u8BBA",
4169
- fields: {
4170
- id: {
4171
- label: "\u8BC4\u8BBA ID"
4172
- },
4173
- thread_id: {
4174
- label: "\u7EBF\u7A0B",
4175
- help: "\u7EBF\u7A0B\u6807\u8BC6\u2014\u2014\u7EA6\u5B9A\u683C\u5F0F\u4E3A `{object}:{record_id}`\uFF08\u4F8B\u5982 `sys_user:abc123`\uFF09"
4176
- },
4177
- parent_id: {
4178
- label: "\u7236\u8BC4\u8BBA",
4179
- help: "\u53EF\u9009\u7684\u7236\u8BC4\u8BBA\uFF0C\u7528\u4E8E\u5D4C\u5957\u56DE\u590D"
4180
- },
4181
- reply_count: {
4182
- label: "\u56DE\u590D\u6570"
4183
- },
4184
- author_id: {
4185
- label: "\u4F5C\u8005"
4186
- },
4187
- author_name: {
4188
- label: "\u4F5C\u8005\u540D\u79F0"
4189
- },
4190
- author_avatar_url: {
4191
- label: "\u4F5C\u8005\u5934\u50CF"
4192
- },
4193
- body: {
4194
- label: "\u6B63\u6587",
4195
- help: "\u8BC4\u8BBA\u6587\u672C\uFF08\u652F\u6301 Markdown\uFF09"
4196
- },
4197
- mentions: {
4198
- label: "\u63D0\u53CA",
4199
- help: "@mention \u5BF9\u8C61\u7684 JSON \u6570\u7EC4"
4200
- },
4201
- reactions: {
4202
- label: "\u56DE\u5E94",
4203
- help: "\u8868\u60C5\u56DE\u5E94\u5BF9\u8C61\u7684 JSON \u6570\u7EC4"
4204
- },
4205
- is_edited: {
4206
- label: "\u5DF2\u7F16\u8F91"
4207
- },
4208
- edited_at: {
4209
- label: "\u7F16\u8F91\u65F6\u95F4"
4210
- },
4211
- visibility: {
4212
- label: "\u53EF\u89C1\u6027",
4213
- options: {
4214
- public: "\u516C\u5F00",
4215
- internal: "\u5185\u90E8",
4216
- private: "\u79C1\u6709"
4217
- }
3917
+ label: "\u6267\u884C\u4EBA",
3918
+ help: "\u89E6\u53D1\u8BE5\u901A\u77E5\u7684\u7528\u6237\uFF08\u63D0\u53CA\u4EBA\u3001\u5206\u914D\u4EBA\uFF09"
4218
3919
  },
4219
3920
  created_at: {
4220
3921
  label: "\u521B\u5EFA\u65F6\u95F4"
3922
+ }
3923
+ },
3924
+ _views: {
3925
+ recent: {
3926
+ label: "Recent"
4221
3927
  },
4222
- updated_at: {
4223
- label: "\u66F4\u65B0\u65F6\u95F4"
3928
+ by_topic: {
3929
+ label: "By Topic"
4224
3930
  }
4225
3931
  }
4226
3932
  },
@@ -4285,60 +3991,6 @@ var zhCNObjects = {
4285
3991
  }
4286
3992
  }
4287
3993
  },
4288
- sys_notification: {
4289
- label: "\u901A\u77E5",
4290
- pluralLabel: "\u901A\u77E5",
4291
- description: "\u6309\u7528\u6237\u5B58\u50A8\u7684\u901A\u77E5\u6536\u4EF6\u7BB1\u6761\u76EE",
4292
- fields: {
4293
- id: {
4294
- label: "\u901A\u77E5 ID"
4295
- },
4296
- topic: {
4297
- label: "Topic",
4298
- help: "Notification topic, e.g. task.assigned, collab.mention"
4299
- },
4300
- payload: {
4301
- label: "Payload",
4302
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
4303
- },
4304
- severity: {
4305
- label: "Severity",
4306
- help: "Severity hint for rendering / filtering",
4307
- options: {
4308
- info: "info",
4309
- warning: "warning",
4310
- critical: "critical"
4311
- }
4312
- },
4313
- dedup_key: {
4314
- label: "Dedup Key",
4315
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
4316
- },
4317
- source_object: {
4318
- label: "\u6765\u6E90\u5BF9\u8C61",
4319
- help: "\u5173\u8054\u8BB0\u5F55\u7684\u5BF9\u8C61\u540D\u79F0\uFF08\u4F8B\u5982 lead\u3001opportunity\uFF09"
4320
- },
4321
- source_id: {
4322
- label: "\u6765\u6E90\u8BB0\u5F55",
4323
- help: "source_object \u4E2D\u7684\u8BB0\u5F55 ID"
4324
- },
4325
- actor_id: {
4326
- label: "\u6267\u884C\u4EBA",
4327
- help: "\u89E6\u53D1\u8BE5\u901A\u77E5\u7684\u7528\u6237\uFF08\u63D0\u53CA\u4EBA\u3001\u5206\u914D\u4EBA\uFF09"
4328
- },
4329
- created_at: {
4330
- label: "\u521B\u5EFA\u65F6\u95F4"
4331
- }
4332
- },
4333
- _views: {
4334
- recent: {
4335
- label: "Recent"
4336
- },
4337
- by_topic: {
4338
- label: "By Topic"
4339
- }
4340
- }
4341
- },
4342
3994
  sys_email: {
4343
3995
  label: "\u90AE\u4EF6",
4344
3996
  pluralLabel: "\u90AE\u4EF6",
@@ -5243,6 +4895,11 @@ var zhCNObjects = {
5243
4895
  label: "\u5BC6\u6587",
5244
4896
  help: "\u63D0\u4F9B\u65B9\u7F16\u7801\u540E\u7684\u5BC6\u6587\u6570\u636E\uFF08base64 / JSON\uFF09\u3002\u5B9E\u73B0\u5B9A\u4E49\uFF1B\u4EC5\u5339\u914D\u7684 ICryptoProvider \u53EF\u8BFB\u53D6\u3002"
5245
4897
  }
4898
+ },
4899
+ _views: {
4900
+ all: {
4901
+ label: "All Secrets"
4902
+ }
5246
4903
  }
5247
4904
  },
5248
4905
  sys_setting_audit: {
@@ -5318,6 +4975,11 @@ var zhCNObjects = {
5318
4975
  label: "\u8BF7\u6C42 ID",
5319
4976
  help: "\u4E0E sys_audit_log / tracing \u5173\u8054\u3002"
5320
4977
  }
4978
+ },
4979
+ _views: {
4980
+ recent: {
4981
+ label: "Recent"
4982
+ }
5321
4983
  }
5322
4984
  }
5323
4985
  };
@@ -5491,14 +5153,64 @@ var jaJPObjects = {
5491
5153
  label: "\u5229\u7528\u505C\u6B62\u671F\u9650",
5492
5154
  help: "\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u3053\u306E\u65E5\u6642\u306B\u5229\u7528\u505C\u6B62\u304C\u81EA\u52D5\u89E3\u9664\u3055\u308C\u307E\u3059\u3002"
5493
5155
  },
5156
+ failed_login_count: {
5157
+ label: "Failed Login Count",
5158
+ help: "Consecutive failed sign-in attempts; reset to 0 on success. Maintained by the auth manager."
5159
+ },
5160
+ locked_until: {
5161
+ label: "Locked Until",
5162
+ help: "When set and in the future, sign-in is rejected (brute-force lockout). Auto-clears past this time; an admin can clear it early via Unlock."
5163
+ },
5164
+ password_changed_at: {
5165
+ label: "Password Changed At",
5166
+ help: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
5167
+ },
5168
+ phone_number: {
5169
+ label: "Phone Number",
5170
+ help: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
5171
+ },
5172
+ phone_number_verified: {
5173
+ label: "Phone Verified",
5174
+ help: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
5175
+ },
5176
+ must_change_password: {
5177
+ label: "Must Change Password",
5178
+ help: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
5179
+ },
5180
+ mfa_required_at: {
5181
+ label: "MFA Required At",
5182
+ help: "When enforced MFA first applied to this user (grace-period clock). Backs mfa_required; system-managed."
5183
+ },
5184
+ last_login_at: {
5185
+ label: "Last Login At",
5186
+ help: "Timestamp of the last successful sign-in. Stamped by the auth manager; system-managed."
5187
+ },
5188
+ last_login_ip: {
5189
+ label: "Last Login IP",
5190
+ help: "Client IP of the last successful sign-in (from the trusted proxy forwarded header). System-managed."
5191
+ },
5192
+ ai_access: {
5193
+ label: "AI Access",
5194
+ help: "Whether this user holds an AI seat \u2014 grants access to the in-UI AI agents (build / ask). The framework synthesizes the `ai_seat` capability from this flag (plugin-hono-server resolveCtx). Assignment is capped by the licensed / purchased seat count (enforced by @objectstack/security-enterprise AiSeatPlugin). Owned by objectql (better-auth is oblivious to this column)."
5195
+ },
5494
5196
  image: {
5495
5197
  label: "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u753B\u50CF"
5496
5198
  },
5497
5199
  manager_id: {
5498
- label: "\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC"
5200
+ label: "\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC",
5201
+ help: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
5499
5202
  },
5500
5203
  primary_business_unit_id: {
5501
- label: "\u4E3B\u6240\u5C5E\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8"
5204
+ label: "\u4E3B\u6240\u5C5E\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8",
5205
+ help: "The user's primary business unit \u2014 a denormalised projection of sys_business_unit_member.is_primary, maintained by plugin-sharing (ADR-0057 addendum D12). Lets a user-lookup filter candidates by business unit without traversing the membership junction. Do not edit directly; set it via business-unit membership."
5206
+ },
5207
+ source: {
5208
+ label: "Identity Source",
5209
+ help: "How this identity was created \u2014 idp_provisioned (federated SSO JIT) or env_native (local signup / app end-user). System-managed; do not edit.",
5210
+ options: {
5211
+ idp_provisioned: "IdP-Provisioned",
5212
+ env_native: "Env-Native"
5213
+ }
5502
5214
  },
5503
5215
  id: {
5504
5216
  label: "\u30E6\u30FC\u30B6\u30FC ID"
@@ -5541,6 +5253,14 @@ var jaJPObjects = {
5541
5253
  label: "\u5229\u7528\u505C\u6B62\u3092\u89E3\u9664",
5542
5254
  successMessage: "\u30E6\u30FC\u30B6\u30FC\u306E\u5229\u7528\u505C\u6B62\u3092\u89E3\u9664\u3057\u307E\u3057\u305F"
5543
5255
  },
5256
+ unlock_user: {
5257
+ label: "Unlock Account",
5258
+ successMessage: "Account unlocked"
5259
+ },
5260
+ create_user: {
5261
+ label: "Create User",
5262
+ successMessage: "User created"
5263
+ },
5544
5264
  set_user_password: {
5545
5265
  label: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8A2D\u5B9A",
5546
5266
  successMessage: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u66F4\u65B0\u3057\u307E\u3057\u305F"
@@ -5602,6 +5322,18 @@ var jaJPObjects = {
5602
5322
  expires_at: {
5603
5323
  label: "\u6709\u52B9\u671F\u9650"
5604
5324
  },
5325
+ last_activity_at: {
5326
+ label: "Last Activity At",
5327
+ help: "Timestamp of the last request on this session; drives idle-timeout. System-managed."
5328
+ },
5329
+ revoked_at: {
5330
+ label: "Revoked At",
5331
+ help: "When set, this session was revoked (idle / absolute-max / concurrent-cap / admin). System-managed."
5332
+ },
5333
+ revoke_reason: {
5334
+ label: "Revoke Reason",
5335
+ help: "Why the session was revoked (idle_timeout, absolute_max, concurrent_cap, \u2026)."
5336
+ },
5605
5337
  active_organization_id: {
5606
5338
  label: "\u30A2\u30AF\u30C6\u30A3\u30D6\u7D44\u7E54"
5607
5339
  },
@@ -5700,6 +5432,10 @@ var jaJPObjects = {
5700
5432
  password: {
5701
5433
  label: "\u30D1\u30B9\u30EF\u30FC\u30C9\u30CF\u30C3\u30B7\u30E5",
5702
5434
  help: "\u30E1\u30FC\u30EB/\u30D1\u30B9\u30EF\u30FC\u30C9\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u7528\u306E\u30CF\u30C3\u30B7\u30E5\u5316\u30D1\u30B9\u30EF\u30FC\u30C9"
5435
+ },
5436
+ previous_password_hashes: {
5437
+ label: "Previous Password Hashes",
5438
+ help: "JSON array of prior password hashes (bounded by password_history_count); reuse-prevention only. System-managed."
5703
5439
  }
5704
5440
  },
5705
5441
  _views: {
@@ -5770,6 +5506,10 @@ var jaJPObjects = {
5770
5506
  label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
5771
5507
  help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u7D44\u7E54\u30E1\u30BF\u30C7\u30FC\u30BF"
5772
5508
  },
5509
+ require_mfa: {
5510
+ label: "Require Multi-Factor Auth",
5511
+ help: "When true, every member of this organization must enroll an authenticator app to access data."
5512
+ },
5773
5513
  id: {
5774
5514
  label: "\u7D44\u7E54 ID"
5775
5515
  },
@@ -6094,6 +5834,9 @@ var jaJPObjects = {
6094
5834
  }
6095
5835
  },
6096
5836
  _views: {
5837
+ org_chart: {
5838
+ label: "Org Chart"
5839
+ },
6097
5840
  active: {
6098
5841
  label: "\u6709\u52B9"
6099
5842
  },
@@ -6675,263 +6418,57 @@ var jaJPObjects = {
6675
6418
  }
6676
6419
  }
6677
6420
  },
6678
- sys_audit_log: {
6679
- label: "\u76E3\u67FB\u30ED\u30B0",
6680
- pluralLabel: "\u76E3\u67FB\u30ED\u30B0",
6681
- description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30A4\u30D9\u30F3\u30C8\u306E\u4E0D\u5909\u306E\u76E3\u67FB\u8A3C\u8DE1",
6421
+ sys_notification: {
6422
+ label: "\u901A\u77E5",
6423
+ pluralLabel: "\u901A\u77E5",
6424
+ description: "\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u901A\u77E5\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u30A8\u30F3\u30C8\u30EA",
6682
6425
  fields: {
6683
- created_at: {
6684
- label: "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7"
6426
+ id: {
6427
+ label: "\u901A\u77E5 ID"
6685
6428
  },
6686
- action: {
6687
- label: "\u30A2\u30AF\u30B7\u30E7\u30F3",
6688
- help: "\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\uFF08snake_case\uFF09",
6689
- options: {
6690
- create: "\u4F5C\u6210",
6691
- update: "\u66F4\u65B0",
6692
- delete: "\u524A\u9664",
6693
- restore: "\u5FA9\u5143",
6694
- login: "\u30ED\u30B0\u30A4\u30F3",
6695
- logout: "\u30ED\u30B0\u30A2\u30A6\u30C8",
6696
- permission_change: "\u6A29\u9650\u5909\u66F4",
6697
- config_change: "\u69CB\u6210\u5909\u66F4",
6698
- export: "\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",
6699
- import: "\u30A4\u30F3\u30DD\u30FC\u30C8"
6700
- }
6701
- },
6702
- user_id: {
6703
- label: "\u64CD\u4F5C\u8005",
6704
- help: "\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u5B9F\u884C\u3057\u305F\u30E6\u30FC\u30B6\u30FC\uFF08\u30B7\u30B9\u30C6\u30E0\u64CD\u4F5C\u306E\u5834\u5408\u306F null\uFF09"
6705
- },
6706
- object_name: {
6707
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6708
- help: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08\u4F8B: sys_user\u3001project_task\uFF09"
6709
- },
6710
- record_id: {
6711
- label: "\u30EC\u30B3\u30FC\u30C9 ID",
6712
- help: "\u5F71\u97FF\u3092\u53D7\u3051\u305F\u30EC\u30B3\u30FC\u30C9\u306E ID"
6713
- },
6714
- old_value: {
6715
- label: "\u5909\u66F4\u524D\u306E\u5024",
6716
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u4EE5\u524D\u306E\u72B6\u614B"
6717
- },
6718
- new_value: {
6719
- label: "\u5909\u66F4\u5F8C\u306E\u5024",
6720
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u65B0\u3057\u3044\u72B6\u614B"
6721
- },
6722
- ip_address: {
6723
- label: "IP \u30A2\u30C9\u30EC\u30B9"
6724
- },
6725
- user_agent: {
6726
- label: "\u30E6\u30FC\u30B6\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8"
6727
- },
6728
- tenant_id: {
6729
- label: "\u30C6\u30CA\u30F3\u30C8",
6730
- help: "\u30DE\u30EB\u30C1\u30C6\u30CA\u30F3\u30C8\u5206\u96E2\u306E\u305F\u3081\u306E\u30C6\u30CA\u30F3\u30C8\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6731
- },
6732
- metadata: {
6733
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6734
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u8FFD\u52A0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6735
- },
6736
- id: {
6737
- label: "\u76E3\u67FB\u30ED\u30B0 ID"
6738
- }
6739
- },
6740
- _views: {
6741
- recent: {
6742
- label: "\u6700\u8FD1"
6743
- },
6744
- writes_only: {
6745
- label: "\u66F8\u304D\u8FBC\u307F"
6746
- },
6747
- auth_events: {
6748
- label: "\u8A8D\u8A3C"
6749
- },
6750
- config_changes: {
6751
- label: "\u69CB\u6210\u5909\u66F4"
6752
- },
6753
- all_events: {
6754
- label: "\u3059\u3079\u3066"
6755
- }
6756
- }
6757
- },
6758
- sys_presence: {
6759
- label: "\u5728\u5E2D\u72B6\u6CC1",
6760
- pluralLabel: "\u5728\u5E2D\u72B6\u6CC1",
6761
- description: "\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u306E\u30E6\u30FC\u30B6\u30FC\u5728\u5E2D\u72B6\u6CC1\u3068\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u8FFD\u8DE1",
6762
- fields: {
6763
- id: {
6764
- label: "\u5728\u5E2D ID"
6765
- },
6766
- created_at: {
6767
- label: "\u4F5C\u6210\u65E5\u6642"
6768
- },
6769
- updated_at: {
6770
- label: "\u66F4\u65B0\u65E5\u6642"
6771
- },
6772
- user_id: {
6773
- label: "\u30E6\u30FC\u30B6\u30FC"
6774
- },
6775
- session_id: {
6776
- label: "\u30BB\u30C3\u30B7\u30E7\u30F3"
6777
- },
6778
- status: {
6779
- label: "\u30B9\u30C6\u30FC\u30BF\u30B9",
6780
- options: {
6781
- online: "\u30AA\u30F3\u30E9\u30A4\u30F3",
6782
- away: "\u96E2\u5E2D\u4E2D",
6783
- busy: "\u53D6\u308A\u8FBC\u307F\u4E2D",
6784
- offline: "\u30AA\u30D5\u30E9\u30A4\u30F3"
6785
- }
6786
- },
6787
- last_seen: {
6788
- label: "\u6700\u7D42\u78BA\u8A8D\u65E5\u6642"
6429
+ topic: {
6430
+ label: "Topic",
6431
+ help: "Notification topic, e.g. task.assigned, collab.mention"
6789
6432
  },
6790
- current_location: {
6791
- label: "\u73FE\u5728\u5730"
6433
+ payload: {
6434
+ label: "Payload",
6435
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
6792
6436
  },
6793
- device: {
6794
- label: "\u30C7\u30D0\u30A4\u30B9",
6437
+ severity: {
6438
+ label: "Severity",
6439
+ help: "Severity hint for rendering / filtering",
6795
6440
  options: {
6796
- desktop: "\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7",
6797
- mobile: "\u30E2\u30D0\u30A4\u30EB",
6798
- tablet: "\u30BF\u30D6\u30EC\u30C3\u30C8",
6799
- other: "\u305D\u306E\u4ED6"
6441
+ info: "info",
6442
+ warning: "warning",
6443
+ critical: "critical"
6800
6444
  }
6801
6445
  },
6802
- custom_status: {
6803
- label: "\u30AB\u30B9\u30BF\u30E0\u30B9\u30C6\u30FC\u30BF\u30B9"
6804
- },
6805
- metadata: {
6806
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6807
- help: "\u5728\u5E2D\u72B6\u614B\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u4EFB\u610F\u306E JSON \u30E1\u30BF\u30C7\u30FC\u30BF\uFF08PresenceStateSchema.metadata \u306B\u5BFE\u5FDC\uFF09\u3002"
6808
- }
6809
- }
6810
- },
6811
- sys_activity: {
6812
- label: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
6813
- pluralLabel: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
6814
- description: "\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30B9\u30C8\u30EA\u30FC\u30E0\u30A8\u30F3\u30C8\u30EA\uFF08\u8EFD\u91CF\u3001\u975E\u6B63\u898F\u5316\uFF09",
6815
- fields: {
6816
- id: {
6817
- label: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 ID"
6818
- },
6819
- timestamp: {
6820
- label: "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7"
6446
+ dedup_key: {
6447
+ label: "Dedup Key",
6448
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
6821
6449
  },
6822
- type: {
6823
- label: "\u30BF\u30A4\u30D7",
6824
- options: {
6825
- created: "\u4F5C\u6210",
6826
- updated: "\u66F4\u65B0",
6827
- deleted: "\u524A\u9664",
6828
- commented: "\u30B3\u30E1\u30F3\u30C8",
6829
- mentioned: "\u30E1\u30F3\u30B7\u30E7\u30F3",
6830
- shared: "\u5171\u6709",
6831
- assigned: "\u5272\u308A\u5F53\u3066",
6832
- completed: "\u5B8C\u4E86",
6833
- login: "\u30ED\u30B0\u30A4\u30F3",
6834
- logout: "\u30ED\u30B0\u30A2\u30A6\u30C8",
6835
- system: "\u30B7\u30B9\u30C6\u30E0"
6836
- }
6450
+ source_object: {
6451
+ label: "\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6452
+ help: "\u95A2\u9023\u30EC\u30B3\u30FC\u30C9\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\uFF08\u4F8B: lead\u3001opportunity\uFF09"
6837
6453
  },
6838
- summary: {
6839
- label: "\u30B5\u30DE\u30EA\u30FC",
6840
- help: "\u5224\u5225\u3057\u3084\u3059\u3044 1 \u884C\u30B5\u30DE\u30EA\u30FC"
6454
+ source_id: {
6455
+ label: "\u30BD\u30FC\u30B9\u30EC\u30B3\u30FC\u30C9",
6456
+ help: "source_object \u5185\u306E\u30EC\u30B3\u30FC\u30C9 ID"
6841
6457
  },
6842
6458
  actor_id: {
6843
- label: "\u64CD\u4F5C\u8005"
6844
- },
6845
- actor_name: {
6846
- label: "\u64CD\u4F5C\u8005\u540D"
6847
- },
6848
- actor_avatar_url: {
6849
- label: "\u64CD\u4F5C\u8005\u30A2\u30D0\u30BF\u30FC"
6850
- },
6851
- object_name: {
6852
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6853
- help: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u77ED\u3044\u540D\u524D\uFF08\u4F8B: account\u3001sys_user\uFF09"
6854
- },
6855
- record_id: {
6856
- label: "\u30EC\u30B3\u30FC\u30C9 ID"
6857
- },
6858
- record_label: {
6859
- label: "\u30EC\u30B3\u30FC\u30C9\u8868\u793A\u540D",
6860
- help: "\u66F8\u304D\u8FBC\u307F\u6642\u70B9\u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u8868\u793A\u540D"
6861
- },
6862
- url: {
6863
- label: "URL",
6864
- help: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30BF\u30FC\u30B2\u30C3\u30C8\u3078\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30FC\u30D7\u30EA\u30F3\u30AF"
6865
- },
6866
- environment_id: {
6867
- label: "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",
6868
- help: "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\uFF08\u30DE\u30EB\u30C1\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30C7\u30D7\u30ED\u30A4\u30E1\u30F3\u30C8\uFF09"
6869
- },
6870
- metadata: {
6871
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6872
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u8FFD\u52A0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6873
- }
6874
- }
6875
- },
6876
- sys_comment: {
6877
- label: "\u30B3\u30E1\u30F3\u30C8",
6878
- pluralLabel: "\u30B3\u30E1\u30F3\u30C8",
6879
- description: "thread_id \u3092\u4ECB\u3057\u3066\u30EC\u30B3\u30FC\u30C9\u306B\u6DFB\u4ED8\u3055\u308C\u305F\u30B9\u30EC\u30C3\u30C9\u30B3\u30E1\u30F3\u30C8",
6880
- fields: {
6881
- id: {
6882
- label: "\u30B3\u30E1\u30F3\u30C8 ID"
6883
- },
6884
- thread_id: {
6885
- label: "\u30B9\u30EC\u30C3\u30C9",
6886
- help: "\u30B9\u30EC\u30C3\u30C9\u8B58\u5225\u5B50 \u2014 \u901A\u5E38\u306F `{object}:{record_id}`\uFF08\u4F8B: `sys_user:abc123`\uFF09"
6887
- },
6888
- parent_id: {
6889
- label: "\u89AA\u30B3\u30E1\u30F3\u30C8",
6890
- help: "\u30CD\u30B9\u30C8\u3057\u305F\u8FD4\u4FE1\u7528\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u89AA\u30B3\u30E1\u30F3\u30C8"
6891
- },
6892
- reply_count: {
6893
- label: "\u8FD4\u4FE1\u6570"
6894
- },
6895
- author_id: {
6896
- label: "\u6295\u7A3F\u8005"
6897
- },
6898
- author_name: {
6899
- label: "\u6295\u7A3F\u8005\u540D"
6900
- },
6901
- author_avatar_url: {
6902
- label: "\u6295\u7A3F\u8005\u30A2\u30D0\u30BF\u30FC"
6903
- },
6904
- body: {
6905
- label: "\u672C\u6587",
6906
- help: "\u30B3\u30E1\u30F3\u30C8\u30C6\u30AD\u30B9\u30C8\uFF08Markdown \u5BFE\u5FDC\uFF09"
6907
- },
6908
- mentions: {
6909
- label: "\u30E1\u30F3\u30B7\u30E7\u30F3",
6910
- help: "@\u30E1\u30F3\u30B7\u30E7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E JSON \u914D\u5217"
6911
- },
6912
- reactions: {
6913
- label: "\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3",
6914
- help: "\u7D75\u6587\u5B57\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E JSON \u914D\u5217"
6915
- },
6916
- is_edited: {
6917
- label: "\u7DE8\u96C6\u6E08\u307F"
6918
- },
6919
- edited_at: {
6920
- label: "\u7DE8\u96C6\u65E5\u6642"
6921
- },
6922
- visibility: {
6923
- label: "\u516C\u958B\u7BC4\u56F2",
6924
- options: {
6925
- public: "\u516C\u958B",
6926
- internal: "\u5185\u90E8",
6927
- private: "\u975E\u516C\u958B"
6928
- }
6459
+ label: "\u64CD\u4F5C\u8005",
6460
+ help: "\u901A\u77E5\u3092\u5F15\u304D\u8D77\u3053\u3057\u305F\u30E6\u30FC\u30B6\u30FC\uFF08\u30E1\u30F3\u30B7\u30E7\u30F3\u8005\u3001\u62C5\u5F53\u8005\uFF09"
6929
6461
  },
6930
6462
  created_at: {
6931
6463
  label: "\u4F5C\u6210\u65E5\u6642"
6464
+ }
6465
+ },
6466
+ _views: {
6467
+ recent: {
6468
+ label: "Recent"
6932
6469
  },
6933
- updated_at: {
6934
- label: "\u66F4\u65B0\u65E5\u6642"
6470
+ by_topic: {
6471
+ label: "By Topic"
6935
6472
  }
6936
6473
  }
6937
6474
  },
@@ -6996,60 +6533,6 @@ var jaJPObjects = {
6996
6533
  }
6997
6534
  }
6998
6535
  },
6999
- sys_notification: {
7000
- label: "\u901A\u77E5",
7001
- pluralLabel: "\u901A\u77E5",
7002
- description: "\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u901A\u77E5\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u30A8\u30F3\u30C8\u30EA",
7003
- fields: {
7004
- id: {
7005
- label: "\u901A\u77E5 ID"
7006
- },
7007
- topic: {
7008
- label: "Topic",
7009
- help: "Notification topic, e.g. task.assigned, collab.mention"
7010
- },
7011
- payload: {
7012
- label: "Payload",
7013
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
7014
- },
7015
- severity: {
7016
- label: "Severity",
7017
- help: "Severity hint for rendering / filtering",
7018
- options: {
7019
- info: "info",
7020
- warning: "warning",
7021
- critical: "critical"
7022
- }
7023
- },
7024
- dedup_key: {
7025
- label: "Dedup Key",
7026
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
7027
- },
7028
- source_object: {
7029
- label: "\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
7030
- help: "\u95A2\u9023\u30EC\u30B3\u30FC\u30C9\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\uFF08\u4F8B: lead\u3001opportunity\uFF09"
7031
- },
7032
- source_id: {
7033
- label: "\u30BD\u30FC\u30B9\u30EC\u30B3\u30FC\u30C9",
7034
- help: "source_object \u5185\u306E\u30EC\u30B3\u30FC\u30C9 ID"
7035
- },
7036
- actor_id: {
7037
- label: "\u64CD\u4F5C\u8005",
7038
- help: "\u901A\u77E5\u3092\u5F15\u304D\u8D77\u3053\u3057\u305F\u30E6\u30FC\u30B6\u30FC\uFF08\u30E1\u30F3\u30B7\u30E7\u30F3\u8005\u3001\u62C5\u5F53\u8005\uFF09"
7039
- },
7040
- created_at: {
7041
- label: "\u4F5C\u6210\u65E5\u6642"
7042
- }
7043
- },
7044
- _views: {
7045
- recent: {
7046
- label: "Recent"
7047
- },
7048
- by_topic: {
7049
- label: "By Topic"
7050
- }
7051
- }
7052
- },
7053
6536
  sys_email: {
7054
6537
  label: "\u30E1\u30FC\u30EB",
7055
6538
  pluralLabel: "\u30E1\u30FC\u30EB",
@@ -7954,6 +7437,11 @@ var jaJPObjects = {
7954
7437
  label: "\u6697\u53F7\u6587",
7955
7438
  help: "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u30A8\u30F3\u30B3\u30FC\u30C9\u3055\u308C\u305F\u6697\u53F7\u6587 blob\uFF08base64 / JSON\uFF09\u3002\u5B9F\u88C5\u5B9A\u7FA9\u306E\u305F\u3081\u3001\u5BFE\u5FDC\u3059\u308B ICryptoProvider \u306E\u307F\u304C\u8AAD\u307F\u53D6\u308A\u53EF\u80FD\u3002"
7956
7439
  }
7440
+ },
7441
+ _views: {
7442
+ all: {
7443
+ label: "All Secrets"
7444
+ }
7957
7445
  }
7958
7446
  },
7959
7447
  sys_setting_audit: {
@@ -8029,6 +7517,11 @@ var jaJPObjects = {
8029
7517
  label: "\u30EA\u30AF\u30A8\u30B9\u30C8 ID",
8030
7518
  help: "sys_audit_log / \u30C8\u30EC\u30FC\u30B7\u30F3\u30B0\u3068\u306E\u76F8\u95A2\u7528\u3002"
8031
7519
  }
7520
+ },
7521
+ _views: {
7522
+ recent: {
7523
+ label: "Recent"
7524
+ }
8032
7525
  }
8033
7526
  }
8034
7527
  };
@@ -8198,14 +7691,64 @@ var esESObjects = {
8198
7691
  label: "El bloqueo caduca el",
8199
7692
  help: "Si se establece, el bloqueo se elimina autom\xE1ticamente en ese momento."
8200
7693
  },
7694
+ failed_login_count: {
7695
+ label: "Failed Login Count",
7696
+ help: "Consecutive failed sign-in attempts; reset to 0 on success. Maintained by the auth manager."
7697
+ },
7698
+ locked_until: {
7699
+ label: "Locked Until",
7700
+ help: "When set and in the future, sign-in is rejected (brute-force lockout). Auto-clears past this time; an admin can clear it early via Unlock."
7701
+ },
7702
+ password_changed_at: {
7703
+ label: "Password Changed At",
7704
+ help: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
7705
+ },
7706
+ phone_number: {
7707
+ label: "Phone Number",
7708
+ help: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
7709
+ },
7710
+ phone_number_verified: {
7711
+ label: "Phone Verified",
7712
+ help: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
7713
+ },
7714
+ must_change_password: {
7715
+ label: "Must Change Password",
7716
+ help: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
7717
+ },
7718
+ mfa_required_at: {
7719
+ label: "MFA Required At",
7720
+ help: "When enforced MFA first applied to this user (grace-period clock). Backs mfa_required; system-managed."
7721
+ },
7722
+ last_login_at: {
7723
+ label: "Last Login At",
7724
+ help: "Timestamp of the last successful sign-in. Stamped by the auth manager; system-managed."
7725
+ },
7726
+ last_login_ip: {
7727
+ label: "Last Login IP",
7728
+ help: "Client IP of the last successful sign-in (from the trusted proxy forwarded header). System-managed."
7729
+ },
7730
+ ai_access: {
7731
+ label: "AI Access",
7732
+ help: "Whether this user holds an AI seat \u2014 grants access to the in-UI AI agents (build / ask). The framework synthesizes the `ai_seat` capability from this flag (plugin-hono-server resolveCtx). Assignment is capped by the licensed / purchased seat count (enforced by @objectstack/security-enterprise AiSeatPlugin). Owned by objectql (better-auth is oblivious to this column)."
7733
+ },
8201
7734
  image: {
8202
7735
  label: "Imagen de perfil"
8203
7736
  },
8204
7737
  manager_id: {
8205
- label: "Gerente"
7738
+ label: "Gerente",
7739
+ help: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
8206
7740
  },
8207
7741
  primary_business_unit_id: {
8208
- label: "Unidad de negocio principal"
7742
+ label: "Unidad de negocio principal",
7743
+ help: "The user's primary business unit \u2014 a denormalised projection of sys_business_unit_member.is_primary, maintained by plugin-sharing (ADR-0057 addendum D12). Lets a user-lookup filter candidates by business unit without traversing the membership junction. Do not edit directly; set it via business-unit membership."
7744
+ },
7745
+ source: {
7746
+ label: "Identity Source",
7747
+ help: "How this identity was created \u2014 idp_provisioned (federated SSO JIT) or env_native (local signup / app end-user). System-managed; do not edit.",
7748
+ options: {
7749
+ idp_provisioned: "IdP-Provisioned",
7750
+ env_native: "Env-Native"
7751
+ }
8209
7752
  },
8210
7753
  id: {
8211
7754
  label: "ID de usuario"
@@ -8248,6 +7791,14 @@ var esESObjects = {
8248
7791
  label: "Desbloquear usuario",
8249
7792
  successMessage: "Usuario desbloqueado"
8250
7793
  },
7794
+ unlock_user: {
7795
+ label: "Unlock Account",
7796
+ successMessage: "Account unlocked"
7797
+ },
7798
+ create_user: {
7799
+ label: "Create User",
7800
+ successMessage: "User created"
7801
+ },
8251
7802
  set_user_password: {
8252
7803
  label: "Establecer contrase\xF1a",
8253
7804
  successMessage: "Contrase\xF1a actualizada"
@@ -8309,6 +7860,18 @@ var esESObjects = {
8309
7860
  expires_at: {
8310
7861
  label: "Caduca el"
8311
7862
  },
7863
+ last_activity_at: {
7864
+ label: "Last Activity At",
7865
+ help: "Timestamp of the last request on this session; drives idle-timeout. System-managed."
7866
+ },
7867
+ revoked_at: {
7868
+ label: "Revoked At",
7869
+ help: "When set, this session was revoked (idle / absolute-max / concurrent-cap / admin). System-managed."
7870
+ },
7871
+ revoke_reason: {
7872
+ label: "Revoke Reason",
7873
+ help: "Why the session was revoked (idle_timeout, absolute_max, concurrent_cap, \u2026)."
7874
+ },
8312
7875
  active_organization_id: {
8313
7876
  label: "Organizaci\xF3n activa"
8314
7877
  },
@@ -8407,6 +7970,10 @@ var esESObjects = {
8407
7970
  password: {
8408
7971
  label: "Hash de la contrase\xF1a",
8409
7972
  help: "Hash de la contrase\xF1a para el proveedor de correo electr\xF3nico/contrase\xF1a."
7973
+ },
7974
+ previous_password_hashes: {
7975
+ label: "Previous Password Hashes",
7976
+ help: "JSON array of prior password hashes (bounded by password_history_count); reuse-prevention only. System-managed."
8410
7977
  }
8411
7978
  },
8412
7979
  _views: {
@@ -8477,6 +8044,10 @@ var esESObjects = {
8477
8044
  label: "Metadatos",
8478
8045
  help: "Metadatos de la organizaci\xF3n serializados en JSON."
8479
8046
  },
8047
+ require_mfa: {
8048
+ label: "Require Multi-Factor Auth",
8049
+ help: "When true, every member of this organization must enroll an authenticator app to access data."
8050
+ },
8480
8051
  id: {
8481
8052
  label: "ID de organizaci\xF3n"
8482
8053
  },
@@ -8801,6 +8372,9 @@ var esESObjects = {
8801
8372
  }
8802
8373
  },
8803
8374
  _views: {
8375
+ org_chart: {
8376
+ label: "Org Chart"
8377
+ },
8804
8378
  active: {
8805
8379
  label: "Activo"
8806
8380
  },
@@ -9382,263 +8956,57 @@ var esESObjects = {
9382
8956
  }
9383
8957
  }
9384
8958
  },
9385
- sys_audit_log: {
9386
- label: "Registro de auditor\xEDa",
9387
- pluralLabel: "Registros de auditor\xEDa",
9388
- description: "Registro de auditor\xEDa inmutable para eventos de la plataforma",
9389
- fields: {
9390
- created_at: {
9391
- label: "Marca temporal"
9392
- },
9393
- action: {
9394
- label: "Acci\xF3n",
9395
- help: "Tipo de acci\xF3n (snake_case).",
9396
- options: {
9397
- create: "Crear",
9398
- update: "Actualizar",
9399
- delete: "Eliminar",
9400
- restore: "Restaurar",
9401
- login: "Inicio de sesi\xF3n",
9402
- logout: "Cierre de sesi\xF3n",
9403
- permission_change: "Cambio de permisos",
9404
- config_change: "Cambio de configuraci\xF3n",
9405
- export: "Exportar",
9406
- import: "Importar"
9407
- }
9408
- },
9409
- user_id: {
9410
- label: "Actor",
9411
- help: "Usuario que realiz\xF3 la acci\xF3n (null para acciones del sistema)."
9412
- },
9413
- object_name: {
9414
- label: "Objeto",
9415
- help: "Objeto de destino (p. ej. sys_user, project_task)."
9416
- },
9417
- record_id: {
9418
- label: "ID de registro",
9419
- help: "ID del registro afectado."
9420
- },
9421
- old_value: {
9422
- label: "Valor anterior",
9423
- help: "Estado anterior serializado en JSON."
9424
- },
9425
- new_value: {
9426
- label: "Valor nuevo",
9427
- help: "Estado nuevo serializado en JSON."
9428
- },
9429
- ip_address: {
9430
- label: "Direcci\xF3n IP"
9431
- },
9432
- user_agent: {
9433
- label: "Agente de usuario"
9434
- },
9435
- tenant_id: {
9436
- label: "Inquilino",
9437
- help: "Contexto del tenant para el aislamiento multi-tenant."
9438
- },
9439
- metadata: {
9440
- label: "Metadatos",
9441
- help: "Contexto adicional serializado en JSON."
9442
- },
9443
- id: {
9444
- label: "ID de registro de auditor\xEDa"
9445
- }
9446
- },
9447
- _views: {
9448
- recent: {
9449
- label: "Recientes"
9450
- },
9451
- writes_only: {
9452
- label: "Escrituras"
9453
- },
9454
- auth_events: {
9455
- label: "Autenticaci\xF3n"
9456
- },
9457
- config_changes: {
9458
- label: "Configuraci\xF3n"
9459
- },
9460
- all_events: {
9461
- label: "Todos"
9462
- }
9463
- }
9464
- },
9465
- sys_presence: {
9466
- label: "Presencia",
9467
- pluralLabel: "Presencias",
9468
- description: "Seguimiento en tiempo real de presencia y actividad de usuarios",
8959
+ sys_notification: {
8960
+ label: "Notificaci\xF3n",
8961
+ pluralLabel: "Notificaciones",
8962
+ description: "Entradas del buz\xF3n de notificaciones por usuario",
9469
8963
  fields: {
9470
8964
  id: {
9471
- label: "ID de presencia"
9472
- },
9473
- created_at: {
9474
- label: "Creado el"
9475
- },
9476
- updated_at: {
9477
- label: "Actualizado el"
9478
- },
9479
- user_id: {
9480
- label: "Usuario"
9481
- },
9482
- session_id: {
9483
- label: "Sesi\xF3n"
9484
- },
9485
- status: {
9486
- label: "Estado",
9487
- options: {
9488
- online: "En l\xEDnea",
9489
- away: "Ausente",
9490
- busy: "Ocupado",
9491
- offline: "Desconectado"
9492
- }
8965
+ label: "ID de notificaci\xF3n"
9493
8966
  },
9494
- last_seen: {
9495
- label: "Visto por \xFAltima vez"
8967
+ topic: {
8968
+ label: "Topic",
8969
+ help: "Notification topic, e.g. task.assigned, collab.mention"
9496
8970
  },
9497
- current_location: {
9498
- label: "Ubicaci\xF3n actual"
8971
+ payload: {
8972
+ label: "Payload",
8973
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
9499
8974
  },
9500
- device: {
9501
- label: "Dispositivo",
8975
+ severity: {
8976
+ label: "Severity",
8977
+ help: "Severity hint for rendering / filtering",
9502
8978
  options: {
9503
- desktop: "Escritorio",
9504
- mobile: "M\xF3vil",
9505
- tablet: "Tableta",
9506
- other: "Otro"
8979
+ info: "info",
8980
+ warning: "warning",
8981
+ critical: "critical"
9507
8982
  }
9508
8983
  },
9509
- custom_status: {
9510
- label: "Estado personalizado"
9511
- },
9512
- metadata: {
9513
- label: "Metadatos",
9514
- help: "Metadatos JSON arbitrarios asociados al estado de presencia (coincide con PresenceStateSchema.metadata)."
9515
- }
9516
- }
9517
- },
9518
- sys_activity: {
9519
- label: "Actividad",
9520
- pluralLabel: "Actividades",
9521
- description: "Entradas recientes del flujo de actividad (ligeras y desnormalizadas).",
9522
- fields: {
9523
- id: {
9524
- label: "ID de actividad"
9525
- },
9526
- timestamp: {
9527
- label: "Marca temporal"
8984
+ dedup_key: {
8985
+ label: "Dedup Key",
8986
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
9528
8987
  },
9529
- type: {
9530
- label: "Tipo",
9531
- options: {
9532
- created: "Creado",
9533
- updated: "Actualizado",
9534
- deleted: "Eliminado",
9535
- commented: "Comentado",
9536
- mentioned: "Mencionado",
9537
- shared: "Compartido",
9538
- assigned: "Asignado",
9539
- completed: "Completado",
9540
- login: "Inicio de sesi\xF3n",
9541
- logout: "Cierre de sesi\xF3n",
9542
- system: "Sistema"
9543
- }
8988
+ source_object: {
8989
+ label: "Objeto de origen",
8990
+ help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
9544
8991
  },
9545
- summary: {
9546
- label: "Resumen",
9547
- help: "Resumen legible de una l\xEDnea."
8992
+ source_id: {
8993
+ label: "Registro de origen",
8994
+ help: "ID del registro dentro de source_object."
9548
8995
  },
9549
8996
  actor_id: {
9550
- label: "Actor"
9551
- },
9552
- actor_name: {
9553
- label: "Nombre del actor"
9554
- },
9555
- actor_avatar_url: {
9556
- label: "Avatar del actor"
9557
- },
9558
- object_name: {
9559
- label: "Objeto",
9560
- help: "Nombre corto del objeto de destino (p. ej. account, sys_user)."
9561
- },
9562
- record_id: {
9563
- label: "ID de registro"
9564
- },
9565
- record_label: {
9566
- label: "Nombre visible del registro",
9567
- help: "Nombre visible del registro de destino en el momento de escritura."
9568
- },
9569
- url: {
9570
- label: "URL",
9571
- help: "Enlace profundo opcional al destino de la actividad."
9572
- },
9573
- environment_id: {
9574
- label: "Proyecto",
9575
- help: "Contexto del proyecto (implementaciones multiproyecto)."
9576
- },
9577
- metadata: {
9578
- label: "Metadatos",
9579
- help: "Contexto adicional serializado en JSON."
9580
- }
9581
- }
9582
- },
9583
- sys_comment: {
9584
- label: "Comentario",
9585
- pluralLabel: "Comentarios",
9586
- description: "Comentarios en hilo adjuntos a registros mediante thread_id.",
9587
- fields: {
9588
- id: {
9589
- label: "ID de comentario"
9590
- },
9591
- thread_id: {
9592
- label: "Hilo",
9593
- help: "Identificador del hilo; por convenci\xF3n `{object}:{record_id}` (p. ej. `sys_user:abc123`)."
9594
- },
9595
- parent_id: {
9596
- label: "Comentario principal",
9597
- help: "Comentario principal opcional para respuestas anidadas."
9598
- },
9599
- reply_count: {
9600
- label: "N\xFAmero de respuestas"
9601
- },
9602
- author_id: {
9603
- label: "Autor"
9604
- },
9605
- author_name: {
9606
- label: "Nombre del autor"
9607
- },
9608
- author_avatar_url: {
9609
- label: "Avatar del autor"
9610
- },
9611
- body: {
9612
- label: "Contenido",
9613
- help: "Texto del comentario (compatible con Markdown)."
9614
- },
9615
- mentions: {
9616
- label: "Menciones",
9617
- help: "Matriz JSON de objetos @mention."
9618
- },
9619
- reactions: {
9620
- label: "Reacciones",
9621
- help: "Matriz JSON de objetos de reacci\xF3n emoji."
9622
- },
9623
- is_edited: {
9624
- label: "Editado"
9625
- },
9626
- edited_at: {
9627
- label: "Editado el"
9628
- },
9629
- visibility: {
9630
- label: "Visibilidad",
9631
- options: {
9632
- public: "P\xFAblico",
9633
- internal: "Interno",
9634
- private: "Privado"
9635
- }
8997
+ label: "Actor",
8998
+ help: "Usuario que provoc\xF3 la notificaci\xF3n (quien menciona, quien asigna)."
9636
8999
  },
9637
9000
  created_at: {
9638
9001
  label: "Creado el"
9002
+ }
9003
+ },
9004
+ _views: {
9005
+ recent: {
9006
+ label: "Recent"
9639
9007
  },
9640
- updated_at: {
9641
- label: "Actualizado el"
9008
+ by_topic: {
9009
+ label: "By Topic"
9642
9010
  }
9643
9011
  }
9644
9012
  },
@@ -9689,71 +9057,17 @@ var esESObjects = {
9689
9057
  shared_users: "Usuarios compartidos"
9690
9058
  }
9691
9059
  },
9692
- uploaded_by: {
9693
- label: "Subido por"
9694
- },
9695
- description: {
9696
- label: "Descripci\xF3n"
9697
- },
9698
- created_at: {
9699
- label: "Creado el"
9700
- },
9701
- updated_at: {
9702
- label: "Actualizado el"
9703
- }
9704
- }
9705
- },
9706
- sys_notification: {
9707
- label: "Notificaci\xF3n",
9708
- pluralLabel: "Notificaciones",
9709
- description: "Entradas del buz\xF3n de notificaciones por usuario",
9710
- fields: {
9711
- id: {
9712
- label: "ID de notificaci\xF3n"
9713
- },
9714
- topic: {
9715
- label: "Topic",
9716
- help: "Notification topic, e.g. task.assigned, collab.mention"
9717
- },
9718
- payload: {
9719
- label: "Payload",
9720
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
9721
- },
9722
- severity: {
9723
- label: "Severity",
9724
- help: "Severity hint for rendering / filtering",
9725
- options: {
9726
- info: "info",
9727
- warning: "warning",
9728
- critical: "critical"
9729
- }
9730
- },
9731
- dedup_key: {
9732
- label: "Dedup Key",
9733
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
9734
- },
9735
- source_object: {
9736
- label: "Objeto de origen",
9737
- help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
9738
- },
9739
- source_id: {
9740
- label: "Registro de origen",
9741
- help: "ID del registro dentro de source_object."
9060
+ uploaded_by: {
9061
+ label: "Subido por"
9742
9062
  },
9743
- actor_id: {
9744
- label: "Actor",
9745
- help: "Usuario que provoc\xF3 la notificaci\xF3n (quien menciona, quien asigna)."
9063
+ description: {
9064
+ label: "Descripci\xF3n"
9746
9065
  },
9747
9066
  created_at: {
9748
9067
  label: "Creado el"
9749
- }
9750
- },
9751
- _views: {
9752
- recent: {
9753
- label: "Recent"
9754
9068
  },
9755
- by_topic: {
9756
- label: "By Topic"
9069
+ updated_at: {
9070
+ label: "Actualizado el"
9757
9071
  }
9758
9072
  }
9759
9073
  },
@@ -10661,6 +9975,11 @@ var esESObjects = {
10661
9975
  label: "Texto cifrado",
10662
9976
  help: "Blob de texto cifrado codificado por el proveedor (base64 / JSON). La implementaci\xF3n lo define; solo el ICryptoProvider correspondiente puede leerlo."
10663
9977
  }
9978
+ },
9979
+ _views: {
9980
+ all: {
9981
+ label: "All Secrets"
9982
+ }
10664
9983
  }
10665
9984
  },
10666
9985
  sys_setting_audit: {
@@ -10736,6 +10055,11 @@ var esESObjects = {
10736
10055
  label: "ID de solicitud",
10737
10056
  help: "Se correlaciona con sys_audit_log / tracing."
10738
10057
  }
10058
+ },
10059
+ _views: {
10060
+ recent: {
10061
+ label: "Recent"
10062
+ }
10739
10063
  }
10740
10064
  }
10741
10065
  };
@@ -11143,6 +10467,70 @@ var enMetadataForms = {
11143
10467
  datasource: {
11144
10468
  label: "Datasource",
11145
10469
  helpText: 'Target datasource ID (default: "default")'
10470
+ },
10471
+ lifecycle: {
10472
+ label: "Lifecycle",
10473
+ helpText: "Data lifecycle contract (ADR-0057): how long rows live and how space is reclaimed. Leave empty for permanent record semantics. Non-record classes require at least one bounding policy (retention, TTL, or rotation)."
10474
+ },
10475
+ "lifecycle.class": {
10476
+ label: "Class",
10477
+ helpText: "Persistence contract for the rows of this object"
10478
+ },
10479
+ "lifecycle.retention": {
10480
+ label: "Retention",
10481
+ helpText: "Age-based retention window"
10482
+ },
10483
+ "lifecycle.retention.maxAge": {
10484
+ label: "Max Age",
10485
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
10486
+ },
10487
+ "lifecycle.ttl": {
10488
+ label: "Ttl",
10489
+ helpText: "Per-row TTL expiry"
10490
+ },
10491
+ "lifecycle.ttl.field": {
10492
+ label: "Field",
10493
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
10494
+ },
10495
+ "lifecycle.ttl.expireAfter": {
10496
+ label: "Expire After",
10497
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
10498
+ },
10499
+ "lifecycle.storage": {
10500
+ label: "Storage",
10501
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
10502
+ },
10503
+ "lifecycle.storage.strategy": {
10504
+ label: "Strategy",
10505
+ helpText: "Storage strategy"
10506
+ },
10507
+ "lifecycle.storage.shards": {
10508
+ label: "Shards",
10509
+ helpText: "Shards retained; total window = shards \xD7 unit"
10510
+ },
10511
+ "lifecycle.storage.unit": {
10512
+ label: "Unit",
10513
+ helpText: "Time width of one shard"
10514
+ },
10515
+ "lifecycle.archive": {
10516
+ label: "Archive",
10517
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
10518
+ },
10519
+ "lifecycle.archive.after": {
10520
+ label: "After",
10521
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
10522
+ },
10523
+ "lifecycle.archive.to": {
10524
+ label: "To",
10525
+ helpText: "Target datasource name for cold storage"
10526
+ },
10527
+ "lifecycle.archive.keep": {
10528
+ label: "Keep",
10529
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
10530
+ },
10531
+ "lifecycle.reclaim": {
10532
+ label: "Reclaim",
10533
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
11146
10534
  }
11147
10535
  }
11148
10536
  },
@@ -11251,10 +10639,6 @@ var enMetadataForms = {
11251
10639
  label: "Summary Operations",
11252
10640
  helpText: "Roll-up summary configuration (for parent-child relationships)"
11253
10641
  },
11254
- cached: {
11255
- label: "Cached",
11256
- helpText: "Caching configuration for computed fields"
11257
- },
11258
10642
  columnName: {
11259
10643
  label: "Column Name",
11260
10644
  helpText: "Physical column name in database (defaults to field name)"
@@ -11282,28 +10666,9 @@ var enMetadataForms = {
11282
10666
  sortable: {
11283
10667
  label: "Sortable",
11284
10668
  helpText: "Allow sorting lists by this field"
11285
- },
11286
- auditTrail: {
11287
- label: "Audit Trail",
11288
- helpText: "Track detailed changes with user and timestamp"
11289
- },
11290
- trackFeedHistory: {
11291
- label: "Track Feed History",
11292
- helpText: "Show changes in activity feed"
11293
- },
11294
- encryptionConfig: {
11295
- label: "Encryption Config",
11296
- helpText: "Field-level encryption (GDPR/HIPAA/PCI-DSS)"
11297
- },
11298
- maskingRule: {
11299
- label: "Masking Rule",
11300
- helpText: "Data masking rules for PII protection"
11301
10669
  }
11302
10670
  }
11303
10671
  },
11304
- trigger: {
11305
- label: "Trigger"
11306
- },
11307
10672
  validation: {
11308
10673
  label: "Validation Rule"
11309
10674
  },
@@ -11380,12 +10745,36 @@ var enMetadataForms = {
11380
10745
  onError: {
11381
10746
  label: "On Error"
11382
10747
  },
10748
+ timeout: {
10749
+ label: "Timeout",
10750
+ helpText: "Abort the hook after N milliseconds"
10751
+ },
11383
10752
  condition: {
11384
10753
  label: "Condition",
11385
10754
  helpText: "Optional formula \u2014 skip the hook when this evaluates to false"
10755
+ },
10756
+ retryPolicy: {
10757
+ label: "Retry Policy",
10758
+ helpText: "Retry on failure \u2014 most useful for async hooks"
10759
+ },
10760
+ "retryPolicy.maxRetries": {
10761
+ label: "Max Retries",
10762
+ helpText: "Maximum retry attempts"
10763
+ },
10764
+ "retryPolicy.backoffMs": {
10765
+ label: "Backoff Ms",
10766
+ helpText: "Delay between retries (ms)"
11386
10767
  }
11387
10768
  }
11388
10769
  },
10770
+ seed: {
10771
+ label: "Seed Data",
10772
+ description: "Fixture / initialization data applied on publish"
10773
+ },
10774
+ mapping: {
10775
+ label: "Import Mapping",
10776
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
10777
+ },
11389
10778
  view: {
11390
10779
  label: "View",
11391
10780
  sections: {
@@ -11557,6 +10946,10 @@ var enMetadataForms = {
11557
10946
  label: "Layout",
11558
10947
  description: "Page regions and components placed within them."
11559
10948
  },
10949
+ interface: {
10950
+ label: "Interface (list pages)",
10951
+ description: "Interface mode (Airtable parity): the page defines its own data surface directly \u2014 columns, filters, visualizations and toolbar \u2014 no inheriting from a separate view."
10952
+ },
11560
10953
  advanced: {
11561
10954
  label: "Advanced",
11562
10955
  description: "Activation, audience, and accessibility."
@@ -11599,6 +10992,58 @@ var enMetadataForms = {
11599
10992
  label: "Regions",
11600
10993
  helpText: "Layout regions (header, main, sidebar, footer) with components"
11601
10994
  },
10995
+ interfaceConfig: {
10996
+ label: "Interface Config",
10997
+ helpText: "The page IS the view: source picks the object, columns/filterBy are defined directly here; appearance.allowedVisualizations whitelists renderers (one entry = locked); userActions toggles the toolbar."
10998
+ },
10999
+ "interfaceConfig.source": {
11000
+ label: "Source",
11001
+ helpText: "Object this page reads from"
11002
+ },
11003
+ "interfaceConfig.columns": {
11004
+ label: "Columns",
11005
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
11006
+ },
11007
+ "interfaceConfig.filterBy": {
11008
+ label: "Filter By",
11009
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
11010
+ },
11011
+ "interfaceConfig.levels": {
11012
+ label: "Levels",
11013
+ helpText: "Hierarchy levels to display (tree-like sources)"
11014
+ },
11015
+ "interfaceConfig.appearance": {
11016
+ label: "Appearance",
11017
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
11018
+ },
11019
+ "interfaceConfig.userFilters": {
11020
+ label: "User Filters",
11021
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
11022
+ },
11023
+ "interfaceConfig.userActions": {
11024
+ label: "User Actions",
11025
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
11026
+ },
11027
+ "interfaceConfig.addRecord": {
11028
+ label: "Add Record",
11029
+ helpText: "Add-record entry point"
11030
+ },
11031
+ "interfaceConfig.buttons": {
11032
+ label: "Buttons",
11033
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
11034
+ },
11035
+ "interfaceConfig.recordAction": {
11036
+ label: "Record Action",
11037
+ helpText: "How clicking a record opens its detail"
11038
+ },
11039
+ "interfaceConfig.showRecordCount": {
11040
+ label: "Show Record Count",
11041
+ helpText: "Show the record count bar"
11042
+ },
11043
+ "interfaceConfig.allowPrinting": {
11044
+ label: "Allow Printing",
11045
+ helpText: "Allow users to print this page"
11046
+ },
11602
11047
  isDefault: {
11603
11048
  label: "Is Default",
11604
11049
  helpText: "Set as default page for this page type"
@@ -11847,6 +11292,22 @@ var enMetadataForms = {
11847
11292
  label: "Body",
11848
11293
  helpText: "JavaScript code to execute"
11849
11294
  },
11295
+ "body.language": {
11296
+ label: "Language",
11297
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
11298
+ },
11299
+ "body.source": {
11300
+ label: "Source",
11301
+ helpText: "Function body source \u2014 no top-level imports"
11302
+ },
11303
+ "body.capabilities": {
11304
+ label: "Capabilities",
11305
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
11306
+ },
11307
+ "body.timeoutMs": {
11308
+ label: "Timeout Ms",
11309
+ helpText: "Per-invocation timeout (ms)"
11310
+ },
11850
11311
  params: {
11851
11312
  label: "Params",
11852
11313
  helpText: "User input parameters (show form before executing)"
@@ -11887,9 +11348,9 @@ var enMetadataForms = {
11887
11348
  label: "Bulk Enabled",
11888
11349
  helpText: "Allow applying to multiple selected records"
11889
11350
  },
11890
- aiExposed: {
11891
- label: "Ai Exposed",
11892
- helpText: "Allow AI agents to call this action"
11351
+ ai: {
11352
+ label: "Ai",
11353
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
11893
11354
  },
11894
11355
  recordIdParam: {
11895
11356
  label: "Record Id Param",
@@ -11912,13 +11373,9 @@ var enMetadataForms = {
11912
11373
  label: "Basics",
11913
11374
  description: "Identity and data source."
11914
11375
  },
11915
- columns: {
11916
- label: "Columns",
11917
- description: "Columns shown in the report output."
11918
- },
11919
- groupings: {
11920
- label: "Groupings",
11921
- description: "How rows (and columns, for matrix reports) are grouped."
11376
+ dataset_binding: {
11377
+ label: "Dataset binding",
11378
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
11922
11379
  },
11923
11380
  joined_blocks: {
11924
11381
  label: "Joined blocks",
@@ -11944,33 +11401,37 @@ var enMetadataForms = {
11944
11401
  description: {
11945
11402
  label: "Description"
11946
11403
  },
11947
- objectName: {
11948
- label: "Object Name",
11949
- helpText: "Data source object"
11950
- },
11951
11404
  type: {
11952
11405
  label: "Type",
11953
11406
  helpText: "Report type: tabular/summary/matrix/joined"
11954
11407
  },
11408
+ dataset: {
11409
+ label: "Dataset",
11410
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
11411
+ },
11412
+ values: {
11413
+ label: "Values",
11414
+ helpText: "Measure names (from the dataset) to display"
11415
+ },
11416
+ rows: {
11417
+ label: "Rows",
11418
+ helpText: "Dimension names (from the dataset) to group rows by"
11419
+ },
11955
11420
  columns: {
11956
11421
  label: "Columns",
11957
11422
  helpText: "Columns to display in the report"
11958
11423
  },
11959
- groupingsDown: {
11960
- label: "Groupings Down",
11961
- helpText: "Row grouping levels"
11962
- },
11963
- groupingsAcross: {
11964
- label: "Groupings Across",
11965
- helpText: "Column grouping levels (matrix only)"
11424
+ drilldown: {
11425
+ label: "Drilldown",
11426
+ helpText: "Click an aggregated row/cell to open the underlying records"
11966
11427
  },
11967
11428
  blocks: {
11968
11429
  label: "Blocks",
11969
11430
  helpText: "Join multiple objects (joined report only)"
11970
11431
  },
11971
- filter: {
11972
- label: "Filter",
11973
- helpText: "Report-level filters"
11432
+ runtimeFilter: {
11433
+ label: "Runtime Filter",
11434
+ helpText: "Render-time scope filter, ANDed at query time"
11974
11435
  },
11975
11436
  chart: {
11976
11437
  label: "Chart",
@@ -11986,6 +11447,62 @@ var enMetadataForms = {
11986
11447
  }
11987
11448
  }
11988
11449
  },
11450
+ dataset: {
11451
+ label: "Dataset",
11452
+ description: "Analytics semantic layer \u2014 dimensions & measures",
11453
+ sections: {
11454
+ basics: {
11455
+ label: "Basics",
11456
+ description: "Dataset identity."
11457
+ },
11458
+ source: {
11459
+ label: "Source",
11460
+ description: "The base object, the relationships to join, and the dataset\u2019s intrinsic scope. Joins are derived from the object graph \u2014 pick relationship (lookup / master_detail) names, never write an ON clause."
11461
+ },
11462
+ dimensions: {
11463
+ label: "Dimensions",
11464
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
11465
+ },
11466
+ measures: {
11467
+ label: "Measures",
11468
+ description: "Aggregatable values defined once and referenced by name. A measure is sum/avg/count/\u2026 of a field; a derived measure combines other measures (ratio/sum/difference/product). Measure-scoped filters and derived ops are edited per-row in the dataset designer."
11469
+ }
11470
+ },
11471
+ fields: {
11472
+ name: {
11473
+ label: "Name",
11474
+ helpText: "snake_case unique identifier"
11475
+ },
11476
+ label: {
11477
+ label: "Label",
11478
+ helpText: "Display name"
11479
+ },
11480
+ description: {
11481
+ label: "Description",
11482
+ helpText: "What this dataset measures"
11483
+ },
11484
+ object: {
11485
+ label: "Object",
11486
+ helpText: "Base object \u2014 the FROM"
11487
+ },
11488
+ include: {
11489
+ label: "Include",
11490
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
11491
+ },
11492
+ filter: {
11493
+ label: "Filter",
11494
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
11495
+ },
11496
+ dimensions: {
11497
+ label: "Dimensions",
11498
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
11499
+ },
11500
+ measures: {
11501
+ label: "Measures",
11502
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
11503
+ }
11504
+ }
11505
+ },
11989
11506
  flow: {
11990
11507
  label: "Flow",
11991
11508
  sections: {
@@ -12065,15 +11582,6 @@ var enMetadataForms = {
12065
11582
  translation: {
12066
11583
  label: "Translation"
12067
11584
  },
12068
- router: {
12069
- label: "Router"
12070
- },
12071
- function: {
12072
- label: "Function"
12073
- },
12074
- service: {
12075
- label: "Service"
12076
- },
12077
11585
  email_template: {
12078
11586
  label: "Email Template",
12079
11587
  sections: {
@@ -12154,6 +11662,14 @@ var enMetadataForms = {
12154
11662
  }
12155
11663
  }
12156
11664
  },
11665
+ doc: {
11666
+ label: "Documentation",
11667
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
11668
+ },
11669
+ book: {
11670
+ label: "Documentation Book",
11671
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
11672
+ },
12157
11673
  permission: {
12158
11674
  label: "Permission Set",
12159
11675
  sections: {
@@ -12714,6 +12230,70 @@ var zhCNMetadataForms = {
12714
12230
  datasource: {
12715
12231
  label: "\u6570\u636E\u6E90",
12716
12232
  helpText: '\u76EE\u6807\u6570\u636E\u6E90 ID\uFF08\u9ED8\u8BA4\uFF1A"default"\uFF09'
12233
+ },
12234
+ lifecycle: {
12235
+ label: "\u6570\u636E\u751F\u547D\u5468\u671F",
12236
+ helpText: "\u6570\u636E\u751F\u547D\u5468\u671F\u5951\u7EA6\uFF08ADR-0057\uFF09\uFF1A\u6570\u636E\u4FDD\u7559\u591A\u4E45\u3001\u7A7A\u95F4\u5982\u4F55\u56DE\u6536\u3002\u7559\u7A7A\u5373\u6C38\u4E45\u4FDD\u7559\uFF08record \u8BED\u4E49\uFF09\u3002\u975E record \u7C7B\u5FC5\u987B\u58F0\u660E\u81F3\u5C11\u4E00\u4E2A\u754C\u5B9A\u7B56\u7565\uFF08\u4FDD\u7559\u671F\u3001TTL \u6216\u8F6E\u8F6C\uFF09\u3002"
12237
+ },
12238
+ "lifecycle.class": {
12239
+ label: "\u751F\u547D\u5468\u671F\u7C7B\u522B",
12240
+ helpText: "\u672C\u5BF9\u8C61\u6570\u636E\u7684\u6301\u4E45\u5316\u5951\u7EA6"
12241
+ },
12242
+ "lifecycle.retention": {
12243
+ label: "\u4FDD\u7559\u671F",
12244
+ helpText: "\u6309\u6570\u636E\u5E74\u9F84\u754C\u5B9A\u7684\u4FDD\u7559\u7A97\u53E3"
12245
+ },
12246
+ "lifecycle.retention.maxAge": {
12247
+ label: "\u6700\u957F\u4FDD\u7559",
12248
+ helpText: '\u65E9\u4E8E\u8BE5\u7A97\u53E3\uFF08\u6309 created_at\uFF09\u7684\u884C\u5C06\u88AB\u6E05\u7406\u3002\u65F6\u957F\u5B57\u9762\u91CF\uFF1Ah/d/w/y\uFF0C\u5982 "30d"'
12249
+ },
12250
+ "lifecycle.ttl": {
12251
+ label: "TTL \u8FC7\u671F",
12252
+ helpText: "\u6309\u884C\u7684 TTL \u81EA\u52A8\u8FC7\u671F"
12253
+ },
12254
+ "lifecycle.ttl.field": {
12255
+ label: "\u65F6\u95F4\u5B57\u6BB5",
12256
+ helpText: "TTL \u8BA1\u65F6\u8D77\u70B9\u7684\u65F6\u95F4\u6233\u5B57\u6BB5\uFF08\u5982 expires_at\uFF09"
12257
+ },
12258
+ "lifecycle.ttl.expireAfter": {
12259
+ label: "\u8FC7\u671F\u65F6\u957F",
12260
+ helpText: '\u884C\u5728\u8BE5\u5B57\u6BB5\u4E4B\u540E\u8FD9\u4E48\u4E45\u8FC7\u671F\uFF0C\u5982 "1d"'
12261
+ },
12262
+ "lifecycle.storage": {
12263
+ label: "\u5B58\u50A8\u7B56\u7565",
12264
+ helpText: "\u9AD8\u9891\u9065\u6D4B\u7684\u7269\u7406\u8F6E\u8F6C\uFF08SQLite\uFF1AO(1) \u5206\u7247 DROP\uFF09"
12265
+ },
12266
+ "lifecycle.storage.strategy": {
12267
+ label: "\u7B56\u7565",
12268
+ helpText: "\u5B58\u50A8\u7B56\u7565"
12269
+ },
12270
+ "lifecycle.storage.shards": {
12271
+ label: "\u5206\u7247\u6570",
12272
+ helpText: "\u4FDD\u7559\u7684\u5206\u7247\u6570\u91CF\uFF1B\u603B\u7A97\u53E3 = \u5206\u7247\u6570 \xD7 \u5355\u4F4D"
12273
+ },
12274
+ "lifecycle.storage.unit": {
12275
+ label: "\u5206\u7247\u5355\u4F4D",
12276
+ helpText: "\u5355\u4E2A\u5206\u7247\u7684\u65F6\u95F4\u5BBD\u5EA6"
12277
+ },
12278
+ "lifecycle.archive": {
12279
+ label: "\u5F52\u6863",
12280
+ helpText: "\u51B7\u5B58\u4EA4\u63A5\uFF08audit \u7C7B\uFF09\u3002\u5F52\u6863\u62F7\u8D1D\u6210\u529F\u524D\uFF0C\u884C\u7EDD\u4E0D\u4F1A\u88AB\u70ED\u5220\u9664\u3002"
12281
+ },
12282
+ "lifecycle.archive.after": {
12283
+ label: "\u5F52\u6863\u65F6\u70B9",
12284
+ helpText: "\u65E9\u4E8E\u8BE5\u7A97\u53E3\u7684\u884C\u8FDB\u5165\u5F52\u6863 \u2014 \u5FC5\u987B\u7B49\u4E8E retention.maxAge"
12285
+ },
12286
+ "lifecycle.archive.to": {
12287
+ label: "\u5F52\u6863\u6570\u636E\u6E90",
12288
+ helpText: "\u51B7\u5B58\u50A8\u7684\u76EE\u6807\u6570\u636E\u6E90\u540D\u79F0"
12289
+ },
12290
+ "lifecycle.archive.keep": {
12291
+ label: "\u5F52\u6863\u4FDD\u7559",
12292
+ helpText: '\u5F52\u6863\u4E2D\u4FDD\u7559\u591A\u4E45\uFF08\u7559\u7A7A = \u6C38\u4E45\uFF09\uFF0C\u5982 "7y"'
12293
+ },
12294
+ "lifecycle.reclaim": {
12295
+ label: "\u7A7A\u95F4\u56DE\u6536",
12296
+ helpText: "\u6E05\u7406\u540E\u56DE\u6536\u9A71\u52A8\u5C42\u7A7A\u95F4\uFF08\u975E record \u7C7B\u9ED8\u8BA4\u5F00\u542F\uFF09"
12717
12297
  }
12718
12298
  }
12719
12299
  },
@@ -12822,10 +12402,6 @@ var zhCNMetadataForms = {
12822
12402
  label: "\u6C47\u603B\u64CD\u4F5C",
12823
12403
  helpText: "\u7236\u5B50\u5173\u7CFB\u4E0B\u7684\u6C47\u603B\u805A\u5408\u914D\u7F6E"
12824
12404
  },
12825
- cached: {
12826
- label: "\u7F13\u5B58",
12827
- helpText: "\u8BA1\u7B97\u5B57\u6BB5\u7684\u7F13\u5B58\u914D\u7F6E"
12828
- },
12829
12405
  columnName: {
12830
12406
  label: "\u5217\u540D",
12831
12407
  helpText: "\u6570\u636E\u5E93\u4E2D\u7684\u7269\u7406\u5217\u540D\uFF08\u9ED8\u8BA4\u4E0E\u5B57\u6BB5\u540D\u76F8\u540C\uFF09"
@@ -12853,28 +12429,9 @@ var zhCNMetadataForms = {
12853
12429
  sortable: {
12854
12430
  label: "\u53EF\u6392\u5E8F",
12855
12431
  helpText: "\u5141\u8BB8\u6309\u6B64\u5B57\u6BB5\u6392\u5E8F"
12856
- },
12857
- auditTrail: {
12858
- label: "\u5BA1\u8BA1\u8DDF\u8E2A",
12859
- helpText: "\u8BB0\u5F55\u8BE6\u7EC6\u53D8\u66F4\u4E0E\u64CD\u4F5C\u4EBA\u3001\u65F6\u95F4\u6233"
12860
- },
12861
- trackFeedHistory: {
12862
- label: "\u52A8\u6001\u5386\u53F2\u8DDF\u8E2A",
12863
- helpText: "\u5728\u6D3B\u52A8\u52A8\u6001\u4E2D\u5C55\u793A\u53D8\u66F4"
12864
- },
12865
- encryptionConfig: {
12866
- label: "\u52A0\u5BC6\u914D\u7F6E",
12867
- helpText: "\u5B57\u6BB5\u7EA7\u52A0\u5BC6\uFF08GDPR / HIPAA / PCI-DSS\uFF09"
12868
- },
12869
- maskingRule: {
12870
- label: "\u63A9\u7801\u89C4\u5219",
12871
- helpText: "PII \u6570\u636E\u8131\u654F\u89C4\u5219"
12872
12432
  }
12873
12433
  }
12874
12434
  },
12875
- trigger: {
12876
- label: "\u89E6\u53D1\u5668"
12877
- },
12878
12435
  validation: {
12879
12436
  label: "\u9A8C\u8BC1\u89C4\u5219"
12880
12437
  },
@@ -12951,12 +12508,36 @@ var zhCNMetadataForms = {
12951
12508
  onError: {
12952
12509
  label: "\u9519\u8BEF\u5904\u7406"
12953
12510
  },
12511
+ timeout: {
12512
+ label: "Timeout",
12513
+ helpText: "Abort the hook after N milliseconds"
12514
+ },
12954
12515
  condition: {
12955
12516
  label: "\u6761\u4EF6",
12956
12517
  helpText: "\u53EF\u9009\u516C\u5F0F\u2014\u2014\u6C42\u503C\u4E3A false \u65F6\u8DF3\u8FC7\u8BE5\u94A9\u5B50"
12518
+ },
12519
+ retryPolicy: {
12520
+ label: "Retry Policy",
12521
+ helpText: "Retry on failure \u2014 most useful for async hooks"
12522
+ },
12523
+ "retryPolicy.maxRetries": {
12524
+ label: "Max Retries",
12525
+ helpText: "Maximum retry attempts"
12526
+ },
12527
+ "retryPolicy.backoffMs": {
12528
+ label: "Backoff Ms",
12529
+ helpText: "Delay between retries (ms)"
12957
12530
  }
12958
12531
  }
12959
12532
  },
12533
+ seed: {
12534
+ label: "Seed Data",
12535
+ description: "Fixture / initialization data applied on publish"
12536
+ },
12537
+ mapping: {
12538
+ label: "Import Mapping",
12539
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
12540
+ },
12960
12541
  view: {
12961
12542
  label: "\u89C6\u56FE",
12962
12543
  sections: {
@@ -13128,6 +12709,10 @@ var zhCNMetadataForms = {
13128
12709
  label: "\u5E03\u5C40",
13129
12710
  description: "\u9875\u9762\u533A\u5757\u4E0E\u7EC4\u4EF6"
13130
12711
  },
12712
+ interface: {
12713
+ label: "Interface (list pages)",
12714
+ description: "Interface mode (Airtable parity): the page defines its own data surface directly \u2014 columns, filters, visualizations and toolbar \u2014 no inheriting from a separate view."
12715
+ },
13131
12716
  advanced: {
13132
12717
  label: "\u9AD8\u7EA7\u8BBE\u7F6E",
13133
12718
  description: "\u9ED8\u8BA4\u9875\u3001\u7C7B\u578B\u4E0E\u5206\u914D"
@@ -13170,6 +12755,58 @@ var zhCNMetadataForms = {
13170
12755
  label: "\u533A\u57DF",
13171
12756
  helpText: "\u5E03\u5C40\u533A\u57DF\uFF08header\u3001main\u3001sidebar\u3001footer\uFF09\u53CA\u5176\u7EC4\u4EF6"
13172
12757
  },
12758
+ interfaceConfig: {
12759
+ label: "Interface Config",
12760
+ helpText: "The page IS the view: source picks the object, columns/filterBy are defined directly here; appearance.allowedVisualizations whitelists renderers (one entry = locked); userActions toggles the toolbar."
12761
+ },
12762
+ "interfaceConfig.source": {
12763
+ label: "Source",
12764
+ helpText: "Object this page reads from"
12765
+ },
12766
+ "interfaceConfig.columns": {
12767
+ label: "Columns",
12768
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
12769
+ },
12770
+ "interfaceConfig.filterBy": {
12771
+ label: "Filter By",
12772
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
12773
+ },
12774
+ "interfaceConfig.levels": {
12775
+ label: "Levels",
12776
+ helpText: "Hierarchy levels to display (tree-like sources)"
12777
+ },
12778
+ "interfaceConfig.appearance": {
12779
+ label: "Appearance",
12780
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
12781
+ },
12782
+ "interfaceConfig.userFilters": {
12783
+ label: "User Filters",
12784
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
12785
+ },
12786
+ "interfaceConfig.userActions": {
12787
+ label: "User Actions",
12788
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
12789
+ },
12790
+ "interfaceConfig.addRecord": {
12791
+ label: "Add Record",
12792
+ helpText: "Add-record entry point"
12793
+ },
12794
+ "interfaceConfig.buttons": {
12795
+ label: "Buttons",
12796
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
12797
+ },
12798
+ "interfaceConfig.recordAction": {
12799
+ label: "Record Action",
12800
+ helpText: "How clicking a record opens its detail"
12801
+ },
12802
+ "interfaceConfig.showRecordCount": {
12803
+ label: "Show Record Count",
12804
+ helpText: "Show the record count bar"
12805
+ },
12806
+ "interfaceConfig.allowPrinting": {
12807
+ label: "Allow Printing",
12808
+ helpText: "Allow users to print this page"
12809
+ },
13173
12810
  isDefault: {
13174
12811
  label: "\u9ED8\u8BA4",
13175
12812
  helpText: "\u8BBE\u4E3A\u8BE5\u9875\u9762\u7C7B\u578B\u7684\u9ED8\u8BA4\u9875"
@@ -13418,6 +13055,22 @@ var zhCNMetadataForms = {
13418
13055
  label: "\u6B63\u6587",
13419
13056
  helpText: "\u8981\u6267\u884C\u7684 JavaScript \u4EE3\u7801"
13420
13057
  },
13058
+ "body.language": {
13059
+ label: "Language",
13060
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
13061
+ },
13062
+ "body.source": {
13063
+ label: "Source",
13064
+ helpText: "Function body source \u2014 no top-level imports"
13065
+ },
13066
+ "body.capabilities": {
13067
+ label: "Capabilities",
13068
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
13069
+ },
13070
+ "body.timeoutMs": {
13071
+ label: "Timeout Ms",
13072
+ helpText: "Per-invocation timeout (ms)"
13073
+ },
13421
13074
  params: {
13422
13075
  label: "\u53C2\u6570",
13423
13076
  helpText: "\u6267\u884C\u524D\u5411\u7528\u6237\u6536\u96C6\u7684\u8F93\u5165\u53C2\u6570"
@@ -13458,9 +13111,9 @@ var zhCNMetadataForms = {
13458
13111
  label: "\u6279\u91CF\u542F\u7528",
13459
13112
  helpText: "\u5141\u8BB8\u5BF9\u591A\u6761\u9009\u4E2D\u8BB0\u5F55\u6267\u884C"
13460
13113
  },
13461
- aiExposed: {
13462
- label: "\u66B4\u9732\u7ED9 AI",
13463
- helpText: "\u5141\u8BB8 AI \u667A\u80FD\u4F53\u8C03\u7528\u6B64\u64CD\u4F5C"
13114
+ ai: {
13115
+ label: "Ai",
13116
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
13464
13117
  },
13465
13118
  recordIdParam: {
13466
13119
  label: "\u8BB0\u5F55 ID \u53C2\u6570",
@@ -13483,13 +13136,9 @@ var zhCNMetadataForms = {
13483
13136
  label: "\u57FA\u7840\u4FE1\u606F",
13484
13137
  description: "\u540D\u79F0\u4E0E\u6570\u636E\u6E90"
13485
13138
  },
13486
- columns: {
13487
- label: "\u5217",
13488
- description: "\u9009\u62E9\u8981\u5C55\u793A\u7684\u5217"
13489
- },
13490
- groupings: {
13491
- label: "\u5206\u7EC4\u4E0E\u6C47\u603B",
13492
- description: "\u884C\u5217\u5206\u7EC4\u7EF4\u5EA6"
13139
+ dataset_binding: {
13140
+ label: "Dataset binding",
13141
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
13493
13142
  },
13494
13143
  joined_blocks: {
13495
13144
  label: "\u5173\u8054\u5BF9\u8C61",
@@ -13515,45 +13164,105 @@ var zhCNMetadataForms = {
13515
13164
  description: {
13516
13165
  label: "\u63CF\u8FF0"
13517
13166
  },
13518
- objectName: {
13519
- label: "\u5BF9\u8C61\u540D\u79F0",
13520
- helpText: "\u62A5\u8868\u6570\u636E\u6E90\u5BF9\u8C61"
13521
- },
13522
13167
  type: {
13523
13168
  label: "\u7C7B\u578B",
13524
13169
  helpText: "\u62A5\u8868\u7C7B\u578B\uFF1Atabular / summary / matrix / joined"
13525
13170
  },
13171
+ dataset: {
13172
+ label: "Dataset",
13173
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
13174
+ },
13175
+ values: {
13176
+ label: "Values",
13177
+ helpText: "Measure names (from the dataset) to display"
13178
+ },
13179
+ rows: {
13180
+ label: "Rows",
13181
+ helpText: "Dimension names (from the dataset) to group rows by"
13182
+ },
13526
13183
  columns: {
13527
13184
  label: "\u5217",
13528
13185
  helpText: "\u62A5\u8868\u4E2D\u663E\u793A\u7684\u5217"
13529
13186
  },
13530
- groupingsDown: {
13531
- label: "\u884C\u5206\u7EC4",
13532
- helpText: "\u884C\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7"
13187
+ drilldown: {
13188
+ label: "Drilldown",
13189
+ helpText: "Click an aggregated row/cell to open the underlying records"
13190
+ },
13191
+ blocks: {
13192
+ label: "\u5206\u5757",
13193
+ helpText: "joined \u62A5\u8868\u7684\u8054\u5408\u67E5\u8BE2\u5757"
13194
+ },
13195
+ runtimeFilter: {
13196
+ label: "Runtime Filter",
13197
+ helpText: "Render-time scope filter, ANDed at query time"
13198
+ },
13199
+ chart: {
13200
+ label: "\u56FE\u8868",
13201
+ helpText: "\u56FE\u8868\u7C7B\u578B\u4E0E\u914D\u7F6E"
13202
+ },
13203
+ aria: {
13204
+ label: "\u65E0\u969C\u788D",
13205
+ helpText: "\u65E0\u969C\u788D\u6807\u7B7E\u4E0E\u89D2\u8272"
13206
+ },
13207
+ performance: {
13208
+ label: "\u6027\u80FD",
13209
+ helpText: "\u6027\u80FD\u4E0E\u7F13\u5B58\u7B56\u7565"
13210
+ }
13211
+ }
13212
+ },
13213
+ dataset: {
13214
+ label: "Dataset",
13215
+ description: "Analytics semantic layer \u2014 dimensions & measures",
13216
+ sections: {
13217
+ basics: {
13218
+ label: "Basics",
13219
+ description: "Dataset identity."
13220
+ },
13221
+ source: {
13222
+ label: "Source",
13223
+ description: "The base object, the relationships to join, and the dataset\u2019s intrinsic scope. Joins are derived from the object graph \u2014 pick relationship (lookup / master_detail) names, never write an ON clause."
13224
+ },
13225
+ dimensions: {
13226
+ label: "Dimensions",
13227
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
13228
+ },
13229
+ measures: {
13230
+ label: "Measures",
13231
+ description: "Aggregatable values defined once and referenced by name. A measure is sum/avg/count/\u2026 of a field; a derived measure combines other measures (ratio/sum/difference/product). Measure-scoped filters and derived ops are edited per-row in the dataset designer."
13232
+ }
13233
+ },
13234
+ fields: {
13235
+ name: {
13236
+ label: "Name",
13237
+ helpText: "snake_case unique identifier"
13238
+ },
13239
+ label: {
13240
+ label: "Label",
13241
+ helpText: "Display name"
13242
+ },
13243
+ description: {
13244
+ label: "Description",
13245
+ helpText: "What this dataset measures"
13533
13246
  },
13534
- groupingsAcross: {
13535
- label: "\u5217\u5206\u7EC4",
13536
- helpText: "\u5217\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7\uFF08matrix \u62A5\u8868\uFF09"
13247
+ object: {
13248
+ label: "Object",
13249
+ helpText: "Base object \u2014 the FROM"
13537
13250
  },
13538
- blocks: {
13539
- label: "\u5206\u5757",
13540
- helpText: "joined \u62A5\u8868\u7684\u8054\u5408\u67E5\u8BE2\u5757"
13251
+ include: {
13252
+ label: "Include",
13253
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
13541
13254
  },
13542
13255
  filter: {
13543
- label: "\u7B5B\u9009",
13544
- helpText: "\u62A5\u8868\u7EA7\u522B\u7684\u7B5B\u9009\u89C4\u5219"
13545
- },
13546
- chart: {
13547
- label: "\u56FE\u8868",
13548
- helpText: "\u56FE\u8868\u7C7B\u578B\u4E0E\u914D\u7F6E"
13256
+ label: "Filter",
13257
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
13549
13258
  },
13550
- aria: {
13551
- label: "\u65E0\u969C\u788D",
13552
- helpText: "\u65E0\u969C\u788D\u6807\u7B7E\u4E0E\u89D2\u8272"
13259
+ dimensions: {
13260
+ label: "Dimensions",
13261
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
13553
13262
  },
13554
- performance: {
13555
- label: "\u6027\u80FD",
13556
- helpText: "\u6027\u80FD\u4E0E\u7F13\u5B58\u7B56\u7565"
13263
+ measures: {
13264
+ label: "Measures",
13265
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
13557
13266
  }
13558
13267
  }
13559
13268
  },
@@ -13636,15 +13345,6 @@ var zhCNMetadataForms = {
13636
13345
  translation: {
13637
13346
  label: "\u7FFB\u8BD1"
13638
13347
  },
13639
- router: {
13640
- label: "\u8DEF\u7531\u5668"
13641
- },
13642
- function: {
13643
- label: "\u51FD\u6570"
13644
- },
13645
- service: {
13646
- label: "\u670D\u52A1"
13647
- },
13648
13348
  email_template: {
13649
13349
  label: "\u90AE\u4EF6\u6A21\u677F",
13650
13350
  sections: {
@@ -13725,6 +13425,14 @@ var zhCNMetadataForms = {
13725
13425
  }
13726
13426
  }
13727
13427
  },
13428
+ doc: {
13429
+ label: "Documentation",
13430
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
13431
+ },
13432
+ book: {
13433
+ label: "Documentation Book",
13434
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
13435
+ },
13728
13436
  permission: {
13729
13437
  label: "\u6743\u9650\u96C6 / \u914D\u7F6E\u6587\u4EF6",
13730
13438
  sections: {
@@ -14285,6 +13993,70 @@ var jaJPMetadataForms = {
14285
13993
  datasource: {
14286
13994
  label: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9",
14287
13995
  helpText: '\u5BFE\u8C61\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 ID\uFF08\u65E2\u5B9A: "default"\uFF09'
13996
+ },
13997
+ lifecycle: {
13998
+ label: "Lifecycle",
13999
+ helpText: "Data lifecycle contract (ADR-0057): how long rows live and how space is reclaimed. Leave empty for permanent record semantics. Non-record classes require at least one bounding policy (retention, TTL, or rotation)."
14000
+ },
14001
+ "lifecycle.class": {
14002
+ label: "Class",
14003
+ helpText: "Persistence contract for the rows of this object"
14004
+ },
14005
+ "lifecycle.retention": {
14006
+ label: "Retention",
14007
+ helpText: "Age-based retention window"
14008
+ },
14009
+ "lifecycle.retention.maxAge": {
14010
+ label: "Max Age",
14011
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
14012
+ },
14013
+ "lifecycle.ttl": {
14014
+ label: "Ttl",
14015
+ helpText: "Per-row TTL expiry"
14016
+ },
14017
+ "lifecycle.ttl.field": {
14018
+ label: "Field",
14019
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
14020
+ },
14021
+ "lifecycle.ttl.expireAfter": {
14022
+ label: "Expire After",
14023
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
14024
+ },
14025
+ "lifecycle.storage": {
14026
+ label: "Storage",
14027
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
14028
+ },
14029
+ "lifecycle.storage.strategy": {
14030
+ label: "Strategy",
14031
+ helpText: "Storage strategy"
14032
+ },
14033
+ "lifecycle.storage.shards": {
14034
+ label: "Shards",
14035
+ helpText: "Shards retained; total window = shards \xD7 unit"
14036
+ },
14037
+ "lifecycle.storage.unit": {
14038
+ label: "Unit",
14039
+ helpText: "Time width of one shard"
14040
+ },
14041
+ "lifecycle.archive": {
14042
+ label: "Archive",
14043
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
14044
+ },
14045
+ "lifecycle.archive.after": {
14046
+ label: "After",
14047
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
14048
+ },
14049
+ "lifecycle.archive.to": {
14050
+ label: "To",
14051
+ helpText: "Target datasource name for cold storage"
14052
+ },
14053
+ "lifecycle.archive.keep": {
14054
+ label: "Keep",
14055
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
14056
+ },
14057
+ "lifecycle.reclaim": {
14058
+ label: "Reclaim",
14059
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
14288
14060
  }
14289
14061
  }
14290
14062
  },
@@ -14393,10 +14165,6 @@ var jaJPMetadataForms = {
14393
14165
  label: "\u96C6\u8A08\u64CD\u4F5C",
14394
14166
  helpText: "\u30ED\u30FC\u30EB\u30A2\u30C3\u30D7\u96C6\u8A08\u8A2D\u5B9A\uFF08\u89AA\u5B50\u95A2\u4FC2\u7528\uFF09"
14395
14167
  },
14396
- cached: {
14397
- label: "\u30AD\u30E3\u30C3\u30B7\u30E5",
14398
- helpText: "\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u8A2D\u5B9A"
14399
- },
14400
14168
  columnName: {
14401
14169
  label: "\u5217\u540D",
14402
14170
  helpText: "\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u4E0A\u306E\u7269\u7406\u5217\u540D\uFF08\u65E2\u5B9A\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\uFF09"
@@ -14424,28 +14192,9 @@ var jaJPMetadataForms = {
14424
14192
  sortable: {
14425
14193
  label: "\u4E26\u3073\u66FF\u3048\u53EF\u80FD",
14426
14194
  helpText: "\u3053\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30EA\u30B9\u30C8\u306E\u4E26\u3079\u66FF\u3048\u3092\u8A31\u53EF"
14427
- },
14428
- auditTrail: {
14429
- label: "\u76E3\u67FB\u8A3C\u8DE1",
14430
- helpText: "\u30E6\u30FC\u30B6\u30FC\u3068\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u4ED8\u304D\u3067\u8A73\u7D30\u5909\u66F4\u3092\u8FFD\u8DE1"
14431
- },
14432
- trackFeedHistory: {
14433
- label: "\u30D5\u30A3\u30FC\u30C9\u5C65\u6B74\u8FFD\u8DE1",
14434
- helpText: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30D5\u30A3\u30FC\u30C9\u306B\u5909\u66F4\u3092\u8868\u793A"
14435
- },
14436
- encryptionConfig: {
14437
- label: "\u6697\u53F7\u5316\u8A2D\u5B9A",
14438
- helpText: "\u30D5\u30A3\u30FC\u30EB\u30C9\u30EC\u30D9\u30EB\u6697\u53F7\u5316\uFF08GDPR/HIPAA/PCI-DSS\uFF09"
14439
- },
14440
- maskingRule: {
14441
- label: "\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB",
14442
- helpText: "PII \u4FDD\u8B77\u7528\u30C7\u30FC\u30BF\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB"
14443
14195
  }
14444
14196
  }
14445
14197
  },
14446
- trigger: {
14447
- label: "\u30C8\u30EA\u30AC\u30FC"
14448
- },
14449
14198
  validation: {
14450
14199
  label: "\u691C\u8A3C\u30EB\u30FC\u30EB"
14451
14200
  },
@@ -14522,12 +14271,36 @@ var jaJPMetadataForms = {
14522
14271
  onError: {
14523
14272
  label: "\u30A8\u30E9\u30FC\u6642"
14524
14273
  },
14274
+ timeout: {
14275
+ label: "Timeout",
14276
+ helpText: "Abort the hook after N milliseconds"
14277
+ },
14525
14278
  condition: {
14526
14279
  label: "\u6761\u4EF6",
14527
14280
  helpText: "\u4EFB\u610F\u306E\u6570\u5F0F \u2014 false \u8A55\u4FA1\u6642\u306F\u30D5\u30C3\u30AF\u3092\u30B9\u30AD\u30C3\u30D7"
14281
+ },
14282
+ retryPolicy: {
14283
+ label: "Retry Policy",
14284
+ helpText: "Retry on failure \u2014 most useful for async hooks"
14285
+ },
14286
+ "retryPolicy.maxRetries": {
14287
+ label: "Max Retries",
14288
+ helpText: "Maximum retry attempts"
14289
+ },
14290
+ "retryPolicy.backoffMs": {
14291
+ label: "Backoff Ms",
14292
+ helpText: "Delay between retries (ms)"
14528
14293
  }
14529
14294
  }
14530
14295
  },
14296
+ seed: {
14297
+ label: "Seed Data",
14298
+ description: "Fixture / initialization data applied on publish"
14299
+ },
14300
+ mapping: {
14301
+ label: "Import Mapping",
14302
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
14303
+ },
14531
14304
  view: {
14532
14305
  label: "\u30D3\u30E5\u30FC",
14533
14306
  sections: {
@@ -14699,6 +14472,10 @@ var jaJPMetadataForms = {
14699
14472
  label: "\u30EC\u30A4\u30A2\u30A6\u30C8",
14700
14473
  description: "\u30DA\u30FC\u30B8\u9818\u57DF\u3068\u305D\u3053\u306B\u914D\u7F6E\u3059\u308B\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3002"
14701
14474
  },
14475
+ interface: {
14476
+ label: "Interface (list pages)",
14477
+ description: "Interface mode (Airtable parity): the page defines its own data surface directly \u2014 columns, filters, visualizations and toolbar \u2014 no inheriting from a separate view."
14478
+ },
14702
14479
  advanced: {
14703
14480
  label: "\u8A73\u7D30",
14704
14481
  description: "\u6709\u52B9\u5316\u3001\u5BFE\u8C61\u30E6\u30FC\u30B6\u30FC\u3001\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u3002"
@@ -14741,6 +14518,58 @@ var jaJPMetadataForms = {
14741
14518
  label: "\u30EA\u30FC\u30B8\u30E7\u30F3",
14742
14519
  helpText: "\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u542B\u3080\u30EC\u30A4\u30A2\u30A6\u30C8\u9818\u57DF\uFF08header, main, sidebar, footer\uFF09"
14743
14520
  },
14521
+ interfaceConfig: {
14522
+ label: "Interface Config",
14523
+ helpText: "The page IS the view: source picks the object, columns/filterBy are defined directly here; appearance.allowedVisualizations whitelists renderers (one entry = locked); userActions toggles the toolbar."
14524
+ },
14525
+ "interfaceConfig.source": {
14526
+ label: "Source",
14527
+ helpText: "Object this page reads from"
14528
+ },
14529
+ "interfaceConfig.columns": {
14530
+ label: "Columns",
14531
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
14532
+ },
14533
+ "interfaceConfig.filterBy": {
14534
+ label: "Filter By",
14535
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
14536
+ },
14537
+ "interfaceConfig.levels": {
14538
+ label: "Levels",
14539
+ helpText: "Hierarchy levels to display (tree-like sources)"
14540
+ },
14541
+ "interfaceConfig.appearance": {
14542
+ label: "Appearance",
14543
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
14544
+ },
14545
+ "interfaceConfig.userFilters": {
14546
+ label: "User Filters",
14547
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
14548
+ },
14549
+ "interfaceConfig.userActions": {
14550
+ label: "User Actions",
14551
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
14552
+ },
14553
+ "interfaceConfig.addRecord": {
14554
+ label: "Add Record",
14555
+ helpText: "Add-record entry point"
14556
+ },
14557
+ "interfaceConfig.buttons": {
14558
+ label: "Buttons",
14559
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
14560
+ },
14561
+ "interfaceConfig.recordAction": {
14562
+ label: "Record Action",
14563
+ helpText: "How clicking a record opens its detail"
14564
+ },
14565
+ "interfaceConfig.showRecordCount": {
14566
+ label: "Show Record Count",
14567
+ helpText: "Show the record count bar"
14568
+ },
14569
+ "interfaceConfig.allowPrinting": {
14570
+ label: "Allow Printing",
14571
+ helpText: "Allow users to print this page"
14572
+ },
14744
14573
  isDefault: {
14745
14574
  label: "\u65E2\u5B9A",
14746
14575
  helpText: "\u3053\u306E\u30DA\u30FC\u30B8\u7A2E\u5225\u306E\u65E2\u5B9A\u30DA\u30FC\u30B8\u306B\u8A2D\u5B9A"
@@ -14989,6 +14818,22 @@ var jaJPMetadataForms = {
14989
14818
  label: "\u672C\u6587",
14990
14819
  helpText: "\u5B9F\u884C\u3059\u308B JavaScript \u30B3\u30FC\u30C9"
14991
14820
  },
14821
+ "body.language": {
14822
+ label: "Language",
14823
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
14824
+ },
14825
+ "body.source": {
14826
+ label: "Source",
14827
+ helpText: "Function body source \u2014 no top-level imports"
14828
+ },
14829
+ "body.capabilities": {
14830
+ label: "Capabilities",
14831
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
14832
+ },
14833
+ "body.timeoutMs": {
14834
+ label: "Timeout Ms",
14835
+ helpText: "Per-invocation timeout (ms)"
14836
+ },
14992
14837
  params: {
14993
14838
  label: "\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
14994
14839
  helpText: "\u30E6\u30FC\u30B6\u30FC\u5165\u529B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\uFF08\u5B9F\u884C\u524D\u306B\u30D5\u30A9\u30FC\u30E0\u3092\u8868\u793A\uFF09"
@@ -15029,9 +14874,9 @@ var jaJPMetadataForms = {
15029
14874
  label: "\u4E00\u62EC\u64CD\u4F5C\u6709\u52B9",
15030
14875
  helpText: "\u9078\u629E\u3057\u305F\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u3078\u306E\u9069\u7528\u3092\u8A31\u53EF"
15031
14876
  },
15032
- aiExposed: {
15033
- label: "AI \u306B\u516C\u958B",
15034
- helpText: "AI \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306B\u3088\u308B\u3053\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u547C\u3073\u51FA\u3057\u3092\u8A31\u53EF"
14877
+ ai: {
14878
+ label: "Ai",
14879
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
15035
14880
  },
15036
14881
  recordIdParam: {
15037
14882
  label: "\u30EC\u30B3\u30FC\u30C9 ID \u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
@@ -15054,13 +14899,9 @@ var jaJPMetadataForms = {
15054
14899
  label: "\u57FA\u672C",
15055
14900
  description: "ID \u3068\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3002"
15056
14901
  },
15057
- columns: {
15058
- label: "\u5217",
15059
- description: "\u30EC\u30DD\u30FC\u30C8\u51FA\u529B\u306B\u8868\u793A\u3059\u308B\u5217\u3002"
15060
- },
15061
- groupings: {
15062
- label: "\u30B0\u30EB\u30FC\u30D7\u5316",
15063
- description: "\u884C\uFF08matrix \u30EC\u30DD\u30FC\u30C8\u3067\u306F\u5217\u3082\uFF09\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u65B9\u6CD5\u3002"
14902
+ dataset_binding: {
14903
+ label: "Dataset binding",
14904
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
15064
14905
  },
15065
14906
  joined_blocks: {
15066
14907
  label: "\u7D50\u5408\u30D6\u30ED\u30C3\u30AF",
@@ -15086,33 +14927,37 @@ var jaJPMetadataForms = {
15086
14927
  description: {
15087
14928
  label: "\u8AAC\u660E"
15088
14929
  },
15089
- objectName: {
15090
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D",
15091
- helpText: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"
15092
- },
15093
14930
  type: {
15094
14931
  label: "\u578B",
15095
14932
  helpText: "\u30EC\u30DD\u30FC\u30C8\u7A2E\u5225: tabular/summary/matrix/joined"
15096
14933
  },
14934
+ dataset: {
14935
+ label: "Dataset",
14936
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
14937
+ },
14938
+ values: {
14939
+ label: "Values",
14940
+ helpText: "Measure names (from the dataset) to display"
14941
+ },
14942
+ rows: {
14943
+ label: "Rows",
14944
+ helpText: "Dimension names (from the dataset) to group rows by"
14945
+ },
15097
14946
  columns: {
15098
14947
  label: "\u5217",
15099
14948
  helpText: "\u30EC\u30DD\u30FC\u30C8\u306B\u8868\u793A\u3059\u308B\u5217"
15100
14949
  },
15101
- groupingsDown: {
15102
- label: "\u7E26\u30B0\u30EB\u30FC\u30D7",
15103
- helpText: "\u884C\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB"
15104
- },
15105
- groupingsAcross: {
15106
- label: "\u6A2A\u30B0\u30EB\u30FC\u30D7",
15107
- helpText: "\u5217\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB\uFF08matrix \u306E\u307F\uFF09"
14950
+ drilldown: {
14951
+ label: "Drilldown",
14952
+ helpText: "Click an aggregated row/cell to open the underlying records"
15108
14953
  },
15109
14954
  blocks: {
15110
14955
  label: "\u30D6\u30ED\u30C3\u30AF",
15111
14956
  helpText: "\u8907\u6570\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u7D50\u5408\uFF08joined \u30EC\u30DD\u30FC\u30C8\u306E\u307F\uFF09"
15112
14957
  },
15113
- filter: {
15114
- label: "\u30D5\u30A3\u30EB\u30BF\u30FC",
15115
- helpText: "\u30EC\u30DD\u30FC\u30C8\u30EC\u30D9\u30EB\u306E\u30D5\u30A3\u30EB\u30BF\u30FC"
14958
+ runtimeFilter: {
14959
+ label: "Runtime Filter",
14960
+ helpText: "Render-time scope filter, ANDed at query time"
15116
14961
  },
15117
14962
  chart: {
15118
14963
  label: "\u30C1\u30E3\u30FC\u30C8",
@@ -15128,6 +14973,62 @@ var jaJPMetadataForms = {
15128
14973
  }
15129
14974
  }
15130
14975
  },
14976
+ dataset: {
14977
+ label: "Dataset",
14978
+ description: "Analytics semantic layer \u2014 dimensions & measures",
14979
+ sections: {
14980
+ basics: {
14981
+ label: "Basics",
14982
+ description: "Dataset identity."
14983
+ },
14984
+ source: {
14985
+ label: "Source",
14986
+ description: "The base object, the relationships to join, and the dataset\u2019s intrinsic scope. Joins are derived from the object graph \u2014 pick relationship (lookup / master_detail) names, never write an ON clause."
14987
+ },
14988
+ dimensions: {
14989
+ label: "Dimensions",
14990
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
14991
+ },
14992
+ measures: {
14993
+ label: "Measures",
14994
+ description: "Aggregatable values defined once and referenced by name. A measure is sum/avg/count/\u2026 of a field; a derived measure combines other measures (ratio/sum/difference/product). Measure-scoped filters and derived ops are edited per-row in the dataset designer."
14995
+ }
14996
+ },
14997
+ fields: {
14998
+ name: {
14999
+ label: "Name",
15000
+ helpText: "snake_case unique identifier"
15001
+ },
15002
+ label: {
15003
+ label: "Label",
15004
+ helpText: "Display name"
15005
+ },
15006
+ description: {
15007
+ label: "Description",
15008
+ helpText: "What this dataset measures"
15009
+ },
15010
+ object: {
15011
+ label: "Object",
15012
+ helpText: "Base object \u2014 the FROM"
15013
+ },
15014
+ include: {
15015
+ label: "Include",
15016
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
15017
+ },
15018
+ filter: {
15019
+ label: "Filter",
15020
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
15021
+ },
15022
+ dimensions: {
15023
+ label: "Dimensions",
15024
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
15025
+ },
15026
+ measures: {
15027
+ label: "Measures",
15028
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
15029
+ }
15030
+ }
15031
+ },
15131
15032
  flow: {
15132
15033
  label: "\u30D5\u30ED\u30FC",
15133
15034
  sections: {
@@ -15207,15 +15108,6 @@ var jaJPMetadataForms = {
15207
15108
  translation: {
15208
15109
  label: "\u7FFB\u8A33"
15209
15110
  },
15210
- router: {
15211
- label: "\u30EB\u30FC\u30BF\u30FC"
15212
- },
15213
- function: {
15214
- label: "\u95A2\u6570"
15215
- },
15216
- service: {
15217
- label: "\u30B5\u30FC\u30D3\u30B9"
15218
- },
15219
15111
  email_template: {
15220
15112
  label: "\u30E1\u30FC\u30EB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8",
15221
15113
  sections: {
@@ -15296,6 +15188,14 @@ var jaJPMetadataForms = {
15296
15188
  }
15297
15189
  }
15298
15190
  },
15191
+ doc: {
15192
+ label: "Documentation",
15193
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
15194
+ },
15195
+ book: {
15196
+ label: "Documentation Book",
15197
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
15198
+ },
15299
15199
  permission: {
15300
15200
  label: "\u6A29\u9650\u30BB\u30C3\u30C8",
15301
15201
  sections: {
@@ -15856,6 +15756,70 @@ var esESMetadataForms = {
15856
15756
  datasource: {
15857
15757
  label: "Fuente de datos",
15858
15758
  helpText: 'ID de fuente de datos de destino (valor predeterminado: "default")'
15759
+ },
15760
+ lifecycle: {
15761
+ label: "Lifecycle",
15762
+ helpText: "Data lifecycle contract (ADR-0057): how long rows live and how space is reclaimed. Leave empty for permanent record semantics. Non-record classes require at least one bounding policy (retention, TTL, or rotation)."
15763
+ },
15764
+ "lifecycle.class": {
15765
+ label: "Class",
15766
+ helpText: "Persistence contract for the rows of this object"
15767
+ },
15768
+ "lifecycle.retention": {
15769
+ label: "Retention",
15770
+ helpText: "Age-based retention window"
15771
+ },
15772
+ "lifecycle.retention.maxAge": {
15773
+ label: "Max Age",
15774
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
15775
+ },
15776
+ "lifecycle.ttl": {
15777
+ label: "Ttl",
15778
+ helpText: "Per-row TTL expiry"
15779
+ },
15780
+ "lifecycle.ttl.field": {
15781
+ label: "Field",
15782
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
15783
+ },
15784
+ "lifecycle.ttl.expireAfter": {
15785
+ label: "Expire After",
15786
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
15787
+ },
15788
+ "lifecycle.storage": {
15789
+ label: "Storage",
15790
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
15791
+ },
15792
+ "lifecycle.storage.strategy": {
15793
+ label: "Strategy",
15794
+ helpText: "Storage strategy"
15795
+ },
15796
+ "lifecycle.storage.shards": {
15797
+ label: "Shards",
15798
+ helpText: "Shards retained; total window = shards \xD7 unit"
15799
+ },
15800
+ "lifecycle.storage.unit": {
15801
+ label: "Unit",
15802
+ helpText: "Time width of one shard"
15803
+ },
15804
+ "lifecycle.archive": {
15805
+ label: "Archive",
15806
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
15807
+ },
15808
+ "lifecycle.archive.after": {
15809
+ label: "After",
15810
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
15811
+ },
15812
+ "lifecycle.archive.to": {
15813
+ label: "To",
15814
+ helpText: "Target datasource name for cold storage"
15815
+ },
15816
+ "lifecycle.archive.keep": {
15817
+ label: "Keep",
15818
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
15819
+ },
15820
+ "lifecycle.reclaim": {
15821
+ label: "Reclaim",
15822
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
15859
15823
  }
15860
15824
  }
15861
15825
  },
@@ -15964,10 +15928,6 @@ var esESMetadataForms = {
15964
15928
  label: "Operaciones de resumen",
15965
15929
  helpText: "Configuraci\xF3n de resumen roll-up (para relaciones padre-hijo)"
15966
15930
  },
15967
- cached: {
15968
- label: "En cach\xE9",
15969
- helpText: "Configuraci\xF3n de cach\xE9 para campos calculados"
15970
- },
15971
15931
  columnName: {
15972
15932
  label: "Nombre de columna",
15973
15933
  helpText: "Nombre de columna f\xEDsica en la base de datos (por defecto, el nombre del campo)"
@@ -15995,28 +15955,9 @@ var esESMetadataForms = {
15995
15955
  sortable: {
15996
15956
  label: "Ordenable",
15997
15957
  helpText: "Permite ordenar listas por este campo"
15998
- },
15999
- auditTrail: {
16000
- label: "Rastro de auditor\xEDa",
16001
- helpText: "Registra cambios detallados con usuario y marca temporal"
16002
- },
16003
- trackFeedHistory: {
16004
- label: "Historial de feed",
16005
- helpText: "Muestra cambios en el feed de actividad"
16006
- },
16007
- encryptionConfig: {
16008
- label: "Configuraci\xF3n de cifrado",
16009
- helpText: "Cifrado a nivel de campo (GDPR/HIPAA/PCI-DSS)"
16010
- },
16011
- maskingRule: {
16012
- label: "Regla de enmascaramiento",
16013
- helpText: "Reglas de enmascaramiento de datos para protecci\xF3n de PII"
16014
15958
  }
16015
15959
  }
16016
15960
  },
16017
- trigger: {
16018
- label: "Disparador"
16019
- },
16020
15961
  validation: {
16021
15962
  label: "Regla de validaci\xF3n"
16022
15963
  },
@@ -16093,12 +16034,36 @@ var esESMetadataForms = {
16093
16034
  onError: {
16094
16035
  label: "Al error"
16095
16036
  },
16037
+ timeout: {
16038
+ label: "Timeout",
16039
+ helpText: "Abort the hook after N milliseconds"
16040
+ },
16096
16041
  condition: {
16097
16042
  label: "Condici\xF3n",
16098
16043
  helpText: "F\xF3rmula opcional \u2014 omite el hook cuando eval\xFAa a false"
16044
+ },
16045
+ retryPolicy: {
16046
+ label: "Retry Policy",
16047
+ helpText: "Retry on failure \u2014 most useful for async hooks"
16048
+ },
16049
+ "retryPolicy.maxRetries": {
16050
+ label: "Max Retries",
16051
+ helpText: "Maximum retry attempts"
16052
+ },
16053
+ "retryPolicy.backoffMs": {
16054
+ label: "Backoff Ms",
16055
+ helpText: "Delay between retries (ms)"
16099
16056
  }
16100
16057
  }
16101
16058
  },
16059
+ seed: {
16060
+ label: "Seed Data",
16061
+ description: "Fixture / initialization data applied on publish"
16062
+ },
16063
+ mapping: {
16064
+ label: "Import Mapping",
16065
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
16066
+ },
16102
16067
  view: {
16103
16068
  label: "Vista",
16104
16069
  sections: {
@@ -16270,6 +16235,10 @@ var esESMetadataForms = {
16270
16235
  label: "Dise\xF1o",
16271
16236
  description: "Regiones de p\xE1gina y componentes colocados en ellas."
16272
16237
  },
16238
+ interface: {
16239
+ label: "Interface (list pages)",
16240
+ description: "Interface mode (Airtable parity): the page defines its own data surface directly \u2014 columns, filters, visualizations and toolbar \u2014 no inheriting from a separate view."
16241
+ },
16273
16242
  advanced: {
16274
16243
  label: "Avanzado",
16275
16244
  description: "Activaci\xF3n, audiencia y accesibilidad."
@@ -16312,6 +16281,58 @@ var esESMetadataForms = {
16312
16281
  label: "Regiones",
16313
16282
  helpText: "Regiones de dise\xF1o (header, main, sidebar, footer) con componentes"
16314
16283
  },
16284
+ interfaceConfig: {
16285
+ label: "Interface Config",
16286
+ helpText: "The page IS the view: source picks the object, columns/filterBy are defined directly here; appearance.allowedVisualizations whitelists renderers (one entry = locked); userActions toggles the toolbar."
16287
+ },
16288
+ "interfaceConfig.source": {
16289
+ label: "Source",
16290
+ helpText: "Object this page reads from"
16291
+ },
16292
+ "interfaceConfig.columns": {
16293
+ label: "Columns",
16294
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
16295
+ },
16296
+ "interfaceConfig.filterBy": {
16297
+ label: "Filter By",
16298
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
16299
+ },
16300
+ "interfaceConfig.levels": {
16301
+ label: "Levels",
16302
+ helpText: "Hierarchy levels to display (tree-like sources)"
16303
+ },
16304
+ "interfaceConfig.appearance": {
16305
+ label: "Appearance",
16306
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
16307
+ },
16308
+ "interfaceConfig.userFilters": {
16309
+ label: "User Filters",
16310
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
16311
+ },
16312
+ "interfaceConfig.userActions": {
16313
+ label: "User Actions",
16314
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
16315
+ },
16316
+ "interfaceConfig.addRecord": {
16317
+ label: "Add Record",
16318
+ helpText: "Add-record entry point"
16319
+ },
16320
+ "interfaceConfig.buttons": {
16321
+ label: "Buttons",
16322
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
16323
+ },
16324
+ "interfaceConfig.recordAction": {
16325
+ label: "Record Action",
16326
+ helpText: "How clicking a record opens its detail"
16327
+ },
16328
+ "interfaceConfig.showRecordCount": {
16329
+ label: "Show Record Count",
16330
+ helpText: "Show the record count bar"
16331
+ },
16332
+ "interfaceConfig.allowPrinting": {
16333
+ label: "Allow Printing",
16334
+ helpText: "Allow users to print this page"
16335
+ },
16315
16336
  isDefault: {
16316
16337
  label: "Predeterminado",
16317
16338
  helpText: "Establece como p\xE1gina predeterminada para este tipo de p\xE1gina"
@@ -16560,6 +16581,22 @@ var esESMetadataForms = {
16560
16581
  label: "Cuerpo",
16561
16582
  helpText: "C\xF3digo JavaScript que ejecutar"
16562
16583
  },
16584
+ "body.language": {
16585
+ label: "Language",
16586
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
16587
+ },
16588
+ "body.source": {
16589
+ label: "Source",
16590
+ helpText: "Function body source \u2014 no top-level imports"
16591
+ },
16592
+ "body.capabilities": {
16593
+ label: "Capabilities",
16594
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
16595
+ },
16596
+ "body.timeoutMs": {
16597
+ label: "Timeout Ms",
16598
+ helpText: "Per-invocation timeout (ms)"
16599
+ },
16563
16600
  params: {
16564
16601
  label: "Par\xE1metros",
16565
16602
  helpText: "Par\xE1metros de entrada de usuario (muestra el formulario antes de ejecutar)"
@@ -16600,9 +16637,9 @@ var esESMetadataForms = {
16600
16637
  label: "Acci\xF3n masiva",
16601
16638
  helpText: "Permite aplicar a varios registros seleccionados"
16602
16639
  },
16603
- aiExposed: {
16604
- label: "Expuesto a IA",
16605
- helpText: "Permite que agentes de IA llamen a esta acci\xF3n"
16640
+ ai: {
16641
+ label: "Ai",
16642
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
16606
16643
  },
16607
16644
  recordIdParam: {
16608
16645
  label: "Par\xE1metro de ID de registro",
@@ -16625,13 +16662,9 @@ var esESMetadataForms = {
16625
16662
  label: "Aspectos b\xE1sicos",
16626
16663
  description: "Identidad y fuente de datos."
16627
16664
  },
16628
- columns: {
16629
- label: "Columnas",
16630
- description: "Columnas mostradas en la salida del informe."
16631
- },
16632
- groupings: {
16633
- label: "Agrupaciones",
16634
- description: "C\xF3mo se agrupan las filas (y columnas, para informes matrix)."
16665
+ dataset_binding: {
16666
+ label: "Dataset binding",
16667
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
16635
16668
  },
16636
16669
  joined_blocks: {
16637
16670
  label: "Bloques unidos",
@@ -16657,33 +16690,37 @@ var esESMetadataForms = {
16657
16690
  description: {
16658
16691
  label: "Descripci\xF3n"
16659
16692
  },
16660
- objectName: {
16661
- label: "Nombre de objeto",
16662
- helpText: "Objeto de fuente de datos"
16663
- },
16664
16693
  type: {
16665
16694
  label: "Tipo",
16666
16695
  helpText: "Tipo de informe: tabular/summary/matrix/joined"
16667
16696
  },
16697
+ dataset: {
16698
+ label: "Dataset",
16699
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
16700
+ },
16701
+ values: {
16702
+ label: "Values",
16703
+ helpText: "Measure names (from the dataset) to display"
16704
+ },
16705
+ rows: {
16706
+ label: "Rows",
16707
+ helpText: "Dimension names (from the dataset) to group rows by"
16708
+ },
16668
16709
  columns: {
16669
16710
  label: "Columnas",
16670
16711
  helpText: "Columnas que mostrar en el informe"
16671
16712
  },
16672
- groupingsDown: {
16673
- label: "Agrupaciones verticales",
16674
- helpText: "Niveles de agrupaci\xF3n de filas"
16675
- },
16676
- groupingsAcross: {
16677
- label: "Agrupaciones horizontales",
16678
- helpText: "Niveles de agrupaci\xF3n de columnas (solo matrix)"
16713
+ drilldown: {
16714
+ label: "Drilldown",
16715
+ helpText: "Click an aggregated row/cell to open the underlying records"
16679
16716
  },
16680
16717
  blocks: {
16681
16718
  label: "Bloques",
16682
16719
  helpText: "Une varios objetos (solo informe joined)"
16683
16720
  },
16684
- filter: {
16685
- label: "Filtro",
16686
- helpText: "Filtros a nivel de informe"
16721
+ runtimeFilter: {
16722
+ label: "Runtime Filter",
16723
+ helpText: "Render-time scope filter, ANDed at query time"
16687
16724
  },
16688
16725
  chart: {
16689
16726
  label: "Gr\xE1fico",
@@ -16699,6 +16736,62 @@ var esESMetadataForms = {
16699
16736
  }
16700
16737
  }
16701
16738
  },
16739
+ dataset: {
16740
+ label: "Dataset",
16741
+ description: "Analytics semantic layer \u2014 dimensions & measures",
16742
+ sections: {
16743
+ basics: {
16744
+ label: "Basics",
16745
+ description: "Dataset identity."
16746
+ },
16747
+ source: {
16748
+ label: "Source",
16749
+ description: "The base object, the relationships to join, and the dataset\u2019s intrinsic scope. Joins are derived from the object graph \u2014 pick relationship (lookup / master_detail) names, never write an ON clause."
16750
+ },
16751
+ dimensions: {
16752
+ label: "Dimensions",
16753
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
16754
+ },
16755
+ measures: {
16756
+ label: "Measures",
16757
+ description: "Aggregatable values defined once and referenced by name. A measure is sum/avg/count/\u2026 of a field; a derived measure combines other measures (ratio/sum/difference/product). Measure-scoped filters and derived ops are edited per-row in the dataset designer."
16758
+ }
16759
+ },
16760
+ fields: {
16761
+ name: {
16762
+ label: "Name",
16763
+ helpText: "snake_case unique identifier"
16764
+ },
16765
+ label: {
16766
+ label: "Label",
16767
+ helpText: "Display name"
16768
+ },
16769
+ description: {
16770
+ label: "Description",
16771
+ helpText: "What this dataset measures"
16772
+ },
16773
+ object: {
16774
+ label: "Object",
16775
+ helpText: "Base object \u2014 the FROM"
16776
+ },
16777
+ include: {
16778
+ label: "Include",
16779
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
16780
+ },
16781
+ filter: {
16782
+ label: "Filter",
16783
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
16784
+ },
16785
+ dimensions: {
16786
+ label: "Dimensions",
16787
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
16788
+ },
16789
+ measures: {
16790
+ label: "Measures",
16791
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
16792
+ }
16793
+ }
16794
+ },
16702
16795
  flow: {
16703
16796
  label: "Flujo",
16704
16797
  sections: {
@@ -16778,15 +16871,6 @@ var esESMetadataForms = {
16778
16871
  translation: {
16779
16872
  label: "Traducci\xF3n"
16780
16873
  },
16781
- router: {
16782
- label: "Enrutador"
16783
- },
16784
- function: {
16785
- label: "Funci\xF3n"
16786
- },
16787
- service: {
16788
- label: "Servicio"
16789
- },
16790
16874
  email_template: {
16791
16875
  label: "Plantilla de email",
16792
16876
  sections: {
@@ -16867,6 +16951,14 @@ var esESMetadataForms = {
16867
16951
  }
16868
16952
  }
16869
16953
  },
16954
+ doc: {
16955
+ label: "Documentation",
16956
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
16957
+ },
16958
+ book: {
16959
+ label: "Documentation Book",
16960
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
16961
+ },
16870
16962
  permission: {
16871
16963
  label: "Conjunto de permisos",
16872
16964
  sections: {