@objectstack/platform-objects 14.3.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.
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
  };
@@ -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
  };
@@ -5493,14 +5155,64 @@ var jaJPObjects = {
5493
5155
  label: "\u5229\u7528\u505C\u6B62\u671F\u9650",
5494
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"
5495
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
+ },
5496
5198
  image: {
5497
5199
  label: "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u753B\u50CF"
5498
5200
  },
5499
5201
  manager_id: {
5500
- 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)."
5501
5204
  },
5502
5205
  primary_business_unit_id: {
5503
- 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
+ }
5504
5216
  },
5505
5217
  id: {
5506
5218
  label: "\u30E6\u30FC\u30B6\u30FC ID"
@@ -5543,6 +5255,14 @@ var jaJPObjects = {
5543
5255
  label: "\u5229\u7528\u505C\u6B62\u3092\u89E3\u9664",
5544
5256
  successMessage: "\u30E6\u30FC\u30B6\u30FC\u306E\u5229\u7528\u505C\u6B62\u3092\u89E3\u9664\u3057\u307E\u3057\u305F"
5545
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
+ },
5546
5266
  set_user_password: {
5547
5267
  label: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8A2D\u5B9A",
5548
5268
  successMessage: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u66F4\u65B0\u3057\u307E\u3057\u305F"
@@ -5604,6 +5324,18 @@ var jaJPObjects = {
5604
5324
  expires_at: {
5605
5325
  label: "\u6709\u52B9\u671F\u9650"
5606
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
+ },
5607
5339
  active_organization_id: {
5608
5340
  label: "\u30A2\u30AF\u30C6\u30A3\u30D6\u7D44\u7E54"
5609
5341
  },
@@ -5702,6 +5434,10 @@ var jaJPObjects = {
5702
5434
  password: {
5703
5435
  label: "\u30D1\u30B9\u30EF\u30FC\u30C9\u30CF\u30C3\u30B7\u30E5",
5704
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."
5705
5441
  }
5706
5442
  },
5707
5443
  _views: {
@@ -5772,6 +5508,10 @@ var jaJPObjects = {
5772
5508
  label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
5773
5509
  help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u7D44\u7E54\u30E1\u30BF\u30C7\u30FC\u30BF"
5774
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
+ },
5775
5515
  id: {
5776
5516
  label: "\u7D44\u7E54 ID"
5777
5517
  },
@@ -6096,6 +5836,9 @@ var jaJPObjects = {
6096
5836
  }
6097
5837
  },
6098
5838
  _views: {
5839
+ org_chart: {
5840
+ label: "Org Chart"
5841
+ },
6099
5842
  active: {
6100
5843
  label: "\u6709\u52B9"
6101
5844
  },
@@ -6677,263 +6420,57 @@ var jaJPObjects = {
6677
6420
  }
6678
6421
  }
6679
6422
  },
6680
- sys_audit_log: {
6681
- label: "\u76E3\u67FB\u30ED\u30B0",
6682
- pluralLabel: "\u76E3\u67FB\u30ED\u30B0",
6683
- 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",
6684
6427
  fields: {
6685
- created_at: {
6686
- label: "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7"
6428
+ id: {
6429
+ label: "\u901A\u77E5 ID"
6687
6430
  },
6688
- action: {
6689
- label: "\u30A2\u30AF\u30B7\u30E7\u30F3",
6690
- help: "\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\uFF08snake_case\uFF09",
6691
- options: {
6692
- create: "\u4F5C\u6210",
6693
- update: "\u66F4\u65B0",
6694
- delete: "\u524A\u9664",
6695
- restore: "\u5FA9\u5143",
6696
- login: "\u30ED\u30B0\u30A4\u30F3",
6697
- logout: "\u30ED\u30B0\u30A2\u30A6\u30C8",
6698
- permission_change: "\u6A29\u9650\u5909\u66F4",
6699
- config_change: "\u69CB\u6210\u5909\u66F4",
6700
- export: "\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",
6701
- import: "\u30A4\u30F3\u30DD\u30FC\u30C8"
6702
- }
6703
- },
6704
- user_id: {
6705
- label: "\u64CD\u4F5C\u8005",
6706
- 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"
6707
- },
6708
- object_name: {
6709
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6710
- help: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08\u4F8B: sys_user\u3001project_task\uFF09"
6711
- },
6712
- record_id: {
6713
- label: "\u30EC\u30B3\u30FC\u30C9 ID",
6714
- help: "\u5F71\u97FF\u3092\u53D7\u3051\u305F\u30EC\u30B3\u30FC\u30C9\u306E ID"
6715
- },
6716
- old_value: {
6717
- label: "\u5909\u66F4\u524D\u306E\u5024",
6718
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u4EE5\u524D\u306E\u72B6\u614B"
6719
- },
6720
- new_value: {
6721
- label: "\u5909\u66F4\u5F8C\u306E\u5024",
6722
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u65B0\u3057\u3044\u72B6\u614B"
6723
- },
6724
- ip_address: {
6725
- label: "IP \u30A2\u30C9\u30EC\u30B9"
6726
- },
6727
- user_agent: {
6728
- label: "\u30E6\u30FC\u30B6\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8"
6729
- },
6730
- tenant_id: {
6731
- label: "\u30C6\u30CA\u30F3\u30C8",
6732
- help: "\u30DE\u30EB\u30C1\u30C6\u30CA\u30F3\u30C8\u5206\u96E2\u306E\u305F\u3081\u306E\u30C6\u30CA\u30F3\u30C8\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6733
- },
6734
- metadata: {
6735
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6736
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u8FFD\u52A0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6737
- },
6738
- id: {
6739
- label: "\u76E3\u67FB\u30ED\u30B0 ID"
6740
- }
6741
- },
6742
- _views: {
6743
- recent: {
6744
- label: "\u6700\u8FD1"
6745
- },
6746
- writes_only: {
6747
- label: "\u66F8\u304D\u8FBC\u307F"
6748
- },
6749
- auth_events: {
6750
- label: "\u8A8D\u8A3C"
6751
- },
6752
- config_changes: {
6753
- label: "\u69CB\u6210\u5909\u66F4"
6754
- },
6755
- all_events: {
6756
- label: "\u3059\u3079\u3066"
6757
- }
6758
- }
6759
- },
6760
- sys_presence: {
6761
- label: "\u5728\u5E2D\u72B6\u6CC1",
6762
- pluralLabel: "\u5728\u5E2D\u72B6\u6CC1",
6763
- 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",
6764
- fields: {
6765
- id: {
6766
- label: "\u5728\u5E2D ID"
6767
- },
6768
- created_at: {
6769
- label: "\u4F5C\u6210\u65E5\u6642"
6770
- },
6771
- updated_at: {
6772
- label: "\u66F4\u65B0\u65E5\u6642"
6773
- },
6774
- user_id: {
6775
- label: "\u30E6\u30FC\u30B6\u30FC"
6776
- },
6777
- session_id: {
6778
- label: "\u30BB\u30C3\u30B7\u30E7\u30F3"
6779
- },
6780
- status: {
6781
- label: "\u30B9\u30C6\u30FC\u30BF\u30B9",
6782
- options: {
6783
- online: "\u30AA\u30F3\u30E9\u30A4\u30F3",
6784
- away: "\u96E2\u5E2D\u4E2D",
6785
- busy: "\u53D6\u308A\u8FBC\u307F\u4E2D",
6786
- offline: "\u30AA\u30D5\u30E9\u30A4\u30F3"
6787
- }
6788
- },
6789
- last_seen: {
6790
- label: "\u6700\u7D42\u78BA\u8A8D\u65E5\u6642"
6431
+ topic: {
6432
+ label: "Topic",
6433
+ help: "Notification topic, e.g. task.assigned, collab.mention"
6791
6434
  },
6792
- current_location: {
6793
- label: "\u73FE\u5728\u5730"
6435
+ payload: {
6436
+ label: "Payload",
6437
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
6794
6438
  },
6795
- device: {
6796
- label: "\u30C7\u30D0\u30A4\u30B9",
6439
+ severity: {
6440
+ label: "Severity",
6441
+ help: "Severity hint for rendering / filtering",
6797
6442
  options: {
6798
- desktop: "\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7",
6799
- mobile: "\u30E2\u30D0\u30A4\u30EB",
6800
- tablet: "\u30BF\u30D6\u30EC\u30C3\u30C8",
6801
- other: "\u305D\u306E\u4ED6"
6443
+ info: "info",
6444
+ warning: "warning",
6445
+ critical: "critical"
6802
6446
  }
6803
6447
  },
6804
- custom_status: {
6805
- label: "\u30AB\u30B9\u30BF\u30E0\u30B9\u30C6\u30FC\u30BF\u30B9"
6806
- },
6807
- metadata: {
6808
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6809
- 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"
6810
- }
6811
- }
6812
- },
6813
- sys_activity: {
6814
- label: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
6815
- pluralLabel: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",
6816
- 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",
6817
- fields: {
6818
- id: {
6819
- label: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 ID"
6820
- },
6821
- timestamp: {
6822
- 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"
6823
6451
  },
6824
- type: {
6825
- label: "\u30BF\u30A4\u30D7",
6826
- options: {
6827
- created: "\u4F5C\u6210",
6828
- updated: "\u66F4\u65B0",
6829
- deleted: "\u524A\u9664",
6830
- commented: "\u30B3\u30E1\u30F3\u30C8",
6831
- mentioned: "\u30E1\u30F3\u30B7\u30E7\u30F3",
6832
- shared: "\u5171\u6709",
6833
- assigned: "\u5272\u308A\u5F53\u3066",
6834
- completed: "\u5B8C\u4E86",
6835
- login: "\u30ED\u30B0\u30A4\u30F3",
6836
- logout: "\u30ED\u30B0\u30A2\u30A6\u30C8",
6837
- system: "\u30B7\u30B9\u30C6\u30E0"
6838
- }
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"
6839
6455
  },
6840
- summary: {
6841
- label: "\u30B5\u30DE\u30EA\u30FC",
6842
- 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"
6843
6459
  },
6844
6460
  actor_id: {
6845
- label: "\u64CD\u4F5C\u8005"
6846
- },
6847
- actor_name: {
6848
- label: "\u64CD\u4F5C\u8005\u540D"
6849
- },
6850
- actor_avatar_url: {
6851
- label: "\u64CD\u4F5C\u8005\u30A2\u30D0\u30BF\u30FC"
6852
- },
6853
- object_name: {
6854
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
6855
- help: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u77ED\u3044\u540D\u524D\uFF08\u4F8B: account\u3001sys_user\uFF09"
6856
- },
6857
- record_id: {
6858
- label: "\u30EC\u30B3\u30FC\u30C9 ID"
6859
- },
6860
- record_label: {
6861
- label: "\u30EC\u30B3\u30FC\u30C9\u8868\u793A\u540D",
6862
- help: "\u66F8\u304D\u8FBC\u307F\u6642\u70B9\u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u8868\u793A\u540D"
6863
- },
6864
- url: {
6865
- label: "URL",
6866
- 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"
6867
- },
6868
- environment_id: {
6869
- label: "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",
6870
- 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"
6871
- },
6872
- metadata: {
6873
- label: "\u30E1\u30BF\u30C7\u30FC\u30BF",
6874
- help: "JSON \u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u3055\u308C\u305F\u8FFD\u52A0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8"
6875
- }
6876
- }
6877
- },
6878
- sys_comment: {
6879
- label: "\u30B3\u30E1\u30F3\u30C8",
6880
- pluralLabel: "\u30B3\u30E1\u30F3\u30C8",
6881
- 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",
6882
- fields: {
6883
- id: {
6884
- label: "\u30B3\u30E1\u30F3\u30C8 ID"
6885
- },
6886
- thread_id: {
6887
- label: "\u30B9\u30EC\u30C3\u30C9",
6888
- help: "\u30B9\u30EC\u30C3\u30C9\u8B58\u5225\u5B50 \u2014 \u901A\u5E38\u306F `{object}:{record_id}`\uFF08\u4F8B: `sys_user:abc123`\uFF09"
6889
- },
6890
- parent_id: {
6891
- label: "\u89AA\u30B3\u30E1\u30F3\u30C8",
6892
- help: "\u30CD\u30B9\u30C8\u3057\u305F\u8FD4\u4FE1\u7528\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u89AA\u30B3\u30E1\u30F3\u30C8"
6893
- },
6894
- reply_count: {
6895
- label: "\u8FD4\u4FE1\u6570"
6896
- },
6897
- author_id: {
6898
- label: "\u6295\u7A3F\u8005"
6899
- },
6900
- author_name: {
6901
- label: "\u6295\u7A3F\u8005\u540D"
6902
- },
6903
- author_avatar_url: {
6904
- label: "\u6295\u7A3F\u8005\u30A2\u30D0\u30BF\u30FC"
6905
- },
6906
- body: {
6907
- label: "\u672C\u6587",
6908
- help: "\u30B3\u30E1\u30F3\u30C8\u30C6\u30AD\u30B9\u30C8\uFF08Markdown \u5BFE\u5FDC\uFF09"
6909
- },
6910
- mentions: {
6911
- label: "\u30E1\u30F3\u30B7\u30E7\u30F3",
6912
- help: "@\u30E1\u30F3\u30B7\u30E7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E JSON \u914D\u5217"
6913
- },
6914
- reactions: {
6915
- label: "\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3",
6916
- help: "\u7D75\u6587\u5B57\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E JSON \u914D\u5217"
6917
- },
6918
- is_edited: {
6919
- label: "\u7DE8\u96C6\u6E08\u307F"
6920
- },
6921
- edited_at: {
6922
- label: "\u7DE8\u96C6\u65E5\u6642"
6923
- },
6924
- visibility: {
6925
- label: "\u516C\u958B\u7BC4\u56F2",
6926
- options: {
6927
- public: "\u516C\u958B",
6928
- internal: "\u5185\u90E8",
6929
- private: "\u975E\u516C\u958B"
6930
- }
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"
6931
6463
  },
6932
6464
  created_at: {
6933
6465
  label: "\u4F5C\u6210\u65E5\u6642"
6466
+ }
6467
+ },
6468
+ _views: {
6469
+ recent: {
6470
+ label: "Recent"
6934
6471
  },
6935
- updated_at: {
6936
- label: "\u66F4\u65B0\u65E5\u6642"
6472
+ by_topic: {
6473
+ label: "By Topic"
6937
6474
  }
6938
6475
  }
6939
6476
  },
@@ -6998,60 +6535,6 @@ var jaJPObjects = {
6998
6535
  }
6999
6536
  }
7000
6537
  },
7001
- sys_notification: {
7002
- label: "\u901A\u77E5",
7003
- pluralLabel: "\u901A\u77E5",
7004
- description: "\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u901A\u77E5\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u30A8\u30F3\u30C8\u30EA",
7005
- fields: {
7006
- id: {
7007
- label: "\u901A\u77E5 ID"
7008
- },
7009
- topic: {
7010
- label: "Topic",
7011
- help: "Notification topic, e.g. task.assigned, collab.mention"
7012
- },
7013
- payload: {
7014
- label: "Payload",
7015
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
7016
- },
7017
- severity: {
7018
- label: "Severity",
7019
- help: "Severity hint for rendering / filtering",
7020
- options: {
7021
- info: "info",
7022
- warning: "warning",
7023
- critical: "critical"
7024
- }
7025
- },
7026
- dedup_key: {
7027
- label: "Dedup Key",
7028
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
7029
- },
7030
- source_object: {
7031
- label: "\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8",
7032
- help: "\u95A2\u9023\u30EC\u30B3\u30FC\u30C9\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\uFF08\u4F8B: lead\u3001opportunity\uFF09"
7033
- },
7034
- source_id: {
7035
- label: "\u30BD\u30FC\u30B9\u30EC\u30B3\u30FC\u30C9",
7036
- help: "source_object \u5185\u306E\u30EC\u30B3\u30FC\u30C9 ID"
7037
- },
7038
- actor_id: {
7039
- label: "\u64CD\u4F5C\u8005",
7040
- 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"
7041
- },
7042
- created_at: {
7043
- label: "\u4F5C\u6210\u65E5\u6642"
7044
- }
7045
- },
7046
- _views: {
7047
- recent: {
7048
- label: "Recent"
7049
- },
7050
- by_topic: {
7051
- label: "By Topic"
7052
- }
7053
- }
7054
- },
7055
6538
  sys_email: {
7056
6539
  label: "\u30E1\u30FC\u30EB",
7057
6540
  pluralLabel: "\u30E1\u30FC\u30EB",
@@ -7956,6 +7439,11 @@ var jaJPObjects = {
7956
7439
  label: "\u6697\u53F7\u6587",
7957
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"
7958
7441
  }
7442
+ },
7443
+ _views: {
7444
+ all: {
7445
+ label: "All Secrets"
7446
+ }
7959
7447
  }
7960
7448
  },
7961
7449
  sys_setting_audit: {
@@ -8031,6 +7519,11 @@ var jaJPObjects = {
8031
7519
  label: "\u30EA\u30AF\u30A8\u30B9\u30C8 ID",
8032
7520
  help: "sys_audit_log / \u30C8\u30EC\u30FC\u30B7\u30F3\u30B0\u3068\u306E\u76F8\u95A2\u7528\u3002"
8033
7521
  }
7522
+ },
7523
+ _views: {
7524
+ recent: {
7525
+ label: "Recent"
7526
+ }
8034
7527
  }
8035
7528
  }
8036
7529
  };
@@ -8200,14 +7693,64 @@ var esESObjects = {
8200
7693
  label: "El bloqueo caduca el",
8201
7694
  help: "Si se establece, el bloqueo se elimina autom\xE1ticamente en ese momento."
8202
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
+ },
8203
7736
  image: {
8204
7737
  label: "Imagen de perfil"
8205
7738
  },
8206
7739
  manager_id: {
8207
- 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)."
8208
7742
  },
8209
7743
  primary_business_unit_id: {
8210
- 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
+ }
8211
7754
  },
8212
7755
  id: {
8213
7756
  label: "ID de usuario"
@@ -8250,6 +7793,14 @@ var esESObjects = {
8250
7793
  label: "Desbloquear usuario",
8251
7794
  successMessage: "Usuario desbloqueado"
8252
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
+ },
8253
7804
  set_user_password: {
8254
7805
  label: "Establecer contrase\xF1a",
8255
7806
  successMessage: "Contrase\xF1a actualizada"
@@ -8311,6 +7862,18 @@ var esESObjects = {
8311
7862
  expires_at: {
8312
7863
  label: "Caduca el"
8313
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
+ },
8314
7877
  active_organization_id: {
8315
7878
  label: "Organizaci\xF3n activa"
8316
7879
  },
@@ -8409,6 +7972,10 @@ var esESObjects = {
8409
7972
  password: {
8410
7973
  label: "Hash de la contrase\xF1a",
8411
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."
8412
7979
  }
8413
7980
  },
8414
7981
  _views: {
@@ -8479,6 +8046,10 @@ var esESObjects = {
8479
8046
  label: "Metadatos",
8480
8047
  help: "Metadatos de la organizaci\xF3n serializados en JSON."
8481
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
+ },
8482
8053
  id: {
8483
8054
  label: "ID de organizaci\xF3n"
8484
8055
  },
@@ -8803,6 +8374,9 @@ var esESObjects = {
8803
8374
  }
8804
8375
  },
8805
8376
  _views: {
8377
+ org_chart: {
8378
+ label: "Org Chart"
8379
+ },
8806
8380
  active: {
8807
8381
  label: "Activo"
8808
8382
  },
@@ -9384,263 +8958,57 @@ var esESObjects = {
9384
8958
  }
9385
8959
  }
9386
8960
  },
9387
- sys_audit_log: {
9388
- label: "Registro de auditor\xEDa",
9389
- pluralLabel: "Registros de auditor\xEDa",
9390
- description: "Registro de auditor\xEDa inmutable para eventos de la plataforma",
9391
- fields: {
9392
- created_at: {
9393
- label: "Marca temporal"
9394
- },
9395
- action: {
9396
- label: "Acci\xF3n",
9397
- help: "Tipo de acci\xF3n (snake_case).",
9398
- options: {
9399
- create: "Crear",
9400
- update: "Actualizar",
9401
- delete: "Eliminar",
9402
- restore: "Restaurar",
9403
- login: "Inicio de sesi\xF3n",
9404
- logout: "Cierre de sesi\xF3n",
9405
- permission_change: "Cambio de permisos",
9406
- config_change: "Cambio de configuraci\xF3n",
9407
- export: "Exportar",
9408
- import: "Importar"
9409
- }
9410
- },
9411
- user_id: {
9412
- label: "Actor",
9413
- help: "Usuario que realiz\xF3 la acci\xF3n (null para acciones del sistema)."
9414
- },
9415
- object_name: {
9416
- label: "Objeto",
9417
- help: "Objeto de destino (p. ej. sys_user, project_task)."
9418
- },
9419
- record_id: {
9420
- label: "ID de registro",
9421
- help: "ID del registro afectado."
9422
- },
9423
- old_value: {
9424
- label: "Valor anterior",
9425
- help: "Estado anterior serializado en JSON."
9426
- },
9427
- new_value: {
9428
- label: "Valor nuevo",
9429
- help: "Estado nuevo serializado en JSON."
9430
- },
9431
- ip_address: {
9432
- label: "Direcci\xF3n IP"
9433
- },
9434
- user_agent: {
9435
- label: "Agente de usuario"
9436
- },
9437
- tenant_id: {
9438
- label: "Inquilino",
9439
- help: "Contexto del tenant para el aislamiento multi-tenant."
9440
- },
9441
- metadata: {
9442
- label: "Metadatos",
9443
- help: "Contexto adicional serializado en JSON."
9444
- },
9445
- id: {
9446
- label: "ID de registro de auditor\xEDa"
9447
- }
9448
- },
9449
- _views: {
9450
- recent: {
9451
- label: "Recientes"
9452
- },
9453
- writes_only: {
9454
- label: "Escrituras"
9455
- },
9456
- auth_events: {
9457
- label: "Autenticaci\xF3n"
9458
- },
9459
- config_changes: {
9460
- label: "Configuraci\xF3n"
9461
- },
9462
- all_events: {
9463
- label: "Todos"
9464
- }
9465
- }
9466
- },
9467
- sys_presence: {
9468
- label: "Presencia",
9469
- pluralLabel: "Presencias",
9470
- description: "Seguimiento en tiempo real de presencia y actividad de usuarios",
8961
+ sys_notification: {
8962
+ label: "Notificaci\xF3n",
8963
+ pluralLabel: "Notificaciones",
8964
+ description: "Entradas del buz\xF3n de notificaciones por usuario",
9471
8965
  fields: {
9472
8966
  id: {
9473
- label: "ID de presencia"
9474
- },
9475
- created_at: {
9476
- label: "Creado el"
9477
- },
9478
- updated_at: {
9479
- label: "Actualizado el"
9480
- },
9481
- user_id: {
9482
- label: "Usuario"
9483
- },
9484
- session_id: {
9485
- label: "Sesi\xF3n"
9486
- },
9487
- status: {
9488
- label: "Estado",
9489
- options: {
9490
- online: "En l\xEDnea",
9491
- away: "Ausente",
9492
- busy: "Ocupado",
9493
- offline: "Desconectado"
9494
- }
8967
+ label: "ID de notificaci\xF3n"
9495
8968
  },
9496
- last_seen: {
9497
- label: "Visto por \xFAltima vez"
8969
+ topic: {
8970
+ label: "Topic",
8971
+ help: "Notification topic, e.g. task.assigned, collab.mention"
9498
8972
  },
9499
- current_location: {
9500
- label: "Ubicaci\xF3n actual"
8973
+ payload: {
8974
+ label: "Payload",
8975
+ help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
9501
8976
  },
9502
- device: {
9503
- label: "Dispositivo",
8977
+ severity: {
8978
+ label: "Severity",
8979
+ help: "Severity hint for rendering / filtering",
9504
8980
  options: {
9505
- desktop: "Escritorio",
9506
- mobile: "M\xF3vil",
9507
- tablet: "Tableta",
9508
- other: "Otro"
8981
+ info: "info",
8982
+ warning: "warning",
8983
+ critical: "critical"
9509
8984
  }
9510
8985
  },
9511
- custom_status: {
9512
- label: "Estado personalizado"
9513
- },
9514
- metadata: {
9515
- label: "Metadatos",
9516
- help: "Metadatos JSON arbitrarios asociados al estado de presencia (coincide con PresenceStateSchema.metadata)."
9517
- }
9518
- }
9519
- },
9520
- sys_activity: {
9521
- label: "Actividad",
9522
- pluralLabel: "Actividades",
9523
- description: "Entradas recientes del flujo de actividad (ligeras y desnormalizadas).",
9524
- fields: {
9525
- id: {
9526
- label: "ID de actividad"
9527
- },
9528
- timestamp: {
9529
- label: "Marca temporal"
8986
+ dedup_key: {
8987
+ label: "Dedup Key",
8988
+ help: "Idempotency key within a topic window; a repeat emit is a no-op"
9530
8989
  },
9531
- type: {
9532
- label: "Tipo",
9533
- options: {
9534
- created: "Creado",
9535
- updated: "Actualizado",
9536
- deleted: "Eliminado",
9537
- commented: "Comentado",
9538
- mentioned: "Mencionado",
9539
- shared: "Compartido",
9540
- assigned: "Asignado",
9541
- completed: "Completado",
9542
- login: "Inicio de sesi\xF3n",
9543
- logout: "Cierre de sesi\xF3n",
9544
- system: "Sistema"
9545
- }
8990
+ source_object: {
8991
+ label: "Objeto de origen",
8992
+ help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
9546
8993
  },
9547
- summary: {
9548
- label: "Resumen",
9549
- help: "Resumen legible de una l\xEDnea."
8994
+ source_id: {
8995
+ label: "Registro de origen",
8996
+ help: "ID del registro dentro de source_object."
9550
8997
  },
9551
8998
  actor_id: {
9552
- label: "Actor"
9553
- },
9554
- actor_name: {
9555
- label: "Nombre del actor"
9556
- },
9557
- actor_avatar_url: {
9558
- label: "Avatar del actor"
9559
- },
9560
- object_name: {
9561
- label: "Objeto",
9562
- help: "Nombre corto del objeto de destino (p. ej. account, sys_user)."
9563
- },
9564
- record_id: {
9565
- label: "ID de registro"
9566
- },
9567
- record_label: {
9568
- label: "Nombre visible del registro",
9569
- help: "Nombre visible del registro de destino en el momento de escritura."
9570
- },
9571
- url: {
9572
- label: "URL",
9573
- help: "Enlace profundo opcional al destino de la actividad."
9574
- },
9575
- environment_id: {
9576
- label: "Proyecto",
9577
- help: "Contexto del proyecto (implementaciones multiproyecto)."
9578
- },
9579
- metadata: {
9580
- label: "Metadatos",
9581
- help: "Contexto adicional serializado en JSON."
9582
- }
9583
- }
9584
- },
9585
- sys_comment: {
9586
- label: "Comentario",
9587
- pluralLabel: "Comentarios",
9588
- description: "Comentarios en hilo adjuntos a registros mediante thread_id.",
9589
- fields: {
9590
- id: {
9591
- label: "ID de comentario"
9592
- },
9593
- thread_id: {
9594
- label: "Hilo",
9595
- help: "Identificador del hilo; por convenci\xF3n `{object}:{record_id}` (p. ej. `sys_user:abc123`)."
9596
- },
9597
- parent_id: {
9598
- label: "Comentario principal",
9599
- help: "Comentario principal opcional para respuestas anidadas."
9600
- },
9601
- reply_count: {
9602
- label: "N\xFAmero de respuestas"
9603
- },
9604
- author_id: {
9605
- label: "Autor"
9606
- },
9607
- author_name: {
9608
- label: "Nombre del autor"
9609
- },
9610
- author_avatar_url: {
9611
- label: "Avatar del autor"
9612
- },
9613
- body: {
9614
- label: "Contenido",
9615
- help: "Texto del comentario (compatible con Markdown)."
9616
- },
9617
- mentions: {
9618
- label: "Menciones",
9619
- help: "Matriz JSON de objetos @mention."
9620
- },
9621
- reactions: {
9622
- label: "Reacciones",
9623
- help: "Matriz JSON de objetos de reacci\xF3n emoji."
9624
- },
9625
- is_edited: {
9626
- label: "Editado"
9627
- },
9628
- edited_at: {
9629
- label: "Editado el"
9630
- },
9631
- visibility: {
9632
- label: "Visibilidad",
9633
- options: {
9634
- public: "P\xFAblico",
9635
- internal: "Interno",
9636
- private: "Privado"
9637
- }
8999
+ label: "Actor",
9000
+ help: "Usuario que provoc\xF3 la notificaci\xF3n (quien menciona, quien asigna)."
9638
9001
  },
9639
9002
  created_at: {
9640
9003
  label: "Creado el"
9004
+ }
9005
+ },
9006
+ _views: {
9007
+ recent: {
9008
+ label: "Recent"
9641
9009
  },
9642
- updated_at: {
9643
- label: "Actualizado el"
9010
+ by_topic: {
9011
+ label: "By Topic"
9644
9012
  }
9645
9013
  }
9646
9014
  },
@@ -9691,71 +9059,17 @@ var esESObjects = {
9691
9059
  shared_users: "Usuarios compartidos"
9692
9060
  }
9693
9061
  },
9694
- uploaded_by: {
9695
- label: "Subido por"
9696
- },
9697
- description: {
9698
- label: "Descripci\xF3n"
9699
- },
9700
- created_at: {
9701
- label: "Creado el"
9702
- },
9703
- updated_at: {
9704
- label: "Actualizado el"
9705
- }
9706
- }
9707
- },
9708
- sys_notification: {
9709
- label: "Notificaci\xF3n",
9710
- pluralLabel: "Notificaciones",
9711
- description: "Entradas del buz\xF3n de notificaciones por usuario",
9712
- fields: {
9713
- id: {
9714
- label: "ID de notificaci\xF3n"
9715
- },
9716
- topic: {
9717
- label: "Topic",
9718
- help: "Notification topic, e.g. task.assigned, collab.mention"
9719
- },
9720
- payload: {
9721
- label: "Payload",
9722
- help: "Template inputs carried to channels (title/body/url/actor/source/\u2026)"
9723
- },
9724
- severity: {
9725
- label: "Severity",
9726
- help: "Severity hint for rendering / filtering",
9727
- options: {
9728
- info: "info",
9729
- warning: "warning",
9730
- critical: "critical"
9731
- }
9732
- },
9733
- dedup_key: {
9734
- label: "Dedup Key",
9735
- help: "Idempotency key within a topic window; a repeat emit is a no-op"
9736
- },
9737
- source_object: {
9738
- label: "Objeto de origen",
9739
- help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
9740
- },
9741
- source_id: {
9742
- label: "Registro de origen",
9743
- help: "ID del registro dentro de source_object."
9062
+ uploaded_by: {
9063
+ label: "Subido por"
9744
9064
  },
9745
- actor_id: {
9746
- label: "Actor",
9747
- help: "Usuario que provoc\xF3 la notificaci\xF3n (quien menciona, quien asigna)."
9065
+ description: {
9066
+ label: "Descripci\xF3n"
9748
9067
  },
9749
9068
  created_at: {
9750
9069
  label: "Creado el"
9751
- }
9752
- },
9753
- _views: {
9754
- recent: {
9755
- label: "Recent"
9756
9070
  },
9757
- by_topic: {
9758
- label: "By Topic"
9071
+ updated_at: {
9072
+ label: "Actualizado el"
9759
9073
  }
9760
9074
  }
9761
9075
  },
@@ -10663,6 +9977,11 @@ var esESObjects = {
10663
9977
  label: "Texto cifrado",
10664
9978
  help: "Blob de texto cifrado codificado por el proveedor (base64 / JSON). La implementaci\xF3n lo define; solo el ICryptoProvider correspondiente puede leerlo."
10665
9979
  }
9980
+ },
9981
+ _views: {
9982
+ all: {
9983
+ label: "All Secrets"
9984
+ }
10666
9985
  }
10667
9986
  },
10668
9987
  sys_setting_audit: {
@@ -10738,6 +10057,11 @@ var esESObjects = {
10738
10057
  label: "ID de solicitud",
10739
10058
  help: "Se correlaciona con sys_audit_log / tracing."
10740
10059
  }
10060
+ },
10061
+ _views: {
10062
+ recent: {
10063
+ label: "Recent"
10064
+ }
10741
10065
  }
10742
10066
  }
10743
10067
  };
@@ -11145,6 +10469,70 @@ var enMetadataForms = {
11145
10469
  datasource: {
11146
10470
  label: "Datasource",
11147
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)"
11148
10536
  }
11149
10537
  }
11150
10538
  },
@@ -11253,10 +10641,6 @@ var enMetadataForms = {
11253
10641
  label: "Summary Operations",
11254
10642
  helpText: "Roll-up summary configuration (for parent-child relationships)"
11255
10643
  },
11256
- cached: {
11257
- label: "Cached",
11258
- helpText: "Caching configuration for computed fields"
11259
- },
11260
10644
  columnName: {
11261
10645
  label: "Column Name",
11262
10646
  helpText: "Physical column name in database (defaults to field name)"
@@ -11284,28 +10668,9 @@ var enMetadataForms = {
11284
10668
  sortable: {
11285
10669
  label: "Sortable",
11286
10670
  helpText: "Allow sorting lists by this field"
11287
- },
11288
- auditTrail: {
11289
- label: "Audit Trail",
11290
- helpText: "Track detailed changes with user and timestamp"
11291
- },
11292
- trackFeedHistory: {
11293
- label: "Track Feed History",
11294
- helpText: "Show changes in activity feed"
11295
- },
11296
- encryptionConfig: {
11297
- label: "Encryption Config",
11298
- helpText: "Field-level encryption (GDPR/HIPAA/PCI-DSS)"
11299
- },
11300
- maskingRule: {
11301
- label: "Masking Rule",
11302
- helpText: "Data masking rules for PII protection"
11303
10671
  }
11304
10672
  }
11305
10673
  },
11306
- trigger: {
11307
- label: "Trigger"
11308
- },
11309
10674
  validation: {
11310
10675
  label: "Validation Rule"
11311
10676
  },
@@ -11382,12 +10747,36 @@ var enMetadataForms = {
11382
10747
  onError: {
11383
10748
  label: "On Error"
11384
10749
  },
10750
+ timeout: {
10751
+ label: "Timeout",
10752
+ helpText: "Abort the hook after N milliseconds"
10753
+ },
11385
10754
  condition: {
11386
10755
  label: "Condition",
11387
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)"
11388
10769
  }
11389
10770
  }
11390
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
+ },
11391
10780
  view: {
11392
10781
  label: "View",
11393
10782
  sections: {
@@ -11559,6 +10948,10 @@ var enMetadataForms = {
11559
10948
  label: "Layout",
11560
10949
  description: "Page regions and components placed within them."
11561
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
+ },
11562
10955
  advanced: {
11563
10956
  label: "Advanced",
11564
10957
  description: "Activation, audience, and accessibility."
@@ -11601,6 +10994,58 @@ var enMetadataForms = {
11601
10994
  label: "Regions",
11602
10995
  helpText: "Layout regions (header, main, sidebar, footer) with components"
11603
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
+ },
11604
11049
  isDefault: {
11605
11050
  label: "Is Default",
11606
11051
  helpText: "Set as default page for this page type"
@@ -11849,6 +11294,22 @@ var enMetadataForms = {
11849
11294
  label: "Body",
11850
11295
  helpText: "JavaScript code to execute"
11851
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
+ },
11852
11313
  params: {
11853
11314
  label: "Params",
11854
11315
  helpText: "User input parameters (show form before executing)"
@@ -11889,9 +11350,9 @@ var enMetadataForms = {
11889
11350
  label: "Bulk Enabled",
11890
11351
  helpText: "Allow applying to multiple selected records"
11891
11352
  },
11892
- aiExposed: {
11893
- label: "Ai Exposed",
11894
- 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."
11895
11356
  },
11896
11357
  recordIdParam: {
11897
11358
  label: "Record Id Param",
@@ -11914,13 +11375,9 @@ var enMetadataForms = {
11914
11375
  label: "Basics",
11915
11376
  description: "Identity and data source."
11916
11377
  },
11917
- columns: {
11918
- label: "Columns",
11919
- description: "Columns shown in the report output."
11920
- },
11921
- groupings: {
11922
- label: "Groupings",
11923
- 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."
11924
11381
  },
11925
11382
  joined_blocks: {
11926
11383
  label: "Joined blocks",
@@ -11946,33 +11403,37 @@ var enMetadataForms = {
11946
11403
  description: {
11947
11404
  label: "Description"
11948
11405
  },
11949
- objectName: {
11950
- label: "Object Name",
11951
- helpText: "Data source object"
11952
- },
11953
11406
  type: {
11954
11407
  label: "Type",
11955
11408
  helpText: "Report type: tabular/summary/matrix/joined"
11956
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
+ },
11957
11422
  columns: {
11958
11423
  label: "Columns",
11959
11424
  helpText: "Columns to display in the report"
11960
11425
  },
11961
- groupingsDown: {
11962
- label: "Groupings Down",
11963
- helpText: "Row grouping levels"
11964
- },
11965
- groupingsAcross: {
11966
- label: "Groupings Across",
11967
- helpText: "Column grouping levels (matrix only)"
11426
+ drilldown: {
11427
+ label: "Drilldown",
11428
+ helpText: "Click an aggregated row/cell to open the underlying records"
11968
11429
  },
11969
11430
  blocks: {
11970
11431
  label: "Blocks",
11971
11432
  helpText: "Join multiple objects (joined report only)"
11972
11433
  },
11973
- filter: {
11974
- label: "Filter",
11975
- helpText: "Report-level filters"
11434
+ runtimeFilter: {
11435
+ label: "Runtime Filter",
11436
+ helpText: "Render-time scope filter, ANDed at query time"
11976
11437
  },
11977
11438
  chart: {
11978
11439
  label: "Chart",
@@ -11988,6 +11449,62 @@ var enMetadataForms = {
11988
11449
  }
11989
11450
  }
11990
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
+ },
11991
11508
  flow: {
11992
11509
  label: "Flow",
11993
11510
  sections: {
@@ -12067,15 +11584,6 @@ var enMetadataForms = {
12067
11584
  translation: {
12068
11585
  label: "Translation"
12069
11586
  },
12070
- router: {
12071
- label: "Router"
12072
- },
12073
- function: {
12074
- label: "Function"
12075
- },
12076
- service: {
12077
- label: "Service"
12078
- },
12079
11587
  email_template: {
12080
11588
  label: "Email Template",
12081
11589
  sections: {
@@ -12156,6 +11664,14 @@ var enMetadataForms = {
12156
11664
  }
12157
11665
  }
12158
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
+ },
12159
11675
  permission: {
12160
11676
  label: "Permission Set",
12161
11677
  sections: {
@@ -12716,6 +12232,70 @@ var zhCNMetadataForms = {
12716
12232
  datasource: {
12717
12233
  label: "\u6570\u636E\u6E90",
12718
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"
12719
12299
  }
12720
12300
  }
12721
12301
  },
@@ -12824,10 +12404,6 @@ var zhCNMetadataForms = {
12824
12404
  label: "\u6C47\u603B\u64CD\u4F5C",
12825
12405
  helpText: "\u7236\u5B50\u5173\u7CFB\u4E0B\u7684\u6C47\u603B\u805A\u5408\u914D\u7F6E"
12826
12406
  },
12827
- cached: {
12828
- label: "\u7F13\u5B58",
12829
- helpText: "\u8BA1\u7B97\u5B57\u6BB5\u7684\u7F13\u5B58\u914D\u7F6E"
12830
- },
12831
12407
  columnName: {
12832
12408
  label: "\u5217\u540D",
12833
12409
  helpText: "\u6570\u636E\u5E93\u4E2D\u7684\u7269\u7406\u5217\u540D\uFF08\u9ED8\u8BA4\u4E0E\u5B57\u6BB5\u540D\u76F8\u540C\uFF09"
@@ -12855,28 +12431,9 @@ var zhCNMetadataForms = {
12855
12431
  sortable: {
12856
12432
  label: "\u53EF\u6392\u5E8F",
12857
12433
  helpText: "\u5141\u8BB8\u6309\u6B64\u5B57\u6BB5\u6392\u5E8F"
12858
- },
12859
- auditTrail: {
12860
- label: "\u5BA1\u8BA1\u8DDF\u8E2A",
12861
- helpText: "\u8BB0\u5F55\u8BE6\u7EC6\u53D8\u66F4\u4E0E\u64CD\u4F5C\u4EBA\u3001\u65F6\u95F4\u6233"
12862
- },
12863
- trackFeedHistory: {
12864
- label: "\u52A8\u6001\u5386\u53F2\u8DDF\u8E2A",
12865
- helpText: "\u5728\u6D3B\u52A8\u52A8\u6001\u4E2D\u5C55\u793A\u53D8\u66F4"
12866
- },
12867
- encryptionConfig: {
12868
- label: "\u52A0\u5BC6\u914D\u7F6E",
12869
- helpText: "\u5B57\u6BB5\u7EA7\u52A0\u5BC6\uFF08GDPR / HIPAA / PCI-DSS\uFF09"
12870
- },
12871
- maskingRule: {
12872
- label: "\u63A9\u7801\u89C4\u5219",
12873
- helpText: "PII \u6570\u636E\u8131\u654F\u89C4\u5219"
12874
12434
  }
12875
12435
  }
12876
12436
  },
12877
- trigger: {
12878
- label: "\u89E6\u53D1\u5668"
12879
- },
12880
12437
  validation: {
12881
12438
  label: "\u9A8C\u8BC1\u89C4\u5219"
12882
12439
  },
@@ -12953,12 +12510,36 @@ var zhCNMetadataForms = {
12953
12510
  onError: {
12954
12511
  label: "\u9519\u8BEF\u5904\u7406"
12955
12512
  },
12513
+ timeout: {
12514
+ label: "Timeout",
12515
+ helpText: "Abort the hook after N milliseconds"
12516
+ },
12956
12517
  condition: {
12957
12518
  label: "\u6761\u4EF6",
12958
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)"
12959
12532
  }
12960
12533
  }
12961
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
+ },
12962
12543
  view: {
12963
12544
  label: "\u89C6\u56FE",
12964
12545
  sections: {
@@ -13130,6 +12711,10 @@ var zhCNMetadataForms = {
13130
12711
  label: "\u5E03\u5C40",
13131
12712
  description: "\u9875\u9762\u533A\u5757\u4E0E\u7EC4\u4EF6"
13132
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
+ },
13133
12718
  advanced: {
13134
12719
  label: "\u9AD8\u7EA7\u8BBE\u7F6E",
13135
12720
  description: "\u9ED8\u8BA4\u9875\u3001\u7C7B\u578B\u4E0E\u5206\u914D"
@@ -13172,6 +12757,58 @@ var zhCNMetadataForms = {
13172
12757
  label: "\u533A\u57DF",
13173
12758
  helpText: "\u5E03\u5C40\u533A\u57DF\uFF08header\u3001main\u3001sidebar\u3001footer\uFF09\u53CA\u5176\u7EC4\u4EF6"
13174
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
+ },
13175
12812
  isDefault: {
13176
12813
  label: "\u9ED8\u8BA4",
13177
12814
  helpText: "\u8BBE\u4E3A\u8BE5\u9875\u9762\u7C7B\u578B\u7684\u9ED8\u8BA4\u9875"
@@ -13420,6 +13057,22 @@ var zhCNMetadataForms = {
13420
13057
  label: "\u6B63\u6587",
13421
13058
  helpText: "\u8981\u6267\u884C\u7684 JavaScript \u4EE3\u7801"
13422
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
+ },
13423
13076
  params: {
13424
13077
  label: "\u53C2\u6570",
13425
13078
  helpText: "\u6267\u884C\u524D\u5411\u7528\u6237\u6536\u96C6\u7684\u8F93\u5165\u53C2\u6570"
@@ -13460,9 +13113,9 @@ var zhCNMetadataForms = {
13460
13113
  label: "\u6279\u91CF\u542F\u7528",
13461
13114
  helpText: "\u5141\u8BB8\u5BF9\u591A\u6761\u9009\u4E2D\u8BB0\u5F55\u6267\u884C"
13462
13115
  },
13463
- aiExposed: {
13464
- label: "\u66B4\u9732\u7ED9 AI",
13465
- 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."
13466
13119
  },
13467
13120
  recordIdParam: {
13468
13121
  label: "\u8BB0\u5F55 ID \u53C2\u6570",
@@ -13485,13 +13138,9 @@ var zhCNMetadataForms = {
13485
13138
  label: "\u57FA\u7840\u4FE1\u606F",
13486
13139
  description: "\u540D\u79F0\u4E0E\u6570\u636E\u6E90"
13487
13140
  },
13488
- columns: {
13489
- label: "\u5217",
13490
- description: "\u9009\u62E9\u8981\u5C55\u793A\u7684\u5217"
13491
- },
13492
- groupings: {
13493
- label: "\u5206\u7EC4\u4E0E\u6C47\u603B",
13494
- 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."
13495
13144
  },
13496
13145
  joined_blocks: {
13497
13146
  label: "\u5173\u8054\u5BF9\u8C61",
@@ -13517,45 +13166,105 @@ var zhCNMetadataForms = {
13517
13166
  description: {
13518
13167
  label: "\u63CF\u8FF0"
13519
13168
  },
13520
- objectName: {
13521
- label: "\u5BF9\u8C61\u540D\u79F0",
13522
- helpText: "\u62A5\u8868\u6570\u636E\u6E90\u5BF9\u8C61"
13523
- },
13524
13169
  type: {
13525
13170
  label: "\u7C7B\u578B",
13526
13171
  helpText: "\u62A5\u8868\u7C7B\u578B\uFF1Atabular / summary / matrix / joined"
13527
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
+ },
13528
13185
  columns: {
13529
13186
  label: "\u5217",
13530
13187
  helpText: "\u62A5\u8868\u4E2D\u663E\u793A\u7684\u5217"
13531
13188
  },
13532
- groupingsDown: {
13533
- label: "\u884C\u5206\u7EC4",
13534
- helpText: "\u884C\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7"
13189
+ drilldown: {
13190
+ label: "Drilldown",
13191
+ helpText: "Click an aggregated row/cell to open the underlying records"
13192
+ },
13193
+ blocks: {
13194
+ label: "\u5206\u5757",
13195
+ helpText: "joined \u62A5\u8868\u7684\u8054\u5408\u67E5\u8BE2\u5757"
13196
+ },
13197
+ runtimeFilter: {
13198
+ label: "Runtime Filter",
13199
+ helpText: "Render-time scope filter, ANDed at query time"
13200
+ },
13201
+ chart: {
13202
+ label: "\u56FE\u8868",
13203
+ helpText: "\u56FE\u8868\u7C7B\u578B\u4E0E\u914D\u7F6E"
13204
+ },
13205
+ aria: {
13206
+ label: "\u65E0\u969C\u788D",
13207
+ helpText: "\u65E0\u969C\u788D\u6807\u7B7E\u4E0E\u89D2\u8272"
13208
+ },
13209
+ performance: {
13210
+ label: "\u6027\u80FD",
13211
+ helpText: "\u6027\u80FD\u4E0E\u7F13\u5B58\u7B56\u7565"
13212
+ }
13213
+ }
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"
13535
13248
  },
13536
- groupingsAcross: {
13537
- label: "\u5217\u5206\u7EC4",
13538
- helpText: "\u5217\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7\uFF08matrix \u62A5\u8868\uFF09"
13249
+ object: {
13250
+ label: "Object",
13251
+ helpText: "Base object \u2014 the FROM"
13539
13252
  },
13540
- blocks: {
13541
- label: "\u5206\u5757",
13542
- helpText: "joined \u62A5\u8868\u7684\u8054\u5408\u67E5\u8BE2\u5757"
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)'
13543
13256
  },
13544
13257
  filter: {
13545
- label: "\u7B5B\u9009",
13546
- helpText: "\u62A5\u8868\u7EA7\u522B\u7684\u7B5B\u9009\u89C4\u5219"
13547
- },
13548
- chart: {
13549
- label: "\u56FE\u8868",
13550
- helpText: "\u56FE\u8868\u7C7B\u578B\u4E0E\u914D\u7F6E"
13258
+ label: "Filter",
13259
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
13551
13260
  },
13552
- aria: {
13553
- label: "\u65E0\u969C\u788D",
13554
- helpText: "\u65E0\u969C\u788D\u6807\u7B7E\u4E0E\u89D2\u8272"
13261
+ dimensions: {
13262
+ label: "Dimensions",
13263
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
13555
13264
  },
13556
- performance: {
13557
- label: "\u6027\u80FD",
13558
- helpText: "\u6027\u80FD\u4E0E\u7F13\u5B58\u7B56\u7565"
13265
+ measures: {
13266
+ label: "Measures",
13267
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
13559
13268
  }
13560
13269
  }
13561
13270
  },
@@ -13638,15 +13347,6 @@ var zhCNMetadataForms = {
13638
13347
  translation: {
13639
13348
  label: "\u7FFB\u8BD1"
13640
13349
  },
13641
- router: {
13642
- label: "\u8DEF\u7531\u5668"
13643
- },
13644
- function: {
13645
- label: "\u51FD\u6570"
13646
- },
13647
- service: {
13648
- label: "\u670D\u52A1"
13649
- },
13650
13350
  email_template: {
13651
13351
  label: "\u90AE\u4EF6\u6A21\u677F",
13652
13352
  sections: {
@@ -13727,6 +13427,14 @@ var zhCNMetadataForms = {
13727
13427
  }
13728
13428
  }
13729
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
+ },
13730
13438
  permission: {
13731
13439
  label: "\u6743\u9650\u96C6 / \u914D\u7F6E\u6587\u4EF6",
13732
13440
  sections: {
@@ -14287,6 +13995,70 @@ var jaJPMetadataForms = {
14287
13995
  datasource: {
14288
13996
  label: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9",
14289
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)"
14290
14062
  }
14291
14063
  }
14292
14064
  },
@@ -14395,10 +14167,6 @@ var jaJPMetadataForms = {
14395
14167
  label: "\u96C6\u8A08\u64CD\u4F5C",
14396
14168
  helpText: "\u30ED\u30FC\u30EB\u30A2\u30C3\u30D7\u96C6\u8A08\u8A2D\u5B9A\uFF08\u89AA\u5B50\u95A2\u4FC2\u7528\uFF09"
14397
14169
  },
14398
- cached: {
14399
- label: "\u30AD\u30E3\u30C3\u30B7\u30E5",
14400
- helpText: "\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u8A2D\u5B9A"
14401
- },
14402
14170
  columnName: {
14403
14171
  label: "\u5217\u540D",
14404
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"
@@ -14426,28 +14194,9 @@ var jaJPMetadataForms = {
14426
14194
  sortable: {
14427
14195
  label: "\u4E26\u3073\u66FF\u3048\u53EF\u80FD",
14428
14196
  helpText: "\u3053\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30EA\u30B9\u30C8\u306E\u4E26\u3079\u66FF\u3048\u3092\u8A31\u53EF"
14429
- },
14430
- auditTrail: {
14431
- label: "\u76E3\u67FB\u8A3C\u8DE1",
14432
- helpText: "\u30E6\u30FC\u30B6\u30FC\u3068\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u4ED8\u304D\u3067\u8A73\u7D30\u5909\u66F4\u3092\u8FFD\u8DE1"
14433
- },
14434
- trackFeedHistory: {
14435
- label: "\u30D5\u30A3\u30FC\u30C9\u5C65\u6B74\u8FFD\u8DE1",
14436
- helpText: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30D5\u30A3\u30FC\u30C9\u306B\u5909\u66F4\u3092\u8868\u793A"
14437
- },
14438
- encryptionConfig: {
14439
- label: "\u6697\u53F7\u5316\u8A2D\u5B9A",
14440
- helpText: "\u30D5\u30A3\u30FC\u30EB\u30C9\u30EC\u30D9\u30EB\u6697\u53F7\u5316\uFF08GDPR/HIPAA/PCI-DSS\uFF09"
14441
- },
14442
- maskingRule: {
14443
- label: "\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB",
14444
- helpText: "PII \u4FDD\u8B77\u7528\u30C7\u30FC\u30BF\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB"
14445
14197
  }
14446
14198
  }
14447
14199
  },
14448
- trigger: {
14449
- label: "\u30C8\u30EA\u30AC\u30FC"
14450
- },
14451
14200
  validation: {
14452
14201
  label: "\u691C\u8A3C\u30EB\u30FC\u30EB"
14453
14202
  },
@@ -14524,12 +14273,36 @@ var jaJPMetadataForms = {
14524
14273
  onError: {
14525
14274
  label: "\u30A8\u30E9\u30FC\u6642"
14526
14275
  },
14276
+ timeout: {
14277
+ label: "Timeout",
14278
+ helpText: "Abort the hook after N milliseconds"
14279
+ },
14527
14280
  condition: {
14528
14281
  label: "\u6761\u4EF6",
14529
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)"
14530
14295
  }
14531
14296
  }
14532
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
+ },
14533
14306
  view: {
14534
14307
  label: "\u30D3\u30E5\u30FC",
14535
14308
  sections: {
@@ -14701,6 +14474,10 @@ var jaJPMetadataForms = {
14701
14474
  label: "\u30EC\u30A4\u30A2\u30A6\u30C8",
14702
14475
  description: "\u30DA\u30FC\u30B8\u9818\u57DF\u3068\u305D\u3053\u306B\u914D\u7F6E\u3059\u308B\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3002"
14703
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
+ },
14704
14481
  advanced: {
14705
14482
  label: "\u8A73\u7D30",
14706
14483
  description: "\u6709\u52B9\u5316\u3001\u5BFE\u8C61\u30E6\u30FC\u30B6\u30FC\u3001\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u3002"
@@ -14743,6 +14520,58 @@ var jaJPMetadataForms = {
14743
14520
  label: "\u30EA\u30FC\u30B8\u30E7\u30F3",
14744
14521
  helpText: "\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u542B\u3080\u30EC\u30A4\u30A2\u30A6\u30C8\u9818\u57DF\uFF08header, main, sidebar, footer\uFF09"
14745
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
+ },
14746
14575
  isDefault: {
14747
14576
  label: "\u65E2\u5B9A",
14748
14577
  helpText: "\u3053\u306E\u30DA\u30FC\u30B8\u7A2E\u5225\u306E\u65E2\u5B9A\u30DA\u30FC\u30B8\u306B\u8A2D\u5B9A"
@@ -14991,6 +14820,22 @@ var jaJPMetadataForms = {
14991
14820
  label: "\u672C\u6587",
14992
14821
  helpText: "\u5B9F\u884C\u3059\u308B JavaScript \u30B3\u30FC\u30C9"
14993
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
+ },
14994
14839
  params: {
14995
14840
  label: "\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
14996
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"
@@ -15031,9 +14876,9 @@ var jaJPMetadataForms = {
15031
14876
  label: "\u4E00\u62EC\u64CD\u4F5C\u6709\u52B9",
15032
14877
  helpText: "\u9078\u629E\u3057\u305F\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u3078\u306E\u9069\u7528\u3092\u8A31\u53EF"
15033
14878
  },
15034
- aiExposed: {
15035
- label: "AI \u306B\u516C\u958B",
15036
- 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."
15037
14882
  },
15038
14883
  recordIdParam: {
15039
14884
  label: "\u30EC\u30B3\u30FC\u30C9 ID \u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
@@ -15056,13 +14901,9 @@ var jaJPMetadataForms = {
15056
14901
  label: "\u57FA\u672C",
15057
14902
  description: "ID \u3068\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3002"
15058
14903
  },
15059
- columns: {
15060
- label: "\u5217",
15061
- description: "\u30EC\u30DD\u30FC\u30C8\u51FA\u529B\u306B\u8868\u793A\u3059\u308B\u5217\u3002"
15062
- },
15063
- groupings: {
15064
- label: "\u30B0\u30EB\u30FC\u30D7\u5316",
15065
- 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."
15066
14907
  },
15067
14908
  joined_blocks: {
15068
14909
  label: "\u7D50\u5408\u30D6\u30ED\u30C3\u30AF",
@@ -15088,33 +14929,37 @@ var jaJPMetadataForms = {
15088
14929
  description: {
15089
14930
  label: "\u8AAC\u660E"
15090
14931
  },
15091
- objectName: {
15092
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D",
15093
- helpText: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"
15094
- },
15095
14932
  type: {
15096
14933
  label: "\u578B",
15097
14934
  helpText: "\u30EC\u30DD\u30FC\u30C8\u7A2E\u5225: tabular/summary/matrix/joined"
15098
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
+ },
15099
14948
  columns: {
15100
14949
  label: "\u5217",
15101
14950
  helpText: "\u30EC\u30DD\u30FC\u30C8\u306B\u8868\u793A\u3059\u308B\u5217"
15102
14951
  },
15103
- groupingsDown: {
15104
- label: "\u7E26\u30B0\u30EB\u30FC\u30D7",
15105
- helpText: "\u884C\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB"
15106
- },
15107
- groupingsAcross: {
15108
- label: "\u6A2A\u30B0\u30EB\u30FC\u30D7",
15109
- 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"
15110
14955
  },
15111
14956
  blocks: {
15112
14957
  label: "\u30D6\u30ED\u30C3\u30AF",
15113
14958
  helpText: "\u8907\u6570\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u7D50\u5408\uFF08joined \u30EC\u30DD\u30FC\u30C8\u306E\u307F\uFF09"
15114
14959
  },
15115
- filter: {
15116
- label: "\u30D5\u30A3\u30EB\u30BF\u30FC",
15117
- 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"
15118
14963
  },
15119
14964
  chart: {
15120
14965
  label: "\u30C1\u30E3\u30FC\u30C8",
@@ -15130,6 +14975,62 @@ var jaJPMetadataForms = {
15130
14975
  }
15131
14976
  }
15132
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
+ },
15133
15034
  flow: {
15134
15035
  label: "\u30D5\u30ED\u30FC",
15135
15036
  sections: {
@@ -15209,15 +15110,6 @@ var jaJPMetadataForms = {
15209
15110
  translation: {
15210
15111
  label: "\u7FFB\u8A33"
15211
15112
  },
15212
- router: {
15213
- label: "\u30EB\u30FC\u30BF\u30FC"
15214
- },
15215
- function: {
15216
- label: "\u95A2\u6570"
15217
- },
15218
- service: {
15219
- label: "\u30B5\u30FC\u30D3\u30B9"
15220
- },
15221
15113
  email_template: {
15222
15114
  label: "\u30E1\u30FC\u30EB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8",
15223
15115
  sections: {
@@ -15298,6 +15190,14 @@ var jaJPMetadataForms = {
15298
15190
  }
15299
15191
  }
15300
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
+ },
15301
15201
  permission: {
15302
15202
  label: "\u6A29\u9650\u30BB\u30C3\u30C8",
15303
15203
  sections: {
@@ -15858,6 +15758,70 @@ var esESMetadataForms = {
15858
15758
  datasource: {
15859
15759
  label: "Fuente de datos",
15860
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)"
15861
15825
  }
15862
15826
  }
15863
15827
  },
@@ -15966,10 +15930,6 @@ var esESMetadataForms = {
15966
15930
  label: "Operaciones de resumen",
15967
15931
  helpText: "Configuraci\xF3n de resumen roll-up (para relaciones padre-hijo)"
15968
15932
  },
15969
- cached: {
15970
- label: "En cach\xE9",
15971
- helpText: "Configuraci\xF3n de cach\xE9 para campos calculados"
15972
- },
15973
15933
  columnName: {
15974
15934
  label: "Nombre de columna",
15975
15935
  helpText: "Nombre de columna f\xEDsica en la base de datos (por defecto, el nombre del campo)"
@@ -15997,28 +15957,9 @@ var esESMetadataForms = {
15997
15957
  sortable: {
15998
15958
  label: "Ordenable",
15999
15959
  helpText: "Permite ordenar listas por este campo"
16000
- },
16001
- auditTrail: {
16002
- label: "Rastro de auditor\xEDa",
16003
- helpText: "Registra cambios detallados con usuario y marca temporal"
16004
- },
16005
- trackFeedHistory: {
16006
- label: "Historial de feed",
16007
- helpText: "Muestra cambios en el feed de actividad"
16008
- },
16009
- encryptionConfig: {
16010
- label: "Configuraci\xF3n de cifrado",
16011
- helpText: "Cifrado a nivel de campo (GDPR/HIPAA/PCI-DSS)"
16012
- },
16013
- maskingRule: {
16014
- label: "Regla de enmascaramiento",
16015
- helpText: "Reglas de enmascaramiento de datos para protecci\xF3n de PII"
16016
15960
  }
16017
15961
  }
16018
15962
  },
16019
- trigger: {
16020
- label: "Disparador"
16021
- },
16022
15963
  validation: {
16023
15964
  label: "Regla de validaci\xF3n"
16024
15965
  },
@@ -16095,12 +16036,36 @@ var esESMetadataForms = {
16095
16036
  onError: {
16096
16037
  label: "Al error"
16097
16038
  },
16039
+ timeout: {
16040
+ label: "Timeout",
16041
+ helpText: "Abort the hook after N milliseconds"
16042
+ },
16098
16043
  condition: {
16099
16044
  label: "Condici\xF3n",
16100
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)"
16101
16058
  }
16102
16059
  }
16103
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
+ },
16104
16069
  view: {
16105
16070
  label: "Vista",
16106
16071
  sections: {
@@ -16272,6 +16237,10 @@ var esESMetadataForms = {
16272
16237
  label: "Dise\xF1o",
16273
16238
  description: "Regiones de p\xE1gina y componentes colocados en ellas."
16274
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
+ },
16275
16244
  advanced: {
16276
16245
  label: "Avanzado",
16277
16246
  description: "Activaci\xF3n, audiencia y accesibilidad."
@@ -16314,6 +16283,58 @@ var esESMetadataForms = {
16314
16283
  label: "Regiones",
16315
16284
  helpText: "Regiones de dise\xF1o (header, main, sidebar, footer) con componentes"
16316
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
+ },
16317
16338
  isDefault: {
16318
16339
  label: "Predeterminado",
16319
16340
  helpText: "Establece como p\xE1gina predeterminada para este tipo de p\xE1gina"
@@ -16562,6 +16583,22 @@ var esESMetadataForms = {
16562
16583
  label: "Cuerpo",
16563
16584
  helpText: "C\xF3digo JavaScript que ejecutar"
16564
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
+ },
16565
16602
  params: {
16566
16603
  label: "Par\xE1metros",
16567
16604
  helpText: "Par\xE1metros de entrada de usuario (muestra el formulario antes de ejecutar)"
@@ -16602,9 +16639,9 @@ var esESMetadataForms = {
16602
16639
  label: "Acci\xF3n masiva",
16603
16640
  helpText: "Permite aplicar a varios registros seleccionados"
16604
16641
  },
16605
- aiExposed: {
16606
- label: "Expuesto a IA",
16607
- 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."
16608
16645
  },
16609
16646
  recordIdParam: {
16610
16647
  label: "Par\xE1metro de ID de registro",
@@ -16627,13 +16664,9 @@ var esESMetadataForms = {
16627
16664
  label: "Aspectos b\xE1sicos",
16628
16665
  description: "Identidad y fuente de datos."
16629
16666
  },
16630
- columns: {
16631
- label: "Columnas",
16632
- description: "Columnas mostradas en la salida del informe."
16633
- },
16634
- groupings: {
16635
- label: "Agrupaciones",
16636
- 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."
16637
16670
  },
16638
16671
  joined_blocks: {
16639
16672
  label: "Bloques unidos",
@@ -16659,33 +16692,37 @@ var esESMetadataForms = {
16659
16692
  description: {
16660
16693
  label: "Descripci\xF3n"
16661
16694
  },
16662
- objectName: {
16663
- label: "Nombre de objeto",
16664
- helpText: "Objeto de fuente de datos"
16665
- },
16666
16695
  type: {
16667
16696
  label: "Tipo",
16668
16697
  helpText: "Tipo de informe: tabular/summary/matrix/joined"
16669
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
+ },
16670
16711
  columns: {
16671
16712
  label: "Columnas",
16672
16713
  helpText: "Columnas que mostrar en el informe"
16673
16714
  },
16674
- groupingsDown: {
16675
- label: "Agrupaciones verticales",
16676
- helpText: "Niveles de agrupaci\xF3n de filas"
16677
- },
16678
- groupingsAcross: {
16679
- label: "Agrupaciones horizontales",
16680
- 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"
16681
16718
  },
16682
16719
  blocks: {
16683
16720
  label: "Bloques",
16684
16721
  helpText: "Une varios objetos (solo informe joined)"
16685
16722
  },
16686
- filter: {
16687
- label: "Filtro",
16688
- helpText: "Filtros a nivel de informe"
16723
+ runtimeFilter: {
16724
+ label: "Runtime Filter",
16725
+ helpText: "Render-time scope filter, ANDed at query time"
16689
16726
  },
16690
16727
  chart: {
16691
16728
  label: "Gr\xE1fico",
@@ -16701,6 +16738,62 @@ var esESMetadataForms = {
16701
16738
  }
16702
16739
  }
16703
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
+ },
16704
16797
  flow: {
16705
16798
  label: "Flujo",
16706
16799
  sections: {
@@ -16780,15 +16873,6 @@ var esESMetadataForms = {
16780
16873
  translation: {
16781
16874
  label: "Traducci\xF3n"
16782
16875
  },
16783
- router: {
16784
- label: "Enrutador"
16785
- },
16786
- function: {
16787
- label: "Funci\xF3n"
16788
- },
16789
- service: {
16790
- label: "Servicio"
16791
- },
16792
16876
  email_template: {
16793
16877
  label: "Plantilla de email",
16794
16878
  sections: {
@@ -16869,6 +16953,14 @@ var esESMetadataForms = {
16869
16953
  }
16870
16954
  }
16871
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
+ },
16872
16964
  permission: {
16873
16965
  label: "Conjunto de permisos",
16874
16966
  sections: {