@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.js CHANGED
@@ -35,14 +35,64 @@ var enObjects = {
35
35
  label: "Ban Expires",
36
36
  help: "When set, the ban auto-clears at this time."
37
37
  },
38
+ failed_login_count: {
39
+ label: "Failed Login Count",
40
+ help: "Consecutive failed sign-in attempts; reset to 0 on success. Maintained by the auth manager."
41
+ },
42
+ locked_until: {
43
+ label: "Locked Until",
44
+ 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."
45
+ },
46
+ password_changed_at: {
47
+ label: "Password Changed At",
48
+ help: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
49
+ },
50
+ phone_number: {
51
+ label: "Phone Number",
52
+ help: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
53
+ },
54
+ phone_number_verified: {
55
+ label: "Phone Verified",
56
+ help: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
57
+ },
58
+ must_change_password: {
59
+ label: "Must Change Password",
60
+ help: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
61
+ },
62
+ mfa_required_at: {
63
+ label: "MFA Required At",
64
+ help: "When enforced MFA first applied to this user (grace-period clock). Backs mfa_required; system-managed."
65
+ },
66
+ last_login_at: {
67
+ label: "Last Login At",
68
+ help: "Timestamp of the last successful sign-in. Stamped by the auth manager; system-managed."
69
+ },
70
+ last_login_ip: {
71
+ label: "Last Login IP",
72
+ help: "Client IP of the last successful sign-in (from the trusted proxy forwarded header). System-managed."
73
+ },
74
+ ai_access: {
75
+ label: "AI Access",
76
+ 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)."
77
+ },
38
78
  image: {
39
79
  label: "Profile Image"
40
80
  },
41
81
  manager_id: {
42
- label: "Manager"
82
+ label: "Manager",
83
+ help: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
43
84
  },
44
85
  primary_business_unit_id: {
45
- label: "Primary Business Unit"
86
+ label: "Primary Business Unit",
87
+ 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."
88
+ },
89
+ source: {
90
+ label: "Identity Source",
91
+ 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.",
92
+ options: {
93
+ idp_provisioned: "IdP-Provisioned",
94
+ env_native: "Env-Native"
95
+ }
46
96
  },
47
97
  id: {
48
98
  label: "User ID"
@@ -85,6 +135,14 @@ var enObjects = {
85
135
  label: "Unban User",
86
136
  successMessage: "User unbanned"
87
137
  },
138
+ unlock_user: {
139
+ label: "Unlock Account",
140
+ successMessage: "Account unlocked"
141
+ },
142
+ create_user: {
143
+ label: "Create User",
144
+ successMessage: "User created"
145
+ },
88
146
  set_user_password: {
89
147
  label: "Set Password",
90
148
  successMessage: "Password updated"
@@ -146,6 +204,18 @@ var enObjects = {
146
204
  expires_at: {
147
205
  label: "Expires At"
148
206
  },
207
+ last_activity_at: {
208
+ label: "Last Activity At",
209
+ help: "Timestamp of the last request on this session; drives idle-timeout. System-managed."
210
+ },
211
+ revoked_at: {
212
+ label: "Revoked At",
213
+ help: "When set, this session was revoked (idle / absolute-max / concurrent-cap / admin). System-managed."
214
+ },
215
+ revoke_reason: {
216
+ label: "Revoke Reason",
217
+ help: "Why the session was revoked (idle_timeout, absolute_max, concurrent_cap, \u2026)."
218
+ },
149
219
  active_organization_id: {
150
220
  label: "Active Organization"
151
221
  },
@@ -244,6 +314,10 @@ var enObjects = {
244
314
  password: {
245
315
  label: "Password Hash",
246
316
  help: "Hashed password for email/password provider"
317
+ },
318
+ previous_password_hashes: {
319
+ label: "Previous Password Hashes",
320
+ help: "JSON array of prior password hashes (bounded by password_history_count); reuse-prevention only. System-managed."
247
321
  }
248
322
  },
249
323
  _views: {
@@ -314,6 +388,10 @@ var enObjects = {
314
388
  label: "Metadata",
315
389
  help: "JSON-serialized organization metadata"
316
390
  },
391
+ require_mfa: {
392
+ label: "Require Multi-Factor Auth",
393
+ help: "When true, every member of this organization must enroll an authenticator app to access data."
394
+ },
317
395
  id: {
318
396
  label: "Organization ID"
319
397
  },
@@ -638,6 +716,9 @@ var enObjects = {
638
716
  }
639
717
  },
640
718
  _views: {
719
+ org_chart: {
720
+ label: "Org Chart"
721
+ },
641
722
  active: {
642
723
  label: "Active"
643
724
  },
@@ -1219,263 +1300,57 @@ var enObjects = {
1219
1300
  }
1220
1301
  }
1221
1302
  },
1222
- sys_audit_log: {
1223
- label: "Audit Log",
1224
- pluralLabel: "Audit Logs",
1225
- description: "Immutable audit trail for platform events",
1226
- fields: {
1227
- created_at: {
1228
- label: "Timestamp"
1229
- },
1230
- action: {
1231
- label: "Action",
1232
- help: "Action type (snake_case)",
1233
- options: {
1234
- create: "create",
1235
- update: "update",
1236
- delete: "delete",
1237
- restore: "restore",
1238
- login: "login",
1239
- logout: "logout",
1240
- permission_change: "permission_change",
1241
- config_change: "config_change",
1242
- export: "export",
1243
- import: "import"
1244
- }
1245
- },
1246
- user_id: {
1247
- label: "Actor",
1248
- help: "User who performed the action (null for system actions)"
1249
- },
1250
- object_name: {
1251
- label: "Object",
1252
- help: "Target object (e.g. sys_user, project_task)"
1253
- },
1254
- record_id: {
1255
- label: "Record ID",
1256
- help: "ID of the affected record"
1257
- },
1258
- old_value: {
1259
- label: "Old Value",
1260
- help: "JSON-serialized previous state"
1261
- },
1262
- new_value: {
1263
- label: "New Value",
1264
- help: "JSON-serialized new state"
1265
- },
1266
- ip_address: {
1267
- label: "IP Address"
1268
- },
1269
- user_agent: {
1270
- label: "User Agent"
1271
- },
1272
- tenant_id: {
1273
- label: "Tenant",
1274
- help: "Tenant context for multi-tenant isolation"
1275
- },
1276
- metadata: {
1277
- label: "Metadata",
1278
- help: "JSON-serialized additional context"
1279
- },
1280
- id: {
1281
- label: "Audit Log ID"
1282
- }
1283
- },
1284
- _views: {
1285
- recent: {
1286
- label: "Recent"
1287
- },
1288
- writes_only: {
1289
- label: "Writes"
1290
- },
1291
- auth_events: {
1292
- label: "Auth"
1293
- },
1294
- config_changes: {
1295
- label: "Config"
1296
- },
1297
- all_events: {
1298
- label: "All"
1299
- }
1300
- }
1301
- },
1302
- sys_presence: {
1303
- label: "Presence",
1304
- pluralLabel: "Presences",
1305
- description: "Real-time user presence and activity tracking",
1303
+ sys_notification: {
1304
+ label: "Notification",
1305
+ pluralLabel: "Notifications",
1306
+ description: "Per-user notification inbox entries",
1306
1307
  fields: {
1307
1308
  id: {
1308
- label: "Presence ID"
1309
- },
1310
- created_at: {
1311
- label: "Created At"
1312
- },
1313
- updated_at: {
1314
- label: "Updated At"
1315
- },
1316
- user_id: {
1317
- label: "User"
1318
- },
1319
- session_id: {
1320
- label: "Session"
1321
- },
1322
- status: {
1323
- label: "Status",
1324
- options: {
1325
- online: "Online",
1326
- away: "Away",
1327
- busy: "Busy",
1328
- offline: "Offline"
1329
- }
1309
+ label: "Notification ID"
1330
1310
  },
1331
- last_seen: {
1332
- label: "Last Seen"
1311
+ topic: {
1312
+ label: "Topic",
1313
+ help: "Notification topic, e.g. task.assigned, collab.mention"
1333
1314
  },
1334
- current_location: {
1335
- label: "Current Location"
1315
+ payload: {
1316
+ label: "Payload",
1317
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
1336
1318
  },
1337
- device: {
1338
- label: "Device",
1319
+ severity: {
1320
+ label: "Severity",
1321
+ help: "Severity hint for rendering / filtering",
1339
1322
  options: {
1340
- desktop: "Desktop",
1341
- mobile: "Mobile",
1342
- tablet: "Tablet",
1343
- other: "Other"
1323
+ info: "info",
1324
+ warning: "warning",
1325
+ critical: "critical"
1344
1326
  }
1345
1327
  },
1346
- custom_status: {
1347
- label: "Custom Status"
1348
- },
1349
- metadata: {
1350
- label: "Metadata",
1351
- help: "Arbitrary JSON metadata associated with the presence state (matches PresenceStateSchema.metadata)."
1352
- }
1353
- }
1354
- },
1355
- sys_activity: {
1356
- label: "Activity",
1357
- pluralLabel: "Activities",
1358
- description: "Recent activity stream entries (lightweight, denormalized)",
1359
- fields: {
1360
- id: {
1361
- label: "Activity ID"
1362
- },
1363
- timestamp: {
1364
- label: "Timestamp"
1328
+ dedup_key: {
1329
+ label: "Dedup Key",
1330
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
1365
1331
  },
1366
- type: {
1367
- label: "Type",
1368
- options: {
1369
- created: "created",
1370
- updated: "updated",
1371
- deleted: "deleted",
1372
- commented: "commented",
1373
- mentioned: "mentioned",
1374
- shared: "shared",
1375
- assigned: "assigned",
1376
- completed: "completed",
1377
- login: "login",
1378
- logout: "logout",
1379
- system: "system"
1380
- }
1332
+ source_object: {
1333
+ label: "Source Object",
1334
+ help: "Object name of the related record (e.g. lead, opportunity)"
1381
1335
  },
1382
- summary: {
1383
- label: "Summary",
1384
- help: "Human-readable one-line summary"
1336
+ source_id: {
1337
+ label: "Source Record",
1338
+ help: "Record id within source_object"
1385
1339
  },
1386
1340
  actor_id: {
1387
- label: "Actor"
1388
- },
1389
- actor_name: {
1390
- label: "Actor Name"
1391
- },
1392
- actor_avatar_url: {
1393
- label: "Actor Avatar"
1394
- },
1395
- object_name: {
1396
- label: "Object",
1397
- help: "Target object short name (e.g. account, sys_user)"
1398
- },
1399
- record_id: {
1400
- label: "Record ID"
1401
- },
1402
- record_label: {
1403
- label: "Record Label",
1404
- help: "Display label of the target record at write time"
1405
- },
1406
- url: {
1407
- label: "URL",
1408
- help: "Optional deep-link to the activity target"
1409
- },
1410
- environment_id: {
1411
- label: "Project",
1412
- help: "Environment context (multi-environment deployments)"
1413
- },
1414
- metadata: {
1415
- label: "Metadata",
1416
- help: "JSON-serialized additional context"
1417
- }
1418
- }
1419
- },
1420
- sys_comment: {
1421
- label: "Comment",
1422
- pluralLabel: "Comments",
1423
- description: "Threaded comments attached to records via thread_id",
1424
- fields: {
1425
- id: {
1426
- label: "Comment ID"
1427
- },
1428
- thread_id: {
1429
- label: "Thread",
1430
- help: "Thread identifier \u2014 conventionally `{object}:{record_id}` (e.g. `sys_user:abc123`)"
1431
- },
1432
- parent_id: {
1433
- label: "Parent Comment",
1434
- help: "Optional parent comment for nested replies"
1435
- },
1436
- reply_count: {
1437
- label: "Reply Count"
1438
- },
1439
- author_id: {
1440
- label: "Author"
1441
- },
1442
- author_name: {
1443
- label: "Author Name"
1444
- },
1445
- author_avatar_url: {
1446
- label: "Author Avatar"
1447
- },
1448
- body: {
1449
- label: "Body",
1450
- help: "Comment text (Markdown supported)"
1451
- },
1452
- mentions: {
1453
- label: "Mentions",
1454
- help: "JSON array of @mention objects"
1455
- },
1456
- reactions: {
1457
- label: "Reactions",
1458
- help: "JSON array of emoji reaction objects"
1459
- },
1460
- is_edited: {
1461
- label: "Edited"
1462
- },
1463
- edited_at: {
1464
- label: "Edited At"
1465
- },
1466
- visibility: {
1467
- label: "Visibility",
1468
- options: {
1469
- public: "public",
1470
- internal: "internal",
1471
- private: "private"
1472
- }
1341
+ label: "Actor",
1342
+ help: "User who caused the notification (mentioner, assigner)"
1473
1343
  },
1474
1344
  created_at: {
1475
1345
  label: "Created At"
1346
+ }
1347
+ },
1348
+ _views: {
1349
+ recent: {
1350
+ label: "Recent"
1476
1351
  },
1477
- updated_at: {
1478
- label: "Updated At"
1352
+ by_topic: {
1353
+ label: "By Topic"
1479
1354
  }
1480
1355
  }
1481
1356
  },
@@ -1540,60 +1415,6 @@ var enObjects = {
1540
1415
  }
1541
1416
  }
1542
1417
  },
1543
- sys_notification: {
1544
- label: "Notification",
1545
- pluralLabel: "Notifications",
1546
- description: "Per-user notification inbox entries",
1547
- fields: {
1548
- id: {
1549
- label: "Notification ID"
1550
- },
1551
- topic: {
1552
- label: "Topic",
1553
- help: "Notification topic, e.g. task.assigned, collab.mention"
1554
- },
1555
- payload: {
1556
- label: "Payload",
1557
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
1558
- },
1559
- severity: {
1560
- label: "Severity",
1561
- help: "Severity hint for rendering / filtering",
1562
- options: {
1563
- info: "info",
1564
- warning: "warning",
1565
- critical: "critical"
1566
- }
1567
- },
1568
- dedup_key: {
1569
- label: "Dedup Key",
1570
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
1571
- },
1572
- source_object: {
1573
- label: "Source Object",
1574
- help: "Object name of the related record (e.g. lead, opportunity)"
1575
- },
1576
- source_id: {
1577
- label: "Source Record",
1578
- help: "Record id within source_object"
1579
- },
1580
- actor_id: {
1581
- label: "Actor",
1582
- help: "User who caused the notification (mentioner, assigner)"
1583
- },
1584
- created_at: {
1585
- label: "Created At"
1586
- }
1587
- },
1588
- _views: {
1589
- recent: {
1590
- label: "Recent"
1591
- },
1592
- by_topic: {
1593
- label: "By Topic"
1594
- }
1595
- }
1596
- },
1597
1418
  sys_email: {
1598
1419
  label: "Email",
1599
1420
  pluralLabel: "Emails",
@@ -2498,6 +2319,11 @@ var enObjects = {
2498
2319
  label: "Ciphertext",
2499
2320
  help: "Provider-encoded ciphertext blob (base64 / JSON). Implementation-defined; only the matching ICryptoProvider can read it."
2500
2321
  }
2322
+ },
2323
+ _views: {
2324
+ all: {
2325
+ label: "All Secrets"
2326
+ }
2501
2327
  }
2502
2328
  },
2503
2329
  sys_setting_audit: {
@@ -2573,6 +2399,11 @@ var enObjects = {
2573
2399
  label: "Request ID",
2574
2400
  help: "Correlates with sys_audit_log / tracing."
2575
2401
  }
2402
+ },
2403
+ _views: {
2404
+ recent: {
2405
+ label: "Recent"
2406
+ }
2576
2407
  }
2577
2408
  }
2578
2409
  };
@@ -2625,7 +2456,7 @@ var en = {
2625
2456
  nav_organizations: { label: "Organizations" },
2626
2457
  nav_invitations: { label: "Invitations" },
2627
2458
  // Access Control
2628
- nav_roles: { label: "Roles" },
2459
+ nav_positions: { label: "Positions" },
2629
2460
  nav_permission_sets: { label: "Permission Sets" },
2630
2461
  nav_sharing_rules: { label: "Sharing Rules" },
2631
2462
  nav_record_shares: { label: "Record Shares" },
@@ -2782,14 +2613,64 @@ var zhCNObjects = {
2782
2613
  label: "\u5C01\u7981\u5230\u671F\u65F6\u95F4",
2783
2614
  help: "\u8BBE\u7F6E\u540E\uFF0C\u5230\u8FBE\u8BE5\u65F6\u95F4\u4F1A\u81EA\u52A8\u89E3\u9664\u5C01\u7981\u3002"
2784
2615
  },
2616
+ failed_login_count: {
2617
+ label: "Failed Login Count",
2618
+ help: "Consecutive failed sign-in attempts; reset to 0 on success. Maintained by the auth manager."
2619
+ },
2620
+ locked_until: {
2621
+ label: "Locked Until",
2622
+ 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."
2623
+ },
2624
+ password_changed_at: {
2625
+ label: "Password Changed At",
2626
+ help: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
2627
+ },
2628
+ phone_number: {
2629
+ label: "Phone Number",
2630
+ help: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
2631
+ },
2632
+ phone_number_verified: {
2633
+ label: "Phone Verified",
2634
+ help: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
2635
+ },
2636
+ must_change_password: {
2637
+ label: "Must Change Password",
2638
+ help: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
2639
+ },
2640
+ mfa_required_at: {
2641
+ label: "MFA Required At",
2642
+ help: "When enforced MFA first applied to this user (grace-period clock). Backs mfa_required; system-managed."
2643
+ },
2644
+ last_login_at: {
2645
+ label: "Last Login At",
2646
+ help: "Timestamp of the last successful sign-in. Stamped by the auth manager; system-managed."
2647
+ },
2648
+ last_login_ip: {
2649
+ label: "Last Login IP",
2650
+ help: "Client IP of the last successful sign-in (from the trusted proxy forwarded header). System-managed."
2651
+ },
2652
+ ai_access: {
2653
+ label: "AI Access",
2654
+ 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)."
2655
+ },
2785
2656
  image: {
2786
2657
  label: "\u5934\u50CF"
2787
2658
  },
2788
2659
  manager_id: {
2789
- label: "\u7ECF\u7406"
2660
+ label: "\u7ECF\u7406",
2661
+ help: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
2790
2662
  },
2791
2663
  primary_business_unit_id: {
2792
- label: "\u4E3B\u5C5E\u4E1A\u52A1\u5355\u5143"
2664
+ label: "\u4E3B\u5C5E\u4E1A\u52A1\u5355\u5143",
2665
+ 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."
2666
+ },
2667
+ source: {
2668
+ label: "Identity Source",
2669
+ 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.",
2670
+ options: {
2671
+ idp_provisioned: "IdP-Provisioned",
2672
+ env_native: "Env-Native"
2673
+ }
2793
2674
  },
2794
2675
  id: {
2795
2676
  label: "\u7528\u6237 ID"
@@ -2832,6 +2713,14 @@ var zhCNObjects = {
2832
2713
  label: "\u89E3\u9664\u5C01\u7981",
2833
2714
  successMessage: "\u7528\u6237\u5DF2\u89E3\u9664\u5C01\u7981"
2834
2715
  },
2716
+ unlock_user: {
2717
+ label: "Unlock Account",
2718
+ successMessage: "Account unlocked"
2719
+ },
2720
+ create_user: {
2721
+ label: "Create User",
2722
+ successMessage: "User created"
2723
+ },
2835
2724
  set_user_password: {
2836
2725
  label: "\u8BBE\u7F6E\u5BC6\u7801",
2837
2726
  successMessage: "\u5BC6\u7801\u5DF2\u66F4\u65B0"
@@ -2893,7 +2782,19 @@ var zhCNObjects = {
2893
2782
  expires_at: {
2894
2783
  label: "\u8FC7\u671F\u65F6\u95F4"
2895
2784
  },
2896
- active_organization_id: {
2785
+ last_activity_at: {
2786
+ label: "Last Activity At",
2787
+ help: "Timestamp of the last request on this session; drives idle-timeout. System-managed."
2788
+ },
2789
+ revoked_at: {
2790
+ label: "Revoked At",
2791
+ help: "When set, this session was revoked (idle / absolute-max / concurrent-cap / admin). System-managed."
2792
+ },
2793
+ revoke_reason: {
2794
+ label: "Revoke Reason",
2795
+ help: "Why the session was revoked (idle_timeout, absolute_max, concurrent_cap, \u2026)."
2796
+ },
2797
+ active_organization_id: {
2897
2798
  label: "\u5F53\u524D\u7EC4\u7EC7"
2898
2799
  },
2899
2800
  active_team_id: {
@@ -2991,6 +2892,10 @@ var zhCNObjects = {
2991
2892
  password: {
2992
2893
  label: "\u5BC6\u7801\u54C8\u5E0C",
2993
2894
  help: "\u90AE\u7BB1/\u5BC6\u7801\u63D0\u4F9B\u65B9\u4F7F\u7528\u7684\u5BC6\u7801\u54C8\u5E0C"
2895
+ },
2896
+ previous_password_hashes: {
2897
+ label: "Previous Password Hashes",
2898
+ help: "JSON array of prior password hashes (bounded by password_history_count); reuse-prevention only. System-managed."
2994
2899
  }
2995
2900
  },
2996
2901
  _views: {
@@ -3061,6 +2966,10 @@ var zhCNObjects = {
3061
2966
  label: "\u5143\u6570\u636E",
3062
2967
  help: "JSON \u5E8F\u5217\u5316\u7684\u7EC4\u7EC7\u5143\u6570\u636E"
3063
2968
  },
2969
+ require_mfa: {
2970
+ label: "Require Multi-Factor Auth",
2971
+ help: "When true, every member of this organization must enroll an authenticator app to access data."
2972
+ },
3064
2973
  id: {
3065
2974
  label: "\u7EC4\u7EC7 ID"
3066
2975
  },
@@ -3385,6 +3294,9 @@ var zhCNObjects = {
3385
3294
  }
3386
3295
  },
3387
3296
  _views: {
3297
+ org_chart: {
3298
+ label: "Org Chart"
3299
+ },
3388
3300
  active: {
3389
3301
  label: "\u542F\u7528"
3390
3302
  },
@@ -3966,263 +3878,57 @@ var zhCNObjects = {
3966
3878
  }
3967
3879
  }
3968
3880
  },
3969
- sys_audit_log: {
3970
- label: "\u5BA1\u8BA1\u65E5\u5FD7",
3971
- pluralLabel: "\u5BA1\u8BA1\u65E5\u5FD7",
3972
- description: "\u5E73\u53F0\u4E8B\u4EF6\u7684\u4E0D\u53EF\u53D8\u5BA1\u8BA1\u8FFD\u8E2A",
3973
- fields: {
3974
- created_at: {
3975
- label: "\u65F6\u95F4\u6233"
3976
- },
3977
- action: {
3978
- label: "\u64CD\u4F5C",
3979
- help: "\u64CD\u4F5C\u7C7B\u578B\uFF08snake_case\uFF09",
3980
- options: {
3981
- create: "\u521B\u5EFA",
3982
- update: "\u66F4\u65B0",
3983
- delete: "\u5220\u9664",
3984
- restore: "\u6062\u590D",
3985
- login: "\u767B\u5F55",
3986
- logout: "\u767B\u51FA",
3987
- permission_change: "\u6743\u9650\u53D8\u66F4",
3988
- config_change: "\u914D\u7F6E\u53D8\u66F4",
3989
- export: "\u5BFC\u51FA",
3990
- import: "\u5BFC\u5165"
3991
- }
3992
- },
3993
- user_id: {
3994
- label: "\u6267\u884C\u4EBA",
3995
- help: "\u6267\u884C\u8BE5\u64CD\u4F5C\u7684\u7528\u6237\uFF08\u7CFB\u7EDF\u64CD\u4F5C\u65F6\u4E3A null\uFF09"
3996
- },
3997
- object_name: {
3998
- label: "\u5BF9\u8C61",
3999
- help: "\u76EE\u6807\u5BF9\u8C61\uFF08\u4F8B\u5982 sys_user\u3001project_task\uFF09"
4000
- },
4001
- record_id: {
4002
- label: "\u8BB0\u5F55 ID",
4003
- help: "\u53D7\u5F71\u54CD\u8BB0\u5F55\u7684 ID"
4004
- },
4005
- old_value: {
4006
- label: "\u65E7\u503C",
4007
- help: "\u65E7\u72B6\u6001\u7684 JSON \u5E8F\u5217\u5316\u5185\u5BB9"
4008
- },
4009
- new_value: {
4010
- label: "\u65B0\u503C",
4011
- help: "\u65B0\u72B6\u6001\u7684 JSON \u5E8F\u5217\u5316\u5185\u5BB9"
4012
- },
4013
- ip_address: {
4014
- label: "IP \u5730\u5740"
4015
- },
4016
- user_agent: {
4017
- label: "\u7528\u6237\u4EE3\u7406"
4018
- },
4019
- tenant_id: {
4020
- label: "\u79DF\u6237",
4021
- help: "\u7528\u4E8E\u591A\u79DF\u6237\u9694\u79BB\u7684\u79DF\u6237\u4E0A\u4E0B\u6587"
4022
- },
4023
- metadata: {
4024
- label: "\u5143\u6570\u636E",
4025
- help: "\u9644\u52A0\u4E0A\u4E0B\u6587\u7684 JSON \u5E8F\u5217\u5316\u5185\u5BB9"
4026
- },
4027
- id: {
4028
- label: "\u5BA1\u8BA1\u65E5\u5FD7 ID"
4029
- }
4030
- },
4031
- _views: {
4032
- recent: {
4033
- label: "\u6700\u8FD1"
4034
- },
4035
- writes_only: {
4036
- label: "\u5199\u5165"
4037
- },
4038
- auth_events: {
4039
- label: "\u8BA4\u8BC1"
4040
- },
4041
- config_changes: {
4042
- label: "\u914D\u7F6E"
4043
- },
4044
- all_events: {
4045
- label: "\u5168\u90E8"
4046
- }
4047
- }
4048
- },
4049
- sys_presence: {
4050
- label: "\u5728\u7EBF\u72B6\u6001",
4051
- pluralLabel: "\u5728\u7EBF\u72B6\u6001",
4052
- description: "\u5B9E\u65F6\u7528\u6237\u5728\u7EBF\u4E0E\u6D3B\u52A8\u8DDF\u8E2A",
3881
+ sys_notification: {
3882
+ label: "\u901A\u77E5",
3883
+ pluralLabel: "\u901A\u77E5",
3884
+ description: "\u6309\u7528\u6237\u5B58\u50A8\u7684\u901A\u77E5\u6536\u4EF6\u7BB1\u6761\u76EE",
4053
3885
  fields: {
4054
3886
  id: {
4055
- label: "\u5728\u7EBF\u72B6\u6001 ID"
4056
- },
4057
- created_at: {
4058
- label: "\u521B\u5EFA\u65F6\u95F4"
4059
- },
4060
- updated_at: {
4061
- label: "\u66F4\u65B0\u65F6\u95F4"
4062
- },
4063
- user_id: {
4064
- label: "\u7528\u6237"
4065
- },
4066
- session_id: {
4067
- label: "\u4F1A\u8BDD"
4068
- },
4069
- status: {
4070
- label: "\u72B6\u6001",
4071
- options: {
4072
- online: "\u5728\u7EBF",
4073
- away: "\u79BB\u5F00",
4074
- busy: "\u5FD9\u788C",
4075
- offline: "\u79BB\u7EBF"
4076
- }
3887
+ label: "\u901A\u77E5 ID"
4077
3888
  },
4078
- last_seen: {
4079
- label: "\u6700\u8FD1\u5728\u7EBF\u65F6\u95F4"
3889
+ topic: {
3890
+ label: "Topic",
3891
+ help: "Notification topic, e.g. task.assigned, collab.mention"
4080
3892
  },
4081
- current_location: {
4082
- label: "\u5F53\u524D\u4F4D\u7F6E"
3893
+ payload: {
3894
+ label: "Payload",
3895
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
4083
3896
  },
4084
- device: {
4085
- label: "\u8BBE\u5907",
3897
+ severity: {
3898
+ label: "Severity",
3899
+ help: "Severity hint for rendering / filtering",
4086
3900
  options: {
4087
- desktop: "\u684C\u9762\u7AEF",
4088
- mobile: "\u79FB\u52A8\u7AEF",
4089
- tablet: "\u5E73\u677F\u7AEF",
4090
- other: "\u5176\u4ED6"
3901
+ info: "info",
3902
+ warning: "warning",
3903
+ critical: "critical"
4091
3904
  }
4092
3905
  },
4093
- custom_status: {
4094
- label: "\u81EA\u5B9A\u4E49\u72B6\u6001"
4095
- },
4096
- metadata: {
4097
- label: "\u5143\u6570\u636E",
4098
- help: "\u4E0E\u5728\u7EBF\u72B6\u6001\u5173\u8054\u7684\u4EFB\u610F JSON \u5143\u6570\u636E\uFF08\u5BF9\u5E94 PresenceStateSchema.metadata\uFF09\u3002"
4099
- }
4100
- }
4101
- },
4102
- sys_activity: {
4103
- label: "\u6D3B\u52A8",
4104
- pluralLabel: "\u6D3B\u52A8",
4105
- description: "\u6700\u8FD1\u6D3B\u52A8\u6D41\u6761\u76EE\uFF08\u8F7B\u91CF\u3001\u53BB\u89C4\u8303\u5316\uFF09",
4106
- fields: {
4107
- id: {
4108
- label: "\u6D3B\u52A8 ID"
4109
- },
4110
- timestamp: {
4111
- label: "\u65F6\u95F4\u6233"
3906
+ dedup_key: {
3907
+ label: "Dedup Key",
3908
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
4112
3909
  },
4113
- type: {
4114
- label: "\u7C7B\u578B",
4115
- options: {
4116
- created: "\u5DF2\u521B\u5EFA",
4117
- updated: "\u5DF2\u66F4\u65B0",
4118
- deleted: "\u5DF2\u5220\u9664",
4119
- commented: "\u5DF2\u8BC4\u8BBA",
4120
- mentioned: "\u88AB\u63D0\u53CA",
4121
- shared: "\u5DF2\u5171\u4EAB",
4122
- assigned: "\u5DF2\u5206\u914D",
4123
- completed: "\u5DF2\u5B8C\u6210",
4124
- login: "\u767B\u5F55",
4125
- logout: "\u767B\u51FA",
4126
- system: "\u7CFB\u7EDF"
4127
- }
3910
+ source_object: {
3911
+ label: "\u6765\u6E90\u5BF9\u8C61",
3912
+ help: "\u5173\u8054\u8BB0\u5F55\u7684\u5BF9\u8C61\u540D\u79F0\uFF08\u4F8B\u5982 lead\u3001opportunity\uFF09"
4128
3913
  },
4129
- summary: {
4130
- label: "\u6458\u8981",
4131
- help: "\u4EBA\u7C7B\u53EF\u8BFB\u7684\u5355\u884C\u6458\u8981"
3914
+ source_id: {
3915
+ label: "\u6765\u6E90\u8BB0\u5F55",
3916
+ help: "source_object \u4E2D\u7684\u8BB0\u5F55 ID"
4132
3917
  },
4133
3918
  actor_id: {
4134
- label: "\u6267\u884C\u4EBA"
4135
- },
4136
- actor_name: {
4137
- label: "\u6267\u884C\u4EBA\u540D\u79F0"
4138
- },
4139
- actor_avatar_url: {
4140
- label: "\u6267\u884C\u4EBA\u5934\u50CF"
4141
- },
4142
- object_name: {
4143
- label: "\u5BF9\u8C61",
4144
- help: "\u76EE\u6807\u5BF9\u8C61\u77ED\u540D\u79F0\uFF08\u4F8B\u5982 account\u3001sys_user\uFF09"
4145
- },
4146
- record_id: {
4147
- label: "\u8BB0\u5F55 ID"
4148
- },
4149
- record_label: {
4150
- label: "\u8BB0\u5F55\u6807\u7B7E",
4151
- help: "\u5199\u5165\u65F6\u76EE\u6807\u8BB0\u5F55\u7684\u663E\u793A\u6807\u7B7E"
4152
- },
4153
- url: {
4154
- label: "URL",
4155
- help: "\u6307\u5411\u6D3B\u52A8\u76EE\u6807\u7684\u53EF\u9009\u6DF1\u5EA6\u94FE\u63A5"
4156
- },
4157
- environment_id: {
4158
- label: "\u9879\u76EE",
4159
- help: "\u9879\u76EE\u4E0A\u4E0B\u6587\uFF08\u591A\u9879\u76EE\u90E8\u7F72\uFF09"
4160
- },
4161
- metadata: {
4162
- label: "\u5143\u6570\u636E",
4163
- help: "\u9644\u52A0\u4E0A\u4E0B\u6587\u7684 JSON \u5E8F\u5217\u5316\u5185\u5BB9"
4164
- }
4165
- }
4166
- },
4167
- sys_comment: {
4168
- label: "\u8BC4\u8BBA",
4169
- pluralLabel: "\u8BC4\u8BBA",
4170
- description: "\u901A\u8FC7 thread_id \u9644\u52A0\u5230\u8BB0\u5F55\u7684\u7EBF\u7A0B\u5316\u8BC4\u8BBA",
4171
- fields: {
4172
- id: {
4173
- label: "\u8BC4\u8BBA ID"
4174
- },
4175
- thread_id: {
4176
- label: "\u7EBF\u7A0B",
4177
- help: "\u7EBF\u7A0B\u6807\u8BC6\u2014\u2014\u7EA6\u5B9A\u683C\u5F0F\u4E3A `{object}:{record_id}`\uFF08\u4F8B\u5982 `sys_user:abc123`\uFF09"
4178
- },
4179
- parent_id: {
4180
- label: "\u7236\u8BC4\u8BBA",
4181
- help: "\u53EF\u9009\u7684\u7236\u8BC4\u8BBA\uFF0C\u7528\u4E8E\u5D4C\u5957\u56DE\u590D"
4182
- },
4183
- reply_count: {
4184
- label: "\u56DE\u590D\u6570"
4185
- },
4186
- author_id: {
4187
- label: "\u4F5C\u8005"
4188
- },
4189
- author_name: {
4190
- label: "\u4F5C\u8005\u540D\u79F0"
4191
- },
4192
- author_avatar_url: {
4193
- label: "\u4F5C\u8005\u5934\u50CF"
4194
- },
4195
- body: {
4196
- label: "\u6B63\u6587",
4197
- help: "\u8BC4\u8BBA\u6587\u672C\uFF08\u652F\u6301 Markdown\uFF09"
4198
- },
4199
- mentions: {
4200
- label: "\u63D0\u53CA",
4201
- help: "@mention \u5BF9\u8C61\u7684 JSON \u6570\u7EC4"
4202
- },
4203
- reactions: {
4204
- label: "\u56DE\u5E94",
4205
- help: "\u8868\u60C5\u56DE\u5E94\u5BF9\u8C61\u7684 JSON \u6570\u7EC4"
4206
- },
4207
- is_edited: {
4208
- label: "\u5DF2\u7F16\u8F91"
4209
- },
4210
- edited_at: {
4211
- label: "\u7F16\u8F91\u65F6\u95F4"
4212
- },
4213
- visibility: {
4214
- label: "\u53EF\u89C1\u6027",
4215
- options: {
4216
- public: "\u516C\u5F00",
4217
- internal: "\u5185\u90E8",
4218
- private: "\u79C1\u6709"
4219
- }
3919
+ label: "\u6267\u884C\u4EBA",
3920
+ help: "\u89E6\u53D1\u8BE5\u901A\u77E5\u7684\u7528\u6237\uFF08\u63D0\u53CA\u4EBA\u3001\u5206\u914D\u4EBA\uFF09"
4220
3921
  },
4221
3922
  created_at: {
4222
3923
  label: "\u521B\u5EFA\u65F6\u95F4"
3924
+ }
3925
+ },
3926
+ _views: {
3927
+ recent: {
3928
+ label: "Recent"
4223
3929
  },
4224
- updated_at: {
4225
- label: "\u66F4\u65B0\u65F6\u95F4"
3930
+ by_topic: {
3931
+ label: "By Topic"
4226
3932
  }
4227
3933
  }
4228
3934
  },
@@ -4287,60 +3993,6 @@ var zhCNObjects = {
4287
3993
  }
4288
3994
  }
4289
3995
  },
4290
- sys_notification: {
4291
- label: "\u901A\u77E5",
4292
- pluralLabel: "\u901A\u77E5",
4293
- description: "\u6309\u7528\u6237\u5B58\u50A8\u7684\u901A\u77E5\u6536\u4EF6\u7BB1\u6761\u76EE",
4294
- fields: {
4295
- id: {
4296
- label: "\u901A\u77E5 ID"
4297
- },
4298
- topic: {
4299
- label: "Topic",
4300
- help: "Notification topic, e.g. task.assigned, collab.mention"
4301
- },
4302
- payload: {
4303
- label: "Payload",
4304
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
4305
- },
4306
- severity: {
4307
- label: "Severity",
4308
- help: "Severity hint for rendering / filtering",
4309
- options: {
4310
- info: "info",
4311
- warning: "warning",
4312
- critical: "critical"
4313
- }
4314
- },
4315
- dedup_key: {
4316
- label: "Dedup Key",
4317
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
4318
- },
4319
- source_object: {
4320
- label: "\u6765\u6E90\u5BF9\u8C61",
4321
- help: "\u5173\u8054\u8BB0\u5F55\u7684\u5BF9\u8C61\u540D\u79F0\uFF08\u4F8B\u5982 lead\u3001opportunity\uFF09"
4322
- },
4323
- source_id: {
4324
- label: "\u6765\u6E90\u8BB0\u5F55",
4325
- help: "source_object \u4E2D\u7684\u8BB0\u5F55 ID"
4326
- },
4327
- actor_id: {
4328
- label: "\u6267\u884C\u4EBA",
4329
- help: "\u89E6\u53D1\u8BE5\u901A\u77E5\u7684\u7528\u6237\uFF08\u63D0\u53CA\u4EBA\u3001\u5206\u914D\u4EBA\uFF09"
4330
- },
4331
- created_at: {
4332
- label: "\u521B\u5EFA\u65F6\u95F4"
4333
- }
4334
- },
4335
- _views: {
4336
- recent: {
4337
- label: "Recent"
4338
- },
4339
- by_topic: {
4340
- label: "By Topic"
4341
- }
4342
- }
4343
- },
4344
3996
  sys_email: {
4345
3997
  label: "\u90AE\u4EF6",
4346
3998
  pluralLabel: "\u90AE\u4EF6",
@@ -5245,6 +4897,11 @@ var zhCNObjects = {
5245
4897
  label: "\u5BC6\u6587",
5246
4898
  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"
5247
4899
  }
4900
+ },
4901
+ _views: {
4902
+ all: {
4903
+ label: "All Secrets"
4904
+ }
5248
4905
  }
5249
4906
  },
5250
4907
  sys_setting_audit: {
@@ -5320,6 +4977,11 @@ var zhCNObjects = {
5320
4977
  label: "\u8BF7\u6C42 ID",
5321
4978
  help: "\u4E0E sys_audit_log / tracing \u5173\u8054\u3002"
5322
4979
  }
4980
+ },
4981
+ _views: {
4982
+ recent: {
4983
+ label: "Recent"
4984
+ }
5323
4985
  }
5324
4986
  }
5325
4987
  };
@@ -5368,12 +5030,13 @@ var zhCN = {
5368
5030
  nav_teams: { label: "\u56E2\u961F" },
5369
5031
  nav_organizations: { label: "\u7EC4\u7EC7" },
5370
5032
  nav_invitations: { label: "\u9080\u8BF7" },
5371
- nav_roles: { label: "\u89D2\u8272" },
5033
+ nav_positions: { label: "\u5C97\u4F4D" },
5372
5034
  nav_capabilities: { label: "\u80FD\u529B" },
5373
5035
  nav_permission_sets: { label: "\u6743\u9650\u96C6" },
5374
5036
  nav_sharing_rules: { label: "\u5171\u4EAB\u89C4\u5219" },
5375
5037
  nav_record_shares: { label: "\u8BB0\u5F55\u5171\u4EAB" },
5376
5038
  nav_api_keys: { label: "API \u5BC6\u94A5" },
5039
+ nav_connect_agent: { label: "\u8FDE\u63A5\u667A\u80FD\u4F53" },
5377
5040
  nav_approval_processes: { label: "\u5BA1\u6279\u6D41\u7A0B" },
5378
5041
  nav_approval_requests: { label: "\u5BA1\u6279\u7533\u8BF7" },
5379
5042
  nav_approval_actions: { label: "\u5BA1\u6279\u5386\u53F2" },
@@ -5492,14 +5155,64 @@ var jaJPObjects = {
5492
5155
  label: "\u5229\u7528\u505C\u6B62\u671F\u9650",
5493
5156
  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"
5494
5157
  },
5158
+ failed_login_count: {
5159
+ label: "Failed Login Count",
5160
+ help: "Consecutive failed sign-in attempts; reset to 0 on success. Maintained by the auth manager."
5161
+ },
5162
+ locked_until: {
5163
+ label: "Locked Until",
5164
+ 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."
5165
+ },
5166
+ password_changed_at: {
5167
+ label: "Password Changed At",
5168
+ help: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
5169
+ },
5170
+ phone_number: {
5171
+ label: "Phone Number",
5172
+ help: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
5173
+ },
5174
+ phone_number_verified: {
5175
+ label: "Phone Verified",
5176
+ help: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
5177
+ },
5178
+ must_change_password: {
5179
+ label: "Must Change Password",
5180
+ help: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
5181
+ },
5182
+ mfa_required_at: {
5183
+ label: "MFA Required At",
5184
+ help: "When enforced MFA first applied to this user (grace-period clock). Backs mfa_required; system-managed."
5185
+ },
5186
+ last_login_at: {
5187
+ label: "Last Login At",
5188
+ help: "Timestamp of the last successful sign-in. Stamped by the auth manager; system-managed."
5189
+ },
5190
+ last_login_ip: {
5191
+ label: "Last Login IP",
5192
+ help: "Client IP of the last successful sign-in (from the trusted proxy forwarded header). System-managed."
5193
+ },
5194
+ ai_access: {
5195
+ label: "AI Access",
5196
+ 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)."
5197
+ },
5495
5198
  image: {
5496
5199
  label: "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u753B\u50CF"
5497
5200
  },
5498
5201
  manager_id: {
5499
- label: "\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC"
5202
+ label: "\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC",
5203
+ help: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
5500
5204
  },
5501
5205
  primary_business_unit_id: {
5502
- label: "\u4E3B\u6240\u5C5E\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8"
5206
+ label: "\u4E3B\u6240\u5C5E\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8",
5207
+ 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."
5208
+ },
5209
+ source: {
5210
+ label: "Identity Source",
5211
+ 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.",
5212
+ options: {
5213
+ idp_provisioned: "IdP-Provisioned",
5214
+ env_native: "Env-Native"
5215
+ }
5503
5216
  },
5504
5217
  id: {
5505
5218
  label: "\u30E6\u30FC\u30B6\u30FC ID"
@@ -5542,6 +5255,14 @@ var jaJPObjects = {
5542
5255
  label: "\u5229\u7528\u505C\u6B62\u3092\u89E3\u9664",
5543
5256
  successMessage: "\u30E6\u30FC\u30B6\u30FC\u306E\u5229\u7528\u505C\u6B62\u3092\u89E3\u9664\u3057\u307E\u3057\u305F"
5544
5257
  },
5258
+ unlock_user: {
5259
+ label: "Unlock Account",
5260
+ successMessage: "Account unlocked"
5261
+ },
5262
+ create_user: {
5263
+ label: "Create User",
5264
+ successMessage: "User created"
5265
+ },
5545
5266
  set_user_password: {
5546
5267
  label: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8A2D\u5B9A",
5547
5268
  successMessage: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u66F4\u65B0\u3057\u307E\u3057\u305F"
@@ -5603,6 +5324,18 @@ var jaJPObjects = {
5603
5324
  expires_at: {
5604
5325
  label: "\u6709\u52B9\u671F\u9650"
5605
5326
  },
5327
+ last_activity_at: {
5328
+ label: "Last Activity At",
5329
+ help: "Timestamp of the last request on this session; drives idle-timeout. System-managed."
5330
+ },
5331
+ revoked_at: {
5332
+ label: "Revoked At",
5333
+ help: "When set, this session was revoked (idle / absolute-max / concurrent-cap / admin). System-managed."
5334
+ },
5335
+ revoke_reason: {
5336
+ label: "Revoke Reason",
5337
+ help: "Why the session was revoked (idle_timeout, absolute_max, concurrent_cap, \u2026)."
5338
+ },
5606
5339
  active_organization_id: {
5607
5340
  label: "\u30A2\u30AF\u30C6\u30A3\u30D6\u7D44\u7E54"
5608
5341
  },
@@ -5701,6 +5434,10 @@ var jaJPObjects = {
5701
5434
  password: {
5702
5435
  label: "\u30D1\u30B9\u30EF\u30FC\u30C9\u30CF\u30C3\u30B7\u30E5",
5703
5436
  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"
5437
+ },
5438
+ previous_password_hashes: {
5439
+ label: "Previous Password Hashes",
5440
+ help: "JSON array of prior password hashes (bounded by password_history_count); reuse-prevention only. System-managed."
5704
5441
  }
5705
5442
  },
5706
5443
  _views: {
@@ -5771,6 +5508,10 @@ var jaJPObjects = {
5771
5508
  label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
5772
5509
  help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u7D44\u7E54\u30E1\u30BF\u30C7\u30FC\u30BF"
5773
5510
  },
5511
+ require_mfa: {
5512
+ label: "Require Multi-Factor Auth",
5513
+ help: "When true, every member of this organization must enroll an authenticator app to access data."
5514
+ },
5774
5515
  id: {
5775
5516
  label: "\u7D44\u7E54 ID"
5776
5517
  },
@@ -6095,6 +5836,9 @@ var jaJPObjects = {
6095
5836
  }
6096
5837
  },
6097
5838
  _views: {
5839
+ org_chart: {
5840
+ label: "Org Chart"
5841
+ },
6098
5842
  active: {
6099
5843
  label: "\u6709\u52B9"
6100
5844
  },
@@ -6676,263 +6420,57 @@ var jaJPObjects = {
6676
6420
  }
6677
6421
  }
6678
6422
  },
6679
- sys_audit_log: {
6680
- label: "\u76E3\u67FB\u30ED\u30B0",
6681
- pluralLabel: "\u76E3\u67FB\u30ED\u30B0",
6682
- description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30A4\u30D9\u30F3\u30C8\u306E\u4E0D\u5909\u306E\u76E3\u67FB\u8A3C\u8DE1",
6423
+ sys_notification: {
6424
+ label: "\u901A\u77E5",
6425
+ pluralLabel: "\u901A\u77E5",
6426
+ description: "\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u901A\u77E5\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u30A8\u30F3\u30C8\u30EA",
6683
6427
  fields: {
6684
- created_at: {
6685
- label: "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7"
6428
+ id: {
6429
+ label: "\u901A\u77E5 ID"
6686
6430
  },
6687
- action: {
6688
- label: "\u30A2\u30AF\u30B7\u30E7\u30F3",
6689
- help: "\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\uFF08snake_case\uFF09",
6690
- options: {
6691
- create: "\u4F5C\u6210",
6692
- update: "\u66F4\u65B0",
6693
- delete: "\u524A\u9664",
6694
- restore: "\u5FA9\u5143",
6695
- login: "\u30ED\u30B0\u30A4\u30F3",
6696
- logout: "\u30ED\u30B0\u30A2\u30A6\u30C8",
6697
- permission_change: "\u6A29\u9650\u5909\u66F4",
6698
- config_change: "\u69CB\u6210\u5909\u66F4",
6699
- export: "\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",
6700
- import: "\u30A4\u30F3\u30DD\u30FC\u30C8"
6701
- }
6702
- },
6703
- user_id: {
6704
- label: "\u64CD\u4F5C\u8005",
6705
- 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"
6706
- },
6707
- object_name: {
6708
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6709
- help: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08\u4F8B: sys_user\u3001project_task\uFF09"
6710
- },
6711
- record_id: {
6712
- label: "\u30EC\u30B3\u30FC\u30C9 ID",
6713
- help: "\u5F71\u97FF\u3092\u53D7\u3051\u305F\u30EC\u30B3\u30FC\u30C9\u306E ID"
6714
- },
6715
- old_value: {
6716
- label: "\u5909\u66F4\u524D\u306E\u5024",
6717
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u4EE5\u524D\u306E\u72B6\u614B"
6718
- },
6719
- new_value: {
6720
- label: "\u5909\u66F4\u5F8C\u306E\u5024",
6721
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u65B0\u3057\u3044\u72B6\u614B"
6722
- },
6723
- ip_address: {
6724
- label: "IP \u30A2\u30C9\u30EC\u30B9"
6725
- },
6726
- user_agent: {
6727
- label: "\u30E6\u30FC\u30B6\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8"
6728
- },
6729
- tenant_id: {
6730
- label: "\u30C6\u30CA\u30F3\u30C8",
6731
- help: "\u30DE\u30EB\u30C1\u30C6\u30CA\u30F3\u30C8\u5206\u96E2\u306E\u305F\u3081\u306E\u30C6\u30CA\u30F3\u30C8\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6732
- },
6733
- metadata: {
6734
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6735
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u8FFD\u52A0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6736
- },
6737
- id: {
6738
- label: "\u76E3\u67FB\u30ED\u30B0 ID"
6739
- }
6740
- },
6741
- _views: {
6742
- recent: {
6743
- label: "\u6700\u8FD1"
6744
- },
6745
- writes_only: {
6746
- label: "\u66F8\u304D\u8FBC\u307F"
6747
- },
6748
- auth_events: {
6749
- label: "\u8A8D\u8A3C"
6750
- },
6751
- config_changes: {
6752
- label: "\u69CB\u6210\u5909\u66F4"
6753
- },
6754
- all_events: {
6755
- label: "\u3059\u3079\u3066"
6756
- }
6757
- }
6758
- },
6759
- sys_presence: {
6760
- label: "\u5728\u5E2D\u72B6\u6CC1",
6761
- pluralLabel: "\u5728\u5E2D\u72B6\u6CC1",
6762
- 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",
6763
- fields: {
6764
- id: {
6765
- label: "\u5728\u5E2D ID"
6766
- },
6767
- created_at: {
6768
- label: "\u4F5C\u6210\u65E5\u6642"
6769
- },
6770
- updated_at: {
6771
- label: "\u66F4\u65B0\u65E5\u6642"
6772
- },
6773
- user_id: {
6774
- label: "\u30E6\u30FC\u30B6\u30FC"
6775
- },
6776
- session_id: {
6777
- label: "\u30BB\u30C3\u30B7\u30E7\u30F3"
6778
- },
6779
- status: {
6780
- label: "\u30B9\u30C6\u30FC\u30BF\u30B9",
6781
- options: {
6782
- online: "\u30AA\u30F3\u30E9\u30A4\u30F3",
6783
- away: "\u96E2\u5E2D\u4E2D",
6784
- busy: "\u53D6\u308A\u8FBC\u307F\u4E2D",
6785
- offline: "\u30AA\u30D5\u30E9\u30A4\u30F3"
6786
- }
6787
- },
6788
- last_seen: {
6789
- label: "\u6700\u7D42\u78BA\u8A8D\u65E5\u6642"
6431
+ topic: {
6432
+ label: "Topic",
6433
+ help: "Notification topic, e.g. task.assigned, collab.mention"
6790
6434
  },
6791
- current_location: {
6792
- label: "\u73FE\u5728\u5730"
6435
+ payload: {
6436
+ label: "Payload",
6437
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
6793
6438
  },
6794
- device: {
6795
- label: "\u30C7\u30D0\u30A4\u30B9",
6439
+ severity: {
6440
+ label: "Severity",
6441
+ help: "Severity hint for rendering / filtering",
6796
6442
  options: {
6797
- desktop: "\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7",
6798
- mobile: "\u30E2\u30D0\u30A4\u30EB",
6799
- tablet: "\u30BF\u30D6\u30EC\u30C3\u30C8",
6800
- other: "\u305D\u306E\u4ED6"
6443
+ info: "info",
6444
+ warning: "warning",
6445
+ critical: "critical"
6801
6446
  }
6802
6447
  },
6803
- custom_status: {
6804
- label: "\u30AB\u30B9\u30BF\u30E0\u30B9\u30C6\u30FC\u30BF\u30B9"
6805
- },
6806
- metadata: {
6807
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6808
- 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"
6809
- }
6810
- }
6811
- },
6812
- sys_activity: {
6813
- label: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
6814
- pluralLabel: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
6815
- 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",
6816
- fields: {
6817
- id: {
6818
- label: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 ID"
6819
- },
6820
- timestamp: {
6821
- label: "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7"
6448
+ dedup_key: {
6449
+ label: "Dedup Key",
6450
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
6822
6451
  },
6823
- type: {
6824
- label: "\u30BF\u30A4\u30D7",
6825
- options: {
6826
- created: "\u4F5C\u6210",
6827
- updated: "\u66F4\u65B0",
6828
- deleted: "\u524A\u9664",
6829
- commented: "\u30B3\u30E1\u30F3\u30C8",
6830
- mentioned: "\u30E1\u30F3\u30B7\u30E7\u30F3",
6831
- shared: "\u5171\u6709",
6832
- assigned: "\u5272\u308A\u5F53\u3066",
6833
- completed: "\u5B8C\u4E86",
6834
- login: "\u30ED\u30B0\u30A4\u30F3",
6835
- logout: "\u30ED\u30B0\u30A2\u30A6\u30C8",
6836
- system: "\u30B7\u30B9\u30C6\u30E0"
6837
- }
6452
+ source_object: {
6453
+ label: "\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6454
+ help: "\u95A2\u9023\u30EC\u30B3\u30FC\u30C9\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\uFF08\u4F8B: lead\u3001opportunity\uFF09"
6838
6455
  },
6839
- summary: {
6840
- label: "\u30B5\u30DE\u30EA\u30FC",
6841
- help: "\u5224\u5225\u3057\u3084\u3059\u3044 1 \u884C\u30B5\u30DE\u30EA\u30FC"
6456
+ source_id: {
6457
+ label: "\u30BD\u30FC\u30B9\u30EC\u30B3\u30FC\u30C9",
6458
+ help: "source_object \u5185\u306E\u30EC\u30B3\u30FC\u30C9 ID"
6842
6459
  },
6843
6460
  actor_id: {
6844
- label: "\u64CD\u4F5C\u8005"
6845
- },
6846
- actor_name: {
6847
- label: "\u64CD\u4F5C\u8005\u540D"
6848
- },
6849
- actor_avatar_url: {
6850
- label: "\u64CD\u4F5C\u8005\u30A2\u30D0\u30BF\u30FC"
6851
- },
6852
- object_name: {
6853
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6854
- help: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u77ED\u3044\u540D\u524D\uFF08\u4F8B: account\u3001sys_user\uFF09"
6855
- },
6856
- record_id: {
6857
- label: "\u30EC\u30B3\u30FC\u30C9 ID"
6858
- },
6859
- record_label: {
6860
- label: "\u30EC\u30B3\u30FC\u30C9\u8868\u793A\u540D",
6861
- help: "\u66F8\u304D\u8FBC\u307F\u6642\u70B9\u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u8868\u793A\u540D"
6862
- },
6863
- url: {
6864
- label: "URL",
6865
- 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"
6866
- },
6867
- environment_id: {
6868
- label: "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",
6869
- 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"
6870
- },
6871
- metadata: {
6872
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6873
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u8FFD\u52A0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6874
- }
6875
- }
6876
- },
6877
- sys_comment: {
6878
- label: "\u30B3\u30E1\u30F3\u30C8",
6879
- pluralLabel: "\u30B3\u30E1\u30F3\u30C8",
6880
- 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",
6881
- fields: {
6882
- id: {
6883
- label: "\u30B3\u30E1\u30F3\u30C8 ID"
6884
- },
6885
- thread_id: {
6886
- label: "\u30B9\u30EC\u30C3\u30C9",
6887
- help: "\u30B9\u30EC\u30C3\u30C9\u8B58\u5225\u5B50 \u2014 \u901A\u5E38\u306F `{object}:{record_id}`\uFF08\u4F8B: `sys_user:abc123`\uFF09"
6888
- },
6889
- parent_id: {
6890
- label: "\u89AA\u30B3\u30E1\u30F3\u30C8",
6891
- help: "\u30CD\u30B9\u30C8\u3057\u305F\u8FD4\u4FE1\u7528\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u89AA\u30B3\u30E1\u30F3\u30C8"
6892
- },
6893
- reply_count: {
6894
- label: "\u8FD4\u4FE1\u6570"
6895
- },
6896
- author_id: {
6897
- label: "\u6295\u7A3F\u8005"
6898
- },
6899
- author_name: {
6900
- label: "\u6295\u7A3F\u8005\u540D"
6901
- },
6902
- author_avatar_url: {
6903
- label: "\u6295\u7A3F\u8005\u30A2\u30D0\u30BF\u30FC"
6904
- },
6905
- body: {
6906
- label: "\u672C\u6587",
6907
- help: "\u30B3\u30E1\u30F3\u30C8\u30C6\u30AD\u30B9\u30C8\uFF08Markdown \u5BFE\u5FDC\uFF09"
6908
- },
6909
- mentions: {
6910
- label: "\u30E1\u30F3\u30B7\u30E7\u30F3",
6911
- help: "@\u30E1\u30F3\u30B7\u30E7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E JSON \u914D\u5217"
6912
- },
6913
- reactions: {
6914
- label: "\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3",
6915
- help: "\u7D75\u6587\u5B57\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E JSON \u914D\u5217"
6916
- },
6917
- is_edited: {
6918
- label: "\u7DE8\u96C6\u6E08\u307F"
6919
- },
6920
- edited_at: {
6921
- label: "\u7DE8\u96C6\u65E5\u6642"
6922
- },
6923
- visibility: {
6924
- label: "\u516C\u958B\u7BC4\u56F2",
6925
- options: {
6926
- public: "\u516C\u958B",
6927
- internal: "\u5185\u90E8",
6928
- private: "\u975E\u516C\u958B"
6929
- }
6461
+ label: "\u64CD\u4F5C\u8005",
6462
+ 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"
6930
6463
  },
6931
6464
  created_at: {
6932
6465
  label: "\u4F5C\u6210\u65E5\u6642"
6466
+ }
6467
+ },
6468
+ _views: {
6469
+ recent: {
6470
+ label: "Recent"
6933
6471
  },
6934
- updated_at: {
6935
- label: "\u66F4\u65B0\u65E5\u6642"
6472
+ by_topic: {
6473
+ label: "By Topic"
6936
6474
  }
6937
6475
  }
6938
6476
  },
@@ -6997,60 +6535,6 @@ var jaJPObjects = {
6997
6535
  }
6998
6536
  }
6999
6537
  },
7000
- sys_notification: {
7001
- label: "\u901A\u77E5",
7002
- pluralLabel: "\u901A\u77E5",
7003
- description: "\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u901A\u77E5\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u30A8\u30F3\u30C8\u30EA",
7004
- fields: {
7005
- id: {
7006
- label: "\u901A\u77E5 ID"
7007
- },
7008
- topic: {
7009
- label: "Topic",
7010
- help: "Notification topic, e.g. task.assigned, collab.mention"
7011
- },
7012
- payload: {
7013
- label: "Payload",
7014
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
7015
- },
7016
- severity: {
7017
- label: "Severity",
7018
- help: "Severity hint for rendering / filtering",
7019
- options: {
7020
- info: "info",
7021
- warning: "warning",
7022
- critical: "critical"
7023
- }
7024
- },
7025
- dedup_key: {
7026
- label: "Dedup Key",
7027
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
7028
- },
7029
- source_object: {
7030
- label: "\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
7031
- help: "\u95A2\u9023\u30EC\u30B3\u30FC\u30C9\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\uFF08\u4F8B: lead\u3001opportunity\uFF09"
7032
- },
7033
- source_id: {
7034
- label: "\u30BD\u30FC\u30B9\u30EC\u30B3\u30FC\u30C9",
7035
- help: "source_object \u5185\u306E\u30EC\u30B3\u30FC\u30C9 ID"
7036
- },
7037
- actor_id: {
7038
- label: "\u64CD\u4F5C\u8005",
7039
- 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"
7040
- },
7041
- created_at: {
7042
- label: "\u4F5C\u6210\u65E5\u6642"
7043
- }
7044
- },
7045
- _views: {
7046
- recent: {
7047
- label: "Recent"
7048
- },
7049
- by_topic: {
7050
- label: "By Topic"
7051
- }
7052
- }
7053
- },
7054
6538
  sys_email: {
7055
6539
  label: "\u30E1\u30FC\u30EB",
7056
6540
  pluralLabel: "\u30E1\u30FC\u30EB",
@@ -7955,6 +7439,11 @@ var jaJPObjects = {
7955
7439
  label: "\u6697\u53F7\u6587",
7956
7440
  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"
7957
7441
  }
7442
+ },
7443
+ _views: {
7444
+ all: {
7445
+ label: "All Secrets"
7446
+ }
7958
7447
  }
7959
7448
  },
7960
7449
  sys_setting_audit: {
@@ -8030,6 +7519,11 @@ var jaJPObjects = {
8030
7519
  label: "\u30EA\u30AF\u30A8\u30B9\u30C8 ID",
8031
7520
  help: "sys_audit_log / \u30C8\u30EC\u30FC\u30B7\u30F3\u30B0\u3068\u306E\u76F8\u95A2\u7528\u3002"
8032
7521
  }
7522
+ },
7523
+ _views: {
7524
+ recent: {
7525
+ label: "Recent"
7526
+ }
8033
7527
  }
8034
7528
  }
8035
7529
  };
@@ -8077,7 +7571,7 @@ var jaJP = {
8077
7571
  nav_teams: { label: "\u30C1\u30FC\u30E0" },
8078
7572
  nav_organizations: { label: "\u7D44\u7E54" },
8079
7573
  nav_invitations: { label: "\u62DB\u5F85" },
8080
- nav_roles: { label: "\u30ED\u30FC\u30EB" },
7574
+ nav_positions: { label: "\u30DD\u30B8\u30B7\u30E7\u30F3" },
8081
7575
  nav_permission_sets: { label: "\u6A29\u9650\u30BB\u30C3\u30C8" },
8082
7576
  nav_sharing_rules: { label: "\u5171\u6709\u30EB\u30FC\u30EB" },
8083
7577
  nav_record_shares: { label: "\u30EC\u30B3\u30FC\u30C9\u5171\u6709" },
@@ -8199,14 +7693,64 @@ var esESObjects = {
8199
7693
  label: "El bloqueo caduca el",
8200
7694
  help: "Si se establece, el bloqueo se elimina autom\xE1ticamente en ese momento."
8201
7695
  },
7696
+ failed_login_count: {
7697
+ label: "Failed Login Count",
7698
+ help: "Consecutive failed sign-in attempts; reset to 0 on success. Maintained by the auth manager."
7699
+ },
7700
+ locked_until: {
7701
+ label: "Locked Until",
7702
+ 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."
7703
+ },
7704
+ password_changed_at: {
7705
+ label: "Password Changed At",
7706
+ help: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
7707
+ },
7708
+ phone_number: {
7709
+ label: "Phone Number",
7710
+ help: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
7711
+ },
7712
+ phone_number_verified: {
7713
+ label: "Phone Verified",
7714
+ help: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
7715
+ },
7716
+ must_change_password: {
7717
+ label: "Must Change Password",
7718
+ help: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
7719
+ },
7720
+ mfa_required_at: {
7721
+ label: "MFA Required At",
7722
+ help: "When enforced MFA first applied to this user (grace-period clock). Backs mfa_required; system-managed."
7723
+ },
7724
+ last_login_at: {
7725
+ label: "Last Login At",
7726
+ help: "Timestamp of the last successful sign-in. Stamped by the auth manager; system-managed."
7727
+ },
7728
+ last_login_ip: {
7729
+ label: "Last Login IP",
7730
+ help: "Client IP of the last successful sign-in (from the trusted proxy forwarded header). System-managed."
7731
+ },
7732
+ ai_access: {
7733
+ label: "AI Access",
7734
+ 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)."
7735
+ },
8202
7736
  image: {
8203
7737
  label: "Imagen de perfil"
8204
7738
  },
8205
7739
  manager_id: {
8206
- label: "Gerente"
7740
+ label: "Gerente",
7741
+ help: "This user's direct manager. Forms the reporting chain the `own_and_reports` hierarchy scope walks (ADR-0057 / @objectstack/security-enterprise)."
8207
7742
  },
8208
7743
  primary_business_unit_id: {
8209
- label: "Unidad de negocio principal"
7744
+ label: "Unidad de negocio principal",
7745
+ 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."
7746
+ },
7747
+ source: {
7748
+ label: "Identity Source",
7749
+ 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.",
7750
+ options: {
7751
+ idp_provisioned: "IdP-Provisioned",
7752
+ env_native: "Env-Native"
7753
+ }
8210
7754
  },
8211
7755
  id: {
8212
7756
  label: "ID de usuario"
@@ -8249,6 +7793,14 @@ var esESObjects = {
8249
7793
  label: "Desbloquear usuario",
8250
7794
  successMessage: "Usuario desbloqueado"
8251
7795
  },
7796
+ unlock_user: {
7797
+ label: "Unlock Account",
7798
+ successMessage: "Account unlocked"
7799
+ },
7800
+ create_user: {
7801
+ label: "Create User",
7802
+ successMessage: "User created"
7803
+ },
8252
7804
  set_user_password: {
8253
7805
  label: "Establecer contrase\xF1a",
8254
7806
  successMessage: "Contrase\xF1a actualizada"
@@ -8310,6 +7862,18 @@ var esESObjects = {
8310
7862
  expires_at: {
8311
7863
  label: "Caduca el"
8312
7864
  },
7865
+ last_activity_at: {
7866
+ label: "Last Activity At",
7867
+ help: "Timestamp of the last request on this session; drives idle-timeout. System-managed."
7868
+ },
7869
+ revoked_at: {
7870
+ label: "Revoked At",
7871
+ help: "When set, this session was revoked (idle / absolute-max / concurrent-cap / admin). System-managed."
7872
+ },
7873
+ revoke_reason: {
7874
+ label: "Revoke Reason",
7875
+ help: "Why the session was revoked (idle_timeout, absolute_max, concurrent_cap, \u2026)."
7876
+ },
8313
7877
  active_organization_id: {
8314
7878
  label: "Organizaci\xF3n activa"
8315
7879
  },
@@ -8408,6 +7972,10 @@ var esESObjects = {
8408
7972
  password: {
8409
7973
  label: "Hash de la contrase\xF1a",
8410
7974
  help: "Hash de la contrase\xF1a para el proveedor de correo electr\xF3nico/contrase\xF1a."
7975
+ },
7976
+ previous_password_hashes: {
7977
+ label: "Previous Password Hashes",
7978
+ help: "JSON array of prior password hashes (bounded by password_history_count); reuse-prevention only. System-managed."
8411
7979
  }
8412
7980
  },
8413
7981
  _views: {
@@ -8478,6 +8046,10 @@ var esESObjects = {
8478
8046
  label: "Metadatos",
8479
8047
  help: "Metadatos de la organizaci\xF3n serializados en JSON."
8480
8048
  },
8049
+ require_mfa: {
8050
+ label: "Require Multi-Factor Auth",
8051
+ help: "When true, every member of this organization must enroll an authenticator app to access data."
8052
+ },
8481
8053
  id: {
8482
8054
  label: "ID de organizaci\xF3n"
8483
8055
  },
@@ -8802,6 +8374,9 @@ var esESObjects = {
8802
8374
  }
8803
8375
  },
8804
8376
  _views: {
8377
+ org_chart: {
8378
+ label: "Org Chart"
8379
+ },
8805
8380
  active: {
8806
8381
  label: "Activo"
8807
8382
  },
@@ -9383,263 +8958,57 @@ var esESObjects = {
9383
8958
  }
9384
8959
  }
9385
8960
  },
9386
- sys_audit_log: {
9387
- label: "Registro de auditor\xEDa",
9388
- pluralLabel: "Registros de auditor\xEDa",
9389
- description: "Registro de auditor\xEDa inmutable para eventos de la plataforma",
8961
+ sys_notification: {
8962
+ label: "Notificaci\xF3n",
8963
+ pluralLabel: "Notificaciones",
8964
+ description: "Entradas del buz\xF3n de notificaciones por usuario",
9390
8965
  fields: {
9391
- created_at: {
9392
- label: "Marca temporal"
8966
+ id: {
8967
+ label: "ID de notificaci\xF3n"
9393
8968
  },
9394
- action: {
9395
- label: "Acci\xF3n",
9396
- help: "Tipo de acci\xF3n (snake_case).",
8969
+ topic: {
8970
+ label: "Topic",
8971
+ help: "Notification topic, e.g. task.assigned, collab.mention"
8972
+ },
8973
+ payload: {
8974
+ label: "Payload",
8975
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
8976
+ },
8977
+ severity: {
8978
+ label: "Severity",
8979
+ help: "Severity hint for rendering / filtering",
9397
8980
  options: {
9398
- create: "Crear",
9399
- update: "Actualizar",
9400
- delete: "Eliminar",
9401
- restore: "Restaurar",
9402
- login: "Inicio de sesi\xF3n",
9403
- logout: "Cierre de sesi\xF3n",
9404
- permission_change: "Cambio de permisos",
9405
- config_change: "Cambio de configuraci\xF3n",
9406
- export: "Exportar",
9407
- import: "Importar"
8981
+ info: "info",
8982
+ warning: "warning",
8983
+ critical: "critical"
9408
8984
  }
9409
8985
  },
9410
- user_id: {
9411
- label: "Actor",
9412
- help: "Usuario que realiz\xF3 la acci\xF3n (null para acciones del sistema)."
9413
- },
9414
- object_name: {
9415
- label: "Objeto",
9416
- help: "Objeto de destino (p. ej. sys_user, project_task)."
9417
- },
9418
- record_id: {
9419
- label: "ID de registro",
9420
- help: "ID del registro afectado."
9421
- },
9422
- old_value: {
9423
- label: "Valor anterior",
9424
- help: "Estado anterior serializado en JSON."
9425
- },
9426
- new_value: {
9427
- label: "Valor nuevo",
9428
- help: "Estado nuevo serializado en JSON."
9429
- },
9430
- ip_address: {
9431
- label: "Direcci\xF3n IP"
8986
+ dedup_key: {
8987
+ label: "Dedup Key",
8988
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
9432
8989
  },
9433
- user_agent: {
9434
- label: "Agente de usuario"
8990
+ source_object: {
8991
+ label: "Objeto de origen",
8992
+ help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
9435
8993
  },
9436
- tenant_id: {
9437
- label: "Inquilino",
9438
- help: "Contexto del tenant para el aislamiento multi-tenant."
8994
+ source_id: {
8995
+ label: "Registro de origen",
8996
+ help: "ID del registro dentro de source_object."
9439
8997
  },
9440
- metadata: {
9441
- label: "Metadatos",
9442
- help: "Contexto adicional serializado en JSON."
8998
+ actor_id: {
8999
+ label: "Actor",
9000
+ help: "Usuario que provoc\xF3 la notificaci\xF3n (quien menciona, quien asigna)."
9443
9001
  },
9444
- id: {
9445
- label: "ID de registro de auditor\xEDa"
9002
+ created_at: {
9003
+ label: "Creado el"
9446
9004
  }
9447
9005
  },
9448
9006
  _views: {
9449
9007
  recent: {
9450
- label: "Recientes"
9451
- },
9452
- writes_only: {
9453
- label: "Escrituras"
9454
- },
9455
- auth_events: {
9456
- label: "Autenticaci\xF3n"
9457
- },
9458
- config_changes: {
9459
- label: "Configuraci\xF3n"
9460
- },
9461
- all_events: {
9462
- label: "Todos"
9463
- }
9464
- }
9465
- },
9466
- sys_presence: {
9467
- label: "Presencia",
9468
- pluralLabel: "Presencias",
9469
- description: "Seguimiento en tiempo real de presencia y actividad de usuarios",
9470
- fields: {
9471
- id: {
9472
- label: "ID de presencia"
9473
- },
9474
- created_at: {
9475
- label: "Creado el"
9476
- },
9477
- updated_at: {
9478
- label: "Actualizado el"
9479
- },
9480
- user_id: {
9481
- label: "Usuario"
9482
- },
9483
- session_id: {
9484
- label: "Sesi\xF3n"
9485
- },
9486
- status: {
9487
- label: "Estado",
9488
- options: {
9489
- online: "En l\xEDnea",
9490
- away: "Ausente",
9491
- busy: "Ocupado",
9492
- offline: "Desconectado"
9493
- }
9494
- },
9495
- last_seen: {
9496
- label: "Visto por \xFAltima vez"
9497
- },
9498
- current_location: {
9499
- label: "Ubicaci\xF3n actual"
9500
- },
9501
- device: {
9502
- label: "Dispositivo",
9503
- options: {
9504
- desktop: "Escritorio",
9505
- mobile: "M\xF3vil",
9506
- tablet: "Tableta",
9507
- other: "Otro"
9508
- }
9509
- },
9510
- custom_status: {
9511
- label: "Estado personalizado"
9512
- },
9513
- metadata: {
9514
- label: "Metadatos",
9515
- help: "Metadatos JSON arbitrarios asociados al estado de presencia (coincide con PresenceStateSchema.metadata)."
9516
- }
9517
- }
9518
- },
9519
- sys_activity: {
9520
- label: "Actividad",
9521
- pluralLabel: "Actividades",
9522
- description: "Entradas recientes del flujo de actividad (ligeras y desnormalizadas).",
9523
- fields: {
9524
- id: {
9525
- label: "ID de actividad"
9526
- },
9527
- timestamp: {
9528
- label: "Marca temporal"
9529
- },
9530
- type: {
9531
- label: "Tipo",
9532
- options: {
9533
- created: "Creado",
9534
- updated: "Actualizado",
9535
- deleted: "Eliminado",
9536
- commented: "Comentado",
9537
- mentioned: "Mencionado",
9538
- shared: "Compartido",
9539
- assigned: "Asignado",
9540
- completed: "Completado",
9541
- login: "Inicio de sesi\xF3n",
9542
- logout: "Cierre de sesi\xF3n",
9543
- system: "Sistema"
9544
- }
9545
- },
9546
- summary: {
9547
- label: "Resumen",
9548
- help: "Resumen legible de una l\xEDnea."
9549
- },
9550
- actor_id: {
9551
- label: "Actor"
9552
- },
9553
- actor_name: {
9554
- label: "Nombre del actor"
9555
- },
9556
- actor_avatar_url: {
9557
- label: "Avatar del actor"
9558
- },
9559
- object_name: {
9560
- label: "Objeto",
9561
- help: "Nombre corto del objeto de destino (p. ej. account, sys_user)."
9562
- },
9563
- record_id: {
9564
- label: "ID de registro"
9565
- },
9566
- record_label: {
9567
- label: "Nombre visible del registro",
9568
- help: "Nombre visible del registro de destino en el momento de escritura."
9569
- },
9570
- url: {
9571
- label: "URL",
9572
- help: "Enlace profundo opcional al destino de la actividad."
9573
- },
9574
- environment_id: {
9575
- label: "Proyecto",
9576
- help: "Contexto del proyecto (implementaciones multiproyecto)."
9577
- },
9578
- metadata: {
9579
- label: "Metadatos",
9580
- help: "Contexto adicional serializado en JSON."
9581
- }
9582
- }
9583
- },
9584
- sys_comment: {
9585
- label: "Comentario",
9586
- pluralLabel: "Comentarios",
9587
- description: "Comentarios en hilo adjuntos a registros mediante thread_id.",
9588
- fields: {
9589
- id: {
9590
- label: "ID de comentario"
9591
- },
9592
- thread_id: {
9593
- label: "Hilo",
9594
- help: "Identificador del hilo; por convenci\xF3n `{object}:{record_id}` (p. ej. `sys_user:abc123`)."
9595
- },
9596
- parent_id: {
9597
- label: "Comentario principal",
9598
- help: "Comentario principal opcional para respuestas anidadas."
9599
- },
9600
- reply_count: {
9601
- label: "N\xFAmero de respuestas"
9602
- },
9603
- author_id: {
9604
- label: "Autor"
9605
- },
9606
- author_name: {
9607
- label: "Nombre del autor"
9608
- },
9609
- author_avatar_url: {
9610
- label: "Avatar del autor"
9611
- },
9612
- body: {
9613
- label: "Contenido",
9614
- help: "Texto del comentario (compatible con Markdown)."
9615
- },
9616
- mentions: {
9617
- label: "Menciones",
9618
- help: "Matriz JSON de objetos @mention."
9619
- },
9620
- reactions: {
9621
- label: "Reacciones",
9622
- help: "Matriz JSON de objetos de reacci\xF3n emoji."
9623
- },
9624
- is_edited: {
9625
- label: "Editado"
9626
- },
9627
- edited_at: {
9628
- label: "Editado el"
9629
- },
9630
- visibility: {
9631
- label: "Visibilidad",
9632
- options: {
9633
- public: "P\xFAblico",
9634
- internal: "Interno",
9635
- private: "Privado"
9636
- }
9637
- },
9638
- created_at: {
9639
- label: "Creado el"
9008
+ label: "Recent"
9640
9009
  },
9641
- updated_at: {
9642
- label: "Actualizado el"
9010
+ by_topic: {
9011
+ label: "By Topic"
9643
9012
  }
9644
9013
  }
9645
9014
  },
@@ -9704,60 +9073,6 @@ var esESObjects = {
9704
9073
  }
9705
9074
  }
9706
9075
  },
9707
- sys_notification: {
9708
- label: "Notificaci\xF3n",
9709
- pluralLabel: "Notificaciones",
9710
- description: "Entradas del buz\xF3n de notificaciones por usuario",
9711
- fields: {
9712
- id: {
9713
- label: "ID de notificaci\xF3n"
9714
- },
9715
- topic: {
9716
- label: "Topic",
9717
- help: "Notification topic, e.g. task.assigned, collab.mention"
9718
- },
9719
- payload: {
9720
- label: "Payload",
9721
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
9722
- },
9723
- severity: {
9724
- label: "Severity",
9725
- help: "Severity hint for rendering / filtering",
9726
- options: {
9727
- info: "info",
9728
- warning: "warning",
9729
- critical: "critical"
9730
- }
9731
- },
9732
- dedup_key: {
9733
- label: "Dedup Key",
9734
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
9735
- },
9736
- source_object: {
9737
- label: "Objeto de origen",
9738
- help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
9739
- },
9740
- source_id: {
9741
- label: "Registro de origen",
9742
- help: "ID del registro dentro de source_object."
9743
- },
9744
- actor_id: {
9745
- label: "Actor",
9746
- help: "Usuario que provoc\xF3 la notificaci\xF3n (quien menciona, quien asigna)."
9747
- },
9748
- created_at: {
9749
- label: "Creado el"
9750
- }
9751
- },
9752
- _views: {
9753
- recent: {
9754
- label: "Recent"
9755
- },
9756
- by_topic: {
9757
- label: "By Topic"
9758
- }
9759
- }
9760
- },
9761
9076
  sys_email: {
9762
9077
  label: "Correo",
9763
9078
  pluralLabel: "Correos",
@@ -10662,6 +9977,11 @@ var esESObjects = {
10662
9977
  label: "Texto cifrado",
10663
9978
  help: "Blob de texto cifrado codificado por el proveedor (base64 / JSON). La implementaci\xF3n lo define; solo el ICryptoProvider correspondiente puede leerlo."
10664
9979
  }
9980
+ },
9981
+ _views: {
9982
+ all: {
9983
+ label: "All Secrets"
9984
+ }
10665
9985
  }
10666
9986
  },
10667
9987
  sys_setting_audit: {
@@ -10737,6 +10057,11 @@ var esESObjects = {
10737
10057
  label: "ID de solicitud",
10738
10058
  help: "Se correlaciona con sys_audit_log / tracing."
10739
10059
  }
10060
+ },
10061
+ _views: {
10062
+ recent: {
10063
+ label: "Recent"
10064
+ }
10740
10065
  }
10741
10066
  }
10742
10067
  };
@@ -10784,7 +10109,7 @@ var esES = {
10784
10109
  nav_teams: { label: "Equipos" },
10785
10110
  nav_organizations: { label: "Organizaciones" },
10786
10111
  nav_invitations: { label: "Invitaciones" },
10787
- nav_roles: { label: "Roles" },
10112
+ nav_positions: { label: "Posiciones" },
10788
10113
  nav_permission_sets: { label: "Conjuntos de Permisos" },
10789
10114
  nav_sharing_rules: { label: "Reglas de Compartici\xF3n" },
10790
10115
  nav_record_shares: { label: "Registros Compartidos" },
@@ -11144,6 +10469,70 @@ var enMetadataForms = {
11144
10469
  datasource: {
11145
10470
  label: "Datasource",
11146
10471
  helpText: 'Target datasource ID (default: "default")'
10472
+ },
10473
+ lifecycle: {
10474
+ label: "Lifecycle",
10475
+ 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)."
10476
+ },
10477
+ "lifecycle.class": {
10478
+ label: "Class",
10479
+ helpText: "Persistence contract for the rows of this object"
10480
+ },
10481
+ "lifecycle.retention": {
10482
+ label: "Retention",
10483
+ helpText: "Age-based retention window"
10484
+ },
10485
+ "lifecycle.retention.maxAge": {
10486
+ label: "Max Age",
10487
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
10488
+ },
10489
+ "lifecycle.ttl": {
10490
+ label: "Ttl",
10491
+ helpText: "Per-row TTL expiry"
10492
+ },
10493
+ "lifecycle.ttl.field": {
10494
+ label: "Field",
10495
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
10496
+ },
10497
+ "lifecycle.ttl.expireAfter": {
10498
+ label: "Expire After",
10499
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
10500
+ },
10501
+ "lifecycle.storage": {
10502
+ label: "Storage",
10503
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
10504
+ },
10505
+ "lifecycle.storage.strategy": {
10506
+ label: "Strategy",
10507
+ helpText: "Storage strategy"
10508
+ },
10509
+ "lifecycle.storage.shards": {
10510
+ label: "Shards",
10511
+ helpText: "Shards retained; total window = shards \xD7 unit"
10512
+ },
10513
+ "lifecycle.storage.unit": {
10514
+ label: "Unit",
10515
+ helpText: "Time width of one shard"
10516
+ },
10517
+ "lifecycle.archive": {
10518
+ label: "Archive",
10519
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
10520
+ },
10521
+ "lifecycle.archive.after": {
10522
+ label: "After",
10523
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
10524
+ },
10525
+ "lifecycle.archive.to": {
10526
+ label: "To",
10527
+ helpText: "Target datasource name for cold storage"
10528
+ },
10529
+ "lifecycle.archive.keep": {
10530
+ label: "Keep",
10531
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
10532
+ },
10533
+ "lifecycle.reclaim": {
10534
+ label: "Reclaim",
10535
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
11147
10536
  }
11148
10537
  }
11149
10538
  },
@@ -11252,10 +10641,6 @@ var enMetadataForms = {
11252
10641
  label: "Summary Operations",
11253
10642
  helpText: "Roll-up summary configuration (for parent-child relationships)"
11254
10643
  },
11255
- cached: {
11256
- label: "Cached",
11257
- helpText: "Caching configuration for computed fields"
11258
- },
11259
10644
  columnName: {
11260
10645
  label: "Column Name",
11261
10646
  helpText: "Physical column name in database (defaults to field name)"
@@ -11283,28 +10668,9 @@ var enMetadataForms = {
11283
10668
  sortable: {
11284
10669
  label: "Sortable",
11285
10670
  helpText: "Allow sorting lists by this field"
11286
- },
11287
- auditTrail: {
11288
- label: "Audit Trail",
11289
- helpText: "Track detailed changes with user and timestamp"
11290
- },
11291
- trackFeedHistory: {
11292
- label: "Track Feed History",
11293
- helpText: "Show changes in activity feed"
11294
- },
11295
- encryptionConfig: {
11296
- label: "Encryption Config",
11297
- helpText: "Field-level encryption (GDPR/HIPAA/PCI-DSS)"
11298
- },
11299
- maskingRule: {
11300
- label: "Masking Rule",
11301
- helpText: "Data masking rules for PII protection"
11302
10671
  }
11303
10672
  }
11304
10673
  },
11305
- trigger: {
11306
- label: "Trigger"
11307
- },
11308
10674
  validation: {
11309
10675
  label: "Validation Rule"
11310
10676
  },
@@ -11381,12 +10747,36 @@ var enMetadataForms = {
11381
10747
  onError: {
11382
10748
  label: "On Error"
11383
10749
  },
10750
+ timeout: {
10751
+ label: "Timeout",
10752
+ helpText: "Abort the hook after N milliseconds"
10753
+ },
11384
10754
  condition: {
11385
10755
  label: "Condition",
11386
10756
  helpText: "Optional formula \u2014 skip the hook when this evaluates to false"
10757
+ },
10758
+ retryPolicy: {
10759
+ label: "Retry Policy",
10760
+ helpText: "Retry on failure \u2014 most useful for async hooks"
10761
+ },
10762
+ "retryPolicy.maxRetries": {
10763
+ label: "Max Retries",
10764
+ helpText: "Maximum retry attempts"
10765
+ },
10766
+ "retryPolicy.backoffMs": {
10767
+ label: "Backoff Ms",
10768
+ helpText: "Delay between retries (ms)"
11387
10769
  }
11388
10770
  }
11389
10771
  },
10772
+ seed: {
10773
+ label: "Seed Data",
10774
+ description: "Fixture / initialization data applied on publish"
10775
+ },
10776
+ mapping: {
10777
+ label: "Import Mapping",
10778
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
10779
+ },
11390
10780
  view: {
11391
10781
  label: "View",
11392
10782
  sections: {
@@ -11558,6 +10948,10 @@ var enMetadataForms = {
11558
10948
  label: "Layout",
11559
10949
  description: "Page regions and components placed within them."
11560
10950
  },
10951
+ interface: {
10952
+ label: "Interface (list pages)",
10953
+ 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."
10954
+ },
11561
10955
  advanced: {
11562
10956
  label: "Advanced",
11563
10957
  description: "Activation, audience, and accessibility."
@@ -11600,6 +10994,58 @@ var enMetadataForms = {
11600
10994
  label: "Regions",
11601
10995
  helpText: "Layout regions (header, main, sidebar, footer) with components"
11602
10996
  },
10997
+ interfaceConfig: {
10998
+ label: "Interface Config",
10999
+ 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."
11000
+ },
11001
+ "interfaceConfig.source": {
11002
+ label: "Source",
11003
+ helpText: "Object this page reads from"
11004
+ },
11005
+ "interfaceConfig.columns": {
11006
+ label: "Columns",
11007
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
11008
+ },
11009
+ "interfaceConfig.filterBy": {
11010
+ label: "Filter By",
11011
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
11012
+ },
11013
+ "interfaceConfig.levels": {
11014
+ label: "Levels",
11015
+ helpText: "Hierarchy levels to display (tree-like sources)"
11016
+ },
11017
+ "interfaceConfig.appearance": {
11018
+ label: "Appearance",
11019
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
11020
+ },
11021
+ "interfaceConfig.userFilters": {
11022
+ label: "User Filters",
11023
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
11024
+ },
11025
+ "interfaceConfig.userActions": {
11026
+ label: "User Actions",
11027
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
11028
+ },
11029
+ "interfaceConfig.addRecord": {
11030
+ label: "Add Record",
11031
+ helpText: "Add-record entry point"
11032
+ },
11033
+ "interfaceConfig.buttons": {
11034
+ label: "Buttons",
11035
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
11036
+ },
11037
+ "interfaceConfig.recordAction": {
11038
+ label: "Record Action",
11039
+ helpText: "How clicking a record opens its detail"
11040
+ },
11041
+ "interfaceConfig.showRecordCount": {
11042
+ label: "Show Record Count",
11043
+ helpText: "Show the record count bar"
11044
+ },
11045
+ "interfaceConfig.allowPrinting": {
11046
+ label: "Allow Printing",
11047
+ helpText: "Allow users to print this page"
11048
+ },
11603
11049
  isDefault: {
11604
11050
  label: "Is Default",
11605
11051
  helpText: "Set as default page for this page type"
@@ -11848,6 +11294,22 @@ var enMetadataForms = {
11848
11294
  label: "Body",
11849
11295
  helpText: "JavaScript code to execute"
11850
11296
  },
11297
+ "body.language": {
11298
+ label: "Language",
11299
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
11300
+ },
11301
+ "body.source": {
11302
+ label: "Source",
11303
+ helpText: "Function body source \u2014 no top-level imports"
11304
+ },
11305
+ "body.capabilities": {
11306
+ label: "Capabilities",
11307
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
11308
+ },
11309
+ "body.timeoutMs": {
11310
+ label: "Timeout Ms",
11311
+ helpText: "Per-invocation timeout (ms)"
11312
+ },
11851
11313
  params: {
11852
11314
  label: "Params",
11853
11315
  helpText: "User input parameters (show form before executing)"
@@ -11888,9 +11350,9 @@ var enMetadataForms = {
11888
11350
  label: "Bulk Enabled",
11889
11351
  helpText: "Allow applying to multiple selected records"
11890
11352
  },
11891
- aiExposed: {
11892
- label: "Ai Exposed",
11893
- helpText: "Allow AI agents to call this action"
11353
+ ai: {
11354
+ label: "Ai",
11355
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
11894
11356
  },
11895
11357
  recordIdParam: {
11896
11358
  label: "Record Id Param",
@@ -11913,13 +11375,9 @@ var enMetadataForms = {
11913
11375
  label: "Basics",
11914
11376
  description: "Identity and data source."
11915
11377
  },
11916
- columns: {
11917
- label: "Columns",
11918
- description: "Columns shown in the report output."
11919
- },
11920
- groupings: {
11921
- label: "Groupings",
11922
- description: "How rows (and columns, for matrix reports) are grouped."
11378
+ dataset_binding: {
11379
+ label: "Dataset binding",
11380
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
11923
11381
  },
11924
11382
  joined_blocks: {
11925
11383
  label: "Joined blocks",
@@ -11945,33 +11403,37 @@ var enMetadataForms = {
11945
11403
  description: {
11946
11404
  label: "Description"
11947
11405
  },
11948
- objectName: {
11949
- label: "Object Name",
11950
- helpText: "Data source object"
11951
- },
11952
11406
  type: {
11953
11407
  label: "Type",
11954
11408
  helpText: "Report type: tabular/summary/matrix/joined"
11955
11409
  },
11410
+ dataset: {
11411
+ label: "Dataset",
11412
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
11413
+ },
11414
+ values: {
11415
+ label: "Values",
11416
+ helpText: "Measure names (from the dataset) to display"
11417
+ },
11418
+ rows: {
11419
+ label: "Rows",
11420
+ helpText: "Dimension names (from the dataset) to group rows by"
11421
+ },
11956
11422
  columns: {
11957
11423
  label: "Columns",
11958
11424
  helpText: "Columns to display in the report"
11959
11425
  },
11960
- groupingsDown: {
11961
- label: "Groupings Down",
11962
- helpText: "Row grouping levels"
11963
- },
11964
- groupingsAcross: {
11965
- label: "Groupings Across",
11966
- helpText: "Column grouping levels (matrix only)"
11426
+ drilldown: {
11427
+ label: "Drilldown",
11428
+ helpText: "Click an aggregated row/cell to open the underlying records"
11967
11429
  },
11968
11430
  blocks: {
11969
11431
  label: "Blocks",
11970
11432
  helpText: "Join multiple objects (joined report only)"
11971
11433
  },
11972
- filter: {
11973
- label: "Filter",
11974
- helpText: "Report-level filters"
11434
+ runtimeFilter: {
11435
+ label: "Runtime Filter",
11436
+ helpText: "Render-time scope filter, ANDed at query time"
11975
11437
  },
11976
11438
  chart: {
11977
11439
  label: "Chart",
@@ -11987,6 +11449,62 @@ var enMetadataForms = {
11987
11449
  }
11988
11450
  }
11989
11451
  },
11452
+ dataset: {
11453
+ label: "Dataset",
11454
+ description: "Analytics semantic layer \u2014 dimensions & measures",
11455
+ sections: {
11456
+ basics: {
11457
+ label: "Basics",
11458
+ description: "Dataset identity."
11459
+ },
11460
+ source: {
11461
+ label: "Source",
11462
+ 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."
11463
+ },
11464
+ dimensions: {
11465
+ label: "Dimensions",
11466
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
11467
+ },
11468
+ measures: {
11469
+ label: "Measures",
11470
+ 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."
11471
+ }
11472
+ },
11473
+ fields: {
11474
+ name: {
11475
+ label: "Name",
11476
+ helpText: "snake_case unique identifier"
11477
+ },
11478
+ label: {
11479
+ label: "Label",
11480
+ helpText: "Display name"
11481
+ },
11482
+ description: {
11483
+ label: "Description",
11484
+ helpText: "What this dataset measures"
11485
+ },
11486
+ object: {
11487
+ label: "Object",
11488
+ helpText: "Base object \u2014 the FROM"
11489
+ },
11490
+ include: {
11491
+ label: "Include",
11492
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
11493
+ },
11494
+ filter: {
11495
+ label: "Filter",
11496
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
11497
+ },
11498
+ dimensions: {
11499
+ label: "Dimensions",
11500
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
11501
+ },
11502
+ measures: {
11503
+ label: "Measures",
11504
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
11505
+ }
11506
+ }
11507
+ },
11990
11508
  flow: {
11991
11509
  label: "Flow",
11992
11510
  sections: {
@@ -12066,15 +11584,6 @@ var enMetadataForms = {
12066
11584
  translation: {
12067
11585
  label: "Translation"
12068
11586
  },
12069
- router: {
12070
- label: "Router"
12071
- },
12072
- function: {
12073
- label: "Function"
12074
- },
12075
- service: {
12076
- label: "Service"
12077
- },
12078
11587
  email_template: {
12079
11588
  label: "Email Template",
12080
11589
  sections: {
@@ -12155,6 +11664,14 @@ var enMetadataForms = {
12155
11664
  }
12156
11665
  }
12157
11666
  },
11667
+ doc: {
11668
+ label: "Documentation",
11669
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
11670
+ },
11671
+ book: {
11672
+ label: "Documentation Book",
11673
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
11674
+ },
12158
11675
  permission: {
12159
11676
  label: "Permission Set",
12160
11677
  sections: {
@@ -12210,67 +11727,12 @@ var enMetadataForms = {
12210
11727
  }
12211
11728
  }
12212
11729
  },
12213
- profile: {
12214
- label: "Profile",
12215
- sections: {
12216
- identity: {
12217
- label: "Identity",
12218
- description: "Permission Sets stack on top of a Profile to grant additional access. Profiles are the base set assigned 1:1 to each user."
12219
- },
12220
- system_permissions: {
12221
- label: "System Permissions",
12222
- description: "High-level capabilities not tied to a specific object \u2014 e.g. manage_users, view_audit_logs."
12223
- },
12224
- object_and_field_permissions: {
12225
- label: "Object & Field Permissions",
12226
- description: "Per-object CRUD + per-field FLS. Edit via the matrix editor or paste JSON here."
12227
- },
12228
- tab_and_row_level_security: {
12229
- label: "Tab & Row-Level Security",
12230
- description: "Tab visibility, RLS policies, and custom context variables for predicate evaluation."
12231
- }
12232
- },
12233
- fields: {
12234
- name: {
12235
- label: "Name",
12236
- helpText: "Machine name (snake_case)"
12237
- },
12238
- label: {
12239
- label: "Label",
12240
- helpText: "Display label for admins"
12241
- },
12242
- systemPermissions: {
12243
- label: "System Permissions",
12244
- helpText: "List of system capability keys"
12245
- },
12246
- objects: {
12247
- label: "Objects",
12248
- helpText: '{ "account": { allowRead: true, allowEdit: true, ... } }'
12249
- },
12250
- fields: {
12251
- label: "Fields",
12252
- helpText: '{ "account.amount": { readable: true, editable: false } }'
12253
- },
12254
- tabPermissions: {
12255
- label: "Tab Permissions",
12256
- helpText: '{ "app_crm": "visible", "app_admin": "hidden" }'
12257
- },
12258
- rowLevelSecurity: {
12259
- label: "Row Level Security",
12260
- helpText: "Array of RLS policies (see rls.zod.ts)"
12261
- },
12262
- contextVariables: {
12263
- label: "Context Variables",
12264
- helpText: "Custom variables referenced in RLS predicates"
12265
- }
12266
- }
12267
- },
12268
- role: {
12269
- label: "Role",
11730
+ position: {
11731
+ label: "Position",
12270
11732
  sections: {
12271
- role: {
12272
- label: "Role",
12273
- 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."
11733
+ position: {
11734
+ label: "Position",
11735
+ 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."
12274
11736
  }
12275
11737
  },
12276
11738
  fields: {
@@ -12281,10 +11743,6 @@ var enMetadataForms = {
12281
11743
  label: {
12282
11744
  label: "Label"
12283
11745
  },
12284
- parent: {
12285
- label: "Parent",
12286
- helpText: "Parent role machine name (Reports To)"
12287
- },
12288
11746
  description: {
12289
11747
  label: "Description"
12290
11748
  }
@@ -12774,6 +12232,70 @@ var zhCNMetadataForms = {
12774
12232
  datasource: {
12775
12233
  label: "\u6570\u636E\u6E90",
12776
12234
  helpText: '\u76EE\u6807\u6570\u636E\u6E90 ID\uFF08\u9ED8\u8BA4\uFF1A"default"\uFF09'
12235
+ },
12236
+ lifecycle: {
12237
+ label: "\u6570\u636E\u751F\u547D\u5468\u671F",
12238
+ 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"
12239
+ },
12240
+ "lifecycle.class": {
12241
+ label: "\u751F\u547D\u5468\u671F\u7C7B\u522B",
12242
+ helpText: "\u672C\u5BF9\u8C61\u6570\u636E\u7684\u6301\u4E45\u5316\u5951\u7EA6"
12243
+ },
12244
+ "lifecycle.retention": {
12245
+ label: "\u4FDD\u7559\u671F",
12246
+ helpText: "\u6309\u6570\u636E\u5E74\u9F84\u754C\u5B9A\u7684\u4FDD\u7559\u7A97\u53E3"
12247
+ },
12248
+ "lifecycle.retention.maxAge": {
12249
+ label: "\u6700\u957F\u4FDD\u7559",
12250
+ 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"'
12251
+ },
12252
+ "lifecycle.ttl": {
12253
+ label: "TTL \u8FC7\u671F",
12254
+ helpText: "\u6309\u884C\u7684 TTL \u81EA\u52A8\u8FC7\u671F"
12255
+ },
12256
+ "lifecycle.ttl.field": {
12257
+ label: "\u65F6\u95F4\u5B57\u6BB5",
12258
+ helpText: "TTL \u8BA1\u65F6\u8D77\u70B9\u7684\u65F6\u95F4\u6233\u5B57\u6BB5\uFF08\u5982 expires_at\uFF09"
12259
+ },
12260
+ "lifecycle.ttl.expireAfter": {
12261
+ label: "\u8FC7\u671F\u65F6\u957F",
12262
+ helpText: '\u884C\u5728\u8BE5\u5B57\u6BB5\u4E4B\u540E\u8FD9\u4E48\u4E45\u8FC7\u671F\uFF0C\u5982 "1d"'
12263
+ },
12264
+ "lifecycle.storage": {
12265
+ label: "\u5B58\u50A8\u7B56\u7565",
12266
+ helpText: "\u9AD8\u9891\u9065\u6D4B\u7684\u7269\u7406\u8F6E\u8F6C\uFF08SQLite\uFF1AO(1) \u5206\u7247 DROP\uFF09"
12267
+ },
12268
+ "lifecycle.storage.strategy": {
12269
+ label: "\u7B56\u7565",
12270
+ helpText: "\u5B58\u50A8\u7B56\u7565"
12271
+ },
12272
+ "lifecycle.storage.shards": {
12273
+ label: "\u5206\u7247\u6570",
12274
+ helpText: "\u4FDD\u7559\u7684\u5206\u7247\u6570\u91CF\uFF1B\u603B\u7A97\u53E3 = \u5206\u7247\u6570 \xD7 \u5355\u4F4D"
12275
+ },
12276
+ "lifecycle.storage.unit": {
12277
+ label: "\u5206\u7247\u5355\u4F4D",
12278
+ helpText: "\u5355\u4E2A\u5206\u7247\u7684\u65F6\u95F4\u5BBD\u5EA6"
12279
+ },
12280
+ "lifecycle.archive": {
12281
+ label: "\u5F52\u6863",
12282
+ 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"
12283
+ },
12284
+ "lifecycle.archive.after": {
12285
+ label: "\u5F52\u6863\u65F6\u70B9",
12286
+ helpText: "\u65E9\u4E8E\u8BE5\u7A97\u53E3\u7684\u884C\u8FDB\u5165\u5F52\u6863 \u2014 \u5FC5\u987B\u7B49\u4E8E retention.maxAge"
12287
+ },
12288
+ "lifecycle.archive.to": {
12289
+ label: "\u5F52\u6863\u6570\u636E\u6E90",
12290
+ helpText: "\u51B7\u5B58\u50A8\u7684\u76EE\u6807\u6570\u636E\u6E90\u540D\u79F0"
12291
+ },
12292
+ "lifecycle.archive.keep": {
12293
+ label: "\u5F52\u6863\u4FDD\u7559",
12294
+ helpText: '\u5F52\u6863\u4E2D\u4FDD\u7559\u591A\u4E45\uFF08\u7559\u7A7A = \u6C38\u4E45\uFF09\uFF0C\u5982 "7y"'
12295
+ },
12296
+ "lifecycle.reclaim": {
12297
+ label: "\u7A7A\u95F4\u56DE\u6536",
12298
+ helpText: "\u6E05\u7406\u540E\u56DE\u6536\u9A71\u52A8\u5C42\u7A7A\u95F4\uFF08\u975E record \u7C7B\u9ED8\u8BA4\u5F00\u542F\uFF09"
12777
12299
  }
12778
12300
  }
12779
12301
  },
@@ -12882,10 +12404,6 @@ var zhCNMetadataForms = {
12882
12404
  label: "\u6C47\u603B\u64CD\u4F5C",
12883
12405
  helpText: "\u7236\u5B50\u5173\u7CFB\u4E0B\u7684\u6C47\u603B\u805A\u5408\u914D\u7F6E"
12884
12406
  },
12885
- cached: {
12886
- label: "\u7F13\u5B58",
12887
- helpText: "\u8BA1\u7B97\u5B57\u6BB5\u7684\u7F13\u5B58\u914D\u7F6E"
12888
- },
12889
12407
  columnName: {
12890
12408
  label: "\u5217\u540D",
12891
12409
  helpText: "\u6570\u636E\u5E93\u4E2D\u7684\u7269\u7406\u5217\u540D\uFF08\u9ED8\u8BA4\u4E0E\u5B57\u6BB5\u540D\u76F8\u540C\uFF09"
@@ -12913,28 +12431,9 @@ var zhCNMetadataForms = {
12913
12431
  sortable: {
12914
12432
  label: "\u53EF\u6392\u5E8F",
12915
12433
  helpText: "\u5141\u8BB8\u6309\u6B64\u5B57\u6BB5\u6392\u5E8F"
12916
- },
12917
- auditTrail: {
12918
- label: "\u5BA1\u8BA1\u8DDF\u8E2A",
12919
- helpText: "\u8BB0\u5F55\u8BE6\u7EC6\u53D8\u66F4\u4E0E\u64CD\u4F5C\u4EBA\u3001\u65F6\u95F4\u6233"
12920
- },
12921
- trackFeedHistory: {
12922
- label: "\u52A8\u6001\u5386\u53F2\u8DDF\u8E2A",
12923
- helpText: "\u5728\u6D3B\u52A8\u52A8\u6001\u4E2D\u5C55\u793A\u53D8\u66F4"
12924
- },
12925
- encryptionConfig: {
12926
- label: "\u52A0\u5BC6\u914D\u7F6E",
12927
- helpText: "\u5B57\u6BB5\u7EA7\u52A0\u5BC6\uFF08GDPR / HIPAA / PCI-DSS\uFF09"
12928
- },
12929
- maskingRule: {
12930
- label: "\u63A9\u7801\u89C4\u5219",
12931
- helpText: "PII \u6570\u636E\u8131\u654F\u89C4\u5219"
12932
12434
  }
12933
12435
  }
12934
12436
  },
12935
- trigger: {
12936
- label: "\u89E6\u53D1\u5668"
12937
- },
12938
12437
  validation: {
12939
12438
  label: "\u9A8C\u8BC1\u89C4\u5219"
12940
12439
  },
@@ -13011,12 +12510,36 @@ var zhCNMetadataForms = {
13011
12510
  onError: {
13012
12511
  label: "\u9519\u8BEF\u5904\u7406"
13013
12512
  },
12513
+ timeout: {
12514
+ label: "Timeout",
12515
+ helpText: "Abort the hook after N milliseconds"
12516
+ },
13014
12517
  condition: {
13015
12518
  label: "\u6761\u4EF6",
13016
12519
  helpText: "\u53EF\u9009\u516C\u5F0F\u2014\u2014\u6C42\u503C\u4E3A false \u65F6\u8DF3\u8FC7\u8BE5\u94A9\u5B50"
12520
+ },
12521
+ retryPolicy: {
12522
+ label: "Retry Policy",
12523
+ helpText: "Retry on failure \u2014 most useful for async hooks"
12524
+ },
12525
+ "retryPolicy.maxRetries": {
12526
+ label: "Max Retries",
12527
+ helpText: "Maximum retry attempts"
12528
+ },
12529
+ "retryPolicy.backoffMs": {
12530
+ label: "Backoff Ms",
12531
+ helpText: "Delay between retries (ms)"
13017
12532
  }
13018
12533
  }
13019
12534
  },
12535
+ seed: {
12536
+ label: "Seed Data",
12537
+ description: "Fixture / initialization data applied on publish"
12538
+ },
12539
+ mapping: {
12540
+ label: "Import Mapping",
12541
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
12542
+ },
13020
12543
  view: {
13021
12544
  label: "\u89C6\u56FE",
13022
12545
  sections: {
@@ -13188,6 +12711,10 @@ var zhCNMetadataForms = {
13188
12711
  label: "\u5E03\u5C40",
13189
12712
  description: "\u9875\u9762\u533A\u5757\u4E0E\u7EC4\u4EF6"
13190
12713
  },
12714
+ interface: {
12715
+ label: "Interface (list pages)",
12716
+ 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."
12717
+ },
13191
12718
  advanced: {
13192
12719
  label: "\u9AD8\u7EA7\u8BBE\u7F6E",
13193
12720
  description: "\u9ED8\u8BA4\u9875\u3001\u7C7B\u578B\u4E0E\u5206\u914D"
@@ -13230,6 +12757,58 @@ var zhCNMetadataForms = {
13230
12757
  label: "\u533A\u57DF",
13231
12758
  helpText: "\u5E03\u5C40\u533A\u57DF\uFF08header\u3001main\u3001sidebar\u3001footer\uFF09\u53CA\u5176\u7EC4\u4EF6"
13232
12759
  },
12760
+ interfaceConfig: {
12761
+ label: "Interface Config",
12762
+ 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."
12763
+ },
12764
+ "interfaceConfig.source": {
12765
+ label: "Source",
12766
+ helpText: "Object this page reads from"
12767
+ },
12768
+ "interfaceConfig.columns": {
12769
+ label: "Columns",
12770
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
12771
+ },
12772
+ "interfaceConfig.filterBy": {
12773
+ label: "Filter By",
12774
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
12775
+ },
12776
+ "interfaceConfig.levels": {
12777
+ label: "Levels",
12778
+ helpText: "Hierarchy levels to display (tree-like sources)"
12779
+ },
12780
+ "interfaceConfig.appearance": {
12781
+ label: "Appearance",
12782
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
12783
+ },
12784
+ "interfaceConfig.userFilters": {
12785
+ label: "User Filters",
12786
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
12787
+ },
12788
+ "interfaceConfig.userActions": {
12789
+ label: "User Actions",
12790
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
12791
+ },
12792
+ "interfaceConfig.addRecord": {
12793
+ label: "Add Record",
12794
+ helpText: "Add-record entry point"
12795
+ },
12796
+ "interfaceConfig.buttons": {
12797
+ label: "Buttons",
12798
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
12799
+ },
12800
+ "interfaceConfig.recordAction": {
12801
+ label: "Record Action",
12802
+ helpText: "How clicking a record opens its detail"
12803
+ },
12804
+ "interfaceConfig.showRecordCount": {
12805
+ label: "Show Record Count",
12806
+ helpText: "Show the record count bar"
12807
+ },
12808
+ "interfaceConfig.allowPrinting": {
12809
+ label: "Allow Printing",
12810
+ helpText: "Allow users to print this page"
12811
+ },
13233
12812
  isDefault: {
13234
12813
  label: "\u9ED8\u8BA4",
13235
12814
  helpText: "\u8BBE\u4E3A\u8BE5\u9875\u9762\u7C7B\u578B\u7684\u9ED8\u8BA4\u9875"
@@ -13478,6 +13057,22 @@ var zhCNMetadataForms = {
13478
13057
  label: "\u6B63\u6587",
13479
13058
  helpText: "\u8981\u6267\u884C\u7684 JavaScript \u4EE3\u7801"
13480
13059
  },
13060
+ "body.language": {
13061
+ label: "Language",
13062
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
13063
+ },
13064
+ "body.source": {
13065
+ label: "Source",
13066
+ helpText: "Function body source \u2014 no top-level imports"
13067
+ },
13068
+ "body.capabilities": {
13069
+ label: "Capabilities",
13070
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
13071
+ },
13072
+ "body.timeoutMs": {
13073
+ label: "Timeout Ms",
13074
+ helpText: "Per-invocation timeout (ms)"
13075
+ },
13481
13076
  params: {
13482
13077
  label: "\u53C2\u6570",
13483
13078
  helpText: "\u6267\u884C\u524D\u5411\u7528\u6237\u6536\u96C6\u7684\u8F93\u5165\u53C2\u6570"
@@ -13518,9 +13113,9 @@ var zhCNMetadataForms = {
13518
13113
  label: "\u6279\u91CF\u542F\u7528",
13519
13114
  helpText: "\u5141\u8BB8\u5BF9\u591A\u6761\u9009\u4E2D\u8BB0\u5F55\u6267\u884C"
13520
13115
  },
13521
- aiExposed: {
13522
- label: "\u66B4\u9732\u7ED9 AI",
13523
- helpText: "\u5141\u8BB8 AI \u667A\u80FD\u4F53\u8C03\u7528\u6B64\u64CD\u4F5C"
13116
+ ai: {
13117
+ label: "Ai",
13118
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
13524
13119
  },
13525
13120
  recordIdParam: {
13526
13121
  label: "\u8BB0\u5F55 ID \u53C2\u6570",
@@ -13543,13 +13138,9 @@ var zhCNMetadataForms = {
13543
13138
  label: "\u57FA\u7840\u4FE1\u606F",
13544
13139
  description: "\u540D\u79F0\u4E0E\u6570\u636E\u6E90"
13545
13140
  },
13546
- columns: {
13547
- label: "\u5217",
13548
- description: "\u9009\u62E9\u8981\u5C55\u793A\u7684\u5217"
13549
- },
13550
- groupings: {
13551
- label: "\u5206\u7EC4\u4E0E\u6C47\u603B",
13552
- description: "\u884C\u5217\u5206\u7EC4\u7EF4\u5EA6"
13141
+ dataset_binding: {
13142
+ label: "Dataset binding",
13143
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
13553
13144
  },
13554
13145
  joined_blocks: {
13555
13146
  label: "\u5173\u8054\u5BF9\u8C61",
@@ -13575,33 +13166,37 @@ var zhCNMetadataForms = {
13575
13166
  description: {
13576
13167
  label: "\u63CF\u8FF0"
13577
13168
  },
13578
- objectName: {
13579
- label: "\u5BF9\u8C61\u540D\u79F0",
13580
- helpText: "\u62A5\u8868\u6570\u636E\u6E90\u5BF9\u8C61"
13581
- },
13582
13169
  type: {
13583
13170
  label: "\u7C7B\u578B",
13584
13171
  helpText: "\u62A5\u8868\u7C7B\u578B\uFF1Atabular / summary / matrix / joined"
13585
13172
  },
13173
+ dataset: {
13174
+ label: "Dataset",
13175
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
13176
+ },
13177
+ values: {
13178
+ label: "Values",
13179
+ helpText: "Measure names (from the dataset) to display"
13180
+ },
13181
+ rows: {
13182
+ label: "Rows",
13183
+ helpText: "Dimension names (from the dataset) to group rows by"
13184
+ },
13586
13185
  columns: {
13587
13186
  label: "\u5217",
13588
13187
  helpText: "\u62A5\u8868\u4E2D\u663E\u793A\u7684\u5217"
13589
13188
  },
13590
- groupingsDown: {
13591
- label: "\u884C\u5206\u7EC4",
13592
- helpText: "\u884C\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7"
13593
- },
13594
- groupingsAcross: {
13595
- label: "\u5217\u5206\u7EC4",
13596
- helpText: "\u5217\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7\uFF08matrix \u62A5\u8868\uFF09"
13189
+ drilldown: {
13190
+ label: "Drilldown",
13191
+ helpText: "Click an aggregated row/cell to open the underlying records"
13597
13192
  },
13598
13193
  blocks: {
13599
13194
  label: "\u5206\u5757",
13600
13195
  helpText: "joined \u62A5\u8868\u7684\u8054\u5408\u67E5\u8BE2\u5757"
13601
13196
  },
13602
- filter: {
13603
- label: "\u7B5B\u9009",
13604
- helpText: "\u62A5\u8868\u7EA7\u522B\u7684\u7B5B\u9009\u89C4\u5219"
13197
+ runtimeFilter: {
13198
+ label: "Runtime Filter",
13199
+ helpText: "Render-time scope filter, ANDed at query time"
13605
13200
  },
13606
13201
  chart: {
13607
13202
  label: "\u56FE\u8868",
@@ -13617,6 +13212,62 @@ var zhCNMetadataForms = {
13617
13212
  }
13618
13213
  }
13619
13214
  },
13215
+ dataset: {
13216
+ label: "Dataset",
13217
+ description: "Analytics semantic layer \u2014 dimensions & measures",
13218
+ sections: {
13219
+ basics: {
13220
+ label: "Basics",
13221
+ description: "Dataset identity."
13222
+ },
13223
+ source: {
13224
+ label: "Source",
13225
+ 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."
13226
+ },
13227
+ dimensions: {
13228
+ label: "Dimensions",
13229
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
13230
+ },
13231
+ measures: {
13232
+ label: "Measures",
13233
+ 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."
13234
+ }
13235
+ },
13236
+ fields: {
13237
+ name: {
13238
+ label: "Name",
13239
+ helpText: "snake_case unique identifier"
13240
+ },
13241
+ label: {
13242
+ label: "Label",
13243
+ helpText: "Display name"
13244
+ },
13245
+ description: {
13246
+ label: "Description",
13247
+ helpText: "What this dataset measures"
13248
+ },
13249
+ object: {
13250
+ label: "Object",
13251
+ helpText: "Base object \u2014 the FROM"
13252
+ },
13253
+ include: {
13254
+ label: "Include",
13255
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
13256
+ },
13257
+ filter: {
13258
+ label: "Filter",
13259
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
13260
+ },
13261
+ dimensions: {
13262
+ label: "Dimensions",
13263
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
13264
+ },
13265
+ measures: {
13266
+ label: "Measures",
13267
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
13268
+ }
13269
+ }
13270
+ },
13620
13271
  flow: {
13621
13272
  label: "\u6D41\u7A0B",
13622
13273
  sections: {
@@ -13696,15 +13347,6 @@ var zhCNMetadataForms = {
13696
13347
  translation: {
13697
13348
  label: "\u7FFB\u8BD1"
13698
13349
  },
13699
- router: {
13700
- label: "\u8DEF\u7531\u5668"
13701
- },
13702
- function: {
13703
- label: "\u51FD\u6570"
13704
- },
13705
- service: {
13706
- label: "\u670D\u52A1"
13707
- },
13708
13350
  email_template: {
13709
13351
  label: "\u90AE\u4EF6\u6A21\u677F",
13710
13352
  sections: {
@@ -13785,6 +13427,14 @@ var zhCNMetadataForms = {
13785
13427
  }
13786
13428
  }
13787
13429
  },
13430
+ doc: {
13431
+ label: "Documentation",
13432
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
13433
+ },
13434
+ book: {
13435
+ label: "Documentation Book",
13436
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
13437
+ },
13788
13438
  permission: {
13789
13439
  label: "\u6743\u9650\u96C6 / \u914D\u7F6E\u6587\u4EF6",
13790
13440
  sections: {
@@ -13840,114 +13490,55 @@ var zhCNMetadataForms = {
13840
13490
  }
13841
13491
  }
13842
13492
  },
13843
- profile: {
13844
- label: "\u914D\u7F6E\u6587\u4EF6",
13493
+ position: {
13494
+ label: "\u5C97\u4F4D",
13495
+ sections: {
13496
+ position: {
13497
+ label: "\u5C97\u4F4D",
13498
+ 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"
13499
+ }
13500
+ },
13501
+ fields: {
13502
+ name: {
13503
+ label: "\u540D\u79F0",
13504
+ helpText: "snake_case \u552F\u4E00\u6807\u8BC6\u7B26"
13505
+ },
13506
+ label: {
13507
+ label: "\u663E\u793A\u540D\u79F0"
13508
+ },
13509
+ description: {
13510
+ label: "\u63CF\u8FF0"
13511
+ }
13512
+ }
13513
+ },
13514
+ agent: {
13515
+ label: "AI \u4EE3\u7406",
13845
13516
  sections: {
13846
13517
  identity: {
13847
- label: "\u6807\u8BC6",
13848
- 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"
13518
+ label: "\u8EAB\u4EFD\u4FE1\u606F",
13519
+ description: "\u7528\u6237\u5982\u4F55\u8BC6\u522B\u4E0E\u8C03\u7528\u8BE5\u4EE3\u7406"
13849
13520
  },
13850
- system_permissions: {
13851
- label: "\u7CFB\u7EDF\u6743\u9650",
13852
- description: "\u4E0E\u7279\u5B9A\u5BF9\u8C61\u65E0\u5173\u7684\u9AD8\u7EA7\u80FD\u529B\u2014\u2014\u4F8B\u5982 manage_users\u3001view_audit_logs\u3002"
13521
+ ai_configuration: {
13522
+ label: "AI \u914D\u7F6E",
13523
+ description: "\u6A21\u578B\u9009\u62E9\u3001\u6307\u4EE4\u3001\u89C4\u5212\u4E0E\u8BB0\u5FC6"
13853
13524
  },
13854
- object_and_field_permissions: {
13855
- label: "\u5BF9\u8C61\u4E0E\u5B57\u6BB5\u6743\u9650",
13856
- 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"
13525
+ capabilities: {
13526
+ label: "\u80FD\u529B\u914D\u7F6E",
13527
+ description: "\u4EE3\u7406\u53EF\u4F7F\u7528\u7684\u6280\u80FD\u3001\u5DE5\u5177\u4E0E\u77E5\u8BC6\u6765\u6E90"
13857
13528
  },
13858
- tab_and_row_level_security: {
13859
- label: "\u6807\u7B7E\u9875\u4E0E\u884C\u7EA7\u5B89\u5168",
13860
- 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"
13529
+ access: {
13530
+ label: "\u8BBF\u95EE\u4E0E\u5B89\u5168",
13531
+ description: "\u8C01\u80FD\u4F7F\u7528\u6B64\u4EE3\u7406\u4EE5\u53CA\u9632\u62A4\u63AA\u65BD"
13861
13532
  }
13862
13533
  },
13863
13534
  fields: {
13864
13535
  name: {
13865
13536
  label: "\u540D\u79F0",
13866
- helpText: "\u673A\u5668\u540D\uFF08snake_case\uFF09"
13537
+ helpText: "\u552F\u4E00\u6807\u8BC6\u7B26\uFF08snake_case\uFF09"
13867
13538
  },
13868
13539
  label: {
13869
13540
  label: "\u663E\u793A\u540D\u79F0",
13870
- helpText: "\u9762\u5411\u7BA1\u7406\u5458\u663E\u793A\u7684\u6807\u7B7E"
13871
- },
13872
- systemPermissions: {
13873
- label: "\u7CFB\u7EDF\u6743\u9650",
13874
- helpText: "\u7CFB\u7EDF\u80FD\u529B\u952E\u5217\u8868"
13875
- },
13876
- objects: {
13877
- label: "\u5BF9\u8C61\u6743\u9650",
13878
- helpText: '\u793A\u4F8B\uFF1A{ "account": { allowRead: true, allowEdit: true, ... } }'
13879
- },
13880
- fields: {
13881
- label: "\u5B57\u6BB5",
13882
- helpText: '\u793A\u4F8B\uFF1A{ "account.amount": { readable: true, editable: false } }'
13883
- },
13884
- tabPermissions: {
13885
- label: "\u6807\u7B7E\u9875\u6743\u9650",
13886
- helpText: '\u793A\u4F8B\uFF1A{ "app_crm": "visible", "app_admin": "hidden" }'
13887
- },
13888
- rowLevelSecurity: {
13889
- label: "\u884C\u7EA7\u5B89\u5168",
13890
- helpText: "RLS \u7B56\u7565\u6570\u7EC4\uFF08\u53C2\u89C1 rls.zod.ts\uFF09"
13891
- },
13892
- contextVariables: {
13893
- label: "\u4E0A\u4E0B\u6587\u53D8\u91CF",
13894
- helpText: "RLS \u8C13\u8BCD\u4E2D\u5F15\u7528\u7684\u81EA\u5B9A\u4E49\u53D8\u91CF"
13895
- }
13896
- }
13897
- },
13898
- role: {
13899
- label: "\u89D2\u8272",
13900
- sections: {
13901
- role: {
13902
- label: "\u89D2\u8272\u5B9A\u4E49",
13903
- description: "\u89D2\u8272\u540D\u79F0\u4E0E\u7EE7\u627F\u5173\u7CFB"
13904
- }
13905
- },
13906
- fields: {
13907
- name: {
13908
- label: "\u540D\u79F0",
13909
- helpText: "snake_case \u552F\u4E00\u6807\u8BC6\u7B26"
13910
- },
13911
- label: {
13912
- label: "\u663E\u793A\u540D\u79F0"
13913
- },
13914
- parent: {
13915
- label: "\u7236\u7EA7",
13916
- helpText: "\u7EE7\u627F\u7236\u89D2\u8272\u7684\u6743\u9650"
13917
- },
13918
- description: {
13919
- label: "\u63CF\u8FF0"
13920
- }
13921
- }
13922
- },
13923
- agent: {
13924
- label: "AI \u4EE3\u7406",
13925
- sections: {
13926
- identity: {
13927
- label: "\u8EAB\u4EFD\u4FE1\u606F",
13928
- description: "\u7528\u6237\u5982\u4F55\u8BC6\u522B\u4E0E\u8C03\u7528\u8BE5\u4EE3\u7406"
13929
- },
13930
- ai_configuration: {
13931
- label: "AI \u914D\u7F6E",
13932
- description: "\u6A21\u578B\u9009\u62E9\u3001\u6307\u4EE4\u3001\u89C4\u5212\u4E0E\u8BB0\u5FC6"
13933
- },
13934
- capabilities: {
13935
- label: "\u80FD\u529B\u914D\u7F6E",
13936
- description: "\u4EE3\u7406\u53EF\u4F7F\u7528\u7684\u6280\u80FD\u3001\u5DE5\u5177\u4E0E\u77E5\u8BC6\u6765\u6E90"
13937
- },
13938
- access: {
13939
- label: "\u8BBF\u95EE\u4E0E\u5B89\u5168",
13940
- description: "\u8C01\u80FD\u4F7F\u7528\u6B64\u4EE3\u7406\u4EE5\u53CA\u9632\u62A4\u63AA\u65BD"
13941
- }
13942
- },
13943
- fields: {
13944
- name: {
13945
- label: "\u540D\u79F0",
13946
- helpText: "\u552F\u4E00\u6807\u8BC6\u7B26\uFF08snake_case\uFF09"
13947
- },
13948
- label: {
13949
- label: "\u663E\u793A\u540D\u79F0",
13950
- helpText: '\u663E\u793A\u540D\u79F0\uFF08\u5982\uFF1A"\u9500\u552E\u52A9\u624B"\uFF09'
13541
+ helpText: '\u663E\u793A\u540D\u79F0\uFF08\u5982\uFF1A"\u9500\u552E\u52A9\u624B"\uFF09'
13951
13542
  },
13952
13543
  role: {
13953
13544
  label: "\u4EBA\u8BBE\u89D2\u8272",
@@ -14404,6 +13995,70 @@ var jaJPMetadataForms = {
14404
13995
  datasource: {
14405
13996
  label: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9",
14406
13997
  helpText: '\u5BFE\u8C61\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 ID\uFF08\u65E2\u5B9A: "default"\uFF09'
13998
+ },
13999
+ lifecycle: {
14000
+ label: "Lifecycle",
14001
+ 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)."
14002
+ },
14003
+ "lifecycle.class": {
14004
+ label: "Class",
14005
+ helpText: "Persistence contract for the rows of this object"
14006
+ },
14007
+ "lifecycle.retention": {
14008
+ label: "Retention",
14009
+ helpText: "Age-based retention window"
14010
+ },
14011
+ "lifecycle.retention.maxAge": {
14012
+ label: "Max Age",
14013
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
14014
+ },
14015
+ "lifecycle.ttl": {
14016
+ label: "Ttl",
14017
+ helpText: "Per-row TTL expiry"
14018
+ },
14019
+ "lifecycle.ttl.field": {
14020
+ label: "Field",
14021
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
14022
+ },
14023
+ "lifecycle.ttl.expireAfter": {
14024
+ label: "Expire After",
14025
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
14026
+ },
14027
+ "lifecycle.storage": {
14028
+ label: "Storage",
14029
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
14030
+ },
14031
+ "lifecycle.storage.strategy": {
14032
+ label: "Strategy",
14033
+ helpText: "Storage strategy"
14034
+ },
14035
+ "lifecycle.storage.shards": {
14036
+ label: "Shards",
14037
+ helpText: "Shards retained; total window = shards \xD7 unit"
14038
+ },
14039
+ "lifecycle.storage.unit": {
14040
+ label: "Unit",
14041
+ helpText: "Time width of one shard"
14042
+ },
14043
+ "lifecycle.archive": {
14044
+ label: "Archive",
14045
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
14046
+ },
14047
+ "lifecycle.archive.after": {
14048
+ label: "After",
14049
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
14050
+ },
14051
+ "lifecycle.archive.to": {
14052
+ label: "To",
14053
+ helpText: "Target datasource name for cold storage"
14054
+ },
14055
+ "lifecycle.archive.keep": {
14056
+ label: "Keep",
14057
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
14058
+ },
14059
+ "lifecycle.reclaim": {
14060
+ label: "Reclaim",
14061
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
14407
14062
  }
14408
14063
  }
14409
14064
  },
@@ -14512,10 +14167,6 @@ var jaJPMetadataForms = {
14512
14167
  label: "\u96C6\u8A08\u64CD\u4F5C",
14513
14168
  helpText: "\u30ED\u30FC\u30EB\u30A2\u30C3\u30D7\u96C6\u8A08\u8A2D\u5B9A\uFF08\u89AA\u5B50\u95A2\u4FC2\u7528\uFF09"
14514
14169
  },
14515
- cached: {
14516
- label: "\u30AD\u30E3\u30C3\u30B7\u30E5",
14517
- helpText: "\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u8A2D\u5B9A"
14518
- },
14519
14170
  columnName: {
14520
14171
  label: "\u5217\u540D",
14521
14172
  helpText: "\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u4E0A\u306E\u7269\u7406\u5217\u540D\uFF08\u65E2\u5B9A\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\uFF09"
@@ -14543,28 +14194,9 @@ var jaJPMetadataForms = {
14543
14194
  sortable: {
14544
14195
  label: "\u4E26\u3073\u66FF\u3048\u53EF\u80FD",
14545
14196
  helpText: "\u3053\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30EA\u30B9\u30C8\u306E\u4E26\u3079\u66FF\u3048\u3092\u8A31\u53EF"
14546
- },
14547
- auditTrail: {
14548
- label: "\u76E3\u67FB\u8A3C\u8DE1",
14549
- helpText: "\u30E6\u30FC\u30B6\u30FC\u3068\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u4ED8\u304D\u3067\u8A73\u7D30\u5909\u66F4\u3092\u8FFD\u8DE1"
14550
- },
14551
- trackFeedHistory: {
14552
- label: "\u30D5\u30A3\u30FC\u30C9\u5C65\u6B74\u8FFD\u8DE1",
14553
- helpText: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30D5\u30A3\u30FC\u30C9\u306B\u5909\u66F4\u3092\u8868\u793A"
14554
- },
14555
- encryptionConfig: {
14556
- label: "\u6697\u53F7\u5316\u8A2D\u5B9A",
14557
- helpText: "\u30D5\u30A3\u30FC\u30EB\u30C9\u30EC\u30D9\u30EB\u6697\u53F7\u5316\uFF08GDPR/HIPAA/PCI-DSS\uFF09"
14558
- },
14559
- maskingRule: {
14560
- label: "\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB",
14561
- helpText: "PII \u4FDD\u8B77\u7528\u30C7\u30FC\u30BF\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB"
14562
14197
  }
14563
14198
  }
14564
14199
  },
14565
- trigger: {
14566
- label: "\u30C8\u30EA\u30AC\u30FC"
14567
- },
14568
14200
  validation: {
14569
14201
  label: "\u691C\u8A3C\u30EB\u30FC\u30EB"
14570
14202
  },
@@ -14641,12 +14273,36 @@ var jaJPMetadataForms = {
14641
14273
  onError: {
14642
14274
  label: "\u30A8\u30E9\u30FC\u6642"
14643
14275
  },
14276
+ timeout: {
14277
+ label: "Timeout",
14278
+ helpText: "Abort the hook after N milliseconds"
14279
+ },
14644
14280
  condition: {
14645
14281
  label: "\u6761\u4EF6",
14646
14282
  helpText: "\u4EFB\u610F\u306E\u6570\u5F0F \u2014 false \u8A55\u4FA1\u6642\u306F\u30D5\u30C3\u30AF\u3092\u30B9\u30AD\u30C3\u30D7"
14283
+ },
14284
+ retryPolicy: {
14285
+ label: "Retry Policy",
14286
+ helpText: "Retry on failure \u2014 most useful for async hooks"
14287
+ },
14288
+ "retryPolicy.maxRetries": {
14289
+ label: "Max Retries",
14290
+ helpText: "Maximum retry attempts"
14291
+ },
14292
+ "retryPolicy.backoffMs": {
14293
+ label: "Backoff Ms",
14294
+ helpText: "Delay between retries (ms)"
14647
14295
  }
14648
14296
  }
14649
14297
  },
14298
+ seed: {
14299
+ label: "Seed Data",
14300
+ description: "Fixture / initialization data applied on publish"
14301
+ },
14302
+ mapping: {
14303
+ label: "Import Mapping",
14304
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
14305
+ },
14650
14306
  view: {
14651
14307
  label: "\u30D3\u30E5\u30FC",
14652
14308
  sections: {
@@ -14818,6 +14474,10 @@ var jaJPMetadataForms = {
14818
14474
  label: "\u30EC\u30A4\u30A2\u30A6\u30C8",
14819
14475
  description: "\u30DA\u30FC\u30B8\u9818\u57DF\u3068\u305D\u3053\u306B\u914D\u7F6E\u3059\u308B\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3002"
14820
14476
  },
14477
+ interface: {
14478
+ label: "Interface (list pages)",
14479
+ 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."
14480
+ },
14821
14481
  advanced: {
14822
14482
  label: "\u8A73\u7D30",
14823
14483
  description: "\u6709\u52B9\u5316\u3001\u5BFE\u8C61\u30E6\u30FC\u30B6\u30FC\u3001\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u3002"
@@ -14860,6 +14520,58 @@ var jaJPMetadataForms = {
14860
14520
  label: "\u30EA\u30FC\u30B8\u30E7\u30F3",
14861
14521
  helpText: "\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u542B\u3080\u30EC\u30A4\u30A2\u30A6\u30C8\u9818\u57DF\uFF08header, main, sidebar, footer\uFF09"
14862
14522
  },
14523
+ interfaceConfig: {
14524
+ label: "Interface Config",
14525
+ 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."
14526
+ },
14527
+ "interfaceConfig.source": {
14528
+ label: "Source",
14529
+ helpText: "Object this page reads from"
14530
+ },
14531
+ "interfaceConfig.columns": {
14532
+ label: "Columns",
14533
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
14534
+ },
14535
+ "interfaceConfig.filterBy": {
14536
+ label: "Filter By",
14537
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
14538
+ },
14539
+ "interfaceConfig.levels": {
14540
+ label: "Levels",
14541
+ helpText: "Hierarchy levels to display (tree-like sources)"
14542
+ },
14543
+ "interfaceConfig.appearance": {
14544
+ label: "Appearance",
14545
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
14546
+ },
14547
+ "interfaceConfig.userFilters": {
14548
+ label: "User Filters",
14549
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
14550
+ },
14551
+ "interfaceConfig.userActions": {
14552
+ label: "User Actions",
14553
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
14554
+ },
14555
+ "interfaceConfig.addRecord": {
14556
+ label: "Add Record",
14557
+ helpText: "Add-record entry point"
14558
+ },
14559
+ "interfaceConfig.buttons": {
14560
+ label: "Buttons",
14561
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
14562
+ },
14563
+ "interfaceConfig.recordAction": {
14564
+ label: "Record Action",
14565
+ helpText: "How clicking a record opens its detail"
14566
+ },
14567
+ "interfaceConfig.showRecordCount": {
14568
+ label: "Show Record Count",
14569
+ helpText: "Show the record count bar"
14570
+ },
14571
+ "interfaceConfig.allowPrinting": {
14572
+ label: "Allow Printing",
14573
+ helpText: "Allow users to print this page"
14574
+ },
14863
14575
  isDefault: {
14864
14576
  label: "\u65E2\u5B9A",
14865
14577
  helpText: "\u3053\u306E\u30DA\u30FC\u30B8\u7A2E\u5225\u306E\u65E2\u5B9A\u30DA\u30FC\u30B8\u306B\u8A2D\u5B9A"
@@ -15108,6 +14820,22 @@ var jaJPMetadataForms = {
15108
14820
  label: "\u672C\u6587",
15109
14821
  helpText: "\u5B9F\u884C\u3059\u308B JavaScript \u30B3\u30FC\u30C9"
15110
14822
  },
14823
+ "body.language": {
14824
+ label: "Language",
14825
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
14826
+ },
14827
+ "body.source": {
14828
+ label: "Source",
14829
+ helpText: "Function body source \u2014 no top-level imports"
14830
+ },
14831
+ "body.capabilities": {
14832
+ label: "Capabilities",
14833
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
14834
+ },
14835
+ "body.timeoutMs": {
14836
+ label: "Timeout Ms",
14837
+ helpText: "Per-invocation timeout (ms)"
14838
+ },
15111
14839
  params: {
15112
14840
  label: "\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
15113
14841
  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"
@@ -15148,9 +14876,9 @@ var jaJPMetadataForms = {
15148
14876
  label: "\u4E00\u62EC\u64CD\u4F5C\u6709\u52B9",
15149
14877
  helpText: "\u9078\u629E\u3057\u305F\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u3078\u306E\u9069\u7528\u3092\u8A31\u53EF"
15150
14878
  },
15151
- aiExposed: {
15152
- label: "AI \u306B\u516C\u958B",
15153
- 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"
14879
+ ai: {
14880
+ label: "Ai",
14881
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
15154
14882
  },
15155
14883
  recordIdParam: {
15156
14884
  label: "\u30EC\u30B3\u30FC\u30C9 ID \u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
@@ -15173,13 +14901,9 @@ var jaJPMetadataForms = {
15173
14901
  label: "\u57FA\u672C",
15174
14902
  description: "ID \u3068\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3002"
15175
14903
  },
15176
- columns: {
15177
- label: "\u5217",
15178
- description: "\u30EC\u30DD\u30FC\u30C8\u51FA\u529B\u306B\u8868\u793A\u3059\u308B\u5217\u3002"
15179
- },
15180
- groupings: {
15181
- label: "\u30B0\u30EB\u30FC\u30D7\u5316",
15182
- description: "\u884C\uFF08matrix \u30EC\u30DD\u30FC\u30C8\u3067\u306F\u5217\u3082\uFF09\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u65B9\u6CD5\u3002"
14904
+ dataset_binding: {
14905
+ label: "Dataset binding",
14906
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
15183
14907
  },
15184
14908
  joined_blocks: {
15185
14909
  label: "\u7D50\u5408\u30D6\u30ED\u30C3\u30AF",
@@ -15205,33 +14929,37 @@ var jaJPMetadataForms = {
15205
14929
  description: {
15206
14930
  label: "\u8AAC\u660E"
15207
14931
  },
15208
- objectName: {
15209
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D",
15210
- helpText: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"
15211
- },
15212
14932
  type: {
15213
14933
  label: "\u578B",
15214
14934
  helpText: "\u30EC\u30DD\u30FC\u30C8\u7A2E\u5225: tabular/summary/matrix/joined"
15215
14935
  },
14936
+ dataset: {
14937
+ label: "Dataset",
14938
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
14939
+ },
14940
+ values: {
14941
+ label: "Values",
14942
+ helpText: "Measure names (from the dataset) to display"
14943
+ },
14944
+ rows: {
14945
+ label: "Rows",
14946
+ helpText: "Dimension names (from the dataset) to group rows by"
14947
+ },
15216
14948
  columns: {
15217
14949
  label: "\u5217",
15218
14950
  helpText: "\u30EC\u30DD\u30FC\u30C8\u306B\u8868\u793A\u3059\u308B\u5217"
15219
14951
  },
15220
- groupingsDown: {
15221
- label: "\u7E26\u30B0\u30EB\u30FC\u30D7",
15222
- helpText: "\u884C\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB"
15223
- },
15224
- groupingsAcross: {
15225
- label: "\u6A2A\u30B0\u30EB\u30FC\u30D7",
15226
- helpText: "\u5217\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB\uFF08matrix \u306E\u307F\uFF09"
14952
+ drilldown: {
14953
+ label: "Drilldown",
14954
+ helpText: "Click an aggregated row/cell to open the underlying records"
15227
14955
  },
15228
14956
  blocks: {
15229
14957
  label: "\u30D6\u30ED\u30C3\u30AF",
15230
14958
  helpText: "\u8907\u6570\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u7D50\u5408\uFF08joined \u30EC\u30DD\u30FC\u30C8\u306E\u307F\uFF09"
15231
14959
  },
15232
- filter: {
15233
- label: "\u30D5\u30A3\u30EB\u30BF\u30FC",
15234
- helpText: "\u30EC\u30DD\u30FC\u30C8\u30EC\u30D9\u30EB\u306E\u30D5\u30A3\u30EB\u30BF\u30FC"
14960
+ runtimeFilter: {
14961
+ label: "Runtime Filter",
14962
+ helpText: "Render-time scope filter, ANDed at query time"
15235
14963
  },
15236
14964
  chart: {
15237
14965
  label: "\u30C1\u30E3\u30FC\u30C8",
@@ -15247,6 +14975,62 @@ var jaJPMetadataForms = {
15247
14975
  }
15248
14976
  }
15249
14977
  },
14978
+ dataset: {
14979
+ label: "Dataset",
14980
+ description: "Analytics semantic layer \u2014 dimensions & measures",
14981
+ sections: {
14982
+ basics: {
14983
+ label: "Basics",
14984
+ description: "Dataset identity."
14985
+ },
14986
+ source: {
14987
+ label: "Source",
14988
+ 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."
14989
+ },
14990
+ dimensions: {
14991
+ label: "Dimensions",
14992
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
14993
+ },
14994
+ measures: {
14995
+ label: "Measures",
14996
+ 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."
14997
+ }
14998
+ },
14999
+ fields: {
15000
+ name: {
15001
+ label: "Name",
15002
+ helpText: "snake_case unique identifier"
15003
+ },
15004
+ label: {
15005
+ label: "Label",
15006
+ helpText: "Display name"
15007
+ },
15008
+ description: {
15009
+ label: "Description",
15010
+ helpText: "What this dataset measures"
15011
+ },
15012
+ object: {
15013
+ label: "Object",
15014
+ helpText: "Base object \u2014 the FROM"
15015
+ },
15016
+ include: {
15017
+ label: "Include",
15018
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
15019
+ },
15020
+ filter: {
15021
+ label: "Filter",
15022
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
15023
+ },
15024
+ dimensions: {
15025
+ label: "Dimensions",
15026
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
15027
+ },
15028
+ measures: {
15029
+ label: "Measures",
15030
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
15031
+ }
15032
+ }
15033
+ },
15250
15034
  flow: {
15251
15035
  label: "\u30D5\u30ED\u30FC",
15252
15036
  sections: {
@@ -15326,15 +15110,6 @@ var jaJPMetadataForms = {
15326
15110
  translation: {
15327
15111
  label: "\u7FFB\u8A33"
15328
15112
  },
15329
- router: {
15330
- label: "\u30EB\u30FC\u30BF\u30FC"
15331
- },
15332
- function: {
15333
- label: "\u95A2\u6570"
15334
- },
15335
- service: {
15336
- label: "\u30B5\u30FC\u30D3\u30B9"
15337
- },
15338
15113
  email_template: {
15339
15114
  label: "\u30E1\u30FC\u30EB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8",
15340
15115
  sections: {
@@ -15415,6 +15190,14 @@ var jaJPMetadataForms = {
15415
15190
  }
15416
15191
  }
15417
15192
  },
15193
+ doc: {
15194
+ label: "Documentation",
15195
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
15196
+ },
15197
+ book: {
15198
+ label: "Documentation Book",
15199
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
15200
+ },
15418
15201
  permission: {
15419
15202
  label: "\u6A29\u9650\u30BB\u30C3\u30C8",
15420
15203
  sections: {
@@ -15470,67 +15253,12 @@ var jaJPMetadataForms = {
15470
15253
  }
15471
15254
  }
15472
15255
  },
15473
- profile: {
15474
- label: "\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB",
15256
+ position: {
15257
+ label: "\u30DD\u30B8\u30B7\u30E7\u30F3",
15475
15258
  sections: {
15476
- identity: {
15477
- label: "ID",
15478
- 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"
15479
- },
15480
- system_permissions: {
15481
- label: "\u30B7\u30B9\u30C6\u30E0\u6A29\u9650",
15482
- 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"
15483
- },
15484
- object_and_field_permissions: {
15485
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3068\u30D5\u30A3\u30FC\u30EB\u30C9\u6A29\u9650",
15486
- 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"
15487
- },
15488
- tab_and_row_level_security: {
15489
- label: "\u30BF\u30D6\u3068\u884C\u30EC\u30D9\u30EB\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3",
15490
- 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"
15491
- }
15492
- },
15493
- fields: {
15494
- name: {
15495
- label: "\u540D\u524D",
15496
- helpText: "\u30DE\u30B7\u30F3\u540D\uFF08snake_case\uFF09"
15497
- },
15498
- label: {
15499
- label: "\u8868\u793A\u540D",
15500
- helpText: "\u7BA1\u7406\u8005\u5411\u3051\u8868\u793A\u30E9\u30D9\u30EB"
15501
- },
15502
- systemPermissions: {
15503
- label: "\u30B7\u30B9\u30C6\u30E0\u6A29\u9650",
15504
- helpText: "\u30B7\u30B9\u30C6\u30E0\u6A5F\u80FD\u30AD\u30FC\u306E\u30EA\u30B9\u30C8"
15505
- },
15506
- objects: {
15507
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u6A29\u9650",
15508
- helpText: '\u4F8B: { "account": { allowRead: true, allowEdit: true, ... } }'
15509
- },
15510
- fields: {
15511
- label: "\u30D5\u30A3\u30FC\u30EB\u30C9",
15512
- helpText: '\u4F8B: { "account.amount": { readable: true, editable: false } }'
15513
- },
15514
- tabPermissions: {
15515
- label: "\u30BF\u30D6\u6A29\u9650",
15516
- helpText: '\u4F8B: { "app_crm": "visible", "app_admin": "hidden" }'
15517
- },
15518
- rowLevelSecurity: {
15519
- label: "\u884C\u30EC\u30D9\u30EB\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3",
15520
- helpText: "RLS \u30DD\u30EA\u30B7\u30FC\u306E\u914D\u5217\uFF08rls.zod.ts \u53C2\u7167\uFF09"
15521
- },
15522
- contextVariables: {
15523
- label: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u5909\u6570",
15524
- helpText: "RLS \u8FF0\u8A9E\u3067\u53C2\u7167\u3059\u308B\u30AB\u30B9\u30BF\u30E0\u5909\u6570"
15525
- }
15526
- }
15527
- },
15528
- role: {
15529
- label: "\u30ED\u30FC\u30EB",
15530
- sections: {
15531
- role: {
15532
- label: "\u30ED\u30FC\u30EB",
15533
- 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"
15259
+ position: {
15260
+ label: "\u30DD\u30B8\u30B7\u30E7\u30F3",
15261
+ 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"
15534
15262
  }
15535
15263
  },
15536
15264
  fields: {
@@ -15541,10 +15269,6 @@ var jaJPMetadataForms = {
15541
15269
  label: {
15542
15270
  label: "\u8868\u793A\u540D"
15543
15271
  },
15544
- parent: {
15545
- label: "\u89AA",
15546
- helpText: "\u89AA\u30ED\u30FC\u30EB\u306E\u30DE\u30B7\u30F3\u540D\uFF08Reports To\uFF09"
15547
- },
15548
15272
  description: {
15549
15273
  label: "\u8AAC\u660E"
15550
15274
  }
@@ -16034,6 +15758,70 @@ var esESMetadataForms = {
16034
15758
  datasource: {
16035
15759
  label: "Fuente de datos",
16036
15760
  helpText: 'ID de fuente de datos de destino (valor predeterminado: "default")'
15761
+ },
15762
+ lifecycle: {
15763
+ label: "Lifecycle",
15764
+ 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)."
15765
+ },
15766
+ "lifecycle.class": {
15767
+ label: "Class",
15768
+ helpText: "Persistence contract for the rows of this object"
15769
+ },
15770
+ "lifecycle.retention": {
15771
+ label: "Retention",
15772
+ helpText: "Age-based retention window"
15773
+ },
15774
+ "lifecycle.retention.maxAge": {
15775
+ label: "Max Age",
15776
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
15777
+ },
15778
+ "lifecycle.ttl": {
15779
+ label: "Ttl",
15780
+ helpText: "Per-row TTL expiry"
15781
+ },
15782
+ "lifecycle.ttl.field": {
15783
+ label: "Field",
15784
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
15785
+ },
15786
+ "lifecycle.ttl.expireAfter": {
15787
+ label: "Expire After",
15788
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
15789
+ },
15790
+ "lifecycle.storage": {
15791
+ label: "Storage",
15792
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
15793
+ },
15794
+ "lifecycle.storage.strategy": {
15795
+ label: "Strategy",
15796
+ helpText: "Storage strategy"
15797
+ },
15798
+ "lifecycle.storage.shards": {
15799
+ label: "Shards",
15800
+ helpText: "Shards retained; total window = shards \xD7 unit"
15801
+ },
15802
+ "lifecycle.storage.unit": {
15803
+ label: "Unit",
15804
+ helpText: "Time width of one shard"
15805
+ },
15806
+ "lifecycle.archive": {
15807
+ label: "Archive",
15808
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
15809
+ },
15810
+ "lifecycle.archive.after": {
15811
+ label: "After",
15812
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
15813
+ },
15814
+ "lifecycle.archive.to": {
15815
+ label: "To",
15816
+ helpText: "Target datasource name for cold storage"
15817
+ },
15818
+ "lifecycle.archive.keep": {
15819
+ label: "Keep",
15820
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
15821
+ },
15822
+ "lifecycle.reclaim": {
15823
+ label: "Reclaim",
15824
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
16037
15825
  }
16038
15826
  }
16039
15827
  },
@@ -16142,10 +15930,6 @@ var esESMetadataForms = {
16142
15930
  label: "Operaciones de resumen",
16143
15931
  helpText: "Configuraci\xF3n de resumen roll-up (para relaciones padre-hijo)"
16144
15932
  },
16145
- cached: {
16146
- label: "En cach\xE9",
16147
- helpText: "Configuraci\xF3n de cach\xE9 para campos calculados"
16148
- },
16149
15933
  columnName: {
16150
15934
  label: "Nombre de columna",
16151
15935
  helpText: "Nombre de columna f\xEDsica en la base de datos (por defecto, el nombre del campo)"
@@ -16173,28 +15957,9 @@ var esESMetadataForms = {
16173
15957
  sortable: {
16174
15958
  label: "Ordenable",
16175
15959
  helpText: "Permite ordenar listas por este campo"
16176
- },
16177
- auditTrail: {
16178
- label: "Rastro de auditor\xEDa",
16179
- helpText: "Registra cambios detallados con usuario y marca temporal"
16180
- },
16181
- trackFeedHistory: {
16182
- label: "Historial de feed",
16183
- helpText: "Muestra cambios en el feed de actividad"
16184
- },
16185
- encryptionConfig: {
16186
- label: "Configuraci\xF3n de cifrado",
16187
- helpText: "Cifrado a nivel de campo (GDPR/HIPAA/PCI-DSS)"
16188
- },
16189
- maskingRule: {
16190
- label: "Regla de enmascaramiento",
16191
- helpText: "Reglas de enmascaramiento de datos para protecci\xF3n de PII"
16192
15960
  }
16193
15961
  }
16194
15962
  },
16195
- trigger: {
16196
- label: "Disparador"
16197
- },
16198
15963
  validation: {
16199
15964
  label: "Regla de validaci\xF3n"
16200
15965
  },
@@ -16271,12 +16036,36 @@ var esESMetadataForms = {
16271
16036
  onError: {
16272
16037
  label: "Al error"
16273
16038
  },
16039
+ timeout: {
16040
+ label: "Timeout",
16041
+ helpText: "Abort the hook after N milliseconds"
16042
+ },
16274
16043
  condition: {
16275
16044
  label: "Condici\xF3n",
16276
16045
  helpText: "F\xF3rmula opcional \u2014 omite el hook cuando eval\xFAa a false"
16046
+ },
16047
+ retryPolicy: {
16048
+ label: "Retry Policy",
16049
+ helpText: "Retry on failure \u2014 most useful for async hooks"
16050
+ },
16051
+ "retryPolicy.maxRetries": {
16052
+ label: "Max Retries",
16053
+ helpText: "Maximum retry attempts"
16054
+ },
16055
+ "retryPolicy.backoffMs": {
16056
+ label: "Backoff Ms",
16057
+ helpText: "Delay between retries (ms)"
16277
16058
  }
16278
16059
  }
16279
16060
  },
16061
+ seed: {
16062
+ label: "Seed Data",
16063
+ description: "Fixture / initialization data applied on publish"
16064
+ },
16065
+ mapping: {
16066
+ label: "Import Mapping",
16067
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
16068
+ },
16280
16069
  view: {
16281
16070
  label: "Vista",
16282
16071
  sections: {
@@ -16448,6 +16237,10 @@ var esESMetadataForms = {
16448
16237
  label: "Dise\xF1o",
16449
16238
  description: "Regiones de p\xE1gina y componentes colocados en ellas."
16450
16239
  },
16240
+ interface: {
16241
+ label: "Interface (list pages)",
16242
+ 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."
16243
+ },
16451
16244
  advanced: {
16452
16245
  label: "Avanzado",
16453
16246
  description: "Activaci\xF3n, audiencia y accesibilidad."
@@ -16490,6 +16283,58 @@ var esESMetadataForms = {
16490
16283
  label: "Regiones",
16491
16284
  helpText: "Regiones de dise\xF1o (header, main, sidebar, footer) con componentes"
16492
16285
  },
16286
+ interfaceConfig: {
16287
+ label: "Interface Config",
16288
+ 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."
16289
+ },
16290
+ "interfaceConfig.source": {
16291
+ label: "Source",
16292
+ helpText: "Object this page reads from"
16293
+ },
16294
+ "interfaceConfig.columns": {
16295
+ label: "Columns",
16296
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
16297
+ },
16298
+ "interfaceConfig.filterBy": {
16299
+ label: "Filter By",
16300
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
16301
+ },
16302
+ "interfaceConfig.levels": {
16303
+ label: "Levels",
16304
+ helpText: "Hierarchy levels to display (tree-like sources)"
16305
+ },
16306
+ "interfaceConfig.appearance": {
16307
+ label: "Appearance",
16308
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
16309
+ },
16310
+ "interfaceConfig.userFilters": {
16311
+ label: "User Filters",
16312
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
16313
+ },
16314
+ "interfaceConfig.userActions": {
16315
+ label: "User Actions",
16316
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
16317
+ },
16318
+ "interfaceConfig.addRecord": {
16319
+ label: "Add Record",
16320
+ helpText: "Add-record entry point"
16321
+ },
16322
+ "interfaceConfig.buttons": {
16323
+ label: "Buttons",
16324
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
16325
+ },
16326
+ "interfaceConfig.recordAction": {
16327
+ label: "Record Action",
16328
+ helpText: "How clicking a record opens its detail"
16329
+ },
16330
+ "interfaceConfig.showRecordCount": {
16331
+ label: "Show Record Count",
16332
+ helpText: "Show the record count bar"
16333
+ },
16334
+ "interfaceConfig.allowPrinting": {
16335
+ label: "Allow Printing",
16336
+ helpText: "Allow users to print this page"
16337
+ },
16493
16338
  isDefault: {
16494
16339
  label: "Predeterminado",
16495
16340
  helpText: "Establece como p\xE1gina predeterminada para este tipo de p\xE1gina"
@@ -16738,6 +16583,22 @@ var esESMetadataForms = {
16738
16583
  label: "Cuerpo",
16739
16584
  helpText: "C\xF3digo JavaScript que ejecutar"
16740
16585
  },
16586
+ "body.language": {
16587
+ label: "Language",
16588
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
16589
+ },
16590
+ "body.source": {
16591
+ label: "Source",
16592
+ helpText: "Function body source \u2014 no top-level imports"
16593
+ },
16594
+ "body.capabilities": {
16595
+ label: "Capabilities",
16596
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
16597
+ },
16598
+ "body.timeoutMs": {
16599
+ label: "Timeout Ms",
16600
+ helpText: "Per-invocation timeout (ms)"
16601
+ },
16741
16602
  params: {
16742
16603
  label: "Par\xE1metros",
16743
16604
  helpText: "Par\xE1metros de entrada de usuario (muestra el formulario antes de ejecutar)"
@@ -16778,9 +16639,9 @@ var esESMetadataForms = {
16778
16639
  label: "Acci\xF3n masiva",
16779
16640
  helpText: "Permite aplicar a varios registros seleccionados"
16780
16641
  },
16781
- aiExposed: {
16782
- label: "Expuesto a IA",
16783
- helpText: "Permite que agentes de IA llamen a esta acci\xF3n"
16642
+ ai: {
16643
+ label: "Ai",
16644
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
16784
16645
  },
16785
16646
  recordIdParam: {
16786
16647
  label: "Par\xE1metro de ID de registro",
@@ -16803,13 +16664,9 @@ var esESMetadataForms = {
16803
16664
  label: "Aspectos b\xE1sicos",
16804
16665
  description: "Identidad y fuente de datos."
16805
16666
  },
16806
- columns: {
16807
- label: "Columnas",
16808
- description: "Columnas mostradas en la salida del informe."
16809
- },
16810
- groupings: {
16811
- label: "Agrupaciones",
16812
- description: "C\xF3mo se agrupan las filas (y columnas, para informes matrix)."
16667
+ dataset_binding: {
16668
+ label: "Dataset binding",
16669
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
16813
16670
  },
16814
16671
  joined_blocks: {
16815
16672
  label: "Bloques unidos",
@@ -16835,33 +16692,37 @@ var esESMetadataForms = {
16835
16692
  description: {
16836
16693
  label: "Descripci\xF3n"
16837
16694
  },
16838
- objectName: {
16839
- label: "Nombre de objeto",
16840
- helpText: "Objeto de fuente de datos"
16841
- },
16842
16695
  type: {
16843
16696
  label: "Tipo",
16844
16697
  helpText: "Tipo de informe: tabular/summary/matrix/joined"
16845
16698
  },
16699
+ dataset: {
16700
+ label: "Dataset",
16701
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
16702
+ },
16703
+ values: {
16704
+ label: "Values",
16705
+ helpText: "Measure names (from the dataset) to display"
16706
+ },
16707
+ rows: {
16708
+ label: "Rows",
16709
+ helpText: "Dimension names (from the dataset) to group rows by"
16710
+ },
16846
16711
  columns: {
16847
16712
  label: "Columnas",
16848
16713
  helpText: "Columnas que mostrar en el informe"
16849
16714
  },
16850
- groupingsDown: {
16851
- label: "Agrupaciones verticales",
16852
- helpText: "Niveles de agrupaci\xF3n de filas"
16853
- },
16854
- groupingsAcross: {
16855
- label: "Agrupaciones horizontales",
16856
- helpText: "Niveles de agrupaci\xF3n de columnas (solo matrix)"
16715
+ drilldown: {
16716
+ label: "Drilldown",
16717
+ helpText: "Click an aggregated row/cell to open the underlying records"
16857
16718
  },
16858
16719
  blocks: {
16859
16720
  label: "Bloques",
16860
16721
  helpText: "Une varios objetos (solo informe joined)"
16861
16722
  },
16862
- filter: {
16863
- label: "Filtro",
16864
- helpText: "Filtros a nivel de informe"
16723
+ runtimeFilter: {
16724
+ label: "Runtime Filter",
16725
+ helpText: "Render-time scope filter, ANDed at query time"
16865
16726
  },
16866
16727
  chart: {
16867
16728
  label: "Gr\xE1fico",
@@ -16877,6 +16738,62 @@ var esESMetadataForms = {
16877
16738
  }
16878
16739
  }
16879
16740
  },
16741
+ dataset: {
16742
+ label: "Dataset",
16743
+ description: "Analytics semantic layer \u2014 dimensions & measures",
16744
+ sections: {
16745
+ basics: {
16746
+ label: "Basics",
16747
+ description: "Dataset identity."
16748
+ },
16749
+ source: {
16750
+ label: "Source",
16751
+ 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."
16752
+ },
16753
+ dimensions: {
16754
+ label: "Dimensions",
16755
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
16756
+ },
16757
+ measures: {
16758
+ label: "Measures",
16759
+ 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."
16760
+ }
16761
+ },
16762
+ fields: {
16763
+ name: {
16764
+ label: "Name",
16765
+ helpText: "snake_case unique identifier"
16766
+ },
16767
+ label: {
16768
+ label: "Label",
16769
+ helpText: "Display name"
16770
+ },
16771
+ description: {
16772
+ label: "Description",
16773
+ helpText: "What this dataset measures"
16774
+ },
16775
+ object: {
16776
+ label: "Object",
16777
+ helpText: "Base object \u2014 the FROM"
16778
+ },
16779
+ include: {
16780
+ label: "Include",
16781
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
16782
+ },
16783
+ filter: {
16784
+ label: "Filter",
16785
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
16786
+ },
16787
+ dimensions: {
16788
+ label: "Dimensions",
16789
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
16790
+ },
16791
+ measures: {
16792
+ label: "Measures",
16793
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
16794
+ }
16795
+ }
16796
+ },
16880
16797
  flow: {
16881
16798
  label: "Flujo",
16882
16799
  sections: {
@@ -16956,15 +16873,6 @@ var esESMetadataForms = {
16956
16873
  translation: {
16957
16874
  label: "Traducci\xF3n"
16958
16875
  },
16959
- router: {
16960
- label: "Enrutador"
16961
- },
16962
- function: {
16963
- label: "Funci\xF3n"
16964
- },
16965
- service: {
16966
- label: "Servicio"
16967
- },
16968
16876
  email_template: {
16969
16877
  label: "Plantilla de email",
16970
16878
  sections: {
@@ -17045,6 +16953,14 @@ var esESMetadataForms = {
17045
16953
  }
17046
16954
  }
17047
16955
  },
16956
+ doc: {
16957
+ label: "Documentation",
16958
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
16959
+ },
16960
+ book: {
16961
+ label: "Documentation Book",
16962
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
16963
+ },
17048
16964
  permission: {
17049
16965
  label: "Conjunto de permisos",
17050
16966
  sections: {
@@ -17100,67 +17016,12 @@ var esESMetadataForms = {
17100
17016
  }
17101
17017
  }
17102
17018
  },
17103
- profile: {
17104
- label: "Perfil",
17019
+ position: {
17020
+ label: "Posici\xF3n",
17105
17021
  sections: {
17106
- identity: {
17107
- label: "Identidad",
17108
- 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."
17109
- },
17110
- system_permissions: {
17111
- label: "Permisos del sistema",
17112
- description: "Capacidades de alto nivel no vinculadas a un objeto espec\xEDfico \u2014 p. ej. manage_users, view_audit_logs."
17113
- },
17114
- object_and_field_permissions: {
17115
- label: "Permisos de objeto y campo",
17116
- description: "CRUD por objeto + FLS por campo. Edita mediante el editor matricial o pega JSON aqu\xED."
17117
- },
17118
- tab_and_row_level_security: {
17119
- label: "Pesta\xF1a y seguridad a nivel de fila",
17120
- description: "Visibilidad de pesta\xF1as, pol\xEDticas RLS y variables de contexto personalizadas para evaluar predicados."
17121
- }
17122
- },
17123
- fields: {
17124
- name: {
17125
- label: "Nombre",
17126
- helpText: "Nombre de m\xE1quina (snake_case)"
17127
- },
17128
- label: {
17129
- label: "Etiqueta",
17130
- helpText: "Etiqueta mostrada para administradores"
17131
- },
17132
- systemPermissions: {
17133
- label: "Permisos del sistema",
17134
- helpText: "Lista de claves de capacidades del sistema"
17135
- },
17136
- objects: {
17137
- label: "Permisos de objeto",
17138
- helpText: 'Ejemplo: { "account": { allowRead: true, allowEdit: true, ... } }'
17139
- },
17140
- fields: {
17141
- label: "Campos",
17142
- helpText: 'Ejemplo: { "account.amount": { readable: true, editable: false } }'
17143
- },
17144
- tabPermissions: {
17145
- label: "Permisos de pesta\xF1a",
17146
- helpText: 'Ejemplo: { "app_crm": "visible", "app_admin": "hidden" }'
17147
- },
17148
- rowLevelSecurity: {
17149
- label: "Seguridad a nivel de fila",
17150
- helpText: "Array de pol\xEDticas RLS (ver rls.zod.ts)"
17151
- },
17152
- contextVariables: {
17153
- label: "Variables de contexto",
17154
- helpText: "Variables personalizadas referenciadas en predicados RLS"
17155
- }
17156
- }
17157
- },
17158
- role: {
17159
- label: "Rol",
17160
- sections: {
17161
- role: {
17162
- label: "Rol",
17163
- 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."
17022
+ position: {
17023
+ label: "Posici\xF3n",
17024
+ 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."
17164
17025
  }
17165
17026
  },
17166
17027
  fields: {
@@ -17171,10 +17032,6 @@ var esESMetadataForms = {
17171
17032
  label: {
17172
17033
  label: "Etiqueta"
17173
17034
  },
17174
- parent: {
17175
- label: "Padre",
17176
- helpText: "Nombre de m\xE1quina del rol padre (Reports To)"
17177
- },
17178
17035
  description: {
17179
17036
  label: "Descripci\xF3n"
17180
17037
  }