react-semaphor 0.1.516 → 0.1.518

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 (77) hide show
  1. package/dist/brand-studio/index.cjs +1 -1
  2. package/dist/brand-studio/index.js +2 -2
  3. package/dist/briefings/index.cjs +1 -1
  4. package/dist/briefings/index.js +3 -3
  5. package/dist/chunks/{calculated-field-identity-DzJBs2J8.js → calculated-field-identity-Dy_WpDdo.js} +1 -1
  6. package/dist/chunks/{card-config-utils-Cxnq2R6z.js → card-config-utils-CAyjC5Tp.js} +2 -2
  7. package/dist/chunks/{dashboard-briefing-launcher-BCEHJ_eD.js → dashboard-briefing-launcher-D5HGRwtb.js} +7 -7
  8. package/dist/chunks/{dashboard-briefing-launcher-CjZ4aE34.cjs → dashboard-briefing-launcher-RpT4b0d5.cjs} +1 -1
  9. package/dist/chunks/{dashboard-controls-DFfit5KH.js → dashboard-controls-C0Aw74JP.js} +9 -9
  10. package/dist/chunks/{dashboard-controls-f9aJ70Zu.cjs → dashboard-controls-DidqEx0U.cjs} +1 -1
  11. package/dist/chunks/{dashboard-json-DVtcA02f.js → dashboard-json-B5LLO49G.js} +5 -5
  12. package/dist/chunks/{dashboard-json-deqQC-UR.cjs → dashboard-json-rY4lTftA.cjs} +1 -1
  13. package/dist/chunks/{edit-dashboard-visual-lJ6rDH3w.js → edit-dashboard-visual-D3TrgFMg.js} +364 -361
  14. package/dist/chunks/{edit-dashboard-visual-DK6lSC_p.cjs → edit-dashboard-visual-NABO8NBr.cjs} +3 -3
  15. package/dist/chunks/{editor-action-buttons-Bnxxa439.js → editor-action-buttons-BfWg6DdZ.js} +4 -4
  16. package/dist/chunks/{editor-action-buttons-CmDaQbPN.cjs → editor-action-buttons-xQ5aj-0q.cjs} +1 -1
  17. package/dist/chunks/{field-aggregations-Dl2A3rbV.js → field-aggregations-BQjogiI1.js} +1 -1
  18. package/dist/chunks/{index-ylOpKRDu.js → index-B0KwXM6P.js} +117 -116
  19. package/dist/chunks/index-CapO5Uw9.cjs +4 -0
  20. package/dist/chunks/{index-UNKSfi7s.cjs → index-Dgv9vzT0.cjs} +230 -230
  21. package/dist/chunks/{index-BVVl2JDK.js → index-DqTelnri.js} +27499 -27198
  22. package/dist/chunks/{matrix-control-sources-KbZe1gj_.js → matrix-control-sources-B1K7x0SL.js} +2 -2
  23. package/dist/chunks/matrix-formatter-Qk8xsR05.cjs +1 -0
  24. package/dist/chunks/{matrix-formatter-CCXNRt3s.js → matrix-formatter-WBgtebUT.js} +8 -8
  25. package/dist/chunks/numeric-presentation-VhMUHfrJ.js +537 -0
  26. package/dist/chunks/numeric-presentation-mY6wJMdB.cjs +1 -0
  27. package/dist/chunks/{pivot-header-presentation-BSZhB1g-.js → pivot-header-presentation-CGtudHo7.js} +4 -4
  28. package/dist/chunks/{pivot-header-presentation-EoUS5ze5.cjs → pivot-header-presentation-DV2aBB6p.cjs} +2 -2
  29. package/dist/chunks/{pivot-result-lifecycle-kRhiJkzg.js → pivot-result-lifecycle-BFO354lk.js} +7 -7
  30. package/dist/chunks/pivot-result-lifecycle-OXAgoIYm.cjs +1 -0
  31. package/dist/chunks/raw-temporal-7bFbXd2a.js +930 -0
  32. package/dist/chunks/raw-temporal-CYdOOyR5.cjs +1 -0
  33. package/dist/chunks/{report-preferences-dialog-CHXPEl7v.js → report-preferences-dialog-BzxqfcF8.js} +3 -3
  34. package/dist/chunks/{report-preferences-dialog-Cto0vDwI.cjs → report-preferences-dialog-DLnhOXXg.cjs} +1 -1
  35. package/dist/chunks/{semantic-format-DwqGYx4V.js → semantic-format-Baqp8kD_.js} +1 -1
  36. package/dist/chunks/semantic-format-Bd7HmLG_.cjs +1 -0
  37. package/dist/chunks/{switch-DNbWXEOP.cjs → switch-C0520nRt.cjs} +24 -24
  38. package/dist/chunks/{switch-DNv-hVmt.js → switch-evlnTA4t.js} +3180 -3092
  39. package/dist/chunks/{temporal-bucket-DlFuhCnT.js → temporal-bucket-PcLFSYWX.js} +6 -6
  40. package/dist/chunks/temporal-input-presentation-2RJrvmYL.js +222 -0
  41. package/dist/chunks/temporal-input-presentation-BIOSVWCL.cjs +1 -0
  42. package/dist/dashboard/index.cjs +1 -1
  43. package/dist/dashboard/index.js +1 -1
  44. package/dist/dashboard-authoring/index.js +6 -6
  45. package/dist/data-app-builder/index.cjs +1 -1
  46. package/dist/data-app-builder/index.js +2 -2
  47. package/dist/data-app-sdk/index.cjs +1 -1
  48. package/dist/data-app-sdk/index.js +1 -1
  49. package/dist/format-utils/index.cjs +3 -3
  50. package/dist/format-utils/index.js +77 -73
  51. package/dist/index.cjs +1 -1
  52. package/dist/index.js +10 -10
  53. package/dist/style.css +1 -1
  54. package/dist/surfboard/index.cjs +1 -1
  55. package/dist/surfboard/index.js +2 -2
  56. package/dist/types/components/editor/editor-main/dashboard-variable-node.d.ts +7 -3
  57. package/dist/types/components/editor/editor-main/text-card-rich-editor.d.ts +4 -1
  58. package/dist/types/lib/charts/chart-availability.d.ts +6 -0
  59. package/dist/types/lib/dashboard-inputs/dashboard-input-display.d.ts +11 -0
  60. package/dist/types/lib/dashboard-inputs/dashboard-input-text.d.ts +2 -1
  61. package/dist/types/lib/dashboard-inputs/text-card-rich-content.d.ts +3 -2
  62. package/dist/types/lib/dashboard-inputs/text-variable-options.d.ts +5 -4
  63. package/dist/types/lib/document/document-variables.d.ts +8 -4
  64. package/dist/types/lib/text-variables/temporal-input-text.d.ts +28 -0
  65. package/dist/types/lib/text-variables/text-variable-types.d.ts +17 -1
  66. package/dist/types/lib/types/common-types.d.ts +11 -1
  67. package/dist/types/shared/format-utils/index.d.ts +1 -0
  68. package/dist/types/shared/format-utils/temporal-input-presentation.d.ts +46 -0
  69. package/package.json +1 -1
  70. package/dist/chunks/index-C8w91oj4.js +0 -328
  71. package/dist/chunks/index-Cw2ypaFl.cjs +0 -1
  72. package/dist/chunks/index-DfqMtR9S.cjs +0 -4
  73. package/dist/chunks/matrix-formatter-BJTO8ky9.cjs +0 -1
  74. package/dist/chunks/pivot-result-lifecycle-gl9cBfB-.cjs +0 -1
  75. package/dist/chunks/raw-temporal-BqOfk-xN.js +0 -1137
  76. package/dist/chunks/raw-temporal-eJXecCyJ.cjs +0 -1
  77. package/dist/chunks/semantic-format-mVI32OJH.cjs +0 -1
@@ -0,0 +1,4 @@
1
+ "use strict";var St=Object.defineProperty;var $t=(e,r,t)=>r in e?St(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var R=(e,r,t)=>$t(e,typeof r!="symbol"?r+"":r,t);const ve=require("./numeric-presentation-mY6wJMdB.cjs"),K=require("./validators-DFeDcdpA.cjs");require("./matrix-continuation-6nhDy-lF.cjs");const Re=require("./matrix-operation-contract-0RxoU_M3.cjs"),be=require("../value-format-preferences/index.cjs"),A=require("./pivot-result-lifecycle-OXAgoIYm.cjs"),T=require("zod"),kt=require("./matrix-definition-DanUT11P.cjs"),P=require("./card-config-utils-z86y6tSq.cjs"),_t=require("./matrix-card-C2RjEYZ8.cjs"),Z=require("./field-aggregations-pH_3kymD.cjs"),B=require("./raw-temporal-CYdOOyR5.cjs"),N=require("./pivot-result-identity-gquWljbd.cjs"),Fe=require("./temporal-bucket-contract-nTv6gvX5.cjs"),Y=require("./temporal-bucket-4YEPEKlJ.cjs"),Me=require("./raw-temporal-contract-CklMVG_1.cjs"),se=require("./canonical-result-keys-Cb96edol.cjs"),Oe=`import pandas as pd
2
+ df = pd.DataFrame(data) # 'data' contains the query result
3
+ result = df.to_dict('records') # must return 'result' as [dict] type
4
+ `;function Rt(e){return{databaseName:(e==null?void 0:e.lastSelectedDatabase)||"",schemaName:(e==null?void 0:e.lastSelectedSchema)||"",tableName:(e==null?void 0:e.lastSelectedTable)||"",datamodelId:(e==null?void 0:e.datamodelId)||""}}function G(e){return e===Oe?"":e}function X(e,r=e.config){return Z.resolveTemporalResultOwner({hasExecutableConfig:P.hasValidCardConfig(r,e.type),sql:e.sql,normalizedPython:G(e.python||"")})}class ze extends Error{constructor(t){super(`ambiguous_temporal_grain: Temporal field "${t}" has saved presentation but no valid grouping grain. Reconfigure and resave the field.`);R(this,"code","ambiguous_temporal_grain");R(this,"fieldId");this.name="AmbiguousGroupedTemporalGrainError",this.fieldId=t}}function Ft(e){return P.hasSavedTemporalBucketPresentation(e)||e.semanticTemporalPresentation!=null}function Ke(e){if(!e.id||!["date","datetime"].includes(K.normalizeAnalyticsCatalogDataType(e.dataType)))return;if(K.isSemaphorTimeGrain(e.granularity))return e;if(!Ft(e))return;if(!P.readSavedTemporalBucketFormat({fieldId:e.id,dataType:e.dataType,granularity:e.granularity,format:e.format,dateFormat:e.dateFormat,customFormat:e.customFormat}).ok)throw new ze(e.id);return{...e,granularity:"day"}}function Ie(e){const r=e.cardConfig??e.card.config;if(!r||!e.supportsCardType(e.card.type)||Z.resolveTemporalResultOwner({hasExecutableConfig:P.hasValidCardConfig(r),sql:e.card.sql,normalizedPython:G(e.card.python||"")})!=="config")return;const t=[...(r.groupByColumns||[]).map(n=>({...n,role:"groupby"})),...e.card.type==="pivotTable"?(r.pivotByColumns||[]).map(n=>({...n,role:"pivotby"})):[]];return{cardType:e.card.type,cardConfig:r,fields:t.flatMap(n=>{const o=Ke(n);return o?[o]:[]})}}function At(e){if(P.isShelfCard(e.card))return Ie({...e,card:e.card,supportsCardType:r=>r==="table"})}function Bt(e){if(P.isShelfCard(e.card))return Ie({...e,card:e.card,supportsCardType:Z.isSemaphorCartesianChartType})}function Ne(e){if(P.isShelfCard(e.card))return Ie({...e,card:e.card,supportsCardType:r=>r!=="detailTable"&&Z.supportsCanonicalDashboardTemporalResult(r)})}const Ae=new WeakMap;function qe(e){const r=Ae.get(e);if(r)return r;const t=A.parseCanonicalPivotResultTransport(e);return Ae.set(e,t),t}function Q(e,r){const t=e??[],n=r??[];return t.length===n.length&&t.every((o,a)=>o===n[a])}function Le(e,r){const t=A.derivePivotResultContractExpectations({groupByFields:r.groupByColumns,metricFields:r.metricColumns,pivotByFields:r.pivotByColumns,detailFields:r.detailColumns});return Q(e.expectedRoleFieldIds.groupby,t.expectedRoleFieldIds.groupby)&&Q(e.expectedRoleFieldIds.metric,t.expectedRoleFieldIds.metric)&&Q(e.expectedRoleFieldIds.pivotby,t.expectedRoleFieldIds.pivotby)&&Q(e.expectedRoleFieldIds.detail,t.expectedRoleFieldIds.detail)&&Q(e.expectedMetricAliases,t.expectedMetricAliases)}class Dt extends Error{constructor(t){super(`missing_resolved_temporal_format: Saved presentation is missing temporal field "${t.fieldId}" for card "${t.cardId}". Resave the report or Briefing to capture the current dashboard presentation.`);R(this,"code","missing_resolved_temporal_format");R(this,"deliveryBlocking",!0);R(this,"dashboardId");R(this,"cardId");R(this,"fieldId");this.name="MissingResolvedTemporalPresentationError",this.dashboardId=t.dashboardId,this.cardId=t.cardId,this.fieldId=t.fieldId}}class me extends Error{constructor(t){super(`missing_temporal_bucket_metadata: Result column "${t.columnKey}" is missing temporal bucket metadata for field "${t.fieldId}" on card "${t.cardId}". Refresh the report and resave the delivery if the problem persists.`);R(this,"code","missing_temporal_bucket_metadata");R(this,"deliveryBlocking",!0);R(this,"cardId");R(this,"fieldId");R(this,"columnKey");this.name="MissingTemporalResultMetadataError",this.cardId=t.cardId,this.fieldId=t.fieldId,this.columnKey=t.columnKey}}class V extends Error{constructor(t,n,o){super(`${t}: ${n}`);R(this,"deliveryBlocking",!0);this.code=t,this.context=o,this.name="DashboardTemporalBoundaryError"}}function Ve(e,r){return`${r}:${e}`}function Ue(e){var r,t;return(t=(r=e.presentation)==null?void 0:r.byFieldRole)==null?void 0:t.get(Ve(e.fieldId,e.role))}function Pt(e){var t;if((((t=e.cardConfig.metricColumns)==null?void 0:t.length)||0)>0||e.binding.role!=="metric")return!1;const r=e.binding.outputKey||e.binding.rawKey;return e.columns.some(n=>{var o;return n.role==="measure"&&n.dataType==="number"&&(n.key===r||((o=n.pivotIdentity)==null?void 0:o.metricId)===K.SEMAPHOR_GENERATED_COUNT_METRIC_ID)})}function Mt(e,r){return!r||r.byColumnKey.size===0?e.map(t=>({...t})):e.map(t=>{const n={...t};return r.byColumnKey.forEach((o,a)=>{Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=Ce({value:t[a],presentation:o}))}),n})}function Ot(e){var p;if(!e.result||typeof e.result!="object")return!1;const r=e.result;if(e.expectedResultOwner!==void 0&&r.resultOwner!==e.expectedResultOwner)return!1;const t=e.activation;if(!t||t.cardType!=="pivotTable"&&t.fields.length===0)return!0;const n=Array.isArray(r.records)?r.records.length:void 0,o=(t.cardConfig.pivotByColumns||[]).map(d=>d.id);if(t.cardType==="pivotTable")try{const d=qe(r);if(!Le(d.pivotResultContract,t.cardConfig))return!1;if(d.pivotResultState==="loaded_empty")return!0;const v=d.columns.filter(C=>d.pivotResultContract.columnKinds[C.key]==="pivot_metric"),h=v.filter(C=>{var g;return(((g=C.pivotIdentity)==null?void 0:g.members.length)??0)>0}),b=v.length>0&&v.every(C=>{var g;return((g=C.pivotIdentity)==null?void 0:g.members.length)===0&&N.isPivotEmptyTupleAllowed({expectedPivotFieldIds:o,classification:d.pivotResultContract.columnClassifications[C.key]})});return t.fields.every(C=>{var $;const g=N.resolveQueryColumnKeyMapEntry(d.columnKeyMap,C.id,C.role);if(!g)return!1;if(g.role==="pivotby"){const _=h.flatMap(M=>{var H;return((H=M.pivotIdentity)==null?void 0:H.members.filter(xt=>xt.fieldId===C.id))??[]});return _.length===0?b:_.every(M=>{var H;return((H=M.temporalBucket)==null?void 0:H.granularity)===C.granularity})}const w=d.columns.find(_=>_.key===(g.outputKey||g.rawKey));return(($=w==null?void 0:w.temporalBucket)==null?void 0:$.granularity)===C.granularity})}catch(d){if(d instanceof A.PivotResultLifecycleError)return!1;throw d}if(n===0)return!0;const a=r.columnKeyMap;if(!a||!a.byRole||typeof a.byRole!="object"||Array.isArray(a.byRole))return!1;const i=[...(t.cardConfig.groupByColumns||[]).map(d=>({field:d,role:"groupby"})),...(t.cardConfig.metricColumns||[]).map(d=>({field:d,role:"metric"})),...(t.cardConfig.pivotByColumns||[]).map(d=>({field:d,role:"pivotby"})),...(t.cardConfig.detailColumns||[]).map(d=>({field:d,role:"detail"}))],l=new Set(i.map(({field:d,role:v})=>`${v}:${d.id}`)),m=new Map((r.columns||[]).map(d=>[d.key,d])),c=N.resolveQueryColumnKeyMapEntry(a,K.SEMAPHOR_GENERATED_COUNT_METRIC_ID,"metric");if(c){if(!Pt({cardConfig:t.cardConfig,binding:c,columns:r.columns||[]}))return!1;l.add(`metric:${K.SEMAPHOR_GENERATED_COUNT_METRIC_ID}`)}const s=Object.entries(a.byRole).flatMap(([d,v])=>Object.keys(v||{}).map(h=>`${d}:${h}`));if(s.length!==l.size||s.some(d=>!l.has(d))||i.some(({field:d,role:v})=>!N.resolveQueryColumnKeyMapEntry(a,d.id,v)))return!1;try{N.requirePivotResultColumnIdentities((r.columns||[]).map(d=>({key:d.key,pivotIdentity:d.pivotIdentity})),{expectedPivotFieldIds:o,columnClassifications:r.columnMetadata})}catch(d){if(d instanceof N.PivotResultIdentityError)return!1;throw d}const u=(r.columns||[]).filter(d=>{const v=d.pivotIdentity;return!!(v&&v.members.length>0)});return n!==0&&((p=t.cardConfig.pivotByColumns)!=null&&p.length)&&u.length===0?!1:t.fields.every(d=>{var b;const v=N.resolveQueryColumnKeyMapEntry(a,d.id,d.role);if(!v)return!1;if(v.role==="pivotby"){const g=u.flatMap(w=>{var $;return(($=w.pivotIdentity)==null?void 0:$.members)??[]}).filter(w=>w.fieldId===d.id);return u.length===0?n===0:g.length>0&&g.every(w=>{var $;return(($=w.temporalBucket)==null?void 0:$.granularity)===d.granularity})}const h=m.get(v.outputKey||v.rawKey);return((b=h==null?void 0:h.temporalBucket)==null?void 0:b.granularity)===d.granularity})}function oe(e,r){const t=e.semanticTemporalPresentation,n=r==="card"?{format:e.format,dateFormat:e.dateFormat}:{format:t==null?void 0:t.format};if(!P.hasSavedTemporalBucketPresentation(n))return;const o=P.readSavedTemporalBucketFormat({fieldId:e.id,dataType:e.dataType,granularity:r==="semantic"?t==null?void 0:t.granularity:e.granularity,...r==="card"?{format:e.format,dateFormat:e.dateFormat,customFormat:e.customFormat}:{format:t==null?void 0:t.format}});if(!o.ok)throw new Error(o.error.code);return o.format}function zt(e,r,t=be.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES){const n=oe(e,"card"),o=oe(e,"semantic"),a=e.semanticTemporalPresentation;return Y.resolveTemporalBucketPresentation({metadata:r,...n?{cardFormat:n}:{},...o&&a?{semanticFormat:{granularity:a.granularity,format:o}}:{},locale:t.locale,styles:{dateStyle:t.dateStyle,dateTime:t.dateTime}})}function je(e,r=Y.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,t="en-US"){var i;const n=oe(e,"card"),o=((i=e.semanticTemporalPresentation)==null?void 0:i.granularity)===e.granularity?oe(e,"semantic"):void 0,a=n&&n.presentation.mode!=="auto"?n:o&&o.presentation.mode!=="auto"?o:{presentation:{mode:"auto"}};return a.presentation.mode==="auto"?{type:"temporal_bucket",locale:t,presentation:{mode:"auto",styles:r}}:{type:"temporal_bucket",locale:t,presentation:a.presentation}}function Kt(e){const r=e.activation;if(!r)return{byColumnKey:new Map,byFieldId:new Map,byFieldRole:new Map};if(e.resultRowCount===0)return{byColumnKey:new Map,byFieldId:new Map,byFieldRole:new Map};const t=new Map((e.columns||[]).map(c=>[c.key,c])),n=new Map,o=new Map,a=new Map,i=r.fields.reduce((c,s)=>(c.set(s.id,(c.get(s.id)||0)+1),c),new Map),l=(c,s)=>{a.set(Ve(c.id,c.role),s),i.get(c.id)===1&&o.set(c.id,s)},m=(c,s,u)=>{if(s.granularity!==c.granularity)throw new V("invalid_temporal_bucket_metadata",`Result identity "${u}" declares ${s.granularity} buckets for active ${c.granularity} field "${c.id}".`,{cardId:e.card.id,fieldId:c.id,columnKey:u});const p=e.executionSnapshot&&e.dashboardId?A.findResolvedTemporalBucketFormat({snapshot:e.executionSnapshot,scope:{dashboardId:e.dashboardId,cardId:e.card.id,...e.attachmentIndex!==void 0?{attachmentIndex:e.attachmentIndex}:{}},target:{kind:"field",fieldId:c.id,role:c.role}}):void 0;if(e.executionSnapshot&&!p)throw new Dt({dashboardId:e.dashboardId,cardId:e.card.id,fieldId:c.id});return{columnKey:u,fieldId:c.id,role:c.role,metadata:s,resolved:p?Y.resolveTemporalBucketPresentation({metadata:s,cardFormat:p,locale:p.locale,...p.presentation.mode==="auto"?{styles:p.presentation.styles}:{}}):zt(c,s,e.valueFormatPreferences??be.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES)}};for(const c of r.fields){const s=N.resolveQueryColumnKeyMapEntry(e.columnKeyMap,c.id,c.role);if(!s){if(e.columns===void 0&&e.columnKeyMap===void 0&&(e.resultRowCount===void 0||e.resultRowCount===0))continue;throw new V("missing_temporal_column_binding",`Activated temporal field "${c.id}" has no authoritative result-column binding.`,{cardId:e.card.id,fieldId:c.id,columnKey:c.name})}if(s.role==="pivotby"){const h=(e.columns||[]).filter($=>$.pivotIdentity!==void 0),b=h.flatMap($=>{var _;return(((_=$.pivotIdentity)==null?void 0:_.members)||[]).filter(M=>M.fieldId===c.id).map(M=>({column:$,member:M}))});if(b.length===0){if(h.length===0&&(e.card.type!=="pivotTable"||e.resultRowCount===0))continue;throw new me({cardId:e.card.id,fieldId:c.id,columnKey:s.outputKey||s.rawKey})}const C=b[0];if(!C.member.temporalBucket)throw new me({cardId:e.card.id,fieldId:c.id,columnKey:C.column.key});const g=Fe.validateTemporalBucketMetadata(C.member.temporalBucket);if(!g.ok||!g.value)throw new V("invalid_temporal_bucket_metadata",g.ok?`Pivot result column "${C.column.key}" has no validated temporal bucket metadata.`:g.error.message,{cardId:e.card.id,fieldId:c.id,columnKey:C.column.key});const w=m(c,g.value,C.column.key);for(const{column:$,member:_}of b)if(!_.temporalBucket||JSON.stringify(_.temporalBucket)!==JSON.stringify(C.member.temporalBucket))throw new V("invalid_temporal_bucket_metadata",`Pivot result column "${$.key}" has contradictory bucket metadata for field "${c.id}".`,{cardId:e.card.id,fieldId:c.id,columnKey:$.key});l(c,w);continue}const u=s.outputKey||s.rawKey,p=t.get(u);if(!(p!=null&&p.temporalBucket))throw new me({cardId:e.card.id,fieldId:c.id,columnKey:u});const d=Fe.validateTemporalBucketResultColumn(p,{metadataRequired:!0});if(!d.ok||!d.value)throw new V("invalid_temporal_bucket_metadata",d.ok?`Result column "${u}" has no validated temporal bucket metadata.`:d.error.message,{cardId:e.card.id,fieldId:c.id,columnKey:u});const v=m(c,d.value,u);n.set(u,v),l(c,v)}return{byColumnKey:n,byFieldId:o,byFieldRole:a}}function Nt(e){var t,n;const r=e.role?Ue({presentation:e.presentation,fieldId:e.fieldId,role:e.role}):(n=(t=e.presentation)==null?void 0:t.byFieldId)==null?void 0:n.get(e.fieldId);return r?Ce({value:e.value,presentation:r}):e.value===null||e.value===void 0?"":String(e.value)}function Ce(e){if(e.value===null||e.value===void 0)return"(Blank)";if(typeof e.value!="string")throw new V("invalid_temporal_bucket_value",`Canonical temporal column "${e.presentation.columnKey}" must contain a string or null.`,{fieldId:e.presentation.fieldId,columnKey:e.presentation.columnKey});try{return Y.formatTemporalBucket({value:e.value,metadata:e.presentation.metadata,format:e.presentation.resolved.format})}catch(r){throw r instanceof Y.TemporalBucketContractError?new V(r.code,r.message,{fieldId:e.presentation.fieldId,columnKey:e.presentation.columnKey}):r}}class k extends Error{constructor(r,t,n){super(`${r}: ${t}`),this.code=r,this.context=n,Object.setPrototypeOf(this,k.prototype),this.name="RawTemporalPresentationBoundaryError"}}function Ge(){return{type:"raw_temporal",presentation:{mode:"auto"}}}function qt(e){if(e.locale||e.relative||e.timezone&&e.timezone!=="auto"||e.sourceTimezone&&e.sourceTimezone!=="auto"||e.prefix||e.suffix)throw new k("invalid_raw_temporal_format","Activated raw temporal presentation contains unsupported locale, relative-time, timezone, prefix, or suffix settings.")}function He(e){const r=e.format;if((r==null?void 0:r.type)==="date"&&(qt(r),r.pattern))return{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:r.pattern}};if(r)throw new k("invalid_raw_temporal_format",`Raw temporal detail field "${e.id}" has an incompatible authored format.`,{fieldId:e.id});if(e.dateFormat==="custom"){if(!e.customFormat)throw new k("invalid_raw_temporal_format",`Raw temporal detail field "${e.id}" selects a custom pattern but has no customFormat.`,{fieldId:e.id});return{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:e.customFormat}}}return e.dateFormat?{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:e.dateFormat}}:Ge()}function ce(e){var i;if(e!=null&&e.useRelativeTime)return;if(!e)return Ge();if(e.useCustomFormat&&!((i=e.customFormat)!=null&&i.trim()))throw new k("invalid_raw_temporal_format","Declared SQL temporal presentation selects a custom pattern but has no customFormat.",{reason:"missing_declared_sql_custom_date_format"});const r=e.useCustomFormat&&e.customFormat?e.customFormat:e.format,t=e.timezone,n=e.sourceTimezone,o=t&&t!=="auto"?{timezone:t}:void 0,a={sourceTimezone:n&&n!=="auto"?n:"UTC"};return r?{type:"raw_temporal",...o,...a,presentation:{mode:"pattern",dialect:"date_fns",pattern:r}}:{type:"raw_temporal",...o,...a,presentation:{mode:"auto"}}}function Lt(e){return e==="instant"?"yyyy-MM-dd'T'HH:mm:ssXXX":e==="wall_datetime"?"yyyy-MM-dd'T'HH:mm:ss":"yyyy-MM-dd"}function Vt(e){B.validateRawTemporalPattern({dialect:"date_fns",pattern:e.pattern,valueKind:e.valueKind})}function Ut(e){const r=ce(e.settings);if(!r)throw new k("invalid_raw_temporal_format","Relative-time SQL presentation does not have an absolute date preview.");const t=e.valueKind??(r.presentation.mode==="pattern"?"instant":"date"),n={kind:"raw_temporal",valueKind:t},o=e.value??(t==="date"?"2023-05-15":t==="wall_datetime"?"2023-05-15T14:30:45":"2023-05-15T14:30:45Z"),a=B.prepareRawTemporalFormatter({metadata:n,format:B.resolveRawTemporalFormat({format:r,preferences:e.preferences,calendar:{tz:e.calendarTimezone}})})(o);if(!a.ok)throw new k("invalid_raw_temporal_format",a.diagnostic.message);return a.text}function jt(e){try{return{ok:!0,text:Ut(e)}}catch(r){return{ok:!1,message:r instanceof Error?r.message:"Invalid SQL temporal presentation."}}}function Te(e){var t;const r=e.effectiveCardConfig??e.card.config;return X(e.card,r)==="freeform"&&!!((t=e.card.sql)!=null&&t.trim())&&!G(e.card.python||"").trim()}function Qe(e){var r,t;return e.type!=="table"&&e.type!=="detailTable"||!Te({card:e})?!1:Object.values(((t=(r=e.preferences)==null?void 0:r.tablePrefs)==null?void 0:t.columnSettingsMap)||{}).some(n=>{var o,a,i;return n.type==="date"&&((o=n.dateFormat)==null?void 0:o.useRelativeTime)!==!0&&((a=n.dateFormat)==null?void 0:a.useCustomFormat)===!0&&!((i=n.dateFormat.customFormat)!=null&&i.trim())})}function Gt(e){var t,n,o;if(!Qe(e))return e;const r=((n=(t=e.preferences)==null?void 0:t.tablePrefs)==null?void 0:n.columnSettingsMap)||{};return{...e,preferences:{...e.preferences,tablePrefs:{...(o=e.preferences)==null?void 0:o.tablePrefs,columnSettingsMap:Object.fromEntries(Object.entries(r).map(([a,i])=>{var l,m,c;return[a,i.type==="date"&&((l=i.dateFormat)==null?void 0:l.useRelativeTime)!==!0&&((m=i.dateFormat)==null?void 0:m.useCustomFormat)===!0&&!((c=i.dateFormat.customFormat)!=null&&c.trim())?{...i,dateFormat:{...i.dateFormat,format:"",useCustomFormat:!1,customFormat:""}}:i]}))}}}}function Ht(){return{activatedColumnKeys:new Set,byColumnKey:new Map,byFieldId:new Map}}function he(e,r){return e===void 0?{kind:"invalid",error:r}:{kind:"invalid",error:e instanceof k?e:e instanceof B.RawTemporalFormatContractError?new k(e.code,e.message,r.context):new k(r.code,e instanceof Error?e.message:r.message,r.context)}}function We(e){var o;if(e.cardType!=="detailTable"||e.resultOwner!=="config")return{kind:"inactive"};if(!e.result)return{kind:"loading"};const{records:r,columns:t,columnKeyMap:n}=e.result;if(!Array.isArray(r)||!Array.isArray(t)||!n)return he(void 0,new k("missing_raw_temporal_result_contract","Activated raw temporal detail results require records, columns, and columnKeyMap atomically."));try{const a=t.filter(s=>s.rawTemporal);if(a.length===0)return{kind:"inactive"};const i=new Map((((o=e.effectiveCardConfig)==null?void 0:o.detailColumns)||[]).map(s=>[s.id,s])),l=new Map,m=new Map;for(const s of a){const u=Array.from(i).flatMap(([w,$])=>{const _=N.resolveQueryColumnKeyMapEntry(n,w,"detail");return _&&_.role==="detail"&&(_.outputKey??_.rawKey)===s.key?[{field:$,binding:_}]:[]}),p=u.length===1?u[0]:null;if(!p||typeof p.binding.rawKey!="string"||p.binding.rawKey.trim().length===0||p.binding.outputKey!==void 0&&(typeof p.binding.outputKey!="string"||p.binding.outputKey.trim().length===0))throw new k("missing_raw_temporal_column_binding",`Raw temporal result column "${s.key}" does not have one valid exact detail result binding.`,{columnKey:s.key});const{field:d,binding:v}=p,h=v.outputKey??v.rawKey,b=Me.validateRawTemporalResultColumn(s,{metadataRequired:!0});if(!b)throw new k("invalid_raw_temporal_metadata",`Raw temporal result column "${h}" has no metadata.`,{fieldId:d.id,columnKey:h});const C=B.resolveRawTemporalFormat({format:He(d),preferences:e.preferences,calendar:e.calendar}),g={fieldId:d.id,columnKey:h,metadata:b,format:C,formatValue:B.prepareRawTemporalFormatter({metadata:b,format:C})};for(let w=0;w<r.length;w+=1)if(!Object.prototype.hasOwnProperty.call(r[w],h)||r[w][h]===void 0)throw new k("missing_raw_temporal_result_contract",`Raw temporal result row ${w} is missing column "${h}".`,{fieldId:d.id,columnKey:h});l.set(h,g),m.set(d.id,g)}const c={activatedColumnKeys:new Set(l.keys()),byColumnKey:l,byFieldId:m};return r.length===0?{kind:"loaded_empty",presentation:c}:{kind:"loaded_valid",presentation:c}}catch(a){return he(a,new k("invalid_raw_temporal_metadata","Activated raw temporal result metadata is invalid."))}}function Ye(e){var n,o,a;const r=e.effectiveCardConfig??e.card.config,t=X(e.card,r);if(e.card.type==="detailTable"&&t==="config"){const i=!!((n=e.columns)!=null&&n.some(l=>l.rawTemporal));return i&&e.records!==void 0&&!e.columnKeyMap?{kind:"invalid",error:new k("missing_raw_temporal_result_contract","Activated raw temporal detail results require records, columns, and columnKeyMap atomically.")}:e.records!==void 0&&!i?{kind:"inactive"}:Be(We({cardType:e.card.type,resultOwner:t,effectiveCardConfig:r,result:e.records===void 0||!e.columns||!e.columnKeyMap?void 0:{records:e.records,columns:e.columns,columnKeyMap:e.columnKeyMap},preferences:e.preferences,calendar:e.calendar}),e)}return Be(Wt({resultOwner:t,sql:e.card.sql,normalizedPython:G(e.card.python||""),records:e.records,columns:e.columns,columnSettings:(a=(o=e.card.preferences)==null?void 0:o.tablePrefs)==null?void 0:a.columnSettingsMap,preferences:e.preferences,calendar:e.calendar}),e)}function Qt(e){var n,o,a;const r=e.effectiveCardConfig??e.card.config,t=X(e.card,r);return e.card.type==="detailTable"&&t==="config"?!!((n=e.columns)!=null&&n.some(i=>i.rawTemporal)):Te(e)?Object.values(((a=(o=e.card.preferences)==null?void 0:o.tablePrefs)==null?void 0:a.columnSettingsMap)||{}).some(i=>{var l;return i.type==="date"&&!((l=i.dateFormat)!=null&&l.useRelativeTime)}):!1}function Be(e,r){if(!r.executionSnapshot||e.kind==="inactive"||e.kind==="loading"||e.kind==="invalid")return e;if(!r.dashboardId)return{kind:"invalid",error:new k("missing_raw_temporal_result_contract","A dashboard ID is required to resolve the captured raw temporal presentation.")};const t=new Map,n=new Map;for(const o of e.presentation.activatedColumnKeys){const a=A.findResolvedRawTemporalFormat({snapshot:r.executionSnapshot,scope:{dashboardId:r.dashboardId,cardId:r.card.id,...r.attachmentIndex!==void 0?{attachmentIndex:r.attachmentIndex}:{}},target:{kind:"column",columnKey:o}});if(!a)return{kind:"invalid",error:new A.MissingResolvedRawTemporalFormatError(o)};const i=e.presentation.byColumnKey.get(o);if(!i)continue;const l={...i,format:a,formatValue:B.prepareRawTemporalFormatter({metadata:i.metadata,format:a})};t.set(i.columnKey,l),i.fieldId&&n.set(i.fieldId,l)}return{...e,presentation:{activatedColumnKeys:e.presentation.activatedColumnKeys,byColumnKey:t,byFieldId:n}}}function Wt(e){var t,n;if(e.resultOwner!=="freeform"||!((t=e.sql)!=null&&t.trim())||(n=e.normalizedPython)!=null&&n.trim())return{kind:"inactive"};const r=Object.entries(e.columnSettings||{}).filter(([,o])=>{var a;return o.type==="date"&&!((a=o.dateFormat)!=null&&a.useRelativeTime)});if(r.length===0)return{kind:"inactive"};if(!e.records)return{kind:"loading"};try{const o=new Map,a=new Set(r.map(([c])=>c)),i=new Map,l=[...e.columns||[]];for(const[c,s]of r){const u=ce(s.dateFormat);if(!u)continue;const p=B.classifyDeclaredSqlTemporalColumn({columnKey:c,values:e.records.map(b=>{if(!Object.prototype.hasOwnProperty.call(b,c))throw new k("missing_raw_temporal_result_contract",`Declared SQL temporal column "${c}" is absent from a physical result row.`,{columnKey:c});const C=b[c];return C===null||typeof C=="string"?C:String(C)})});if(i.set(c,p),p.status!=="classified")continue;let d=l.findIndex(b=>b.key===c);if(e.columns&&d<0)throw new k("missing_raw_temporal_result_contract",`Classified SQL temporal column "${c}" is absent from result columns.`,{columnKey:c});d<0&&(d=l.length,l.push({key:c,name:c,label:c,role:"dimension",dataType:"string"}));const v={...l[d],role:"date",dataType:p.metadata.valueKind==="date"?"date":"datetime",rawTemporal:p.metadata};Me.validateRawTemporalResultColumn(v,{metadataRequired:!0}),l[d]=v;const h=B.resolveRawTemporalFormat({format:u,preferences:e.preferences,calendar:e.calendar});o.set(c,{columnKey:c,metadata:p.metadata,format:h,formatValue:B.prepareRawTemporalFormatter({metadata:p.metadata,format:h})})}const m={...Ht(),activatedColumnKeys:a,byColumnKey:o};return e.records.length===0?{kind:"loaded_empty",presentation:m,adaptedColumns:l,sqlClassifications:i}:{kind:"loaded_valid",presentation:m,adaptedColumns:l,sqlClassifications:i}}catch(o){return he(o,new k("invalid_raw_temporal_format","Declared SQL raw temporal presentation is invalid."))}}function Yt(e){if(e.value!==null&&typeof e.value!="string")return{value:e.value,label:String(e.value),result:{ok:!1,text:String(e.value),diagnostic:{code:"invalid_raw_temporal_value",message:`Raw temporal column "${e.presentation.columnKey}" must contain a string or null.`}}};const r=e.presentation.formatValue(e.value);return{value:e.value,label:r.text,result:r}}function Jt(e){if(!e.result||typeof e.result!="object")return!1;const r=e.result;if(e.expectedResultOwner!==void 0&&r.resultOwner!==e.expectedResultOwner||!Array.isArray(r.records))return!1;const t=Ye({card:e.card,effectiveCardConfig:e.effectiveCardConfig,records:r.records,columns:r.columns,columnKeyMap:r.columnKeyMap,preferences:be.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES,calendar:{tz:"UTC"}});return t.kind==="inactive"||t.kind==="loaded_empty"||t.kind==="loaded_valid"}function De(e){return!e||typeof e!="object"?!1:Array.isArray(e.cards)}function Je(e){if(!e)return null;if(typeof e=="string")try{const r=JSON.parse(e);return De(r)?r:null}catch{return null}return De(e)?e:null}function we(e){var r;return(r=e==null?void 0:e.cards)!=null&&r.length?e.activeCardId&&e.cards.find(t=>t.id===e.activeCardId)||e.cards[0]:null}function Zt(e){var t;const r=(e==null?void 0:e.frameObject)??((t=e==null?void 0:e.visual)==null?void 0:t.frameObject);return we(Je(r))}function le(e){if(!(e!=null&&e.expectedType))return"table";const r=Array.isArray(e.expectedType)?e.expectedType[0]:e.expectedType;return er(r)?r:"table"}const Xt=["bar","horizontalBar","line","area","stackedArea","combo","pie","doughnut","radar","polarArea","bubble","scatter","stackedBar","stackedLine","table","pivotTable","aggregateTable","detailTable","tableBuilder","kpi","pyramid","tornado","range","text","map","funnel","bullet","heatmap","treemap","custom"];function er(e){return Xt.includes(e)}function J(e){const r=e.position;if(typeof r=="number")return r;if(typeof r=="string"){const t=r.match(/\d+/);if(t){const n=Number(t[0]);if(!Number.isNaN(n))return n}}return Number.POSITIVE_INFINITY}function W(e){if(typeof e=="number")return{kind:"number",start:e,end:e};if(typeof e=="string"){const r=e.match(/^(\d+)$/);if(r){const o=Number(r[1]);return{kind:"number",start:o,end:o}}const t=e.match(/^(\d+)-(\d+)$/);if(t){const o=Number(t[1]),a=Number(t[2]);return{kind:"range",start:o,end:a}}const n=e.match(/^(\d+)\+$/);if(n)return{kind:"dynamic",start:Number(n[1]),end:Number.POSITIVE_INFINITY}}return null}function Ze(e){return!e||e.length===0?void 0:[...e].sort((t,n)=>J(t)-J(n))[0]}function Ee(e,r){if(!e||e.length===0)return;const t=[],n=[],o=[];e.forEach(s=>{const u=W(s.position);u&&(u.kind==="number"?t.push(s):u.kind==="range"?n.push(s):u.kind==="dynamic"&&o.push(s))});const a=t.find(s=>{const u=W(s.position);return(u==null?void 0:u.kind)==="number"&&u.start===r});if(a)return a;const l=n.sort((s,u)=>J(s)-J(u)).find(s=>{const u=W(s.position);return(u==null?void 0:u.kind)==="range"&&r>=u.start&&r<=u.end});if(l)return l;const c=o.map(s=>({slot:s,parsed:W(s.position)})).filter(s=>{var u;return((u=s.parsed)==null?void 0:u.kind)==="dynamic"}).sort((s,u)=>{var p,d;return(((p=s.parsed)==null?void 0:p.start)??0)-(((d=u.parsed)==null?void 0:d.start)??0)}).filter(s=>{var u;return r>=(((u=s.parsed)==null?void 0:u.start)??0)}).sort((s,u)=>{var p,d;return(((p=u.parsed)==null?void 0:p.start)??0)-(((d=s.parsed)==null?void 0:d.start)??0)})[0];return c==null?void 0:c.slot}function tr(e,r){const t=Ee(e,r);if(t)return le(t)}function Xe(e,r){var n;const t=(n=e==null?void 0:e.customCardPreferences)==null?void 0:n.slotIndex;return typeof t=="number"?t:r}function ge(e,r){var t;if(!((t=e==null?void 0:e.customCardPreferences)!=null&&t.url))return!1;if(e.type==="custom"||e.customCardPreferences.visualType==="multiple"||e.customCardPreferences.dataInputCardIds||(e.customCardPreferences.minInputs||0)>1||(e.customCardPreferences.maxInputs||0)>1)return!0;if(r&&r.length>1){const n=r.filter(o=>{var a;return typeof((a=o.customCardPreferences)==null?void 0:a.slotIndex)=="number"});if(n.length>1&&n.some(o=>o.id!==e.id))return!0}return!1}function et(e){const r=[];let t=-1;e.forEach((n,o)=>{const a=Xe(n,o);a>t&&(t=a),r[a]=n??null});for(let n=0;n<=t;n+=1)n in r||(r[n]=null);return r}function rr(e){return e.map((r,t)=>!r.customCardPreferences||r.customCardPreferences.slotIndex===t?r:{...r,customCardPreferences:{...r.customCardPreferences,slotIndex:t}})}function nr(e){const r=Ze(e);if(r)return le(r)}function or(e,r,t){if(!e)return;const n=tr(t,r);return e.type==="custom"&&n?n:e.type}function ar(e,r,t){var v;const n={dataSource:t.dataSource,connectionId:t.connectionId,lastSelectedDatabase:t.lastSelectedDatabase,lastSelectedSchema:t.lastSelectedSchema,lastSelectedTable:t.lastSelectedTable,lastSelectedDatamodelId:t.lastSelectedDatamodelId,datamodelId:t.datamodelId},o={type:"component",visualType:"multiple",url:r.url,componentName:r.name,icon:r.icon,pluginChartType:r.chartType,minInputs:r.minInputs,maxInputs:r.maxInputs},a=r.minInputs||1,l=e.map(h=>({slot:h,parsed:W(h.position)})).filter(h=>h.parsed!==null).reduce((h,b)=>{const C=b.parsed.end;return Number.isFinite(C)?Math.max(h,C):h},-1),m=Math.max(a,l+1),c=Ze(e),s=c?J(c):0;let u=!1;const p=[];for(let h=0;h<m;h+=1){const b=Ee(e,h),C=le(b),g=!u&&h===s,w=h,$={...n,id:P.v4(),title:(g?c==null?void 0:c.label:b==null?void 0:b.label)||`Tab ${h+1}`,tabTitle:(g?c==null?void 0:c.label:b==null?void 0:b.label)||`Tab ${h+1}`,description:(g?c==null?void 0:c.description:b==null?void 0:b.description)||"",type:C,sql:"",preferences:{onClickFilter:[{columnIndex:0,expression:""}]},...g&&{customCardPreferences:{...o,slotIndex:w}},...!g&&{customCardPreferences:{slotIndex:w}}};g&&(u=!0),p.push($)}if(!u&&p.length>0){const h=((v=p[0].customCardPreferences)==null?void 0:v.slotIndex)??0;p[0]={...p[0],type:p[0].type,customCardPreferences:{...o,slotIndex:h}}}const d=p.findIndex(h=>{var b;return!!((b=h.customCardPreferences)!=null&&b.url)});if(d>0){const[h]=p.splice(d,1);p.unshift(h)}return p}function tt({frame:e,configCard:r,isMultiInputVisual:t}){var o;if(!t||!r)return e.cards;const n=(o=r.customCardPreferences)==null?void 0:o.dataInputCardIds;return n?Object.keys(n).sort((a,i)=>Number(a)-Number(i)).map(a=>{var l;const i=(l=n[a])==null?void 0:l.cardId;return e.cards.find(m=>m.id===i)||null}):e.cards}function rt(e,r){return r&&ge(r,e.cards)?r:e.cards.find(t=>ge(t,e.cards))||null}function nt(e,r){var o,a;if(!e)return null;const t=r==null?void 0:r.visualType;if(t)return t;if(r!=null&&r.slots&&r.slots.length>0||((r==null?void 0:r.minInputs)||0)>1||((r==null?void 0:r.maxInputs)||0)>1||((r==null?void 0:r.dataInputs)||[]).length>1)return"multiple";const n=(o=e.customCardPreferences)==null?void 0:o.visualType;return n||((a=e.customCardPreferences)!=null&&a.dataInputCardIds?"multiple":null)}function ir(e){return e.visualType==="multiple"||e.slots&&e.slots.length>0||(e.minInputs||0)>1||(e.maxInputs||0)>1||(e.dataInputs||[]).length>1?"multiple":"single"}function cr(e){return Array.isArray(e)?{records:e}:e}class te extends Error{constructor(t){const n=t.cardId?`card "${t.cardId}"`:t.sheetId?`sheet "${t.sheetId}"`:`dashboard "${t.dashboardId}"`;super(`Unable to resolve ${n} while capturing report presentation. Refresh the authoring page and select the attachment again.`);R(this,"code","temporal_snapshot_target_not_found");R(this,"selection");this.name="TemporalSnapshotSelectionError",this.selection=t}}function lr(e,r){var o;const t=[],n=new Map;for(const a of r){if(a.dashboardId!==e.id)throw new te(a);const i=(e.sheets||[]).filter(m=>!a.sheetId||a.sheetId===m.id);if(a.sheetId&&i.length===0)throw new te(a);let l=!a.cardId;for(const m of i){const c=(((o=m.document)==null?void 0:o.sections)||[]).flatMap(p=>Z.getDocumentSectionCards(p)),s=(m.frames||[]).flatMap(p=>dr(p,a.cardId));s.length>0&&(l=!0);const u=[...s,...(m.cards||[]).filter(p=>!a.cardId||a.cardId===p.id),...c.filter(p=>!a.cardId||a.cardId===p.id)];for(const p of u){l=!0;const d=n.get(a.attachmentIndex)??new Set;d.has(p.id)||(d.add(p.id),n.set(a.attachmentIndex,d),t.push({card:p,...a.attachmentIndex!==void 0?{attachmentIndex:a.attachmentIndex}:{}}))}}if(!l)throw new te(a)}return t}function dr(e,r){var i;const t=r?(i=e.cards)==null?void 0:i.find(l=>l.id===r):we(e);if(!t)return[];const n=rt(e,t),o=(e.cards||[]).filter(l=>{var m;return typeof((m=l.customCardPreferences)==null?void 0:m.slotIndex)=="number"}).length>1,a=n!=null&&(nt(n)==="multiple"||o);return!n||!a?[t]:et(tt({frame:e,configCard:n,isMultiInputVisual:!0})).filter(l=>l!==null)}function sr(e){return lr(e.dashboard,e.selections).flatMap(({card:r,attachmentIndex:t})=>{var s,u,p,d;const n=((s=e.resolveCardConfig)==null?void 0:s.call(e,r))??r.config,o=Ne({card:r,cardConfig:n}),a={dashboardId:e.dashboard.id,cardId:r.id,...t!==void 0?{attachmentIndex:t}:{}},i=o?o.fields.map(v=>({scope:a,target:{kind:"field",fieldId:v.id,role:v.role},format:je(v,{dateStyle:e.valueFormatPreferences.dateStyle,dateTime:{...e.valueFormatPreferences.dateTime}},e.valueFormatPreferences.locale)})):[],l=[],m=X(r,n),c=G(r.python||"");if(r.type==="detailTable"&&m==="config"){const v=(n==null?void 0:n.detailColumns)||[],h=[...((n==null?void 0:n.groupByColumns)||[]).map(g=>({field:g,role:"groupby"})),...((n==null?void 0:n.metricColumns)||[]).map(g=>({field:g,role:"metric"})),...((n==null?void 0:n.pivotByColumns)||[]).map(g=>({field:g,role:"pivotby"})),...v.map(g=>({field:g,role:"detail"}))],b=new Map,C=new Set(h.map(({field:g,role:w})=>se.resolveCanonicalResultRawKey(g,w)));for(const{field:g}of h){const w=g.label;w&&b.set(w,(b.get(w)||0)+1)}for(const g of v){const w=K.normalizeAnalyticsCatalogDataType(g.dataType);if(w!=="date"&&w!=="datetime")continue;const $=se.resolveCanonicalDetailResultRawKey(g),_=g.label,M=se.resolveCanonicalResultOutputKey({label:_,labelCount:_&&b.get(_)||0,rawKey:$,rawKeys:C});if(!M)throw new te(a);l.push({scope:a,target:{kind:"column",columnKey:M},format:B.resolveRawTemporalFormat({format:He(g),preferences:e.valueFormatPreferences,calendar:e.calendar})})}}else if(m==="freeform"&&((u=r.sql)!=null&&u.trim())&&!c.trim())for(const[v,h]of Object.entries(((d=(p=r.preferences)==null?void 0:p.tablePrefs)==null?void 0:d.columnSettingsMap)||{})){if(h.type!=="date")continue;const b=ce(h.dateFormat);b&&l.push({scope:a,target:{kind:"column",columnKey:v},format:B.resolveRawTemporalFormat({format:b,preferences:e.valueFormatPreferences,calendar:e.calendar})})}return[...i,...l]})}const mr=new Set(["table","aggregateTable","pivotTable","detailTable"]),ur=new Set(["bar","horizontalBar","line","area","stackedArea","combo","pie","doughnut","radar","polarArea","bubble","scatter","stackedBar","stackedLine","table","pivotTable","aggregateTable","matrixTable","detailTable","kpi","pyramid","tornado","range","map","funnel","bullet","heatmap","treemap","custom"]);function fr(e){var o,a,i;const r=ur.has(e.type)&&(e.type!=="custom"||!!((o=e.customCardPreferences)!=null&&o.url));let t=!1;try{t=!!_t.readMatrixCardConfig(e)}catch{return{formats:[],defaultFormat:null}}return e.type==="text"||!r||!t&&P.isCardUnconfigured(e)?{formats:[],defaultFormat:null}:{formats:ot({cardType:e.type,allowDownload:(a=e.preferences)==null?void 0:a.allowDownload}),defaultFormat:at({cardType:e.type,allowDownload:(i=e.preferences)==null?void 0:i.allowDownload})}}function ot(e){return e.allowDownload===!1?["pdf"]:["pdf","csv"]}function at(e){return mr.has(e.cardType)&&e.allowDownload!==!1?"csv":"pdf"}function pr(e){const{config:r}=e,t=kt.resolveMatrixDefinition({spec:r.spec,presentation:r.presentation,defaults:r.defaultView,session:e.purpose==="manual"?e.session:void 0});return K.matrixExportRequestSchema.parse({spec:t.spec,presentation:t.presentation,...e.content==="flat"?{mode:"flat",format:"csv"}:{mode:"layout",format:e.format,expansion:e.content==="all"?{kind:"all"}:{kind:"current",rows:t.view.rows,columns:t.view.columns}}})}const it=T.z.object({connection_id:T.z.string().min(1),cardType:T.z.literal("matrixTable"),resultOwner:T.z.literal("config"),sql:T.z.literal("").optional(),python:T.z.literal("").optional(),tableStructure:T.z.never().optional(),cardDataSource:T.z.object({connectionId:T.z.string().min(1),connectionType:T.z.string().min(1),mode:T.z.enum(["database","semanticDomain"]),selectedEntities:T.z.array(T.z.unknown()),semanticDomainId:T.z.string().optional()}).passthrough(),active_filters:T.z.array(T.z.unknown()).default([])}).passthrough(),yr=it.extend({dashboardId:T.z.string().min(1),cardId:T.z.string().min(1),formatOptions:T.z.object({matrix:K.matrixExportRequestSchema,acquisition:T.z.literal("continuation").optional(),presentationExecutionSnapshot:T.z.unknown()}).passthrough().superRefine((e,r)=>{e.matrix.format==="csv"!=(e.acquisition==="continuation")&&r.addIssue({code:T.z.ZodIssueCode.custom,path:["acquisition"],message:"CSV requires continuation acquisition; PDF must not specify acquisition."})})});function hr(e){return{...e.controls,type:"card",dashboardId:e.dashboardId,cardId:e.cardId,title:e.title,cardType:"matrixTable",resultOwner:"config",sql:"",python:"",connection_id:e.dataSource.connectionId,cardDataSource:{...e.dataSource,mode:e.matrix.spec.source.kind==="semantic"?"semanticDomain":"database",semanticDomainId:e.matrix.spec.source.kind==="semantic"?e.matrix.spec.source.domainId:void 0},active_filters:e.activeFilters,formatOptions:{...e.matrix.format==="csv"?{acquisition:"continuation"}:{},matrix:e.matrix,delimiter:e.delimiter,includeHeaders:e.includeHeaders,timezone:e.reportContext.calendar.tz,presentationExecutionSnapshot:A.createPresentationExecutionSnapshot({reportContext:e.reportContext,resolvedFormats:[]})}}}const ue=T.z.number().int().nonnegative(),gr=T.z.discriminatedUnion("status",[T.z.object({status:T.z.literal("ok"),request:K.matrixExportRequestSchema,layout:Re.matrixExportLayoutSchema,rows:T.z.array(Re.matrixExportRowSchema).readonly(),usage:T.z.object({rows:ue,cells:ue,bytes:ue}).strict()}).strict(),T.z.object({status:T.z.literal("failed"),failure:T.z.object({code:T.z.enum(["invalid_request","unsupported_capability","stale_cursor","forbidden","budget_exceeded","source_truncated","execution_failed","cancelled"]),limit:T.z.enum(["rows","bytes"]).optional(),message:T.z.string().min(1),retryable:T.z.boolean()}).strict()}).strict()]);function vr(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function O(e,r,t){return vr(e)?e:(t.push({field:r,message:"Expected an object."}),{})}function z(e,r,t,n){const o=new Set(t);Object.keys(e).forEach(a=>{o.has(a)||n.push({field:`${r}.${a}`,message:"Unexpected property."})})}function U(e,r,t,n,o={}){if(e==null)return;if(typeof e!="string"){n.push({field:r,message:"Expected a string."});return}const a=o.trim===!1?e:e.trim();if(!o.allowEmpty&&a.length===0){n.push({field:r,message:"Expected a non-empty string."});return}if(a.length>t){n.push({field:r,message:`Expected ${t} characters or fewer.`});return}return a}function xe(e,r,t){const n=U(e,r,2e3,t);if(n)try{return new URL(n),n}catch{t.push({field:r,message:"Expected an absolute URL."});return}}function Pe(e,r,t){const n=O(e,r,t);z(n,r,["tokens","components"],t);const o={};if(n.tokens!==void 0){const a=O(n.tokens,`${r}.tokens`,t);z(a,`${r}.tokens`,["color","typography"],t);const i={};if(a.color!==void 0){const l=O(a.color,`${r}.tokens.color`,t),m=["background","foreground","muted","mutedForeground","border","primary","primaryForeground","positive","negative","warning","info"];z(l,`${r}.tokens.color`,m,t);const c={};m.forEach(s=>{const u=U(l[s],`${r}.tokens.color.${s}`,120,t);u!==void 0&&(c[s]=u)}),i.color=c}if(a.typography!==void 0){const l=O(a.typography,`${r}.tokens.typography`,t);z(l,`${r}.tokens.typography`,["fontFamily","monoFontFamily"],t);const m=U(l.fontFamily,`${r}.tokens.typography.fontFamily`,500,t,{allowEmpty:!0}),c=U(l.monoFontFamily,`${r}.tokens.typography.monoFontFamily`,500,t,{allowEmpty:!0});i.typography={...m!==void 0?{fontFamily:m}:{},...c!==void 0?{monoFontFamily:c}:{}}}o.tokens=i}if(n.components!==void 0){const a=O(n.components,`${r}.components`,t);if(z(a,`${r}.components`,["chart"],t),a.chart!==void 0){const i=O(a.chart,`${r}.components.chart`,t);z(i,`${r}.components.chart`,["palette"],t);let l;i.palette!==void 0&&(Array.isArray(i.palette)?i.palette.length>20?t.push({field:`${r}.components.chart.palette`,message:"Expected 20 colors or fewer."}):l=i.palette.map((m,c)=>U(m,`${r}.components.chart.palette.${c}`,120,t)).filter(m=>m!==void 0):t.push({field:`${r}.components.chart.palette`,message:"Expected an array."})),o.components={chart:l?{palette:l}:{}}}}return o}function br(e,r){const t="presentation.appearance",n=O(e,t,r);z(n,t,["version","schemes"],r);const o={};if(n.version!==void 0&&(typeof n.version!="number"||!Number.isFinite(n.version)?r.push({field:`${t}.version`,message:"Expected a number."}):o.version=n.version),n.schemes!==void 0){const a=O(n.schemes,`${t}.schemes`,r);z(a,`${t}.schemes`,["light","dark"],r),o.schemes={...a.light!==void 0?{light:Pe(a.light,`${t}.schemes.light`,r)}:{},...a.dark!==void 0?{dark:Pe(a.dark,`${t}.schemes.dark`,r)}:{}}}return o}function Ir(e,r){const t="presentation.brandOverrides",n=O(e,t,r);z(n,t,["brandName","logoUrl","link"],r);const o=U(n.brandName,`${t}.brandName`,200,r),a=xe(n.logoUrl,`${t}.logoUrl`,r),i=U(n.link,`${t}.link`,120,r);return{...o!==void 0?{brandName:o}:{},...a!==void 0?{logoUrl:a}:{},...i!==void 0?{link:i}:{}}}function Cr(e,r){const t="presentation.fragments",n=O(e,t,r),o=["preHeaderText","headerBannerHtml","signatureHtml","footerHtml","disclaimerHtml","unsubscribeUrl"];z(n,t,o,r);const a={};return o.forEach(i=>{const l=i==="unsubscribeUrl"?xe(n[i],`${t}.${i}`,r):U(n[i],`${t}.${i}`,i==="preHeaderText"?200:5e3,r,{trim:i==="preHeaderText"});l!==void 0&&(a[i]=l)}),a}function Tr(e){const r=[],t={};if(e.appearance!==void 0&&(t.appearance=br(e.appearance,r)),e.brandOverrides!==void 0&&(t.brandOverrides=Ir(e.brandOverrides,r)),e.fragments!==void 0&&(t.fragments=Cr(e.fragments,r)),e.viewUrl!==void 0){const n=xe(e.viewUrl,"presentation.viewUrl",r);n!==void 0&&(t.viewUrl=n)}return{value:t,issues:r}}const ct=["SUN","MON","TUE","WED","THU","FRI","SAT"],wr=new Map(ct.map((e,r)=>[e,r])),Er={cadence:"weekly",hour:9,minute:0,weekdays:[1]};function xr(e){if(typeof e!="string"||e.length===0||e!==e.trim()||/^(?:(?:UTC|GMT)[+-]|[+-]\d{2}:\d{2}$)/.test(e))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}function Sr(e){return Number.isInteger(e.minute)&&e.minute>=0&&e.minute<=59&&Number.isInteger(e.hour)&&e.hour>=0&&e.hour<=23}function lt(e){if(e.length===0)return null;const r=[...e].sort((t,n)=>t-n);return r.some((t,n)=>!Number.isInteger(t)||t<0||t>6||n>0&&t===r[n-1])?null:r}function $r(e){if(!Sr(e))throw new Error("Choose a valid schedule time.");const r=`${e.minute} ${e.hour}`;switch(e.cadence){case"daily":return`${r} * * *`;case"weekly":{const t=lt(e.weekdays);if(!t)throw new Error("Choose at least one weekday.");return`${r} * * ${t.map(n=>ct[n]).join(",")}`}case"twice_monthly":return`${r} 1,15 * *`;case"monthly":return`${r} 1 * *`}}function dt(e){if(typeof e!="string"||e.length===0)return{ok:!1,issue:"Choose a supported schedule."};if(e!==e.trim()||e.includes(" "))return{ok:!1,issue:"Choose a supported schedule."};const r=e.split(" ");if(r.length!==5)return{ok:!1,issue:"Choose a supported schedule."};const[t,n,o,a,i]=r;if(!/^(0|[1-9]\d?)$/.test(t)||!/^(0|[1-9]\d?)$/.test(n))return{ok:!1,issue:"Choose a supported schedule."};const l=Number(t),m=Number(n);if(l>59||m>23||a!=="*")return{ok:!1,issue:"Choose a supported schedule."};if(o==="*"&&i==="*")return{ok:!0,value:{cadence:"daily",hour:m,minute:l,weekdays:[]}};if(o==="*"&&i!=="*"){const s=i.split(",").map(d=>wr.get(d));if(s.some(d=>d===void 0))return{ok:!1,issue:"Choose a supported schedule."};const u=s,p=lt(u);return!p||p.some((d,v)=>d!==u[v])?{ok:!1,issue:"Choose a supported schedule."}:{ok:!0,value:{cadence:"weekly",hour:m,minute:l,weekdays:p}}}return o==="1,15"&&i==="*"?{ok:!0,value:{cadence:"twice_monthly",hour:m,minute:l,weekdays:[]}}:o==="1"&&i==="*"?{ok:!0,value:{cadence:"monthly",hour:m,minute:l,weekdays:[]}}:{ok:!1,issue:"Choose a supported schedule."}}function kr(e,r,t){return new Intl.DateTimeFormat(t,{hour:"numeric",minute:"2-digit",timeZone:"UTC"}).format(new Date(Date.UTC(2020,0,1,e,r)))}function _r(e,r){var t;if(e==="UTC")return"UTC";try{return((t=new Intl.DateTimeFormat(r,{timeZone:e,timeZoneName:"longGeneric"}).formatToParts(new Date(Date.UTC(2020,0,1))).find(o=>o.type==="timeZoneName"))==null?void 0:t.value)??e}catch{return null}}function Rr(e,r,t="en-US"){const n=dt(e);if(!n.ok)return null;try{const o=kr(n.value.hour,n.value.minute,t),a=_r(r,t);if(!a)return null;switch(n.value.cadence){case"daily":return`Daily at ${o} ${a}`;case"weekly":{const i=new Intl.DateTimeFormat(t,{weekday:"long",timeZone:"UTC"});return`${n.value.weekdays.map(m=>i.format(new Date(Date.UTC(2023,0,1+m)))).join(" and ")} at ${o} ${a}`}case"twice_monthly":return`On the 1st and 15th at ${o} ${a}`;case"monthly":return`Monthly on the 1st at ${o} ${a}`}}catch{return null}}function Fr(e){return e!=null&&e.role?e.type==="tenant"?e.role==="POWER_USER":["AUTHOR","ADMIN","SUPER_ADMIN"].includes(e.role):!1}function Ar(e){return e.canCreate?[...e.scheduledReportAvailable?["scheduled_report"]:[],...e.analyticalBriefingsEnabled?["analytical_briefing"]:[]]:[]}function st(e){const r=(e==null?void 0:e.channels)??[];return r.length===1&&r[0]==="EMAIL"}function mt(e){return e.body.type==="generated_analysis"?"Analytical briefing":e.body.type==="custom_message"&&e.attachments.length>0&&st(e.deliveryConfig)?e.scheduleExpr?"Scheduled report":"On-demand report":"Plain briefing"}function Br(e){const r=mt(e),t=r==="Scheduled report"||r==="On-demand report"?"report":"briefing";return{typeLabel:r,noun:t,pluralNoun:t==="report"?"reports":"briefings"}}const ae="BRIEFING",ut=["markdown","html"],ie=["markdown"],re=20,y={name:500,description:2e3,instruction:5e4,customMessage:5e4,contentTitle:500,contentSummary:2e4,contentText:5e3,contentSql:5e4,contentItem:2e3,contentCell:500,attachmentTitle:500,presentationAudience:1e3,presentationTone:500,presentationFormat:2e3,id:500},F={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:y.contentCell,maxParagraphCharacters:y.contentText,maxFindingCharacters:y.contentText,maxListItems:100,maxKpiTiles:8};function ft(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const r=e;if(typeof r.value!="number"||!Number.isFinite(r.value))return!1;const t=r.target;if(t===null||typeof t!="object"||Array.isArray(t))return!1;const n=t;return(n.kind==="metric"&&typeof n.metricId=="string"&&!!n.metricId.trim()||n.kind==="column"&&typeof n.columnKey=="string"&&!!n.columnKey.trim()||n.kind==="matrix_measure"&&typeof n.measureId=="string"&&!!n.measureId.trim())&&ve.parseResolvedNumericCanonicalFormat(r.format).ok}function pt(e){return e==null?"":ft(e)?ve.formatNumericCanonical(e.value,e.format):String(e)}function Dr(e){return[e.delta,e.percentChange].filter(r=>r!=null).map(pt).filter(Boolean).join(" / ")}const yt=new Set(ut),Pr=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),fe={maxToolCalls:{min:1,max:100},maxPlanningIterations:{min:1,max:10},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},Mr=new Set(["letter","legal","a4","a3","tabloid"]),Or=new Set(["portrait","landscape"]),zr=new Set([",",";"," "]),Kr=new Set(["current","all"]),Nr=new Set(["concise","balanced","detailed"]),qr=new Set(["info","positive","warning","critical"]),Lr=new Set(["text","number","currency","percent","date","boolean"]),Vr=new Set(["left","center","right"]),Ur=["matrix","pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","allowDownload","theme"];class ee extends Error{constructor(t){super(t.map(n=>`${n.field}: ${n.message}`).join("; "));R(this,"issues");this.name="BriefingContractError",this.issues=t}}function ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function f(e,r,t){e.push({field:r,message:t})}function S(e,r,t){return ht(e)?e:(f(t,r,"Expected an object."),{})}function I(e,r,t,n){const o=new Set(t);Object.keys(e).forEach(a=>{o.has(a)||f(n,r?`${r}.${a}`:a,`Unexpected field "${a}".`)})}function E(e,r,t,n){if(typeof e!="string")return f(n,r,"Expected a string."),"";const o=e.trim();return o?(o.length>t&&f(n,r,`Must be ${t} characters or fewer.`),o):(f(n,r,"Required value cannot be empty."),"")}function x(e,r,t,n){if(e==null)return;if(typeof e!="string"){f(n,r,"Expected a string.");return}const o=e.trim();if(o)return o.length>t&&f(n,r,`Must be ${t} characters or fewer.`),o}function jr(e,r,t,n){if(typeof e!="string")return f(n,r,"Expected a string."),"";const o=e.trim();return o.length>t&&f(n,r,`Must be ${t} characters or fewer.`),o}function Gr(e,r,t){if(e!=null){if(!Number.isInteger(e)||Number(e)<0){f(t,r,"Expected a non-negative integer.");return}return Number(e)}}function D(e,r,t,n={}){if(e==null)return n.required?(f(t,r,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(e))return f(t,r,"Expected an array."),n.required?[]:void 0;const o=[];return e.forEach((a,i)=>{const l=E(a,`${r}.${i}`,y.id,t);l&&!o.includes(l)&&o.push(l)}),n.required&&o.length===0&&f(t,r,"Expected at least one evidence id."),o.length>0||n.required?o:void 0}function j(e,r,t,n){return e==null?r:typeof e!="boolean"?(f(n,t,"Expected a boolean."),r):e}function Hr(e,r){return e==null?"ACTIVE":e==="ACTIVE"||e==="PAUSED"||e==="DISABLED"?e:(f(r,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function Qr(e){return e.includes("@")&&e.includes(".")&&!e.includes(" ")}function gt(e,r){if(e==null)return{type:"project"};const t=S(e,"source",r),n=t.type;return n==="project"?(I(t,"source",["type"],r),{type:"project"}):n==="dashboard"?(I(t,"source",["type","dashboardId"],r),{type:"dashboard",dashboardId:E(t.dashboardId,"source.dashboardId",y.id,r)}):(f(r,"source.type","Expected project or dashboard."),{type:"project"})}function vt(e,r){const t=S(e,"body",r),n=t.type;return n==="generated_analysis"?(I(t,"body",["type","instruction"],r),{type:"generated_analysis",instruction:E(t.instruction,"body.instruction",y.instruction,r)}):n==="custom_message"?(I(t,"body",["type","message"],r),{type:"custom_message",message:jr(t.message,"body.message",y.customMessage,r)}):n==="none"?(I(t,"body",["type"],r),{type:"none"}):(f(r,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function Wr(e,r){if(e==null)return[...ie];if(!Array.isArray(e))return f(r,"presentation.artifactFormats","Expected an array."),[...ie];if(e.length===0)return f(r,"presentation.artifactFormats","Choose at least one artifact format."),[];const t=[];return e.forEach((n,o)=>{if(typeof n!="string"||!yt.has(n)){f(r,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}t.includes(n)||t.push(n)}),t}function bt(e,r){if(e==null)return{artifactFormats:[...ie],includeEvidence:!0,includeSql:!0};const t=S(e,"presentation",r);I(t,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format","appearance","brandOverrides","fragments","viewUrl"],r);const n={artifactFormats:Wr(t.artifactFormats,r),includeEvidence:j(t.includeEvidence,!0,"presentation.includeEvidence",r),includeSql:j(t.includeSql,!0,"presentation.includeSql",r)},o=x(t.audience,"presentation.audience",y.presentationAudience,r),a=x(t.tone,"presentation.tone",y.presentationTone,r),i=x(t.format,"presentation.format",y.presentationFormat,r);o&&(n.audience=o),a&&(n.tone=a),i&&(n.format=i);const l=Tr(t);return l.issues.forEach(m=>f(r,m.field,m.message)),Object.assign(n,l.value),n}function Yr(e,r,t){return Array.isArray(e)?(e.length===0&&f(t,r,"Expected at least one item."),e.length>F.maxListItems&&f(t,r,`Must have ${F.maxListItems} items or fewer.`),e.slice(0,F.maxListItems).map((n,o)=>E(n,`${r}.${o}`,y.contentItem,t)).filter(Boolean)):(f(t,r,"Expected an array."),[])}function Jr(e,r,t){const n=S(e,r,t);if(n.kind==="metric")return I(n,r,["kind","metricId"],t),{kind:"metric",metricId:E(n.metricId,`${r}.metricId`,y.id,t)};if(n.kind==="column")return I(n,r,["kind","columnKey"],t),{kind:"column",columnKey:E(n.columnKey,`${r}.columnKey`,y.id,t)};if(n.kind==="matrix_measure")return I(n,r,["kind","measureId"],t),{kind:"matrix_measure",measureId:E(n.measureId,`${r}.measureId`,y.id,t)};f(t,`${r}.kind`,"Expected metric, column, or matrix_measure.")}function It(e,r,t){if(e===null||typeof e!="object"||Array.isArray(e))return;const n=S(e,r,t);if(!Object.prototype.hasOwnProperty.call(n,"target")&&!Object.prototype.hasOwnProperty.call(n,"format"))return;I(n,r,["value","target","format"],t),(typeof n.value!="number"||!Number.isFinite(n.value))&&f(t,`${r}.value`,"Expected a finite number.");const o=Jr(n.target,`${r}.target`,t),a=ve.parseResolvedNumericCanonicalFormat(n.format);if(a.ok||a.issues.forEach(i=>f(t,i.path==="$"?`${r}.format`:`${r}.format.${i.path}`,i.message)),!(typeof n.value!="number"||!Number.isFinite(n.value)||!o||!a.ok))return{value:n.value,target:o,format:a.value}}function L(e,r,t){if(typeof e=="string")return e;if(typeof e=="number"){if(!Number.isFinite(e)){f(t,r,"Expected a finite number.");return}return e}const n=It(e,r,t);if(n)return n;f(t,r,"Expected a string, number, or structured numeric value.")}function Zr(e,r,t){if(e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return typeof e=="string"&&e.length>y.contentCell?(f(t,r,`Must be ${y.contentCell} characters or fewer.`),e.slice(0,y.contentCell)):typeof e=="number"&&!Number.isFinite(e)?(f(t,r,"Expected a finite number."),null):e;const n=It(e,r,t);return n||(f(t,r,"Expected a string, number, boolean, structured numeric value, or null."),null)}function Xr(e,r,t){if(!Array.isArray(e))return f(t,r,"Expected an array."),[];e.length===0&&f(t,r,"Expected at least one column."),e.length>F.maxTableColumns&&f(t,r,`Must have ${F.maxTableColumns} columns or fewer.`);const n=new Set;return e.slice(0,F.maxTableColumns).map((o,a)=>{const i=`${r}.${a}`,l=S(o,i,t);I(l,i,["key","label","kind","align"],t);const m=E(l.key,`${i}.key`,y.id,t);m&&(n.has(m)&&f(t,`${i}.key`,"Column key must be unique."),n.add(m));const c=E(l.label,`${i}.label`,y.contentTitle,t),s=q(l.kind,`${i}.kind`,Lr,"text, number, currency, percent, date, or boolean",t),u=q(l.align,`${i}.align`,Vr,"left, center, or right",t);return{key:m,label:c,...s?{kind:s}:{},...u?{align:u}:{}}})}function en(e,r,t,n){if(!Array.isArray(e))return f(n,r,"Expected an array."),[];e.length>F.maxTableRows&&f(n,r,`Must have ${F.maxTableRows} rows or fewer.`);const o=new Set(t.map(a=>a.key).filter(Boolean));return e.slice(0,F.maxTableRows).map((a,i)=>{const l=`${r}.${i}`,m=S(a,l,n);return Object.keys(m).forEach(c=>{o.has(c)||f(n,`${l}.${c}`,`Unexpected table cell "${c}".`)}),Object.fromEntries(t.map(c=>[c.key,Zr(m[c.key]??null,`${l}.${c.key}`,n)]))})}function tn(e,r,t){const n=`content.blocks.${r}`,o=S(e,n,t),a=o.type;if(a==="heading"){I(o,n,["type","text","level","evidenceIds"],t);const i=o.level===void 0||o.level===null?void 0:o.level===2||o.level===3?o.level:void 0;o.level!==void 0&&o.level!==null&&i===void 0&&f(t,`${n}.level`,"Expected 2 or 3.");const l=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"heading",text:E(o.text,`${n}.text`,y.contentTitle,t),...i?{level:i}:{},...l?{evidenceIds:l}:{}}}if(a==="paragraph"){I(o,n,["type","text","evidenceIds"],t);const i=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"paragraph",text:E(o.text,`${n}.text`,y.contentText,t),...i?{evidenceIds:i}:{}}}if(a==="finding"){I(o,n,["type","title","text","severity","evidenceIds"],t);const i=x(o.title,`${n}.title`,y.contentTitle,t),l=q(o.severity,`${n}.severity`,qr,"info, positive, warning, or critical",t);return{type:"finding",...i?{title:i}:{},text:E(o.text,`${n}.text`,y.contentText,t),...l?{severity:l}:{},evidenceIds:D(o.evidenceIds,`${n}.evidenceIds`,t,{required:!0})??[]}}if(a==="bullets"||a==="actions"||a==="limitations"){I(o,n,["type","title","items","evidenceIds"],t);const i=x(o.title,`${n}.title`,y.contentTitle,t),l=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:a,...i?{title:i}:{},items:Yr(o.items,`${n}.items`,t),...l?{evidenceIds:l}:{}}}if(a==="metric"){I(o,n,["type","label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const i=L(o.value,`${n}.value`,t)??"";i===""&&f(t,`${n}.value`,"Expected a non-empty string, number, or structured numeric value.");const l=o.previousValue===void 0||o.previousValue===null?o.previousValue:L(o.previousValue,`${n}.previousValue`,t),m=o.delta===void 0||o.delta===null?o.delta:L(o.delta,`${n}.delta`,t),c=o.percentChange===void 0||o.percentChange===null?o.percentChange:L(o.percentChange,`${n}.percentChange`,t),s=x(o.unit,`${n}.unit`,y.contentTitle,t),u=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"metric",label:E(o.label,`${n}.label`,y.contentTitle,t),value:i,...l!==void 0?{previousValue:l}:{},...m!==void 0?{delta:m}:{},...c!==void 0?{percentChange:c}:{},...s?{unit:s}:{},...u?{evidenceIds:u}:{}}}if(a==="kpi_grid"){I(o,n,["type","title","tiles","evidenceIds"],t);const i=x(o.title,`${n}.title`,y.contentTitle,t),l=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||f(t,`${n}.tiles`,"Expected an array."),l.length===0&&f(t,`${n}.tiles`,"Expected at least one tile."),l.length>F.maxKpiTiles&&f(t,`${n}.tiles`,`Must have ${F.maxKpiTiles} tiles or fewer.`);const m=l.slice(0,F.maxKpiTiles).map((s,u)=>{const p=`${n}.tiles.${u}`,d=S(s,p,t);I(d,p,["label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const v=L(d.value,`${p}.value`,t)??"";v===""&&f(t,`${p}.value`,"Expected a non-empty string, number, or structured numeric value.");const h=d.previousValue===void 0||d.previousValue===null?d.previousValue:L(d.previousValue,`${p}.previousValue`,t),b=d.delta===void 0||d.delta===null?d.delta:L(d.delta,`${p}.delta`,t),C=d.percentChange===void 0||d.percentChange===null?d.percentChange:L(d.percentChange,`${p}.percentChange`,t),g=x(d.unit,`${p}.unit`,y.contentTitle,t),w=D(d.evidenceIds,`${p}.evidenceIds`,t);return{label:E(d.label,`${p}.label`,y.contentTitle,t),value:v,...h!==void 0?{previousValue:h}:{},...b!==void 0?{delta:b}:{},...C!==void 0?{percentChange:C}:{},...g?{unit:g}:{},...w?{evidenceIds:w}:{}}}),c=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"kpi_grid",...i?{title:i}:{},tiles:m,...c?{evidenceIds:c}:{}}}if(a==="progress"){I(o,n,["type","label","value","detail","evidenceIds"],t);const i=typeof o.value=="number"&&Number.isFinite(o.value)?o.value:0;(typeof o.value!="number"||!Number.isFinite(o.value))&&f(t,`${n}.value`,"Expected a finite number.");const l=x(o.detail,`${n}.detail`,y.contentText,t),m=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"progress",label:E(o.label,`${n}.label`,y.contentTitle,t),value:i,...l?{detail:l}:{},...m?{evidenceIds:m}:{}}}if(a==="table"){I(o,n,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],t);const i=Xr(o.columns,`${n}.columns`,t),l=x(o.title,`${n}.title`,y.contentTitle,t),m=x(o.id,`${n}.id`,y.id,t),c=x(o.caption,`${n}.caption`,y.contentItem,t),s=Gr(o.totalRows,`${n}.totalRows`,t),u=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"table",...m?{id:m}:{},...l?{title:l}:{},columns:i,rows:en(o.rows,`${n}.rows`,i,t),...c?{caption:c}:{},...s!==void 0?{totalRows:s}:{},...u?{evidenceIds:u}:{}}}if(a==="evidence_appendix"){I(o,n,["type","title","evidenceIds"],t);const i=x(o.title,`${n}.title`,y.contentTitle,t);return{type:"evidence_appendix",...i?{title:i}:{},evidenceIds:D(o.evidenceIds,`${n}.evidenceIds`,t,{required:!0})??[]}}if(a==="sql"){I(o,n,["type","title","sql","evidenceIds"],t);const i=x(o.title,`${n}.title`,y.contentTitle,t),l=E(o.sql,`${n}.sql`,y.contentSql,t),m=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"sql",...i?{title:i}:{},sql:l,...m?{evidenceIds:m}:{}}}return f(t,`${n}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."),{type:"paragraph",text:""}}function Ct(e){const r=[],t=S(e,"content",r);I(t,"content",["version","title","summary","blocks"],r),t.version!==1&&f(r,"content.version","Expected version 1.");const n=x(t.title,"content.title",y.contentTitle,r),o=x(t.summary,"content.summary",y.contentSummary,r);Array.isArray(t.blocks)||f(r,"content.blocks","Expected an array.");const a=Array.isArray(t.blocks)?t.blocks:[];a.length===0&&f(r,"content.blocks","Expected at least one block."),a.length>F.maxBlocks&&f(r,"content.blocks",`Must have ${F.maxBlocks} blocks or fewer.`);const i=a.slice(0,F.maxBlocks).map((l,m)=>tn(l,m,r));return Se(r),{version:1,...n?{title:n}:{},...o?{summary:o}:{},blocks:i}}function rn(e){try{return{valid:!0,value:Ct(e),issues:[]}}catch(r){if(r instanceof ee)return{valid:!1,issues:r.issues};throw r}}function ne(e,r,t,n){return typeof e=="string"&&t.includes(e)?e:(f(n,r,`Expected ${t.join(" or ")}.`),t[0])}function q(e,r,t,n,o){if(e!=null){if(typeof e=="string"&&t.has(e))return e;f(o,r,`Expected ${n}.`)}}function nn(e,r,t){if(e!=null){if(!Array.isArray(e)){f(t,r,"Expected an array.");return}return e}}function on(e,r,t){if(e!=null){if(!ht(e)){f(t,r,"Expected an object.");return}return e}}function an(e,r,t){if(e==null)return;const n=S(e,r,t);I(n,r,Ur,t);const o={};if(n.matrix!==void 0){const c=S(n.matrix,`${r}.matrix`,t);I(c,`${r}.matrix`,["config","content"],t);const s=K.matrixConfigSchema.safeParse(c.config);s.success||f(t,`${r}.matrix.config`,"Expected a valid Matrix definition.");const u=q(c.content,`${r}.matrix.content`,new Set(["current","all","flat"]),"current, all, or flat",t);u||f(t,`${r}.matrix.content`,"Choose Matrix export content."),s.success&&u&&(o.matrix={config:s.data,content:u})}const a=q(n.pageSize,`${r}.pageSize`,Mr,"letter, legal, a4, a3, or tabloid",t),i=q(n.orientation,`${r}.orientation`,Or,"portrait or landscape",t),l=q(n.delimiter,`${r}.delimiter`,zr,"comma, semicolon, or tab",t),m=q(n.sheetSelection,`${r}.sheetSelection`,Kr,"current or all",t);a&&(o.pageSize=a),i&&(o.orientation=i),l&&(o.delimiter=l),m&&(o.sheetSelection=m);for(const c of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues","allowDownload"])if(!(n[c]===void 0||n[c]===null)){if(typeof n[c]!="boolean"){f(t,`${r}.${c}`,"Expected a boolean.");continue}o[c]=n[c]}for(const c of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const s=x(n[c],`${r}.${c}`,y.id,t);s&&(o[c]=s)}for(const c of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const s=nn(n[c],`${r}.${c}`,t);s&&(o[c]=s)}for(const c of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const s=on(n[c],`${r}.${c}`,t);s&&(o[c]=s)}return Object.keys(o).length>0?o:void 0}function pe(e,r,t,n){const o=x(r,t,y.attachmentTitle,n);return o&&(e.title=o),e}function ye(e,r,t,n){const o=an(r,t,n);return o&&(e.settings=o),e}function cn(e,r,t){const n=`attachments.${r}`,o=S(e,n,t),a=o.type;if(a==="dashboard"){I(o,n,["type","dashboardId","format","title","settings"],t);const i=pe({type:"dashboard",dashboardId:E(o.dashboardId,`${n}.dashboardId`,y.id,t),format:ne(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return ye(i,o.settings,`${n}.settings`,t)}if(a==="dashboard_sheet"||a==="document_sheet"){I(o,n,["type","dashboardId","sheetId","format","title","settings"],t);const i=pe({type:a,dashboardId:E(o.dashboardId,`${n}.dashboardId`,y.id,t),sheetId:E(o.sheetId,`${n}.sheetId`,y.id,t),format:ne(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return ye(i,o.settings,`${n}.settings`,t)}if(a==="card"){I(o,n,["type","dashboardId","cardId","format","title","settings"],t);const i=pe({type:"card",dashboardId:E(o.dashboardId,`${n}.dashboardId`,y.id,t),cardId:E(o.cardId,`${n}.cardId`,y.id,t),format:ne(o.format,`${n}.format`,["csv","pdf"],t)},o.title,`${n}.title`,t);return ye(i,o.settings,`${n}.settings`,t)}return f(t,`${n}.type`,"Expected dashboard, dashboard_sheet, document_sheet, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function ln(e){switch(e.type){case"dashboard":return`${e.type}:${e.dashboardId}:${e.format}`;case"dashboard_sheet":case"document_sheet":return`${e.type}:${e.dashboardId}:${e.sheetId}:${e.format}`;case"card":return`${e.type}:${e.dashboardId}:${e.cardId}:${e.format}`}}function Tt(e,r){if(e==null)return[];if(!Array.isArray(e))return f(r,"attachments","Expected an array."),[];e.length>re&&f(r,"attachments",`Choose ${re} attachments or fewer.`);const t=e.slice(0,re).map((o,a)=>cn(o,a,r)),n=new Set;return t.forEach((o,a)=>{var l;(l=o.settings)!=null&&l.matrix&&(o.type!=="card"||o.settings.cardType!=="matrixTable"||o.settings.matrix.content==="flat"&&o.format!=="csv")&&f(r,`attachments.${a}.settings.matrix`,"Matrix settings require a matrixTable card attachment; flat content requires CSV.");const i=ln(o);n.has(i)&&f(r,`attachments.${a}`,"Duplicate attachment."),n.add(i)}),t}function wt(e,r){if(e==null)return;const t=S(e,"limits",r);I(t,"limits",Object.keys(fe),r);const n={};return Object.keys(fe).forEach(o=>{const a=t[o];if(a==null)return;const i=fe[o];if(typeof a!="number"||!Number.isInteger(a)||a<i.min||a>i.max){f(r,`limits.${o}`,`Expected an integer between ${i.min} and ${i.max}.`);return}n[o]=a}),Object.keys(n).length>0?n:void 0}function Se(e){if(e.length>0)throw new ee(e)}function Et(e,r,t){!(e.type==="generated_analysis"||e.type==="custom_message"&&!!e.message.trim())&&r.length===0&&f(t,"body","Add briefing instructions, a custom message, or at least one attachment.")}function dn(e,r,t){e==null||e.forEach((n,o)=>{const a=`${t}.${o}.scope`,i=n.scope.attachmentIndex;if(i===void 0)throw new A.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify the attachment that owns this presentation entry.`);const l=r[i];if(!l)throw new A.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify an existing attachment.`);if(n.scope.dashboardId!==l.dashboardId)throw new A.PresentationExecutionSnapshotError(`${a}.dashboardId must match the dashboard selected by the referenced attachment.`);if(l.type==="card"&&n.scope.cardId!==l.cardId)throw new A.PresentationExecutionSnapshotError(`${a}.cardId must match the card selected by the referenced attachment.`)})}function $e(e){const r=[],t=S(e,"jobConfig",r);I(t,"jobConfig",["kind","presentationExecutionSnapshot","source","body","attachments","presentation","limits"],r),t.kind!==ae&&f(r,"kind","Expected BRIEFING.");let n;try{n=A.parsePresentationExecutionSnapshot(t.presentationExecutionSnapshot)}catch(c){if(c instanceof A.PresentationExecutionSnapshotError)throw c;f(r,"jobConfig.presentationExecutionSnapshot",c instanceof Error?c.message:"Invalid presentation snapshot.")}const o=gt(t.source,r),a=vt(t.body,r),i=Tt(t.attachments,r),l=bt(t.presentation,r),m=wt(t.limits,r);return Et(a,i,r),dn(n==null?void 0:n.resolvedFormats,i,"jobConfig.presentationExecutionSnapshot.resolvedFormats"),Se(r),{kind:ae,presentationExecutionSnapshot:n,source:o,body:a,attachments:i,presentation:l,...m?{limits:m}:{}}}function sn(e){return $e({...e,kind:ae})}function ke(e,r,t,n="deliveryConfig.recipients"){const o=`${n}.${r}`,a=S(e,o,t),i=a.type;if(i==="email"){I(a,o,["type","address","name"],t);const l=E(a.address,`${o}.address`,y.id,t),m=x(a.name,`${o}.name`,y.attachmentTitle,t);return l&&!Qr(l)&&f(t,`${o}.address`,"Email address is invalid."),{type:"email",address:l,...m?{name:m}:{}}}return i==="user"?(I(a,o,["type","userId"],t),{type:"user",userId:E(a.userId,`${o}.userId`,y.id,t)}):i==="tenant_user"?(I(a,o,["type","tenantUserId"],t),{type:"tenant_user",tenantUserId:E(a.tenantUserId,`${o}.tenantUserId`,y.id,t)}):i==="group"?(I(a,o,["type","groupId"],t),{type:"group",groupId:E(a.groupId,`${o}.groupId`,y.id,t)}):(f(t,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function mn(e,r){return e==null?[]:Array.isArray(e)?e.map((t,n)=>ke(t,n,r)):(f(r,"deliveryConfig.recipients","Expected an array."),[])}function un(e,r){if(!Array.isArray(e))return f(r,"deliveryConfig.channels","Expected an array."),[];const t=[];return e.forEach((n,o)=>{if(!_e(n)){f(r,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}t.includes(n)||t.push(n)}),t}function fn(e,r,t){if(e==null)return;const n=S(e,r,t),o={};return Object.entries(n).forEach(([a,i])=>{if(typeof i!="string"){f(t,`${r}.${a}`,"Expected a string.");return}o[a]=i.trim()}),Object.keys(o).length>0?o:void 0}function pn(e,r,t){if(e==null)return;const n=S(e,r,t);I(n,r,["url","method","headers","secretEncrypted"],t);const o=n.method===void 0||n.method===null?void 0:ne(n.method,`${r}.method`,["POST","PUT"],t),a=fn(n.headers,`${r}.headers`,t),i=x(n.secretEncrypted,`${r}.secretEncrypted`,2e3,t);return{url:E(n.url,`${r}.url`,2e3,t),...o?{method:o}:{},...a?{headers:a}:{},...i?{secretEncrypted:i}:{}}}function yn(e,r,t){const n=S(e,r,t),o=n.type;if(o==="channel"){I(n,r,["type","channelId","channelName","isPrivate"],t);const a=x(n.channelName,`${r}.channelName`,y.attachmentTitle,t),i=n.isPrivate===void 0||n.isPrivate===null?void 0:j(n.isPrivate,!1,`${r}.isPrivate`,t);return{type:"channel",channelId:E(n.channelId,`${r}.channelId`,y.id,t),...a?{channelName:a}:{},...i!==void 0?{isPrivate:i}:{}}}return o==="dm"?(I(n,r,["type","recipient"],t),f(t,`${r}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:ke(n.recipient,0,t,`${r}.recipient`)}):(f(t,`${r}.type`,"Expected channel."),{type:"channel",channelId:""})}function hn(e,r,t){if(e==null)return;if(!Array.isArray(e)){f(t,r,"Expected an array.");return}const n=e.map((o,a)=>ke(o,a,t,r));return n.length>0?n:void 0}function gn(e,r,t){if(e==null)return;const n=S(e,r,t);I(n,r,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],t);const o=hn(n.threadMentions,`${r}.threadMentions`,t),a=j(n.postThreadDetail,!0,`${r}.postThreadDetail`,t),i=j(n.includeDashboardLink,!0,`${r}.includeDashboardLink`,t),l=j(n.includeBriefingLink,!0,`${r}.includeBriefingLink`,t);return{destination:yn(n.destination,`${r}.destination`,t),...o?{threadMentions:o}:{},...n.postThreadDetail!==void 0?{postThreadDetail:a}:{},...n.includeDashboardLink!==void 0?{includeDashboardLink:i}:{},...n.includeBriefingLink!==void 0?{includeBriefingLink:l}:{}}}function vn(e,r,t){const n=S(e,r,t);I(n,r,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],t);const o=q(n.formatProfile,`${r}.formatProfile`,Nr,"concise, balanced, or detailed",t),a=x(n.subjectOverride,`${r}.subjectOverride`,500,t),i=x(n.titleOverride,`${r}.titleOverride`,500,t),l=x(n.summaryOverride,`${r}.summaryOverride`,2e3,t),m=j(n.actionBlockVisible,!0,`${r}.actionBlockVisible`,t),c=pn(n.webhookConfig,`${r}.webhookConfig`,t),s=gn(n.slackConfig,`${r}.slackConfig`,t);return{...o?{formatProfile:o}:{},...a?{subjectOverride:a}:{},...i?{titleOverride:i}:{},...l?{summaryOverride:l}:{},...n.actionBlockVisible!==void 0?{actionBlockVisible:m}:{},...s?{slackConfig:s}:{},...c?{webhookConfig:c}:{}}}function bn(e,r){if(e==null)return;const t=S(e,"deliveryConfig.channelConfigs",r),n={};return Object.entries(t).forEach(([o,a])=>{if(!_e(o)){f(r,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}n[o]=vn(a,`deliveryConfig.channelConfigs.${o}`,r)}),Object.keys(n).length>0?n:void 0}function In(e,r){var m,c,s;if(e==null)return null;const t=S(e,"deliveryConfig",r);I(t,"deliveryConfig",["recipients","channels","channelConfigs"],r);const n=bn(t.channelConfigs,r),o=mn(t.recipients,r),a=un(t.channels,r),i=((c=(m=n==null?void 0:n.SLACK)==null?void 0:m.slackConfig)==null?void 0:c.destination.type)==="channel"&&!!n.SLACK.slackConfig.destination.channelId.trim();return a.some(u=>u!=="SLACK")&&o.length===0&&f(r,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),a.length===0&&f(r,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),a.includes("SLACK")&&!i&&f(r,"deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId","Choose a Slack channel destination."),!a.includes("SLACK")&&((s=n==null?void 0:n.SLACK)!=null&&s.slackConfig)&&f(r,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:a,...n?{channelConfigs:n}:{}}}function de(e){const r=[],t=S(e,"draft",r);I(t,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],r);const n=E(t.name,"name",y.name,r),o=x(t.description,"description",y.description,r)??null,a=x(t.scheduleExpr,"scheduleExpr",500,r)??null,i=x(t.timezone,"timezone",200,r)??"UTC",l=Hr(t.status,r),m=gt(t.source,r),c=vt(t.body,r),s=Tt(t.attachments,r),u=bt(t.presentation,r),p=wt(t.limits,r),d=In(t.deliveryConfig,r);return Et(c,s,r),Se(r),{name:n,description:o,status:l,scheduleExpr:a,timezone:i,source:m,body:c,attachments:s,presentation:u,...p?{limits:p}:{},deliveryConfig:d}}function Cn(e){return de(e)}function Tn(e){return de(e)}function wn(e){try{return{valid:!0,value:de(e),issues:[]}}catch(r){if(r instanceof ee)return{valid:!1,issues:r.issues};throw r}}function En(e){try{return{valid:!0,value:$e(e),issues:[]}}catch(r){if(r instanceof ee)return{valid:!1,issues:r.issues};throw r}}function xn(e){return typeof e=="string"&&yt.has(e)}function _e(e){return typeof e=="string"&&Pr.has(e)}exports.AmbiguousGroupedTemporalGrainError=ze;exports.BRIEFING_ARTIFACT_FORMATS=ut;exports.BRIEFING_CONTENT_LIMITS=F;exports.BRIEFING_KIND=ae;exports.BRIEFING_TEXT_LIMITS=y;exports.BriefingContractError=ee;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=ie;exports.DEFAULT_BRIEFING_SCHEDULE=Er;exports.DashboardTemporalBoundaryError=V;exports.MAX_BRIEFING_ATTACHMENTS=re;exports.PYTHON_DEFAULT_CODE=Oe;exports.RawTemporalPresentationBoundaryError=k;exports.buildBriefingJobConfig=sn;exports.buildBriefingScheduleExpr=$r;exports.buildCreateBriefingRequest=Cn;exports.buildDashboardCardTableConfig=Rt;exports.buildDashboardTemporalSnapshotEntries=sr;exports.buildMatrixDeliveryEnvelope=hr;exports.buildSlotOrderedCards=et;exports.buildUpdateBriefingRequest=Tn;exports.canCreateBriefingForUser=Fr;exports.captureMatrixExport=pr;exports.createCardsFromSlots=ar;exports.describeBriefingSchedule=Rr;exports.findCustomVisualConfigCard=rt;exports.formatBriefingComparisonValues=Dr;exports.formatBriefingDisplayValue=pt;exports.formatGroupedTemporalFieldValue=Nt;exports.formatGroupedTemporalRecords=Mt;exports.formatGroupedTemporalValue=Ce;exports.getActiveCardFromVisualResource=Zt;exports.getActiveFrameCard=we;exports.getBriefingCardAttachmentCapability=fr;exports.getBriefingCardAttachmentFormats=ot;exports.getBriefingCreationIntents=Ar;exports.getBriefingDisplayTypeLabel=mt;exports.getBriefingPresentation=Br;exports.getConfigSlotExpectedType=nr;exports.getCustomVisualInputCards=tt;exports.getDefaultBriefingCardAttachmentFormat=at;exports.getDefaultDeclaredSqlRawTemporalPattern=Lt;exports.getEffectiveCardTypeForSlot=or;exports.getSlotDefinitionForIndex=Ee;exports.getSlotExpectedChartType=le;exports.getSlotIndexForCard=Xe;exports.hasMissingDeclaredSqlCustomDateFormat=Qe;exports.inspectDeclaredSqlRawTemporalPreview=jt;exports.isBriefingArtifactFormat=xn;exports.isBriefingDeliveryChannel=_e;exports.isBriefingNumericValue=ft;exports.isCardRawTemporalPresentationActivated=Qt;exports.isCardRawTemporalResultCompatible=Jt;exports.isCustomVisualConfigCard=ge;exports.isDeclaredSqlRawTemporalPresentationCard=Te;exports.isEmailOnlyBriefingDelivery=st;exports.isGroupedTemporalResultCompatible=Ot;exports.isPivotResultContractCompatibleWithCardConfig=Le;exports.isValidBriefingTimezone=xr;exports.matrixDeliveryPayloadSchema=yr;exports.matrixDeliveryQuerySchema=it;exports.matrixLayoutReadResultSchema=gr;exports.normalizeBriefingContentDocument=Ct;exports.normalizeBriefingDraft=de;exports.normalizeBriefingJobConfig=$e;exports.normalizeDashboardCardPythonCode=G;exports.normalizeGroupedTemporalField=Ke;exports.normalizeMultiInputPayload=cr;exports.parseBriefingScheduleExpr=dt;exports.parseCanonicalPivotResultTransportOnce=qe;exports.parseFrameObject=Je;exports.presentRawTemporalCell=Yt;exports.reindexSlotCards=rr;exports.repairMissingDeclaredSqlCustomDateFormat=Gt;exports.resolveCardRawTemporalPresentation=Ye;exports.resolveCartesianTemporalActivation=Bt;exports.resolveDashboardCardResultOwner=X;exports.resolveDashboardTemporalActivation=Ne;exports.resolveDeclaredSqlRawTemporalFormat=ce;exports.resolveDetailTableRawTemporalPresentation=We;exports.resolveGroupedTemporalFieldPresentationByRole=Ue;exports.resolveGroupedTemporalFieldSnapshotFormat=je;exports.resolveGroupedTemporalPresentation=Kt;exports.resolveMultiInputType=nt;exports.resolveMultiInputTypeFromVisual=ir;exports.resolveRegularTableTemporalActivation=At;exports.validateBriefingContentDocument=rn;exports.validateBriefingDraft=wn;exports.validateBriefingJobConfig=En;exports.validateDeclaredSqlRawTemporalPattern=Vt;