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