react-semaphor 0.1.459 → 0.1.461
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +32 -32
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +4 -4
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +4 -4
- package/dist/chunks/{analyze-result-contract-BbRJ-C06.js → analyze-result-contract-DROq4vgY.js} +1 -1
- package/dist/chunks/{analyze-result-contract-LPDNldic.cjs → analyze-result-contract-DSGoFuXQ.cjs} +1 -1
- package/dist/chunks/canonical-result-keys-CEQefvdO.js +33 -0
- package/dist/chunks/canonical-result-keys-Cb96edol.cjs +1 -0
- package/dist/chunks/{common-types-H51FLKB7.js → common-types-BHVKgxRR.js} +1 -1
- package/dist/chunks/{common-types-C57kJ59w.cjs → common-types-BcV9PD9D.cjs} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-ClCj98sq.js → dashboard-briefing-launcher-3owMxX5K.js} +60 -61
- package/dist/chunks/{dashboard-briefing-launcher-DHtEouuH.cjs → dashboard-briefing-launcher-xuGrw8H3.cjs} +2 -2
- package/dist/chunks/{dashboard-controls-B8gsKlxc.js → dashboard-controls-B4GvjGr1.js} +44 -45
- package/dist/chunks/{dashboard-controls-VRShl9J0.cjs → dashboard-controls-Bpm_xOXQ.cjs} +1 -1
- package/dist/chunks/dashboard-filter-value-compatibility-KXIyvbhc.js +677 -0
- package/dist/chunks/dashboard-filter-value-compatibility-UapptYnn.cjs +1 -0
- package/dist/chunks/dashboard-input-contract-BkRFQ7Tq.cjs +1 -0
- package/dist/chunks/{dashboard-date-comparison-definition-DC3ekV2S.js → dashboard-input-contract-D5dxTWJ5.js} +41 -25
- package/dist/chunks/{dashboard-json-i_Auue_K.js → dashboard-json-DzyxoBp-.js} +13 -14
- package/dist/chunks/dashboard-json-yLM01xK4.cjs +1 -0
- package/dist/chunks/{edit-dashboard-visual-DWWyT55u.cjs → edit-dashboard-visual-1T278Nr_.cjs} +28 -28
- package/dist/chunks/{edit-dashboard-visual-B3JF0fe4.js → edit-dashboard-visual-nwSasO_j.js} +880 -894
- package/dist/chunks/{editor-action-buttons-BTlCsP63.cjs → editor-action-buttons-CX1Pken3.cjs} +2 -2
- package/dist/chunks/{editor-action-buttons-C9x3nGnb.js → editor-action-buttons-Dqw0asfA.js} +28 -28
- package/dist/chunks/index-B1qplNxl.cjs +1392 -0
- package/dist/chunks/{index-BS2-ZZGf.js → index-DazD5k0F.js} +45362 -42931
- package/dist/chunks/{index-BIFLI8ul.js → index-De_7nrwb.js} +10 -10
- package/dist/chunks/index-DjjKJPDy.cjs +4 -0
- package/dist/chunks/{matrix-result-contract-CofATICL.js → matrix-result-contract-BTpPuHOc.js} +88 -104
- package/dist/chunks/matrix-result-contract-ZRNfeIbI.cjs +1 -0
- package/dist/chunks/{pivot-header-presentation-B9nXXKlW.cjs → pivot-header-presentation-BijPbP33.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-D-0jvUwn.js → pivot-header-presentation-DW0gKG8g.js} +2 -2
- package/dist/chunks/{pivot-result-identity-Bb4EixVN.cjs → pivot-result-identity-DxHtiKVj.cjs} +1 -1
- package/dist/chunks/{pivot-result-identity-DU1v-5Xk.js → pivot-result-identity-Z9tN2tEV.js} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-DTLRuDEW.cjs → pivot-result-lifecycle-BXzIlQVu.cjs} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-CHWEGU2o.js → pivot-result-lifecycle-g2U-vzQb.js} +7 -7
- package/dist/chunks/{raw-temporal-contract-BtjH_G-d.cjs → raw-temporal-contract-DfAvqNMo.cjs} +1 -1
- package/dist/chunks/{raw-temporal-contract-CxncLze5.js → raw-temporal-contract-UtAqoOZO.js} +1 -1
- package/dist/chunks/{report-preferences-dialog-BK0yAJnQ.cjs → report-preferences-dialog-DKPyjiCt.cjs} +1 -1
- package/dist/chunks/{report-preferences-dialog-BDpkcUtz.js → report-preferences-dialog-Dv3vCCFt.js} +6 -6
- package/dist/chunks/{report-runtime-context-DqxS4wbi.cjs → report-runtime-context-C0NfLPfc.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-SM6YO61_.js → report-runtime-context-CNncA3VD.js} +11 -11
- package/dist/chunks/{saved-temporal-bucket-format-CFfWXRl9.cjs → saved-temporal-bucket-format-3QKveR3v.cjs} +1 -1
- package/dist/chunks/{saved-temporal-bucket-format-SGAV0ivR.js → saved-temporal-bucket-format-Dd2eixTH.js} +11 -11
- package/dist/chunks/switch-DBZsEV0U.cjs +138 -0
- package/dist/chunks/{switch-DQR-Va05.js → switch-kPUJEC1A.js} +6615 -5219
- package/dist/chunks/{temporal-bucket-5UYEotyQ.js → temporal-bucket-C85rmFmC.js} +4 -4
- package/dist/chunks/temporal-bucket-authoring-1fZuPAVb.js +653 -0
- package/dist/chunks/temporal-bucket-authoring-BK1UhYpD.cjs +1 -0
- package/dist/chunks/{temporal-bucket-contract-D5d-xEl3.js → temporal-bucket-contract-DXXNZssK.js} +1 -1
- package/dist/chunks/{temporal-bucket-contract-D2-93DGr.cjs → temporal-bucket-contract-xFkvboaw.cjs} +1 -1
- package/dist/chunks/{temporal-bucket-DHY1y9lq.cjs → temporal-bucket-pMfghsLX.cjs} +1 -1
- package/dist/chunks/{token-types-GbxRUozo.js → token-types-BLxc7UwR.js} +1 -1
- package/dist/chunks/{token-types-D7CaaI80.cjs → token-types-BYYO109W.cjs} +1 -1
- package/dist/chunks/{update-policy-hednMF-0.js → update-policy-CB8XJIoY.js} +1 -1
- package/dist/chunks/{update-policy-BmiOd0PB.cjs → update-policy-DMjjGjQY.cjs} +1 -1
- package/dist/chunks/{validators-DEmd8Sin.js → validators-DVd8s3qY.js} +416 -350
- package/dist/chunks/validators-dJlwubP4.cjs +1 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +2 -2
- package/dist/dashboard-authoring/index.cjs +3 -3
- package/dist/dashboard-authoring/index.js +328 -311
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +2 -2
- package/dist/data-app-codegen/index.cjs +1 -1
- package/dist/data-app-codegen/index.js +2 -2
- package/dist/data-app-codegen-node/index.cjs +1 -1
- package/dist/data-app-codegen-node/index.js +3 -3
- package/dist/data-app-sdk/index.cjs +1 -1
- package/dist/data-app-sdk/index.js +55 -55
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +61 -56
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +9 -9
- package/dist/format-utils/index.cjs +1 -1
- package/dist/format-utils/index.js +15 -15
- package/dist/index.cjs +1 -1
- package/dist/index.js +154 -155
- package/dist/report-runtime-context/index.cjs +1 -1
- package/dist/report-runtime-context/index.js +2 -2
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +3 -3
- package/dist/types/analytics-protocol.d.ts +16 -8
- package/dist/types/briefings.d.ts +95 -13
- package/dist/types/dashboard-assistant.d.ts +11 -6
- package/dist/types/dashboard-authoring.d.ts +257 -19
- package/dist/types/dashboard.d.ts +109 -14
- package/dist/types/data-app-builder.d.ts +11 -6
- package/dist/types/data-app-codegen-node.d.ts +16 -8
- package/dist/types/data-app-codegen.d.ts +16 -8
- package/dist/types/data-app-sdk-adapters.d.ts +17 -11
- package/dist/types/data-app-sdk-validation.d.ts +17 -11
- package/dist/types/data-app-sdk.d.ts +17 -11
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/main.d.ts +225 -20
- package/dist/types/shared.d.ts +95 -13
- package/dist/types/surfboard.d.ts +109 -14
- package/dist/types/types.d.ts +109 -14
- package/package.json +1 -1
- package/dist/chunks/canonical-result-keys-BA0HCP4e.cjs +0 -1
- package/dist/chunks/canonical-result-keys-D6avdjpA.js +0 -467
- package/dist/chunks/dashboard-date-comparison-definition-Ces4alFm.cjs +0 -1
- package/dist/chunks/dashboard-json-BhvPMpZA.cjs +0 -1
- package/dist/chunks/index-DHF-2AqS.cjs +0 -1392
- package/dist/chunks/index-k8tEp0ys.cjs +0 -4
- package/dist/chunks/matrix-result-contract-zamd9euI.cjs +0 -1
- package/dist/chunks/switch-f3TuZNLr.cjs +0 -138
- package/dist/chunks/temporal-bucket-authoring-K1kE6R_z.js +0 -222
- package/dist/chunks/temporal-bucket-authoring-o3Emn05L.cjs +0 -1
- package/dist/chunks/validators-BDYprKI9.cjs +0 -1
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";var vt=Object.defineProperty;var bt=(e,r,t)=>r in e?vt(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var R=(e,r,t)=>bt(e,typeof r!="symbol"?r+"":r,t);const $=require("./pivot-result-lifecycle-DTLRuDEW.cjs"),pe=require("../value-format-preferences/index.cjs"),q=require("./validators-BDYprKI9.cjs");require("./analyze-result-contract-LPDNldic.cjs");const V=require("./saved-temporal-bucket-format-CFfWXRl9.cjs"),M=require("./pivot-result-identity-Bb4EixVN.cjs"),Ee=require("./temporal-bucket-contract-D2-93DGr.cjs"),Y=require("./temporal-bucket-DHY1y9lq.cjs"),L=require("./canonical-result-keys-BA0HCP4e.cjs");require("./temporal-bucket-authoring-o3Emn05L.cjs");const xe=require("./raw-temporal-contract-BtjH_G-d.cjs"),Re=`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 It(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 j(e){return e===Re?"":e}function J(e,r=e.config){return L.resolveTemporalResultOwner({hasExecutableConfig:V.hasValidCardConfig(r),sql:e.sql,normalizedPython:j(e.python||"")})}class Fe 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 Tt(e){return V.hasSavedTemporalBucketPresentation(e)||e.semanticTemporalPresentation!=null}function Ae(e){if(!e.id||!["date","datetime"].includes(q.normalizeAnalyticsCatalogDataType(e.dataType)))return;if(q.isSemaphorTimeGrain(e.granularity))return e;if(!Tt(e))return;if(!V.readSavedTemporalBucketFormat({fieldId:e.id,dataType:e.dataType,granularity:e.granularity,format:e.format,dateFormat:e.dateFormat,customFormat:e.customFormat}).ok)throw new Fe(e.id);return{...e,granularity:"day"}}function ye(e){const r=e.cardConfig??e.card.config;if(!r||!e.supportsCardType(e.card.type)||L.resolveTemporalResultOwner({hasExecutableConfig:V.hasValidCardConfig(r),sql:e.card.sql,normalizedPython:j(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=Ae(n);return o?[o]:[]})}}function Ct(e){return ye({...e,supportsCardType:r=>r==="table"})}function wt(e){return ye({...e,supportsCardType:L.isSemaphorCartesianChartType})}function Be(e){return ye({...e,supportsCardType:r=>r!=="detailTable"&&L.supportsCanonicalDashboardTemporalResult(r)})}const $e=new WeakMap;function Pe(e){const r=$e.get(e);if(r)return r;const t=$.parseCanonicalPivotResultTransport(e);return $e.set(e,t),t}function H(e,r){const t=e??[],n=r??[];return t.length===n.length&&t.every((o,a)=>o===n[a])}function De(e,r){const t=$.derivePivotResultContractExpectations({groupByFields:r.groupByColumns,metricFields:r.metricColumns,pivotByFields:r.pivotByColumns,detailFields:r.detailColumns});return H(e.expectedRoleFieldIds.groupby,t.expectedRoleFieldIds.groupby)&&H(e.expectedRoleFieldIds.metric,t.expectedRoleFieldIds.metric)&&H(e.expectedRoleFieldIds.pivotby,t.expectedRoleFieldIds.pivotby)&&H(e.expectedRoleFieldIds.detail,t.expectedRoleFieldIds.detail)&&H(e.expectedMetricAliases,t.expectedMetricAliases)}class Et 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 ce 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 K extends Error{constructor(t,n,o){super(`${t}: ${n}`);R(this,"deliveryBlocking",!0);this.code=t,this.context=o,this.name="DashboardTemporalBoundaryError"}}function Me(e,r){return`${r}:${e}`}function Oe(e){var r,t;return(t=(r=e.presentation)==null?void 0:r.byFieldRole)==null?void 0:t.get(Me(e.fieldId,e.role))}function $t(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)===q.SEMAPHOR_GENERATED_COUNT_METRIC_ID)})}function kt(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]=he({value:t[a],presentation:o}))}),n})}function St(e){var u;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=Pe(r);if(!De(d.pivotResultContract,t.cardConfig))return!1;if(d.pivotResultState==="loaded_empty")return!0;const v=d.columns.filter(T=>d.pivotResultContract.columnKinds[T.key]==="pivot_metric"),h=v.filter(T=>{var g;return(((g=T.pivotIdentity)==null?void 0:g.members.length)??0)>0}),b=v.length>0&&v.every(T=>{var g;return((g=T.pivotIdentity)==null?void 0:g.members.length)===0&&M.isPivotEmptyTupleAllowed({expectedPivotFieldIds:o,classification:d.pivotResultContract.columnClassifications[T.key]})});return t.fields.every(T=>{var S;const g=M.resolveQueryColumnKeyMapEntry(d.columnKeyMap,T.id,T.role);if(!g)return!1;if(g.role==="pivotby"){const x=h.flatMap(B=>{var G;return((G=B.pivotIdentity)==null?void 0:G.members.filter(gt=>gt.fieldId===T.id))??[]});return x.length===0?b:x.every(B=>{var G;return((G=B.temporalBucket)==null?void 0:G.granularity)===T.granularity})}const C=d.columns.find(x=>x.key===(g.outputKey||g.rawKey));return((S=C==null?void 0:C.temporalBucket)==null?void 0:S.granularity)===T.granularity})}catch(d){if(d instanceof $.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"}))],c=new Set(i.map(({field:d,role:v})=>`${v}:${d.id}`)),m=new Map((r.columns||[]).map(d=>[d.key,d])),l=M.resolveQueryColumnKeyMapEntry(a,q.SEMAPHOR_GENERATED_COUNT_METRIC_ID,"metric");if(l){if(!$t({cardConfig:t.cardConfig,binding:l,columns:r.columns||[]}))return!1;c.add(`metric:${q.SEMAPHOR_GENERATED_COUNT_METRIC_ID}`)}const s=Object.entries(a.byRole).flatMap(([d,v])=>Object.keys(v||{}).map(h=>`${d}:${h}`));if(s.length!==c.size||s.some(d=>!c.has(d))||i.some(({field:d,role:v})=>!M.resolveQueryColumnKeyMapEntry(a,d.id,v)))return!1;try{M.requirePivotResultColumnIdentities((r.columns||[]).map(d=>({key:d.key,pivotIdentity:d.pivotIdentity})),{expectedPivotFieldIds:o,columnClassifications:r.columnMetadata})}catch(d){if(d instanceof M.PivotResultIdentityError)return!1;throw d}const f=(r.columns||[]).filter(d=>{const v=d.pivotIdentity;return!!(v&&v.members.length>0)});return n!==0&&((u=t.cardConfig.pivotByColumns)!=null&&u.length)&&f.length===0?!1:t.fields.every(d=>{var b;const v=M.resolveQueryColumnKeyMapEntry(a,d.id,d.role);if(!v)return!1;if(v.role==="pivotby"){const g=f.flatMap(C=>{var S;return((S=C.pivotIdentity)==null?void 0:S.members)??[]}).filter(C=>C.fieldId===d.id);return f.length===0?n===0:g.length>0&&g.every(C=>{var S;return((S=C.temporalBucket)==null?void 0:S.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 re(e,r){const t=e.semanticTemporalPresentation,n=r==="card"?{format:e.format,dateFormat:e.dateFormat}:{format:t==null?void 0:t.format};if(!V.hasSavedTemporalBucketPresentation(n))return;const o=V.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 _t(e,r,t=pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES){const n=re(e,"card"),o=re(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 Ke(e,r=Y.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,t="en-US"){var i;const n=re(e,"card"),o=((i=e.semanticTemporalPresentation)==null?void 0:i.granularity)===e.granularity?re(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 xt(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(l=>[l.key,l])),n=new Map,o=new Map,a=new Map,i=r.fields.reduce((l,s)=>(l.set(s.id,(l.get(s.id)||0)+1),l),new Map),c=(l,s)=>{a.set(Me(l.id,l.role),s),i.get(l.id)===1&&o.set(l.id,s)},m=(l,s,f)=>{if(s.granularity!==l.granularity)throw new K("invalid_temporal_bucket_metadata",`Result identity "${f}" declares ${s.granularity} buckets for active ${l.granularity} field "${l.id}".`,{cardId:e.card.id,fieldId:l.id,columnKey:f});const u=e.executionSnapshot&&e.dashboardId?$.findResolvedTemporalBucketFormat({snapshot:e.executionSnapshot,scope:{dashboardId:e.dashboardId,cardId:e.card.id,...e.attachmentIndex!==void 0?{attachmentIndex:e.attachmentIndex}:{}},target:{kind:"field",fieldId:l.id,role:l.role}}):void 0;if(e.executionSnapshot&&!u)throw new Et({dashboardId:e.dashboardId,cardId:e.card.id,fieldId:l.id});return{columnKey:f,fieldId:l.id,role:l.role,metadata:s,resolved:u?Y.resolveTemporalBucketPresentation({metadata:s,cardFormat:u,locale:u.locale,...u.presentation.mode==="auto"?{styles:u.presentation.styles}:{}}):_t(l,s,e.valueFormatPreferences??pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES)}};for(const l of r.fields){const s=M.resolveQueryColumnKeyMapEntry(e.columnKeyMap,l.id,l.role);if(!s){if(e.columns===void 0&&e.columnKeyMap===void 0&&(e.resultRowCount===void 0||e.resultRowCount===0))continue;throw new K("missing_temporal_column_binding",`Activated temporal field "${l.id}" has no authoritative result-column binding.`,{cardId:e.card.id,fieldId:l.id,columnKey:l.name})}if(s.role==="pivotby"){const h=(e.columns||[]).filter(S=>S.pivotIdentity!==void 0),b=h.flatMap(S=>{var x;return(((x=S.pivotIdentity)==null?void 0:x.members)||[]).filter(B=>B.fieldId===l.id).map(B=>({column:S,member:B}))});if(b.length===0){if(h.length===0&&(e.card.type!=="pivotTable"||e.resultRowCount===0))continue;throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:s.outputKey||s.rawKey})}const T=b[0];if(!T.member.temporalBucket)throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:T.column.key});const g=Ee.validateTemporalBucketMetadata(T.member.temporalBucket);if(!g.ok||!g.value)throw new K("invalid_temporal_bucket_metadata",g.ok?`Pivot result column "${T.column.key}" has no validated temporal bucket metadata.`:g.error.message,{cardId:e.card.id,fieldId:l.id,columnKey:T.column.key});const C=m(l,g.value,T.column.key);for(const{column:S,member:x}of b)if(!x.temporalBucket||JSON.stringify(x.temporalBucket)!==JSON.stringify(T.member.temporalBucket))throw new K("invalid_temporal_bucket_metadata",`Pivot result column "${S.key}" has contradictory bucket metadata for field "${l.id}".`,{cardId:e.card.id,fieldId:l.id,columnKey:S.key});c(l,C);continue}const f=s.outputKey||s.rawKey,u=t.get(f);if(!(u!=null&&u.temporalBucket))throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:f});const d=Ee.validateTemporalBucketResultColumn(u,{metadataRequired:!0});if(!d.ok||!d.value)throw new K("invalid_temporal_bucket_metadata",d.ok?`Result column "${f}" has no validated temporal bucket metadata.`:d.error.message,{cardId:e.card.id,fieldId:l.id,columnKey:f});const v=m(l,d.value,f);n.set(f,v),c(l,v)}return{byColumnKey:n,byFieldId:o,byFieldRole:a}}function Rt(e){var t,n;const r=e.role?Oe({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?he({value:e.value,presentation:r}):e.value===null||e.value===void 0?"":String(e.value)}function he(e){if(e.value===null||e.value===void 0)return"(Blank)";if(typeof e.value!="string")throw new K("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 K(r.code,r.message,{fieldId:e.presentation.fieldId,columnKey:e.presentation.columnKey}):r}}class _ extends Error{constructor(r,t,n){super(`${r}: ${t}`),this.code=r,this.context=n,Object.setPrototypeOf(this,_.prototype),this.name="RawTemporalPresentationBoundaryError"}}function Ne(){return{type:"raw_temporal",presentation:{mode:"auto"}}}function Ft(e){if(e.locale||e.relative||e.timezone&&e.timezone!=="auto"||e.sourceTimezone&&e.sourceTimezone!=="auto"||e.prefix||e.suffix)throw new _("invalid_raw_temporal_format","Activated raw temporal presentation contains unsupported locale, relative-time, timezone, prefix, or suffix settings.")}function ze(e){const r=e.format;if((r==null?void 0:r.type)==="date"&&(Ft(r),r.pattern))return{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:r.pattern}};if(r)throw new _("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 _("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}}:Ne()}function ae(e){if(e!=null&&e.useRelativeTime)return;if(!e)return Ne();if(e.useCustomFormat&&!e.customFormat)throw new _("invalid_raw_temporal_format","Declared SQL temporal presentation selects a custom pattern but has no customFormat.");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 At(e){const r=ae(e.settings);if(!r)throw new _("invalid_raw_temporal_format","Relative-time SQL presentation does not have an absolute date preview.");const t=e.valueKind??"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=$.prepareRawTemporalFormatter({metadata:n,format:$.resolveRawTemporalFormat({format:r,preferences:e.preferences,calendar:{tz:e.calendarTimezone}})})(o);if(!a.ok)throw new _("invalid_raw_temporal_format",a.diagnostic.message);return a.text}function Ve(e){var t;const r=e.effectiveCardConfig??e.card.config;return J(e.card,r)==="freeform"&&!!((t=e.card.sql)!=null&&t.trim())&&!j(e.card.python||"").trim()}function Bt(){return{activatedColumnKeys:new Set,byColumnKey:new Map,byFieldId:new Map}}function ue(e,r){return e===void 0?{kind:"invalid",error:r}:{kind:"invalid",error:e instanceof _?e:e instanceof $.RawTemporalFormatContractError?new _(e.code,e.message,r.context):new _(r.code,e instanceof Error?e.message:r.message,r.context)}}function Le(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 ue(void 0,new _("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])),c=new Map,m=new Map;for(const s of a){const f=Array.from(i).flatMap(([C,S])=>{const x=M.resolveQueryColumnKeyMapEntry(n,C,"detail");return x&&x.role==="detail"&&(x.outputKey??x.rawKey)===s.key?[{field:S,binding:x}]:[]}),u=f.length===1?f[0]:null;if(!u||typeof u.binding.rawKey!="string"||u.binding.rawKey.trim().length===0||u.binding.outputKey!==void 0&&(typeof u.binding.outputKey!="string"||u.binding.outputKey.trim().length===0))throw new _("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}=u,h=v.outputKey??v.rawKey,b=xe.validateRawTemporalResultColumn(s,{metadataRequired:!0});if(!b)throw new _("invalid_raw_temporal_metadata",`Raw temporal result column "${h}" has no metadata.`,{fieldId:d.id,columnKey:h});const T=$.resolveRawTemporalFormat({format:ze(d),preferences:e.preferences,calendar:e.calendar}),g={fieldId:d.id,columnKey:h,metadata:b,format:T,formatValue:$.prepareRawTemporalFormatter({metadata:b,format:T})};for(let C=0;C<r.length;C+=1)if(!Object.prototype.hasOwnProperty.call(r[C],h)||r[C][h]===void 0)throw new _("missing_raw_temporal_result_contract",`Raw temporal result row ${C} is missing column "${h}".`,{fieldId:d.id,columnKey:h});c.set(h,g),m.set(d.id,g)}const l={activatedColumnKeys:new Set(c.keys()),byColumnKey:c,byFieldId:m};return r.length===0?{kind:"loaded_empty",presentation:l}:{kind:"loaded_valid",presentation:l}}catch(a){return ue(a,new _("invalid_raw_temporal_metadata","Activated raw temporal result metadata is invalid."))}}function Ue(e){var n,o,a;const r=e.effectiveCardConfig??e.card.config,t=J(e.card,r);if(e.card.type==="detailTable"&&t==="config"){const i=!!((n=e.columns)!=null&&n.some(c=>c.rawTemporal));return i&&e.records!==void 0&&!e.columnKeyMap?{kind:"invalid",error:new _("missing_raw_temporal_result_contract","Activated raw temporal detail results require records, columns, and columnKeyMap atomically.")}:e.records!==void 0&&!i?{kind:"inactive"}:ke(Le({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 ke(Dt({resultOwner:t,sql:e.card.sql,normalizedPython:j(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 Pt(e){var n,o,a;const r=e.effectiveCardConfig??e.card.config,t=J(e.card,r);return e.card.type==="detailTable"&&t==="config"?!!((n=e.columns)!=null&&n.some(i=>i.rawTemporal)):Ve(e)?Object.values(((a=(o=e.card.preferences)==null?void 0:o.tablePrefs)==null?void 0:a.columnSettingsMap)||{}).some(i=>{var c;return i.type==="date"&&!((c=i.dateFormat)!=null&&c.useRelativeTime)}):!1}function ke(e,r){if(!r.executionSnapshot||e.kind==="inactive"||e.kind==="loading"||e.kind==="invalid")return e;if(!r.dashboardId)return{kind:"invalid",error:new _("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=$.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 $.MissingResolvedRawTemporalFormatError(o)};const i=e.presentation.byColumnKey.get(o);if(!i)continue;const c={...i,format:a,formatValue:$.prepareRawTemporalFormatter({metadata:i.metadata,format:a})};t.set(i.columnKey,c),i.fieldId&&n.set(i.fieldId,c)}return{...e,presentation:{activatedColumnKeys:e.presentation.activatedColumnKeys,byColumnKey:t,byFieldId:n}}}function Dt(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(([l])=>l)),i=new Map,c=[...e.columns||[]];for(const[l,s]of r){const f=ae(s.dateFormat);if(!f)continue;const u=$.classifyDeclaredSqlTemporalColumn({columnKey:l,values:e.records.map(b=>{if(!Object.prototype.hasOwnProperty.call(b,l))throw new _("missing_raw_temporal_result_contract",`Declared SQL temporal column "${l}" is absent from a physical result row.`,{columnKey:l});const T=b[l];return T===null||typeof T=="string"?T:String(T)})});if(i.set(l,u),u.status!=="classified")continue;let d=c.findIndex(b=>b.key===l);if(e.columns&&d<0)throw new _("missing_raw_temporal_result_contract",`Classified SQL temporal column "${l}" is absent from result columns.`,{columnKey:l});d<0&&(d=c.length,c.push({key:l,name:l,label:l,role:"dimension",dataType:"string"}));const v={...c[d],role:"date",dataType:u.metadata.valueKind==="date"?"date":"datetime",rawTemporal:u.metadata};xe.validateRawTemporalResultColumn(v,{metadataRequired:!0}),c[d]=v;const h=$.resolveRawTemporalFormat({format:f,preferences:e.preferences,calendar:e.calendar});o.set(l,{columnKey:l,metadata:u.metadata,format:h,formatValue:$.prepareRawTemporalFormatter({metadata:u.metadata,format:h})})}const m={...Bt(),activatedColumnKeys:a,byColumnKey:o};return e.records.length===0?{kind:"loaded_empty",presentation:m,adaptedColumns:c,sqlClassifications:i}:{kind:"loaded_valid",presentation:m,adaptedColumns:c,sqlClassifications:i}}catch(o){return ue(o,new _("invalid_raw_temporal_format","Declared SQL raw temporal presentation is invalid."))}}function Mt(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 Ot(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=Ue({card:e.card,effectiveCardConfig:e.effectiveCardConfig,records:r.records,columns:r.columns,columnKeyMap:r.columnKeyMap,preferences:pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES,calendar:{tz:"UTC"}});return t.kind==="inactive"||t.kind==="loaded_empty"||t.kind==="loaded_valid"}function Se(e){return!e||typeof e!="object"?!1:Array.isArray(e.cards)}function qe(e){if(!e)return null;if(typeof e=="string")try{const r=JSON.parse(e);return Se(r)?r:null}catch{return null}return Se(e)?e:null}function ge(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 Kt(e){var t;const r=(e==null?void 0:e.frameObject)??((t=e==null?void 0:e.visual)==null?void 0:t.frameObject);return ge(qe(r))}function ie(e){if(!(e!=null&&e.expectedType))return"table";const r=Array.isArray(e.expectedType)?e.expectedType[0]:e.expectedType;return zt(r)?r:"table"}const Nt=["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 zt(e){return Nt.includes(e)}function Q(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 je(e){return!e||e.length===0?void 0:[...e].sort((t,n)=>Q(t)-Q(n))[0]}function ve(e,r){if(!e||e.length===0)return;const t=[],n=[],o=[];e.forEach(s=>{const f=W(s.position);f&&(f.kind==="number"?t.push(s):f.kind==="range"?n.push(s):f.kind==="dynamic"&&o.push(s))});const a=t.find(s=>{const f=W(s.position);return(f==null?void 0:f.kind)==="number"&&f.start===r});if(a)return a;const c=n.sort((s,f)=>Q(s)-Q(f)).find(s=>{const f=W(s.position);return(f==null?void 0:f.kind)==="range"&&r>=f.start&&r<=f.end});if(c)return c;const l=o.map(s=>({slot:s,parsed:W(s.position)})).filter(s=>{var f;return((f=s.parsed)==null?void 0:f.kind)==="dynamic"}).sort((s,f)=>{var u,d;return(((u=s.parsed)==null?void 0:u.start)??0)-(((d=f.parsed)==null?void 0:d.start)??0)}).filter(s=>{var f;return r>=(((f=s.parsed)==null?void 0:f.start)??0)}).sort((s,f)=>{var u,d;return(((u=f.parsed)==null?void 0:u.start)??0)-(((d=s.parsed)==null?void 0:d.start)??0)})[0];return l==null?void 0:l.slot}function Vt(e,r){const t=ve(e,r);if(t)return ie(t)}function Ge(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 fe(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 He(e){const r=[];let t=-1;e.forEach((n,o)=>{const a=Ge(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 Lt(e){return e.map((r,t)=>!r.customCardPreferences||r.customCardPreferences.slotIndex===t?r:{...r,customCardPreferences:{...r.customCardPreferences,slotIndex:t}})}function Ut(e){const r=je(e);if(r)return ie(r)}function qt(e,r,t){if(!e)return;const n=Vt(t,r);return e.type==="custom"&&n?n:e.type}function jt(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,c=e.map(h=>({slot:h,parsed:W(h.position)})).filter(h=>h.parsed!==null).reduce((h,b)=>{const T=b.parsed.end;return Number.isFinite(T)?Math.max(h,T):h},-1),m=Math.max(a,c+1),l=je(e),s=l?Q(l):0;let f=!1;const u=[];for(let h=0;h<m;h+=1){const b=ve(e,h),T=ie(b),g=!f&&h===s,C=h,S={...n,id:V.v4(),title:(g?l==null?void 0:l.label:b==null?void 0:b.label)||`Tab ${h+1}`,tabTitle:(g?l==null?void 0:l.label:b==null?void 0:b.label)||`Tab ${h+1}`,description:(g?l==null?void 0:l.description:b==null?void 0:b.description)||"",type:T,sql:"",preferences:{onClickFilter:[{columnIndex:0,expression:""}]},...g&&{customCardPreferences:{...o,slotIndex:C}},...!g&&{customCardPreferences:{slotIndex:C}}};g&&(f=!0),u.push(S)}if(!f&&u.length>0){const h=((v=u[0].customCardPreferences)==null?void 0:v.slotIndex)??0;u[0]={...u[0],type:u[0].type,customCardPreferences:{...o,slotIndex:h}}}const d=u.findIndex(h=>{var b;return!!((b=h.customCardPreferences)!=null&&b.url)});if(d>0){const[h]=u.splice(d,1);u.unshift(h)}return u}function We({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 c;const i=(c=n[a])==null?void 0:c.cardId;return e.cards.find(m=>m.id===i)||null}):e.cards}function Ye(e,r){return r&&fe(r,e.cards)?r:e.cards.find(t=>fe(t,e.cards))||null}function Qe(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 Gt(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 Ht(e){return Array.isArray(e)?{records:e}:e}class X 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 Wt(e,r){var o;const t=[],n=new Map;for(const a of r){if(a.dashboardId!==e.id)throw new X(a);const i=(e.sheets||[]).filter(m=>!a.sheetId||a.sheetId===m.id);if(a.sheetId&&i.length===0)throw new X(a);let c=!a.cardId;for(const m of i){const l=(((o=m.document)==null?void 0:o.sections)||[]).flatMap(u=>u.type==="table"||u.type==="chart"?[u.card]:[]),s=(m.frames||[]).flatMap(u=>Yt(u,a.cardId));s.length>0&&(c=!0);const f=[...s,...(m.cards||[]).filter(u=>!a.cardId||a.cardId===u.id),...l.filter(u=>!a.cardId||a.cardId===u.id)];for(const u of f){c=!0;const d=n.get(a.attachmentIndex)??new Set;d.has(u.id)||(d.add(u.id),n.set(a.attachmentIndex,d),t.push({card:u,...a.attachmentIndex!==void 0?{attachmentIndex:a.attachmentIndex}:{}}))}}if(!c)throw new X(a)}return t}function Yt(e,r){var i;const t=r?(i=e.cards)==null?void 0:i.find(c=>c.id===r):ge(e);if(!t)return[];const n=Ye(e,t),o=(e.cards||[]).filter(c=>{var m;return typeof((m=c.customCardPreferences)==null?void 0:m.slotIndex)=="number"}).length>1,a=n!=null&&(Qe(n)==="multiple"||o);return!n||!a?[t]:He(We({frame:e,configCard:n,isMultiInputVisual:!0})).filter(c=>c!==null)}function Qt(e){return Wt(e.dashboard,e.selections).flatMap(({card:r,attachmentIndex:t})=>{var s,f,u,d;const n=((s=e.resolveCardConfig)==null?void 0:s.call(e,r))??r.config,o=Be({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:Ke(v,{dateStyle:e.valueFormatPreferences.dateStyle,dateTime:{...e.valueFormatPreferences.dateTime}},e.valueFormatPreferences.locale)})):[],c=[],m=J(r,n),l=j(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,T=new Set(h.map(({field:g,role:C})=>L.resolveCanonicalResultRawKey(g,C)));for(const{field:g}of h){const C=g.label;C&&b.set(C,(b.get(C)||0)+1)}for(const g of v){const C=q.normalizeAnalyticsCatalogDataType(g.dataType);if(C!=="date"&&C!=="datetime")continue;const S=L.resolveCanonicalDetailResultRawKey(g),x=g.label,B=L.resolveCanonicalResultOutputKey({label:x,labelCount:x&&b.get(x)||0,rawKey:S,rawKeys:T});if(!B)throw new X(a);c.push({scope:a,target:{kind:"column",columnKey:B},format:$.resolveRawTemporalFormat({format:ze(g),preferences:e.valueFormatPreferences,calendar:e.calendar})})}}else if(m==="freeform"&&((f=r.sql)!=null&&f.trim())&&!l.trim())for(const[v,h]of Object.entries(((d=(u=r.preferences)==null?void 0:u.tablePrefs)==null?void 0:d.columnSettingsMap)||{})){if(h.type!=="date")continue;const b=ae(h.dateFormat);b&&c.push({scope:a,target:{kind:"column",columnKey:v},format:$.resolveRawTemporalFormat({format:b,preferences:e.valueFormatPreferences,calendar:e.calendar})})}return[...i,...c]})}function Jt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function P(e,r,t){return Jt(e)?e:(t.push({field:r,message:"Expected an object."}),{})}function D(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 N(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 be(e,r,t){const n=N(e,r,2e3,t);if(n)try{return new URL(n),n}catch{t.push({field:r,message:"Expected an absolute URL."});return}}function _e(e,r,t){const n=P(e,r,t);D(n,r,["tokens","components"],t);const o={};if(n.tokens!==void 0){const a=P(n.tokens,`${r}.tokens`,t);D(a,`${r}.tokens`,["color","typography"],t);const i={};if(a.color!==void 0){const c=P(a.color,`${r}.tokens.color`,t),m=["background","foreground","muted","mutedForeground","border","primary","primaryForeground","positive","negative","warning","info"];D(c,`${r}.tokens.color`,m,t);const l={};m.forEach(s=>{const f=N(c[s],`${r}.tokens.color.${s}`,120,t);f!==void 0&&(l[s]=f)}),i.color=l}if(a.typography!==void 0){const c=P(a.typography,`${r}.tokens.typography`,t);D(c,`${r}.tokens.typography`,["fontFamily","monoFontFamily"],t);const m=N(c.fontFamily,`${r}.tokens.typography.fontFamily`,500,t,{allowEmpty:!0}),l=N(c.monoFontFamily,`${r}.tokens.typography.monoFontFamily`,500,t,{allowEmpty:!0});i.typography={...m!==void 0?{fontFamily:m}:{},...l!==void 0?{monoFontFamily:l}:{}}}o.tokens=i}if(n.components!==void 0){const a=P(n.components,`${r}.components`,t);if(D(a,`${r}.components`,["chart"],t),a.chart!==void 0){const i=P(a.chart,`${r}.components.chart`,t);D(i,`${r}.components.chart`,["palette"],t);let c;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."}):c=i.palette.map((m,l)=>N(m,`${r}.components.chart.palette.${l}`,120,t)).filter(m=>m!==void 0):t.push({field:`${r}.components.chart.palette`,message:"Expected an array."})),o.components={chart:c?{palette:c}:{}}}}return o}function Zt(e,r){const t="presentation.appearance",n=P(e,t,r);D(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=P(n.schemes,`${t}.schemes`,r);D(a,`${t}.schemes`,["light","dark"],r),o.schemes={...a.light!==void 0?{light:_e(a.light,`${t}.schemes.light`,r)}:{},...a.dark!==void 0?{dark:_e(a.dark,`${t}.schemes.dark`,r)}:{}}}return o}function Xt(e,r){const t="presentation.brandOverrides",n=P(e,t,r);D(n,t,["brandName","logoUrl","link"],r);const o=N(n.brandName,`${t}.brandName`,200,r),a=be(n.logoUrl,`${t}.logoUrl`,r),i=N(n.link,`${t}.link`,120,r);return{...o!==void 0?{brandName:o}:{},...a!==void 0?{logoUrl:a}:{},...i!==void 0?{link:i}:{}}}function er(e,r){const t="presentation.fragments",n=P(e,t,r),o=["preHeaderText","headerBannerHtml","signatureHtml","footerHtml","disclaimerHtml","unsubscribeUrl"];D(n,t,o,r);const a={};return o.forEach(i=>{const c=i==="unsubscribeUrl"?be(n[i],`${t}.${i}`,r):N(n[i],`${t}.${i}`,i==="preHeaderText"?200:5e3,r,{trim:i==="preHeaderText"});c!==void 0&&(a[i]=c)}),a}function tr(e){const r=[],t={};if(e.appearance!==void 0&&(t.appearance=Zt(e.appearance,r)),e.brandOverrides!==void 0&&(t.brandOverrides=Xt(e.brandOverrides,r)),e.fragments!==void 0&&(t.fragments=er(e.fragments,r)),e.viewUrl!==void 0){const n=be(e.viewUrl,"presentation.viewUrl",r);n!==void 0&&(t.viewUrl=n)}return{value:t,issues:r}}const Je=["SUN","MON","TUE","WED","THU","FRI","SAT"],rr=new Map(Je.map((e,r)=>[e,r])),nr={cadence:"weekly",hour:9,minute:0,weekdays:[1]};function or(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 ar(e){return Number.isInteger(e.minute)&&e.minute>=0&&e.minute<=59&&Number.isInteger(e.hour)&&e.hour>=0&&e.hour<=23}function Ze(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 ir(e){if(!ar(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=Ze(e.weekdays);if(!t)throw new Error("Choose at least one weekday.");return`${r} * * ${t.map(n=>Je[n]).join(",")}`}case"twice_monthly":return`${r} 1,15 * *`;case"monthly":return`${r} 1 * *`}}function Xe(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 c=Number(t),m=Number(n);if(c>59||m>23||a!=="*")return{ok:!1,issue:"Choose a supported schedule."};if(o==="*"&&i==="*")return{ok:!0,value:{cadence:"daily",hour:m,minute:c,weekdays:[]}};if(o==="*"&&i!=="*"){const s=i.split(",").map(d=>rr.get(d));if(s.some(d=>d===void 0))return{ok:!1,issue:"Choose a supported schedule."};const f=s,u=Ze(f);return!u||u.some((d,v)=>d!==f[v])?{ok:!1,issue:"Choose a supported schedule."}:{ok:!0,value:{cadence:"weekly",hour:m,minute:c,weekdays:u}}}return o==="1,15"&&i==="*"?{ok:!0,value:{cadence:"twice_monthly",hour:m,minute:c,weekdays:[]}}:o==="1"&&i==="*"?{ok:!0,value:{cadence:"monthly",hour:m,minute:c,weekdays:[]}}:{ok:!1,issue:"Choose a supported schedule."}}function lr(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 cr(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 dr(e,r,t="en-US"){const n=Xe(e);if(!n.ok)return null;try{const o=lr(n.value.hour,n.value.minute,t),a=cr(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}}const sr=new Set(["table","aggregateTable","pivotTable","detailTable"]),mr=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 ur(e){var n,o,a;const r=mr.has(e.type)&&(e.type!=="custom"||!!((n=e.customCardPreferences)!=null&&n.url));return e.type==="text"||!r||V.isCardUnconfigured(e)?{formats:[],defaultFormat:null}:{formats:et({cardType:e.type,allowDownload:(o=e.preferences)==null?void 0:o.allowDownload}),defaultFormat:tt({cardType:e.type,allowDownload:(a=e.preferences)==null?void 0:a.allowDownload})}}function et(e){return e.allowDownload===!1?["pdf"]:["pdf","csv"]}function tt(e){return sr.has(e.cardType)&&e.allowDownload!==!1?"csv":"pdf"}function fr(e){return e!=null&&e.role?e.type==="tenant"?e.role==="POWER_USER":["AUTHOR","ADMIN","SUPER_ADMIN"].includes(e.role):!1}function pr(e){return e.canCreate?[...e.scheduledReportAvailable?["scheduled_report"]:[],...e.analyticalBriefingsEnabled?["analytical_briefing"]:[]]:[]}function rt(e){const r=(e==null?void 0:e.channels)??[];return r.length===1&&r[0]==="EMAIL"}function nt(e){return e.body.type==="generated_analysis"?"Analytical briefing":e.body.type==="custom_message"&&e.attachments.length>0&&rt(e.deliveryConfig)?e.scheduleExpr?"Scheduled report":"On-demand report":"Plain briefing"}function yr(e){const r=nt(e),t=r==="Scheduled report"||r==="On-demand report"?"report":"briefing";return{typeLabel:r,noun:t,pluralNoun:t==="report"?"reports":"briefings"}}const ne="BRIEFING",ot=["markdown","html"],oe=["markdown"],ee=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 at(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())&&$.parseResolvedNumericCanonicalFormat(r.format).ok}function it(e){return e==null?"":at(e)?$.formatNumericCanonical(e.value,e.format):String(e)}function hr(e){return[e.delta,e.percentChange].filter(r=>r!=null).map(it).filter(Boolean).join(" / ")}const lt=new Set(ot),gr=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),de={maxToolCalls:{min:1,max:100},maxPlanningIterations:{min:1,max:10},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},vr=new Set(["letter","legal","a4","a3","tabloid"]),br=new Set(["portrait","landscape"]),Ir=new Set([",",";"," "]),Tr=new Set(["current","all"]),Cr=new Set(["concise","balanced","detailed"]),wr=new Set(["info","positive","warning","critical"]),Er=new Set(["text","number","currency","percent","date","boolean"]),$r=new Set(["left","center","right"]),kr=["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 Z extends Error{constructor(t){super(t.map(n=>`${n.field}: ${n.message}`).join("; "));R(this,"issues");this.name="BriefingContractError",this.issues=t}}function ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e,r,t){e.push({field:r,message:t})}function k(e,r,t){return ct(e)?e:(p(t,r,"Expected an object."),{})}function I(e,r,t,n){const o=new Set(t);Object.keys(e).forEach(a=>{o.has(a)||p(n,r?`${r}.${a}`:a,`Unexpected field "${a}".`)})}function w(e,r,t,n){if(typeof e!="string")return p(n,r,"Expected a string."),"";const o=e.trim();return o?(o.length>t&&p(n,r,`Must be ${t} characters or fewer.`),o):(p(n,r,"Required value cannot be empty."),"")}function E(e,r,t,n){if(e==null)return;if(typeof e!="string"){p(n,r,"Expected a string.");return}const o=e.trim();if(o)return o.length>t&&p(n,r,`Must be ${t} characters or fewer.`),o}function Sr(e,r,t,n){if(typeof e!="string")return p(n,r,"Expected a string."),"";const o=e.trim();return o.length>t&&p(n,r,`Must be ${t} characters or fewer.`),o}function _r(e,r,t){if(e!=null){if(!Number.isInteger(e)||Number(e)<0){p(t,r,"Expected a non-negative integer.");return}return Number(e)}}function A(e,r,t,n={}){if(e==null)return n.required?(p(t,r,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(e))return p(t,r,"Expected an array."),n.required?[]:void 0;const o=[];return e.forEach((a,i)=>{const c=w(a,`${r}.${i}`,y.id,t);c&&!o.includes(c)&&o.push(c)}),n.required&&o.length===0&&p(t,r,"Expected at least one evidence id."),o.length>0||n.required?o:void 0}function U(e,r,t,n){return e==null?r:typeof e!="boolean"?(p(n,t,"Expected a boolean."),r):e}function xr(e,r){return e==null?"ACTIVE":e==="ACTIVE"||e==="PAUSED"||e==="DISABLED"?e:(p(r,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function Rr(e){return e.includes("@")&&e.includes(".")&&!e.includes(" ")}function dt(e,r){if(e==null)return{type:"project"};const t=k(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:w(t.dashboardId,"source.dashboardId",y.id,r)}):(p(r,"source.type","Expected project or dashboard."),{type:"project"})}function st(e,r){const t=k(e,"body",r),n=t.type;return n==="generated_analysis"?(I(t,"body",["type","instruction"],r),{type:"generated_analysis",instruction:w(t.instruction,"body.instruction",y.instruction,r)}):n==="custom_message"?(I(t,"body",["type","message"],r),{type:"custom_message",message:Sr(t.message,"body.message",y.customMessage,r)}):n==="none"?(I(t,"body",["type"],r),{type:"none"}):(p(r,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function Fr(e,r){if(e==null)return[...oe];if(!Array.isArray(e))return p(r,"presentation.artifactFormats","Expected an array."),[...oe];if(e.length===0)return p(r,"presentation.artifactFormats","Choose at least one artifact format."),[];const t=[];return e.forEach((n,o)=>{if(typeof n!="string"||!lt.has(n)){p(r,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}t.includes(n)||t.push(n)}),t}function mt(e,r){if(e==null)return{artifactFormats:[...oe],includeEvidence:!0,includeSql:!0};const t=k(e,"presentation",r);I(t,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format","appearance","brandOverrides","fragments","viewUrl"],r);const n={artifactFormats:Fr(t.artifactFormats,r),includeEvidence:U(t.includeEvidence,!0,"presentation.includeEvidence",r),includeSql:U(t.includeSql,!0,"presentation.includeSql",r)},o=E(t.audience,"presentation.audience",y.presentationAudience,r),a=E(t.tone,"presentation.tone",y.presentationTone,r),i=E(t.format,"presentation.format",y.presentationFormat,r);o&&(n.audience=o),a&&(n.tone=a),i&&(n.format=i);const c=tr(t);return c.issues.forEach(m=>p(r,m.field,m.message)),Object.assign(n,c.value),n}function Ar(e,r,t){return Array.isArray(e)?(e.length===0&&p(t,r,"Expected at least one item."),e.length>F.maxListItems&&p(t,r,`Must have ${F.maxListItems} items or fewer.`),e.slice(0,F.maxListItems).map((n,o)=>w(n,`${r}.${o}`,y.contentItem,t)).filter(Boolean)):(p(t,r,"Expected an array."),[])}function Br(e,r,t){const n=k(e,r,t);if(n.kind==="metric")return I(n,r,["kind","metricId"],t),{kind:"metric",metricId:w(n.metricId,`${r}.metricId`,y.id,t)};if(n.kind==="column")return I(n,r,["kind","columnKey"],t),{kind:"column",columnKey:w(n.columnKey,`${r}.columnKey`,y.id,t)};if(n.kind==="matrix_measure")return I(n,r,["kind","measureId"],t),{kind:"matrix_measure",measureId:w(n.measureId,`${r}.measureId`,y.id,t)};p(t,`${r}.kind`,"Expected metric, column, or matrix_measure.")}function ut(e,r,t){if(e===null||typeof e!="object"||Array.isArray(e))return;const n=k(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))&&p(t,`${r}.value`,"Expected a finite number.");const o=Br(n.target,`${r}.target`,t),a=$.parseResolvedNumericCanonicalFormat(n.format);if(a.ok||a.issues.forEach(i=>p(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 O(e,r,t){if(typeof e=="string")return e;if(typeof e=="number"){if(!Number.isFinite(e)){p(t,r,"Expected a finite number.");return}return e}const n=ut(e,r,t);if(n)return n;p(t,r,"Expected a string, number, or structured numeric value.")}function Pr(e,r,t){if(e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return typeof e=="string"&&e.length>y.contentCell?(p(t,r,`Must be ${y.contentCell} characters or fewer.`),e.slice(0,y.contentCell)):typeof e=="number"&&!Number.isFinite(e)?(p(t,r,"Expected a finite number."),null):e;const n=ut(e,r,t);return n||(p(t,r,"Expected a string, number, boolean, structured numeric value, or null."),null)}function Dr(e,r,t){if(!Array.isArray(e))return p(t,r,"Expected an array."),[];e.length===0&&p(t,r,"Expected at least one column."),e.length>F.maxTableColumns&&p(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}`,c=k(o,i,t);I(c,i,["key","label","kind","align"],t);const m=w(c.key,`${i}.key`,y.id,t);m&&(n.has(m)&&p(t,`${i}.key`,"Column key must be unique."),n.add(m));const l=w(c.label,`${i}.label`,y.contentTitle,t),s=z(c.kind,`${i}.kind`,Er,"text, number, currency, percent, date, or boolean",t),f=z(c.align,`${i}.align`,$r,"left, center, or right",t);return{key:m,label:l,...s?{kind:s}:{},...f?{align:f}:{}}})}function Mr(e,r,t,n){if(!Array.isArray(e))return p(n,r,"Expected an array."),[];e.length>F.maxTableRows&&p(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 c=`${r}.${i}`,m=k(a,c,n);return Object.keys(m).forEach(l=>{o.has(l)||p(n,`${c}.${l}`,`Unexpected table cell "${l}".`)}),Object.fromEntries(t.map(l=>[l.key,Pr(m[l.key]??null,`${c}.${l.key}`,n)]))})}function Or(e,r,t){const n=`content.blocks.${r}`,o=k(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&&p(t,`${n}.level`,"Expected 2 or 3.");const c=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"heading",text:w(o.text,`${n}.text`,y.contentTitle,t),...i?{level:i}:{},...c?{evidenceIds:c}:{}}}if(a==="paragraph"){I(o,n,["type","text","evidenceIds"],t);const i=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"paragraph",text:w(o.text,`${n}.text`,y.contentText,t),...i?{evidenceIds:i}:{}}}if(a==="finding"){I(o,n,["type","title","text","severity","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t),c=z(o.severity,`${n}.severity`,wr,"info, positive, warning, or critical",t);return{type:"finding",...i?{title:i}:{},text:w(o.text,`${n}.text`,y.contentText,t),...c?{severity:c}:{},evidenceIds:A(o.evidenceIds,`${n}.evidenceIds`,t,{required:!0})??[]}}if(a==="bullets"||a==="actions"||a==="limitations"){I(o,n,["type","title","items","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t),c=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:a,...i?{title:i}:{},items:Ar(o.items,`${n}.items`,t),...c?{evidenceIds:c}:{}}}if(a==="metric"){I(o,n,["type","label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const i=O(o.value,`${n}.value`,t)??"";i===""&&p(t,`${n}.value`,"Expected a non-empty string, number, or structured numeric value.");const c=o.previousValue===void 0||o.previousValue===null?o.previousValue:O(o.previousValue,`${n}.previousValue`,t),m=o.delta===void 0||o.delta===null?o.delta:O(o.delta,`${n}.delta`,t),l=o.percentChange===void 0||o.percentChange===null?o.percentChange:O(o.percentChange,`${n}.percentChange`,t),s=E(o.unit,`${n}.unit`,y.contentTitle,t),f=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"metric",label:w(o.label,`${n}.label`,y.contentTitle,t),value:i,...c!==void 0?{previousValue:c}:{},...m!==void 0?{delta:m}:{},...l!==void 0?{percentChange:l}:{},...s?{unit:s}:{},...f?{evidenceIds:f}:{}}}if(a==="kpi_grid"){I(o,n,["type","title","tiles","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t),c=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||p(t,`${n}.tiles`,"Expected an array."),c.length===0&&p(t,`${n}.tiles`,"Expected at least one tile."),c.length>F.maxKpiTiles&&p(t,`${n}.tiles`,`Must have ${F.maxKpiTiles} tiles or fewer.`);const m=c.slice(0,F.maxKpiTiles).map((s,f)=>{const u=`${n}.tiles.${f}`,d=k(s,u,t);I(d,u,["label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const v=O(d.value,`${u}.value`,t)??"";v===""&&p(t,`${u}.value`,"Expected a non-empty string, number, or structured numeric value.");const h=d.previousValue===void 0||d.previousValue===null?d.previousValue:O(d.previousValue,`${u}.previousValue`,t),b=d.delta===void 0||d.delta===null?d.delta:O(d.delta,`${u}.delta`,t),T=d.percentChange===void 0||d.percentChange===null?d.percentChange:O(d.percentChange,`${u}.percentChange`,t),g=E(d.unit,`${u}.unit`,y.contentTitle,t),C=A(d.evidenceIds,`${u}.evidenceIds`,t);return{label:w(d.label,`${u}.label`,y.contentTitle,t),value:v,...h!==void 0?{previousValue:h}:{},...b!==void 0?{delta:b}:{},...T!==void 0?{percentChange:T}:{},...g?{unit:g}:{},...C?{evidenceIds:C}:{}}}),l=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"kpi_grid",...i?{title:i}:{},tiles:m,...l?{evidenceIds:l}:{}}}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))&&p(t,`${n}.value`,"Expected a finite number.");const c=E(o.detail,`${n}.detail`,y.contentText,t),m=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"progress",label:w(o.label,`${n}.label`,y.contentTitle,t),value:i,...c?{detail:c}:{},...m?{evidenceIds:m}:{}}}if(a==="table"){I(o,n,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],t);const i=Dr(o.columns,`${n}.columns`,t),c=E(o.title,`${n}.title`,y.contentTitle,t),m=E(o.id,`${n}.id`,y.id,t),l=E(o.caption,`${n}.caption`,y.contentItem,t),s=_r(o.totalRows,`${n}.totalRows`,t),f=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"table",...m?{id:m}:{},...c?{title:c}:{},columns:i,rows:Mr(o.rows,`${n}.rows`,i,t),...l?{caption:l}:{},...s!==void 0?{totalRows:s}:{},...f?{evidenceIds:f}:{}}}if(a==="evidence_appendix"){I(o,n,["type","title","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t);return{type:"evidence_appendix",...i?{title:i}:{},evidenceIds:A(o.evidenceIds,`${n}.evidenceIds`,t,{required:!0})??[]}}if(a==="sql"){I(o,n,["type","title","sql","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t),c=w(o.sql,`${n}.sql`,y.contentSql,t),m=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"sql",...i?{title:i}:{},sql:c,...m?{evidenceIds:m}:{}}}return p(t,`${n}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."),{type:"paragraph",text:""}}function ft(e){const r=[],t=k(e,"content",r);I(t,"content",["version","title","summary","blocks"],r),t.version!==1&&p(r,"content.version","Expected version 1.");const n=E(t.title,"content.title",y.contentTitle,r),o=E(t.summary,"content.summary",y.contentSummary,r);Array.isArray(t.blocks)||p(r,"content.blocks","Expected an array.");const a=Array.isArray(t.blocks)?t.blocks:[];a.length===0&&p(r,"content.blocks","Expected at least one block."),a.length>F.maxBlocks&&p(r,"content.blocks",`Must have ${F.maxBlocks} blocks or fewer.`);const i=a.slice(0,F.maxBlocks).map((c,m)=>Or(c,m,r));return Ie(r),{version:1,...n?{title:n}:{},...o?{summary:o}:{},blocks:i}}function Kr(e){try{return{valid:!0,value:ft(e),issues:[]}}catch(r){if(r instanceof Z)return{valid:!1,issues:r.issues};throw r}}function te(e,r,t,n){return typeof e=="string"&&t.includes(e)?e:(p(n,r,`Expected ${t.join(" or ")}.`),t[0])}function z(e,r,t,n,o){if(e!=null){if(typeof e=="string"&&t.has(e))return e;p(o,r,`Expected ${n}.`)}}function Nr(e,r,t){if(e!=null){if(!Array.isArray(e)){p(t,r,"Expected an array.");return}return e}}function zr(e,r,t){if(e!=null){if(!ct(e)){p(t,r,"Expected an object.");return}return e}}function Vr(e,r,t){if(e==null)return;const n=k(e,r,t);I(n,r,kr,t);const o={},a=z(n.pageSize,`${r}.pageSize`,vr,"letter, legal, a4, a3, or tabloid",t),i=z(n.orientation,`${r}.orientation`,br,"portrait or landscape",t),c=z(n.delimiter,`${r}.delimiter`,Ir,"comma, semicolon, or tab",t),m=z(n.sheetSelection,`${r}.sheetSelection`,Tr,"current or all",t);a&&(o.pageSize=a),i&&(o.orientation=i),c&&(o.delimiter=c),m&&(o.sheetSelection=m);for(const l of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues","allowDownload"])if(!(n[l]===void 0||n[l]===null)){if(typeof n[l]!="boolean"){p(t,`${r}.${l}`,"Expected a boolean.");continue}o[l]=n[l]}for(const l of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const s=E(n[l],`${r}.${l}`,y.id,t);s&&(o[l]=s)}for(const l of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const s=Nr(n[l],`${r}.${l}`,t);s&&(o[l]=s)}for(const l of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const s=zr(n[l],`${r}.${l}`,t);s&&(o[l]=s)}return Object.keys(o).length>0?o:void 0}function se(e,r,t,n){const o=E(r,t,y.attachmentTitle,n);return o&&(e.title=o),e}function me(e,r,t,n){const o=Vr(r,t,n);return o&&(e.settings=o),e}function Lr(e,r,t){const n=`attachments.${r}`,o=k(e,n,t),a=o.type;if(a==="dashboard"){I(o,n,["type","dashboardId","format","title","settings"],t);const i=se({type:"dashboard",dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),format:te(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return me(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=se({type:a,dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),sheetId:w(o.sheetId,`${n}.sheetId`,y.id,t),format:te(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return me(i,o.settings,`${n}.settings`,t)}if(a==="card"){I(o,n,["type","dashboardId","cardId","format","title","settings"],t);const i=se({type:"card",dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),cardId:w(o.cardId,`${n}.cardId`,y.id,t),format:te(o.format,`${n}.format`,["csv","pdf"],t)},o.title,`${n}.title`,t);return me(i,o.settings,`${n}.settings`,t)}return p(t,`${n}.type`,"Expected dashboard, dashboard_sheet, document_sheet, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function Ur(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 pt(e,r){if(e==null)return[];if(!Array.isArray(e))return p(r,"attachments","Expected an array."),[];e.length>ee&&p(r,"attachments",`Choose ${ee} attachments or fewer.`);const t=e.slice(0,ee).map((o,a)=>Lr(o,a,r)),n=new Set;return t.forEach((o,a)=>{const i=Ur(o);n.has(i)&&p(r,`attachments.${a}`,"Duplicate attachment."),n.add(i)}),t}function yt(e,r){if(e==null)return;const t=k(e,"limits",r);I(t,"limits",Object.keys(de),r);const n={};return Object.keys(de).forEach(o=>{const a=t[o];if(a==null)return;const i=de[o];if(typeof a!="number"||!Number.isInteger(a)||a<i.min||a>i.max){p(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 Ie(e){if(e.length>0)throw new Z(e)}function ht(e,r,t){!(e.type==="generated_analysis"||e.type==="custom_message"&&!!e.message.trim())&&r.length===0&&p(t,"body","Add briefing instructions, a custom message, or at least one attachment.")}function qr(e,r,t){e==null||e.forEach((n,o)=>{const a=`${t}.${o}.scope`,i=n.scope.attachmentIndex;if(i===void 0)throw new $.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify the attachment that owns this presentation entry.`);const c=r[i];if(!c)throw new $.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify an existing attachment.`);if(n.scope.dashboardId!==c.dashboardId)throw new $.PresentationExecutionSnapshotError(`${a}.dashboardId must match the dashboard selected by the referenced attachment.`);if(c.type==="card"&&n.scope.cardId!==c.cardId)throw new $.PresentationExecutionSnapshotError(`${a}.cardId must match the card selected by the referenced attachment.`)})}function Te(e){const r=[],t=k(e,"jobConfig",r);I(t,"jobConfig",["kind","presentationExecutionSnapshot","source","body","attachments","presentation","limits"],r),t.kind!==ne&&p(r,"kind","Expected BRIEFING.");let n;try{n=$.parsePresentationExecutionSnapshot(t.presentationExecutionSnapshot)}catch(l){if(l instanceof $.PresentationExecutionSnapshotError)throw l;p(r,"jobConfig.presentationExecutionSnapshot",l instanceof Error?l.message:"Invalid presentation snapshot.")}const o=dt(t.source,r),a=st(t.body,r),i=pt(t.attachments,r),c=mt(t.presentation,r),m=yt(t.limits,r);return ht(a,i,r),qr(n==null?void 0:n.resolvedFormats,i,"jobConfig.presentationExecutionSnapshot.resolvedFormats"),Ie(r),{kind:ne,presentationExecutionSnapshot:n,source:o,body:a,attachments:i,presentation:c,...m?{limits:m}:{}}}function jr(e){return Te({...e,kind:ne})}function Ce(e,r,t,n="deliveryConfig.recipients"){const o=`${n}.${r}`,a=k(e,o,t),i=a.type;if(i==="email"){I(a,o,["type","address","name"],t);const c=w(a.address,`${o}.address`,y.id,t),m=E(a.name,`${o}.name`,y.attachmentTitle,t);return c&&!Rr(c)&&p(t,`${o}.address`,"Email address is invalid."),{type:"email",address:c,...m?{name:m}:{}}}return i==="user"?(I(a,o,["type","userId"],t),{type:"user",userId:w(a.userId,`${o}.userId`,y.id,t)}):i==="tenant_user"?(I(a,o,["type","tenantUserId"],t),{type:"tenant_user",tenantUserId:w(a.tenantUserId,`${o}.tenantUserId`,y.id,t)}):i==="group"?(I(a,o,["type","groupId"],t),{type:"group",groupId:w(a.groupId,`${o}.groupId`,y.id,t)}):(p(t,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function Gr(e,r){return e==null?[]:Array.isArray(e)?e.map((t,n)=>Ce(t,n,r)):(p(r,"deliveryConfig.recipients","Expected an array."),[])}function Hr(e,r){if(!Array.isArray(e))return p(r,"deliveryConfig.channels","Expected an array."),[];const t=[];return e.forEach((n,o)=>{if(!we(n)){p(r,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}t.includes(n)||t.push(n)}),t}function Wr(e,r,t){if(e==null)return;const n=k(e,r,t),o={};return Object.entries(n).forEach(([a,i])=>{if(typeof i!="string"){p(t,`${r}.${a}`,"Expected a string.");return}o[a]=i.trim()}),Object.keys(o).length>0?o:void 0}function Yr(e,r,t){if(e==null)return;const n=k(e,r,t);I(n,r,["url","method","headers","secretEncrypted"],t);const o=n.method===void 0||n.method===null?void 0:te(n.method,`${r}.method`,["POST","PUT"],t),a=Wr(n.headers,`${r}.headers`,t),i=E(n.secretEncrypted,`${r}.secretEncrypted`,2e3,t);return{url:w(n.url,`${r}.url`,2e3,t),...o?{method:o}:{},...a?{headers:a}:{},...i?{secretEncrypted:i}:{}}}function Qr(e,r,t){const n=k(e,r,t),o=n.type;if(o==="channel"){I(n,r,["type","channelId","channelName","isPrivate"],t);const a=E(n.channelName,`${r}.channelName`,y.attachmentTitle,t),i=n.isPrivate===void 0||n.isPrivate===null?void 0:U(n.isPrivate,!1,`${r}.isPrivate`,t);return{type:"channel",channelId:w(n.channelId,`${r}.channelId`,y.id,t),...a?{channelName:a}:{},...i!==void 0?{isPrivate:i}:{}}}return o==="dm"?(I(n,r,["type","recipient"],t),p(t,`${r}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:Ce(n.recipient,0,t,`${r}.recipient`)}):(p(t,`${r}.type`,"Expected channel."),{type:"channel",channelId:""})}function Jr(e,r,t){if(e==null)return;if(!Array.isArray(e)){p(t,r,"Expected an array.");return}const n=e.map((o,a)=>Ce(o,a,t,r));return n.length>0?n:void 0}function Zr(e,r,t){if(e==null)return;const n=k(e,r,t);I(n,r,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],t);const o=Jr(n.threadMentions,`${r}.threadMentions`,t),a=U(n.postThreadDetail,!0,`${r}.postThreadDetail`,t),i=U(n.includeDashboardLink,!0,`${r}.includeDashboardLink`,t),c=U(n.includeBriefingLink,!0,`${r}.includeBriefingLink`,t);return{destination:Qr(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:c}:{}}}function Xr(e,r,t){const n=k(e,r,t);I(n,r,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],t);const o=z(n.formatProfile,`${r}.formatProfile`,Cr,"concise, balanced, or detailed",t),a=E(n.subjectOverride,`${r}.subjectOverride`,500,t),i=E(n.titleOverride,`${r}.titleOverride`,500,t),c=E(n.summaryOverride,`${r}.summaryOverride`,2e3,t),m=U(n.actionBlockVisible,!0,`${r}.actionBlockVisible`,t),l=Yr(n.webhookConfig,`${r}.webhookConfig`,t),s=Zr(n.slackConfig,`${r}.slackConfig`,t);return{...o?{formatProfile:o}:{},...a?{subjectOverride:a}:{},...i?{titleOverride:i}:{},...c?{summaryOverride:c}:{},...n.actionBlockVisible!==void 0?{actionBlockVisible:m}:{},...s?{slackConfig:s}:{},...l?{webhookConfig:l}:{}}}function en(e,r){if(e==null)return;const t=k(e,"deliveryConfig.channelConfigs",r),n={};return Object.entries(t).forEach(([o,a])=>{if(!we(o)){p(r,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}n[o]=Xr(a,`deliveryConfig.channelConfigs.${o}`,r)}),Object.keys(n).length>0?n:void 0}function tn(e,r){var m,l,s;if(e==null)return null;const t=k(e,"deliveryConfig",r);I(t,"deliveryConfig",["recipients","channels","channelConfigs"],r);const n=en(t.channelConfigs,r),o=Gr(t.recipients,r),a=Hr(t.channels,r),i=((l=(m=n==null?void 0:n.SLACK)==null?void 0:m.slackConfig)==null?void 0:l.destination.type)==="channel"&&!!n.SLACK.slackConfig.destination.channelId.trim();return a.some(f=>f!=="SLACK")&&o.length===0&&p(r,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),a.length===0&&p(r,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),a.includes("SLACK")&&!i&&p(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)&&p(r,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:a,...n?{channelConfigs:n}:{}}}function le(e){const r=[],t=k(e,"draft",r);I(t,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],r);const n=w(t.name,"name",y.name,r),o=E(t.description,"description",y.description,r)??null,a=E(t.scheduleExpr,"scheduleExpr",500,r)??null,i=E(t.timezone,"timezone",200,r)??"UTC",c=xr(t.status,r),m=dt(t.source,r),l=st(t.body,r),s=pt(t.attachments,r),f=mt(t.presentation,r),u=yt(t.limits,r),d=tn(t.deliveryConfig,r);return ht(l,s,r),Ie(r),{name:n,description:o,status:c,scheduleExpr:a,timezone:i,source:m,body:l,attachments:s,presentation:f,...u?{limits:u}:{},deliveryConfig:d}}function rn(e){return le(e)}function nn(e){return le(e)}function on(e){try{return{valid:!0,value:le(e),issues:[]}}catch(r){if(r instanceof Z)return{valid:!1,issues:r.issues};throw r}}function an(e){try{return{valid:!0,value:Te(e),issues:[]}}catch(r){if(r instanceof Z)return{valid:!1,issues:r.issues};throw r}}function ln(e){return typeof e=="string"&<.has(e)}function we(e){return typeof e=="string"&&gr.has(e)}exports.AmbiguousGroupedTemporalGrainError=Fe;exports.BRIEFING_ARTIFACT_FORMATS=ot;exports.BRIEFING_CONTENT_LIMITS=F;exports.BRIEFING_KIND=ne;exports.BRIEFING_TEXT_LIMITS=y;exports.BriefingContractError=Z;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=oe;exports.DEFAULT_BRIEFING_SCHEDULE=nr;exports.DashboardTemporalBoundaryError=K;exports.MAX_BRIEFING_ATTACHMENTS=ee;exports.PYTHON_DEFAULT_CODE=Re;exports.buildBriefingJobConfig=jr;exports.buildBriefingScheduleExpr=ir;exports.buildCreateBriefingRequest=rn;exports.buildDashboardCardTableConfig=It;exports.buildDashboardTemporalSnapshotEntries=Qt;exports.buildSlotOrderedCards=He;exports.buildUpdateBriefingRequest=nn;exports.canCreateBriefingForUser=fr;exports.createCardsFromSlots=jt;exports.describeBriefingSchedule=dr;exports.findCustomVisualConfigCard=Ye;exports.formatBriefingComparisonValues=hr;exports.formatBriefingDisplayValue=it;exports.formatGroupedTemporalFieldValue=Rt;exports.formatGroupedTemporalRecords=kt;exports.formatGroupedTemporalValue=he;exports.getActiveCardFromVisualResource=Kt;exports.getActiveFrameCard=ge;exports.getBriefingCardAttachmentCapability=ur;exports.getBriefingCardAttachmentFormats=et;exports.getBriefingCreationIntents=pr;exports.getBriefingDisplayTypeLabel=nt;exports.getBriefingPresentation=yr;exports.getConfigSlotExpectedType=Ut;exports.getCustomVisualInputCards=We;exports.getDefaultBriefingCardAttachmentFormat=tt;exports.getEffectiveCardTypeForSlot=qt;exports.getSlotDefinitionForIndex=ve;exports.getSlotExpectedChartType=ie;exports.getSlotIndexForCard=Ge;exports.isBriefingArtifactFormat=ln;exports.isBriefingDeliveryChannel=we;exports.isBriefingNumericValue=at;exports.isCardRawTemporalPresentationActivated=Pt;exports.isCardRawTemporalResultCompatible=Ot;exports.isCustomVisualConfigCard=fe;exports.isDeclaredSqlRawTemporalPresentationCard=Ve;exports.isEmailOnlyBriefingDelivery=rt;exports.isGroupedTemporalResultCompatible=St;exports.isPivotResultContractCompatibleWithCardConfig=De;exports.isValidBriefingTimezone=or;exports.normalizeBriefingContentDocument=ft;exports.normalizeBriefingDraft=le;exports.normalizeBriefingJobConfig=Te;exports.normalizeDashboardCardPythonCode=j;exports.normalizeGroupedTemporalField=Ae;exports.normalizeMultiInputPayload=Ht;exports.parseBriefingScheduleExpr=Xe;exports.parseCanonicalPivotResultTransportOnce=Pe;exports.parseFrameObject=qe;exports.presentRawTemporalCell=Mt;exports.previewDeclaredSqlRawTemporalFormat=At;exports.reindexSlotCards=Lt;exports.resolveCardRawTemporalPresentation=Ue;exports.resolveCartesianTemporalActivation=wt;exports.resolveDashboardCardResultOwner=J;exports.resolveDashboardTemporalActivation=Be;exports.resolveDeclaredSqlRawTemporalFormat=ae;exports.resolveDetailTableRawTemporalPresentation=Le;exports.resolveGroupedTemporalFieldPresentationByRole=Oe;exports.resolveGroupedTemporalFieldSnapshotFormat=Ke;exports.resolveGroupedTemporalPresentation=xt;exports.resolveMultiInputType=Qe;exports.resolveMultiInputTypeFromVisual=Gt;exports.resolveRegularTableTemporalActivation=Ct;exports.validateBriefingContentDocument=Kr;exports.validateBriefingDraft=on;exports.validateBriefingJobConfig=an;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var _=Object.defineProperty;var B=(e,t,a)=>t in e?_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var I=(e,t,a)=>B(e,typeof t!="symbol"?t+"":t,a);const C=require("./temporal-bucket-DHY1y9lq.cjs"),S=require("./validators-BDYprKI9.cjs"),T=require("./temporal-bucket-contract-D2-93DGr.cjs");function k(e){return`compat-filter:${e}`}function R(e){return`compat-control:${e}`}function q(e,t){return`compat-inline-filter:${e}:${t}`}function K(e,t){return`compat-card-control:${e}:${t}`}class x extends Error{constructor(a){super(a.message);I(this,"code");I(this,"path");this.name="MatrixResultContractError",this.code=a.code,this.path=a.path}}function O(e){var u,m,p;const t=V(e);if(t!==2)throw new x({code:"unsupported_matrix_result_version",message:`Canonical Matrix results require schemaVersion 2; received ${String(t)}.`,path:"schemaVersion"});const a=S.semaphorMatrixResultSchema.safeParse(e);if(!a.success){const d=a.error.issues[0];throw o((d==null?void 0:d.message)||"Canonical Matrix result has an invalid shape.",d==null?void 0:d.path.join("."))}const r=a.data,s={row:$(r.axes.rows.levels,"axes.rows.levels"),column:$(r.axes.columns.levels,"axes.columns.levels")};P(r),b(r,"row"),b(r,"column");const n=new Set([...r.axes.rows.nodeIds,...r.axes.columns.nodeIds]),i=new Set;for(const[d,l]of Object.entries(r.nodesById)){if(l.id!==d)throw o("Matrix node directory key must equal node.id.",`nodesById.${d}.id`);if(!n.has(d))throw o("Matrix node directory cannot contain nodes omitted from both axes.",`nodesById.${d}`);G(l,s[l.axis],`nodesById.${d}`);const f=JSON.stringify([l.axis,l.path,l.isSubtotal===!0,l.isGrandTotal===!0]);if(i.has(f))throw o("Matrix nodes must have unique canonical path and total-role identity.",`nodesById.${d}`);i.add(f),E(r,l,`nodesById.${d}`)}const c=new Set;for(const[d,l]of r.cells.entries()){if(!((u=r.nodesById[l.rowId])!=null&&u.axis)||((m=r.nodesById[l.rowId])==null?void 0:m.axis)!=="row")throw o("Matrix cell rowId must reference a row node.",`cells.${d}.rowId`);if(l.columnId&&((p=r.nodesById[l.columnId])==null?void 0:p.axis)!=="column")throw o("Matrix cell columnId must reference a column node.",`cells.${d}.columnId`);if(!r.measuresById[l.measureId])throw o("Matrix cell measureId must reference a measure.",`cells.${d}.measureId`);const f=H(r.nodesById[l.rowId],l.columnId?r.nodesById[l.columnId]:void 0);if(l.role!==f)throw o("Matrix cell role must match its referenced row and column total roles.",`cells.${d}.role`);const y=JSON.stringify([l.rowId,l.columnId??null,l.measureId]);if(c.has(y))throw o("Matrix result cannot contain duplicate physical cell addresses.",`cells.${d}`);c.add(y)}return j(r,s),r}function $(e,t){var r;const a=new Map;for(const[s,n]of e.entries()){const i=`${t}.${s}`;if(a.has(n.instanceId))throw o("Matrix axis level ids must be unique.",`${i}.instanceId`);a.set(n.instanceId,n);const c=n.field.role==="date"||n.field.dataType==="date"||n.field.dataType==="datetime",u=n.field.dataType==="string"||n.field.dataType==="number"||n.field.dataType==="boolean";if(c&&!n.grain)throw o("Temporal Matrix axis level is missing its explicit grain.",`${i}.grain`);if(u&&n.grain)throw o("Non-temporal Matrix axis level cannot carry a grain.",`${i}.grain`);if(n.grain){if(!n.temporalBucket)throw o("Temporal Matrix axis level is missing governed bucket metadata.",`${i}.temporalBucket`);const m=T.validateTemporalBucketMetadata(n.temporalBucket);if(!m.ok||((r=m.value)==null?void 0:r.granularity)!==n.grain)throw o("Matrix axis grain and temporal metadata must agree.",`${i}.temporalBucket`)}else if(n.temporalBucket)throw o("Non-temporal Matrix axis levels cannot carry temporal bucket metadata.",i)}return a}function b(e,t){var s;const a=t==="row"?e.axes.rows:e.axes.columns,r=new Set;for(const[n,i]of a.nodeIds.entries()){if(r.has(i))throw o("Matrix axis node ids must be unique.",`axes.${t==="row"?"rows":"columns"}.nodeIds.${n}`);if(r.add(i),((s=e.nodesById[i])==null?void 0:s.axis)!==t)throw o("Matrix axis node id references the wrong axis.",`axes.${t==="row"?"rows":"columns"}.nodeIds.${n}`)}}function G(e,t,a){if(e.isGrandTotal){if(e.isSubtotal)throw o("Matrix nodes cannot be both subtotal and grand total.",a);if(e.path.length!==0)throw o("Matrix grand-total nodes must have an empty member path.",`${a}.path`);return}if(!e.path.length||e.level!==e.path.length-1)throw o("Ordinary and subtotal Matrix nodes require a level-aligned non-empty path.",a);const r=[...t.values()];if(e.path.length>r.length)throw o("Matrix node path exceeds its authored axis depth.",`${a}.path`);if(e.isSubtotal&&e.path.length>=r.length)throw o("Matrix subtotal nodes must identify a proper authored-axis prefix.",`${a}.path`);e.path.forEach((c,u)=>{const m=r[u];if(c.instanceId==="__matrix_remaining__"&&c.fieldKey==="__matrix_remaining__"&&c.value==="__matrix_remaining__"){if(u!==e.path.length-1)throw o("Matrix remaining-member identity must be the terminal path segment.",`${a}.path.${u}`);if(typeof c.label!="string")throw o("Matrix remaining-member paths require their explicit display label.",`${a}.path.${u}.label`);return}if(!m||c.instanceId!==m.instanceId||c.fieldKey!==m.fieldKey)throw o("Matrix member path must follow authored axis order and identity.",`${a}.path.${u}`);M(c,m,`${a}.path.${u}`)});const s=e.path[e.path.length-1],n=s.instanceId==="__matrix_remaining__"&&s.fieldKey==="__matrix_remaining__"&&s.value==="__matrix_remaining__";if(!w(e.value,s.value))throw o("Matrix node value must equal its final canonical path member.",`${a}.value`);const i=r[e.path.length-1];if(i!=null&&i.temporalBucket&&!e.isSubtotal&&!n&&e.label!==void 0)throw o("Temporal Matrix nodes cannot transport display labels.",`${a}.label`);if((!(i!=null&&i.temporalBucket)||n)&&typeof e.label!="string")throw o("Non-temporal Matrix nodes require a display label.",`${a}.label`)}function H(e,t){return e.isGrandTotal&&(t!=null&&t.isGrandTotal)?"matrixGrandTotal":e.isGrandTotal?"rowGrandTotal":t!=null&&t.isGrandTotal?"columnGrandTotal":e.isSubtotal&&(t!=null&&t.isSubtotal)?"subtotalIntersection":e.isSubtotal?"rowSubtotal":t!=null&&t.isSubtotal?"columnSubtotal":"value"}function M(e,t,a){if(t.temporalBucket){if(e.label!==void 0)throw o("Temporal Matrix path members cannot transport display labels.",`${a}.label`);if(e.value!==null&&typeof e.value!="string")throw o("Temporal Matrix member values must be canonical strings or null.",`${a}.value`);const r=C.parseTemporalBucketValue(e.value,t.temporalBucket);if(!r.ok)throw o(r.error.message,`${a}.value`)}else if(typeof e.label!="string")throw o("Non-temporal Matrix path members require a display label.",`${a}.label`)}function j(e,t){const a=[...t.row.values()];if(e.layout.rowHeaderLevels.length!==a.length)throw o("Matrix row-header layout must describe every row-axis level exactly once.","layout.rowHeaderLevels");e.layout.rowHeaderLevels.forEach((s,n)=>{var i;if(s.fieldInstanceId!==((i=a[n])==null?void 0:i.instanceId))throw o("Matrix row-header layout must follow authored row-axis order.",`layout.rowHeaderLevels.${n}.fieldInstanceId`)});for(const[s,n]of e.layout.columnHeaderRows.entries())for(const[i,c]of n.cells.entries()){if(g(c.columnPath,t.column,`layout.columnHeaderRows.${s}.cells.${i}.columnPath`),c.measureInstanceId&&!e.measuresById[c.measureInstanceId])throw o("Matrix header measureInstanceId must reference a measure.",`layout.columnHeaderRows.${s}.cells.${i}.measureInstanceId`);if(c.role==="columnHeader"&&c.label!==void 0)throw o("Matrix member headers cannot transport composed display labels.",`layout.columnHeaderRows.${s}.cells.${i}.label`)}const r=new Set;for(const[s,n]of e.layout.columns.entries()){if(r.has(n.id))throw o("Matrix layout column ids must be unique.",`layout.columns.${s}.id`);if(r.add(n.id),g(n.columnPath,t.column,`layout.columns.${s}.columnPath`),n.role==="value"&&n.columnPath.length>0&&n.label!==void 0)throw o("Matrix value columns with member paths cannot transport composed display labels.",`layout.columns.${s}.label`);if(!e.measuresById[n.measureInstanceId])throw o("Matrix layout column measureInstanceId must reference a measure.",`layout.columns.${s}.measureInstanceId`);if(n.columnNodeId){const i=e.nodesById[n.columnNodeId];if((i==null?void 0:i.axis)!=="column"||!w(i.path,n.columnPath))throw o("Matrix layout column must match its referenced column node path.",`layout.columns.${s}.columnNodeId`)}else if(t.column.size>0)throw o("Matrix columns with an authored column axis require a columnNodeId.",`layout.columns.${s}.columnNodeId`)}}function g(e,t,a){const r=[...t.values()];if(e.length>r.length)throw o("Matrix layout path exceeds its authored axis depth.",a);e.forEach((s,n)=>{const i=r[n];if(!i||s.instanceId!==i.instanceId||s.fieldKey!==i.fieldKey)throw o("Matrix layout path must follow authored axis order and identity.",`${a}.${n}`);M(s,i,`${a}.${n}`)})}function E(e,t,a){if(!t.parentId)return;const r=e.nodesById[t.parentId];if(!r)throw o("Matrix parentId must reference an existing node.",`${a}.parentId`);if(r.axis!==t.axis||r.path.length!==t.path.length-1||!w(r.path,t.path.slice(0,-1)))throw o("Matrix parentId must reference the immediate same-axis path prefix.",`${a}.parentId`)}function P(e){for(const[t,a]of[["rows",e.axes.rows],["columns",e.axes.columns]]){const r=t==="rows"?"row":"column";a.levels.forEach((s,n)=>{const i=e.fieldsById[s.instanceId];if(!i||i.instanceId!==s.instanceId||i.fieldKey!==s.fieldKey||i.role!==r||!v(i.field,s.field))throw o("Matrix axis level must have one matching role-scoped field descriptor.",`axes.${t}.levels.${n}`)})}for(const[t,a]of Object.entries(e.measuresById)){if(a.instanceId!==t)throw o("Matrix measure directory key must equal measure.instanceId.",`measuresById.${t}.instanceId`);const r=e.fieldsById[t];if(!r||r.instanceId!==t||r.fieldKey!==a.fieldKey||r.role!=="measure"||!v(r.field,a.field))throw o("Matrix measure must have one matching field descriptor.",`measuresById.${t}`)}}function V(e){return e&&typeof e=="object"?e.schemaVersion:void 0}function w(e,t){return JSON.stringify(e)===JSON.stringify(t)}function v(e,t){return h(e)===h(t)}function h(e){if(Array.isArray(e))return`[${e.map(h).join(",")}]`;if(e&&typeof e=="object"){const t=e;return`{${Object.keys(t).filter(a=>t[a]!==void 0).sort().map(a=>`${JSON.stringify(a)}:${h(t[a])}`).join(",")}}`}return e===void 0?"undefined":JSON.stringify(e)}function o(e,t){return new x({code:"invalid_matrix_result_contract",message:e,path:t})}exports.MatrixResultContractError=x;exports.getCardControlCompatInputId=K;exports.getCardInlineFilterCompatInputId=q;exports.getDashboardControlCompatInputId=R;exports.getDashboardFilterCompatInputId=k;exports.parseCanonicalMatrixResult=O;
|