@objectstack/platform-objects 14.3.0 → 14.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -263,6 +263,70 @@ var enMetadataForms = {
263
263
  datasource: {
264
264
  label: "Datasource",
265
265
  helpText: 'Target datasource ID (default: "default")'
266
+ },
267
+ lifecycle: {
268
+ label: "Lifecycle",
269
+ 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)."
270
+ },
271
+ "lifecycle.class": {
272
+ label: "Class",
273
+ helpText: "Persistence contract for the rows of this object"
274
+ },
275
+ "lifecycle.retention": {
276
+ label: "Retention",
277
+ helpText: "Age-based retention window"
278
+ },
279
+ "lifecycle.retention.maxAge": {
280
+ label: "Max Age",
281
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
282
+ },
283
+ "lifecycle.ttl": {
284
+ label: "Ttl",
285
+ helpText: "Per-row TTL expiry"
286
+ },
287
+ "lifecycle.ttl.field": {
288
+ label: "Field",
289
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
290
+ },
291
+ "lifecycle.ttl.expireAfter": {
292
+ label: "Expire After",
293
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
294
+ },
295
+ "lifecycle.storage": {
296
+ label: "Storage",
297
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
298
+ },
299
+ "lifecycle.storage.strategy": {
300
+ label: "Strategy",
301
+ helpText: "Storage strategy"
302
+ },
303
+ "lifecycle.storage.shards": {
304
+ label: "Shards",
305
+ helpText: "Shards retained; total window = shards \xD7 unit"
306
+ },
307
+ "lifecycle.storage.unit": {
308
+ label: "Unit",
309
+ helpText: "Time width of one shard"
310
+ },
311
+ "lifecycle.archive": {
312
+ label: "Archive",
313
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
314
+ },
315
+ "lifecycle.archive.after": {
316
+ label: "After",
317
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
318
+ },
319
+ "lifecycle.archive.to": {
320
+ label: "To",
321
+ helpText: "Target datasource name for cold storage"
322
+ },
323
+ "lifecycle.archive.keep": {
324
+ label: "Keep",
325
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
326
+ },
327
+ "lifecycle.reclaim": {
328
+ label: "Reclaim",
329
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
266
330
  }
267
331
  }
268
332
  },
@@ -371,10 +435,6 @@ var enMetadataForms = {
371
435
  label: "Summary Operations",
372
436
  helpText: "Roll-up summary configuration (for parent-child relationships)"
373
437
  },
374
- cached: {
375
- label: "Cached",
376
- helpText: "Caching configuration for computed fields"
377
- },
378
438
  columnName: {
379
439
  label: "Column Name",
380
440
  helpText: "Physical column name in database (defaults to field name)"
@@ -402,28 +462,9 @@ var enMetadataForms = {
402
462
  sortable: {
403
463
  label: "Sortable",
404
464
  helpText: "Allow sorting lists by this field"
405
- },
406
- auditTrail: {
407
- label: "Audit Trail",
408
- helpText: "Track detailed changes with user and timestamp"
409
- },
410
- trackFeedHistory: {
411
- label: "Track Feed History",
412
- helpText: "Show changes in activity feed"
413
- },
414
- encryptionConfig: {
415
- label: "Encryption Config",
416
- helpText: "Field-level encryption (GDPR/HIPAA/PCI-DSS)"
417
- },
418
- maskingRule: {
419
- label: "Masking Rule",
420
- helpText: "Data masking rules for PII protection"
421
465
  }
422
466
  }
423
467
  },
424
- trigger: {
425
- label: "Trigger"
426
- },
427
468
  validation: {
428
469
  label: "Validation Rule"
429
470
  },
@@ -500,12 +541,36 @@ var enMetadataForms = {
500
541
  onError: {
501
542
  label: "On Error"
502
543
  },
544
+ timeout: {
545
+ label: "Timeout",
546
+ helpText: "Abort the hook after N milliseconds"
547
+ },
503
548
  condition: {
504
549
  label: "Condition",
505
550
  helpText: "Optional formula \u2014 skip the hook when this evaluates to false"
551
+ },
552
+ retryPolicy: {
553
+ label: "Retry Policy",
554
+ helpText: "Retry on failure \u2014 most useful for async hooks"
555
+ },
556
+ "retryPolicy.maxRetries": {
557
+ label: "Max Retries",
558
+ helpText: "Maximum retry attempts"
559
+ },
560
+ "retryPolicy.backoffMs": {
561
+ label: "Backoff Ms",
562
+ helpText: "Delay between retries (ms)"
506
563
  }
507
564
  }
508
565
  },
566
+ seed: {
567
+ label: "Seed Data",
568
+ description: "Fixture / initialization data applied on publish"
569
+ },
570
+ mapping: {
571
+ label: "Import Mapping",
572
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
573
+ },
509
574
  view: {
510
575
  label: "View",
511
576
  sections: {
@@ -677,6 +742,10 @@ var enMetadataForms = {
677
742
  label: "Layout",
678
743
  description: "Page regions and components placed within them."
679
744
  },
745
+ interface: {
746
+ label: "Interface (list pages)",
747
+ 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."
748
+ },
680
749
  advanced: {
681
750
  label: "Advanced",
682
751
  description: "Activation, audience, and accessibility."
@@ -719,6 +788,58 @@ var enMetadataForms = {
719
788
  label: "Regions",
720
789
  helpText: "Layout regions (header, main, sidebar, footer) with components"
721
790
  },
791
+ interfaceConfig: {
792
+ label: "Interface Config",
793
+ 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."
794
+ },
795
+ "interfaceConfig.source": {
796
+ label: "Source",
797
+ helpText: "Object this page reads from"
798
+ },
799
+ "interfaceConfig.columns": {
800
+ label: "Columns",
801
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
802
+ },
803
+ "interfaceConfig.filterBy": {
804
+ label: "Filter By",
805
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
806
+ },
807
+ "interfaceConfig.levels": {
808
+ label: "Levels",
809
+ helpText: "Hierarchy levels to display (tree-like sources)"
810
+ },
811
+ "interfaceConfig.appearance": {
812
+ label: "Appearance",
813
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
814
+ },
815
+ "interfaceConfig.userFilters": {
816
+ label: "User Filters",
817
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
818
+ },
819
+ "interfaceConfig.userActions": {
820
+ label: "User Actions",
821
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
822
+ },
823
+ "interfaceConfig.addRecord": {
824
+ label: "Add Record",
825
+ helpText: "Add-record entry point"
826
+ },
827
+ "interfaceConfig.buttons": {
828
+ label: "Buttons",
829
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
830
+ },
831
+ "interfaceConfig.recordAction": {
832
+ label: "Record Action",
833
+ helpText: "How clicking a record opens its detail"
834
+ },
835
+ "interfaceConfig.showRecordCount": {
836
+ label: "Show Record Count",
837
+ helpText: "Show the record count bar"
838
+ },
839
+ "interfaceConfig.allowPrinting": {
840
+ label: "Allow Printing",
841
+ helpText: "Allow users to print this page"
842
+ },
722
843
  isDefault: {
723
844
  label: "Is Default",
724
845
  helpText: "Set as default page for this page type"
@@ -967,6 +1088,22 @@ var enMetadataForms = {
967
1088
  label: "Body",
968
1089
  helpText: "JavaScript code to execute"
969
1090
  },
1091
+ "body.language": {
1092
+ label: "Language",
1093
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
1094
+ },
1095
+ "body.source": {
1096
+ label: "Source",
1097
+ helpText: "Function body source \u2014 no top-level imports"
1098
+ },
1099
+ "body.capabilities": {
1100
+ label: "Capabilities",
1101
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
1102
+ },
1103
+ "body.timeoutMs": {
1104
+ label: "Timeout Ms",
1105
+ helpText: "Per-invocation timeout (ms)"
1106
+ },
970
1107
  params: {
971
1108
  label: "Params",
972
1109
  helpText: "User input parameters (show form before executing)"
@@ -1007,9 +1144,9 @@ var enMetadataForms = {
1007
1144
  label: "Bulk Enabled",
1008
1145
  helpText: "Allow applying to multiple selected records"
1009
1146
  },
1010
- aiExposed: {
1011
- label: "Ai Exposed",
1012
- helpText: "Allow AI agents to call this action"
1147
+ ai: {
1148
+ label: "Ai",
1149
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
1013
1150
  },
1014
1151
  recordIdParam: {
1015
1152
  label: "Record Id Param",
@@ -1032,13 +1169,9 @@ var enMetadataForms = {
1032
1169
  label: "Basics",
1033
1170
  description: "Identity and data source."
1034
1171
  },
1035
- columns: {
1036
- label: "Columns",
1037
- description: "Columns shown in the report output."
1038
- },
1039
- groupings: {
1040
- label: "Groupings",
1041
- description: "How rows (and columns, for matrix reports) are grouped."
1172
+ dataset_binding: {
1173
+ label: "Dataset binding",
1174
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
1042
1175
  },
1043
1176
  joined_blocks: {
1044
1177
  label: "Joined blocks",
@@ -1064,33 +1197,37 @@ var enMetadataForms = {
1064
1197
  description: {
1065
1198
  label: "Description"
1066
1199
  },
1067
- objectName: {
1068
- label: "Object Name",
1069
- helpText: "Data source object"
1070
- },
1071
1200
  type: {
1072
1201
  label: "Type",
1073
1202
  helpText: "Report type: tabular/summary/matrix/joined"
1074
1203
  },
1204
+ dataset: {
1205
+ label: "Dataset",
1206
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
1207
+ },
1208
+ values: {
1209
+ label: "Values",
1210
+ helpText: "Measure names (from the dataset) to display"
1211
+ },
1212
+ rows: {
1213
+ label: "Rows",
1214
+ helpText: "Dimension names (from the dataset) to group rows by"
1215
+ },
1075
1216
  columns: {
1076
1217
  label: "Columns",
1077
1218
  helpText: "Columns to display in the report"
1078
1219
  },
1079
- groupingsDown: {
1080
- label: "Groupings Down",
1081
- helpText: "Row grouping levels"
1082
- },
1083
- groupingsAcross: {
1084
- label: "Groupings Across",
1085
- helpText: "Column grouping levels (matrix only)"
1220
+ drilldown: {
1221
+ label: "Drilldown",
1222
+ helpText: "Click an aggregated row/cell to open the underlying records"
1086
1223
  },
1087
1224
  blocks: {
1088
1225
  label: "Blocks",
1089
1226
  helpText: "Join multiple objects (joined report only)"
1090
1227
  },
1091
- filter: {
1092
- label: "Filter",
1093
- helpText: "Report-level filters"
1228
+ runtimeFilter: {
1229
+ label: "Runtime Filter",
1230
+ helpText: "Render-time scope filter, ANDed at query time"
1094
1231
  },
1095
1232
  chart: {
1096
1233
  label: "Chart",
@@ -1106,6 +1243,62 @@ var enMetadataForms = {
1106
1243
  }
1107
1244
  }
1108
1245
  },
1246
+ dataset: {
1247
+ label: "Dataset",
1248
+ description: "Analytics semantic layer \u2014 dimensions & measures",
1249
+ sections: {
1250
+ basics: {
1251
+ label: "Basics",
1252
+ description: "Dataset identity."
1253
+ },
1254
+ source: {
1255
+ label: "Source",
1256
+ 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."
1257
+ },
1258
+ dimensions: {
1259
+ label: "Dimensions",
1260
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
1261
+ },
1262
+ measures: {
1263
+ label: "Measures",
1264
+ 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."
1265
+ }
1266
+ },
1267
+ fields: {
1268
+ name: {
1269
+ label: "Name",
1270
+ helpText: "snake_case unique identifier"
1271
+ },
1272
+ label: {
1273
+ label: "Label",
1274
+ helpText: "Display name"
1275
+ },
1276
+ description: {
1277
+ label: "Description",
1278
+ helpText: "What this dataset measures"
1279
+ },
1280
+ object: {
1281
+ label: "Object",
1282
+ helpText: "Base object \u2014 the FROM"
1283
+ },
1284
+ include: {
1285
+ label: "Include",
1286
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
1287
+ },
1288
+ filter: {
1289
+ label: "Filter",
1290
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
1291
+ },
1292
+ dimensions: {
1293
+ label: "Dimensions",
1294
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
1295
+ },
1296
+ measures: {
1297
+ label: "Measures",
1298
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
1299
+ }
1300
+ }
1301
+ },
1109
1302
  flow: {
1110
1303
  label: "Flow",
1111
1304
  sections: {
@@ -1185,15 +1378,6 @@ var enMetadataForms = {
1185
1378
  translation: {
1186
1379
  label: "Translation"
1187
1380
  },
1188
- router: {
1189
- label: "Router"
1190
- },
1191
- function: {
1192
- label: "Function"
1193
- },
1194
- service: {
1195
- label: "Service"
1196
- },
1197
1381
  email_template: {
1198
1382
  label: "Email Template",
1199
1383
  sections: {
@@ -1274,6 +1458,14 @@ var enMetadataForms = {
1274
1458
  }
1275
1459
  }
1276
1460
  },
1461
+ doc: {
1462
+ label: "Documentation",
1463
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
1464
+ },
1465
+ book: {
1466
+ label: "Documentation Book",
1467
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
1468
+ },
1277
1469
  permission: {
1278
1470
  label: "Permission Set",
1279
1471
  sections: {
@@ -1834,6 +2026,70 @@ var zhCNMetadataForms = {
1834
2026
  datasource: {
1835
2027
  label: "\u6570\u636E\u6E90",
1836
2028
  helpText: '\u76EE\u6807\u6570\u636E\u6E90 ID\uFF08\u9ED8\u8BA4\uFF1A"default"\uFF09'
2029
+ },
2030
+ lifecycle: {
2031
+ label: "\u6570\u636E\u751F\u547D\u5468\u671F",
2032
+ 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"
2033
+ },
2034
+ "lifecycle.class": {
2035
+ label: "\u751F\u547D\u5468\u671F\u7C7B\u522B",
2036
+ helpText: "\u672C\u5BF9\u8C61\u6570\u636E\u7684\u6301\u4E45\u5316\u5951\u7EA6"
2037
+ },
2038
+ "lifecycle.retention": {
2039
+ label: "\u4FDD\u7559\u671F",
2040
+ helpText: "\u6309\u6570\u636E\u5E74\u9F84\u754C\u5B9A\u7684\u4FDD\u7559\u7A97\u53E3"
2041
+ },
2042
+ "lifecycle.retention.maxAge": {
2043
+ label: "\u6700\u957F\u4FDD\u7559",
2044
+ 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"'
2045
+ },
2046
+ "lifecycle.ttl": {
2047
+ label: "TTL \u8FC7\u671F",
2048
+ helpText: "\u6309\u884C\u7684 TTL \u81EA\u52A8\u8FC7\u671F"
2049
+ },
2050
+ "lifecycle.ttl.field": {
2051
+ label: "\u65F6\u95F4\u5B57\u6BB5",
2052
+ helpText: "TTL \u8BA1\u65F6\u8D77\u70B9\u7684\u65F6\u95F4\u6233\u5B57\u6BB5\uFF08\u5982 expires_at\uFF09"
2053
+ },
2054
+ "lifecycle.ttl.expireAfter": {
2055
+ label: "\u8FC7\u671F\u65F6\u957F",
2056
+ helpText: '\u884C\u5728\u8BE5\u5B57\u6BB5\u4E4B\u540E\u8FD9\u4E48\u4E45\u8FC7\u671F\uFF0C\u5982 "1d"'
2057
+ },
2058
+ "lifecycle.storage": {
2059
+ label: "\u5B58\u50A8\u7B56\u7565",
2060
+ helpText: "\u9AD8\u9891\u9065\u6D4B\u7684\u7269\u7406\u8F6E\u8F6C\uFF08SQLite\uFF1AO(1) \u5206\u7247 DROP\uFF09"
2061
+ },
2062
+ "lifecycle.storage.strategy": {
2063
+ label: "\u7B56\u7565",
2064
+ helpText: "\u5B58\u50A8\u7B56\u7565"
2065
+ },
2066
+ "lifecycle.storage.shards": {
2067
+ label: "\u5206\u7247\u6570",
2068
+ helpText: "\u4FDD\u7559\u7684\u5206\u7247\u6570\u91CF\uFF1B\u603B\u7A97\u53E3 = \u5206\u7247\u6570 \xD7 \u5355\u4F4D"
2069
+ },
2070
+ "lifecycle.storage.unit": {
2071
+ label: "\u5206\u7247\u5355\u4F4D",
2072
+ helpText: "\u5355\u4E2A\u5206\u7247\u7684\u65F6\u95F4\u5BBD\u5EA6"
2073
+ },
2074
+ "lifecycle.archive": {
2075
+ label: "\u5F52\u6863",
2076
+ 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"
2077
+ },
2078
+ "lifecycle.archive.after": {
2079
+ label: "\u5F52\u6863\u65F6\u70B9",
2080
+ helpText: "\u65E9\u4E8E\u8BE5\u7A97\u53E3\u7684\u884C\u8FDB\u5165\u5F52\u6863 \u2014 \u5FC5\u987B\u7B49\u4E8E retention.maxAge"
2081
+ },
2082
+ "lifecycle.archive.to": {
2083
+ label: "\u5F52\u6863\u6570\u636E\u6E90",
2084
+ helpText: "\u51B7\u5B58\u50A8\u7684\u76EE\u6807\u6570\u636E\u6E90\u540D\u79F0"
2085
+ },
2086
+ "lifecycle.archive.keep": {
2087
+ label: "\u5F52\u6863\u4FDD\u7559",
2088
+ helpText: '\u5F52\u6863\u4E2D\u4FDD\u7559\u591A\u4E45\uFF08\u7559\u7A7A = \u6C38\u4E45\uFF09\uFF0C\u5982 "7y"'
2089
+ },
2090
+ "lifecycle.reclaim": {
2091
+ label: "\u7A7A\u95F4\u56DE\u6536",
2092
+ helpText: "\u6E05\u7406\u540E\u56DE\u6536\u9A71\u52A8\u5C42\u7A7A\u95F4\uFF08\u975E record \u7C7B\u9ED8\u8BA4\u5F00\u542F\uFF09"
1837
2093
  }
1838
2094
  }
1839
2095
  },
@@ -1942,10 +2198,6 @@ var zhCNMetadataForms = {
1942
2198
  label: "\u6C47\u603B\u64CD\u4F5C",
1943
2199
  helpText: "\u7236\u5B50\u5173\u7CFB\u4E0B\u7684\u6C47\u603B\u805A\u5408\u914D\u7F6E"
1944
2200
  },
1945
- cached: {
1946
- label: "\u7F13\u5B58",
1947
- helpText: "\u8BA1\u7B97\u5B57\u6BB5\u7684\u7F13\u5B58\u914D\u7F6E"
1948
- },
1949
2201
  columnName: {
1950
2202
  label: "\u5217\u540D",
1951
2203
  helpText: "\u6570\u636E\u5E93\u4E2D\u7684\u7269\u7406\u5217\u540D\uFF08\u9ED8\u8BA4\u4E0E\u5B57\u6BB5\u540D\u76F8\u540C\uFF09"
@@ -1973,28 +2225,9 @@ var zhCNMetadataForms = {
1973
2225
  sortable: {
1974
2226
  label: "\u53EF\u6392\u5E8F",
1975
2227
  helpText: "\u5141\u8BB8\u6309\u6B64\u5B57\u6BB5\u6392\u5E8F"
1976
- },
1977
- auditTrail: {
1978
- label: "\u5BA1\u8BA1\u8DDF\u8E2A",
1979
- helpText: "\u8BB0\u5F55\u8BE6\u7EC6\u53D8\u66F4\u4E0E\u64CD\u4F5C\u4EBA\u3001\u65F6\u95F4\u6233"
1980
- },
1981
- trackFeedHistory: {
1982
- label: "\u52A8\u6001\u5386\u53F2\u8DDF\u8E2A",
1983
- helpText: "\u5728\u6D3B\u52A8\u52A8\u6001\u4E2D\u5C55\u793A\u53D8\u66F4"
1984
- },
1985
- encryptionConfig: {
1986
- label: "\u52A0\u5BC6\u914D\u7F6E",
1987
- helpText: "\u5B57\u6BB5\u7EA7\u52A0\u5BC6\uFF08GDPR / HIPAA / PCI-DSS\uFF09"
1988
- },
1989
- maskingRule: {
1990
- label: "\u63A9\u7801\u89C4\u5219",
1991
- helpText: "PII \u6570\u636E\u8131\u654F\u89C4\u5219"
1992
2228
  }
1993
2229
  }
1994
2230
  },
1995
- trigger: {
1996
- label: "\u89E6\u53D1\u5668"
1997
- },
1998
2231
  validation: {
1999
2232
  label: "\u9A8C\u8BC1\u89C4\u5219"
2000
2233
  },
@@ -2071,12 +2304,36 @@ var zhCNMetadataForms = {
2071
2304
  onError: {
2072
2305
  label: "\u9519\u8BEF\u5904\u7406"
2073
2306
  },
2307
+ timeout: {
2308
+ label: "Timeout",
2309
+ helpText: "Abort the hook after N milliseconds"
2310
+ },
2074
2311
  condition: {
2075
2312
  label: "\u6761\u4EF6",
2076
2313
  helpText: "\u53EF\u9009\u516C\u5F0F\u2014\u2014\u6C42\u503C\u4E3A false \u65F6\u8DF3\u8FC7\u8BE5\u94A9\u5B50"
2314
+ },
2315
+ retryPolicy: {
2316
+ label: "Retry Policy",
2317
+ helpText: "Retry on failure \u2014 most useful for async hooks"
2318
+ },
2319
+ "retryPolicy.maxRetries": {
2320
+ label: "Max Retries",
2321
+ helpText: "Maximum retry attempts"
2322
+ },
2323
+ "retryPolicy.backoffMs": {
2324
+ label: "Backoff Ms",
2325
+ helpText: "Delay between retries (ms)"
2077
2326
  }
2078
2327
  }
2079
2328
  },
2329
+ seed: {
2330
+ label: "Seed Data",
2331
+ description: "Fixture / initialization data applied on publish"
2332
+ },
2333
+ mapping: {
2334
+ label: "Import Mapping",
2335
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
2336
+ },
2080
2337
  view: {
2081
2338
  label: "\u89C6\u56FE",
2082
2339
  sections: {
@@ -2248,6 +2505,10 @@ var zhCNMetadataForms = {
2248
2505
  label: "\u5E03\u5C40",
2249
2506
  description: "\u9875\u9762\u533A\u5757\u4E0E\u7EC4\u4EF6"
2250
2507
  },
2508
+ interface: {
2509
+ label: "Interface (list pages)",
2510
+ 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."
2511
+ },
2251
2512
  advanced: {
2252
2513
  label: "\u9AD8\u7EA7\u8BBE\u7F6E",
2253
2514
  description: "\u9ED8\u8BA4\u9875\u3001\u7C7B\u578B\u4E0E\u5206\u914D"
@@ -2290,6 +2551,58 @@ var zhCNMetadataForms = {
2290
2551
  label: "\u533A\u57DF",
2291
2552
  helpText: "\u5E03\u5C40\u533A\u57DF\uFF08header\u3001main\u3001sidebar\u3001footer\uFF09\u53CA\u5176\u7EC4\u4EF6"
2292
2553
  },
2554
+ interfaceConfig: {
2555
+ label: "Interface Config",
2556
+ 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."
2557
+ },
2558
+ "interfaceConfig.source": {
2559
+ label: "Source",
2560
+ helpText: "Object this page reads from"
2561
+ },
2562
+ "interfaceConfig.columns": {
2563
+ label: "Columns",
2564
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
2565
+ },
2566
+ "interfaceConfig.filterBy": {
2567
+ label: "Filter By",
2568
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
2569
+ },
2570
+ "interfaceConfig.levels": {
2571
+ label: "Levels",
2572
+ helpText: "Hierarchy levels to display (tree-like sources)"
2573
+ },
2574
+ "interfaceConfig.appearance": {
2575
+ label: "Appearance",
2576
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
2577
+ },
2578
+ "interfaceConfig.userFilters": {
2579
+ label: "User Filters",
2580
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
2581
+ },
2582
+ "interfaceConfig.userActions": {
2583
+ label: "User Actions",
2584
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
2585
+ },
2586
+ "interfaceConfig.addRecord": {
2587
+ label: "Add Record",
2588
+ helpText: "Add-record entry point"
2589
+ },
2590
+ "interfaceConfig.buttons": {
2591
+ label: "Buttons",
2592
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
2593
+ },
2594
+ "interfaceConfig.recordAction": {
2595
+ label: "Record Action",
2596
+ helpText: "How clicking a record opens its detail"
2597
+ },
2598
+ "interfaceConfig.showRecordCount": {
2599
+ label: "Show Record Count",
2600
+ helpText: "Show the record count bar"
2601
+ },
2602
+ "interfaceConfig.allowPrinting": {
2603
+ label: "Allow Printing",
2604
+ helpText: "Allow users to print this page"
2605
+ },
2293
2606
  isDefault: {
2294
2607
  label: "\u9ED8\u8BA4",
2295
2608
  helpText: "\u8BBE\u4E3A\u8BE5\u9875\u9762\u7C7B\u578B\u7684\u9ED8\u8BA4\u9875"
@@ -2538,6 +2851,22 @@ var zhCNMetadataForms = {
2538
2851
  label: "\u6B63\u6587",
2539
2852
  helpText: "\u8981\u6267\u884C\u7684 JavaScript \u4EE3\u7801"
2540
2853
  },
2854
+ "body.language": {
2855
+ label: "Language",
2856
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
2857
+ },
2858
+ "body.source": {
2859
+ label: "Source",
2860
+ helpText: "Function body source \u2014 no top-level imports"
2861
+ },
2862
+ "body.capabilities": {
2863
+ label: "Capabilities",
2864
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
2865
+ },
2866
+ "body.timeoutMs": {
2867
+ label: "Timeout Ms",
2868
+ helpText: "Per-invocation timeout (ms)"
2869
+ },
2541
2870
  params: {
2542
2871
  label: "\u53C2\u6570",
2543
2872
  helpText: "\u6267\u884C\u524D\u5411\u7528\u6237\u6536\u96C6\u7684\u8F93\u5165\u53C2\u6570"
@@ -2578,9 +2907,9 @@ var zhCNMetadataForms = {
2578
2907
  label: "\u6279\u91CF\u542F\u7528",
2579
2908
  helpText: "\u5141\u8BB8\u5BF9\u591A\u6761\u9009\u4E2D\u8BB0\u5F55\u6267\u884C"
2580
2909
  },
2581
- aiExposed: {
2582
- label: "\u66B4\u9732\u7ED9 AI",
2583
- helpText: "\u5141\u8BB8 AI \u667A\u80FD\u4F53\u8C03\u7528\u6B64\u64CD\u4F5C"
2910
+ ai: {
2911
+ label: "Ai",
2912
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
2584
2913
  },
2585
2914
  recordIdParam: {
2586
2915
  label: "\u8BB0\u5F55 ID \u53C2\u6570",
@@ -2603,13 +2932,9 @@ var zhCNMetadataForms = {
2603
2932
  label: "\u57FA\u7840\u4FE1\u606F",
2604
2933
  description: "\u540D\u79F0\u4E0E\u6570\u636E\u6E90"
2605
2934
  },
2606
- columns: {
2607
- label: "\u5217",
2608
- description: "\u9009\u62E9\u8981\u5C55\u793A\u7684\u5217"
2609
- },
2610
- groupings: {
2611
- label: "\u5206\u7EC4\u4E0E\u6C47\u603B",
2612
- description: "\u884C\u5217\u5206\u7EC4\u7EF4\u5EA6"
2935
+ dataset_binding: {
2936
+ label: "Dataset binding",
2937
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
2613
2938
  },
2614
2939
  joined_blocks: {
2615
2940
  label: "\u5173\u8054\u5BF9\u8C61",
@@ -2635,33 +2960,37 @@ var zhCNMetadataForms = {
2635
2960
  description: {
2636
2961
  label: "\u63CF\u8FF0"
2637
2962
  },
2638
- objectName: {
2639
- label: "\u5BF9\u8C61\u540D\u79F0",
2640
- helpText: "\u62A5\u8868\u6570\u636E\u6E90\u5BF9\u8C61"
2641
- },
2642
2963
  type: {
2643
2964
  label: "\u7C7B\u578B",
2644
2965
  helpText: "\u62A5\u8868\u7C7B\u578B\uFF1Atabular / summary / matrix / joined"
2645
2966
  },
2967
+ dataset: {
2968
+ label: "Dataset",
2969
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
2970
+ },
2971
+ values: {
2972
+ label: "Values",
2973
+ helpText: "Measure names (from the dataset) to display"
2974
+ },
2975
+ rows: {
2976
+ label: "Rows",
2977
+ helpText: "Dimension names (from the dataset) to group rows by"
2978
+ },
2646
2979
  columns: {
2647
2980
  label: "\u5217",
2648
2981
  helpText: "\u62A5\u8868\u4E2D\u663E\u793A\u7684\u5217"
2649
2982
  },
2650
- groupingsDown: {
2651
- label: "\u884C\u5206\u7EC4",
2652
- helpText: "\u884C\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7"
2653
- },
2654
- groupingsAcross: {
2655
- label: "\u5217\u5206\u7EC4",
2656
- helpText: "\u5217\u65B9\u5411\u5206\u7EC4\u5C42\u7EA7\uFF08matrix \u62A5\u8868\uFF09"
2983
+ drilldown: {
2984
+ label: "Drilldown",
2985
+ helpText: "Click an aggregated row/cell to open the underlying records"
2657
2986
  },
2658
2987
  blocks: {
2659
2988
  label: "\u5206\u5757",
2660
2989
  helpText: "joined \u62A5\u8868\u7684\u8054\u5408\u67E5\u8BE2\u5757"
2661
2990
  },
2662
- filter: {
2663
- label: "\u7B5B\u9009",
2664
- helpText: "\u62A5\u8868\u7EA7\u522B\u7684\u7B5B\u9009\u89C4\u5219"
2991
+ runtimeFilter: {
2992
+ label: "Runtime Filter",
2993
+ helpText: "Render-time scope filter, ANDed at query time"
2665
2994
  },
2666
2995
  chart: {
2667
2996
  label: "\u56FE\u8868",
@@ -2677,6 +3006,62 @@ var zhCNMetadataForms = {
2677
3006
  }
2678
3007
  }
2679
3008
  },
3009
+ dataset: {
3010
+ label: "Dataset",
3011
+ description: "Analytics semantic layer \u2014 dimensions & measures",
3012
+ sections: {
3013
+ basics: {
3014
+ label: "Basics",
3015
+ description: "Dataset identity."
3016
+ },
3017
+ source: {
3018
+ label: "Source",
3019
+ 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."
3020
+ },
3021
+ dimensions: {
3022
+ label: "Dimensions",
3023
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
3024
+ },
3025
+ measures: {
3026
+ label: "Measures",
3027
+ 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."
3028
+ }
3029
+ },
3030
+ fields: {
3031
+ name: {
3032
+ label: "Name",
3033
+ helpText: "snake_case unique identifier"
3034
+ },
3035
+ label: {
3036
+ label: "Label",
3037
+ helpText: "Display name"
3038
+ },
3039
+ description: {
3040
+ label: "Description",
3041
+ helpText: "What this dataset measures"
3042
+ },
3043
+ object: {
3044
+ label: "Object",
3045
+ helpText: "Base object \u2014 the FROM"
3046
+ },
3047
+ include: {
3048
+ label: "Include",
3049
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
3050
+ },
3051
+ filter: {
3052
+ label: "Filter",
3053
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
3054
+ },
3055
+ dimensions: {
3056
+ label: "Dimensions",
3057
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
3058
+ },
3059
+ measures: {
3060
+ label: "Measures",
3061
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
3062
+ }
3063
+ }
3064
+ },
2680
3065
  flow: {
2681
3066
  label: "\u6D41\u7A0B",
2682
3067
  sections: {
@@ -2756,15 +3141,6 @@ var zhCNMetadataForms = {
2756
3141
  translation: {
2757
3142
  label: "\u7FFB\u8BD1"
2758
3143
  },
2759
- router: {
2760
- label: "\u8DEF\u7531\u5668"
2761
- },
2762
- function: {
2763
- label: "\u51FD\u6570"
2764
- },
2765
- service: {
2766
- label: "\u670D\u52A1"
2767
- },
2768
3144
  email_template: {
2769
3145
  label: "\u90AE\u4EF6\u6A21\u677F",
2770
3146
  sections: {
@@ -2845,6 +3221,14 @@ var zhCNMetadataForms = {
2845
3221
  }
2846
3222
  }
2847
3223
  },
3224
+ doc: {
3225
+ label: "Documentation",
3226
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
3227
+ },
3228
+ book: {
3229
+ label: "Documentation Book",
3230
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
3231
+ },
2848
3232
  permission: {
2849
3233
  label: "\u6743\u9650\u96C6 / \u914D\u7F6E\u6587\u4EF6",
2850
3234
  sections: {
@@ -3405,6 +3789,70 @@ var jaJPMetadataForms = {
3405
3789
  datasource: {
3406
3790
  label: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9",
3407
3791
  helpText: '\u5BFE\u8C61\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 ID\uFF08\u65E2\u5B9A: "default"\uFF09'
3792
+ },
3793
+ lifecycle: {
3794
+ label: "Lifecycle",
3795
+ 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)."
3796
+ },
3797
+ "lifecycle.class": {
3798
+ label: "Class",
3799
+ helpText: "Persistence contract for the rows of this object"
3800
+ },
3801
+ "lifecycle.retention": {
3802
+ label: "Retention",
3803
+ helpText: "Age-based retention window"
3804
+ },
3805
+ "lifecycle.retention.maxAge": {
3806
+ label: "Max Age",
3807
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
3808
+ },
3809
+ "lifecycle.ttl": {
3810
+ label: "Ttl",
3811
+ helpText: "Per-row TTL expiry"
3812
+ },
3813
+ "lifecycle.ttl.field": {
3814
+ label: "Field",
3815
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
3816
+ },
3817
+ "lifecycle.ttl.expireAfter": {
3818
+ label: "Expire After",
3819
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
3820
+ },
3821
+ "lifecycle.storage": {
3822
+ label: "Storage",
3823
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
3824
+ },
3825
+ "lifecycle.storage.strategy": {
3826
+ label: "Strategy",
3827
+ helpText: "Storage strategy"
3828
+ },
3829
+ "lifecycle.storage.shards": {
3830
+ label: "Shards",
3831
+ helpText: "Shards retained; total window = shards \xD7 unit"
3832
+ },
3833
+ "lifecycle.storage.unit": {
3834
+ label: "Unit",
3835
+ helpText: "Time width of one shard"
3836
+ },
3837
+ "lifecycle.archive": {
3838
+ label: "Archive",
3839
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
3840
+ },
3841
+ "lifecycle.archive.after": {
3842
+ label: "After",
3843
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
3844
+ },
3845
+ "lifecycle.archive.to": {
3846
+ label: "To",
3847
+ helpText: "Target datasource name for cold storage"
3848
+ },
3849
+ "lifecycle.archive.keep": {
3850
+ label: "Keep",
3851
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
3852
+ },
3853
+ "lifecycle.reclaim": {
3854
+ label: "Reclaim",
3855
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
3408
3856
  }
3409
3857
  }
3410
3858
  },
@@ -3513,10 +3961,6 @@ var jaJPMetadataForms = {
3513
3961
  label: "\u96C6\u8A08\u64CD\u4F5C",
3514
3962
  helpText: "\u30ED\u30FC\u30EB\u30A2\u30C3\u30D7\u96C6\u8A08\u8A2D\u5B9A\uFF08\u89AA\u5B50\u95A2\u4FC2\u7528\uFF09"
3515
3963
  },
3516
- cached: {
3517
- label: "\u30AD\u30E3\u30C3\u30B7\u30E5",
3518
- helpText: "\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u8A2D\u5B9A"
3519
- },
3520
3964
  columnName: {
3521
3965
  label: "\u5217\u540D",
3522
3966
  helpText: "\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u4E0A\u306E\u7269\u7406\u5217\u540D\uFF08\u65E2\u5B9A\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\uFF09"
@@ -3544,28 +3988,9 @@ var jaJPMetadataForms = {
3544
3988
  sortable: {
3545
3989
  label: "\u4E26\u3073\u66FF\u3048\u53EF\u80FD",
3546
3990
  helpText: "\u3053\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30EA\u30B9\u30C8\u306E\u4E26\u3079\u66FF\u3048\u3092\u8A31\u53EF"
3547
- },
3548
- auditTrail: {
3549
- label: "\u76E3\u67FB\u8A3C\u8DE1",
3550
- helpText: "\u30E6\u30FC\u30B6\u30FC\u3068\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u4ED8\u304D\u3067\u8A73\u7D30\u5909\u66F4\u3092\u8FFD\u8DE1"
3551
- },
3552
- trackFeedHistory: {
3553
- label: "\u30D5\u30A3\u30FC\u30C9\u5C65\u6B74\u8FFD\u8DE1",
3554
- helpText: "\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30D5\u30A3\u30FC\u30C9\u306B\u5909\u66F4\u3092\u8868\u793A"
3555
- },
3556
- encryptionConfig: {
3557
- label: "\u6697\u53F7\u5316\u8A2D\u5B9A",
3558
- helpText: "\u30D5\u30A3\u30FC\u30EB\u30C9\u30EC\u30D9\u30EB\u6697\u53F7\u5316\uFF08GDPR/HIPAA/PCI-DSS\uFF09"
3559
- },
3560
- maskingRule: {
3561
- label: "\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB",
3562
- helpText: "PII \u4FDD\u8B77\u7528\u30C7\u30FC\u30BF\u30DE\u30B9\u30AD\u30F3\u30B0\u30EB\u30FC\u30EB"
3563
3991
  }
3564
3992
  }
3565
3993
  },
3566
- trigger: {
3567
- label: "\u30C8\u30EA\u30AC\u30FC"
3568
- },
3569
3994
  validation: {
3570
3995
  label: "\u691C\u8A3C\u30EB\u30FC\u30EB"
3571
3996
  },
@@ -3642,12 +4067,36 @@ var jaJPMetadataForms = {
3642
4067
  onError: {
3643
4068
  label: "\u30A8\u30E9\u30FC\u6642"
3644
4069
  },
4070
+ timeout: {
4071
+ label: "Timeout",
4072
+ helpText: "Abort the hook after N milliseconds"
4073
+ },
3645
4074
  condition: {
3646
4075
  label: "\u6761\u4EF6",
3647
4076
  helpText: "\u4EFB\u610F\u306E\u6570\u5F0F \u2014 false \u8A55\u4FA1\u6642\u306F\u30D5\u30C3\u30AF\u3092\u30B9\u30AD\u30C3\u30D7"
4077
+ },
4078
+ retryPolicy: {
4079
+ label: "Retry Policy",
4080
+ helpText: "Retry on failure \u2014 most useful for async hooks"
4081
+ },
4082
+ "retryPolicy.maxRetries": {
4083
+ label: "Max Retries",
4084
+ helpText: "Maximum retry attempts"
4085
+ },
4086
+ "retryPolicy.backoffMs": {
4087
+ label: "Backoff Ms",
4088
+ helpText: "Delay between retries (ms)"
3648
4089
  }
3649
4090
  }
3650
4091
  },
4092
+ seed: {
4093
+ label: "Seed Data",
4094
+ description: "Fixture / initialization data applied on publish"
4095
+ },
4096
+ mapping: {
4097
+ label: "Import Mapping",
4098
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
4099
+ },
3651
4100
  view: {
3652
4101
  label: "\u30D3\u30E5\u30FC",
3653
4102
  sections: {
@@ -3819,6 +4268,10 @@ var jaJPMetadataForms = {
3819
4268
  label: "\u30EC\u30A4\u30A2\u30A6\u30C8",
3820
4269
  description: "\u30DA\u30FC\u30B8\u9818\u57DF\u3068\u305D\u3053\u306B\u914D\u7F6E\u3059\u308B\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3002"
3821
4270
  },
4271
+ interface: {
4272
+ label: "Interface (list pages)",
4273
+ 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."
4274
+ },
3822
4275
  advanced: {
3823
4276
  label: "\u8A73\u7D30",
3824
4277
  description: "\u6709\u52B9\u5316\u3001\u5BFE\u8C61\u30E6\u30FC\u30B6\u30FC\u3001\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u3002"
@@ -3861,6 +4314,58 @@ var jaJPMetadataForms = {
3861
4314
  label: "\u30EA\u30FC\u30B8\u30E7\u30F3",
3862
4315
  helpText: "\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u542B\u3080\u30EC\u30A4\u30A2\u30A6\u30C8\u9818\u57DF\uFF08header, main, sidebar, footer\uFF09"
3863
4316
  },
4317
+ interfaceConfig: {
4318
+ label: "Interface Config",
4319
+ 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."
4320
+ },
4321
+ "interfaceConfig.source": {
4322
+ label: "Source",
4323
+ helpText: "Object this page reads from"
4324
+ },
4325
+ "interfaceConfig.columns": {
4326
+ label: "Columns",
4327
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
4328
+ },
4329
+ "interfaceConfig.filterBy": {
4330
+ label: "Filter By",
4331
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
4332
+ },
4333
+ "interfaceConfig.levels": {
4334
+ label: "Levels",
4335
+ helpText: "Hierarchy levels to display (tree-like sources)"
4336
+ },
4337
+ "interfaceConfig.appearance": {
4338
+ label: "Appearance",
4339
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
4340
+ },
4341
+ "interfaceConfig.userFilters": {
4342
+ label: "User Filters",
4343
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
4344
+ },
4345
+ "interfaceConfig.userActions": {
4346
+ label: "User Actions",
4347
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
4348
+ },
4349
+ "interfaceConfig.addRecord": {
4350
+ label: "Add Record",
4351
+ helpText: "Add-record entry point"
4352
+ },
4353
+ "interfaceConfig.buttons": {
4354
+ label: "Buttons",
4355
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
4356
+ },
4357
+ "interfaceConfig.recordAction": {
4358
+ label: "Record Action",
4359
+ helpText: "How clicking a record opens its detail"
4360
+ },
4361
+ "interfaceConfig.showRecordCount": {
4362
+ label: "Show Record Count",
4363
+ helpText: "Show the record count bar"
4364
+ },
4365
+ "interfaceConfig.allowPrinting": {
4366
+ label: "Allow Printing",
4367
+ helpText: "Allow users to print this page"
4368
+ },
3864
4369
  isDefault: {
3865
4370
  label: "\u65E2\u5B9A",
3866
4371
  helpText: "\u3053\u306E\u30DA\u30FC\u30B8\u7A2E\u5225\u306E\u65E2\u5B9A\u30DA\u30FC\u30B8\u306B\u8A2D\u5B9A"
@@ -4109,6 +4614,22 @@ var jaJPMetadataForms = {
4109
4614
  label: "\u672C\u6587",
4110
4615
  helpText: "\u5B9F\u884C\u3059\u308B JavaScript \u30B3\u30FC\u30C9"
4111
4616
  },
4617
+ "body.language": {
4618
+ label: "Language",
4619
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
4620
+ },
4621
+ "body.source": {
4622
+ label: "Source",
4623
+ helpText: "Function body source \u2014 no top-level imports"
4624
+ },
4625
+ "body.capabilities": {
4626
+ label: "Capabilities",
4627
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
4628
+ },
4629
+ "body.timeoutMs": {
4630
+ label: "Timeout Ms",
4631
+ helpText: "Per-invocation timeout (ms)"
4632
+ },
4112
4633
  params: {
4113
4634
  label: "\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
4114
4635
  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"
@@ -4149,9 +4670,9 @@ var jaJPMetadataForms = {
4149
4670
  label: "\u4E00\u62EC\u64CD\u4F5C\u6709\u52B9",
4150
4671
  helpText: "\u9078\u629E\u3057\u305F\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u3078\u306E\u9069\u7528\u3092\u8A31\u53EF"
4151
4672
  },
4152
- aiExposed: {
4153
- label: "AI \u306B\u516C\u958B",
4154
- 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"
4673
+ ai: {
4674
+ label: "Ai",
4675
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
4155
4676
  },
4156
4677
  recordIdParam: {
4157
4678
  label: "\u30EC\u30B3\u30FC\u30C9 ID \u30D1\u30E9\u30E1\u30FC\u30BF\u30FC",
@@ -4174,13 +4695,9 @@ var jaJPMetadataForms = {
4174
4695
  label: "\u57FA\u672C",
4175
4696
  description: "ID \u3068\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3002"
4176
4697
  },
4177
- columns: {
4178
- label: "\u5217",
4179
- description: "\u30EC\u30DD\u30FC\u30C8\u51FA\u529B\u306B\u8868\u793A\u3059\u308B\u5217\u3002"
4180
- },
4181
- groupings: {
4182
- label: "\u30B0\u30EB\u30FC\u30D7\u5316",
4183
- description: "\u884C\uFF08matrix \u30EC\u30DD\u30FC\u30C8\u3067\u306F\u5217\u3082\uFF09\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u65B9\u6CD5\u3002"
4698
+ dataset_binding: {
4699
+ label: "Dataset binding",
4700
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
4184
4701
  },
4185
4702
  joined_blocks: {
4186
4703
  label: "\u7D50\u5408\u30D6\u30ED\u30C3\u30AF",
@@ -4206,33 +4723,37 @@ var jaJPMetadataForms = {
4206
4723
  description: {
4207
4724
  label: "\u8AAC\u660E"
4208
4725
  },
4209
- objectName: {
4210
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D",
4211
- helpText: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"
4212
- },
4213
4726
  type: {
4214
4727
  label: "\u578B",
4215
4728
  helpText: "\u30EC\u30DD\u30FC\u30C8\u7A2E\u5225: tabular/summary/matrix/joined"
4216
4729
  },
4730
+ dataset: {
4731
+ label: "Dataset",
4732
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
4733
+ },
4734
+ values: {
4735
+ label: "Values",
4736
+ helpText: "Measure names (from the dataset) to display"
4737
+ },
4738
+ rows: {
4739
+ label: "Rows",
4740
+ helpText: "Dimension names (from the dataset) to group rows by"
4741
+ },
4217
4742
  columns: {
4218
4743
  label: "\u5217",
4219
4744
  helpText: "\u30EC\u30DD\u30FC\u30C8\u306B\u8868\u793A\u3059\u308B\u5217"
4220
4745
  },
4221
- groupingsDown: {
4222
- label: "\u7E26\u30B0\u30EB\u30FC\u30D7",
4223
- helpText: "\u884C\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB"
4224
- },
4225
- groupingsAcross: {
4226
- label: "\u6A2A\u30B0\u30EB\u30FC\u30D7",
4227
- helpText: "\u5217\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB\uFF08matrix \u306E\u307F\uFF09"
4746
+ drilldown: {
4747
+ label: "Drilldown",
4748
+ helpText: "Click an aggregated row/cell to open the underlying records"
4228
4749
  },
4229
4750
  blocks: {
4230
4751
  label: "\u30D6\u30ED\u30C3\u30AF",
4231
4752
  helpText: "\u8907\u6570\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u7D50\u5408\uFF08joined \u30EC\u30DD\u30FC\u30C8\u306E\u307F\uFF09"
4232
4753
  },
4233
- filter: {
4234
- label: "\u30D5\u30A3\u30EB\u30BF\u30FC",
4235
- helpText: "\u30EC\u30DD\u30FC\u30C8\u30EC\u30D9\u30EB\u306E\u30D5\u30A3\u30EB\u30BF\u30FC"
4754
+ runtimeFilter: {
4755
+ label: "Runtime Filter",
4756
+ helpText: "Render-time scope filter, ANDed at query time"
4236
4757
  },
4237
4758
  chart: {
4238
4759
  label: "\u30C1\u30E3\u30FC\u30C8",
@@ -4248,6 +4769,62 @@ var jaJPMetadataForms = {
4248
4769
  }
4249
4770
  }
4250
4771
  },
4772
+ dataset: {
4773
+ label: "Dataset",
4774
+ description: "Analytics semantic layer \u2014 dimensions & measures",
4775
+ sections: {
4776
+ basics: {
4777
+ label: "Basics",
4778
+ description: "Dataset identity."
4779
+ },
4780
+ source: {
4781
+ label: "Source",
4782
+ 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."
4783
+ },
4784
+ dimensions: {
4785
+ label: "Dimensions",
4786
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
4787
+ },
4788
+ measures: {
4789
+ label: "Measures",
4790
+ 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."
4791
+ }
4792
+ },
4793
+ fields: {
4794
+ name: {
4795
+ label: "Name",
4796
+ helpText: "snake_case unique identifier"
4797
+ },
4798
+ label: {
4799
+ label: "Label",
4800
+ helpText: "Display name"
4801
+ },
4802
+ description: {
4803
+ label: "Description",
4804
+ helpText: "What this dataset measures"
4805
+ },
4806
+ object: {
4807
+ label: "Object",
4808
+ helpText: "Base object \u2014 the FROM"
4809
+ },
4810
+ include: {
4811
+ label: "Include",
4812
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
4813
+ },
4814
+ filter: {
4815
+ label: "Filter",
4816
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
4817
+ },
4818
+ dimensions: {
4819
+ label: "Dimensions",
4820
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
4821
+ },
4822
+ measures: {
4823
+ label: "Measures",
4824
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
4825
+ }
4826
+ }
4827
+ },
4251
4828
  flow: {
4252
4829
  label: "\u30D5\u30ED\u30FC",
4253
4830
  sections: {
@@ -4327,15 +4904,6 @@ var jaJPMetadataForms = {
4327
4904
  translation: {
4328
4905
  label: "\u7FFB\u8A33"
4329
4906
  },
4330
- router: {
4331
- label: "\u30EB\u30FC\u30BF\u30FC"
4332
- },
4333
- function: {
4334
- label: "\u95A2\u6570"
4335
- },
4336
- service: {
4337
- label: "\u30B5\u30FC\u30D3\u30B9"
4338
- },
4339
4907
  email_template: {
4340
4908
  label: "\u30E1\u30FC\u30EB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8",
4341
4909
  sections: {
@@ -4416,6 +4984,14 @@ var jaJPMetadataForms = {
4416
4984
  }
4417
4985
  }
4418
4986
  },
4987
+ doc: {
4988
+ label: "Documentation",
4989
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
4990
+ },
4991
+ book: {
4992
+ label: "Documentation Book",
4993
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
4994
+ },
4419
4995
  permission: {
4420
4996
  label: "\u6A29\u9650\u30BB\u30C3\u30C8",
4421
4997
  sections: {
@@ -4976,6 +5552,70 @@ var esESMetadataForms = {
4976
5552
  datasource: {
4977
5553
  label: "Fuente de datos",
4978
5554
  helpText: 'ID de fuente de datos de destino (valor predeterminado: "default")'
5555
+ },
5556
+ lifecycle: {
5557
+ label: "Lifecycle",
5558
+ 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)."
5559
+ },
5560
+ "lifecycle.class": {
5561
+ label: "Class",
5562
+ helpText: "Persistence contract for the rows of this object"
5563
+ },
5564
+ "lifecycle.retention": {
5565
+ label: "Retention",
5566
+ helpText: "Age-based retention window"
5567
+ },
5568
+ "lifecycle.retention.maxAge": {
5569
+ label: "Max Age",
5570
+ helpText: 'Rows older than this (by created_at) are reaped. Duration literal: h/d/w/y, e.g. "30d"'
5571
+ },
5572
+ "lifecycle.ttl": {
5573
+ label: "Ttl",
5574
+ helpText: "Per-row TTL expiry"
5575
+ },
5576
+ "lifecycle.ttl.field": {
5577
+ label: "Field",
5578
+ helpText: "Timestamp field the TTL is measured from (e.g. expires_at)"
5579
+ },
5580
+ "lifecycle.ttl.expireAfter": {
5581
+ label: "Expire After",
5582
+ helpText: 'Rows expire this long after the field, e.g. "1d"'
5583
+ },
5584
+ "lifecycle.storage": {
5585
+ label: "Storage",
5586
+ helpText: "Physical rotation for high-frequency telemetry (SQLite: O(1) shard DROP)"
5587
+ },
5588
+ "lifecycle.storage.strategy": {
5589
+ label: "Strategy",
5590
+ helpText: "Storage strategy"
5591
+ },
5592
+ "lifecycle.storage.shards": {
5593
+ label: "Shards",
5594
+ helpText: "Shards retained; total window = shards \xD7 unit"
5595
+ },
5596
+ "lifecycle.storage.unit": {
5597
+ label: "Unit",
5598
+ helpText: "Time width of one shard"
5599
+ },
5600
+ "lifecycle.archive": {
5601
+ label: "Archive",
5602
+ helpText: "Cold-store hand-off (audit class). Rows are never hot-deleted before the archive copy succeeded."
5603
+ },
5604
+ "lifecycle.archive.after": {
5605
+ label: "After",
5606
+ helpText: "Archive rows older than this \u2014 must equal retention.maxAge"
5607
+ },
5608
+ "lifecycle.archive.to": {
5609
+ label: "To",
5610
+ helpText: "Target datasource name for cold storage"
5611
+ },
5612
+ "lifecycle.archive.keep": {
5613
+ label: "Keep",
5614
+ helpText: 'How long the archive keeps rows (empty = forever), e.g. "7y"'
5615
+ },
5616
+ "lifecycle.reclaim": {
5617
+ label: "Reclaim",
5618
+ helpText: "Reclaim driver space after sweeps (default on for non-record classes)"
4979
5619
  }
4980
5620
  }
4981
5621
  },
@@ -5084,10 +5724,6 @@ var esESMetadataForms = {
5084
5724
  label: "Operaciones de resumen",
5085
5725
  helpText: "Configuraci\xF3n de resumen roll-up (para relaciones padre-hijo)"
5086
5726
  },
5087
- cached: {
5088
- label: "En cach\xE9",
5089
- helpText: "Configuraci\xF3n de cach\xE9 para campos calculados"
5090
- },
5091
5727
  columnName: {
5092
5728
  label: "Nombre de columna",
5093
5729
  helpText: "Nombre de columna f\xEDsica en la base de datos (por defecto, el nombre del campo)"
@@ -5115,28 +5751,9 @@ var esESMetadataForms = {
5115
5751
  sortable: {
5116
5752
  label: "Ordenable",
5117
5753
  helpText: "Permite ordenar listas por este campo"
5118
- },
5119
- auditTrail: {
5120
- label: "Rastro de auditor\xEDa",
5121
- helpText: "Registra cambios detallados con usuario y marca temporal"
5122
- },
5123
- trackFeedHistory: {
5124
- label: "Historial de feed",
5125
- helpText: "Muestra cambios en el feed de actividad"
5126
- },
5127
- encryptionConfig: {
5128
- label: "Configuraci\xF3n de cifrado",
5129
- helpText: "Cifrado a nivel de campo (GDPR/HIPAA/PCI-DSS)"
5130
- },
5131
- maskingRule: {
5132
- label: "Regla de enmascaramiento",
5133
- helpText: "Reglas de enmascaramiento de datos para protecci\xF3n de PII"
5134
5754
  }
5135
5755
  }
5136
5756
  },
5137
- trigger: {
5138
- label: "Disparador"
5139
- },
5140
5757
  validation: {
5141
5758
  label: "Regla de validaci\xF3n"
5142
5759
  },
@@ -5213,12 +5830,36 @@ var esESMetadataForms = {
5213
5830
  onError: {
5214
5831
  label: "Al error"
5215
5832
  },
5833
+ timeout: {
5834
+ label: "Timeout",
5835
+ helpText: "Abort the hook after N milliseconds"
5836
+ },
5216
5837
  condition: {
5217
5838
  label: "Condici\xF3n",
5218
5839
  helpText: "F\xF3rmula opcional \u2014 omite el hook cuando eval\xFAa a false"
5840
+ },
5841
+ retryPolicy: {
5842
+ label: "Retry Policy",
5843
+ helpText: "Retry on failure \u2014 most useful for async hooks"
5844
+ },
5845
+ "retryPolicy.maxRetries": {
5846
+ label: "Max Retries",
5847
+ helpText: "Maximum retry attempts"
5848
+ },
5849
+ "retryPolicy.backoffMs": {
5850
+ label: "Backoff Ms",
5851
+ helpText: "Delay between retries (ms)"
5219
5852
  }
5220
5853
  }
5221
5854
  },
5855
+ seed: {
5856
+ label: "Seed Data",
5857
+ description: "Fixture / initialization data applied on publish"
5858
+ },
5859
+ mapping: {
5860
+ label: "Import Mapping",
5861
+ description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
5862
+ },
5222
5863
  view: {
5223
5864
  label: "Vista",
5224
5865
  sections: {
@@ -5390,6 +6031,10 @@ var esESMetadataForms = {
5390
6031
  label: "Dise\xF1o",
5391
6032
  description: "Regiones de p\xE1gina y componentes colocados en ellas."
5392
6033
  },
6034
+ interface: {
6035
+ label: "Interface (list pages)",
6036
+ 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."
6037
+ },
5393
6038
  advanced: {
5394
6039
  label: "Avanzado",
5395
6040
  description: "Activaci\xF3n, audiencia y accesibilidad."
@@ -5432,6 +6077,58 @@ var esESMetadataForms = {
5432
6077
  label: "Regiones",
5433
6078
  helpText: "Regiones de dise\xF1o (header, main, sidebar, footer) con componentes"
5434
6079
  },
6080
+ interfaceConfig: {
6081
+ label: "Interface Config",
6082
+ 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."
6083
+ },
6084
+ "interfaceConfig.source": {
6085
+ label: "Source",
6086
+ helpText: "Object this page reads from"
6087
+ },
6088
+ "interfaceConfig.columns": {
6089
+ label: "Columns",
6090
+ helpText: "Columns to show \u2014 defined directly on the page (blank = all object fields)"
6091
+ },
6092
+ "interfaceConfig.filterBy": {
6093
+ label: "Filter By",
6094
+ helpText: "Always-on base filter for the page \u2014 same visual builder as the list toolbar."
6095
+ },
6096
+ "interfaceConfig.levels": {
6097
+ label: "Levels",
6098
+ helpText: "Hierarchy levels to display (tree-like sources)"
6099
+ },
6100
+ "interfaceConfig.appearance": {
6101
+ label: "Appearance",
6102
+ helpText: "Allowed visualizations (Grid / Kanban / Calendar / \u2026) and description visibility"
6103
+ },
6104
+ "interfaceConfig.userFilters": {
6105
+ label: "User Filters",
6106
+ helpText: "End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config."
6107
+ },
6108
+ "interfaceConfig.userActions": {
6109
+ label: "User Actions",
6110
+ helpText: "Toolbar toggles (search, sort, filter, row height)"
6111
+ },
6112
+ "interfaceConfig.addRecord": {
6113
+ label: "Add Record",
6114
+ helpText: "Add-record entry point"
6115
+ },
6116
+ "interfaceConfig.buttons": {
6117
+ label: "Buttons",
6118
+ helpText: "Toolbar buttons \u2014 pick from this object's actions"
6119
+ },
6120
+ "interfaceConfig.recordAction": {
6121
+ label: "Record Action",
6122
+ helpText: "How clicking a record opens its detail"
6123
+ },
6124
+ "interfaceConfig.showRecordCount": {
6125
+ label: "Show Record Count",
6126
+ helpText: "Show the record count bar"
6127
+ },
6128
+ "interfaceConfig.allowPrinting": {
6129
+ label: "Allow Printing",
6130
+ helpText: "Allow users to print this page"
6131
+ },
5435
6132
  isDefault: {
5436
6133
  label: "Predeterminado",
5437
6134
  helpText: "Establece como p\xE1gina predeterminada para este tipo de p\xE1gina"
@@ -5680,6 +6377,22 @@ var esESMetadataForms = {
5680
6377
  label: "Cuerpo",
5681
6378
  helpText: "C\xF3digo JavaScript que ejecutar"
5682
6379
  },
6380
+ "body.language": {
6381
+ label: "Language",
6382
+ helpText: "expression = pure formula; js = sandboxed JavaScript"
6383
+ },
6384
+ "body.source": {
6385
+ label: "Source",
6386
+ helpText: "Function body source \u2014 no top-level imports"
6387
+ },
6388
+ "body.capabilities": {
6389
+ label: "Capabilities",
6390
+ helpText: "Allowed ctx APIs (api.read, api.write, crypto.uuid, log, \u2026)"
6391
+ },
6392
+ "body.timeoutMs": {
6393
+ label: "Timeout Ms",
6394
+ helpText: "Per-invocation timeout (ms)"
6395
+ },
5683
6396
  params: {
5684
6397
  label: "Par\xE1metros",
5685
6398
  helpText: "Par\xE1metros de entrada de usuario (muestra el formulario antes de ejecutar)"
@@ -5720,9 +6433,9 @@ var esESMetadataForms = {
5720
6433
  label: "Acci\xF3n masiva",
5721
6434
  helpText: "Permite aplicar a varios registros seleccionados"
5722
6435
  },
5723
- aiExposed: {
5724
- label: "Expuesto a IA",
5725
- helpText: "Permite que agentes de IA llamen a esta acci\xF3n"
6436
+ ai: {
6437
+ label: "Ai",
6438
+ helpText: "AI exposure (opt-in): set ai.exposed=true and write ai.description (\u226540 chars) to make this callable by agents."
5726
6439
  },
5727
6440
  recordIdParam: {
5728
6441
  label: "Par\xE1metro de ID de registro",
@@ -5745,13 +6458,9 @@ var esESMetadataForms = {
5745
6458
  label: "Aspectos b\xE1sicos",
5746
6459
  description: "Identidad y fuente de datos."
5747
6460
  },
5748
- columns: {
5749
- label: "Columnas",
5750
- description: "Columnas mostradas en la salida del informe."
5751
- },
5752
- groupings: {
5753
- label: "Agrupaciones",
5754
- description: "C\xF3mo se agrupan las filas (y columnas, para informes matrix)."
6461
+ dataset_binding: {
6462
+ label: "Dataset binding",
6463
+ description: "The semantic-layer dataset this report renders. Values are the dataset\u2019s measures; rows are its dimensions."
5755
6464
  },
5756
6465
  joined_blocks: {
5757
6466
  label: "Bloques unidos",
@@ -5777,33 +6486,37 @@ var esESMetadataForms = {
5777
6486
  description: {
5778
6487
  label: "Descripci\xF3n"
5779
6488
  },
5780
- objectName: {
5781
- label: "Nombre de objeto",
5782
- helpText: "Objeto de fuente de datos"
5783
- },
5784
6489
  type: {
5785
6490
  label: "Tipo",
5786
6491
  helpText: "Tipo de informe: tabular/summary/matrix/joined"
5787
6492
  },
6493
+ dataset: {
6494
+ label: "Dataset",
6495
+ helpText: "Dataset to bind (measures/dimensions come from its semantic layer)"
6496
+ },
6497
+ values: {
6498
+ label: "Values",
6499
+ helpText: "Measure names (from the dataset) to display"
6500
+ },
6501
+ rows: {
6502
+ label: "Rows",
6503
+ helpText: "Dimension names (from the dataset) to group rows by"
6504
+ },
5788
6505
  columns: {
5789
6506
  label: "Columnas",
5790
6507
  helpText: "Columnas que mostrar en el informe"
5791
6508
  },
5792
- groupingsDown: {
5793
- label: "Agrupaciones verticales",
5794
- helpText: "Niveles de agrupaci\xF3n de filas"
5795
- },
5796
- groupingsAcross: {
5797
- label: "Agrupaciones horizontales",
5798
- helpText: "Niveles de agrupaci\xF3n de columnas (solo matrix)"
6509
+ drilldown: {
6510
+ label: "Drilldown",
6511
+ helpText: "Click an aggregated row/cell to open the underlying records"
5799
6512
  },
5800
6513
  blocks: {
5801
6514
  label: "Bloques",
5802
6515
  helpText: "Une varios objetos (solo informe joined)"
5803
6516
  },
5804
- filter: {
5805
- label: "Filtro",
5806
- helpText: "Filtros a nivel de informe"
6517
+ runtimeFilter: {
6518
+ label: "Runtime Filter",
6519
+ helpText: "Render-time scope filter, ANDed at query time"
5807
6520
  },
5808
6521
  chart: {
5809
6522
  label: "Gr\xE1fico",
@@ -5819,6 +6532,62 @@ var esESMetadataForms = {
5819
6532
  }
5820
6533
  }
5821
6534
  },
6535
+ dataset: {
6536
+ label: "Dataset",
6537
+ description: "Analytics semantic layer \u2014 dimensions & measures",
6538
+ sections: {
6539
+ basics: {
6540
+ label: "Basics",
6541
+ description: "Dataset identity."
6542
+ },
6543
+ source: {
6544
+ label: "Source",
6545
+ 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."
6546
+ },
6547
+ dimensions: {
6548
+ label: "Dimensions",
6549
+ description: "Groupable axes. Use a base field, or `relationship.field` (e.g. account.region) for a relationship included above."
6550
+ },
6551
+ measures: {
6552
+ label: "Measures",
6553
+ 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."
6554
+ }
6555
+ },
6556
+ fields: {
6557
+ name: {
6558
+ label: "Name",
6559
+ helpText: "snake_case unique identifier"
6560
+ },
6561
+ label: {
6562
+ label: "Label",
6563
+ helpText: "Display name"
6564
+ },
6565
+ description: {
6566
+ label: "Description",
6567
+ helpText: "What this dataset measures"
6568
+ },
6569
+ object: {
6570
+ label: "Object",
6571
+ helpText: "Base object \u2014 the FROM"
6572
+ },
6573
+ include: {
6574
+ label: "Include",
6575
+ helpText: 'Relationship (lookup / master_detail) field names to join \u2014 enables `relationship.field` dimensions/measures (e.g. include "account" \u2192 group by account.region)'
6576
+ },
6577
+ filter: {
6578
+ label: "Filter",
6579
+ helpText: "Intrinsic scope filter (e.g. exclude soft-deleted records), ANDed into every query"
6580
+ },
6581
+ dimensions: {
6582
+ label: "Dimensions",
6583
+ helpText: "Each: name (referenced by presentations), field, type, and \u2014 for dates \u2014 a default bucketing granularity"
6584
+ },
6585
+ measures: {
6586
+ label: "Measures",
6587
+ helpText: "Each: name, aggregate, field (optional for count), display format/currency, and a \u201Ccertified\u201D governance flag"
6588
+ }
6589
+ }
6590
+ },
5822
6591
  flow: {
5823
6592
  label: "Flujo",
5824
6593
  sections: {
@@ -5898,15 +6667,6 @@ var esESMetadataForms = {
5898
6667
  translation: {
5899
6668
  label: "Traducci\xF3n"
5900
6669
  },
5901
- router: {
5902
- label: "Enrutador"
5903
- },
5904
- function: {
5905
- label: "Funci\xF3n"
5906
- },
5907
- service: {
5908
- label: "Servicio"
5909
- },
5910
6670
  email_template: {
5911
6671
  label: "Plantilla de email",
5912
6672
  sections: {
@@ -5987,6 +6747,14 @@ var esESMetadataForms = {
5987
6747
  }
5988
6748
  }
5989
6749
  },
6750
+ doc: {
6751
+ label: "Documentation",
6752
+ description: "Package documentation \u2014 flat Markdown items (ADR-0046)"
6753
+ },
6754
+ book: {
6755
+ label: "Documentation Book",
6756
+ description: "Documentation navigation spine \u2014 ordered groups with derived membership (ADR-0046 \xA76)"
6757
+ },
5990
6758
  permission: {
5991
6759
  label: "Conjunto de permisos",
5992
6760
  sections: {