@objectstack/platform-objects 13.0.0 → 14.5.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.
Files changed (41) hide show
  1. package/dist/apps/index.d.mts +1 -1
  2. package/dist/apps/index.d.ts +1 -1
  3. package/dist/apps/index.js +525 -1200
  4. package/dist/apps/index.js.map +1 -1
  5. package/dist/apps/index.mjs +525 -1200
  6. package/dist/apps/index.mjs.map +1 -1
  7. package/dist/audit/index.d.mts +262 -10
  8. package/dist/audit/index.d.ts +262 -10
  9. package/dist/audit/index.js +14 -0
  10. package/dist/audit/index.js.map +1 -1
  11. package/dist/audit/index.mjs +14 -0
  12. package/dist/audit/index.mjs.map +1 -1
  13. package/dist/identity/index.d.mts +1403 -236
  14. package/dist/identity/index.d.ts +1403 -236
  15. package/dist/identity/index.js +177 -17
  16. package/dist/identity/index.js.map +1 -1
  17. package/dist/identity/index.mjs +177 -17
  18. package/dist/identity/index.mjs.map +1 -1
  19. package/dist/index.d.mts +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +1878 -1736
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +1878 -1737
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/metadata-translations/index.js +1020 -488
  26. package/dist/metadata-translations/index.js.map +1 -1
  27. package/dist/metadata-translations/index.mjs +1020 -488
  28. package/dist/metadata-translations/index.mjs.map +1 -1
  29. package/dist/pages/index.d.mts +34 -3
  30. package/dist/pages/index.d.ts +34 -3
  31. package/dist/pages/index.js +111 -0
  32. package/dist/pages/index.js.map +1 -1
  33. package/dist/pages/index.mjs +111 -1
  34. package/dist/pages/index.mjs.map +1 -1
  35. package/dist/plugin.js +1564 -1707
  36. package/dist/plugin.js.map +1 -1
  37. package/dist/plugin.mjs +1564 -1707
  38. package/dist/plugin.mjs.map +1 -1
  39. package/dist/system/index.d.mts +75 -3
  40. package/dist/system/index.d.ts +75 -3
  41. package/package.json +3 -3
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
  };
@@ -2623,7 +2454,7 @@ var en = {
2623
2454
  nav_organizations: { label: "Organizations" },
2624
2455
  nav_invitations: { label: "Invitations" },
2625
2456
  // Access Control
2626
- nav_roles: { label: "Roles" },
2457
+ nav_positions: { label: "Positions" },
2627
2458
  nav_permission_sets: { label: "Permission Sets" },
2628
2459
  nav_sharing_rules: { label: "Sharing Rules" },
2629
2460
  nav_record_shares: { label: "Record Shares" },
@@ -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
  };
@@ -5366,12 +5028,13 @@ var zhCN = {
5366
5028
  nav_teams: { label: "\u56E2\u961F" },
5367
5029
  nav_organizations: { label: "\u7EC4\u7EC7" },
5368
5030
  nav_invitations: { label: "\u9080\u8BF7" },
5369
- nav_roles: { label: "\u89D2\u8272" },
5031
+ nav_positions: { label: "\u5C97\u4F4D" },
5370
5032
  nav_capabilities: { label: "\u80FD\u529B" },
5371
5033
  nav_permission_sets: { label: "\u6743\u9650\u96C6" },
5372
5034
  nav_sharing_rules: { label: "\u5171\u4EAB\u89C4\u5219" },
5373
5035
  nav_record_shares: { label: "\u8BB0\u5F55\u5171\u4EAB" },
5374
5036
  nav_api_keys: { label: "API \u5BC6\u94A5" },
5037
+ nav_connect_agent: { label: "\u8FDE\u63A5\u667A\u80FD\u4F53" },
5375
5038
  nav_approval_processes: { label: "\u5BA1\u6279\u6D41\u7A0B" },
5376
5039
  nav_approval_requests: { label: "\u5BA1\u6279\u7533\u8BF7" },
5377
5040
  nav_approval_actions: { label: "\u5BA1\u6279\u5386\u53F2" },
@@ -5490,14 +5153,64 @@ var jaJPObjects = {
5490
5153
  label: "\u5229\u7528\u505C\u6B62\u671F\u9650",
5491
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"
5492
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
+ },
5493
5196
  image: {
5494
5197
  label: "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u753B\u50CF"
5495
5198
  },
5496
5199
  manager_id: {
5497
- 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)."
5498
5202
  },
5499
5203
  primary_business_unit_id: {
5500
- 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
+ }
5501
5214
  },
5502
5215
  id: {
5503
5216
  label: "\u30E6\u30FC\u30B6\u30FC ID"
@@ -5540,6 +5253,14 @@ var jaJPObjects = {
5540
5253
  label: "\u5229\u7528\u505C\u6B62\u3092\u89E3\u9664",
5541
5254
  successMessage: "\u30E6\u30FC\u30B6\u30FC\u306E\u5229\u7528\u505C\u6B62\u3092\u89E3\u9664\u3057\u307E\u3057\u305F"
5542
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
+ },
5543
5264
  set_user_password: {
5544
5265
  label: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8A2D\u5B9A",
5545
5266
  successMessage: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u66F4\u65B0\u3057\u307E\u3057\u305F"
@@ -5601,6 +5322,18 @@ var jaJPObjects = {
5601
5322
  expires_at: {
5602
5323
  label: "\u6709\u52B9\u671F\u9650"
5603
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
+ },
5604
5337
  active_organization_id: {
5605
5338
  label: "\u30A2\u30AF\u30C6\u30A3\u30D6\u7D44\u7E54"
5606
5339
  },
@@ -5699,6 +5432,10 @@ var jaJPObjects = {
5699
5432
  password: {
5700
5433
  label: "\u30D1\u30B9\u30EF\u30FC\u30C9\u30CF\u30C3\u30B7\u30E5",
5701
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."
5702
5439
  }
5703
5440
  },
5704
5441
  _views: {
@@ -5769,6 +5506,10 @@ var jaJPObjects = {
5769
5506
  label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
5770
5507
  help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u7D44\u7E54\u30E1\u30BF\u30C7\u30FC\u30BF"
5771
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
+ },
5772
5513
  id: {
5773
5514
  label: "\u7D44\u7E54 ID"
5774
5515
  },
@@ -6093,6 +5834,9 @@ var jaJPObjects = {
6093
5834
  }
6094
5835
  },
6095
5836
  _views: {
5837
+ org_chart: {
5838
+ label: "Org Chart"
5839
+ },
6096
5840
  active: {
6097
5841
  label: "\u6709\u52B9"
6098
5842
  },
@@ -6674,263 +6418,57 @@ var jaJPObjects = {
6674
6418
  }
6675
6419
  }
6676
6420
  },
6677
- sys_audit_log: {
6678
- label: "\u76E3\u67FB\u30ED\u30B0",
6679
- pluralLabel: "\u76E3\u67FB\u30ED\u30B0",
6680
- 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",
6681
6425
  fields: {
6682
- created_at: {
6683
- label: "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7"
6426
+ id: {
6427
+ label: "\u901A\u77E5 ID"
6684
6428
  },
6685
- action: {
6686
- label: "\u30A2\u30AF\u30B7\u30E7\u30F3",
6687
- help: "\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\uFF08snake_case\uFF09",
6688
- options: {
6689
- create: "\u4F5C\u6210",
6690
- update: "\u66F4\u65B0",
6691
- delete: "\u524A\u9664",
6692
- restore: "\u5FA9\u5143",
6693
- login: "\u30ED\u30B0\u30A4\u30F3",
6694
- logout: "\u30ED\u30B0\u30A2\u30A6\u30C8",
6695
- permission_change: "\u6A29\u9650\u5909\u66F4",
6696
- config_change: "\u69CB\u6210\u5909\u66F4",
6697
- export: "\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",
6698
- import: "\u30A4\u30F3\u30DD\u30FC\u30C8"
6699
- }
6700
- },
6701
- user_id: {
6702
- label: "\u64CD\u4F5C\u8005",
6703
- 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"
6704
- },
6705
- object_name: {
6706
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6707
- help: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08\u4F8B: sys_user\u3001project_task\uFF09"
6708
- },
6709
- record_id: {
6710
- label: "\u30EC\u30B3\u30FC\u30C9 ID",
6711
- help: "\u5F71\u97FF\u3092\u53D7\u3051\u305F\u30EC\u30B3\u30FC\u30C9\u306E ID"
6712
- },
6713
- old_value: {
6714
- label: "\u5909\u66F4\u524D\u306E\u5024",
6715
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u4EE5\u524D\u306E\u72B6\u614B"
6716
- },
6717
- new_value: {
6718
- label: "\u5909\u66F4\u5F8C\u306E\u5024",
6719
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u65B0\u3057\u3044\u72B6\u614B"
6720
- },
6721
- ip_address: {
6722
- label: "IP \u30A2\u30C9\u30EC\u30B9"
6723
- },
6724
- user_agent: {
6725
- label: "\u30E6\u30FC\u30B6\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8"
6726
- },
6727
- tenant_id: {
6728
- label: "\u30C6\u30CA\u30F3\u30C8",
6729
- help: "\u30DE\u30EB\u30C1\u30C6\u30CA\u30F3\u30C8\u5206\u96E2\u306E\u305F\u3081\u306E\u30C6\u30CA\u30F3\u30C8\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6730
- },
6731
- metadata: {
6732
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6733
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u8FFD\u52A0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6734
- },
6735
- id: {
6736
- label: "\u76E3\u67FB\u30ED\u30B0 ID"
6737
- }
6738
- },
6739
- _views: {
6740
- recent: {
6741
- label: "\u6700\u8FD1"
6742
- },
6743
- writes_only: {
6744
- label: "\u66F8\u304D\u8FBC\u307F"
6745
- },
6746
- auth_events: {
6747
- label: "\u8A8D\u8A3C"
6748
- },
6749
- config_changes: {
6750
- label: "\u69CB\u6210\u5909\u66F4"
6751
- },
6752
- all_events: {
6753
- label: "\u3059\u3079\u3066"
6754
- }
6755
- }
6756
- },
6757
- sys_presence: {
6758
- label: "\u5728\u5E2D\u72B6\u6CC1",
6759
- pluralLabel: "\u5728\u5E2D\u72B6\u6CC1",
6760
- 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",
6761
- fields: {
6762
- id: {
6763
- label: "\u5728\u5E2D ID"
6764
- },
6765
- created_at: {
6766
- label: "\u4F5C\u6210\u65E5\u6642"
6767
- },
6768
- updated_at: {
6769
- label: "\u66F4\u65B0\u65E5\u6642"
6770
- },
6771
- user_id: {
6772
- label: "\u30E6\u30FC\u30B6\u30FC"
6773
- },
6774
- session_id: {
6775
- label: "\u30BB\u30C3\u30B7\u30E7\u30F3"
6776
- },
6777
- status: {
6778
- label: "\u30B9\u30C6\u30FC\u30BF\u30B9",
6779
- options: {
6780
- online: "\u30AA\u30F3\u30E9\u30A4\u30F3",
6781
- away: "\u96E2\u5E2D\u4E2D",
6782
- busy: "\u53D6\u308A\u8FBC\u307F\u4E2D",
6783
- offline: "\u30AA\u30D5\u30E9\u30A4\u30F3"
6784
- }
6785
- },
6786
- last_seen: {
6787
- label: "\u6700\u7D42\u78BA\u8A8D\u65E5\u6642"
6429
+ topic: {
6430
+ label: "Topic",
6431
+ help: "Notification topic, e.g. task.assigned, collab.mention"
6788
6432
  },
6789
- current_location: {
6790
- label: "\u73FE\u5728\u5730"
6433
+ payload: {
6434
+ label: "Payload",
6435
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
6791
6436
  },
6792
- device: {
6793
- label: "\u30C7\u30D0\u30A4\u30B9",
6437
+ severity: {
6438
+ label: "Severity",
6439
+ help: "Severity hint for rendering / filtering",
6794
6440
  options: {
6795
- desktop: "\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7",
6796
- mobile: "\u30E2\u30D0\u30A4\u30EB",
6797
- tablet: "\u30BF\u30D6\u30EC\u30C3\u30C8",
6798
- other: "\u305D\u306E\u4ED6"
6441
+ info: "info",
6442
+ warning: "warning",
6443
+ critical: "critical"
6799
6444
  }
6800
6445
  },
6801
- custom_status: {
6802
- label: "\u30AB\u30B9\u30BF\u30E0\u30B9\u30C6\u30FC\u30BF\u30B9"
6803
- },
6804
- metadata: {
6805
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6806
- 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"
6807
- }
6808
- }
6809
- },
6810
- sys_activity: {
6811
- label: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
6812
- pluralLabel: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
6813
- 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",
6814
- fields: {
6815
- id: {
6816
- label: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 ID"
6817
- },
6818
- timestamp: {
6819
- 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"
6820
6449
  },
6821
- type: {
6822
- label: "\u30BF\u30A4\u30D7",
6823
- options: {
6824
- created: "\u4F5C\u6210",
6825
- updated: "\u66F4\u65B0",
6826
- deleted: "\u524A\u9664",
6827
- commented: "\u30B3\u30E1\u30F3\u30C8",
6828
- mentioned: "\u30E1\u30F3\u30B7\u30E7\u30F3",
6829
- shared: "\u5171\u6709",
6830
- assigned: "\u5272\u308A\u5F53\u3066",
6831
- completed: "\u5B8C\u4E86",
6832
- login: "\u30ED\u30B0\u30A4\u30F3",
6833
- logout: "\u30ED\u30B0\u30A2\u30A6\u30C8",
6834
- system: "\u30B7\u30B9\u30C6\u30E0"
6835
- }
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"
6836
6453
  },
6837
- summary: {
6838
- label: "\u30B5\u30DE\u30EA\u30FC",
6839
- 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"
6840
6457
  },
6841
6458
  actor_id: {
6842
- label: "\u64CD\u4F5C\u8005"
6843
- },
6844
- actor_name: {
6845
- label: "\u64CD\u4F5C\u8005\u540D"
6846
- },
6847
- actor_avatar_url: {
6848
- label: "\u64CD\u4F5C\u8005\u30A2\u30D0\u30BF\u30FC"
6849
- },
6850
- object_name: {
6851
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6852
- help: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u77ED\u3044\u540D\u524D\uFF08\u4F8B: account\u3001sys_user\uFF09"
6853
- },
6854
- record_id: {
6855
- label: "\u30EC\u30B3\u30FC\u30C9 ID"
6856
- },
6857
- record_label: {
6858
- label: "\u30EC\u30B3\u30FC\u30C9\u8868\u793A\u540D",
6859
- help: "\u66F8\u304D\u8FBC\u307F\u6642\u70B9\u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u8868\u793A\u540D"
6860
- },
6861
- url: {
6862
- label: "URL",
6863
- 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"
6864
- },
6865
- environment_id: {
6866
- label: "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",
6867
- 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"
6868
- },
6869
- metadata: {
6870
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6871
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u8FFD\u52A0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6872
- }
6873
- }
6874
- },
6875
- sys_comment: {
6876
- label: "\u30B3\u30E1\u30F3\u30C8",
6877
- pluralLabel: "\u30B3\u30E1\u30F3\u30C8",
6878
- 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",
6879
- fields: {
6880
- id: {
6881
- label: "\u30B3\u30E1\u30F3\u30C8 ID"
6882
- },
6883
- thread_id: {
6884
- label: "\u30B9\u30EC\u30C3\u30C9",
6885
- help: "\u30B9\u30EC\u30C3\u30C9\u8B58\u5225\u5B50 \u2014 \u901A\u5E38\u306F `{object}:{record_id}`\uFF08\u4F8B: `sys_user:abc123`\uFF09"
6886
- },
6887
- parent_id: {
6888
- label: "\u89AA\u30B3\u30E1\u30F3\u30C8",
6889
- help: "\u30CD\u30B9\u30C8\u3057\u305F\u8FD4\u4FE1\u7528\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u89AA\u30B3\u30E1\u30F3\u30C8"
6890
- },
6891
- reply_count: {
6892
- label: "\u8FD4\u4FE1\u6570"
6893
- },
6894
- author_id: {
6895
- label: "\u6295\u7A3F\u8005"
6896
- },
6897
- author_name: {
6898
- label: "\u6295\u7A3F\u8005\u540D"
6899
- },
6900
- author_avatar_url: {
6901
- label: "\u6295\u7A3F\u8005\u30A2\u30D0\u30BF\u30FC"
6902
- },
6903
- body: {
6904
- label: "\u672C\u6587",
6905
- help: "\u30B3\u30E1\u30F3\u30C8\u30C6\u30AD\u30B9\u30C8\uFF08Markdown \u5BFE\u5FDC\uFF09"
6906
- },
6907
- mentions: {
6908
- label: "\u30E1\u30F3\u30B7\u30E7\u30F3",
6909
- help: "@\u30E1\u30F3\u30B7\u30E7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E JSON \u914D\u5217"
6910
- },
6911
- reactions: {
6912
- label: "\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3",
6913
- help: "\u7D75\u6587\u5B57\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E JSON \u914D\u5217"
6914
- },
6915
- is_edited: {
6916
- label: "\u7DE8\u96C6\u6E08\u307F"
6917
- },
6918
- edited_at: {
6919
- label: "\u7DE8\u96C6\u65E5\u6642"
6920
- },
6921
- visibility: {
6922
- label: "\u516C\u958B\u7BC4\u56F2",
6923
- options: {
6924
- public: "\u516C\u958B",
6925
- internal: "\u5185\u90E8",
6926
- private: "\u975E\u516C\u958B"
6927
- }
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"
6928
6461
  },
6929
6462
  created_at: {
6930
6463
  label: "\u4F5C\u6210\u65E5\u6642"
6464
+ }
6465
+ },
6466
+ _views: {
6467
+ recent: {
6468
+ label: "Recent"
6931
6469
  },
6932
- updated_at: {
6933
- label: "\u66F4\u65B0\u65E5\u6642"
6470
+ by_topic: {
6471
+ label: "By Topic"
6934
6472
  }
6935
6473
  }
6936
6474
  },
@@ -6995,60 +6533,6 @@ var jaJPObjects = {
6995
6533
  }
6996
6534
  }
6997
6535
  },
6998
- sys_notification: {
6999
- label: "\u901A\u77E5",
7000
- pluralLabel: "\u901A\u77E5",
7001
- description: "\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u901A\u77E5\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u30A8\u30F3\u30C8\u30EA",
7002
- fields: {
7003
- id: {
7004
- label: "\u901A\u77E5 ID"
7005
- },
7006
- topic: {
7007
- label: "Topic",
7008
- help: "Notification topic, e.g. task.assigned, collab.mention"
7009
- },
7010
- payload: {
7011
- label: "Payload",
7012
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
7013
- },
7014
- severity: {
7015
- label: "Severity",
7016
- help: "Severity hint for rendering / filtering",
7017
- options: {
7018
- info: "info",
7019
- warning: "warning",
7020
- critical: "critical"
7021
- }
7022
- },
7023
- dedup_key: {
7024
- label: "Dedup Key",
7025
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
7026
- },
7027
- source_object: {
7028
- label: "\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
7029
- help: "\u95A2\u9023\u30EC\u30B3\u30FC\u30C9\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\uFF08\u4F8B: lead\u3001opportunity\uFF09"
7030
- },
7031
- source_id: {
7032
- label: "\u30BD\u30FC\u30B9\u30EC\u30B3\u30FC\u30C9",
7033
- help: "source_object \u5185\u306E\u30EC\u30B3\u30FC\u30C9 ID"
7034
- },
7035
- actor_id: {
7036
- label: "\u64CD\u4F5C\u8005",
7037
- 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"
7038
- },
7039
- created_at: {
7040
- label: "\u4F5C\u6210\u65E5\u6642"
7041
- }
7042
- },
7043
- _views: {
7044
- recent: {
7045
- label: "Recent"
7046
- },
7047
- by_topic: {
7048
- label: "By Topic"
7049
- }
7050
- }
7051
- },
7052
6536
  sys_email: {
7053
6537
  label: "\u30E1\u30FC\u30EB",
7054
6538
  pluralLabel: "\u30E1\u30FC\u30EB",
@@ -7953,6 +7437,11 @@ var jaJPObjects = {
7953
7437
  label: "\u6697\u53F7\u6587",
7954
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"
7955
7439
  }
7440
+ },
7441
+ _views: {
7442
+ all: {
7443
+ label: "All Secrets"
7444
+ }
7956
7445
  }
7957
7446
  },
7958
7447
  sys_setting_audit: {
@@ -8028,6 +7517,11 @@ var jaJPObjects = {
8028
7517
  label: "\u30EA\u30AF\u30A8\u30B9\u30C8 ID",
8029
7518
  help: "sys_audit_log / \u30C8\u30EC\u30FC\u30B7\u30F3\u30B0\u3068\u306E\u76F8\u95A2\u7528\u3002"
8030
7519
  }
7520
+ },
7521
+ _views: {
7522
+ recent: {
7523
+ label: "Recent"
7524
+ }
8031
7525
  }
8032
7526
  }
8033
7527
  };
@@ -8075,7 +7569,7 @@ var jaJP = {
8075
7569
  nav_teams: { label: "\u30C1\u30FC\u30E0" },
8076
7570
  nav_organizations: { label: "\u7D44\u7E54" },
8077
7571
  nav_invitations: { label: "\u62DB\u5F85" },
8078
- nav_roles: { label: "\u30ED\u30FC\u30EB" },
7572
+ nav_positions: { label: "\u30DD\u30B8\u30B7\u30E7\u30F3" },
8079
7573
  nav_permission_sets: { label: "\u6A29\u9650\u30BB\u30C3\u30C8" },
8080
7574
  nav_sharing_rules: { label: "\u5171\u6709\u30EB\u30FC\u30EB" },
8081
7575
  nav_record_shares: { label: "\u30EC\u30B3\u30FC\u30C9\u5171\u6709" },
@@ -8197,14 +7691,64 @@ var esESObjects = {
8197
7691
  label: "El bloqueo caduca el",
8198
7692
  help: "Si se establece, el bloqueo se elimina autom\xE1ticamente en ese momento."
8199
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
+ },
8200
7734
  image: {
8201
7735
  label: "Imagen de perfil"
8202
7736
  },
8203
7737
  manager_id: {
8204
- 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)."
8205
7740
  },
8206
7741
  primary_business_unit_id: {
8207
- 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
+ }
8208
7752
  },
8209
7753
  id: {
8210
7754
  label: "ID de usuario"
@@ -8247,6 +7791,14 @@ var esESObjects = {
8247
7791
  label: "Desbloquear usuario",
8248
7792
  successMessage: "Usuario desbloqueado"
8249
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
+ },
8250
7802
  set_user_password: {
8251
7803
  label: "Establecer contrase\xF1a",
8252
7804
  successMessage: "Contrase\xF1a actualizada"
@@ -8308,6 +7860,18 @@ var esESObjects = {
8308
7860
  expires_at: {
8309
7861
  label: "Caduca el"
8310
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
+ },
8311
7875
  active_organization_id: {
8312
7876
  label: "Organizaci\xF3n activa"
8313
7877
  },
@@ -8406,6 +7970,10 @@ var esESObjects = {
8406
7970
  password: {
8407
7971
  label: "Hash de la contrase\xF1a",
8408
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."
8409
7977
  }
8410
7978
  },
8411
7979
  _views: {
@@ -8476,6 +8044,10 @@ var esESObjects = {
8476
8044
  label: "Metadatos",
8477
8045
  help: "Metadatos de la organizaci\xF3n serializados en JSON."
8478
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
+ },
8479
8051
  id: {
8480
8052
  label: "ID de organizaci\xF3n"
8481
8053
  },
@@ -8800,6 +8372,9 @@ var esESObjects = {
8800
8372
  }
8801
8373
  },
8802
8374
  _views: {
8375
+ org_chart: {
8376
+ label: "Org Chart"
8377
+ },
8803
8378
  active: {
8804
8379
  label: "Activo"
8805
8380
  },
@@ -9381,263 +8956,57 @@ var esESObjects = {
9381
8956
  }
9382
8957
  }
9383
8958
  },
9384
- sys_audit_log: {
9385
- label: "Registro de auditor\xEDa",
9386
- pluralLabel: "Registros de auditor\xEDa",
9387
- description: "Registro de auditor\xEDa inmutable para eventos de la plataforma",
8959
+ sys_notification: {
8960
+ label: "Notificaci\xF3n",
8961
+ pluralLabel: "Notificaciones",
8962
+ description: "Entradas del buz\xF3n de notificaciones por usuario",
9388
8963
  fields: {
9389
- created_at: {
9390
- label: "Marca temporal"
8964
+ id: {
8965
+ label: "ID de notificaci\xF3n"
9391
8966
  },
9392
- action: {
9393
- label: "Acci\xF3n",
9394
- help: "Tipo de acci\xF3n (snake_case).",
8967
+ topic: {
8968
+ label: "Topic",
8969
+ help: "Notification topic, e.g. task.assigned, collab.mention"
8970
+ },
8971
+ payload: {
8972
+ label: "Payload",
8973
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
8974
+ },
8975
+ severity: {
8976
+ label: "Severity",
8977
+ help: "Severity hint for rendering / filtering",
9395
8978
  options: {
9396
- create: "Crear",
9397
- update: "Actualizar",
9398
- delete: "Eliminar",
9399
- restore: "Restaurar",
9400
- login: "Inicio de sesi\xF3n",
9401
- logout: "Cierre de sesi\xF3n",
9402
- permission_change: "Cambio de permisos",
9403
- config_change: "Cambio de configuraci\xF3n",
9404
- export: "Exportar",
9405
- import: "Importar"
8979
+ info: "info",
8980
+ warning: "warning",
8981
+ critical: "critical"
9406
8982
  }
9407
8983
  },
9408
- user_id: {
9409
- label: "Actor",
9410
- help: "Usuario que realiz\xF3 la acci\xF3n (null para acciones del sistema)."
9411
- },
9412
- object_name: {
9413
- label: "Objeto",
9414
- help: "Objeto de destino (p. ej. sys_user, project_task)."
9415
- },
9416
- record_id: {
9417
- label: "ID de registro",
9418
- help: "ID del registro afectado."
9419
- },
9420
- old_value: {
9421
- label: "Valor anterior",
9422
- help: "Estado anterior serializado en JSON."
9423
- },
9424
- new_value: {
9425
- label: "Valor nuevo",
9426
- help: "Estado nuevo serializado en JSON."
9427
- },
9428
- ip_address: {
9429
- label: "Direcci\xF3n IP"
8984
+ dedup_key: {
8985
+ label: "Dedup Key",
8986
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
9430
8987
  },
9431
- user_agent: {
9432
- label: "Agente de usuario"
8988
+ source_object: {
8989
+ label: "Objeto de origen",
8990
+ help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
9433
8991
  },
9434
- tenant_id: {
9435
- label: "Inquilino",
9436
- help: "Contexto del tenant para el aislamiento multi-tenant."
8992
+ source_id: {
8993
+ label: "Registro de origen",
8994
+ help: "ID del registro dentro de source_object."
9437
8995
  },
9438
- metadata: {
9439
- label: "Metadatos",
9440
- help: "Contexto adicional serializado en JSON."
8996
+ actor_id: {
8997
+ label: "Actor",
8998
+ help: "Usuario que provoc\xF3 la notificaci\xF3n (quien menciona, quien asigna)."
9441
8999
  },
9442
- id: {
9443
- label: "ID de registro de auditor\xEDa"
9000
+ created_at: {
9001
+ label: "Creado el"
9444
9002
  }
9445
9003
  },
9446
9004
  _views: {
9447
9005
  recent: {
9448
- label: "Recientes"
9449
- },
9450
- writes_only: {
9451
- label: "Escrituras"
9452
- },
9453
- auth_events: {
9454
- label: "Autenticaci\xF3n"
9455
- },
9456
- config_changes: {
9457
- label: "Configuraci\xF3n"
9458
- },
9459
- all_events: {
9460
- label: "Todos"
9461
- }
9462
- }
9463
- },
9464
- sys_presence: {
9465
- label: "Presencia",
9466
- pluralLabel: "Presencias",
9467
- description: "Seguimiento en tiempo real de presencia y actividad de usuarios",
9468
- fields: {
9469
- id: {
9470
- label: "ID de presencia"
9471
- },
9472
- created_at: {
9473
- label: "Creado el"
9474
- },
9475
- updated_at: {
9476
- label: "Actualizado el"
9477
- },
9478
- user_id: {
9479
- label: "Usuario"
9480
- },
9481
- session_id: {
9482
- label: "Sesi\xF3n"
9483
- },
9484
- status: {
9485
- label: "Estado",
9486
- options: {
9487
- online: "En l\xEDnea",
9488
- away: "Ausente",
9489
- busy: "Ocupado",
9490
- offline: "Desconectado"
9491
- }
9492
- },
9493
- last_seen: {
9494
- label: "Visto por \xFAltima vez"
9495
- },
9496
- current_location: {
9497
- label: "Ubicaci\xF3n actual"
9498
- },
9499
- device: {
9500
- label: "Dispositivo",
9501
- options: {
9502
- desktop: "Escritorio",
9503
- mobile: "M\xF3vil",
9504
- tablet: "Tableta",
9505
- other: "Otro"
9506
- }
9507
- },
9508
- custom_status: {
9509
- label: "Estado personalizado"
9510
- },
9511
- metadata: {
9512
- label: "Metadatos",
9513
- help: "Metadatos JSON arbitrarios asociados al estado de presencia (coincide con PresenceStateSchema.metadata)."
9514
- }
9515
- }
9516
- },
9517
- sys_activity: {
9518
- label: "Actividad",
9519
- pluralLabel: "Actividades",
9520
- description: "Entradas recientes del flujo de actividad (ligeras y desnormalizadas).",
9521
- fields: {
9522
- id: {
9523
- label: "ID de actividad"
9524
- },
9525
- timestamp: {
9526
- label: "Marca temporal"
9527
- },
9528
- type: {
9529
- label: "Tipo",
9530
- options: {
9531
- created: "Creado",
9532
- updated: "Actualizado",
9533
- deleted: "Eliminado",
9534
- commented: "Comentado",
9535
- mentioned: "Mencionado",
9536
- shared: "Compartido",
9537
- assigned: "Asignado",
9538
- completed: "Completado",
9539
- login: "Inicio de sesi\xF3n",
9540
- logout: "Cierre de sesi\xF3n",
9541
- system: "Sistema"
9542
- }
9543
- },
9544
- summary: {
9545
- label: "Resumen",
9546
- help: "Resumen legible de una l\xEDnea."
9547
- },
9548
- actor_id: {
9549
- label: "Actor"
9550
- },
9551
- actor_name: {
9552
- label: "Nombre del actor"
9553
- },
9554
- actor_avatar_url: {
9555
- label: "Avatar del actor"
9556
- },
9557
- object_name: {
9558
- label: "Objeto",
9559
- help: "Nombre corto del objeto de destino (p. ej. account, sys_user)."
9560
- },
9561
- record_id: {
9562
- label: "ID de registro"
9563
- },
9564
- record_label: {
9565
- label: "Nombre visible del registro",
9566
- help: "Nombre visible del registro de destino en el momento de escritura."
9567
- },
9568
- url: {
9569
- label: "URL",
9570
- help: "Enlace profundo opcional al destino de la actividad."
9571
- },
9572
- environment_id: {
9573
- label: "Proyecto",
9574
- help: "Contexto del proyecto (implementaciones multiproyecto)."
9575
- },
9576
- metadata: {
9577
- label: "Metadatos",
9578
- help: "Contexto adicional serializado en JSON."
9579
- }
9580
- }
9581
- },
9582
- sys_comment: {
9583
- label: "Comentario",
9584
- pluralLabel: "Comentarios",
9585
- description: "Comentarios en hilo adjuntos a registros mediante thread_id.",
9586
- fields: {
9587
- id: {
9588
- label: "ID de comentario"
9589
- },
9590
- thread_id: {
9591
- label: "Hilo",
9592
- help: "Identificador del hilo; por convenci\xF3n `{object}:{record_id}` (p. ej. `sys_user:abc123`)."
9593
- },
9594
- parent_id: {
9595
- label: "Comentario principal",
9596
- help: "Comentario principal opcional para respuestas anidadas."
9597
- },
9598
- reply_count: {
9599
- label: "N\xFAmero de respuestas"
9600
- },
9601
- author_id: {
9602
- label: "Autor"
9603
- },
9604
- author_name: {
9605
- label: "Nombre del autor"
9606
- },
9607
- author_avatar_url: {
9608
- label: "Avatar del autor"
9609
- },
9610
- body: {
9611
- label: "Contenido",
9612
- help: "Texto del comentario (compatible con Markdown)."
9613
- },
9614
- mentions: {
9615
- label: "Menciones",
9616
- help: "Matriz JSON de objetos @mention."
9617
- },
9618
- reactions: {
9619
- label: "Reacciones",
9620
- help: "Matriz JSON de objetos de reacci\xF3n emoji."
9621
- },
9622
- is_edited: {
9623
- label: "Editado"
9624
- },
9625
- edited_at: {
9626
- label: "Editado el"
9627
- },
9628
- visibility: {
9629
- label: "Visibilidad",
9630
- options: {
9631
- public: "P\xFAblico",
9632
- internal: "Interno",
9633
- private: "Privado"
9634
- }
9635
- },
9636
- created_at: {
9637
- label: "Creado el"
9006
+ label: "Recent"
9638
9007
  },
9639
- updated_at: {
9640
- label: "Actualizado el"
9008
+ by_topic: {
9009
+ label: "By Topic"
9641
9010
  }
9642
9011
  }
9643
9012
  },
@@ -9702,60 +9071,6 @@ var esESObjects = {
9702
9071
  }
9703
9072
  }
9704
9073
  },
9705
- sys_notification: {
9706
- label: "Notificaci\xF3n",
9707
- pluralLabel: "Notificaciones",
9708
- description: "Entradas del buz\xF3n de notificaciones por usuario",
9709
- fields: {
9710
- id: {
9711
- label: "ID de notificaci\xF3n"
9712
- },
9713
- topic: {
9714
- label: "Topic",
9715
- help: "Notification topic, e.g. task.assigned, collab.mention"
9716
- },
9717
- payload: {
9718
- label: "Payload",
9719
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
9720
- },
9721
- severity: {
9722
- label: "Severity",
9723
- help: "Severity hint for rendering / filtering",
9724
- options: {
9725
- info: "info",
9726
- warning: "warning",
9727
- critical: "critical"
9728
- }
9729
- },
9730
- dedup_key: {
9731
- label: "Dedup Key",
9732
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
9733
- },
9734
- source_object: {
9735
- label: "Objeto de origen",
9736
- help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
9737
- },
9738
- source_id: {
9739
- label: "Registro de origen",
9740
- help: "ID del registro dentro de source_object."
9741
- },
9742
- actor_id: {
9743
- label: "Actor",
9744
- help: "Usuario que provoc\xF3 la notificaci\xF3n (quien menciona, quien asigna)."
9745
- },
9746
- created_at: {
9747
- label: "Creado el"
9748
- }
9749
- },
9750
- _views: {
9751
- recent: {
9752
- label: "Recent"
9753
- },
9754
- by_topic: {
9755
- label: "By Topic"
9756
- }
9757
- }
9758
- },
9759
9074
  sys_email: {
9760
9075
  label: "Correo",
9761
9076
  pluralLabel: "Correos",
@@ -10660,6 +9975,11 @@ var esESObjects = {
10660
9975
  label: "Texto cifrado",
10661
9976
  help: "Blob de texto cifrado codificado por el proveedor (base64 / JSON). La implementaci\xF3n lo define; solo el ICryptoProvider correspondiente puede leerlo."
10662
9977
  }
9978
+ },
9979
+ _views: {
9980
+ all: {
9981
+ label: "All Secrets"
9982
+ }
10663
9983
  }
10664
9984
  },
10665
9985
  sys_setting_audit: {
@@ -10735,6 +10055,11 @@ var esESObjects = {
10735
10055
  label: "ID de solicitud",
10736
10056
  help: "Se correlaciona con sys_audit_log / tracing."
10737
10057
  }
10058
+ },
10059
+ _views: {
10060
+ recent: {
10061
+ label: "Recent"
10062
+ }
10738
10063
  }
10739
10064
  }
10740
10065
  };
@@ -10782,7 +10107,7 @@ var esES = {
10782
10107
  nav_teams: { label: "Equipos" },
10783
10108
  nav_organizations: { label: "Organizaciones" },
10784
10109
  nav_invitations: { label: "Invitaciones" },
10785
- nav_roles: { label: "Roles" },
10110
+ nav_positions: { label: "Posiciones" },
10786
10111
  nav_permission_sets: { label: "Conjuntos de Permisos" },
10787
10112
  nav_sharing_rules: { label: "Reglas de Compartici\xF3n" },
10788
10113
  nav_record_shares: { label: "Registros Compartidos" },
@@ -11142,6 +10467,70 @@ var enMetadataForms = {
11142
10467
  datasource: {
11143
10468
  label: "Datasource",
11144
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)"
11145
10534
  }
11146
10535
  }
11147
10536
  },
@@ -11250,10 +10639,6 @@ var enMetadataForms = {
11250
10639
  label: "Summary Operations",
11251
10640
  helpText: "Roll-up summary configuration (for parent-child relationships)"
11252
10641
  },
11253
- cached: {
11254
- label: "Cached",
11255
- helpText: "Caching configuration for computed fields"
11256
- },
11257
10642
  columnName: {
11258
10643
  label: "Column Name",
11259
10644
  helpText: "Physical column name in database (defaults to field name)"
@@ -11281,28 +10666,9 @@ var enMetadataForms = {
11281
10666
  sortable: {
11282
10667
  label: "Sortable",
11283
10668
  helpText: "Allow sorting lists by this field"
11284
- },
11285
- auditTrail: {
11286
- label: "Audit Trail",
11287
- helpText: "Track detailed changes with user and timestamp"
11288
- },
11289
- trackFeedHistory: {
11290
- label: "Track Feed History",
11291
- helpText: "Show changes in activity feed"
11292
- },
11293
- encryptionConfig: {
11294
- label: "Encryption Config",
11295
- helpText: "Field-level encryption (GDPR/HIPAA/PCI-DSS)"
11296
- },
11297
- maskingRule: {
11298
- label: "Masking Rule",
11299
- helpText: "Data masking rules for PII protection"
11300
10669
  }
11301
10670
  }
11302
10671
  },
11303
- trigger: {
11304
- label: "Trigger"
11305
- },
11306
10672
  validation: {
11307
10673
  label: "Validation Rule"
11308
10674
  },
@@ -11379,12 +10745,36 @@ var enMetadataForms = {
11379
10745
  onError: {
11380
10746
  label: "On Error"
11381
10747
  },
10748
+ timeout: {
10749
+ label: "Timeout",
10750
+ helpText: "Abort the hook after N milliseconds"
10751
+ },
11382
10752
  condition: {
11383
10753
  label: "Condition",
11384
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)"
11385
10767
  }
11386
10768
  }
11387
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
+ },
11388
10778
  view: {
11389
10779
  label: "View",
11390
10780
  sections: {
@@ -11556,6 +10946,10 @@ var enMetadataForms = {
11556
10946
  label: "Layout",
11557
10947
  description: "Page regions and components placed within them."
11558
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
+ },
11559
10953
  advanced: {
11560
10954
  label: "Advanced",
11561
10955
  description: "Activation, audience, and accessibility."
@@ -11598,6 +10992,58 @@ var enMetadataForms = {
11598
10992
  label: "Regions",
11599
10993
  helpText: "Layout regions (header, main, sidebar, footer) with components"
11600
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
+ },
11601
11047
  isDefault: {
11602
11048
  label: "Is Default",
11603
11049
  helpText: "Set as default page for this page type"
@@ -11846,6 +11292,22 @@ var enMetadataForms = {
11846
11292
  label: "Body",
11847
11293
  helpText: "JavaScript code to execute"
11848
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
+ },
11849
11311
  params: {
11850
11312
  label: "Params",
11851
11313
  helpText: "User input parameters (show form before executing)"
@@ -11886,9 +11348,9 @@ var enMetadataForms = {
11886
11348
  label: "Bulk Enabled",
11887
11349
  helpText: "Allow applying to multiple selected records"
11888
11350
  },
11889
- aiExposed: {
11890
- label: "Ai Exposed",
11891
- 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."
11892
11354
  },
11893
11355
  recordIdParam: {
11894
11356
  label: "Record Id Param",
@@ -11911,13 +11373,9 @@ var enMetadataForms = {
11911
11373
  label: "Basics",
11912
11374
  description: "Identity and data source."
11913
11375
  },
11914
- columns: {
11915
- label: "Columns",
11916
- description: "Columns shown in the report output."
11917
- },
11918
- groupings: {
11919
- label: "Groupings",
11920
- 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."
11921
11379
  },
11922
11380
  joined_blocks: {
11923
11381
  label: "Joined blocks",
@@ -11943,33 +11401,37 @@ var enMetadataForms = {
11943
11401
  description: {
11944
11402
  label: "Description"
11945
11403
  },
11946
- objectName: {
11947
- label: "Object Name",
11948
- helpText: "Data source object"
11949
- },
11950
11404
  type: {
11951
11405
  label: "Type",
11952
11406
  helpText: "Report type: tabular/summary/matrix/joined"
11953
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
+ },
11954
11420
  columns: {
11955
11421
  label: "Columns",
11956
11422
  helpText: "Columns to display in the report"
11957
11423
  },
11958
- groupingsDown: {
11959
- label: "Groupings Down",
11960
- helpText: "Row grouping levels"
11961
- },
11962
- groupingsAcross: {
11963
- label: "Groupings Across",
11964
- helpText: "Column grouping levels (matrix only)"
11424
+ drilldown: {
11425
+ label: "Drilldown",
11426
+ helpText: "Click an aggregated row/cell to open the underlying records"
11965
11427
  },
11966
11428
  blocks: {
11967
11429
  label: "Blocks",
11968
11430
  helpText: "Join multiple objects (joined report only)"
11969
11431
  },
11970
- filter: {
11971
- label: "Filter",
11972
- helpText: "Report-level filters"
11432
+ runtimeFilter: {
11433
+ label: "Runtime Filter",
11434
+ helpText: "Render-time scope filter, ANDed at query time"
11973
11435
  },
11974
11436
  chart: {
11975
11437
  label: "Chart",
@@ -11985,6 +11447,62 @@ var enMetadataForms = {
11985
11447
  }
11986
11448
  }
11987
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
+ },
11988
11506
  flow: {
11989
11507
  label: "Flow",
11990
11508
  sections: {
@@ -12064,15 +11582,6 @@ var enMetadataForms = {
12064
11582
  translation: {
12065
11583
  label: "Translation"
12066
11584
  },
12067
- router: {
12068
- label: "Router"
12069
- },
12070
- function: {
12071
- label: "Function"
12072
- },
12073
- service: {
12074
- label: "Service"
12075
- },
12076
11585
  email_template: {
12077
11586
  label: "Email Template",
12078
11587
  sections: {
@@ -12153,6 +11662,14 @@ var enMetadataForms = {
12153
11662
  }
12154
11663
  }
12155
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
+ },
12156
11673
  permission: {
12157
11674
  label: "Permission Set",
12158
11675
  sections: {
@@ -12208,67 +11725,12 @@ var enMetadataForms = {
12208
11725
  }
12209
11726
  }
12210
11727
  },
12211
- profile: {
12212
- label: "Profile",
12213
- sections: {
12214
- identity: {
12215
- label: "Identity",
12216
- description: "Permission Sets stack on top of a Profile to grant additional access. Profiles are the base set assigned 1:1 to each user."
12217
- },
12218
- system_permissions: {
12219
- label: "System Permissions",
12220
- description: "High-level capabilities not tied to a specific object \u2014 e.g. manage_users, view_audit_logs."
12221
- },
12222
- object_and_field_permissions: {
12223
- label: "Object & Field Permissions",
12224
- description: "Per-object CRUD + per-field FLS. Edit via the matrix editor or paste JSON here."
12225
- },
12226
- tab_and_row_level_security: {
12227
- label: "Tab & Row-Level Security",
12228
- description: "Tab visibility, RLS policies, and custom context variables for predicate evaluation."
12229
- }
12230
- },
12231
- fields: {
12232
- name: {
12233
- label: "Name",
12234
- helpText: "Machine name (snake_case)"
12235
- },
12236
- label: {
12237
- label: "Label",
12238
- helpText: "Display label for admins"
12239
- },
12240
- systemPermissions: {
12241
- label: "System Permissions",
12242
- helpText: "List of system capability keys"
12243
- },
12244
- objects: {
12245
- label: "Objects",
12246
- helpText: '{ "account": { allowRead: true, allowEdit: true, ... } }'
12247
- },
12248
- fields: {
12249
- label: "Fields",
12250
- helpText: '{ "account.amount": { readable: true, editable: false } }'
12251
- },
12252
- tabPermissions: {
12253
- label: "Tab Permissions",
12254
- helpText: '{ "app_crm": "visible", "app_admin": "hidden" }'
12255
- },
12256
- rowLevelSecurity: {
12257
- label: "Row Level Security",
12258
- helpText: "Array of RLS policies (see rls.zod.ts)"
12259
- },
12260
- contextVariables: {
12261
- label: "Context Variables",
12262
- helpText: "Custom variables referenced in RLS predicates"
12263
- }
12264
- }
12265
- },
12266
- role: {
12267
- label: "Role",
11728
+ position: {
11729
+ label: "Position",
12268
11730
  sections: {
12269
- role: {
12270
- label: "Role",
12271
- description: "Roles compose a hierarchy used for record sharing (sales VP \u2192 sales mgr \u2192 sales rep). Permissions themselves live on Permission Sets and Profiles."
11731
+ position: {
11732
+ label: "Position",
11733
+ description: "A position is a flat, assignable bundle of permission sets (e.g. sales_rep, sales_manager). Capability lives on permission sets; visibility depth lives on the business-unit tree."
12272
11734
  }
12273
11735
  },
12274
11736
  fields: {
@@ -12279,10 +11741,6 @@ var enMetadataForms = {
12279
11741
  label: {
12280
11742
  label: "Label"
12281
11743
  },
12282
- parent: {
12283
- label: "Parent",
12284
- helpText: "Parent role machine name (Reports To)"
12285
- },
12286
11744
  description: {
12287
11745
  label: "Description"
12288
11746
  }
@@ -12772,6 +12230,70 @@ var zhCNMetadataForms = {
12772
12230
  datasource: {
12773
12231
  label: "\u6570\u636E\u6E90",
12774
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"
12775
12297
  }
12776
12298
  }
12777
12299
  },
@@ -12880,10 +12402,6 @@ var zhCNMetadataForms = {
12880
12402
  label: "\u6C47\u603B\u64CD\u4F5C",
12881
12403
  helpText: "\u7236\u5B50\u5173\u7CFB\u4E0B\u7684\u6C47\u603B\u805A\u5408\u914D\u7F6E"
12882
12404
  },
12883
- cached: {
12884
- label: "\u7F13\u5B58",
12885
- helpText: "\u8BA1\u7B97\u5B57\u6BB5\u7684\u7F13\u5B58\u914D\u7F6E"
12886
- },
12887
12405
  columnName: {
12888
12406
  label: "\u5217\u540D",
12889
12407
  helpText: "\u6570\u636E\u5E93\u4E2D\u7684\u7269\u7406\u5217\u540D\uFF08\u9ED8\u8BA4\u4E0E\u5B57\u6BB5\u540D\u76F8\u540C\uFF09"
@@ -12911,28 +12429,9 @@ var zhCNMetadataForms = {
12911
12429
  sortable: {
12912
12430
  label: "\u53EF\u6392\u5E8F",
12913
12431
  helpText: "\u5141\u8BB8\u6309\u6B64\u5B57\u6BB5\u6392\u5E8F"
12914
- },
12915
- auditTrail: {
12916
- label: "\u5BA1\u8BA1\u8DDF\u8E2A",
12917
- helpText: "\u8BB0\u5F55\u8BE6\u7EC6\u53D8\u66F4\u4E0E\u64CD\u4F5C\u4EBA\u3001\u65F6\u95F4\u6233"
12918
- },
12919
- trackFeedHistory: {
12920
- label: "\u52A8\u6001\u5386\u53F2\u8DDF\u8E2A",
12921
- helpText: "\u5728\u6D3B\u52A8\u52A8\u6001\u4E2D\u5C55\u793A\u53D8\u66F4"
12922
- },
12923
- encryptionConfig: {
12924
- label: "\u52A0\u5BC6\u914D\u7F6E",
12925
- helpText: "\u5B57\u6BB5\u7EA7\u52A0\u5BC6\uFF08GDPR / HIPAA / PCI-DSS\uFF09"
12926
- },
12927
- maskingRule: {
12928
- label: "\u63A9\u7801\u89C4\u5219",
12929
- helpText: "PII \u6570\u636E\u8131\u654F\u89C4\u5219"
12930
12432
  }
12931
12433
  }
12932
12434
  },
12933
- trigger: {
12934
- label: "\u89E6\u53D1\u5668"
12935
- },
12936
12435
  validation: {
12937
12436
  label: "\u9A8C\u8BC1\u89C4\u5219"
12938
12437
  },
@@ -13009,12 +12508,36 @@ var zhCNMetadataForms = {
13009
12508
  onError: {
13010
12509
  label: "\u9519\u8BEF\u5904\u7406"
13011
12510
  },
12511
+ timeout: {
12512
+ label: "Timeout",
12513
+ helpText: "Abort the hook after N milliseconds"
12514
+ },
13012
12515
  condition: {
13013
12516
  label: "\u6761\u4EF6",
13014
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)"
13015
12530
  }
13016
12531
  }
13017
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
+ },
13018
12541
  view: {
13019
12542
  label: "\u89C6\u56FE",
13020
12543
  sections: {
@@ -13186,6 +12709,10 @@ var zhCNMetadataForms = {
13186
12709
  label: "\u5E03\u5C40",
13187
12710
  description: "\u9875\u9762\u533A\u5757\u4E0E\u7EC4\u4EF6"
13188
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
+ },
13189
12716
  advanced: {
13190
12717
  label: "\u9AD8\u7EA7\u8BBE\u7F6E",
13191
12718
  description: "\u9ED8\u8BA4\u9875\u3001\u7C7B\u578B\u4E0E\u5206\u914D"
@@ -13228,6 +12755,58 @@ var zhCNMetadataForms = {
13228
12755
  label: "\u533A\u57DF",
13229
12756
  helpText: "\u5E03\u5C40\u533A\u57DF\uFF08header\u3001main\u3001sidebar\u3001footer\uFF09\u53CA\u5176\u7EC4\u4EF6"
13230
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
+ },
13231
12810
  isDefault: {
13232
12811
  label: "\u9ED8\u8BA4",
13233
12812
  helpText: "\u8BBE\u4E3A\u8BE5\u9875\u9762\u7C7B\u578B\u7684\u9ED8\u8BA4\u9875"
@@ -13476,6 +13055,22 @@ var zhCNMetadataForms = {
13476
13055
  label: "\u6B63\u6587",
13477
13056
  helpText: "\u8981\u6267\u884C\u7684 JavaScript \u4EE3\u7801"
13478
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
+ },
13479
13074
  params: {
13480
13075
  label: "\u53C2\u6570",
13481
13076
  helpText: "\u6267\u884C\u524D\u5411\u7528\u6237\u6536\u96C6\u7684\u8F93\u5165\u53C2\u6570"
@@ -13516,9 +13111,9 @@ var zhCNMetadataForms = {
13516
13111
  label: "\u6279\u91CF\u542F\u7528",
13517
13112
  helpText: "\u5141\u8BB8\u5BF9\u591A\u6761\u9009\u4E2D\u8BB0\u5F55\u6267\u884C"
13518
13113
  },
13519
- aiExposed: {
13520
- label: "\u66B4\u9732\u7ED9 AI",
13521
- 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."
13522
13117
  },
13523
13118
  recordIdParam: {
13524
13119
  label: "\u8BB0\u5F55 ID \u53C2\u6570",
@@ -13541,13 +13136,9 @@ var zhCNMetadataForms = {
13541
13136
  label: "\u57FA\u7840\u4FE1\u606F",
13542
13137
  description: "\u540D\u79F0\u4E0E\u6570\u636E\u6E90"
13543
13138
  },
13544
- columns: {
13545
- label: "\u5217",
13546
- description: "\u9009\u62E9\u8981\u5C55\u793A\u7684\u5217"
13547
- },
13548
- groupings: {
13549
- label: "\u5206\u7EC4\u4E0E\u6C47\u603B",
13550
- 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."
13551
13142
  },
13552
13143
  joined_blocks: {
13553
13144
  label: "\u5173\u8054\u5BF9\u8C61",
@@ -13573,33 +13164,37 @@ var zhCNMetadataForms = {
13573
13164
  description: {
13574
13165
  label: "\u63CF\u8FF0"
13575
13166
  },
13576
- objectName: {
13577
- label: "\u5BF9\u8C61\u540D\u79F0",
13578
- helpText: "\u62A5\u8868\u6570\u636E\u6E90\u5BF9\u8C61"
13579
- },
13580
13167
  type: {
13581
13168
  label: "\u7C7B\u578B",
13582
13169
  helpText: "\u62A5\u8868\u7C7B\u578B\uFF1Atabular / summary / matrix / joined"
13583
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
+ },
13584
13183
  columns: {
13585
13184
  label: "\u5217",
13586
13185
  helpText: "\u62A5\u8868\u4E2D\u663E\u793A\u7684\u5217"
13587
13186
  },
13588
- groupingsDown: {
13589
- label: "\u884C\u5206\u7EC4",
13590
- helpText: "\u884C\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7"
13591
- },
13592
- groupingsAcross: {
13593
- label: "\u5217\u5206\u7EC4",
13594
- helpText: "\u5217\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7\uFF08matrix \u62A5\u8868\uFF09"
13187
+ drilldown: {
13188
+ label: "Drilldown",
13189
+ helpText: "Click an aggregated row/cell to open the underlying records"
13595
13190
  },
13596
13191
  blocks: {
13597
13192
  label: "\u5206\u5757",
13598
13193
  helpText: "joined \u62A5\u8868\u7684\u8054\u5408\u67E5\u8BE2\u5757"
13599
13194
  },
13600
- filter: {
13601
- label: "\u7B5B\u9009",
13602
- helpText: "\u62A5\u8868\u7EA7\u522B\u7684\u7B5B\u9009\u89C4\u5219"
13195
+ runtimeFilter: {
13196
+ label: "Runtime Filter",
13197
+ helpText: "Render-time scope filter, ANDed at query time"
13603
13198
  },
13604
13199
  chart: {
13605
13200
  label: "\u56FE\u8868",
@@ -13615,6 +13210,62 @@ var zhCNMetadataForms = {
13615
13210
  }
13616
13211
  }
13617
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"
13246
+ },
13247
+ object: {
13248
+ label: "Object",
13249
+ helpText: "Base object \u2014 the FROM"
13250
+ },
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)'
13254
+ },
13255
+ filter: {
13256
+ label: "Filter",
13257
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
13258
+ },
13259
+ dimensions: {
13260
+ label: "Dimensions",
13261
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
13262
+ },
13263
+ measures: {
13264
+ label: "Measures",
13265
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
13266
+ }
13267
+ }
13268
+ },
13618
13269
  flow: {
13619
13270
  label: "\u6D41\u7A0B",
13620
13271
  sections: {
@@ -13694,15 +13345,6 @@ var zhCNMetadataForms = {
13694
13345
  translation: {
13695
13346
  label: "\u7FFB\u8BD1"
13696
13347
  },
13697
- router: {
13698
- label: "\u8DEF\u7531\u5668"
13699
- },
13700
- function: {
13701
- label: "\u51FD\u6570"
13702
- },
13703
- service: {
13704
- label: "\u670D\u52A1"
13705
- },
13706
13348
  email_template: {
13707
13349
  label: "\u90AE\u4EF6\u6A21\u677F",
13708
13350
  sections: {
@@ -13783,6 +13425,14 @@ var zhCNMetadataForms = {
13783
13425
  }
13784
13426
  }
13785
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
+ },
13786
13436
  permission: {
13787
13437
  label: "\u6743\u9650\u96C6 / \u914D\u7F6E\u6587\u4EF6",
13788
13438
  sections: {
@@ -13838,114 +13488,55 @@ var zhCNMetadataForms = {
13838
13488
  }
13839
13489
  }
13840
13490
  },
13841
- profile: {
13842
- label: "\u914D\u7F6E\u6587\u4EF6",
13491
+ position: {
13492
+ label: "\u5C97\u4F4D",
13493
+ sections: {
13494
+ position: {
13495
+ label: "\u5C97\u4F4D",
13496
+ description: "\u5C97\u4F4D\u662F\u6241\u5E73\u7684\u3001\u53EF\u5206\u914D\u7684\u6743\u9650\u96C6\u7EC4\u5408(\u5982 sales_rep\u3001sales_manager)\u3002\u80FD\u529B\u5728\u6743\u9650\u96C6\u4E0A;\u53EF\u89C1\u8303\u56F4\u6DF1\u5EA6\u5728\u4E1A\u52A1\u5355\u5143\u6811\u4E0A\u3002"
13497
+ }
13498
+ },
13499
+ fields: {
13500
+ name: {
13501
+ label: "\u540D\u79F0",
13502
+ helpText: "snake_case \u552F\u4E00\u6807\u8BC6\u7B26"
13503
+ },
13504
+ label: {
13505
+ label: "\u663E\u793A\u540D\u79F0"
13506
+ },
13507
+ description: {
13508
+ label: "\u63CF\u8FF0"
13509
+ }
13510
+ }
13511
+ },
13512
+ agent: {
13513
+ label: "AI \u4EE3\u7406",
13843
13514
  sections: {
13844
13515
  identity: {
13845
- label: "\u6807\u8BC6",
13846
- description: "\u6743\u9650\u96C6\u53E0\u52A0\u5728\u914D\u7F6E\u6587\u4EF6\u4E4B\u4E0A\u4EE5\u6388\u4E88\u989D\u5916\u7684\u8BBF\u95EE\u6743\u9650\u3002\u914D\u7F6E\u6587\u4EF6\u662F\u6309 1:1 \u5206\u914D\u7ED9\u6BCF\u4E2A\u7528\u6237\u7684\u57FA\u7840\u96C6\u5408\u3002"
13516
+ label: "\u8EAB\u4EFD\u4FE1\u606F",
13517
+ description: "\u7528\u6237\u5982\u4F55\u8BC6\u522B\u4E0E\u8C03\u7528\u8BE5\u4EE3\u7406"
13847
13518
  },
13848
- system_permissions: {
13849
- label: "\u7CFB\u7EDF\u6743\u9650",
13850
- description: "\u4E0E\u7279\u5B9A\u5BF9\u8C61\u65E0\u5173\u7684\u9AD8\u7EA7\u80FD\u529B\u2014\u2014\u4F8B\u5982 manage_users\u3001view_audit_logs\u3002"
13519
+ ai_configuration: {
13520
+ label: "AI \u914D\u7F6E",
13521
+ description: "\u6A21\u578B\u9009\u62E9\u3001\u6307\u4EE4\u3001\u89C4\u5212\u4E0E\u8BB0\u5FC6"
13851
13522
  },
13852
- object_and_field_permissions: {
13853
- label: "\u5BF9\u8C61\u4E0E\u5B57\u6BB5\u6743\u9650",
13854
- description: "\u6309\u5BF9\u8C61\u7684\u589E\u5220\u6539\u67E5 + \u6309\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EA7\u5B89\u5168\uFF08FLS\uFF09\u3002\u53EF\u901A\u8FC7\u77E9\u9635\u7F16\u8F91\u5668\u7F16\u8F91\uFF0C\u6216\u5728\u6B64\u5904\u7C98\u8D34 JSON\u3002"
13523
+ capabilities: {
13524
+ label: "\u80FD\u529B\u914D\u7F6E",
13525
+ description: "\u4EE3\u7406\u53EF\u4F7F\u7528\u7684\u6280\u80FD\u3001\u5DE5\u5177\u4E0E\u77E5\u8BC6\u6765\u6E90"
13855
13526
  },
13856
- tab_and_row_level_security: {
13857
- label: "\u6807\u7B7E\u9875\u4E0E\u884C\u7EA7\u5B89\u5168",
13858
- description: "\u6807\u7B7E\u9875\u53EF\u89C1\u6027\u3001RLS \u7B56\u7565\uFF0C\u4EE5\u53CA\u7528\u4E8E\u8C13\u8BCD\u6C42\u503C\u7684\u81EA\u5B9A\u4E49\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002"
13527
+ access: {
13528
+ label: "\u8BBF\u95EE\u4E0E\u5B89\u5168",
13529
+ description: "\u8C01\u80FD\u4F7F\u7528\u6B64\u4EE3\u7406\u4EE5\u53CA\u9632\u62A4\u63AA\u65BD"
13859
13530
  }
13860
13531
  },
13861
13532
  fields: {
13862
13533
  name: {
13863
13534
  label: "\u540D\u79F0",
13864
- helpText: "\u673A\u5668\u540D\uFF08snake_case\uFF09"
13535
+ helpText: "\u552F\u4E00\u6807\u8BC6\u7B26\uFF08snake_case\uFF09"
13865
13536
  },
13866
13537
  label: {
13867
13538
  label: "\u663E\u793A\u540D\u79F0",
13868
- helpText: "\u9762\u5411\u7BA1\u7406\u5458\u663E\u793A\u7684\u6807\u7B7E"
13869
- },
13870
- systemPermissions: {
13871
- label: "\u7CFB\u7EDF\u6743\u9650",
13872
- helpText: "\u7CFB\u7EDF\u80FD\u529B\u952E\u5217\u8868"
13873
- },
13874
- objects: {
13875
- label: "\u5BF9\u8C61\u6743\u9650",
13876
- helpText: '\u793A\u4F8B\uFF1A{ "account": { allowRead: true, allowEdit: true, ... } }'
13877
- },
13878
- fields: {
13879
- label: "\u5B57\u6BB5",
13880
- helpText: '\u793A\u4F8B\uFF1A{ "account.amount": { readable: true, editable: false } }'
13881
- },
13882
- tabPermissions: {
13883
- label: "\u6807\u7B7E\u9875\u6743\u9650",
13884
- helpText: '\u793A\u4F8B\uFF1A{ "app_crm": "visible", "app_admin": "hidden" }'
13885
- },
13886
- rowLevelSecurity: {
13887
- label: "\u884C\u7EA7\u5B89\u5168",
13888
- helpText: "RLS \u7B56\u7565\u6570\u7EC4\uFF08\u53C2\u89C1 rls.zod.ts\uFF09"
13889
- },
13890
- contextVariables: {
13891
- label: "\u4E0A\u4E0B\u6587\u53D8\u91CF",
13892
- helpText: "RLS \u8C13\u8BCD\u4E2D\u5F15\u7528\u7684\u81EA\u5B9A\u4E49\u53D8\u91CF"
13893
- }
13894
- }
13895
- },
13896
- role: {
13897
- label: "\u89D2\u8272",
13898
- sections: {
13899
- role: {
13900
- label: "\u89D2\u8272\u5B9A\u4E49",
13901
- description: "\u89D2\u8272\u540D\u79F0\u4E0E\u7EE7\u627F\u5173\u7CFB"
13902
- }
13903
- },
13904
- fields: {
13905
- name: {
13906
- label: "\u540D\u79F0",
13907
- helpText: "snake_case \u552F\u4E00\u6807\u8BC6\u7B26"
13908
- },
13909
- label: {
13910
- label: "\u663E\u793A\u540D\u79F0"
13911
- },
13912
- parent: {
13913
- label: "\u7236\u7EA7",
13914
- helpText: "\u7EE7\u627F\u7236\u89D2\u8272\u7684\u6743\u9650"
13915
- },
13916
- description: {
13917
- label: "\u63CF\u8FF0"
13918
- }
13919
- }
13920
- },
13921
- agent: {
13922
- label: "AI \u4EE3\u7406",
13923
- sections: {
13924
- identity: {
13925
- label: "\u8EAB\u4EFD\u4FE1\u606F",
13926
- description: "\u7528\u6237\u5982\u4F55\u8BC6\u522B\u4E0E\u8C03\u7528\u8BE5\u4EE3\u7406"
13927
- },
13928
- ai_configuration: {
13929
- label: "AI \u914D\u7F6E",
13930
- description: "\u6A21\u578B\u9009\u62E9\u3001\u6307\u4EE4\u3001\u89C4\u5212\u4E0E\u8BB0\u5FC6"
13931
- },
13932
- capabilities: {
13933
- label: "\u80FD\u529B\u914D\u7F6E",
13934
- description: "\u4EE3\u7406\u53EF\u4F7F\u7528\u7684\u6280\u80FD\u3001\u5DE5\u5177\u4E0E\u77E5\u8BC6\u6765\u6E90"
13935
- },
13936
- access: {
13937
- label: "\u8BBF\u95EE\u4E0E\u5B89\u5168",
13938
- description: "\u8C01\u80FD\u4F7F\u7528\u6B64\u4EE3\u7406\u4EE5\u53CA\u9632\u62A4\u63AA\u65BD"
13939
- }
13940
- },
13941
- fields: {
13942
- name: {
13943
- label: "\u540D\u79F0",
13944
- helpText: "\u552F\u4E00\u6807\u8BC6\u7B26\uFF08snake_case\uFF09"
13945
- },
13946
- label: {
13947
- label: "\u663E\u793A\u540D\u79F0",
13948
- helpText: '\u663E\u793A\u540D\u79F0\uFF08\u5982\uFF1A"\u9500\u552E\u52A9\u624B"\uFF09'
13539
+ helpText: '\u663E\u793A\u540D\u79F0\uFF08\u5982\uFF1A"\u9500\u552E\u52A9\u624B"\uFF09'
13949
13540
  },
13950
13541
  role: {
13951
13542
  label: "\u4EBA\u8BBE\u89D2\u8272",
@@ -14402,6 +13993,70 @@ var jaJPMetadataForms = {
14402
13993
  datasource: {
14403
13994
  label: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9",
14404
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)"
14405
14060
  }
14406
14061
  }
14407
14062
  },
@@ -14510,10 +14165,6 @@ var jaJPMetadataForms = {
14510
14165
  label: "\u96C6\u8A08\u64CD\u4F5C",
14511
14166
  helpText: "\u30ED\u30FC\u30EB\u30A2\u30C3\u30D7\u96C6\u8A08\u8A2D\u5B9A\uFF08\u89AA\u5B50\u95A2\u4FC2\u7528\uFF09"
14512
14167
  },
14513
- cached: {
14514
- label: "\u30AD\u30E3\u30C3\u30B7\u30E5",
14515
- helpText: "\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u8A2D\u5B9A"
14516
- },
14517
14168
  columnName: {
14518
14169
  label: "\u5217\u540D",
14519
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"
@@ -14541,28 +14192,9 @@ var jaJPMetadataForms = {
14541
14192
  sortable: {
14542
14193
  label: "\u4E26\u3073\u66FF\u3048\u53EF\u80FD",
14543
14194
  helpText: "\u3053\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30EA\u30B9\u30C8\u306E\u4E26\u3079\u66FF\u3048\u3092\u8A31\u53EF"
14544
- },
14545
- auditTrail: {
14546
- label: "\u76E3\u67FB\u8A3C\u8DE1",
14547
- helpText: "\u30E6\u30FC\u30B6\u30FC\u3068\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u4ED8\u304D\u3067\u8A73\u7D30\u5909\u66F4\u3092\u8FFD\u8DE1"
14548
- },
14549
- trackFeedHistory: {
14550
- label: "\u30D5\u30A3\u30FC\u30C9\u5C65\u6B74\u8FFD\u8DE1",
14551
- helpText: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30D5\u30A3\u30FC\u30C9\u306B\u5909\u66F4\u3092\u8868\u793A"
14552
- },
14553
- encryptionConfig: {
14554
- label: "\u6697\u53F7\u5316\u8A2D\u5B9A",
14555
- helpText: "\u30D5\u30A3\u30FC\u30EB\u30C9\u30EC\u30D9\u30EB\u6697\u53F7\u5316\uFF08GDPR/HIPAA/PCI-DSS\uFF09"
14556
- },
14557
- maskingRule: {
14558
- label: "\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB",
14559
- helpText: "PII \u4FDD\u8B77\u7528\u30C7\u30FC\u30BF\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB"
14560
14195
  }
14561
14196
  }
14562
14197
  },
14563
- trigger: {
14564
- label: "\u30C8\u30EA\u30AC\u30FC"
14565
- },
14566
14198
  validation: {
14567
14199
  label: "\u691C\u8A3C\u30EB\u30FC\u30EB"
14568
14200
  },
@@ -14639,12 +14271,36 @@ var jaJPMetadataForms = {
14639
14271
  onError: {
14640
14272
  label: "\u30A8\u30E9\u30FC\u6642"
14641
14273
  },
14274
+ timeout: {
14275
+ label: "Timeout",
14276
+ helpText: "Abort the hook after N milliseconds"
14277
+ },
14642
14278
  condition: {
14643
14279
  label: "\u6761\u4EF6",
14644
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)"
14645
14293
  }
14646
14294
  }
14647
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
+ },
14648
14304
  view: {
14649
14305
  label: "\u30D3\u30E5\u30FC",
14650
14306
  sections: {
@@ -14816,6 +14472,10 @@ var jaJPMetadataForms = {
14816
14472
  label: "\u30EC\u30A4\u30A2\u30A6\u30C8",
14817
14473
  description: "\u30DA\u30FC\u30B8\u9818\u57DF\u3068\u305D\u3053\u306B\u914D\u7F6E\u3059\u308B\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3002"
14818
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
+ },
14819
14479
  advanced: {
14820
14480
  label: "\u8A73\u7D30",
14821
14481
  description: "\u6709\u52B9\u5316\u3001\u5BFE\u8C61\u30E6\u30FC\u30B6\u30FC\u3001\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u3002"
@@ -14858,6 +14518,58 @@ var jaJPMetadataForms = {
14858
14518
  label: "\u30EA\u30FC\u30B8\u30E7\u30F3",
14859
14519
  helpText: "\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u542B\u3080\u30EC\u30A4\u30A2\u30A6\u30C8\u9818\u57DF\uFF08header, main, sidebar, footer\uFF09"
14860
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
+ },
14861
14573
  isDefault: {
14862
14574
  label: "\u65E2\u5B9A",
14863
14575
  helpText: "\u3053\u306E\u30DA\u30FC\u30B8\u7A2E\u5225\u306E\u65E2\u5B9A\u30DA\u30FC\u30B8\u306B\u8A2D\u5B9A"
@@ -15106,6 +14818,22 @@ var jaJPMetadataForms = {
15106
14818
  label: "\u672C\u6587",
15107
14819
  helpText: "\u5B9F\u884C\u3059\u308B JavaScript \u30B3\u30FC\u30C9"
15108
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
+ },
15109
14837
  params: {
15110
14838
  label: "\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
15111
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"
@@ -15146,9 +14874,9 @@ var jaJPMetadataForms = {
15146
14874
  label: "\u4E00\u62EC\u64CD\u4F5C\u6709\u52B9",
15147
14875
  helpText: "\u9078\u629E\u3057\u305F\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u3078\u306E\u9069\u7528\u3092\u8A31\u53EF"
15148
14876
  },
15149
- aiExposed: {
15150
- label: "AI \u306B\u516C\u958B",
15151
- 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."
15152
14880
  },
15153
14881
  recordIdParam: {
15154
14882
  label: "\u30EC\u30B3\u30FC\u30C9 ID \u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
@@ -15171,13 +14899,9 @@ var jaJPMetadataForms = {
15171
14899
  label: "\u57FA\u672C",
15172
14900
  description: "ID \u3068\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3002"
15173
14901
  },
15174
- columns: {
15175
- label: "\u5217",
15176
- description: "\u30EC\u30DD\u30FC\u30C8\u51FA\u529B\u306B\u8868\u793A\u3059\u308B\u5217\u3002"
15177
- },
15178
- groupings: {
15179
- label: "\u30B0\u30EB\u30FC\u30D7\u5316",
15180
- 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."
15181
14905
  },
15182
14906
  joined_blocks: {
15183
14907
  label: "\u7D50\u5408\u30D6\u30ED\u30C3\u30AF",
@@ -15203,33 +14927,37 @@ var jaJPMetadataForms = {
15203
14927
  description: {
15204
14928
  label: "\u8AAC\u660E"
15205
14929
  },
15206
- objectName: {
15207
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D",
15208
- helpText: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"
15209
- },
15210
14930
  type: {
15211
14931
  label: "\u578B",
15212
14932
  helpText: "\u30EC\u30DD\u30FC\u30C8\u7A2E\u5225: tabular/summary/matrix/joined"
15213
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
+ },
15214
14946
  columns: {
15215
14947
  label: "\u5217",
15216
14948
  helpText: "\u30EC\u30DD\u30FC\u30C8\u306B\u8868\u793A\u3059\u308B\u5217"
15217
14949
  },
15218
- groupingsDown: {
15219
- label: "\u7E26\u30B0\u30EB\u30FC\u30D7",
15220
- helpText: "\u884C\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB"
15221
- },
15222
- groupingsAcross: {
15223
- label: "\u6A2A\u30B0\u30EB\u30FC\u30D7",
15224
- 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"
15225
14953
  },
15226
14954
  blocks: {
15227
14955
  label: "\u30D6\u30ED\u30C3\u30AF",
15228
14956
  helpText: "\u8907\u6570\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u7D50\u5408\uFF08joined \u30EC\u30DD\u30FC\u30C8\u306E\u307F\uFF09"
15229
14957
  },
15230
- filter: {
15231
- label: "\u30D5\u30A3\u30EB\u30BF\u30FC",
15232
- 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"
15233
14961
  },
15234
14962
  chart: {
15235
14963
  label: "\u30C1\u30E3\u30FC\u30C8",
@@ -15245,6 +14973,62 @@ var jaJPMetadataForms = {
15245
14973
  }
15246
14974
  }
15247
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
+ },
15248
15032
  flow: {
15249
15033
  label: "\u30D5\u30ED\u30FC",
15250
15034
  sections: {
@@ -15324,15 +15108,6 @@ var jaJPMetadataForms = {
15324
15108
  translation: {
15325
15109
  label: "\u7FFB\u8A33"
15326
15110
  },
15327
- router: {
15328
- label: "\u30EB\u30FC\u30BF\u30FC"
15329
- },
15330
- function: {
15331
- label: "\u95A2\u6570"
15332
- },
15333
- service: {
15334
- label: "\u30B5\u30FC\u30D3\u30B9"
15335
- },
15336
15111
  email_template: {
15337
15112
  label: "\u30E1\u30FC\u30EB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8",
15338
15113
  sections: {
@@ -15413,6 +15188,14 @@ var jaJPMetadataForms = {
15413
15188
  }
15414
15189
  }
15415
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
+ },
15416
15199
  permission: {
15417
15200
  label: "\u6A29\u9650\u30BB\u30C3\u30C8",
15418
15201
  sections: {
@@ -15468,67 +15251,12 @@ var jaJPMetadataForms = {
15468
15251
  }
15469
15252
  }
15470
15253
  },
15471
- profile: {
15472
- label: "\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB",
15254
+ position: {
15255
+ label: "\u30DD\u30B8\u30B7\u30E7\u30F3",
15473
15256
  sections: {
15474
- identity: {
15475
- label: "ID",
15476
- description: "\u6A29\u9650\u30BB\u30C3\u30C8\u306F\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0\u30A2\u30AF\u30BB\u30B9\u6A29\u3092\u91CD\u306D\u308B\u3002\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306F\u5404\u30E6\u30FC\u30B6\u30FC\u306B 1:1 \u3067\u5272\u308A\u5F53\u3066\u308B\u57FA\u672C\u30BB\u30C3\u30C8\u3002"
15477
- },
15478
- system_permissions: {
15479
- label: "\u30B7\u30B9\u30C6\u30E0\u6A29\u9650",
15480
- description: "\u7279\u5B9A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304B\u306A\u3044\u9AD8\u30EC\u30D9\u30EB\u6A5F\u80FD \u2014 \u4F8B: manage_users, view_audit_logs\u3002"
15481
- },
15482
- object_and_field_permissions: {
15483
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3068\u30D5\u30A3\u30FC\u30EB\u30C9\u6A29\u9650",
15484
- description: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u5358\u4F4D\u306E CRUD + \u30D5\u30A3\u30FC\u30EB\u30C9\u5358\u4F4D\u306E FLS\u3002\u30DE\u30C8\u30EA\u30C3\u30AF\u30B9\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u7DE8\u96C6\u3001\u307E\u305F\u306F\u3053\u3053\u306B JSON \u3092\u8CBC\u308A\u4ED8\u3051\u3002"
15485
- },
15486
- tab_and_row_level_security: {
15487
- label: "\u30BF\u30D6\u3068\u884C\u30EC\u30D9\u30EB\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3",
15488
- description: "\u30BF\u30D6\u8868\u793A\u3001RLS \u30DD\u30EA\u30B7\u30FC\u3001\u8FF0\u8A9E\u8A55\u4FA1\u7528\u30AB\u30B9\u30BF\u30E0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u5909\u6570\u3002"
15489
- }
15490
- },
15491
- fields: {
15492
- name: {
15493
- label: "\u540D\u524D",
15494
- helpText: "\u30DE\u30B7\u30F3\u540D\uFF08snake_case\uFF09"
15495
- },
15496
- label: {
15497
- label: "\u8868\u793A\u540D",
15498
- helpText: "\u7BA1\u7406\u8005\u5411\u3051\u8868\u793A\u30E9\u30D9\u30EB"
15499
- },
15500
- systemPermissions: {
15501
- label: "\u30B7\u30B9\u30C6\u30E0\u6A29\u9650",
15502
- helpText: "\u30B7\u30B9\u30C6\u30E0\u6A5F\u80FD\u30AD\u30FC\u306E\u30EA\u30B9\u30C8"
15503
- },
15504
- objects: {
15505
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u6A29\u9650",
15506
- helpText: '\u4F8B: { "account": { allowRead: true, allowEdit: true, ... } }'
15507
- },
15508
- fields: {
15509
- label: "\u30D5\u30A3\u30FC\u30EB\u30C9",
15510
- helpText: '\u4F8B: { "account.amount": { readable: true, editable: false } }'
15511
- },
15512
- tabPermissions: {
15513
- label: "\u30BF\u30D6\u6A29\u9650",
15514
- helpText: '\u4F8B: { "app_crm": "visible", "app_admin": "hidden" }'
15515
- },
15516
- rowLevelSecurity: {
15517
- label: "\u884C\u30EC\u30D9\u30EB\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3",
15518
- helpText: "RLS \u30DD\u30EA\u30B7\u30FC\u306E\u914D\u5217\uFF08rls.zod.ts \u53C2\u7167\uFF09"
15519
- },
15520
- contextVariables: {
15521
- label: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u5909\u6570",
15522
- helpText: "RLS \u8FF0\u8A9E\u3067\u53C2\u7167\u3059\u308B\u30AB\u30B9\u30BF\u30E0\u5909\u6570"
15523
- }
15524
- }
15525
- },
15526
- role: {
15527
- label: "\u30ED\u30FC\u30EB",
15528
- sections: {
15529
- role: {
15530
- label: "\u30ED\u30FC\u30EB",
15531
- description: "\u30ED\u30FC\u30EB\u306F\u30EC\u30B3\u30FC\u30C9\u5171\u6709\u306B\u4F7F\u3046\u968E\u5C64\u3092\u69CB\u6210\uFF08sales VP \u2192 sales mgr \u2192 sales rep\uFF09\u3002\u6A29\u9650\u81EA\u4F53\u306F Permission Sets \u3068 Profiles \u306B\u5B58\u5728\u3002"
15257
+ position: {
15258
+ label: "\u30DD\u30B8\u30B7\u30E7\u30F3",
15259
+ description: "\u30DD\u30B8\u30B7\u30E7\u30F3\u306F\u6A29\u9650\u30BB\u30C3\u30C8\u3092\u307E\u3068\u3081\u3066\u5272\u308A\u5F53\u3066\u308B\u30D5\u30E9\u30C3\u30C8\u306A\u5358\u4F4D(\u4F8B: sales_rep\u3001sales_manager)\u3002\u80FD\u529B\u306F\u6A29\u9650\u30BB\u30C3\u30C8\u306B\u3001\u53EF\u8996\u7BC4\u56F2\u306E\u6DF1\u3055\u306F\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u30C4\u30EA\u30FC\u306B\u3042\u308A\u307E\u3059\u3002"
15532
15260
  }
15533
15261
  },
15534
15262
  fields: {
@@ -15539,10 +15267,6 @@ var jaJPMetadataForms = {
15539
15267
  label: {
15540
15268
  label: "\u8868\u793A\u540D"
15541
15269
  },
15542
- parent: {
15543
- label: "\u89AA",
15544
- helpText: "\u89AA\u30ED\u30FC\u30EB\u306E\u30DE\u30B7\u30F3\u540D\uFF08Reports To\uFF09"
15545
- },
15546
15270
  description: {
15547
15271
  label: "\u8AAC\u660E"
15548
15272
  }
@@ -16032,6 +15756,70 @@ var esESMetadataForms = {
16032
15756
  datasource: {
16033
15757
  label: "Fuente de datos",
16034
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)"
16035
15823
  }
16036
15824
  }
16037
15825
  },
@@ -16140,10 +15928,6 @@ var esESMetadataForms = {
16140
15928
  label: "Operaciones de resumen",
16141
15929
  helpText: "Configuraci\xF3n de resumen roll-up (para relaciones padre-hijo)"
16142
15930
  },
16143
- cached: {
16144
- label: "En cach\xE9",
16145
- helpText: "Configuraci\xF3n de cach\xE9 para campos calculados"
16146
- },
16147
15931
  columnName: {
16148
15932
  label: "Nombre de columna",
16149
15933
  helpText: "Nombre de columna f\xEDsica en la base de datos (por defecto, el nombre del campo)"
@@ -16171,28 +15955,9 @@ var esESMetadataForms = {
16171
15955
  sortable: {
16172
15956
  label: "Ordenable",
16173
15957
  helpText: "Permite ordenar listas por este campo"
16174
- },
16175
- auditTrail: {
16176
- label: "Rastro de auditor\xEDa",
16177
- helpText: "Registra cambios detallados con usuario y marca temporal"
16178
- },
16179
- trackFeedHistory: {
16180
- label: "Historial de feed",
16181
- helpText: "Muestra cambios en el feed de actividad"
16182
- },
16183
- encryptionConfig: {
16184
- label: "Configuraci\xF3n de cifrado",
16185
- helpText: "Cifrado a nivel de campo (GDPR/HIPAA/PCI-DSS)"
16186
- },
16187
- maskingRule: {
16188
- label: "Regla de enmascaramiento",
16189
- helpText: "Reglas de enmascaramiento de datos para protecci\xF3n de PII"
16190
15958
  }
16191
15959
  }
16192
15960
  },
16193
- trigger: {
16194
- label: "Disparador"
16195
- },
16196
15961
  validation: {
16197
15962
  label: "Regla de validaci\xF3n"
16198
15963
  },
@@ -16269,12 +16034,36 @@ var esESMetadataForms = {
16269
16034
  onError: {
16270
16035
  label: "Al error"
16271
16036
  },
16037
+ timeout: {
16038
+ label: "Timeout",
16039
+ helpText: "Abort the hook after N milliseconds"
16040
+ },
16272
16041
  condition: {
16273
16042
  label: "Condici\xF3n",
16274
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)"
16275
16056
  }
16276
16057
  }
16277
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
+ },
16278
16067
  view: {
16279
16068
  label: "Vista",
16280
16069
  sections: {
@@ -16446,6 +16235,10 @@ var esESMetadataForms = {
16446
16235
  label: "Dise\xF1o",
16447
16236
  description: "Regiones de p\xE1gina y componentes colocados en ellas."
16448
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
+ },
16449
16242
  advanced: {
16450
16243
  label: "Avanzado",
16451
16244
  description: "Activaci\xF3n, audiencia y accesibilidad."
@@ -16488,6 +16281,58 @@ var esESMetadataForms = {
16488
16281
  label: "Regiones",
16489
16282
  helpText: "Regiones de dise\xF1o (header, main, sidebar, footer) con componentes"
16490
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
+ },
16491
16336
  isDefault: {
16492
16337
  label: "Predeterminado",
16493
16338
  helpText: "Establece como p\xE1gina predeterminada para este tipo de p\xE1gina"
@@ -16736,6 +16581,22 @@ var esESMetadataForms = {
16736
16581
  label: "Cuerpo",
16737
16582
  helpText: "C\xF3digo JavaScript que ejecutar"
16738
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
+ },
16739
16600
  params: {
16740
16601
  label: "Par\xE1metros",
16741
16602
  helpText: "Par\xE1metros de entrada de usuario (muestra el formulario antes de ejecutar)"
@@ -16776,9 +16637,9 @@ var esESMetadataForms = {
16776
16637
  label: "Acci\xF3n masiva",
16777
16638
  helpText: "Permite aplicar a varios registros seleccionados"
16778
16639
  },
16779
- aiExposed: {
16780
- label: "Expuesto a IA",
16781
- 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."
16782
16643
  },
16783
16644
  recordIdParam: {
16784
16645
  label: "Par\xE1metro de ID de registro",
@@ -16801,13 +16662,9 @@ var esESMetadataForms = {
16801
16662
  label: "Aspectos b\xE1sicos",
16802
16663
  description: "Identidad y fuente de datos."
16803
16664
  },
16804
- columns: {
16805
- label: "Columnas",
16806
- description: "Columnas mostradas en la salida del informe."
16807
- },
16808
- groupings: {
16809
- label: "Agrupaciones",
16810
- 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."
16811
16668
  },
16812
16669
  joined_blocks: {
16813
16670
  label: "Bloques unidos",
@@ -16833,33 +16690,37 @@ var esESMetadataForms = {
16833
16690
  description: {
16834
16691
  label: "Descripci\xF3n"
16835
16692
  },
16836
- objectName: {
16837
- label: "Nombre de objeto",
16838
- helpText: "Objeto de fuente de datos"
16839
- },
16840
16693
  type: {
16841
16694
  label: "Tipo",
16842
16695
  helpText: "Tipo de informe: tabular/summary/matrix/joined"
16843
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
+ },
16844
16709
  columns: {
16845
16710
  label: "Columnas",
16846
16711
  helpText: "Columnas que mostrar en el informe"
16847
16712
  },
16848
- groupingsDown: {
16849
- label: "Agrupaciones verticales",
16850
- helpText: "Niveles de agrupaci\xF3n de filas"
16851
- },
16852
- groupingsAcross: {
16853
- label: "Agrupaciones horizontales",
16854
- 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"
16855
16716
  },
16856
16717
  blocks: {
16857
16718
  label: "Bloques",
16858
16719
  helpText: "Une varios objetos (solo informe joined)"
16859
16720
  },
16860
- filter: {
16861
- label: "Filtro",
16862
- helpText: "Filtros a nivel de informe"
16721
+ runtimeFilter: {
16722
+ label: "Runtime Filter",
16723
+ helpText: "Render-time scope filter, ANDed at query time"
16863
16724
  },
16864
16725
  chart: {
16865
16726
  label: "Gr\xE1fico",
@@ -16875,6 +16736,62 @@ var esESMetadataForms = {
16875
16736
  }
16876
16737
  }
16877
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
+ },
16878
16795
  flow: {
16879
16796
  label: "Flujo",
16880
16797
  sections: {
@@ -16954,15 +16871,6 @@ var esESMetadataForms = {
16954
16871
  translation: {
16955
16872
  label: "Traducci\xF3n"
16956
16873
  },
16957
- router: {
16958
- label: "Enrutador"
16959
- },
16960
- function: {
16961
- label: "Funci\xF3n"
16962
- },
16963
- service: {
16964
- label: "Servicio"
16965
- },
16966
16874
  email_template: {
16967
16875
  label: "Plantilla de email",
16968
16876
  sections: {
@@ -17043,6 +16951,14 @@ var esESMetadataForms = {
17043
16951
  }
17044
16952
  }
17045
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
+ },
17046
16962
  permission: {
17047
16963
  label: "Conjunto de permisos",
17048
16964
  sections: {
@@ -17098,67 +17014,12 @@ var esESMetadataForms = {
17098
17014
  }
17099
17015
  }
17100
17016
  },
17101
- profile: {
17102
- label: "Perfil",
17017
+ position: {
17018
+ label: "Posici\xF3n",
17103
17019
  sections: {
17104
- identity: {
17105
- label: "Identidad",
17106
- description: "Los conjuntos de permisos se apilan sobre un perfil para conceder acceso adicional. Los perfiles son el conjunto base asignado 1:1 a cada usuario."
17107
- },
17108
- system_permissions: {
17109
- label: "Permisos del sistema",
17110
- description: "Capacidades de alto nivel no vinculadas a un objeto espec\xEDfico \u2014 p. ej. manage_users, view_audit_logs."
17111
- },
17112
- object_and_field_permissions: {
17113
- label: "Permisos de objeto y campo",
17114
- description: "CRUD por objeto + FLS por campo. Edita mediante el editor matricial o pega JSON aqu\xED."
17115
- },
17116
- tab_and_row_level_security: {
17117
- label: "Pesta\xF1a y seguridad a nivel de fila",
17118
- description: "Visibilidad de pesta\xF1as, pol\xEDticas RLS y variables de contexto personalizadas para evaluar predicados."
17119
- }
17120
- },
17121
- fields: {
17122
- name: {
17123
- label: "Nombre",
17124
- helpText: "Nombre de m\xE1quina (snake_case)"
17125
- },
17126
- label: {
17127
- label: "Etiqueta",
17128
- helpText: "Etiqueta mostrada para administradores"
17129
- },
17130
- systemPermissions: {
17131
- label: "Permisos del sistema",
17132
- helpText: "Lista de claves de capacidades del sistema"
17133
- },
17134
- objects: {
17135
- label: "Permisos de objeto",
17136
- helpText: 'Ejemplo: { "account": { allowRead: true, allowEdit: true, ... } }'
17137
- },
17138
- fields: {
17139
- label: "Campos",
17140
- helpText: 'Ejemplo: { "account.amount": { readable: true, editable: false } }'
17141
- },
17142
- tabPermissions: {
17143
- label: "Permisos de pesta\xF1a",
17144
- helpText: 'Ejemplo: { "app_crm": "visible", "app_admin": "hidden" }'
17145
- },
17146
- rowLevelSecurity: {
17147
- label: "Seguridad a nivel de fila",
17148
- helpText: "Array de pol\xEDticas RLS (ver rls.zod.ts)"
17149
- },
17150
- contextVariables: {
17151
- label: "Variables de contexto",
17152
- helpText: "Variables personalizadas referenciadas en predicados RLS"
17153
- }
17154
- }
17155
- },
17156
- role: {
17157
- label: "Rol",
17158
- sections: {
17159
- role: {
17160
- label: "Rol",
17161
- description: "Los roles componen una jerarqu\xEDa usada para compartir registros (sales VP \u2192 sales mgr \u2192 sales rep). Los permisos en s\xED residen en Permission Sets y Profiles."
17020
+ position: {
17021
+ label: "Posici\xF3n",
17022
+ description: "Una posici\xF3n es un conjunto plano y asignable de permission sets (p. ej. sales_rep, sales_manager). La capacidad reside en los permission sets; la profundidad de visibilidad en el \xE1rbol de unidades de negocio."
17162
17023
  }
17163
17024
  },
17164
17025
  fields: {
@@ -17169,10 +17030,6 @@ var esESMetadataForms = {
17169
17030
  label: {
17170
17031
  label: "Etiqueta"
17171
17032
  },
17172
- parent: {
17173
- label: "Padre",
17174
- helpText: "Nombre de m\xE1quina del rol padre (Reports To)"
17175
- },
17176
17033
  description: {
17177
17034
  label: "Descripci\xF3n"
17178
17035
  }