react-semaphor 0.1.443 → 0.1.445

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/analytics-protocol/index.cjs +1 -1
  3. package/dist/analytics-protocol/index.js +123 -107
  4. package/dist/appearance/index.cjs +1 -1
  5. package/dist/brand-studio/index.cjs +2 -2
  6. package/dist/brand-studio/index.js +5 -4
  7. package/dist/briefings/index.cjs +1 -1
  8. package/dist/briefings/index.js +526 -457
  9. package/dist/chunks/analyze-result-contract-BHb7sUUW.cjs +1 -0
  10. package/dist/chunks/analyze-result-contract-DUv3QnMl.js +29 -0
  11. package/dist/chunks/{braces-CbO-aIwH.js → braces-BKimshER.cjs} +1 -1
  12. package/dist/chunks/{code-editor-BpADiIlq.js → code-editor-B4gTfvc5.js} +6800 -6560
  13. package/dist/chunks/code-editor-BYVorgOf.cjs +138 -0
  14. package/dist/chunks/common-types-CQ6SHfLk.cjs +1 -0
  15. package/dist/chunks/{common-types-ClkOI-3O.js → common-types-DFsDdpH7.js} +22 -21
  16. package/dist/chunks/dashboard-CAiwJW3L.cjs +1397 -0
  17. package/dist/chunks/{dashboard-briefing-launcher-C60n8LqW.js → dashboard-briefing-launcher-2SLNOaTg.js} +26 -24
  18. package/dist/chunks/{dashboard-briefing-launcher-BYMLjZxG.js → dashboard-briefing-launcher-CHwjpUYz.cjs} +2 -2
  19. package/dist/chunks/{dashboard-controls-ti9Rcel2.js → dashboard-controls-BfL14aqO.js} +11 -9
  20. package/dist/chunks/{dashboard-controls-BH_fZYDU.js → dashboard-controls-BgGTg4yw.cjs} +2 -2
  21. package/dist/chunks/dashboard-date-comparison-definition-DZq0htjG.cjs +1 -0
  22. package/dist/chunks/dashboard-json-BOv8tCa9.cjs +1 -0
  23. package/dist/chunks/{dashboard-json-Bturr634.js → dashboard-json-BZwq3EcS.js} +14 -12
  24. package/dist/chunks/{dashboard-Bd1Quco-.js → dashboard-u61yfU6u.js} +50081 -47351
  25. package/dist/chunks/edit-dashboard-visual-BdVCH0DJ.cjs +182 -0
  26. package/dist/chunks/{edit-dashboard-visual-DglMds57.js → edit-dashboard-visual-njLPYip3.js} +6825 -6656
  27. package/dist/chunks/{editor-action-buttons-CRi0fhVW.js → editor-action-buttons-BhLX5Q6m.js} +24 -23
  28. package/dist/chunks/{editor-action-buttons-Cxo7_tNG.js → editor-action-buttons-CBVMFipA.cjs} +1 -1
  29. package/dist/chunks/{index-D7KJindZ.js → format-types-CSv0V7mm.cjs} +1 -1
  30. package/dist/chunks/{index-CnujJ3fa.js → format-types-CZH5w1lo.js} +23 -17
  31. package/dist/chunks/{layout-grid-B08pP7v6.js → layout-grid-3-HWzEwU.cjs} +1 -1
  32. package/dist/chunks/{metric-comparison-CPoDx56y.js → metric-comparison-BJ_Qu1ZF.js} +1 -1
  33. package/dist/chunks/metric-comparison-CUAJ8n4y.cjs +1 -0
  34. package/dist/chunks/{palette-C0yjT5Tv.js → palette-DW_l7Jr0.cjs} +1 -1
  35. package/dist/chunks/pivot-result-identity-B6QCWOSi.js +94 -0
  36. package/dist/chunks/pivot-result-identity-CDLRT-YG.cjs +1 -0
  37. package/dist/chunks/pivot-result-lifecycle-BM3Pl-D1.js +914 -0
  38. package/dist/chunks/pivot-result-lifecycle-DPc0ANwk.cjs +4 -0
  39. package/dist/chunks/presentation-execution-BTV-Q43g.cjs +1 -0
  40. package/dist/chunks/presentation-execution-CGlb7YZ6.js +637 -0
  41. package/dist/chunks/{report-preferences-dialog-TtwdAuNn.js → report-preferences-dialog-D_NJu2wU.js} +7 -6
  42. package/dist/chunks/report-preferences-dialog-r8QzOSFb.cjs +1 -0
  43. package/dist/chunks/report-runtime-context-C8LZFsqV.cjs +1 -0
  44. package/dist/chunks/report-runtime-context-Qzn11HQe.js +387 -0
  45. package/dist/chunks/{save-Xdc4pnys.js → save-4_uMnE6s.cjs} +1 -1
  46. package/dist/chunks/{search-Dcud9ajy.js → search-6ZmeMq55.cjs} +1 -1
  47. package/dist/chunks/temporal-bucket-BnPxGrAi.js +446 -0
  48. package/dist/chunks/temporal-bucket-authoring-BUZMuVca.js +205 -0
  49. package/dist/chunks/temporal-bucket-authoring-CPTwHzvs.cjs +1 -0
  50. package/dist/chunks/temporal-bucket-contract-B2bJ1oe4.js +108 -0
  51. package/dist/chunks/temporal-bucket-contract-ChDBWX8I.cjs +1 -0
  52. package/dist/chunks/temporal-bucket-pMnV-4Nj.cjs +1 -0
  53. package/dist/chunks/{comparison-document-migration-Dj6xZMCb.js → temporal-result-owner-Cb27SSG9.js} +152 -123
  54. package/dist/chunks/temporal-result-owner-f6-i65Fb.cjs +1 -0
  55. package/dist/chunks/token-types-BdQ8kHBm.cjs +1 -0
  56. package/dist/chunks/token-types-DLo91nOf.js +8 -0
  57. package/dist/chunks/{update-policy-DnF_74zC.js → update-policy-BxvYMYz0.cjs} +1 -1
  58. package/dist/chunks/{update-policy-De2NswtM.js → update-policy-eg59mQqv.js} +1 -1
  59. package/dist/chunks/validators-9D4KBqKD.cjs +1 -0
  60. package/dist/chunks/validators-wZ2WlNHc.js +4640 -0
  61. package/dist/dashboard/index.cjs +1 -1
  62. package/dist/dashboard/index.js +2 -2
  63. package/dist/dashboard-authoring/index.cjs +3 -3
  64. package/dist/dashboard-authoring/index.js +136 -126
  65. package/dist/data-app-builder/index.cjs +1 -1
  66. package/dist/data-app-builder/index.js +2 -2
  67. package/dist/data-app-codegen/index.cjs +1 -1
  68. package/dist/data-app-codegen/index.js +2 -2
  69. package/dist/data-app-codegen-node/index.cjs +1 -1
  70. package/dist/data-app-codegen-node/index.js +3 -3
  71. package/dist/data-app-sdk/index.cjs +2 -2
  72. package/dist/data-app-sdk/index.js +34 -35
  73. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  74. package/dist/data-app-sdk-adapters/index.js +5 -5
  75. package/dist/data-app-sdk-validation/index.cjs +1 -1
  76. package/dist/data-app-sdk-validation/index.js +9 -10
  77. package/dist/format-utils/index.cjs +3 -3
  78. package/dist/format-utils/index.js +155 -176
  79. package/dist/index.cjs +1 -1
  80. package/dist/index.js +180 -174
  81. package/dist/report-runtime-context/index.cjs +1 -1
  82. package/dist/report-runtime-context/index.js +7 -392
  83. package/dist/shared/index.cjs +1 -1
  84. package/dist/style.css +1 -1
  85. package/dist/surfboard/index.cjs +1 -1
  86. package/dist/surfboard/index.js +3 -3
  87. package/dist/types/analytics-protocol.d.ts +257 -48
  88. package/dist/types/briefings.d.ts +138 -50
  89. package/dist/types/dashboard-assistant.d.ts +207 -52
  90. package/dist/types/dashboard-authoring.d.ts +182 -50
  91. package/dist/types/dashboard.d.ts +290 -48
  92. package/dist/types/data-app-builder.d.ts +48 -42
  93. package/dist/types/data-app-codegen-node.d.ts +50 -44
  94. package/dist/types/data-app-codegen.d.ts +50 -44
  95. package/dist/types/data-app-sdk-adapters.d.ts +48 -42
  96. package/dist/types/data-app-sdk-validation.d.ts +81 -43
  97. package/dist/types/data-app-sdk.d.ts +83 -45
  98. package/dist/types/format-utils.d.ts +645 -67
  99. package/dist/types/index.cjs +1 -1
  100. package/dist/types/index.js +19 -19
  101. package/dist/types/main.d.ts +298 -94
  102. package/dist/types/report-runtime-context.d.ts +3 -0
  103. package/dist/types/shared.d.ts +116 -41
  104. package/dist/types/surfboard.d.ts +290 -48
  105. package/dist/types/types.d.ts +455 -65
  106. package/package.json +3 -1
  107. package/dist/chunks/analyze-result-contract-BswhsmWT.js +0 -1
  108. package/dist/chunks/analyze-result-contract-CfOBEwaC.js +0 -1998
  109. package/dist/chunks/code-editor-M7HTUhdF.js +0 -138
  110. package/dist/chunks/common-types-C73-Ud1-.js +0 -1
  111. package/dist/chunks/comparison-document-migration-DbU_BTxR.js +0 -1
  112. package/dist/chunks/csv-utils-BZDvO2Fw.js +0 -376
  113. package/dist/chunks/csv-utils-Co0WxHke.js +0 -4
  114. package/dist/chunks/dashboard-cB3xmTNn.js +0 -1402
  115. package/dist/chunks/dashboard-date-comparison-definition-DGZr3m-b.js +0 -1
  116. package/dist/chunks/dashboard-json-Dw_55vSZ.js +0 -1
  117. package/dist/chunks/edit-dashboard-visual-BUc3NBQ4.js +0 -182
  118. package/dist/chunks/metric-comparison-DVy3fll_.js +0 -1
  119. package/dist/chunks/numeric-presentation-BJs5lSar.js +0 -517
  120. package/dist/chunks/numeric-presentation-Dlb-Dk4c.js +0 -1
  121. package/dist/chunks/report-preferences-dialog-CCvFqH4Q.js +0 -1
  122. package/dist/chunks/source-identity-5OPV4gvg.js +0 -92
  123. package/dist/chunks/source-identity-Cbo2LOHQ.js +0 -1
  124. package/dist/chunks/validators-B2vUAqTf.js +0 -1
  125. package/dist/chunks/validators-Bce_J7Vd.js +0 -2448
  126. /package/dist/chunks/{card-config-utils-15sRtebL.js → card-config-utils-15sRtebL.cjs} +0 -0
  127. /package/dist/chunks/{catalog-field-grounding-Bnx-3tE0.js → catalog-field-grounding-Bnx-3tE0.cjs} +0 -0
  128. /package/dist/chunks/{dashboard-input-contract-DV3cshjz.js → dashboard-input-contract-DV3cshjz.cjs} +0 -0
  129. /package/dist/chunks/{index-Dpm_VET4.js → index-Dpm_VET4.cjs} +0 -0
  130. /package/dist/chunks/{index-jSrCwPQz.js → index-jSrCwPQz.cjs} +0 -0
  131. /package/dist/chunks/{normalize-dashboard-for-dirty-check-BXRUMVb2.js → normalize-dashboard-for-dirty-check-BXRUMVb2.cjs} +0 -0
  132. /package/dist/chunks/{operators-DrTQsJXv.js → operators-DrTQsJXv.cjs} +0 -0
  133. /package/dist/chunks/{use-debounced-dirty-check-XHSwAefL.js → use-debounced-dirty-check-XHSwAefL.cjs} +0 -0
@@ -1,14 +1,17 @@
1
- var le = Object.defineProperty;
2
- var de = (t, n, e) => n in t ? le(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;
3
- var H = (t, n, e) => de(t, typeof n != "symbol" ? n + "" : n, e);
4
- import { a as me, j as W } from "../chunks/numeric-presentation-BJs5lSar.js";
5
- import { parseReportRuntimeContext as se } from "../report-runtime-context/index.js";
6
- import { i as fe } from "../chunks/card-config-utils-BYZ5MJOh.js";
7
- function pe(t) {
1
+ var se = Object.defineProperty;
2
+ var me = (t, n, e) => n in t ? se(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;
3
+ var H = (t, n, e) => me(t, typeof n != "symbol" ? n + "" : n, e);
4
+ import { b as fe, l as W, m as pe } from "../chunks/presentation-execution-CGlb7YZ6.js";
5
+ import "../value-format-preferences/index.js";
6
+ import "../chunks/validators-wZ2WlNHc.js";
7
+ import "../chunks/analyze-result-contract-DUv3QnMl.js";
8
+ import { b as ue } from "../chunks/report-runtime-context-Qzn11HQe.js";
9
+ import { i as he } from "../chunks/card-config-utils-BYZ5MJOh.js";
10
+ function ye(t) {
8
11
  return !!t && typeof t == "object" && !Array.isArray(t);
9
12
  }
10
13
  function E(t, n, e) {
11
- return pe(t) ? t : (e.push({ field: n, message: "Expected an object." }), {});
14
+ return ye(t) ? t : (e.push({ field: n, message: "Expected an object." }), {});
12
15
  }
13
16
  function C(t, n, e, r) {
14
17
  const o = new Set(e);
@@ -68,7 +71,7 @@ function G(t, n, e) {
68
71
  a.color,
69
72
  `${n}.tokens.color`,
70
73
  e
71
- ), d = [
74
+ ), l = [
72
75
  "background",
73
76
  "foreground",
74
77
  "muted",
@@ -81,17 +84,17 @@ function G(t, n, e) {
81
84
  "warning",
82
85
  "info"
83
86
  ];
84
- C(c, `${n}.tokens.color`, d, e);
85
- const m = {};
86
- d.forEach((p) => {
87
+ C(c, `${n}.tokens.color`, l, e);
88
+ const s = {};
89
+ l.forEach((f) => {
87
90
  const v = T(
88
- c[p],
89
- `${n}.tokens.color.${p}`,
91
+ c[f],
92
+ `${n}.tokens.color.${f}`,
90
93
  120,
91
94
  e
92
95
  );
93
- v !== void 0 && (m[p] = v);
94
- }), i.color = m;
96
+ v !== void 0 && (s[f] = v);
97
+ }), i.color = s;
95
98
  }
96
99
  if (a.typography !== void 0) {
97
100
  const c = E(
@@ -105,13 +108,13 @@ function G(t, n, e) {
105
108
  ["fontFamily", "monoFontFamily"],
106
109
  e
107
110
  );
108
- const d = T(
111
+ const l = T(
109
112
  c.fontFamily,
110
113
  `${n}.tokens.typography.fontFamily`,
111
114
  500,
112
115
  e,
113
116
  { allowEmpty: !0 }
114
- ), m = T(
117
+ ), s = T(
115
118
  c.monoFontFamily,
116
119
  `${n}.tokens.typography.monoFontFamily`,
117
120
  500,
@@ -119,8 +122,8 @@ function G(t, n, e) {
119
122
  { allowEmpty: !0 }
120
123
  );
121
124
  i.typography = {
122
- ...d !== void 0 ? { fontFamily: d } : {},
123
- ...m !== void 0 ? { monoFontFamily: m } : {}
125
+ ...l !== void 0 ? { fontFamily: l } : {},
126
+ ...s !== void 0 ? { monoFontFamily: s } : {}
124
127
  };
125
128
  }
126
129
  o.tokens = i;
@@ -143,13 +146,13 @@ function G(t, n, e) {
143
146
  field: `${n}.components.chart.palette`,
144
147
  message: "Expected 20 colors or fewer."
145
148
  }) : c = i.palette.map(
146
- (d, m) => T(
147
- d,
148
- `${n}.components.chart.palette.${m}`,
149
+ (l, s) => T(
150
+ l,
151
+ `${n}.components.chart.palette.${s}`,
149
152
  120,
150
153
  e
151
154
  )
152
- ).filter((d) => d !== void 0) : e.push({
155
+ ).filter((l) => l !== void 0) : e.push({
153
156
  field: `${n}.components.chart.palette`,
154
157
  message: "Expected an array."
155
158
  })), o.components = {
@@ -159,7 +162,7 @@ function G(t, n, e) {
159
162
  }
160
163
  return o;
161
164
  }
162
- function ue(t, n) {
165
+ function ge(t, n) {
163
166
  const e = "presentation.appearance", r = E(t, e, n);
164
167
  C(r, e, ["version", "schemes"], n);
165
168
  const o = {};
@@ -184,7 +187,7 @@ function ue(t, n) {
184
187
  }
185
188
  return o;
186
189
  }
187
- function he(t, n) {
190
+ function ve(t, n) {
188
191
  const e = "presentation.brandOverrides", r = E(t, e, n);
189
192
  C(r, e, ["brandName", "logoUrl", "link"], n);
190
193
  const o = T(
@@ -199,7 +202,7 @@ function he(t, n) {
199
202
  ...i !== void 0 ? { link: i } : {}
200
203
  };
201
204
  }
202
- function ye(t, n) {
205
+ function be(t, n) {
203
206
  const e = "presentation.fragments", r = E(t, e, n), o = [
204
207
  "preHeaderText",
205
208
  "headerBannerHtml",
@@ -221,9 +224,9 @@ function ye(t, n) {
221
224
  c !== void 0 && (a[i] = c);
222
225
  }), a;
223
226
  }
224
- function ge(t) {
227
+ function $e(t) {
225
228
  const n = [], e = {};
226
- if (t.appearance !== void 0 && (e.appearance = ue(t.appearance, n)), t.brandOverrides !== void 0 && (e.brandOverrides = he(t.brandOverrides, n)), t.fragments !== void 0 && (e.fragments = ye(t.fragments, n)), t.viewUrl !== void 0) {
229
+ if (t.appearance !== void 0 && (e.appearance = ge(t.appearance, n)), t.brandOverrides !== void 0 && (e.brandOverrides = ve(t.brandOverrides, n)), t.fragments !== void 0 && (e.fragments = be(t.fragments, n)), t.viewUrl !== void 0) {
227
230
  const r = L(t.viewUrl, "presentation.viewUrl", n);
228
231
  r !== void 0 && (e.viewUrl = r);
229
232
  }
@@ -237,15 +240,15 @@ const Z = [
237
240
  "THU",
238
241
  "FRI",
239
242
  "SAT"
240
- ], ve = new Map(
243
+ ], Ie = new Map(
241
244
  Z.map((t, n) => [t, n])
242
- ), bt = {
245
+ ), xt = {
243
246
  cadence: "weekly",
244
247
  hour: 9,
245
248
  minute: 0,
246
249
  weekdays: [1]
247
250
  };
248
- function $t(t) {
251
+ function Tt(t) {
249
252
  if (typeof t != "string" || t.length === 0 || t !== t.trim() || /^(?:(?:UTC|GMT)[+-]|[+-]\d{2}:\d{2}$)/.test(t))
250
253
  return !1;
251
254
  try {
@@ -254,7 +257,7 @@ function $t(t) {
254
257
  return !1;
255
258
  }
256
259
  }
257
- function be(t) {
260
+ function Ee(t) {
258
261
  return Number.isInteger(t.minute) && t.minute >= 0 && t.minute <= 59 && Number.isInteger(t.hour) && t.hour >= 0 && t.hour <= 23;
259
262
  }
260
263
  function Y(t) {
@@ -264,8 +267,8 @@ function Y(t) {
264
267
  (e, r) => !Number.isInteger(e) || e < 0 || e > 6 || r > 0 && e === n[r - 1]
265
268
  ) ? null : n;
266
269
  }
267
- function It(t) {
268
- if (!be(t))
270
+ function At(t) {
271
+ if (!Ee(t))
269
272
  throw new Error("Choose a valid schedule time.");
270
273
  const n = `${t.minute} ${t.hour}`;
271
274
  switch (t.cadence) {
@@ -282,7 +285,7 @@ function It(t) {
282
285
  return `${n} 1 * *`;
283
286
  }
284
287
  }
285
- function $e(t) {
288
+ function Ce(t) {
286
289
  if (typeof t != "string" || t.length === 0)
287
290
  return { ok: !1, issue: "Choose a supported schedule." };
288
291
  if (t !== t.trim() || t.includes(" "))
@@ -293,40 +296,40 @@ function $e(t) {
293
296
  const [e, r, o, a, i] = n;
294
297
  if (!/^(0|[1-9]\d?)$/.test(e) || !/^(0|[1-9]\d?)$/.test(r))
295
298
  return { ok: !1, issue: "Choose a supported schedule." };
296
- const c = Number(e), d = Number(r);
297
- if (c > 59 || d > 23 || a !== "*")
299
+ const c = Number(e), l = Number(r);
300
+ if (c > 59 || l > 23 || a !== "*")
298
301
  return { ok: !1, issue: "Choose a supported schedule." };
299
302
  if (o === "*" && i === "*")
300
303
  return {
301
304
  ok: !0,
302
- value: { cadence: "daily", hour: d, minute: c, weekdays: [] }
305
+ value: { cadence: "daily", hour: l, minute: c, weekdays: [] }
303
306
  };
304
307
  if (o === "*" && i !== "*") {
305
- const p = i.split(",").map((y) => ve.get(y));
306
- if (p.some((y) => y === void 0))
308
+ const f = i.split(",").map((y) => Ie.get(y));
309
+ if (f.some((y) => y === void 0))
307
310
  return { ok: !1, issue: "Choose a supported schedule." };
308
- const v = p, b = Y(v);
309
- return !b || b.some((y, S) => y !== v[S]) ? { ok: !1, issue: "Choose a supported schedule." } : {
311
+ const v = f, b = Y(v);
312
+ return !b || b.some((y, k) => y !== v[k]) ? { ok: !1, issue: "Choose a supported schedule." } : {
310
313
  ok: !0,
311
- value: { cadence: "weekly", hour: d, minute: c, weekdays: b }
314
+ value: { cadence: "weekly", hour: l, minute: c, weekdays: b }
312
315
  };
313
316
  }
314
317
  return o === "1,15" && i === "*" ? {
315
318
  ok: !0,
316
- value: { cadence: "twice_monthly", hour: d, minute: c, weekdays: [] }
319
+ value: { cadence: "twice_monthly", hour: l, minute: c, weekdays: [] }
317
320
  } : o === "1" && i === "*" ? {
318
321
  ok: !0,
319
- value: { cadence: "monthly", hour: d, minute: c, weekdays: [] }
322
+ value: { cadence: "monthly", hour: l, minute: c, weekdays: [] }
320
323
  } : { ok: !1, issue: "Choose a supported schedule." };
321
324
  }
322
- function Ie(t, n, e) {
325
+ function ke(t, n, e) {
323
326
  return new Intl.DateTimeFormat(e, {
324
327
  hour: "numeric",
325
328
  minute: "2-digit",
326
329
  timeZone: "UTC"
327
330
  }).format(new Date(Date.UTC(2020, 0, 1, t, n)));
328
331
  }
329
- function Ee(t, n) {
332
+ function xe(t, n) {
330
333
  var e;
331
334
  if (t === "UTC") return "UTC";
332
335
  try {
@@ -338,11 +341,11 @@ function Ee(t, n) {
338
341
  return null;
339
342
  }
340
343
  }
341
- function Et(t, n, e = "en-US") {
342
- const r = $e(t);
344
+ function St(t, n, e = "en-US") {
345
+ const r = Ce(t);
343
346
  if (!r.ok) return null;
344
347
  try {
345
- const o = Ie(r.value.hour, r.value.minute, e), a = Ee(n, e);
348
+ const o = ke(r.value.hour, r.value.minute, e), a = xe(n, e);
346
349
  if (!a) return null;
347
350
  switch (r.value.cadence) {
348
351
  case "daily":
@@ -353,7 +356,7 @@ function Et(t, n, e = "en-US") {
353
356
  timeZone: "UTC"
354
357
  });
355
358
  return `${r.value.weekdays.map(
356
- (d) => i.format(new Date(Date.UTC(2023, 0, 1 + d)))
359
+ (l) => i.format(new Date(Date.UTC(2023, 0, 1 + l)))
357
360
  ).join(" and ")} at ${o} ${a}`;
358
361
  }
359
362
  case "twice_monthly":
@@ -365,12 +368,12 @@ function Et(t, n, e = "en-US") {
365
368
  return null;
366
369
  }
367
370
  }
368
- const Ce = /* @__PURE__ */ new Set([
371
+ const Te = /* @__PURE__ */ new Set([
369
372
  "table",
370
373
  "aggregateTable",
371
374
  "pivotTable",
372
375
  "detailTable"
373
- ]), ke = /* @__PURE__ */ new Set([
376
+ ]), Ae = /* @__PURE__ */ new Set([
374
377
  "bar",
375
378
  "horizontalBar",
376
379
  "line",
@@ -401,51 +404,51 @@ const Ce = /* @__PURE__ */ new Set([
401
404
  "treemap",
402
405
  "custom"
403
406
  ]);
404
- function Ct(t) {
407
+ function wt(t) {
405
408
  var r, o, a;
406
- const n = ke.has(t.type) && (t.type !== "custom" || !!((r = t.customCardPreferences) != null && r.url));
407
- return t.type === "text" || !n || fe(t) ? { formats: [], defaultFormat: null } : {
408
- formats: Te({
409
+ const n = Ae.has(t.type) && (t.type !== "custom" || !!((r = t.customCardPreferences) != null && r.url));
410
+ return t.type === "text" || !n || he(t) ? { formats: [], defaultFormat: null } : {
411
+ formats: Se({
409
412
  cardType: t.type,
410
413
  allowDownload: (o = t.preferences) == null ? void 0 : o.allowDownload
411
414
  }),
412
- defaultFormat: xe({
415
+ defaultFormat: we({
413
416
  cardType: t.type,
414
417
  allowDownload: (a = t.preferences) == null ? void 0 : a.allowDownload
415
418
  })
416
419
  };
417
420
  }
418
- function Te(t) {
421
+ function Se(t) {
419
422
  return t.allowDownload === !1 ? ["pdf"] : ["pdf", "csv"];
420
423
  }
421
- function xe(t) {
422
- return Ce.has(t.cardType) && t.allowDownload !== !1 ? "csv" : "pdf";
424
+ function we(t) {
425
+ return Te.has(t.cardType) && t.allowDownload !== !1 ? "csv" : "pdf";
423
426
  }
424
- function kt(t) {
427
+ function Ft(t) {
425
428
  return t != null && t.role ? t.type === "tenant" ? t.role === "POWER_USER" : ["AUTHOR", "ADMIN", "SUPER_ADMIN"].includes(t.role) : !1;
426
429
  }
427
- function Tt(t) {
430
+ function Dt(t) {
428
431
  return t.canCreate ? [
429
432
  ...t.scheduledReportAvailable ? ["scheduled_report"] : [],
430
433
  ...t.analyticalBriefingsEnabled ? ["analytical_briefing"] : []
431
434
  ] : [];
432
435
  }
433
- function Ae(t) {
436
+ function Fe(t) {
434
437
  const n = (t == null ? void 0 : t.channels) ?? [];
435
438
  return n.length === 1 && n[0] === "EMAIL";
436
439
  }
437
- function Se(t) {
438
- return t.body.type === "generated_analysis" ? "Analytical briefing" : t.body.type === "custom_message" && t.attachments.length > 0 && Ae(t.deliveryConfig) ? t.scheduleExpr ? "Scheduled report" : "On-demand report" : "Plain briefing";
440
+ function De(t) {
441
+ return t.body.type === "generated_analysis" ? "Analytical briefing" : t.body.type === "custom_message" && t.attachments.length > 0 && Fe(t.deliveryConfig) ? t.scheduleExpr ? "Scheduled report" : "On-demand report" : "Plain briefing";
439
442
  }
440
- function xt(t) {
441
- const n = Se(t), e = n === "Scheduled report" || n === "On-demand report" ? "report" : "briefing";
443
+ function _t(t) {
444
+ const n = De(t), e = n === "Scheduled report" || n === "On-demand report" ? "report" : "briefing";
442
445
  return {
443
446
  typeLabel: n,
444
447
  noun: e,
445
448
  pluralNoun: e === "report" ? "reports" : "briefings"
446
449
  };
447
450
  }
448
- const O = "BRIEFING", we = ["markdown", "html"], R = ["markdown"], _ = 20, s = {
451
+ const R = "BRIEFING", _e = ["markdown", "html"], O = ["markdown"], D = 20, m = {
449
452
  name: 500,
450
453
  description: 2e3,
451
454
  instruction: 5e4,
@@ -465,16 +468,16 @@ const O = "BRIEFING", we = ["markdown", "html"], R = ["markdown"], _ = 20, s = {
465
468
  maxBlocks: 50,
466
469
  maxTableRows: 100,
467
470
  maxTableColumns: 20,
468
- maxTableCellCharacters: s.contentCell,
469
- maxParagraphCharacters: s.contentText,
470
- maxFindingCharacters: s.contentText,
471
+ maxTableCellCharacters: m.contentCell,
472
+ maxParagraphCharacters: m.contentText,
473
+ maxFindingCharacters: m.contentText,
471
474
  maxListItems: 100,
472
475
  // A kpi_grid is rendered as a 2-up tile arrangement in emails. Cap at 8 so
473
476
  // the visual stays at most 4 rows (4 columns wide on desktop would force
474
477
  // tiny tiles in narrow client panels; 2-up was the chosen layout).
475
478
  maxKpiTiles: 8
476
479
  };
477
- function De(t) {
480
+ function Be(t) {
478
481
  if (t === null || typeof t != "object" || Array.isArray(t))
479
482
  return !1;
480
483
  const n = t;
@@ -486,58 +489,58 @@ function De(t) {
486
489
  const r = e;
487
490
  return (r.kind === "metric" && typeof r.metricId == "string" && !!r.metricId.trim() || r.kind === "column" && typeof r.columnKey == "string" && !!r.columnKey.trim() || r.kind === "matrix_measure" && typeof r.measureId == "string" && !!r.measureId.trim()) && W(n.format).ok;
488
491
  }
489
- function _e(t) {
490
- return t == null ? "" : De(t) ? me(t.value, t.format) : String(t);
492
+ function Ne(t) {
493
+ return t == null ? "" : Be(t) ? fe(t.value, t.format) : String(t);
491
494
  }
492
- function At(t) {
495
+ function Bt(t) {
493
496
  return [t.delta, t.percentChange].filter(
494
497
  (n) => n != null
495
- ).map(_e).filter(Boolean).join(" / ");
498
+ ).map(Ne).filter(Boolean).join(" / ");
496
499
  }
497
- const J = new Set(we), Be = /* @__PURE__ */ new Set([
500
+ const J = new Set(_e), Re = /* @__PURE__ */ new Set([
498
501
  "EMAIL",
499
502
  "WEBHOOK",
500
503
  "SLACK",
501
504
  "IN_APP",
502
505
  "TELEGRAM"
503
- ]), B = {
506
+ ]), _ = {
504
507
  maxToolCalls: { min: 1, max: 100 },
505
508
  maxPlanningIterations: { min: 1, max: 10 },
506
509
  maxRows: { min: 1, max: 1e5 },
507
510
  timeoutMs: { min: 1e3, max: 30 * 6e4 }
508
- }, Fe = /* @__PURE__ */ new Set([
511
+ }, Oe = /* @__PURE__ */ new Set([
509
512
  "letter",
510
513
  "legal",
511
514
  "a4",
512
515
  "a3",
513
516
  "tabloid"
514
- ]), Ne = /* @__PURE__ */ new Set([
517
+ ]), Le = /* @__PURE__ */ new Set([
515
518
  "portrait",
516
519
  "landscape"
517
- ]), Oe = /* @__PURE__ */ new Set([",", ";", " "]), Re = /* @__PURE__ */ new Set([
520
+ ]), ze = /* @__PURE__ */ new Set([",", ";", " "]), Ve = /* @__PURE__ */ new Set([
518
521
  "current",
519
522
  "all"
520
- ]), Le = /* @__PURE__ */ new Set([
523
+ ]), Ue = /* @__PURE__ */ new Set([
521
524
  "concise",
522
525
  "balanced",
523
526
  "detailed"
524
- ]), ze = /* @__PURE__ */ new Set([
527
+ ]), Pe = /* @__PURE__ */ new Set([
525
528
  "info",
526
529
  "positive",
527
530
  "warning",
528
531
  "critical"
529
- ]), Ve = /* @__PURE__ */ new Set([
532
+ ]), je = /* @__PURE__ */ new Set([
530
533
  "text",
531
534
  "number",
532
535
  "currency",
533
536
  "percent",
534
537
  "date",
535
538
  "boolean"
536
- ]), Ue = /* @__PURE__ */ new Set([
539
+ ]), Me = /* @__PURE__ */ new Set([
537
540
  "left",
538
541
  "center",
539
542
  "right"
540
- ]), Pe = [
543
+ ]), Ke = [
541
544
  "pageSize",
542
545
  "orientation",
543
546
  "includeFilters",
@@ -563,7 +566,7 @@ const J = new Set(we), Be = /* @__PURE__ */ new Set([
563
566
  "allowDownload",
564
567
  "theme"
565
568
  ];
566
- class D extends Error {
569
+ class F extends Error {
567
570
  constructor(e) {
568
571
  super(e.map((r) => `${r.field}: ${r.message}`).join("; "));
569
572
  H(this, "issues");
@@ -573,16 +576,16 @@ class D extends Error {
573
576
  function X(t) {
574
577
  return typeof t == "object" && t !== null && !Array.isArray(t);
575
578
  }
576
- function l(t, n, e) {
579
+ function d(t, n, e) {
577
580
  t.push({ field: n, message: e });
578
581
  }
579
582
  function g(t, n, e) {
580
- return X(t) ? t : (l(e, n, "Expected an object."), {});
583
+ return X(t) ? t : (d(e, n, "Expected an object."), {});
581
584
  }
582
- function f(t, n, e, r) {
585
+ function p(t, n, e, r) {
583
586
  const o = new Set(e);
584
587
  Object.keys(t).forEach((a) => {
585
- o.has(a) || l(
588
+ o.has(a) || d(
586
589
  r,
587
590
  n ? `${n}.${a}` : a,
588
591
  `Unexpected field "${a}".`
@@ -591,31 +594,31 @@ function f(t, n, e, r) {
591
594
  }
592
595
  function u(t, n, e, r) {
593
596
  if (typeof t != "string")
594
- return l(r, n, "Expected a string."), "";
597
+ return d(r, n, "Expected a string."), "";
595
598
  const o = t.trim();
596
- return o ? (o.length > e && l(r, n, `Must be ${e} characters or fewer.`), o) : (l(r, n, "Required value cannot be empty."), "");
599
+ return o ? (o.length > e && d(r, n, `Must be ${e} characters or fewer.`), o) : (d(r, n, "Required value cannot be empty."), "");
597
600
  }
598
601
  function h(t, n, e, r) {
599
602
  if (t == null)
600
603
  return;
601
604
  if (typeof t != "string") {
602
- l(r, n, "Expected a string.");
605
+ d(r, n, "Expected a string.");
603
606
  return;
604
607
  }
605
608
  const o = t.trim();
606
609
  if (o)
607
- return o.length > e && l(r, n, `Must be ${e} characters or fewer.`), o;
610
+ return o.length > e && d(r, n, `Must be ${e} characters or fewer.`), o;
608
611
  }
609
- function je(t, n, e, r) {
612
+ function qe(t, n, e, r) {
610
613
  if (typeof t != "string")
611
- return l(r, n, "Expected a string."), "";
614
+ return d(r, n, "Expected a string."), "";
612
615
  const o = t.trim();
613
- return o.length > e && l(r, n, `Must be ${e} characters or fewer.`), o;
616
+ return o.length > e && d(r, n, `Must be ${e} characters or fewer.`), o;
614
617
  }
615
- function Me(t, n, e) {
618
+ function He(t, n, e) {
616
619
  if (t != null) {
617
620
  if (!Number.isInteger(t) || Number(t) < 0) {
618
- l(e, n, "Expected a non-negative integer.");
621
+ d(e, n, "Expected a non-negative integer.");
619
622
  return;
620
623
  }
621
624
  return Number(t);
@@ -623,74 +626,74 @@ function Me(t, n, e) {
623
626
  }
624
627
  function I(t, n, e, r = {}) {
625
628
  if (t == null)
626
- return r.required ? (l(e, n, "Expected at least one evidence id."), []) : void 0;
629
+ return r.required ? (d(e, n, "Expected at least one evidence id."), []) : void 0;
627
630
  if (!Array.isArray(t))
628
- return l(e, n, "Expected an array."), r.required ? [] : void 0;
631
+ return d(e, n, "Expected an array."), r.required ? [] : void 0;
629
632
  const o = [];
630
633
  return t.forEach((a, i) => {
631
634
  const c = u(
632
635
  a,
633
636
  `${n}.${i}`,
634
- s.id,
637
+ m.id,
635
638
  e
636
639
  );
637
640
  c && !o.includes(c) && o.push(c);
638
- }), r.required && o.length === 0 && l(e, n, "Expected at least one evidence id."), o.length > 0 || r.required ? o : void 0;
641
+ }), r.required && o.length === 0 && d(e, n, "Expected at least one evidence id."), o.length > 0 || r.required ? o : void 0;
639
642
  }
640
- function A(t, n, e, r) {
641
- return t == null ? n : typeof t != "boolean" ? (l(r, e, "Expected a boolean."), n) : t;
643
+ function S(t, n, e, r) {
644
+ return t == null ? n : typeof t != "boolean" ? (d(r, e, "Expected a boolean."), n) : t;
642
645
  }
643
- function Ke(t, n) {
644
- return t == null ? "ACTIVE" : t === "ACTIVE" || t === "PAUSED" || t === "DISABLED" ? t : (l(n, "status", "Expected ACTIVE, PAUSED, or DISABLED."), "ACTIVE");
646
+ function Ge(t, n) {
647
+ return t == null ? "ACTIVE" : t === "ACTIVE" || t === "PAUSED" || t === "DISABLED" ? t : (d(n, "status", "Expected ACTIVE, PAUSED, or DISABLED."), "ACTIVE");
645
648
  }
646
- function qe(t) {
649
+ function We(t) {
647
650
  return t.includes("@") && t.includes(".") && !t.includes(" ");
648
651
  }
649
652
  function Q(t, n) {
650
653
  if (t == null)
651
654
  return { type: "project" };
652
655
  const e = g(t, "source", n), r = e.type;
653
- return r === "project" ? (f(e, "source", ["type"], n), { type: "project" }) : r === "dashboard" ? (f(e, "source", ["type", "dashboardId"], n), {
656
+ return r === "project" ? (p(e, "source", ["type"], n), { type: "project" }) : r === "dashboard" ? (p(e, "source", ["type", "dashboardId"], n), {
654
657
  type: "dashboard",
655
658
  dashboardId: u(
656
659
  e.dashboardId,
657
660
  "source.dashboardId",
658
- s.id,
661
+ m.id,
659
662
  n
660
663
  )
661
- }) : (l(n, "source.type", "Expected project or dashboard."), { type: "project" });
664
+ }) : (d(n, "source.type", "Expected project or dashboard."), { type: "project" });
662
665
  }
663
666
  function ee(t, n) {
664
667
  const e = g(t, "body", n), r = e.type;
665
- return r === "generated_analysis" ? (f(e, "body", ["type", "instruction"], n), {
668
+ return r === "generated_analysis" ? (p(e, "body", ["type", "instruction"], n), {
666
669
  type: "generated_analysis",
667
670
  instruction: u(
668
671
  e.instruction,
669
672
  "body.instruction",
670
- s.instruction,
673
+ m.instruction,
671
674
  n
672
675
  )
673
- }) : r === "custom_message" ? (f(e, "body", ["type", "message"], n), {
676
+ }) : r === "custom_message" ? (p(e, "body", ["type", "message"], n), {
674
677
  type: "custom_message",
675
- message: je(
678
+ message: qe(
676
679
  e.message,
677
680
  "body.message",
678
- s.customMessage,
681
+ m.customMessage,
679
682
  n
680
683
  )
681
- }) : r === "none" ? (f(e, "body", ["type"], n), { type: "none" }) : (l(
684
+ }) : r === "none" ? (p(e, "body", ["type"], n), { type: "none" }) : (d(
682
685
  n,
683
686
  "body.type",
684
687
  "Expected generated_analysis, custom_message, or none."
685
688
  ), { type: "none" });
686
689
  }
687
- function He(t, n) {
690
+ function Ze(t, n) {
688
691
  if (t == null)
689
- return [...R];
692
+ return [...O];
690
693
  if (!Array.isArray(t))
691
- return l(n, "presentation.artifactFormats", "Expected an array."), [...R];
694
+ return d(n, "presentation.artifactFormats", "Expected an array."), [...O];
692
695
  if (t.length === 0)
693
- return l(
696
+ return d(
694
697
  n,
695
698
  "presentation.artifactFormats",
696
699
  "Choose at least one artifact format."
@@ -698,7 +701,7 @@ function He(t, n) {
698
701
  const e = [];
699
702
  return t.forEach((r, o) => {
700
703
  if (typeof r != "string" || !J.has(r)) {
701
- l(
704
+ d(
702
705
  n,
703
706
  `presentation.artifactFormats.${o}`,
704
707
  "Expected markdown or html."
@@ -711,12 +714,12 @@ function He(t, n) {
711
714
  function te(t, n) {
712
715
  if (t == null)
713
716
  return {
714
- artifactFormats: [...R],
717
+ artifactFormats: [...O],
715
718
  includeEvidence: !0,
716
719
  includeSql: !0
717
720
  };
718
721
  const e = g(t, "presentation", n);
719
- f(
722
+ p(
720
723
  e,
721
724
  "presentation",
722
725
  [
@@ -734,14 +737,14 @@ function te(t, n) {
734
737
  n
735
738
  );
736
739
  const r = {
737
- artifactFormats: He(e.artifactFormats, n),
738
- includeEvidence: A(
740
+ artifactFormats: Ze(e.artifactFormats, n),
741
+ includeEvidence: S(
739
742
  e.includeEvidence,
740
743
  !0,
741
744
  "presentation.includeEvidence",
742
745
  n
743
746
  ),
744
- includeSql: A(
747
+ includeSql: S(
745
748
  e.includeSql,
746
749
  !0,
747
750
  "presentation.includeSql",
@@ -750,25 +753,25 @@ function te(t, n) {
750
753
  }, o = h(
751
754
  e.audience,
752
755
  "presentation.audience",
753
- s.presentationAudience,
756
+ m.presentationAudience,
754
757
  n
755
758
  ), a = h(
756
759
  e.tone,
757
760
  "presentation.tone",
758
- s.presentationTone,
761
+ m.presentationTone,
759
762
  n
760
763
  ), i = h(
761
764
  e.format,
762
765
  "presentation.format",
763
- s.presentationFormat,
766
+ m.presentationFormat,
764
767
  n
765
768
  );
766
769
  o && (r.audience = o), a && (r.tone = a), i && (r.format = i);
767
- const c = ge(e);
768
- return c.issues.forEach((d) => l(n, d.field, d.message)), Object.assign(r, c.value), r;
770
+ const c = $e(e);
771
+ return c.issues.forEach((l) => d(n, l.field, l.message)), Object.assign(r, c.value), r;
769
772
  }
770
- function Ge(t, n, e) {
771
- return Array.isArray(t) ? (t.length === 0 && l(e, n, "Expected at least one item."), t.length > $.maxListItems && l(
773
+ function Ye(t, n, e) {
774
+ return Array.isArray(t) ? (t.length === 0 && d(e, n, "Expected at least one item."), t.length > $.maxListItems && d(
772
775
  e,
773
776
  n,
774
777
  `Must have ${$.maxListItems} items or fewer.`
@@ -776,44 +779,44 @@ function Ge(t, n, e) {
776
779
  (r, o) => u(
777
780
  r,
778
781
  `${n}.${o}`,
779
- s.contentItem,
782
+ m.contentItem,
780
783
  e
781
784
  )
782
- ).filter(Boolean)) : (l(e, n, "Expected an array."), []);
785
+ ).filter(Boolean)) : (d(e, n, "Expected an array."), []);
783
786
  }
784
- function We(t, n, e) {
787
+ function Je(t, n, e) {
785
788
  const r = g(t, n, e);
786
789
  if (r.kind === "metric")
787
- return f(r, n, ["kind", "metricId"], e), {
790
+ return p(r, n, ["kind", "metricId"], e), {
788
791
  kind: "metric",
789
792
  metricId: u(
790
793
  r.metricId,
791
794
  `${n}.metricId`,
792
- s.id,
795
+ m.id,
793
796
  e
794
797
  )
795
798
  };
796
799
  if (r.kind === "column")
797
- return f(r, n, ["kind", "columnKey"], e), {
800
+ return p(r, n, ["kind", "columnKey"], e), {
798
801
  kind: "column",
799
802
  columnKey: u(
800
803
  r.columnKey,
801
804
  `${n}.columnKey`,
802
- s.id,
805
+ m.id,
803
806
  e
804
807
  )
805
808
  };
806
809
  if (r.kind === "matrix_measure")
807
- return f(r, n, ["kind", "measureId"], e), {
810
+ return p(r, n, ["kind", "measureId"], e), {
808
811
  kind: "matrix_measure",
809
812
  measureId: u(
810
813
  r.measureId,
811
814
  `${n}.measureId`,
812
- s.id,
815
+ m.id,
813
816
  e
814
817
  )
815
818
  };
816
- l(
819
+ d(
817
820
  e,
818
821
  `${n}.kind`,
819
822
  "Expected metric, column, or matrix_measure."
@@ -825,14 +828,14 @@ function ne(t, n, e) {
825
828
  const r = g(t, n, e);
826
829
  if (!Object.prototype.hasOwnProperty.call(r, "target") && !Object.prototype.hasOwnProperty.call(r, "format"))
827
830
  return;
828
- f(r, n, ["value", "target", "format"], e), (typeof r.value != "number" || !Number.isFinite(r.value)) && l(e, `${n}.value`, "Expected a finite number.");
829
- const o = We(
831
+ p(r, n, ["value", "target", "format"], e), (typeof r.value != "number" || !Number.isFinite(r.value)) && d(e, `${n}.value`, "Expected a finite number.");
832
+ const o = Je(
830
833
  r.target,
831
834
  `${n}.target`,
832
835
  e
833
836
  ), a = W(r.format);
834
837
  if (a.ok || a.issues.forEach(
835
- (i) => l(
838
+ (i) => d(
836
839
  e,
837
840
  i.path === "$" ? `${n}.format` : `${n}.format.${i.path}`,
838
841
  i.message
@@ -840,42 +843,42 @@ function ne(t, n, e) {
840
843
  ), !(typeof r.value != "number" || !Number.isFinite(r.value) || !o || !a.ok))
841
844
  return { value: r.value, target: o, format: a.value };
842
845
  }
843
- function k(t, n, e) {
846
+ function x(t, n, e) {
844
847
  if (typeof t == "string")
845
848
  return t;
846
849
  if (typeof t == "number") {
847
850
  if (!Number.isFinite(t)) {
848
- l(e, n, "Expected a finite number.");
851
+ d(e, n, "Expected a finite number.");
849
852
  return;
850
853
  }
851
854
  return t;
852
855
  }
853
856
  const r = ne(t, n, e);
854
857
  if (r) return r;
855
- l(
858
+ d(
856
859
  e,
857
860
  n,
858
861
  "Expected a string, number, or structured numeric value."
859
862
  );
860
863
  }
861
- function Ze(t, n, e) {
864
+ function Xe(t, n, e) {
862
865
  if (t === null || typeof t == "string" || typeof t == "number" || typeof t == "boolean")
863
- return typeof t == "string" && t.length > s.contentCell ? (l(
866
+ return typeof t == "string" && t.length > m.contentCell ? (d(
864
867
  e,
865
868
  n,
866
- `Must be ${s.contentCell} characters or fewer.`
867
- ), t.slice(0, s.contentCell)) : typeof t == "number" && !Number.isFinite(t) ? (l(e, n, "Expected a finite number."), null) : t;
869
+ `Must be ${m.contentCell} characters or fewer.`
870
+ ), t.slice(0, m.contentCell)) : typeof t == "number" && !Number.isFinite(t) ? (d(e, n, "Expected a finite number."), null) : t;
868
871
  const r = ne(t, n, e);
869
- return r || (l(
872
+ return r || (d(
870
873
  e,
871
874
  n,
872
875
  "Expected a string, number, boolean, structured numeric value, or null."
873
876
  ), null);
874
877
  }
875
- function Ye(t, n, e) {
878
+ function Qe(t, n, e) {
876
879
  if (!Array.isArray(t))
877
- return l(e, n, "Expected an array."), [];
878
- t.length === 0 && l(e, n, "Expected at least one column."), t.length > $.maxTableColumns && l(
880
+ return d(e, n, "Expected an array."), [];
881
+ t.length === 0 && d(e, n, "Expected at least one column."), t.length > $.maxTableColumns && d(
879
882
  e,
880
883
  n,
881
884
  `Must have ${$.maxTableColumns} columns or fewer.`
@@ -883,74 +886,74 @@ function Ye(t, n, e) {
883
886
  const r = /* @__PURE__ */ new Set();
884
887
  return t.slice(0, $.maxTableColumns).map((o, a) => {
885
888
  const i = `${n}.${a}`, c = g(o, i, e);
886
- f(c, i, ["key", "label", "kind", "align"], e);
887
- const d = u(
889
+ p(c, i, ["key", "label", "kind", "align"], e);
890
+ const l = u(
888
891
  c.key,
889
892
  `${i}.key`,
890
- s.id,
893
+ m.id,
891
894
  e
892
895
  );
893
- d && (r.has(d) && l(e, `${i}.key`, "Column key must be unique."), r.add(d));
894
- const m = u(
896
+ l && (r.has(l) && d(e, `${i}.key`, "Column key must be unique."), r.add(l));
897
+ const s = u(
895
898
  c.label,
896
899
  `${i}.label`,
897
- s.contentTitle,
900
+ m.contentTitle,
898
901
  e
899
- ), p = x(
902
+ ), f = A(
900
903
  c.kind,
901
904
  `${i}.kind`,
902
- Ve,
905
+ je,
903
906
  "text, number, currency, percent, date, or boolean",
904
907
  e
905
- ), v = x(
908
+ ), v = A(
906
909
  c.align,
907
910
  `${i}.align`,
908
- Ue,
911
+ Me,
909
912
  "left, center, or right",
910
913
  e
911
914
  );
912
915
  return {
913
- key: d,
914
- label: m,
915
- ...p ? { kind: p } : {},
916
+ key: l,
917
+ label: s,
918
+ ...f ? { kind: f } : {},
916
919
  ...v ? { align: v } : {}
917
920
  };
918
921
  });
919
922
  }
920
- function Je(t, n, e, r) {
923
+ function et(t, n, e, r) {
921
924
  if (!Array.isArray(t))
922
- return l(r, n, "Expected an array."), [];
923
- t.length > $.maxTableRows && l(
925
+ return d(r, n, "Expected an array."), [];
926
+ t.length > $.maxTableRows && d(
924
927
  r,
925
928
  n,
926
929
  `Must have ${$.maxTableRows} rows or fewer.`
927
930
  );
928
931
  const o = new Set(e.map((a) => a.key).filter(Boolean));
929
932
  return t.slice(0, $.maxTableRows).map((a, i) => {
930
- const c = `${n}.${i}`, d = g(a, c, r);
931
- return Object.keys(d).forEach((m) => {
932
- o.has(m) || l(r, `${c}.${m}`, `Unexpected table cell "${m}".`);
933
+ const c = `${n}.${i}`, l = g(a, c, r);
934
+ return Object.keys(l).forEach((s) => {
935
+ o.has(s) || d(r, `${c}.${s}`, `Unexpected table cell "${s}".`);
933
936
  }), Object.fromEntries(
934
- e.map((m) => [
935
- m.key,
936
- Ze(d[m.key] ?? null, `${c}.${m.key}`, r)
937
+ e.map((s) => [
938
+ s.key,
939
+ Xe(l[s.key] ?? null, `${c}.${s.key}`, r)
937
940
  ])
938
941
  );
939
942
  });
940
943
  }
941
- function Xe(t, n, e) {
944
+ function tt(t, n, e) {
942
945
  const r = `content.blocks.${n}`, o = g(t, r, e), a = o.type;
943
946
  if (a === "heading") {
944
- f(o, r, ["type", "text", "level", "evidenceIds"], e);
947
+ p(o, r, ["type", "text", "level", "evidenceIds"], e);
945
948
  const i = o.level === void 0 || o.level === null ? void 0 : o.level === 2 || o.level === 3 ? o.level : void 0;
946
- o.level !== void 0 && o.level !== null && i === void 0 && l(e, `${r}.level`, "Expected 2 or 3.");
949
+ o.level !== void 0 && o.level !== null && i === void 0 && d(e, `${r}.level`, "Expected 2 or 3.");
947
950
  const c = I(o.evidenceIds, `${r}.evidenceIds`, e);
948
951
  return {
949
952
  type: "heading",
950
953
  text: u(
951
954
  o.text,
952
955
  `${r}.text`,
953
- s.contentTitle,
956
+ m.contentTitle,
954
957
  e
955
958
  ),
956
959
  ...i ? { level: i } : {},
@@ -958,30 +961,30 @@ function Xe(t, n, e) {
958
961
  };
959
962
  }
960
963
  if (a === "paragraph") {
961
- f(o, r, ["type", "text", "evidenceIds"], e);
964
+ p(o, r, ["type", "text", "evidenceIds"], e);
962
965
  const i = I(o.evidenceIds, `${r}.evidenceIds`, e);
963
966
  return {
964
967
  type: "paragraph",
965
968
  text: u(
966
969
  o.text,
967
970
  `${r}.text`,
968
- s.contentText,
971
+ m.contentText,
969
972
  e
970
973
  ),
971
974
  ...i ? { evidenceIds: i } : {}
972
975
  };
973
976
  }
974
977
  if (a === "finding") {
975
- f(o, r, ["type", "title", "text", "severity", "evidenceIds"], e);
978
+ p(o, r, ["type", "title", "text", "severity", "evidenceIds"], e);
976
979
  const i = h(
977
980
  o.title,
978
981
  `${r}.title`,
979
- s.contentTitle,
982
+ m.contentTitle,
980
983
  e
981
- ), c = x(
984
+ ), c = A(
982
985
  o.severity,
983
986
  `${r}.severity`,
984
- ze,
987
+ Pe,
985
988
  "info, positive, warning, or critical",
986
989
  e
987
990
  );
@@ -991,7 +994,7 @@ function Xe(t, n, e) {
991
994
  text: u(
992
995
  o.text,
993
996
  `${r}.text`,
994
- s.contentText,
997
+ m.contentText,
995
998
  e
996
999
  ),
997
1000
  ...c ? { severity: c } : {},
@@ -1001,22 +1004,22 @@ function Xe(t, n, e) {
1001
1004
  };
1002
1005
  }
1003
1006
  if (a === "bullets" || a === "actions" || a === "limitations") {
1004
- f(o, r, ["type", "title", "items", "evidenceIds"], e);
1007
+ p(o, r, ["type", "title", "items", "evidenceIds"], e);
1005
1008
  const i = h(
1006
1009
  o.title,
1007
1010
  `${r}.title`,
1008
- s.contentTitle,
1011
+ m.contentTitle,
1009
1012
  e
1010
1013
  ), c = I(o.evidenceIds, `${r}.evidenceIds`, e);
1011
1014
  return {
1012
1015
  type: a,
1013
1016
  ...i ? { title: i } : {},
1014
- items: Ge(o.items, `${r}.items`, e),
1017
+ items: Ye(o.items, `${r}.items`, e),
1015
1018
  ...c ? { evidenceIds: c } : {}
1016
1019
  };
1017
1020
  }
1018
1021
  if (a === "metric") {
1019
- f(
1022
+ p(
1020
1023
  o,
1021
1024
  r,
1022
1025
  [
@@ -1031,28 +1034,28 @@ function Xe(t, n, e) {
1031
1034
  ],
1032
1035
  e
1033
1036
  );
1034
- const i = k(o.value, `${r}.value`, e) ?? "";
1035
- i === "" && l(
1037
+ const i = x(o.value, `${r}.value`, e) ?? "";
1038
+ i === "" && d(
1036
1039
  e,
1037
1040
  `${r}.value`,
1038
1041
  "Expected a non-empty string, number, or structured numeric value."
1039
1042
  );
1040
- const c = o.previousValue === void 0 || o.previousValue === null ? o.previousValue : k(
1043
+ const c = o.previousValue === void 0 || o.previousValue === null ? o.previousValue : x(
1041
1044
  o.previousValue,
1042
1045
  `${r}.previousValue`,
1043
1046
  e
1044
- ), d = o.delta === void 0 || o.delta === null ? o.delta : k(
1047
+ ), l = o.delta === void 0 || o.delta === null ? o.delta : x(
1045
1048
  o.delta,
1046
1049
  `${r}.delta`,
1047
1050
  e
1048
- ), m = o.percentChange === void 0 || o.percentChange === null ? o.percentChange : k(
1051
+ ), s = o.percentChange === void 0 || o.percentChange === null ? o.percentChange : x(
1049
1052
  o.percentChange,
1050
1053
  `${r}.percentChange`,
1051
1054
  e
1052
- ), p = h(
1055
+ ), f = h(
1053
1056
  o.unit,
1054
1057
  `${r}.unit`,
1055
- s.contentTitle,
1058
+ m.contentTitle,
1056
1059
  e
1057
1060
  ), v = I(o.evidenceIds, `${r}.evidenceIds`, e);
1058
1061
  return {
@@ -1060,33 +1063,33 @@ function Xe(t, n, e) {
1060
1063
  label: u(
1061
1064
  o.label,
1062
1065
  `${r}.label`,
1063
- s.contentTitle,
1066
+ m.contentTitle,
1064
1067
  e
1065
1068
  ),
1066
1069
  value: i,
1067
1070
  ...c !== void 0 ? { previousValue: c } : {},
1068
- ...d !== void 0 ? { delta: d } : {},
1069
- ...m !== void 0 ? { percentChange: m } : {},
1070
- ...p ? { unit: p } : {},
1071
+ ...l !== void 0 ? { delta: l } : {},
1072
+ ...s !== void 0 ? { percentChange: s } : {},
1073
+ ...f ? { unit: f } : {},
1071
1074
  ...v ? { evidenceIds: v } : {}
1072
1075
  };
1073
1076
  }
1074
1077
  if (a === "kpi_grid") {
1075
- f(o, r, ["type", "title", "tiles", "evidenceIds"], e);
1078
+ p(o, r, ["type", "title", "tiles", "evidenceIds"], e);
1076
1079
  const i = h(
1077
1080
  o.title,
1078
1081
  `${r}.title`,
1079
- s.contentTitle,
1082
+ m.contentTitle,
1080
1083
  e
1081
1084
  ), c = Array.isArray(o.tiles) ? o.tiles : [];
1082
- Array.isArray(o.tiles) || l(e, `${r}.tiles`, "Expected an array."), c.length === 0 && l(e, `${r}.tiles`, "Expected at least one tile."), c.length > $.maxKpiTiles && l(
1085
+ Array.isArray(o.tiles) || d(e, `${r}.tiles`, "Expected an array."), c.length === 0 && d(e, `${r}.tiles`, "Expected at least one tile."), c.length > $.maxKpiTiles && d(
1083
1086
  e,
1084
1087
  `${r}.tiles`,
1085
1088
  `Must have ${$.maxKpiTiles} tiles or fewer.`
1086
1089
  );
1087
- const d = c.slice(0, $.maxKpiTiles).map((p, v) => {
1088
- const b = `${r}.tiles.${v}`, y = g(p, b, e);
1089
- f(
1090
+ const l = c.slice(0, $.maxKpiTiles).map((f, v) => {
1091
+ const b = `${r}.tiles.${v}`, y = g(f, b, e);
1092
+ p(
1090
1093
  y,
1091
1094
  b,
1092
1095
  [
@@ -1100,32 +1103,32 @@ function Xe(t, n, e) {
1100
1103
  ],
1101
1104
  e
1102
1105
  );
1103
- const S = k(
1106
+ const k = x(
1104
1107
  y.value,
1105
1108
  `${b}.value`,
1106
1109
  e
1107
1110
  ) ?? "";
1108
- S === "" && l(
1111
+ k === "" && d(
1109
1112
  e,
1110
1113
  `${b}.value`,
1111
1114
  "Expected a non-empty string, number, or structured numeric value."
1112
1115
  );
1113
- const P = y.previousValue === void 0 || y.previousValue === null ? y.previousValue : k(
1116
+ const P = y.previousValue === void 0 || y.previousValue === null ? y.previousValue : x(
1114
1117
  y.previousValue,
1115
1118
  `${b}.previousValue`,
1116
1119
  e
1117
- ), j = y.delta === void 0 || y.delta === null ? y.delta : k(
1120
+ ), j = y.delta === void 0 || y.delta === null ? y.delta : x(
1118
1121
  y.delta,
1119
1122
  `${b}.delta`,
1120
1123
  e
1121
- ), M = y.percentChange === void 0 || y.percentChange === null ? y.percentChange : k(
1124
+ ), M = y.percentChange === void 0 || y.percentChange === null ? y.percentChange : x(
1122
1125
  y.percentChange,
1123
1126
  `${b}.percentChange`,
1124
1127
  e
1125
1128
  ), K = h(
1126
1129
  y.unit,
1127
1130
  `${b}.unit`,
1128
- s.contentTitle,
1131
+ m.contentTitle,
1129
1132
  e
1130
1133
  ), q = I(
1131
1134
  y.evidenceIds,
@@ -1136,17 +1139,17 @@ function Xe(t, n, e) {
1136
1139
  label: u(
1137
1140
  y.label,
1138
1141
  `${b}.label`,
1139
- s.contentTitle,
1142
+ m.contentTitle,
1140
1143
  e
1141
1144
  ),
1142
- value: S,
1145
+ value: k,
1143
1146
  ...P !== void 0 ? { previousValue: P } : {},
1144
1147
  ...j !== void 0 ? { delta: j } : {},
1145
1148
  ...M !== void 0 ? { percentChange: M } : {},
1146
1149
  ...K ? { unit: K } : {},
1147
1150
  ...q ? { evidenceIds: q } : {}
1148
1151
  };
1149
- }), m = I(
1152
+ }), s = I(
1150
1153
  o.evidenceIds,
1151
1154
  `${r}.evidenceIds`,
1152
1155
  e
@@ -1154,77 +1157,77 @@ function Xe(t, n, e) {
1154
1157
  return {
1155
1158
  type: "kpi_grid",
1156
1159
  ...i ? { title: i } : {},
1157
- tiles: d,
1158
- ...m ? { evidenceIds: m } : {}
1160
+ tiles: l,
1161
+ ...s ? { evidenceIds: s } : {}
1159
1162
  };
1160
1163
  }
1161
1164
  if (a === "progress") {
1162
- f(o, r, ["type", "label", "value", "detail", "evidenceIds"], e);
1165
+ p(o, r, ["type", "label", "value", "detail", "evidenceIds"], e);
1163
1166
  const i = typeof o.value == "number" && Number.isFinite(o.value) ? o.value : 0;
1164
- (typeof o.value != "number" || !Number.isFinite(o.value)) && l(e, `${r}.value`, "Expected a finite number.");
1167
+ (typeof o.value != "number" || !Number.isFinite(o.value)) && d(e, `${r}.value`, "Expected a finite number.");
1165
1168
  const c = h(
1166
1169
  o.detail,
1167
1170
  `${r}.detail`,
1168
- s.contentText,
1171
+ m.contentText,
1169
1172
  e
1170
- ), d = I(o.evidenceIds, `${r}.evidenceIds`, e);
1173
+ ), l = I(o.evidenceIds, `${r}.evidenceIds`, e);
1171
1174
  return {
1172
1175
  type: "progress",
1173
1176
  label: u(
1174
1177
  o.label,
1175
1178
  `${r}.label`,
1176
- s.contentTitle,
1179
+ m.contentTitle,
1177
1180
  e
1178
1181
  ),
1179
1182
  value: i,
1180
1183
  ...c ? { detail: c } : {},
1181
- ...d ? { evidenceIds: d } : {}
1184
+ ...l ? { evidenceIds: l } : {}
1182
1185
  };
1183
1186
  }
1184
1187
  if (a === "table") {
1185
- f(
1188
+ p(
1186
1189
  o,
1187
1190
  r,
1188
1191
  ["type", "id", "title", "columns", "rows", "caption", "totalRows", "evidenceIds"],
1189
1192
  e
1190
1193
  );
1191
- const i = Ye(o.columns, `${r}.columns`, e), c = h(
1194
+ const i = Qe(o.columns, `${r}.columns`, e), c = h(
1192
1195
  o.title,
1193
1196
  `${r}.title`,
1194
- s.contentTitle,
1197
+ m.contentTitle,
1195
1198
  e
1196
- ), d = h(
1199
+ ), l = h(
1197
1200
  o.id,
1198
1201
  `${r}.id`,
1199
- s.id,
1202
+ m.id,
1200
1203
  e
1201
- ), m = h(
1204
+ ), s = h(
1202
1205
  o.caption,
1203
1206
  `${r}.caption`,
1204
- s.contentItem,
1207
+ m.contentItem,
1205
1208
  e
1206
- ), p = Me(
1209
+ ), f = He(
1207
1210
  o.totalRows,
1208
1211
  `${r}.totalRows`,
1209
1212
  e
1210
1213
  ), v = I(o.evidenceIds, `${r}.evidenceIds`, e);
1211
1214
  return {
1212
1215
  type: "table",
1213
- ...d ? { id: d } : {},
1216
+ ...l ? { id: l } : {},
1214
1217
  ...c ? { title: c } : {},
1215
1218
  columns: i,
1216
- rows: Je(o.rows, `${r}.rows`, i, e),
1217
- ...m ? { caption: m } : {},
1218
- ...p !== void 0 ? { totalRows: p } : {},
1219
+ rows: et(o.rows, `${r}.rows`, i, e),
1220
+ ...s ? { caption: s } : {},
1221
+ ...f !== void 0 ? { totalRows: f } : {},
1219
1222
  ...v ? { evidenceIds: v } : {}
1220
1223
  };
1221
1224
  }
1222
1225
  if (a === "evidence_appendix") {
1223
- f(o, r, ["type", "title", "evidenceIds"], e);
1226
+ p(o, r, ["type", "title", "evidenceIds"], e);
1224
1227
  const i = h(
1225
1228
  o.title,
1226
1229
  `${r}.title`,
1227
- s.contentTitle,
1230
+ m.contentTitle,
1228
1231
  e
1229
1232
  );
1230
1233
  return {
@@ -1236,26 +1239,26 @@ function Xe(t, n, e) {
1236
1239
  };
1237
1240
  }
1238
1241
  if (a === "sql") {
1239
- f(o, r, ["type", "title", "sql", "evidenceIds"], e);
1242
+ p(o, r, ["type", "title", "sql", "evidenceIds"], e);
1240
1243
  const i = h(
1241
1244
  o.title,
1242
1245
  `${r}.title`,
1243
- s.contentTitle,
1246
+ m.contentTitle,
1244
1247
  e
1245
1248
  ), c = u(
1246
1249
  o.sql,
1247
1250
  `${r}.sql`,
1248
- s.contentSql,
1251
+ m.contentSql,
1249
1252
  e
1250
- ), d = I(o.evidenceIds, `${r}.evidenceIds`, e);
1253
+ ), l = I(o.evidenceIds, `${r}.evidenceIds`, e);
1251
1254
  return {
1252
1255
  type: "sql",
1253
1256
  ...i ? { title: i } : {},
1254
1257
  sql: c,
1255
- ...d ? { evidenceIds: d } : {}
1258
+ ...l ? { evidenceIds: l } : {}
1256
1259
  };
1257
1260
  }
1258
- return l(
1261
+ return d(
1259
1262
  e,
1260
1263
  `${r}.type`,
1261
1264
  "Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."
@@ -1264,28 +1267,28 @@ function Xe(t, n, e) {
1264
1267
  text: ""
1265
1268
  };
1266
1269
  }
1267
- function Qe(t) {
1270
+ function nt(t) {
1268
1271
  const n = [], e = g(t, "content", n);
1269
- f(e, "content", ["version", "title", "summary", "blocks"], n), e.version !== 1 && l(n, "content.version", "Expected version 1.");
1272
+ p(e, "content", ["version", "title", "summary", "blocks"], n), e.version !== 1 && d(n, "content.version", "Expected version 1.");
1270
1273
  const r = h(
1271
1274
  e.title,
1272
1275
  "content.title",
1273
- s.contentTitle,
1276
+ m.contentTitle,
1274
1277
  n
1275
1278
  ), o = h(
1276
1279
  e.summary,
1277
1280
  "content.summary",
1278
- s.contentSummary,
1281
+ m.contentSummary,
1279
1282
  n
1280
1283
  );
1281
- Array.isArray(e.blocks) || l(n, "content.blocks", "Expected an array.");
1284
+ Array.isArray(e.blocks) || d(n, "content.blocks", "Expected an array.");
1282
1285
  const a = Array.isArray(e.blocks) ? e.blocks : [];
1283
- a.length === 0 && l(n, "content.blocks", "Expected at least one block."), a.length > $.maxBlocks && l(
1286
+ a.length === 0 && d(n, "content.blocks", "Expected at least one block."), a.length > $.maxBlocks && d(
1284
1287
  n,
1285
1288
  "content.blocks",
1286
1289
  `Must have ${$.maxBlocks} blocks or fewer.`
1287
1290
  );
1288
- const i = a.slice(0, $.maxBlocks).map((c, d) => Xe(c, d, n));
1291
+ const i = a.slice(0, $.maxBlocks).map((c, l) => tt(c, l, n));
1289
1292
  return z(n), {
1290
1293
  version: 1,
1291
1294
  ...r ? { title: r } : {},
@@ -1293,93 +1296,93 @@ function Qe(t) {
1293
1296
  blocks: i
1294
1297
  };
1295
1298
  }
1296
- function St(t) {
1299
+ function Nt(t) {
1297
1300
  try {
1298
1301
  return {
1299
1302
  valid: !0,
1300
- value: Qe(t),
1303
+ value: nt(t),
1301
1304
  issues: []
1302
1305
  };
1303
1306
  } catch (n) {
1304
- if (n instanceof D)
1307
+ if (n instanceof F)
1305
1308
  return { valid: !1, issues: n.issues };
1306
1309
  throw n;
1307
1310
  }
1308
1311
  }
1309
1312
  function w(t, n, e, r) {
1310
- return typeof t == "string" && e.includes(t) ? t : (l(r, n, `Expected ${e.join(" or ")}.`), e[0]);
1313
+ return typeof t == "string" && e.includes(t) ? t : (d(r, n, `Expected ${e.join(" or ")}.`), e[0]);
1311
1314
  }
1312
- function x(t, n, e, r, o) {
1315
+ function A(t, n, e, r, o) {
1313
1316
  if (t != null) {
1314
1317
  if (typeof t == "string" && e.has(t))
1315
1318
  return t;
1316
- l(o, n, `Expected ${r}.`);
1319
+ d(o, n, `Expected ${r}.`);
1317
1320
  }
1318
1321
  }
1319
- function et(t, n, e) {
1322
+ function rt(t, n, e) {
1320
1323
  if (t != null) {
1321
1324
  if (!Array.isArray(t)) {
1322
- l(e, n, "Expected an array.");
1325
+ d(e, n, "Expected an array.");
1323
1326
  return;
1324
1327
  }
1325
1328
  return t;
1326
1329
  }
1327
1330
  }
1328
- function tt(t, n, e) {
1331
+ function ot(t, n, e) {
1329
1332
  if (t != null) {
1330
1333
  if (!X(t)) {
1331
- l(e, n, "Expected an object.");
1334
+ d(e, n, "Expected an object.");
1332
1335
  return;
1333
1336
  }
1334
1337
  return t;
1335
1338
  }
1336
1339
  }
1337
- function nt(t, n, e) {
1340
+ function at(t, n, e) {
1338
1341
  if (t == null)
1339
1342
  return;
1340
1343
  const r = g(t, n, e);
1341
- f(r, n, Pe, e);
1342
- const o = {}, a = x(
1344
+ p(r, n, Ke, e);
1345
+ const o = {}, a = A(
1343
1346
  r.pageSize,
1344
1347
  `${n}.pageSize`,
1345
- Fe,
1348
+ Oe,
1346
1349
  "letter, legal, a4, a3, or tabloid",
1347
1350
  e
1348
- ), i = x(
1351
+ ), i = A(
1349
1352
  r.orientation,
1350
1353
  `${n}.orientation`,
1351
- Ne,
1354
+ Le,
1352
1355
  "portrait or landscape",
1353
1356
  e
1354
- ), c = x(
1357
+ ), c = A(
1355
1358
  r.delimiter,
1356
1359
  `${n}.delimiter`,
1357
- Oe,
1360
+ ze,
1358
1361
  "comma, semicolon, or tab",
1359
1362
  e
1360
- ), d = x(
1363
+ ), l = A(
1361
1364
  r.sheetSelection,
1362
1365
  `${n}.sheetSelection`,
1363
- Re,
1366
+ Ve,
1364
1367
  "current or all",
1365
1368
  e
1366
1369
  );
1367
- a && (o.pageSize = a), i && (o.orientation = i), c && (o.delimiter = c), d && (o.sheetSelection = d);
1368
- for (const m of [
1370
+ a && (o.pageSize = a), i && (o.orientation = i), c && (o.delimiter = c), l && (o.sheetSelection = l);
1371
+ for (const s of [
1369
1372
  "includeFilters",
1370
1373
  "includeTimestamp",
1371
1374
  "includeHeaders",
1372
1375
  "useFormattedValues",
1373
1376
  "allowDownload"
1374
1377
  ])
1375
- if (!(r[m] === void 0 || r[m] === null)) {
1376
- if (typeof r[m] != "boolean") {
1377
- l(e, `${n}.${m}`, "Expected a boolean.");
1378
+ if (!(r[s] === void 0 || r[s] === null)) {
1379
+ if (typeof r[s] != "boolean") {
1380
+ d(e, `${n}.${s}`, "Expected a boolean.");
1378
1381
  continue;
1379
1382
  }
1380
- o[m] = r[m];
1383
+ o[s] = r[s];
1381
1384
  }
1382
- for (const m of [
1385
+ for (const s of [
1383
1386
  "currentSheetId",
1384
1387
  "currentSheetName",
1385
1388
  "filterLine",
@@ -1387,15 +1390,15 @@ function nt(t, n, e) {
1387
1390
  "cardType",
1388
1391
  "theme"
1389
1392
  ]) {
1390
- const p = h(
1391
- r[m],
1392
- `${n}.${m}`,
1393
- s.id,
1393
+ const f = h(
1394
+ r[s],
1395
+ `${n}.${s}`,
1396
+ m.id,
1394
1397
  e
1395
1398
  );
1396
- p && (o[m] = p);
1399
+ f && (o[s] = f);
1397
1400
  }
1398
- for (const m of [
1401
+ for (const s of [
1399
1402
  "filterValues",
1400
1403
  "inlineFilterValues",
1401
1404
  "sheetFilterValues",
@@ -1403,48 +1406,48 @@ function nt(t, n, e) {
1403
1406
  "cardControlDefinitions",
1404
1407
  "controlBindings"
1405
1408
  ]) {
1406
- const p = et(r[m], `${n}.${m}`, e);
1407
- p && (o[m] = p);
1409
+ const f = rt(r[s], `${n}.${s}`, e);
1410
+ f && (o[s] = f);
1408
1411
  }
1409
- for (const m of [
1412
+ for (const s of [
1410
1413
  "controlValues",
1411
1414
  "tablePreferences",
1412
1415
  "dashboardInputExecutionSnapshot"
1413
1416
  ]) {
1414
- const p = tt(r[m], `${n}.${m}`, e);
1415
- p && (o[m] = p);
1417
+ const f = ot(r[s], `${n}.${s}`, e);
1418
+ f && (o[s] = f);
1416
1419
  }
1417
1420
  return Object.keys(o).length > 0 ? o : void 0;
1418
1421
  }
1419
- function F(t, n, e, r) {
1422
+ function B(t, n, e, r) {
1420
1423
  const o = h(
1421
1424
  n,
1422
1425
  e,
1423
- s.attachmentTitle,
1426
+ m.attachmentTitle,
1424
1427
  r
1425
1428
  );
1426
1429
  return o && (t.title = o), t;
1427
1430
  }
1428
1431
  function N(t, n, e, r) {
1429
- const o = nt(n, e, r);
1432
+ const o = at(n, e, r);
1430
1433
  return o && (t.settings = o), t;
1431
1434
  }
1432
- function rt(t, n, e) {
1435
+ function it(t, n, e) {
1433
1436
  const r = `attachments.${n}`, o = g(t, r, e), a = o.type;
1434
1437
  if (a === "dashboard") {
1435
- f(
1438
+ p(
1436
1439
  o,
1437
1440
  r,
1438
1441
  ["type", "dashboardId", "format", "title", "settings"],
1439
1442
  e
1440
1443
  );
1441
- const i = F(
1444
+ const i = B(
1442
1445
  {
1443
1446
  type: "dashboard",
1444
1447
  dashboardId: u(
1445
1448
  o.dashboardId,
1446
1449
  `${r}.dashboardId`,
1447
- s.id,
1450
+ m.id,
1448
1451
  e
1449
1452
  ),
1450
1453
  format: w(o.format, `${r}.format`, ["pdf"], e)
@@ -1456,25 +1459,25 @@ function rt(t, n, e) {
1456
1459
  return N(i, o.settings, `${r}.settings`, e);
1457
1460
  }
1458
1461
  if (a === "dashboard_sheet" || a === "document_sheet") {
1459
- f(
1462
+ p(
1460
1463
  o,
1461
1464
  r,
1462
1465
  ["type", "dashboardId", "sheetId", "format", "title", "settings"],
1463
1466
  e
1464
1467
  );
1465
- const i = F(
1468
+ const i = B(
1466
1469
  {
1467
1470
  type: a,
1468
1471
  dashboardId: u(
1469
1472
  o.dashboardId,
1470
1473
  `${r}.dashboardId`,
1471
- s.id,
1474
+ m.id,
1472
1475
  e
1473
1476
  ),
1474
1477
  sheetId: u(
1475
1478
  o.sheetId,
1476
1479
  `${r}.sheetId`,
1477
- s.id,
1480
+ m.id,
1478
1481
  e
1479
1482
  ),
1480
1483
  format: w(o.format, `${r}.format`, ["pdf"], e)
@@ -1486,25 +1489,25 @@ function rt(t, n, e) {
1486
1489
  return N(i, o.settings, `${r}.settings`, e);
1487
1490
  }
1488
1491
  if (a === "card") {
1489
- f(
1492
+ p(
1490
1493
  o,
1491
1494
  r,
1492
1495
  ["type", "dashboardId", "cardId", "format", "title", "settings"],
1493
1496
  e
1494
1497
  );
1495
- const i = F(
1498
+ const i = B(
1496
1499
  {
1497
1500
  type: "card",
1498
1501
  dashboardId: u(
1499
1502
  o.dashboardId,
1500
1503
  `${r}.dashboardId`,
1501
- s.id,
1504
+ m.id,
1502
1505
  e
1503
1506
  ),
1504
1507
  cardId: u(
1505
1508
  o.cardId,
1506
1509
  `${r}.cardId`,
1507
- s.id,
1510
+ m.id,
1508
1511
  e
1509
1512
  ),
1510
1513
  format: w(
@@ -1520,13 +1523,13 @@ function rt(t, n, e) {
1520
1523
  );
1521
1524
  return N(i, o.settings, `${r}.settings`, e);
1522
1525
  }
1523
- return l(
1526
+ return d(
1524
1527
  e,
1525
1528
  `${r}.type`,
1526
1529
  "Expected dashboard, dashboard_sheet, document_sheet, or card."
1527
1530
  ), { type: "dashboard", dashboardId: "", format: "pdf" };
1528
1531
  }
1529
- function ot(t) {
1532
+ function ct(t) {
1530
1533
  switch (t.type) {
1531
1534
  case "dashboard":
1532
1535
  return `${t.type}:${t.dashboardId}:${t.format}`;
@@ -1541,31 +1544,31 @@ function re(t, n) {
1541
1544
  if (t == null)
1542
1545
  return [];
1543
1546
  if (!Array.isArray(t))
1544
- return l(n, "attachments", "Expected an array."), [];
1545
- t.length > _ && l(
1547
+ return d(n, "attachments", "Expected an array."), [];
1548
+ t.length > D && d(
1546
1549
  n,
1547
1550
  "attachments",
1548
- `Choose ${_} attachments or fewer.`
1551
+ `Choose ${D} attachments or fewer.`
1549
1552
  );
1550
- const e = t.slice(0, _).map((o, a) => rt(o, a, n)), r = /* @__PURE__ */ new Set();
1553
+ const e = t.slice(0, D).map((o, a) => it(o, a, n)), r = /* @__PURE__ */ new Set();
1551
1554
  return e.forEach((o, a) => {
1552
- const i = ot(o);
1553
- r.has(i) && l(n, `attachments.${a}`, "Duplicate attachment."), r.add(i);
1555
+ const i = ct(o);
1556
+ r.has(i) && d(n, `attachments.${a}`, "Duplicate attachment."), r.add(i);
1554
1557
  }), e;
1555
1558
  }
1556
1559
  function oe(t, n) {
1557
1560
  if (t == null)
1558
1561
  return;
1559
1562
  const e = g(t, "limits", n);
1560
- f(e, "limits", Object.keys(B), n);
1563
+ p(e, "limits", Object.keys(_), n);
1561
1564
  const r = {};
1562
- return Object.keys(B).forEach((o) => {
1565
+ return Object.keys(_).forEach((o) => {
1563
1566
  const a = e[o];
1564
1567
  if (a == null)
1565
1568
  return;
1566
- const i = B[o];
1569
+ const i = _[o];
1567
1570
  if (typeof a != "number" || !Number.isInteger(a) || a < i.min || a > i.max) {
1568
- l(
1571
+ d(
1569
1572
  n,
1570
1573
  `limits.${o}`,
1571
1574
  `Expected an integer between ${i.min} and ${i.max}.`
@@ -1577,23 +1580,68 @@ function oe(t, n) {
1577
1580
  }
1578
1581
  function z(t) {
1579
1582
  if (t.length > 0)
1580
- throw new D(t);
1583
+ throw new F(t);
1581
1584
  }
1582
1585
  function ae(t, n, e) {
1583
- !(t.type === "generated_analysis" || t.type === "custom_message" && !!t.message.trim()) && n.length === 0 && l(
1586
+ !(t.type === "generated_analysis" || t.type === "custom_message" && !!t.message.trim()) && n.length === 0 && d(
1584
1587
  e,
1585
1588
  "body",
1586
1589
  "Add briefing instructions, a custom message, or at least one attachment."
1587
1590
  );
1588
1591
  }
1589
- function ie(t) {
1592
+ function ie(t, n, e) {
1593
+ if (t !== void 0)
1594
+ try {
1595
+ return pe(t);
1596
+ } catch (r) {
1597
+ d(
1598
+ e,
1599
+ n,
1600
+ r instanceof Error ? r.message : "Invalid resolved formats."
1601
+ );
1602
+ return;
1603
+ }
1604
+ }
1605
+ function ce(t, n, e, r) {
1606
+ t == null || t.forEach((o, a) => {
1607
+ const i = `${e}.${a}.scope`, c = o.scope.attachmentIndex;
1608
+ if (c === void 0) {
1609
+ d(
1610
+ r,
1611
+ `${i}.attachmentIndex`,
1612
+ "Expected the index of the attachment that owns this presentation entry."
1613
+ );
1614
+ return;
1615
+ }
1616
+ const l = n[c];
1617
+ if (!l) {
1618
+ d(
1619
+ r,
1620
+ `${i}.attachmentIndex`,
1621
+ "Expected an index for an existing attachment."
1622
+ );
1623
+ return;
1624
+ }
1625
+ o.scope.dashboardId !== l.dashboardId && d(
1626
+ r,
1627
+ `${i}.dashboardId`,
1628
+ "Expected the dashboard selected by the referenced attachment."
1629
+ ), l.type === "card" && o.scope.cardId !== l.cardId && d(
1630
+ r,
1631
+ `${i}.cardId`,
1632
+ "Expected the card selected by the referenced attachment."
1633
+ );
1634
+ });
1635
+ }
1636
+ function de(t) {
1590
1637
  const n = [], e = g(t, "jobConfig", n);
1591
- f(
1638
+ p(
1592
1639
  e,
1593
1640
  "jobConfig",
1594
1641
  [
1595
1642
  "kind",
1596
1643
  "reportContext",
1644
+ "resolvedFormats",
1597
1645
  "source",
1598
1646
  "body",
1599
1647
  "attachments",
@@ -1601,95 +1649,105 @@ function ie(t) {
1601
1649
  "limits"
1602
1650
  ],
1603
1651
  n
1604
- ), e.kind !== O && l(n, "kind", "Expected BRIEFING.");
1605
- const r = se(e.reportContext);
1652
+ ), e.kind !== R && d(n, "kind", "Expected BRIEFING.");
1653
+ const r = ue(e.reportContext);
1606
1654
  r.ok || r.issues.forEach(
1607
- (m) => l(
1655
+ (f) => d(
1608
1656
  n,
1609
- m.path === "$" ? "jobConfig.reportContext" : `jobConfig.reportContext.${m.path}`,
1610
- m.message
1657
+ f.path === "$" ? "jobConfig.reportContext" : `jobConfig.reportContext.${f.path}`,
1658
+ f.message
1611
1659
  )
1612
1660
  );
1613
- const o = Q(e.source, n), a = ee(e.body, n), i = re(e.attachments, n), c = te(e.presentation, n), d = oe(e.limits, n);
1614
- return ae(a, i, n), z(n), {
1615
- kind: O,
1661
+ const o = Q(e.source, n), a = ie(
1662
+ e.resolvedFormats,
1663
+ "jobConfig.resolvedFormats",
1664
+ n
1665
+ ), i = ee(e.body, n), c = re(e.attachments, n), l = te(e.presentation, n), s = oe(e.limits, n);
1666
+ return ae(i, c, n), ce(
1667
+ a,
1668
+ c,
1669
+ "jobConfig.resolvedFormats",
1670
+ n
1671
+ ), z(n), {
1672
+ kind: R,
1616
1673
  reportContext: r.ok ? r.value : e.reportContext,
1674
+ ...a ? { resolvedFormats: a } : {},
1617
1675
  source: o,
1618
- body: a,
1619
- attachments: i,
1620
- presentation: c,
1621
- ...d ? { limits: d } : {}
1676
+ body: i,
1677
+ attachments: c,
1678
+ presentation: l,
1679
+ ...s ? { limits: s } : {}
1622
1680
  };
1623
1681
  }
1624
- function wt(t) {
1625
- return ie({
1682
+ function Rt(t) {
1683
+ return de({
1626
1684
  ...t,
1627
- kind: O
1685
+ kind: R
1628
1686
  });
1629
1687
  }
1630
1688
  function V(t, n, e, r = "deliveryConfig.recipients") {
1631
1689
  const o = `${r}.${n}`, a = g(t, o, e), i = a.type;
1632
1690
  if (i === "email") {
1633
- f(a, o, ["type", "address", "name"], e);
1691
+ p(a, o, ["type", "address", "name"], e);
1634
1692
  const c = u(
1635
1693
  a.address,
1636
1694
  `${o}.address`,
1637
- s.id,
1695
+ m.id,
1638
1696
  e
1639
- ), d = h(
1697
+ ), l = h(
1640
1698
  a.name,
1641
1699
  `${o}.name`,
1642
- s.attachmentTitle,
1700
+ m.attachmentTitle,
1643
1701
  e
1644
1702
  );
1645
- return c && !qe(c) && l(e, `${o}.address`, "Email address is invalid."), {
1703
+ return c && !We(c) && d(e, `${o}.address`, "Email address is invalid."), {
1646
1704
  type: "email",
1647
1705
  address: c,
1648
- ...d ? { name: d } : {}
1706
+ ...l ? { name: l } : {}
1649
1707
  };
1650
1708
  }
1651
- return i === "user" ? (f(a, o, ["type", "userId"], e), {
1709
+ return i === "user" ? (p(a, o, ["type", "userId"], e), {
1652
1710
  type: "user",
1653
1711
  userId: u(
1654
1712
  a.userId,
1655
1713
  `${o}.userId`,
1656
- s.id,
1714
+ m.id,
1657
1715
  e
1658
1716
  )
1659
- }) : i === "tenant_user" ? (f(a, o, ["type", "tenantUserId"], e), {
1717
+ }) : i === "tenant_user" ? (p(a, o, ["type", "tenantUserId"], e), {
1660
1718
  type: "tenant_user",
1661
1719
  tenantUserId: u(
1662
1720
  a.tenantUserId,
1663
1721
  `${o}.tenantUserId`,
1664
- s.id,
1722
+ m.id,
1665
1723
  e
1666
1724
  )
1667
- }) : i === "group" ? (f(a, o, ["type", "groupId"], e), {
1725
+ }) : i === "group" ? (p(a, o, ["type", "groupId"], e), {
1668
1726
  type: "group",
1669
1727
  groupId: u(
1670
1728
  a.groupId,
1671
1729
  `${o}.groupId`,
1672
- s.id,
1730
+ m.id,
1673
1731
  e
1674
1732
  )
1675
- }) : (l(
1733
+ }) : (d(
1676
1734
  e,
1677
1735
  `${o}.type`,
1678
1736
  "Expected email, user, tenant_user, or group."
1679
1737
  ), { type: "email", address: "" });
1680
1738
  }
1681
- function at(t, n) {
1739
+ function dt(t, n) {
1682
1740
  return t == null ? [] : Array.isArray(t) ? t.map(
1683
1741
  (e, r) => V(e, r, n)
1684
- ) : (l(n, "deliveryConfig.recipients", "Expected an array."), []);
1742
+ ) : (d(n, "deliveryConfig.recipients", "Expected an array."), []);
1685
1743
  }
1686
- function it(t, n) {
1744
+ function lt(t, n) {
1687
1745
  if (!Array.isArray(t))
1688
- return l(n, "deliveryConfig.channels", "Expected an array."), [];
1746
+ return d(n, "deliveryConfig.channels", "Expected an array."), [];
1689
1747
  const e = [];
1690
1748
  return t.forEach((r, o) => {
1691
- if (!ce(r)) {
1692
- l(
1749
+ if (!le(r)) {
1750
+ d(
1693
1751
  n,
1694
1752
  `deliveryConfig.channels.${o}`,
1695
1753
  "Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM."
@@ -1699,29 +1757,29 @@ function it(t, n) {
1699
1757
  e.includes(r) || e.push(r);
1700
1758
  }), e;
1701
1759
  }
1702
- function ct(t, n, e) {
1760
+ function st(t, n, e) {
1703
1761
  if (t == null)
1704
1762
  return;
1705
1763
  const r = g(t, n, e), o = {};
1706
1764
  return Object.entries(r).forEach(([a, i]) => {
1707
1765
  if (typeof i != "string") {
1708
- l(e, `${n}.${a}`, "Expected a string.");
1766
+ d(e, `${n}.${a}`, "Expected a string.");
1709
1767
  return;
1710
1768
  }
1711
1769
  o[a] = i.trim();
1712
1770
  }), Object.keys(o).length > 0 ? o : void 0;
1713
1771
  }
1714
- function lt(t, n, e) {
1772
+ function mt(t, n, e) {
1715
1773
  if (t == null)
1716
1774
  return;
1717
1775
  const r = g(t, n, e);
1718
- f(
1776
+ p(
1719
1777
  r,
1720
1778
  n,
1721
1779
  ["url", "method", "headers", "secretEncrypted"],
1722
1780
  e
1723
1781
  );
1724
- const o = r.method === void 0 || r.method === null ? void 0 : w(r.method, `${n}.method`, ["POST", "PUT"], e), a = ct(r.headers, `${n}.headers`, e), i = h(
1782
+ const o = r.method === void 0 || r.method === null ? void 0 : w(r.method, `${n}.method`, ["POST", "PUT"], e), a = st(r.headers, `${n}.headers`, e), i = h(
1725
1783
  r.secretEncrypted,
1726
1784
  `${n}.secretEncrypted`,
1727
1785
  2e3,
@@ -1734,10 +1792,10 @@ function lt(t, n, e) {
1734
1792
  ...i ? { secretEncrypted: i } : {}
1735
1793
  };
1736
1794
  }
1737
- function dt(t, n, e) {
1795
+ function ft(t, n, e) {
1738
1796
  const r = g(t, n, e), o = r.type;
1739
1797
  if (o === "channel") {
1740
- f(
1798
+ p(
1741
1799
  r,
1742
1800
  n,
1743
1801
  ["type", "channelId", "channelName", "isPrivate"],
@@ -1746,9 +1804,9 @@ function dt(t, n, e) {
1746
1804
  const a = h(
1747
1805
  r.channelName,
1748
1806
  `${n}.channelName`,
1749
- s.attachmentTitle,
1807
+ m.attachmentTitle,
1750
1808
  e
1751
- ), i = r.isPrivate === void 0 || r.isPrivate === null ? void 0 : A(
1809
+ ), i = r.isPrivate === void 0 || r.isPrivate === null ? void 0 : S(
1752
1810
  r.isPrivate,
1753
1811
  !1,
1754
1812
  `${n}.isPrivate`,
@@ -1759,27 +1817,27 @@ function dt(t, n, e) {
1759
1817
  channelId: u(
1760
1818
  r.channelId,
1761
1819
  `${n}.channelId`,
1762
- s.id,
1820
+ m.id,
1763
1821
  e
1764
1822
  ),
1765
1823
  ...a ? { channelName: a } : {},
1766
1824
  ...i !== void 0 ? { isPrivate: i } : {}
1767
1825
  };
1768
1826
  }
1769
- return o === "dm" ? (f(r, n, ["type", "recipient"], e), l(
1827
+ return o === "dm" ? (p(r, n, ["type", "recipient"], e), d(
1770
1828
  e,
1771
1829
  `${n}.type`,
1772
1830
  "Slack DM delivery is not supported in V1."
1773
1831
  ), {
1774
1832
  type: "dm",
1775
1833
  recipient: V(r.recipient, 0, e, `${n}.recipient`)
1776
- }) : (l(e, `${n}.type`, "Expected channel."), { type: "channel", channelId: "" });
1834
+ }) : (d(e, `${n}.type`, "Expected channel."), { type: "channel", channelId: "" });
1777
1835
  }
1778
- function mt(t, n, e) {
1836
+ function pt(t, n, e) {
1779
1837
  if (t == null)
1780
1838
  return;
1781
1839
  if (!Array.isArray(t)) {
1782
- l(e, n, "Expected an array.");
1840
+ d(e, n, "Expected an array.");
1783
1841
  return;
1784
1842
  }
1785
1843
  const r = t.map(
@@ -1787,11 +1845,11 @@ function mt(t, n, e) {
1787
1845
  );
1788
1846
  return r.length > 0 ? r : void 0;
1789
1847
  }
1790
- function st(t, n, e) {
1848
+ function ut(t, n, e) {
1791
1849
  if (t == null)
1792
1850
  return;
1793
1851
  const r = g(t, n, e);
1794
- f(
1852
+ p(
1795
1853
  r,
1796
1854
  n,
1797
1855
  [
@@ -1803,28 +1861,28 @@ function st(t, n, e) {
1803
1861
  ],
1804
1862
  e
1805
1863
  );
1806
- const o = mt(
1864
+ const o = pt(
1807
1865
  r.threadMentions,
1808
1866
  `${n}.threadMentions`,
1809
1867
  e
1810
- ), a = A(
1868
+ ), a = S(
1811
1869
  r.postThreadDetail,
1812
1870
  !0,
1813
1871
  `${n}.postThreadDetail`,
1814
1872
  e
1815
- ), i = A(
1873
+ ), i = S(
1816
1874
  r.includeDashboardLink,
1817
1875
  !0,
1818
1876
  `${n}.includeDashboardLink`,
1819
1877
  e
1820
- ), c = A(
1878
+ ), c = S(
1821
1879
  r.includeBriefingLink,
1822
1880
  !0,
1823
1881
  `${n}.includeBriefingLink`,
1824
1882
  e
1825
1883
  );
1826
1884
  return {
1827
- destination: dt(
1885
+ destination: ft(
1828
1886
  r.destination,
1829
1887
  `${n}.destination`,
1830
1888
  e
@@ -1835,9 +1893,9 @@ function st(t, n, e) {
1835
1893
  ...r.includeBriefingLink !== void 0 ? { includeBriefingLink: c } : {}
1836
1894
  };
1837
1895
  }
1838
- function ft(t, n, e) {
1896
+ function ht(t, n, e) {
1839
1897
  const r = g(t, n, e);
1840
- f(
1898
+ p(
1841
1899
  r,
1842
1900
  n,
1843
1901
  [
@@ -1851,10 +1909,10 @@ function ft(t, n, e) {
1851
1909
  ],
1852
1910
  e
1853
1911
  );
1854
- const o = x(
1912
+ const o = A(
1855
1913
  r.formatProfile,
1856
1914
  `${n}.formatProfile`,
1857
- Le,
1915
+ Ue,
1858
1916
  "concise, balanced, or detailed",
1859
1917
  e
1860
1918
  ), a = h(
@@ -1872,16 +1930,16 @@ function ft(t, n, e) {
1872
1930
  `${n}.summaryOverride`,
1873
1931
  2e3,
1874
1932
  e
1875
- ), d = A(
1933
+ ), l = S(
1876
1934
  r.actionBlockVisible,
1877
1935
  !0,
1878
1936
  `${n}.actionBlockVisible`,
1879
1937
  e
1880
- ), m = lt(
1938
+ ), s = mt(
1881
1939
  r.webhookConfig,
1882
1940
  `${n}.webhookConfig`,
1883
1941
  e
1884
- ), p = st(
1942
+ ), f = ut(
1885
1943
  r.slackConfig,
1886
1944
  `${n}.slackConfig`,
1887
1945
  e
@@ -1891,58 +1949,58 @@ function ft(t, n, e) {
1891
1949
  ...a ? { subjectOverride: a } : {},
1892
1950
  ...i ? { titleOverride: i } : {},
1893
1951
  ...c ? { summaryOverride: c } : {},
1894
- ...r.actionBlockVisible !== void 0 ? { actionBlockVisible: d } : {},
1895
- ...p ? { slackConfig: p } : {},
1896
- ...m ? { webhookConfig: m } : {}
1952
+ ...r.actionBlockVisible !== void 0 ? { actionBlockVisible: l } : {},
1953
+ ...f ? { slackConfig: f } : {},
1954
+ ...s ? { webhookConfig: s } : {}
1897
1955
  };
1898
1956
  }
1899
- function pt(t, n) {
1957
+ function yt(t, n) {
1900
1958
  if (t == null)
1901
1959
  return;
1902
1960
  const e = g(t, "deliveryConfig.channelConfigs", n), r = {};
1903
1961
  return Object.entries(e).forEach(([o, a]) => {
1904
- if (!ce(o)) {
1905
- l(
1962
+ if (!le(o)) {
1963
+ d(
1906
1964
  n,
1907
1965
  `deliveryConfig.channelConfigs.${o}`,
1908
1966
  "Expected a supported delivery channel."
1909
1967
  );
1910
1968
  return;
1911
1969
  }
1912
- r[o] = ft(
1970
+ r[o] = ht(
1913
1971
  a,
1914
1972
  `deliveryConfig.channelConfigs.${o}`,
1915
1973
  n
1916
1974
  );
1917
1975
  }), Object.keys(r).length > 0 ? r : void 0;
1918
1976
  }
1919
- function ut(t, n) {
1920
- var d, m, p;
1977
+ function gt(t, n) {
1978
+ var l, s, f;
1921
1979
  if (t == null)
1922
1980
  return null;
1923
1981
  const e = g(t, "deliveryConfig", n);
1924
- f(
1982
+ p(
1925
1983
  e,
1926
1984
  "deliveryConfig",
1927
1985
  ["recipients", "channels", "channelConfigs"],
1928
1986
  n
1929
1987
  );
1930
- const r = pt(e.channelConfigs, n), o = at(e.recipients, n), a = it(e.channels, n), i = ((m = (d = r == null ? void 0 : r.SLACK) == null ? void 0 : d.slackConfig) == null ? void 0 : m.destination.type) === "channel" && !!r.SLACK.slackConfig.destination.channelId.trim();
1988
+ const r = yt(e.channelConfigs, n), o = dt(e.recipients, n), a = lt(e.channels, n), i = ((s = (l = r == null ? void 0 : r.SLACK) == null ? void 0 : l.slackConfig) == null ? void 0 : s.destination.type) === "channel" && !!r.SLACK.slackConfig.destination.channelId.trim();
1931
1989
  return a.some(
1932
1990
  (v) => v !== "SLACK"
1933
- ) && o.length === 0 && l(
1991
+ ) && o.length === 0 && d(
1934
1992
  n,
1935
1993
  "deliveryConfig.recipients",
1936
1994
  "Add at least one recipient or remove delivery config."
1937
- ), a.length === 0 && l(
1995
+ ), a.length === 0 && d(
1938
1996
  n,
1939
1997
  "deliveryConfig.channels",
1940
1998
  "Choose at least one delivery channel or remove delivery config."
1941
- ), a.includes("SLACK") && !i && l(
1999
+ ), a.includes("SLACK") && !i && d(
1942
2000
  n,
1943
2001
  "deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId",
1944
2002
  "Choose a Slack channel destination."
1945
- ), !a.includes("SLACK") && ((p = r == null ? void 0 : r.SLACK) != null && p.slackConfig) && l(
2003
+ ), !a.includes("SLACK") && ((f = r == null ? void 0 : r.SLACK) != null && f.slackConfig) && d(
1946
2004
  n,
1947
2005
  "deliveryConfig.channelConfigs.SLACK",
1948
2006
  "Slack config requires SLACK in deliveryConfig.channels."
@@ -1954,7 +2012,7 @@ function ut(t, n) {
1954
2012
  }
1955
2013
  function U(t) {
1956
2014
  const n = [], e = g(t, "draft", n);
1957
- f(
2015
+ p(
1958
2016
  e,
1959
2017
  "draft",
1960
2018
  [
@@ -1968,98 +2026,109 @@ function U(t) {
1968
2026
  "attachments",
1969
2027
  "presentation",
1970
2028
  "limits",
1971
- "deliveryConfig"
2029
+ "deliveryConfig",
2030
+ "resolvedFormats"
1972
2031
  ],
1973
2032
  n
1974
2033
  );
1975
2034
  const r = u(
1976
2035
  e.name,
1977
2036
  "name",
1978
- s.name,
2037
+ m.name,
1979
2038
  n
1980
2039
  ), o = h(
1981
2040
  e.description,
1982
2041
  "description",
1983
- s.description,
2042
+ m.description,
1984
2043
  n
1985
- ) ?? null, a = h(e.scheduleExpr, "scheduleExpr", 500, n) ?? null, i = h(e.timezone, "timezone", 200, n) ?? "UTC", c = Ke(e.status, n), d = Q(e.source, n), m = ee(e.body, n), p = re(e.attachments, n), v = te(e.presentation, n), b = oe(e.limits, n), y = ut(e.deliveryConfig, n);
1986
- return ae(m, p, n), z(n), {
2044
+ ) ?? null, a = h(e.scheduleExpr, "scheduleExpr", 500, n) ?? null, i = h(e.timezone, "timezone", 200, n) ?? "UTC", c = Ge(e.status, n), l = Q(e.source, n), s = ee(e.body, n), f = re(e.attachments, n), v = te(e.presentation, n), b = oe(e.limits, n), y = gt(e.deliveryConfig, n), k = ie(
2045
+ e.resolvedFormats,
2046
+ "resolvedFormats",
2047
+ n
2048
+ );
2049
+ return ae(s, f, n), ce(
2050
+ k,
2051
+ f,
2052
+ "resolvedFormats",
2053
+ n
2054
+ ), z(n), {
1987
2055
  name: r,
1988
2056
  description: o,
1989
2057
  status: c,
1990
2058
  scheduleExpr: a,
1991
2059
  timezone: i,
1992
- source: d,
1993
- body: m,
1994
- attachments: p,
2060
+ source: l,
2061
+ body: s,
2062
+ attachments: f,
1995
2063
  presentation: v,
1996
2064
  ...b ? { limits: b } : {},
1997
- deliveryConfig: y
2065
+ deliveryConfig: y,
2066
+ ...k ? { resolvedFormats: k } : {}
1998
2067
  };
1999
2068
  }
2000
- function Dt(t) {
2069
+ function Ot(t) {
2001
2070
  return U(t);
2002
2071
  }
2003
- function _t(t) {
2072
+ function Lt(t) {
2004
2073
  return U(t);
2005
2074
  }
2006
- function Bt(t) {
2075
+ function zt(t) {
2007
2076
  try {
2008
2077
  return { valid: !0, value: U(t), issues: [] };
2009
2078
  } catch (n) {
2010
- if (n instanceof D)
2079
+ if (n instanceof F)
2011
2080
  return { valid: !1, issues: n.issues };
2012
2081
  throw n;
2013
2082
  }
2014
2083
  }
2015
- function Ft(t) {
2084
+ function Vt(t) {
2016
2085
  try {
2017
- return { valid: !0, value: ie(t), issues: [] };
2086
+ return { valid: !0, value: de(t), issues: [] };
2018
2087
  } catch (n) {
2019
- if (n instanceof D)
2088
+ if (n instanceof F)
2020
2089
  return { valid: !1, issues: n.issues };
2021
2090
  throw n;
2022
2091
  }
2023
2092
  }
2024
- function Nt(t) {
2093
+ function Ut(t) {
2025
2094
  return typeof t == "string" && J.has(t);
2026
2095
  }
2027
- function ce(t) {
2028
- return typeof t == "string" && Be.has(t);
2096
+ function le(t) {
2097
+ return typeof t == "string" && Re.has(t);
2029
2098
  }
2030
2099
  export {
2031
- we as BRIEFING_ARTIFACT_FORMATS,
2100
+ _e as BRIEFING_ARTIFACT_FORMATS,
2032
2101
  $ as BRIEFING_CONTENT_LIMITS,
2033
- O as BRIEFING_KIND,
2034
- s as BRIEFING_TEXT_LIMITS,
2035
- D as BriefingContractError,
2036
- R as DEFAULT_BRIEFING_ARTIFACT_FORMATS,
2037
- bt as DEFAULT_BRIEFING_SCHEDULE,
2038
- _ as MAX_BRIEFING_ATTACHMENTS,
2039
- wt as buildBriefingJobConfig,
2040
- It as buildBriefingScheduleExpr,
2041
- Dt as buildCreateBriefingRequest,
2042
- _t as buildUpdateBriefingRequest,
2043
- kt as canCreateBriefingForUser,
2044
- Et as describeBriefingSchedule,
2045
- At as formatBriefingComparisonValues,
2046
- _e as formatBriefingDisplayValue,
2047
- Ct as getBriefingCardAttachmentCapability,
2048
- Te as getBriefingCardAttachmentFormats,
2049
- Tt as getBriefingCreationIntents,
2050
- Se as getBriefingDisplayTypeLabel,
2051
- xt as getBriefingPresentation,
2052
- xe as getDefaultBriefingCardAttachmentFormat,
2053
- Nt as isBriefingArtifactFormat,
2054
- ce as isBriefingDeliveryChannel,
2055
- De as isBriefingNumericValue,
2056
- Ae as isEmailOnlyBriefingDelivery,
2057
- $t as isValidBriefingTimezone,
2058
- Qe as normalizeBriefingContentDocument,
2102
+ R as BRIEFING_KIND,
2103
+ m as BRIEFING_TEXT_LIMITS,
2104
+ F as BriefingContractError,
2105
+ O as DEFAULT_BRIEFING_ARTIFACT_FORMATS,
2106
+ xt as DEFAULT_BRIEFING_SCHEDULE,
2107
+ D as MAX_BRIEFING_ATTACHMENTS,
2108
+ Rt as buildBriefingJobConfig,
2109
+ At as buildBriefingScheduleExpr,
2110
+ Ot as buildCreateBriefingRequest,
2111
+ Lt as buildUpdateBriefingRequest,
2112
+ Ft as canCreateBriefingForUser,
2113
+ St as describeBriefingSchedule,
2114
+ Bt as formatBriefingComparisonValues,
2115
+ Ne as formatBriefingDisplayValue,
2116
+ wt as getBriefingCardAttachmentCapability,
2117
+ Se as getBriefingCardAttachmentFormats,
2118
+ Dt as getBriefingCreationIntents,
2119
+ De as getBriefingDisplayTypeLabel,
2120
+ _t as getBriefingPresentation,
2121
+ we as getDefaultBriefingCardAttachmentFormat,
2122
+ Ut as isBriefingArtifactFormat,
2123
+ le as isBriefingDeliveryChannel,
2124
+ Be as isBriefingNumericValue,
2125
+ Fe as isEmailOnlyBriefingDelivery,
2126
+ Tt as isValidBriefingTimezone,
2127
+ nt as normalizeBriefingContentDocument,
2059
2128
  U as normalizeBriefingDraft,
2060
- ie as normalizeBriefingJobConfig,
2061
- $e as parseBriefingScheduleExpr,
2062
- St as validateBriefingContentDocument,
2063
- Bt as validateBriefingDraft,
2064
- Ft as validateBriefingJobConfig
2129
+ de as normalizeBriefingJobConfig,
2130
+ Ce as parseBriefingScheduleExpr,
2131
+ Nt as validateBriefingContentDocument,
2132
+ zt as validateBriefingDraft,
2133
+ Vt as validateBriefingJobConfig
2065
2134
  };