react-semaphor 0.1.487 → 0.1.489

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/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +1 -1
  3. package/dist/brand-studio/index.cjs +1 -1
  4. package/dist/brand-studio/index.js +3 -3
  5. package/dist/briefings/index.cjs +1 -1
  6. package/dist/briefings/index.js +3 -3
  7. package/dist/chunks/{calculated-field-identity-CQb7MOl2.js → calculated-field-identity-CSabKrXt.js} +2 -2
  8. package/dist/chunks/{calculated-field-identity-Dwl8yGej.cjs → calculated-field-identity-D4VOHjBJ.cjs} +1 -1
  9. package/dist/chunks/{constants-DCOEfAqV.cjs → constants-BMfm1XgO.cjs} +1 -1
  10. package/dist/chunks/{constants-CHyHJrbM.js → constants-D47EhfJR.js} +3 -3
  11. package/dist/chunks/{dashboard-briefing-launcher-CEFTQ1Bo.js → dashboard-briefing-launcher-BkYSN0Em.js} +1177 -1161
  12. package/dist/chunks/dashboard-briefing-launcher-TwquBRrW.cjs +21 -0
  13. package/dist/chunks/{dashboard-controls-B8sB1B3b.js → dashboard-controls-AmaFS8Kl.js} +10 -10
  14. package/dist/chunks/{dashboard-controls-DJrGf3ZB.cjs → dashboard-controls-Mj_mqC8u.cjs} +1 -1
  15. package/dist/chunks/{dashboard-json-B4KiEU0Q.js → dashboard-json-CdVpJZPY.js} +6 -6
  16. package/dist/chunks/{dashboard-json-BlcAA_hB.cjs → dashboard-json-X6uhUYk3.cjs} +1 -1
  17. package/dist/chunks/{edit-dashboard-visual-CoWjnH66.js → edit-dashboard-visual-DOBFMhus.js} +1967 -1969
  18. package/dist/chunks/{edit-dashboard-visual-Dy3g1mEH.cjs → edit-dashboard-visual-ehgeS2ss.cjs} +10 -10
  19. package/dist/chunks/{editor-action-buttons-CMlgLbyo.js → editor-action-buttons-BeiN-K5d.js} +5 -5
  20. package/dist/chunks/{editor-action-buttons-CCm0eEz_.cjs → editor-action-buttons-CRrxjkAi.cjs} +1 -1
  21. package/dist/chunks/{field-aggregations-4O27uCsl.js → field-aggregations-J7de9KZm.js} +2 -2
  22. package/dist/chunks/{field-aggregations-D9ZfvxOG.cjs → field-aggregations-hx8odlTh.cjs} +1 -1
  23. package/dist/chunks/{index-BJwEDK3K.cjs → index-9g7-nCDB.cjs} +230 -229
  24. package/dist/chunks/{index-DOBJv70o.js → index-BDtC8et3.js} +5 -5
  25. package/dist/chunks/{index-DmwnCmOH.js → index-CnZ0x05b.js} +25070 -25029
  26. package/dist/chunks/{index-BhsHg66K.cjs → index-Df4YBtX5.cjs} +1 -1
  27. package/dist/chunks/{matrix-card-CoQiV9pN.js → matrix-card-5R39CCdj.js} +1 -1
  28. package/dist/chunks/{matrix-card-JYMYSX0x.cjs → matrix-card-DzkJRoM4.cjs} +1 -1
  29. package/dist/chunks/{matrix-control-sources-C5yR-8Os.cjs → matrix-control-sources-BWbqiGmN.cjs} +1 -1
  30. package/dist/chunks/{matrix-control-sources-CVKluUf_.js → matrix-control-sources-DxjWV8ry.js} +4 -4
  31. package/dist/chunks/{matrix-formatter-C3cZwlyH.cjs → matrix-formatter-3QR1mqhn.cjs} +1 -1
  32. package/dist/chunks/{matrix-formatter-PvfZAZMO.js → matrix-formatter-youWVghC.js} +2 -2
  33. package/dist/chunks/matrix-operation-contract-BiUMcd6G.cjs +1 -0
  34. package/dist/chunks/{matrix-operation-contract-DITvltmL.js → matrix-operation-contract-D5I-t3i7.js} +2 -0
  35. package/dist/chunks/{pivot-header-presentation-BNk7eOw5.js → pivot-header-presentation-BslEo_4O.js} +2 -2
  36. package/dist/chunks/{pivot-header-presentation-D07xrP9g.cjs → pivot-header-presentation-Dcd4IBM5.cjs} +1 -1
  37. package/dist/chunks/{pivot-result-lifecycle-CmTnVy3z.js → pivot-result-lifecycle-BCoOFUiU.js} +1 -1
  38. package/dist/chunks/{pivot-result-lifecycle-lfXjvoZD.cjs → pivot-result-lifecycle-H_pntnd9.cjs} +1 -1
  39. package/dist/chunks/{report-preferences-dialog-BxS10Skt.cjs → report-preferences-dialog-BkhwOcF7.cjs} +1 -1
  40. package/dist/chunks/{report-preferences-dialog-CK7Yst5x.js → report-preferences-dialog-CcyeSXxN.js} +4 -4
  41. package/dist/chunks/{semantic-format-BOzelQDB.cjs → semantic-format-CMPIcb8l.cjs} +1 -1
  42. package/dist/chunks/{semantic-format-C_bee0be.js → semantic-format-UvUAyZS-.js} +1 -1
  43. package/dist/chunks/{switch-BiQDKn8o.js → switch-BPhOmWZm.js} +6 -6
  44. package/dist/chunks/{switch-DAO_vHPc.cjs → switch-BabZv_0t.cjs} +1 -1
  45. package/dist/chunks/{update-policy-C291nphu.cjs → update-policy-BP_2uCgs.cjs} +1 -1
  46. package/dist/chunks/{update-policy-kjd-Z5jD.js → update-policy-D3I1J2kl.js} +1 -1
  47. package/dist/dashboard/index.cjs +1 -1
  48. package/dist/dashboard/index.js +1 -1
  49. package/dist/dashboard-authoring/index.cjs +1 -1
  50. package/dist/dashboard-authoring/index.js +7 -7
  51. package/dist/data-app-builder/index.cjs +1 -1
  52. package/dist/data-app-builder/index.js +2 -2
  53. package/dist/data-app-codegen/index.cjs +1 -1
  54. package/dist/data-app-codegen/index.js +2 -2
  55. package/dist/data-app-codegen-node/index.cjs +1 -1
  56. package/dist/data-app-codegen-node/index.js +3 -3
  57. package/dist/data-app-sdk/index.cjs +1 -1
  58. package/dist/data-app-sdk/index.js +2 -2
  59. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  60. package/dist/data-app-sdk-adapters/index.js +1 -1
  61. package/dist/data-app-sdk-validation/index.cjs +1 -1
  62. package/dist/data-app-sdk-validation/index.js +2 -2
  63. package/dist/format-utils/index.cjs +1 -1
  64. package/dist/format-utils/index.js +8 -8
  65. package/dist/index.cjs +1 -1
  66. package/dist/index.js +11 -11
  67. package/dist/style.css +1 -1
  68. package/dist/surfboard/index.cjs +1 -1
  69. package/dist/surfboard/index.js +2 -2
  70. package/dist/types/analytics-protocol.d.ts +60 -0
  71. package/dist/types/dashboard-assistant.d.ts +10 -0
  72. package/dist/types/data-app-sdk-validation.d.ts +10 -0
  73. package/dist/types/data-app-sdk.d.ts +36 -0
  74. package/dist/types/main.d.ts +45 -6
  75. package/package.json +1 -1
  76. package/dist/chunks/dashboard-briefing-launcher-DuUM-xZw.cjs +0 -26
  77. package/dist/chunks/matrix-operation-contract-CCfuWtro.cjs +0 -1
@@ -1,4 +1,4 @@
1
- "use strict";var wt=Object.defineProperty;var Et=(e,r,t)=>r in e?wt(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var F=(e,r,t)=>Et(e,typeof r!="symbol"?r+"":r,t);const A=require("./raw-temporal-DcHmXurp.cjs"),V=require("./validators-4dRtYUI1.cjs");require("./matrix-continuation-6nhDy-lF.cjs");require("./matrix-operation-contract-CCfuWtro.cjs");const ge=require("../value-format-preferences/index.cjs"),B=require("./pivot-result-lifecycle-lfXjvoZD.cjs"),$=require("zod"),xt=require("./matrix-definition-Z80mIEfu.cjs"),P=require("./constants-DCOEfAqV.cjs"),St=require("./matrix-card-JYMYSX0x.cjs"),z=require("./pivot-result-identity-CmvwpG4K.cjs"),ke=require("./temporal-bucket-contract-CPuYzg7A.cjs"),Y=require("./temporal-bucket-4YEPEKlJ.cjs"),ie=require("./field-aggregations-D9ZfvxOG.cjs"),Be=require("./raw-temporal-contract-Bg1mtRGE.cjs"),se=require("./canonical-result-keys-Cb96edol.cjs"),De=`import pandas as pd
1
+ "use strict";var wt=Object.defineProperty;var Et=(e,r,t)=>r in e?wt(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var F=(e,r,t)=>Et(e,typeof r!="symbol"?r+"":r,t);const A=require("./raw-temporal-DcHmXurp.cjs"),V=require("./validators-4dRtYUI1.cjs");require("./matrix-continuation-6nhDy-lF.cjs");require("./matrix-operation-contract-BiUMcd6G.cjs");const ge=require("../value-format-preferences/index.cjs"),B=require("./pivot-result-lifecycle-H_pntnd9.cjs"),$=require("zod"),xt=require("./matrix-definition-Z80mIEfu.cjs"),P=require("./constants-BMfm1XgO.cjs"),St=require("./matrix-card-DzkJRoM4.cjs"),z=require("./pivot-result-identity-CmvwpG4K.cjs"),ke=require("./temporal-bucket-contract-CPuYzg7A.cjs"),Y=require("./temporal-bucket-4YEPEKlJ.cjs"),ie=require("./field-aggregations-hx8odlTh.cjs"),Be=require("./raw-temporal-contract-Bg1mtRGE.cjs"),se=require("./canonical-result-keys-Cb96edol.cjs"),De=`import pandas as pd
2
2
  df = pd.DataFrame(data) # 'data' contains the query result
3
3
  result = df.to_dict('records') # must return 'result' as [dict] type
4
4
  `;function $t(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===De?"":e}function Z(e,r=e.config){return ie.resolveTemporalResultOwner({hasExecutableConfig:P.hasValidCardConfig(r,e.type),sql:e.sql,normalizedPython:G(e.python||"")})}class Pe extends Error{constructor(t){super(`ambiguous_temporal_grain: Temporal field "${t}" has saved presentation but no valid grouping grain. Reconfigure and resave the field.`);F(this,"code","ambiguous_temporal_grain");F(this,"fieldId");this.name="AmbiguousGroupedTemporalGrainError",this.fieldId=t}}function kt(e){return P.hasSavedTemporalBucketPresentation(e)||e.semanticTemporalPresentation!=null}function Me(e){if(!e.id||!["date","datetime"].includes(V.normalizeAnalyticsCatalogDataType(e.dataType)))return;if(V.isSemaphorTimeGrain(e.granularity))return e;if(!kt(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 Pe(e.id);return{...e,granularity:"day"}}function ve(e){const r=e.cardConfig??e.card.config;if(!r||!e.supportsCardType(e.card.type)||ie.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=Me(n);return o?[o]:[]})}}function _t(e){if(P.isShelfCard(e.card))return ve({...e,card:e.card,supportsCardType:r=>r==="table"})}function Ft(e){if(P.isShelfCard(e.card))return ve({...e,card:e.card,supportsCardType:ie.isSemaphorCartesianChartType})}function Oe(e){if(P.isShelfCard(e.card))return ve({...e,card:e.card,supportsCardType:r=>r!=="detailTable"&&ie.supportsCanonicalDashboardTemporalResult(r)})}const _e=new WeakMap;function Ke(e){const r=_e.get(e);if(r)return r;const t=B.parseCanonicalPivotResultTransport(e);return _e.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 ze(e,r){const t=B.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 Rt 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.`);F(this,"code","missing_resolved_temporal_format");F(this,"deliveryBlocking",!0);F(this,"dashboardId");F(this,"cardId");F(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.`);F(this,"code","missing_temporal_bucket_metadata");F(this,"deliveryBlocking",!0);F(this,"cardId");F(this,"fieldId");F(this,"columnKey");this.name="MissingTemporalResultMetadataError",this.cardId=t.cardId,this.fieldId=t.fieldId,this.columnKey=t.columnKey}}class L extends Error{constructor(t,n,o){super(`${t}: ${n}`);F(this,"deliveryBlocking",!0);this.code=t,this.context=o,this.name="DashboardTemporalBoundaryError"}}function Ne(e,r){return`${r}:${e}`}function Ve(e){var r,t;return(t=(r=e.presentation)==null?void 0:r.byFieldRole)==null?void 0:t.get(Ne(e.fieldId,e.role))}function At(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)===V.SEMAPHOR_GENERATED_COUNT_METRIC_ID)})}function Bt(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]=be({value:t[a],presentation:o}))}),n})}function Dt(e){var f;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=Ke(r);if(!ze(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&&z.isPivotEmptyTupleAllowed({expectedPivotFieldIds:o,classification:d.pivotResultContract.columnClassifications[C.key]})});return t.fields.every(C=>{var S;const g=z.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(Tt=>Tt.fieldId===C.id))??[]});return _.length===0?b:_.every(M=>{var H;return((H=M.temporalBucket)==null?void 0:H.granularity)===C.granularity})}const T=d.columns.find(_=>_.key===(g.outputKey||g.rawKey));return((S=T==null?void 0:T.temporalBucket)==null?void 0:S.granularity)===C.granularity})}catch(d){if(d instanceof B.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=z.resolveQueryColumnKeyMapEntry(a,V.SEMAPHOR_GENERATED_COUNT_METRIC_ID,"metric");if(c){if(!At({cardConfig:t.cardConfig,binding:c,columns:r.columns||[]}))return!1;l.add(`metric:${V.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})=>!z.resolveQueryColumnKeyMapEntry(a,d.id,v)))return!1;try{z.requirePivotResultColumnIdentities((r.columns||[]).map(d=>({key:d.key,pivotIdentity:d.pivotIdentity})),{expectedPivotFieldIds:o,columnClassifications:r.columnMetadata})}catch(d){if(d instanceof z.PivotResultIdentityError)return!1;throw d}const u=(r.columns||[]).filter(d=>{const v=d.pivotIdentity;return!!(v&&v.members.length>0)});return n!==0&&((f=t.cardConfig.pivotByColumns)!=null&&f.length)&&u.length===0?!1:t.fields.every(d=>{var b;const v=z.resolveQueryColumnKeyMapEntry(a,d.id,d.role);if(!v)return!1;if(v.role==="pivotby"){const g=u.flatMap(T=>{var S;return((S=T.pivotIdentity)==null?void 0:S.members)??[]}).filter(T=>T.fieldId===d.id);return u.length===0?n===0:g.length>0&&g.every(T=>{var S;return((S=T.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 ne(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 Pt(e,r,t=ge.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES){const n=ne(e,"card"),o=ne(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 qe(e,r=Y.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,t="en-US"){var i;const n=ne(e,"card"),o=((i=e.semanticTemporalPresentation)==null?void 0:i.granularity)===e.granularity?ne(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 Mt(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(Ne(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 L("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 f=e.executionSnapshot&&e.dashboardId?B.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&&!f)throw new Rt({dashboardId:e.dashboardId,cardId:e.card.id,fieldId:c.id});return{columnKey:u,fieldId:c.id,role:c.role,metadata:s,resolved:f?Y.resolveTemporalBucketPresentation({metadata:s,cardFormat:f,locale:f.locale,...f.presentation.mode==="auto"?{styles:f.presentation.styles}:{}}):Pt(c,s,e.valueFormatPreferences??ge.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES)}};for(const c of r.fields){const s=z.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 L("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(S=>S.pivotIdentity!==void 0),b=h.flatMap(S=>{var _;return(((_=S.pivotIdentity)==null?void 0:_.members)||[]).filter(M=>M.fieldId===c.id).map(M=>({column:S,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=ke.validateTemporalBucketMetadata(C.member.temporalBucket);if(!g.ok||!g.value)throw new L("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 T=m(c,g.value,C.column.key);for(const{column:S,member:_}of b)if(!_.temporalBucket||JSON.stringify(_.temporalBucket)!==JSON.stringify(C.member.temporalBucket))throw new L("invalid_temporal_bucket_metadata",`Pivot result column "${S.key}" has contradictory bucket metadata for field "${c.id}".`,{cardId:e.card.id,fieldId:c.id,columnKey:S.key});l(c,T);continue}const u=s.outputKey||s.rawKey,f=t.get(u);if(!(f!=null&&f.temporalBucket))throw new me({cardId:e.card.id,fieldId:c.id,columnKey:u});const d=ke.validateTemporalBucketResultColumn(f,{metadataRequired:!0});if(!d.ok||!d.value)throw new L("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 Ot(e){var t,n;const r=e.role?Ve({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?be({value:e.value,presentation:r}):e.value===null||e.value===void 0?"":String(e.value)}function be(e){if(e.value===null||e.value===void 0)return"(Blank)";if(typeof e.value!="string")throw new L("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 L(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 Le(){return{type:"raw_temporal",presentation:{mode:"auto"}}}function Kt(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 Ue(e){const r=e.format;if((r==null?void 0:r.type)==="date"&&(Kt(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}}:Le()}function ce(e){var i;if(e!=null&&e.useRelativeTime)return;if(!e)return Le();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 zt(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 Nt(e){A.validateRawTemporalPattern({dialect:"date_fns",pattern:e.pattern,valueKind:e.valueKind})}function Vt(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=A.prepareRawTemporalFormatter({metadata:n,format:A.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 qt(e){try{return{ok:!0,text:Vt(e)}}catch(r){return{ok:!1,message:r instanceof Error?r.message:"Invalid SQL temporal presentation."}}}function Ie(e){var t;const r=e.effectiveCardConfig??e.card.config;return Z(e.card,r)==="freeform"&&!!((t=e.card.sql)!=null&&t.trim())&&!G(e.card.python||"").trim()}function je(e){var r,t;return e.type!=="table"&&e.type!=="detailTable"||!Ie({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 Lt(e){var t,n,o;if(!je(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 Ut(){return{activatedColumnKeys:new Set,byColumnKey:new Map,byFieldId:new Map}}function ye(e,r){return e===void 0?{kind:"invalid",error:r}:{kind:"invalid",error:e instanceof k?e:e instanceof A.RawTemporalFormatContractError?new k(e.code,e.message,r.context):new k(r.code,e instanceof Error?e.message:r.message,r.context)}}function Ge(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 ye(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(([T,S])=>{const _=z.resolveQueryColumnKeyMapEntry(n,T,"detail");return _&&_.role==="detail"&&(_.outputKey??_.rawKey)===s.key?[{field:S,binding:_}]:[]}),f=u.length===1?u[0]:null;if(!f||typeof f.binding.rawKey!="string"||f.binding.rawKey.trim().length===0||f.binding.outputKey!==void 0&&(typeof f.binding.outputKey!="string"||f.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}=f,h=v.outputKey??v.rawKey,b=Be.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=A.resolveRawTemporalFormat({format:Ue(d),preferences:e.preferences,calendar:e.calendar}),g={fieldId:d.id,columnKey:h,metadata:b,format:C,formatValue:A.prepareRawTemporalFormatter({metadata:b,format:C})};for(let T=0;T<r.length;T+=1)if(!Object.prototype.hasOwnProperty.call(r[T],h)||r[T][h]===void 0)throw new k("missing_raw_temporal_result_contract",`Raw temporal result row ${T} 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 ye(a,new k("invalid_raw_temporal_metadata","Activated raw temporal result metadata is invalid."))}}function He(e){var n,o,a;const r=e.effectiveCardConfig??e.card.config,t=Z(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"}:Fe(Ge({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 Fe(Gt({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 jt(e){var n,o,a;const r=e.effectiveCardConfig??e.card.config,t=Z(e.card,r);return e.card.type==="detailTable"&&t==="config"?!!((n=e.columns)!=null&&n.some(i=>i.rawTemporal)):Ie(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 Fe(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=B.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 B.MissingResolvedRawTemporalFormatError(o)};const i=e.presentation.byColumnKey.get(o);if(!i)continue;const l={...i,format:a,formatValue:A.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 Gt(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 f=A.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,f),f.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:f.metadata.valueKind==="date"?"date":"datetime",rawTemporal:f.metadata};Be.validateRawTemporalResultColumn(v,{metadataRequired:!0}),l[d]=v;const h=A.resolveRawTemporalFormat({format:u,preferences:e.preferences,calendar:e.calendar});o.set(c,{columnKey:c,metadata:f.metadata,format:h,formatValue:A.prepareRawTemporalFormatter({metadata:f.metadata,format:h})})}const m={...Ut(),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 ye(o,new k("invalid_raw_temporal_format","Declared SQL raw temporal presentation is invalid."))}}function Ht(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 Qt(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=He({card:e.card,effectiveCardConfig:e.effectiveCardConfig,records:r.records,columns:r.columns,columnKeyMap:r.columnKeyMap,preferences:ge.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES,calendar:{tz:"UTC"}});return t.kind==="inactive"||t.kind==="loaded_empty"||t.kind==="loaded_valid"}function Re(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 Re(r)?r:null}catch{return null}return Re(e)?e:null}function Ce(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 Wt(e){var t;const r=(e==null?void 0:e.frameObject)??((t=e==null?void 0:e.visual)==null?void 0:t.frameObject);return Ce(Qe(r))}function le(e){if(!(e!=null&&e.expectedType))return"table";const r=Array.isArray(e.expectedType)?e.expectedType[0]:e.expectedType;return Jt(r)?r:"table"}const Yt=["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 Jt(e){return Yt.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 We(e){return!e||e.length===0?void 0:[...e].sort((t,n)=>J(t)-J(n))[0]}function Te(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 f,d;return(((f=s.parsed)==null?void 0:f.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 f,d;return(((f=u.parsed)==null?void 0:f.start)??0)-(((d=s.parsed)==null?void 0:d.start)??0)})[0];return c==null?void 0:c.slot}function Zt(e,r){const t=Te(e,r);if(t)return le(t)}function Ye(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 he(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 Je(e){const r=[];let t=-1;e.forEach((n,o)=>{const a=Ye(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 Xt(e){return e.map((r,t)=>!r.customCardPreferences||r.customCardPreferences.slotIndex===t?r:{...r,customCardPreferences:{...r.customCardPreferences,slotIndex:t}})}function er(e){const r=We(e);if(r)return le(r)}function tr(e,r,t){if(!e)return;const n=Zt(t,r);return e.type==="custom"&&n?n:e.type}function rr(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=We(e),s=c?J(c):0;let u=!1;const f=[];for(let h=0;h<m;h+=1){const b=Te(e,h),C=le(b),g=!u&&h===s,T=h,S={...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:T}},...!g&&{customCardPreferences:{slotIndex:T}}};g&&(u=!0),f.push(S)}if(!u&&f.length>0){const h=((v=f[0].customCardPreferences)==null?void 0:v.slotIndex)??0;f[0]={...f[0],type:f[0].type,customCardPreferences:{...o,slotIndex:h}}}const d=f.findIndex(h=>{var b;return!!((b=h.customCardPreferences)!=null&&b.url)});if(d>0){const[h]=f.splice(d,1);f.unshift(h)}return f}function Ze({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 Xe(e,r){return r&&he(r,e.cards)?r:e.cards.find(t=>he(t,e.cards))||null}function et(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 nr(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 or(e){return Array.isArray(e)?{records:e}:e}class ee 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.`);F(this,"code","temporal_snapshot_target_not_found");F(this,"selection");this.name="TemporalSnapshotSelectionError",this.selection=t}}function ar(e,r){var o;const t=[],n=new Map;for(const a of r){if(a.dashboardId!==e.id)throw new ee(a);const i=(e.sheets||[]).filter(m=>!a.sheetId||a.sheetId===m.id);if(a.sheetId&&i.length===0)throw new ee(a);let l=!a.cardId;for(const m of i){const c=(((o=m.document)==null?void 0:o.sections)||[]).flatMap(f=>f.type==="table"||f.type==="chart"?[f.card]:[]),s=(m.frames||[]).flatMap(f=>ir(f,a.cardId));s.length>0&&(l=!0);const u=[...s,...(m.cards||[]).filter(f=>!a.cardId||a.cardId===f.id),...c.filter(f=>!a.cardId||a.cardId===f.id)];for(const f of u){l=!0;const d=n.get(a.attachmentIndex)??new Set;d.has(f.id)||(d.add(f.id),n.set(a.attachmentIndex,d),t.push({card:f,...a.attachmentIndex!==void 0?{attachmentIndex:a.attachmentIndex}:{}}))}}if(!l)throw new ee(a)}return t}function ir(e,r){var i;const t=r?(i=e.cards)==null?void 0:i.find(l=>l.id===r):Ce(e);if(!t)return[];const n=Xe(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&&(et(n)==="multiple"||o);return!n||!a?[t]:Je(Ze({frame:e,configCard:n,isMultiInputVisual:!0})).filter(l=>l!==null)}function cr(e){return ar(e.dashboard,e.selections).flatMap(({card:r,attachmentIndex:t})=>{var s,u,f,d;const n=((s=e.resolveCardConfig)==null?void 0:s.call(e,r))??r.config,o=Oe({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:qe(v,{dateStyle:e.valueFormatPreferences.dateStyle,dateTime:{...e.valueFormatPreferences.dateTime}},e.valueFormatPreferences.locale)})):[],l=[],m=Z(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:T})=>se.resolveCanonicalResultRawKey(g,T)));for(const{field:g}of h){const T=g.label;T&&b.set(T,(b.get(T)||0)+1)}for(const g of v){const T=V.normalizeAnalyticsCatalogDataType(g.dataType);if(T!=="date"&&T!=="datetime")continue;const S=se.resolveCanonicalDetailResultRawKey(g),_=g.label,M=se.resolveCanonicalResultOutputKey({label:_,labelCount:_&&b.get(_)||0,rawKey:S,rawKeys:C});if(!M)throw new ee(a);l.push({scope:a,target:{kind:"column",columnKey:M},format:A.resolveRawTemporalFormat({format:Ue(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=(f=r.preferences)==null?void 0:f.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:A.resolveRawTemporalFormat({format:b,preferences:e.valueFormatPreferences,calendar:e.calendar})})}return[...i,...l]})}const lr=new Set(["table","aggregateTable","pivotTable","detailTable"]),dr=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 sr(e){var o,a,i;const r=dr.has(e.type)&&(e.type!=="custom"||!!((o=e.customCardPreferences)!=null&&o.url));let t=!1;try{t=!!St.readMatrixCardConfig(e)}catch{return{formats:[],defaultFormat:null}}return e.type==="text"||!r||!t&&P.isCardUnconfigured(e)?{formats:[],defaultFormat:null}:{formats:tt({cardType:e.type,allowDownload:(a=e.preferences)==null?void 0:a.allowDownload}),defaultFormat:rt({cardType:e.type,allowDownload:(i=e.preferences)==null?void 0:i.allowDownload})}}function tt(e){return e.allowDownload===!1?["pdf"]:["pdf","csv"]}function rt(e){return lr.has(e.cardType)&&e.allowDownload!==!1?"csv":"pdf"}function mr(e){const{config:r}=e,t=xt.resolveMatrixDefinition({spec:r.spec,presentation:r.presentation,defaults:r.defaultView,session:e.purpose==="manual"?e.session:void 0});return V.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 nt=$.z.object({connection_id:$.z.string().min(1),cardType:$.z.literal("matrixTable"),resultOwner:$.z.literal("config"),sql:$.z.literal("").optional(),python:$.z.literal("").optional(),tableStructure:$.z.never().optional(),cardDataSource:$.z.object({connectionId:$.z.string().min(1),connectionType:$.z.string().min(1),mode:$.z.enum(["database","semanticDomain"]),selectedEntities:$.z.array($.z.unknown()),semanticDomainId:$.z.string().optional()}).passthrough(),active_filters:$.z.array($.z.unknown()).default([])}).passthrough(),ur=nt.extend({dashboardId:$.z.string().min(1),cardId:$.z.string().min(1),formatOptions:$.z.object({matrix:V.matrixExportRequestSchema,acquisition:$.z.literal("continuation").optional(),presentationExecutionSnapshot:$.z.unknown()}).passthrough().superRefine((e,r)=>{e.matrix.format==="csv"!=(e.acquisition==="continuation")&&r.addIssue({code:$.z.ZodIssueCode.custom,path:["acquisition"],message:"CSV requires continuation acquisition; PDF must not specify acquisition."})})});function fr(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:B.createPresentationExecutionSnapshot({reportContext:e.reportContext,resolvedFormats:[]})}}}function pr(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function O(e,r,t){return pr(e)?e:(t.push({field:r,message:"Expected an object."}),{})}function K(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 we(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 Ae(e,r,t){const n=O(e,r,t);K(n,r,["tokens","components"],t);const o={};if(n.tokens!==void 0){const a=O(n.tokens,`${r}.tokens`,t);K(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"];K(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);K(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(K(a,`${r}.components`,["chart"],t),a.chart!==void 0){const i=O(a.chart,`${r}.components.chart`,t);K(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 yr(e,r){const t="presentation.appearance",n=O(e,t,r);K(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);K(a,`${t}.schemes`,["light","dark"],r),o.schemes={...a.light!==void 0?{light:Ae(a.light,`${t}.schemes.light`,r)}:{},...a.dark!==void 0?{dark:Ae(a.dark,`${t}.schemes.dark`,r)}:{}}}return o}function hr(e,r){const t="presentation.brandOverrides",n=O(e,t,r);K(n,t,["brandName","logoUrl","link"],r);const o=U(n.brandName,`${t}.brandName`,200,r),a=we(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 gr(e,r){const t="presentation.fragments",n=O(e,t,r),o=["preHeaderText","headerBannerHtml","signatureHtml","footerHtml","disclaimerHtml","unsubscribeUrl"];K(n,t,o,r);const a={};return o.forEach(i=>{const l=i==="unsubscribeUrl"?we(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 vr(e){const r=[],t={};if(e.appearance!==void 0&&(t.appearance=yr(e.appearance,r)),e.brandOverrides!==void 0&&(t.brandOverrides=hr(e.brandOverrides,r)),e.fragments!==void 0&&(t.fragments=gr(e.fragments,r)),e.viewUrl!==void 0){const n=we(e.viewUrl,"presentation.viewUrl",r);n!==void 0&&(t.viewUrl=n)}return{value:t,issues:r}}const ot=["SUN","MON","TUE","WED","THU","FRI","SAT"],br=new Map(ot.map((e,r)=>[e,r])),Ir={cadence:"weekly",hour:9,minute:0,weekdays:[1]};function Cr(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 Tr(e){return Number.isInteger(e.minute)&&e.minute>=0&&e.minute<=59&&Number.isInteger(e.hour)&&e.hour>=0&&e.hour<=23}function at(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 wr(e){if(!Tr(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=at(e.weekdays);if(!t)throw new Error("Choose at least one weekday.");return`${r} * * ${t.map(n=>ot[n]).join(",")}`}case"twice_monthly":return`${r} 1,15 * *`;case"monthly":return`${r} 1 * *`}}function it(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=>br.get(d));if(s.some(d=>d===void 0))return{ok:!1,issue:"Choose a supported schedule."};const u=s,f=at(u);return!f||f.some((d,v)=>d!==u[v])?{ok:!1,issue:"Choose a supported schedule."}:{ok:!0,value:{cadence:"weekly",hour:m,minute:l,weekdays:f}}}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 Er(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 xr(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 Sr(e,r,t="en-US"){const n=it(e);if(!n.ok)return null;try{const o=Er(n.value.hour,n.value.minute,t),a=xr(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 $r(e){return e!=null&&e.role?e.type==="tenant"?e.role==="POWER_USER":["AUTHOR","ADMIN","SUPER_ADMIN"].includes(e.role):!1}function kr(e){return e.canCreate?[...e.scheduledReportAvailable?["scheduled_report"]:[],...e.analyticalBriefingsEnabled?["analytical_briefing"]:[]]:[]}function ct(e){const r=(e==null?void 0:e.channels)??[];return r.length===1&&r[0]==="EMAIL"}function lt(e){return e.body.type==="generated_analysis"?"Analytical briefing":e.body.type==="custom_message"&&e.attachments.length>0&&ct(e.deliveryConfig)?e.scheduleExpr?"Scheduled report":"On-demand report":"Plain briefing"}function _r(e){const r=lt(e),t=r==="Scheduled report"||r==="On-demand report"?"report":"briefing";return{typeLabel:r,noun:t,pluralNoun:t==="report"?"reports":"briefings"}}const oe="BRIEFING",dt=["markdown","html"],ae=["markdown"],te=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},R={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:y.contentCell,maxParagraphCharacters:y.contentText,maxFindingCharacters:y.contentText,maxListItems:100,maxKpiTiles:8};function st(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())&&A.parseResolvedNumericCanonicalFormat(r.format).ok}function mt(e){return e==null?"":st(e)?A.formatNumericCanonical(e.value,e.format):String(e)}function Fr(e){return[e.delta,e.percentChange].filter(r=>r!=null).map(mt).filter(Boolean).join(" / ")}const ut=new Set(dt),Rr=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),ue={maxToolCalls:{min:1,max:100},maxPlanningIterations:{min:1,max:10},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},Ar=new Set(["letter","legal","a4","a3","tabloid"]),Br=new Set(["portrait","landscape"]),Dr=new Set([",",";"," "]),Pr=new Set(["current","all"]),Mr=new Set(["concise","balanced","detailed"]),Or=new Set(["info","positive","warning","critical"]),Kr=new Set(["text","number","currency","percent","date","boolean"]),zr=new Set(["left","center","right"]),Nr=["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 X extends Error{constructor(t){super(t.map(n=>`${n.field}: ${n.message}`).join("; "));F(this,"issues");this.name="BriefingContractError",this.issues=t}}function ft(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e,r,t){e.push({field:r,message:t})}function x(e,r,t){return ft(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 Vr(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 qr(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 D(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 l=w(a,`${r}.${i}`,y.id,t);l&&!o.includes(l)&&o.push(l)}),n.required&&o.length===0&&p(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"?(p(n,t,"Expected a boolean."),r):e}function Lr(e,r){return e==null?"ACTIVE":e==="ACTIVE"||e==="PAUSED"||e==="DISABLED"?e:(p(r,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function Ur(e){return e.includes("@")&&e.includes(".")&&!e.includes(" ")}function pt(e,r){if(e==null)return{type:"project"};const t=x(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 yt(e,r){const t=x(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:Vr(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 jr(e,r){if(e==null)return[...ae];if(!Array.isArray(e))return p(r,"presentation.artifactFormats","Expected an array."),[...ae];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"||!ut.has(n)){p(r,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}t.includes(n)||t.push(n)}),t}function ht(e,r){if(e==null)return{artifactFormats:[...ae],includeEvidence:!0,includeSql:!0};const t=x(e,"presentation",r);I(t,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format","appearance","brandOverrides","fragments","viewUrl"],r);const n={artifactFormats:jr(t.artifactFormats,r),includeEvidence:j(t.includeEvidence,!0,"presentation.includeEvidence",r),includeSql:j(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 l=vr(t);return l.issues.forEach(m=>p(r,m.field,m.message)),Object.assign(n,l.value),n}function Gr(e,r,t){return Array.isArray(e)?(e.length===0&&p(t,r,"Expected at least one item."),e.length>R.maxListItems&&p(t,r,`Must have ${R.maxListItems} items or fewer.`),e.slice(0,R.maxListItems).map((n,o)=>w(n,`${r}.${o}`,y.contentItem,t)).filter(Boolean)):(p(t,r,"Expected an array."),[])}function Hr(e,r,t){const n=x(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 gt(e,r,t){if(e===null||typeof e!="object"||Array.isArray(e))return;const n=x(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=Hr(n.target,`${r}.target`,t),a=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 q(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=gt(e,r,t);if(n)return n;p(t,r,"Expected a string, number, or structured numeric value.")}function Qr(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=gt(e,r,t);return n||(p(t,r,"Expected a string, number, boolean, structured numeric value, or null."),null)}function Wr(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>R.maxTableColumns&&p(t,r,`Must have ${R.maxTableColumns} columns or fewer.`);const n=new Set;return e.slice(0,R.maxTableColumns).map((o,a)=>{const i=`${r}.${a}`,l=x(o,i,t);I(l,i,["key","label","kind","align"],t);const m=w(l.key,`${i}.key`,y.id,t);m&&(n.has(m)&&p(t,`${i}.key`,"Column key must be unique."),n.add(m));const c=w(l.label,`${i}.label`,y.contentTitle,t),s=N(l.kind,`${i}.kind`,Kr,"text, number, currency, percent, date, or boolean",t),u=N(l.align,`${i}.align`,zr,"left, center, or right",t);return{key:m,label:c,...s?{kind:s}:{},...u?{align:u}:{}}})}function Yr(e,r,t,n){if(!Array.isArray(e))return p(n,r,"Expected an array."),[];e.length>R.maxTableRows&&p(n,r,`Must have ${R.maxTableRows} rows or fewer.`);const o=new Set(t.map(a=>a.key).filter(Boolean));return e.slice(0,R.maxTableRows).map((a,i)=>{const l=`${r}.${i}`,m=x(a,l,n);return Object.keys(m).forEach(c=>{o.has(c)||p(n,`${l}.${c}`,`Unexpected table cell "${c}".`)}),Object.fromEntries(t.map(c=>[c.key,Qr(m[c.key]??null,`${l}.${c.key}`,n)]))})}function Jr(e,r,t){const n=`content.blocks.${r}`,o=x(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 l=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"heading",text:w(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: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),l=N(o.severity,`${n}.severity`,Or,"info, positive, warning, or critical",t);return{type:"finding",...i?{title:i}:{},text:w(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=E(o.title,`${n}.title`,y.contentTitle,t),l=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:a,...i?{title:i}:{},items:Gr(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=q(o.value,`${n}.value`,t)??"";i===""&&p(t,`${n}.value`,"Expected a non-empty string, number, or structured numeric value.");const l=o.previousValue===void 0||o.previousValue===null?o.previousValue:q(o.previousValue,`${n}.previousValue`,t),m=o.delta===void 0||o.delta===null?o.delta:q(o.delta,`${n}.delta`,t),c=o.percentChange===void 0||o.percentChange===null?o.percentChange:q(o.percentChange,`${n}.percentChange`,t),s=E(o.unit,`${n}.unit`,y.contentTitle,t),u=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"metric",label:w(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=E(o.title,`${n}.title`,y.contentTitle,t),l=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||p(t,`${n}.tiles`,"Expected an array."),l.length===0&&p(t,`${n}.tiles`,"Expected at least one tile."),l.length>R.maxKpiTiles&&p(t,`${n}.tiles`,`Must have ${R.maxKpiTiles} tiles or fewer.`);const m=l.slice(0,R.maxKpiTiles).map((s,u)=>{const f=`${n}.tiles.${u}`,d=x(s,f,t);I(d,f,["label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const v=q(d.value,`${f}.value`,t)??"";v===""&&p(t,`${f}.value`,"Expected a non-empty string, number, or structured numeric value.");const h=d.previousValue===void 0||d.previousValue===null?d.previousValue:q(d.previousValue,`${f}.previousValue`,t),b=d.delta===void 0||d.delta===null?d.delta:q(d.delta,`${f}.delta`,t),C=d.percentChange===void 0||d.percentChange===null?d.percentChange:q(d.percentChange,`${f}.percentChange`,t),g=E(d.unit,`${f}.unit`,y.contentTitle,t),T=D(d.evidenceIds,`${f}.evidenceIds`,t);return{label:w(d.label,`${f}.label`,y.contentTitle,t),value:v,...h!==void 0?{previousValue:h}:{},...b!==void 0?{delta:b}:{},...C!==void 0?{percentChange:C}:{},...g?{unit:g}:{},...T?{evidenceIds:T}:{}}}),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))&&p(t,`${n}.value`,"Expected a finite number.");const l=E(o.detail,`${n}.detail`,y.contentText,t),m=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"progress",label:w(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=Wr(o.columns,`${n}.columns`,t),l=E(o.title,`${n}.title`,y.contentTitle,t),m=E(o.id,`${n}.id`,y.id,t),c=E(o.caption,`${n}.caption`,y.contentItem,t),s=qr(o.totalRows,`${n}.totalRows`,t),u=D(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"table",...m?{id:m}:{},...l?{title:l}:{},columns:i,rows:Yr(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=E(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=E(o.title,`${n}.title`,y.contentTitle,t),l=w(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 p(t,`${n}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."),{type:"paragraph",text:""}}function vt(e){const r=[],t=x(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>R.maxBlocks&&p(r,"content.blocks",`Must have ${R.maxBlocks} blocks or fewer.`);const i=a.slice(0,R.maxBlocks).map((l,m)=>Jr(l,m,r));return Ee(r),{version:1,...n?{title:n}:{},...o?{summary:o}:{},blocks:i}}function Zr(e){try{return{valid:!0,value:vt(e),issues:[]}}catch(r){if(r instanceof X)return{valid:!1,issues:r.issues};throw r}}function re(e,r,t,n){return typeof e=="string"&&t.includes(e)?e:(p(n,r,`Expected ${t.join(" or ")}.`),t[0])}function N(e,r,t,n,o){if(e!=null){if(typeof e=="string"&&t.has(e))return e;p(o,r,`Expected ${n}.`)}}function Xr(e,r,t){if(e!=null){if(!Array.isArray(e)){p(t,r,"Expected an array.");return}return e}}function en(e,r,t){if(e!=null){if(!ft(e)){p(t,r,"Expected an object.");return}return e}}function tn(e,r,t){if(e==null)return;const n=x(e,r,t);I(n,r,Nr,t);const o={};if(n.matrix!==void 0){const c=x(n.matrix,`${r}.matrix`,t);I(c,`${r}.matrix`,["config","content"],t);const s=V.matrixConfigSchema.safeParse(c.config);s.success||p(t,`${r}.matrix.config`,"Expected a valid Matrix definition.");const u=N(c.content,`${r}.matrix.content`,new Set(["current","all","flat"]),"current, all, or flat",t);u||p(t,`${r}.matrix.content`,"Choose Matrix export content."),s.success&&u&&(o.matrix={config:s.data,content:u})}const a=N(n.pageSize,`${r}.pageSize`,Ar,"letter, legal, a4, a3, or tabloid",t),i=N(n.orientation,`${r}.orientation`,Br,"portrait or landscape",t),l=N(n.delimiter,`${r}.delimiter`,Dr,"comma, semicolon, or tab",t),m=N(n.sheetSelection,`${r}.sheetSelection`,Pr,"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"){p(t,`${r}.${c}`,"Expected a boolean.");continue}o[c]=n[c]}for(const c of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const s=E(n[c],`${r}.${c}`,y.id,t);s&&(o[c]=s)}for(const c of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const s=Xr(n[c],`${r}.${c}`,t);s&&(o[c]=s)}for(const c of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const s=en(n[c],`${r}.${c}`,t);s&&(o[c]=s)}return Object.keys(o).length>0?o:void 0}function fe(e,r,t,n){const o=E(r,t,y.attachmentTitle,n);return o&&(e.title=o),e}function pe(e,r,t,n){const o=tn(r,t,n);return o&&(e.settings=o),e}function rn(e,r,t){const n=`attachments.${r}`,o=x(e,n,t),a=o.type;if(a==="dashboard"){I(o,n,["type","dashboardId","format","title","settings"],t);const i=fe({type:"dashboard",dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),format:re(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return pe(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=fe({type:a,dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),sheetId:w(o.sheetId,`${n}.sheetId`,y.id,t),format:re(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return pe(i,o.settings,`${n}.settings`,t)}if(a==="card"){I(o,n,["type","dashboardId","cardId","format","title","settings"],t);const i=fe({type:"card",dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),cardId:w(o.cardId,`${n}.cardId`,y.id,t),format:re(o.format,`${n}.format`,["csv","pdf"],t)},o.title,`${n}.title`,t);return pe(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 nn(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 bt(e,r){if(e==null)return[];if(!Array.isArray(e))return p(r,"attachments","Expected an array."),[];e.length>te&&p(r,"attachments",`Choose ${te} attachments or fewer.`);const t=e.slice(0,te).map((o,a)=>rn(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")&&p(r,`attachments.${a}.settings.matrix`,"Matrix settings require a matrixTable card attachment; flat content requires CSV.");const i=nn(o);n.has(i)&&p(r,`attachments.${a}`,"Duplicate attachment."),n.add(i)}),t}function It(e,r){if(e==null)return;const t=x(e,"limits",r);I(t,"limits",Object.keys(ue),r);const n={};return Object.keys(ue).forEach(o=>{const a=t[o];if(a==null)return;const i=ue[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 Ee(e){if(e.length>0)throw new X(e)}function Ct(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 on(e,r,t){e==null||e.forEach((n,o)=>{const a=`${t}.${o}.scope`,i=n.scope.attachmentIndex;if(i===void 0)throw new B.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify the attachment that owns this presentation entry.`);const l=r[i];if(!l)throw new B.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify an existing attachment.`);if(n.scope.dashboardId!==l.dashboardId)throw new B.PresentationExecutionSnapshotError(`${a}.dashboardId must match the dashboard selected by the referenced attachment.`);if(l.type==="card"&&n.scope.cardId!==l.cardId)throw new B.PresentationExecutionSnapshotError(`${a}.cardId must match the card selected by the referenced attachment.`)})}function xe(e){const r=[],t=x(e,"jobConfig",r);I(t,"jobConfig",["kind","presentationExecutionSnapshot","source","body","attachments","presentation","limits"],r),t.kind!==oe&&p(r,"kind","Expected BRIEFING.");let n;try{n=B.parsePresentationExecutionSnapshot(t.presentationExecutionSnapshot)}catch(c){if(c instanceof B.PresentationExecutionSnapshotError)throw c;p(r,"jobConfig.presentationExecutionSnapshot",c instanceof Error?c.message:"Invalid presentation snapshot.")}const o=pt(t.source,r),a=yt(t.body,r),i=bt(t.attachments,r),l=ht(t.presentation,r),m=It(t.limits,r);return Ct(a,i,r),on(n==null?void 0:n.resolvedFormats,i,"jobConfig.presentationExecutionSnapshot.resolvedFormats"),Ee(r),{kind:oe,presentationExecutionSnapshot:n,source:o,body:a,attachments:i,presentation:l,...m?{limits:m}:{}}}function an(e){return xe({...e,kind:oe})}function Se(e,r,t,n="deliveryConfig.recipients"){const o=`${n}.${r}`,a=x(e,o,t),i=a.type;if(i==="email"){I(a,o,["type","address","name"],t);const l=w(a.address,`${o}.address`,y.id,t),m=E(a.name,`${o}.name`,y.attachmentTitle,t);return l&&!Ur(l)&&p(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: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 cn(e,r){return e==null?[]:Array.isArray(e)?e.map((t,n)=>Se(t,n,r)):(p(r,"deliveryConfig.recipients","Expected an array."),[])}function ln(e,r){if(!Array.isArray(e))return p(r,"deliveryConfig.channels","Expected an array."),[];const t=[];return e.forEach((n,o)=>{if(!$e(n)){p(r,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}t.includes(n)||t.push(n)}),t}function dn(e,r,t){if(e==null)return;const n=x(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 sn(e,r,t){if(e==null)return;const n=x(e,r,t);I(n,r,["url","method","headers","secretEncrypted"],t);const o=n.method===void 0||n.method===null?void 0:re(n.method,`${r}.method`,["POST","PUT"],t),a=dn(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 mn(e,r,t){const n=x(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:j(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:Se(n.recipient,0,t,`${r}.recipient`)}):(p(t,`${r}.type`,"Expected channel."),{type:"channel",channelId:""})}function un(e,r,t){if(e==null)return;if(!Array.isArray(e)){p(t,r,"Expected an array.");return}const n=e.map((o,a)=>Se(o,a,t,r));return n.length>0?n:void 0}function fn(e,r,t){if(e==null)return;const n=x(e,r,t);I(n,r,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],t);const o=un(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:mn(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 pn(e,r,t){const n=x(e,r,t);I(n,r,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],t);const o=N(n.formatProfile,`${r}.formatProfile`,Mr,"concise, balanced, or detailed",t),a=E(n.subjectOverride,`${r}.subjectOverride`,500,t),i=E(n.titleOverride,`${r}.titleOverride`,500,t),l=E(n.summaryOverride,`${r}.summaryOverride`,2e3,t),m=j(n.actionBlockVisible,!0,`${r}.actionBlockVisible`,t),c=sn(n.webhookConfig,`${r}.webhookConfig`,t),s=fn(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 yn(e,r){if(e==null)return;const t=x(e,"deliveryConfig.channelConfigs",r),n={};return Object.entries(t).forEach(([o,a])=>{if(!$e(o)){p(r,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}n[o]=pn(a,`deliveryConfig.channelConfigs.${o}`,r)}),Object.keys(n).length>0?n:void 0}function hn(e,r){var m,c,s;if(e==null)return null;const t=x(e,"deliveryConfig",r);I(t,"deliveryConfig",["recipients","channels","channelConfigs"],r);const n=yn(t.channelConfigs,r),o=cn(t.recipients,r),a=ln(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&&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 de(e){const r=[],t=x(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",l=Lr(t.status,r),m=pt(t.source,r),c=yt(t.body,r),s=bt(t.attachments,r),u=ht(t.presentation,r),f=It(t.limits,r),d=hn(t.deliveryConfig,r);return Ct(c,s,r),Ee(r),{name:n,description:o,status:l,scheduleExpr:a,timezone:i,source:m,body:c,attachments:s,presentation:u,...f?{limits:f}:{},deliveryConfig:d}}function gn(e){return de(e)}function vn(e){return de(e)}function bn(e){try{return{valid:!0,value:de(e),issues:[]}}catch(r){if(r instanceof X)return{valid:!1,issues:r.issues};throw r}}function In(e){try{return{valid:!0,value:xe(e),issues:[]}}catch(r){if(r instanceof X)return{valid:!1,issues:r.issues};throw r}}function Cn(e){return typeof e=="string"&&ut.has(e)}function $e(e){return typeof e=="string"&&Rr.has(e)}exports.AmbiguousGroupedTemporalGrainError=Pe;exports.BRIEFING_ARTIFACT_FORMATS=dt;exports.BRIEFING_CONTENT_LIMITS=R;exports.BRIEFING_KIND=oe;exports.BRIEFING_TEXT_LIMITS=y;exports.BriefingContractError=X;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=ae;exports.DEFAULT_BRIEFING_SCHEDULE=Ir;exports.DashboardTemporalBoundaryError=L;exports.MAX_BRIEFING_ATTACHMENTS=te;exports.PYTHON_DEFAULT_CODE=De;exports.RawTemporalPresentationBoundaryError=k;exports.buildBriefingJobConfig=an;exports.buildBriefingScheduleExpr=wr;exports.buildCreateBriefingRequest=gn;exports.buildDashboardCardTableConfig=$t;exports.buildDashboardTemporalSnapshotEntries=cr;exports.buildMatrixDeliveryEnvelope=fr;exports.buildSlotOrderedCards=Je;exports.buildUpdateBriefingRequest=vn;exports.canCreateBriefingForUser=$r;exports.captureMatrixExport=mr;exports.createCardsFromSlots=rr;exports.describeBriefingSchedule=Sr;exports.findCustomVisualConfigCard=Xe;exports.formatBriefingComparisonValues=Fr;exports.formatBriefingDisplayValue=mt;exports.formatGroupedTemporalFieldValue=Ot;exports.formatGroupedTemporalRecords=Bt;exports.formatGroupedTemporalValue=be;exports.getActiveCardFromVisualResource=Wt;exports.getActiveFrameCard=Ce;exports.getBriefingCardAttachmentCapability=sr;exports.getBriefingCardAttachmentFormats=tt;exports.getBriefingCreationIntents=kr;exports.getBriefingDisplayTypeLabel=lt;exports.getBriefingPresentation=_r;exports.getConfigSlotExpectedType=er;exports.getCustomVisualInputCards=Ze;exports.getDefaultBriefingCardAttachmentFormat=rt;exports.getDefaultDeclaredSqlRawTemporalPattern=zt;exports.getEffectiveCardTypeForSlot=tr;exports.getSlotDefinitionForIndex=Te;exports.getSlotExpectedChartType=le;exports.getSlotIndexForCard=Ye;exports.hasMissingDeclaredSqlCustomDateFormat=je;exports.inspectDeclaredSqlRawTemporalPreview=qt;exports.isBriefingArtifactFormat=Cn;exports.isBriefingDeliveryChannel=$e;exports.isBriefingNumericValue=st;exports.isCardRawTemporalPresentationActivated=jt;exports.isCardRawTemporalResultCompatible=Qt;exports.isCustomVisualConfigCard=he;exports.isDeclaredSqlRawTemporalPresentationCard=Ie;exports.isEmailOnlyBriefingDelivery=ct;exports.isGroupedTemporalResultCompatible=Dt;exports.isPivotResultContractCompatibleWithCardConfig=ze;exports.isValidBriefingTimezone=Cr;exports.matrixDeliveryPayloadSchema=ur;exports.matrixDeliveryQuerySchema=nt;exports.normalizeBriefingContentDocument=vt;exports.normalizeBriefingDraft=de;exports.normalizeBriefingJobConfig=xe;exports.normalizeDashboardCardPythonCode=G;exports.normalizeGroupedTemporalField=Me;exports.normalizeMultiInputPayload=or;exports.parseBriefingScheduleExpr=it;exports.parseCanonicalPivotResultTransportOnce=Ke;exports.parseFrameObject=Qe;exports.presentRawTemporalCell=Ht;exports.reindexSlotCards=Xt;exports.repairMissingDeclaredSqlCustomDateFormat=Lt;exports.resolveCardRawTemporalPresentation=He;exports.resolveCartesianTemporalActivation=Ft;exports.resolveDashboardCardResultOwner=Z;exports.resolveDashboardTemporalActivation=Oe;exports.resolveDeclaredSqlRawTemporalFormat=ce;exports.resolveDetailTableRawTemporalPresentation=Ge;exports.resolveGroupedTemporalFieldPresentationByRole=Ve;exports.resolveGroupedTemporalFieldSnapshotFormat=qe;exports.resolveGroupedTemporalPresentation=Mt;exports.resolveMultiInputType=et;exports.resolveMultiInputTypeFromVisual=nr;exports.resolveRegularTableTemporalActivation=_t;exports.validateBriefingContentDocument=Zr;exports.validateBriefingDraft=bn;exports.validateBriefingJobConfig=In;exports.validateDeclaredSqlRawTemporalPattern=Nt;
@@ -1,5 +1,5 @@
1
1
  import { n as a, o as s, q as f } from "./validators-BpJDwDnG.js";
2
- import "./matrix-operation-contract-DITvltmL.js";
2
+ import "./matrix-operation-contract-D5I-t3i7.js";
3
3
  function u(i, r = {}) {
4
4
  var n, o;
5
5
  if (i.type !== "matrixTable" || !i.config || typeof i.config != "object" || !("matrix" in i.config)) return { status: "absent" };
@@ -1 +1 @@
1
- "use strict";const o=require("./validators-4dRtYUI1.cjs");require("./matrix-operation-contract-CCfuWtro.cjs");function s(i,r={}){var n,a;if(i.type!=="matrixTable"||!i.config||typeof i.config!="object"||!("matrix"in i.config))return{status:"absent"};if((n=i.sql)!=null&&n.trim()||(a=i.python)!=null&&a.trim())return{status:"invalid",error:new Error("A Matrix definition requires a config-only Matrix card.")};if("matrixIntent"in i.config&&i.config.matrixIntent!==void 0)return{status:"invalid",error:new Error("A Matrix card cannot contain two definitions.")};const t=(r.authoringDraft?o.matrixAuthoringConfigSchema:o.matrixConfigSchema).safeParse(i.config.matrix);return t.success?{status:"ready",config:t.data}:{status:"invalid",error:t.error}}function u(i){const r=s(i);if(r.status==="invalid")throw r.error;return r.status==="ready"?r.config:void 0}function f(i){const r=[],e=t=>{r.push(t),t.derivedField&&Object.values(t.derivedField.inputs).forEach(n=>e(n.field))};return[...i.rows,...i.columns].forEach(t=>e(t.field)),i.measures.forEach(t=>{t.kind==="aggregate"?e(t.field):Object.values(t.definition.inputs).forEach(n=>e(n.field))}),r}function c(i){return o.mergeSemaphorSourcesByIdentity([i.source,...f(i).map(r=>r.source??i.source)])}exports.inspectMatrixCardConfig=s;exports.matrixDefinitionFields=f;exports.matrixDefinitionSources=c;exports.readMatrixCardConfig=u;
1
+ "use strict";const o=require("./validators-4dRtYUI1.cjs");require("./matrix-operation-contract-BiUMcd6G.cjs");function s(i,r={}){var n,a;if(i.type!=="matrixTable"||!i.config||typeof i.config!="object"||!("matrix"in i.config))return{status:"absent"};if((n=i.sql)!=null&&n.trim()||(a=i.python)!=null&&a.trim())return{status:"invalid",error:new Error("A Matrix definition requires a config-only Matrix card.")};if("matrixIntent"in i.config&&i.config.matrixIntent!==void 0)return{status:"invalid",error:new Error("A Matrix card cannot contain two definitions.")};const t=(r.authoringDraft?o.matrixAuthoringConfigSchema:o.matrixConfigSchema).safeParse(i.config.matrix);return t.success?{status:"ready",config:t.data}:{status:"invalid",error:t.error}}function u(i){const r=s(i);if(r.status==="invalid")throw r.error;return r.status==="ready"?r.config:void 0}function f(i){const r=[],e=t=>{r.push(t),t.derivedField&&Object.values(t.derivedField.inputs).forEach(n=>e(n.field))};return[...i.rows,...i.columns].forEach(t=>e(t.field)),i.measures.forEach(t=>{t.kind==="aggregate"?e(t.field):Object.values(t.definition.inputs).forEach(n=>e(n.field))}),r}function c(i){return o.mergeSemaphorSourcesByIdentity([i.source,...f(i).map(r=>r.source??i.source)])}exports.inspectMatrixCardConfig=s;exports.matrixDefinitionFields=f;exports.matrixDefinitionSources=c;exports.readMatrixCardConfig=u;
@@ -1 +1 @@
1
- "use strict";var ce=Object.defineProperty;var le=(t,e,n)=>e in t?ce(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var M=(t,e,n)=>le(t,typeof e!="symbol"?e+"":e,n);const S=require("./common-types-nBuCd3u2.cjs"),R=require("./validators-4dRtYUI1.cjs");require("./matrix-operation-contract-CCfuWtro.cjs");const Y=require("./calculated-field-identity-Dwl8yGej.cjs"),de=require("./field-aggregations-D9ZfvxOG.cjs"),ue=require("zod"),Z=require("./matrix-card-JYMYSX0x.cjs"),V=require("./constants-B00YUv89.cjs");function X(t,e){const r=Ie(t);let i;if(r.date){const d=Oe(r.date,2);i=Ne(d.restDateString,d.year)}if(!i||isNaN(i.getTime()))return new Date(NaN);const s=i.getTime();let f=0,_;if(r.time&&(f=Re(r.time),isNaN(f)))return new Date(NaN);if(r.timezone){if(_=De(r.timezone),isNaN(_))return new Date(NaN)}else{const d=new Date(s+f),m=new Date(0);return m.setFullYear(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate()),m.setHours(d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds()),m}return new Date(s+f+_)}const w={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},ge=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,fe=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,_e=/^([+-])(\d{2})(?::?(\d{2}))?$/;function Ie(t){const e={},n=t.split(w.dateTimeDelimiter);let r;if(n.length>2)return e;if(/:/.test(n[0])?r=n[0]:(e.date=n[0],r=n[1],w.timeZoneDelimiter.test(e.date)&&(e.date=t.split(w.timeZoneDelimiter)[0],r=t.substr(e.date.length,t.length))),r){const i=w.timezone.exec(r);i?(e.time=r.replace(i[1],""),e.timezone=i[1]):e.time=r}return e}function Oe(t,e){const n=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+e)+"})|(\\d{2}|[+-]\\d{"+(2+e)+"})$)"),r=t.match(n);if(!r)return{year:NaN,restDateString:""};const i=r[1]?parseInt(r[1]):null,s=r[2]?parseInt(r[2]):null;return{year:s===null?i:s*100,restDateString:t.slice((r[1]||r[2]).length)}}function Ne(t,e){if(e===null)return new Date(NaN);const n=t.match(ge);if(!n)return new Date(NaN);const r=!!n[4],i=L(n[1]),s=L(n[2])-1,f=L(n[3]),_=L(n[4]),d=L(n[5])-1;if(r)return pe(e,_,d)?me(e,_,d):new Date(NaN);{const m=new Date(0);return!Te(e,s,f)||!Ce(e,i)?new Date(NaN):(m.setUTCFullYear(e,s,Math.max(i,f)),m)}}function L(t){return t?parseInt(t):1}function Re(t){const e=t.match(fe);if(!e)return NaN;const n=v(e[1]),r=v(e[2]),i=v(e[3]);return he(n,r,i)?n*V.millisecondsInHour+r*V.millisecondsInMinute+i*1e3:NaN}function v(t){return t&&parseFloat(t.replace(",","."))||0}function De(t){if(t==="Z")return 0;const e=t.match(_e);if(!e)return 0;const n=e[1]==="+"?-1:1,r=parseInt(e[2]),i=e[3]&&parseInt(e[3])||0;return Ae(r,i)?n*(r*V.millisecondsInHour+i*V.millisecondsInMinute):NaN}function me(t,e,n){const r=new Date(0);r.setUTCFullYear(t,0,4);const i=r.getUTCDay()||7,s=(e-1)*7+n+1-i;return r.setUTCDate(r.getUTCDate()+s),r}const Ee=[31,null,31,30,31,30,31,31,30,31,30,31];function W(t){return t%400===0||t%4===0&&t%100!==0}function Te(t,e,n){return e>=0&&e<=11&&n>=1&&n<=(Ee[e]||(W(t)?29:28))}function Ce(t,e){return e>=1&&e<=(W(t)?366:365)}function pe(t,e,n){return e>=1&&e<=53&&n>=0&&n<=6}function he(t,e,n){return t===24?e===0&&n===0:n>=0&&n<60&&e>=0&&e<60&&t>=0&&t<25}function Ae(t,e){return e>=0&&e<=59}const ye=["lg","md","sm","xs","xxs"],Le=15;function we(t,e){return`${t}-${e}`}const Se="CONTROL_PLACEHOLDER_QUOTED",Q="CONTROL_REFERENCE_MISSING",K="CONTROL_VALUE_MISSING",Ve="CONTROL_VALUE_INVALID",xe="CONTROL_CONTEXT_UNSUPPORTED",J="CONTROL_DEFINITION_DUPLICATE",ee="CONTROL_DEFINITION_INVALID",x="CONTROL_BINDING_MAPPING_MISSING",te="CONTROL_BINDING_TARGET_INVALID",U="CONTROL_BINDING_VALUE_INVALID";class I extends Error{constructor(n,r){super(n);M(this,"status",400);M(this,"details");Object.setPrototypeOf(this,I.prototype),this.name="ControlResolutionError",this.details=r}}function G(t,e){const n=new Map;for(const r of[...t,...e]){if(!r||typeof r!="object"||typeof r.id!="string"||r.id.trim().length===0)throw new I("Malformed control definition was provided for query execution.",{code:ee});if(n.get(r.id))throw new I(`Duplicate control definition '${r.id}' was provided for query execution.`,{code:J,controlId:r.id});n.set(r.id,r)}return n}const be=/^-?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/;function Me(t){switch(t.source.kind){case"manual":return t.source.options.map(e=>e.value);case"field_allowlist":return t.source.fieldIds;case"metric_allowlist":return t.source.metricIds;case"dataset_values":return null;default:return null}}function E(t){return`${t.label||t.id} (${t.id})`}function ve(t){return t.type==="field_selector"||t.type==="metric_selector"||t.type==="aggregation_selector"||t.type==="grain_selector"}function j(t,e){const n=Me(t);if(!(!n||n.length===0)&&!n.includes(e))throw new Error(`Control ${E(t)} received unsupported value '${e}'.`)}function re(t,e){switch(t.type){case"enum":case"field_selector":case"metric_selector":case"aggregation_selector":case"grain_selector":{if(typeof e!="string"||e.trim().length===0)throw new Error(`Control ${E(t)} requires a non-empty string value.`);return ve(t)&&e===S.CONTROL_CARD_DEFAULT_VALUE||j(t,e),e}case"multi_enum":{if(!Array.isArray(e))throw new Error(`Control ${E(t)} requires a non-empty array value.`);if(e.length===0){if(!t.requiredAtExecution)return;throw new Error(`Control ${E(t)} requires a non-empty array value.`)}for(const n of e){if(typeof n!="string"||n.trim().length===0)throw new Error(`Control ${E(t)} requires string array values.`);j(t,n)}return e}case"text":{if(typeof e!="string")throw new Error(`Control ${E(t)} requires a string value.`);return e}case"number":{if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&be.test(e.trim()))return Number(e);throw new Error(`Control ${E(t)} requires a numeric value.`)}case"boolean":{if(typeof e!="boolean")throw new Error(`Control ${E(t)} requires a boolean value.`);return e}case"date":{if(e instanceof Date&&!Number.isNaN(e.getTime()))return e;if(typeof e=="string"&&e.trim().length>0){const n=e.trim(),r=X(n);if(!Number.isNaN(r.getTime()))return n}throw new Error(`Control ${E(t)} requires a date-compatible value.`)}default:return e}}function $(t){var i;const e=t.definitions.get(t.binding.controlId);if(!e)throw new I(`Binding references unknown control '${t.binding.controlId}'.`,{code:Q,controlId:t.binding.controlId});if(!Object.prototype.hasOwnProperty.call(t.controlValues||{},t.binding.controlId)){if(!e.requiredAtExecution)return;throw new I(`Control '${t.binding.controlId}' must resolve to a concrete value before query execution.`,{code:K,controlId:t.binding.controlId})}let r;try{r=re(e,(i=t.controlValues)==null?void 0:i[t.binding.controlId])}catch(s){const f=s instanceof Error?s.message:String(s);throw new I(f,{code:U,controlId:t.binding.controlId})}if(typeof r=="string"&&r.trim().length>0)return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(r instanceof Date&&!Number.isNaN(r.getTime()))return r.toISOString();throw new I(`Binding control '${t.binding.controlId}' must resolve to a single scalar value.`,{code:U,controlId:t.binding.controlId})}function F(t){const e=t.binding.mapping[t.selectedValue];if(typeof e=="string"&&e.trim().length>0)return e;throw new I(`Binding for control '${t.binding.controlId}' does not map value '${t.selectedValue}'.`,{code:x,controlId:t.binding.controlId})}function ne(t){const e=t.binding.mapping[t.selectedValue];if(e&&typeof e=="object"&&"role"in e&&e.role==="groupby")return e;throw new I(`Binding for control '${t.binding.controlId}' does not map value '${t.selectedValue}' to a valid group-by field.`,{code:x,controlId:t.binding.controlId})}function oe(t){const e=t.binding.mapping[t.selectedValue];if(e&&typeof e=="object"&&"role"in e&&e.role==="metric")return e;throw new I(`Binding for control '${t.binding.controlId}' does not map value '${t.selectedValue}' to a valid metric field.`,{code:x,controlId:t.binding.controlId})}const Ue=new Set(["day","week","month","quarter","year","hour","minute","second"]);function Fe(t){let e=t.spec;const n=G(t.controlDefinitions||[],t.cardControlDefinitions||[]),r=(t.controlBindings||[]).filter(o=>o.target!=="sql_param"),i=r.filter(o=>o.target==="config_metric_selector"||o.target==="config_field_selector"),s=r.filter(o=>o.target==="config_grain"||o.target==="config_aggregation"),f=new Set,_=new Map;let d;const m=()=>{if(d)return d;const o=t.catalog,c=new Map;for(const l of o){const u=c.get(l.id)??[];c.set(l.id,[...u,l])}return d={refs:o,byId:c},d},h=(o,c)=>{throw new I(o,{code:te,...c?{controlId:c}:{}})},b=(o,c)=>{var u;if(o.derivedField)return o.derivedField.dataType;const l=m().refs.filter(C=>C.field.name===o.name&&R.semaphorSourcesReferToSameDataset(C.field.source??t.spec.source,o.source??t.spec.source));return l.length>1?h("The selected field is ambiguous in the authorized Matrix field catalog.",c):R.normalizeAnalyticsCatalogDataType(((u=l[0])==null?void 0:u.field.dataType)??o.dataType)},B=(o,c)=>Y.getMatrixBindingTargets(o,c.target,l=>b(l,c.controlId)),T=R.matrixSpecSchema.safeParse(e);if(!T.success)return h(T.error.message);e=T.data;const se=[...i,...s].map(o=>{const c=$({binding:o,definitions:n,controlValues:t.controlValues}),l=!o.matrixTargetId&&c!==void 0&&c!==S.CONTROL_CARD_DEFAULT_VALUE?B(T.data,o):[];return{binding:o,selectedValue:c,targetId:o.matrixTargetId??(l.length===1?l[0].id:void 0)}});for(const{binding:o,targetId:c,selectedValue:l}of se){if(l===void 0||l===S.CONTROL_CARD_DEFAULT_VALUE)continue;const u=a=>h(a,o.controlId),C=o.target==="config_metric_selector"||o.target==="config_aggregation",ae=B(e,o);(!c||!ae.some(a=>a.id===c))&&u("Choose a valid Matrix level or measure target for this control.");const P=`${o.target}:${c}`;f.has(P)&&u("Multiple controls cannot replace the same Matrix target."),f.add(P);const q=a=>{const g=(m().byId.get(a.id)??[]).filter(N=>!a.source||R.semaphorSourcesReferToSameDataset(a.source,N.field.source??t.spec.source));if(g.length!==1)return u(g.length?"The selected field is ambiguous in the authorized Matrix field catalog.":"The selected field is not in the authorized Matrix field catalog.");const D=R.matrixFieldSchema.safeParse(g[0].field);return D.success?D.data:u(D.error.message)},A=o.target==="config_metric_selector"||o.target==="config_field_selector"?o.mapping[l]:void 0,p=A&&typeof A=="object"&&"kind"in A&&A.kind==="matrix_instance"?A.id:void 0;if(C){_.set(c,o.controlId);const a=p===void 0?void 0:T.data.measures.find(O=>O.id===p&&O.kind==="aggregate");p!==void 0&&!a&&u("The selected Matrix aggregate measure is no longer available.");const g=o.target==="config_metric_selector"&&!a?oe({binding:o,selectedValue:l}):void 0,D=((a==null?void 0:a.kind)==="aggregate"?a.aggregate:g==null?void 0:g.aggregate)??(o.target==="config_aggregation"?F({binding:o,selectedValue:l}):void 0),N=D===void 0?void 0:R.matrixAggregateSchema.safeParse(D);N&&!N.success&&u("This aggregation is not supported by Matrix."),e={...e,measures:e.measures.map(O=>O.id!==c||O.kind!=="aggregate"?O:{...O,...g?{field:q(g)}:{},...(a==null?void 0:a.kind)==="aggregate"?{field:a.field}:{},aggregate:N!=null&&N.success?N.data:O.aggregate})}}else{const a=p===void 0?void 0:[...T.data.rows,...T.data.columns].find(O=>O.id===p);p!==void 0&&!a&&u("The selected Matrix level is no longer available.");const g=o.target==="config_field_selector"&&!a?ne({binding:o,selectedValue:l}):void 0,D=o.target==="config_grain"?F({binding:o,selectedValue:l}):a?a.grain:g==null?void 0:g.granularity;D!==void 0&&!Ue.has(D)&&u("This time grain is not supported by Matrix.");const N=O=>O.map(y=>{if(y.id!==c)return y;const k=(a==null?void 0:a.field)??(g?q(g):y.field),H=b(k,o.controlId),z=D??(g&&R.isAnalyticsDateLikeDataType(H)?y.grain:void 0);return z&&!R.isAnalyticsDateLikeDataType(H)&&u("A time grain requires a temporal Matrix level."),{...y,field:k,grain:z}});e={...e,rows:N(e.rows),columns:N(e.columns)}}}for(const[o,c]of Array.from(_)){const l=e.measures.find(C=>C.id===o);if(!l||l.kind!=="aggregate")continue;const u=b(l.field,c);de.getFieldAggregationOptions(u).some(C=>C.value===l.aggregate)||h(`Aggregation '${l.aggregate}' is not eligible for this Matrix field datatype.`,c)}try{return Y.reconcileMatrixSpecStructure(T.data,e)}catch(o){if(o instanceof ue.ZodError)return h(o.message);throw o}}function ie(t,e){const n=[],r=i=>{if(i.source){const s=R.configSourceRefSchema.safeParse(i.source);if(s.success)n.push(s.data);else if(e)throw s.error}i.derivedField&&Object.values(i.derivedField.inputs).forEach(s=>r(s.field))};for(const i of t){if(i.target!=="config_field_selector"&&i.target!=="config_metric_selector")continue;const s=e==null?void 0:e.get(i),f=e?s&&s!==S.CONTROL_CARD_DEFAULT_VALUE?[i.mapping[s]]:[]:Object.values(i.mapping);for(const _ of f)_&&"role"in _&&r(_)}return n}function Ge(t,e=[],n=[]){return R.mergeSemaphorSourcesByIdentity([...Z.matrixDefinitionSources(t),...ie(e),...n])}function $e(t,e={}){const n=e.controlBindings??[],r=G(e.controlDefinitions??[],e.cardControlDefinitions??[]),i=new Map(n.filter(s=>s.target==="config_field_selector"||s.target==="config_metric_selector").map(s=>[s,$({binding:s,definitions:r,controlValues:e.controlValues})]));return R.mergeSemaphorSourcesByIdentity([...Z.matrixDefinitionSources(t),...ie(n,i)])}exports.CONTROL_BINDING_MAPPING_MISSING_ERROR_CODE=x;exports.CONTROL_BINDING_TARGET_INVALID_ERROR_CODE=te;exports.CONTROL_BINDING_VALUE_INVALID_ERROR_CODE=U;exports.CONTROL_CONTEXT_UNSUPPORTED_ERROR_CODE=xe;exports.CONTROL_DEFINITION_DUPLICATE_ERROR_CODE=J;exports.CONTROL_DEFINITION_INVALID_ERROR_CODE=ee;exports.CONTROL_PLACEHOLDER_QUOTED_ERROR_CODE=Se;exports.CONTROL_REFERENCE_MISSING_ERROR_CODE=Q;exports.CONTROL_VALUE_INVALID_ERROR_CODE=Ve;exports.CONTROL_VALUE_MISSING_ERROR_CODE=K;exports.ControlResolutionError=I;exports.DASHBOARD_AUTHORING_BREAKPOINTS=ye;exports.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS=Le;exports.buildControlDefinitionIndex=G;exports.getColumnCatalogFieldId=we;exports.matrixCatalogSources=Ge;exports.matrixExecutionSources=$e;exports.parseISO=X;exports.resolveBindingControlValue=$;exports.resolveGroupByFieldTarget=ne;exports.resolveMatrixControlBindings=Fe;exports.resolveMetricFieldTarget=oe;exports.resolveScalarMappedValue=F;exports.validateControlValue=re;
1
+ "use strict";var ce=Object.defineProperty;var le=(t,e,n)=>e in t?ce(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var M=(t,e,n)=>le(t,typeof e!="symbol"?e+"":e,n);const S=require("./common-types-nBuCd3u2.cjs"),R=require("./validators-4dRtYUI1.cjs");require("./matrix-operation-contract-BiUMcd6G.cjs");const Y=require("./calculated-field-identity-D4VOHjBJ.cjs"),de=require("./field-aggregations-hx8odlTh.cjs"),ue=require("zod"),Z=require("./matrix-card-DzkJRoM4.cjs"),V=require("./constants-B00YUv89.cjs");function X(t,e){const r=Ie(t);let i;if(r.date){const d=Oe(r.date,2);i=Ne(d.restDateString,d.year)}if(!i||isNaN(i.getTime()))return new Date(NaN);const s=i.getTime();let f=0,_;if(r.time&&(f=Re(r.time),isNaN(f)))return new Date(NaN);if(r.timezone){if(_=De(r.timezone),isNaN(_))return new Date(NaN)}else{const d=new Date(s+f),m=new Date(0);return m.setFullYear(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate()),m.setHours(d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds()),m}return new Date(s+f+_)}const w={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},ge=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,fe=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,_e=/^([+-])(\d{2})(?::?(\d{2}))?$/;function Ie(t){const e={},n=t.split(w.dateTimeDelimiter);let r;if(n.length>2)return e;if(/:/.test(n[0])?r=n[0]:(e.date=n[0],r=n[1],w.timeZoneDelimiter.test(e.date)&&(e.date=t.split(w.timeZoneDelimiter)[0],r=t.substr(e.date.length,t.length))),r){const i=w.timezone.exec(r);i?(e.time=r.replace(i[1],""),e.timezone=i[1]):e.time=r}return e}function Oe(t,e){const n=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+e)+"})|(\\d{2}|[+-]\\d{"+(2+e)+"})$)"),r=t.match(n);if(!r)return{year:NaN,restDateString:""};const i=r[1]?parseInt(r[1]):null,s=r[2]?parseInt(r[2]):null;return{year:s===null?i:s*100,restDateString:t.slice((r[1]||r[2]).length)}}function Ne(t,e){if(e===null)return new Date(NaN);const n=t.match(ge);if(!n)return new Date(NaN);const r=!!n[4],i=L(n[1]),s=L(n[2])-1,f=L(n[3]),_=L(n[4]),d=L(n[5])-1;if(r)return pe(e,_,d)?me(e,_,d):new Date(NaN);{const m=new Date(0);return!Te(e,s,f)||!Ce(e,i)?new Date(NaN):(m.setUTCFullYear(e,s,Math.max(i,f)),m)}}function L(t){return t?parseInt(t):1}function Re(t){const e=t.match(fe);if(!e)return NaN;const n=v(e[1]),r=v(e[2]),i=v(e[3]);return he(n,r,i)?n*V.millisecondsInHour+r*V.millisecondsInMinute+i*1e3:NaN}function v(t){return t&&parseFloat(t.replace(",","."))||0}function De(t){if(t==="Z")return 0;const e=t.match(_e);if(!e)return 0;const n=e[1]==="+"?-1:1,r=parseInt(e[2]),i=e[3]&&parseInt(e[3])||0;return Ae(r,i)?n*(r*V.millisecondsInHour+i*V.millisecondsInMinute):NaN}function me(t,e,n){const r=new Date(0);r.setUTCFullYear(t,0,4);const i=r.getUTCDay()||7,s=(e-1)*7+n+1-i;return r.setUTCDate(r.getUTCDate()+s),r}const Ee=[31,null,31,30,31,30,31,31,30,31,30,31];function W(t){return t%400===0||t%4===0&&t%100!==0}function Te(t,e,n){return e>=0&&e<=11&&n>=1&&n<=(Ee[e]||(W(t)?29:28))}function Ce(t,e){return e>=1&&e<=(W(t)?366:365)}function pe(t,e,n){return e>=1&&e<=53&&n>=0&&n<=6}function he(t,e,n){return t===24?e===0&&n===0:n>=0&&n<60&&e>=0&&e<60&&t>=0&&t<25}function Ae(t,e){return e>=0&&e<=59}const ye=["lg","md","sm","xs","xxs"],Le=15;function we(t,e){return`${t}-${e}`}const Se="CONTROL_PLACEHOLDER_QUOTED",Q="CONTROL_REFERENCE_MISSING",K="CONTROL_VALUE_MISSING",Ve="CONTROL_VALUE_INVALID",xe="CONTROL_CONTEXT_UNSUPPORTED",J="CONTROL_DEFINITION_DUPLICATE",ee="CONTROL_DEFINITION_INVALID",x="CONTROL_BINDING_MAPPING_MISSING",te="CONTROL_BINDING_TARGET_INVALID",U="CONTROL_BINDING_VALUE_INVALID";class I extends Error{constructor(n,r){super(n);M(this,"status",400);M(this,"details");Object.setPrototypeOf(this,I.prototype),this.name="ControlResolutionError",this.details=r}}function G(t,e){const n=new Map;for(const r of[...t,...e]){if(!r||typeof r!="object"||typeof r.id!="string"||r.id.trim().length===0)throw new I("Malformed control definition was provided for query execution.",{code:ee});if(n.get(r.id))throw new I(`Duplicate control definition '${r.id}' was provided for query execution.`,{code:J,controlId:r.id});n.set(r.id,r)}return n}const be=/^-?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/;function Me(t){switch(t.source.kind){case"manual":return t.source.options.map(e=>e.value);case"field_allowlist":return t.source.fieldIds;case"metric_allowlist":return t.source.metricIds;case"dataset_values":return null;default:return null}}function E(t){return`${t.label||t.id} (${t.id})`}function ve(t){return t.type==="field_selector"||t.type==="metric_selector"||t.type==="aggregation_selector"||t.type==="grain_selector"}function j(t,e){const n=Me(t);if(!(!n||n.length===0)&&!n.includes(e))throw new Error(`Control ${E(t)} received unsupported value '${e}'.`)}function re(t,e){switch(t.type){case"enum":case"field_selector":case"metric_selector":case"aggregation_selector":case"grain_selector":{if(typeof e!="string"||e.trim().length===0)throw new Error(`Control ${E(t)} requires a non-empty string value.`);return ve(t)&&e===S.CONTROL_CARD_DEFAULT_VALUE||j(t,e),e}case"multi_enum":{if(!Array.isArray(e))throw new Error(`Control ${E(t)} requires a non-empty array value.`);if(e.length===0){if(!t.requiredAtExecution)return;throw new Error(`Control ${E(t)} requires a non-empty array value.`)}for(const n of e){if(typeof n!="string"||n.trim().length===0)throw new Error(`Control ${E(t)} requires string array values.`);j(t,n)}return e}case"text":{if(typeof e!="string")throw new Error(`Control ${E(t)} requires a string value.`);return e}case"number":{if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&be.test(e.trim()))return Number(e);throw new Error(`Control ${E(t)} requires a numeric value.`)}case"boolean":{if(typeof e!="boolean")throw new Error(`Control ${E(t)} requires a boolean value.`);return e}case"date":{if(e instanceof Date&&!Number.isNaN(e.getTime()))return e;if(typeof e=="string"&&e.trim().length>0){const n=e.trim(),r=X(n);if(!Number.isNaN(r.getTime()))return n}throw new Error(`Control ${E(t)} requires a date-compatible value.`)}default:return e}}function $(t){var i;const e=t.definitions.get(t.binding.controlId);if(!e)throw new I(`Binding references unknown control '${t.binding.controlId}'.`,{code:Q,controlId:t.binding.controlId});if(!Object.prototype.hasOwnProperty.call(t.controlValues||{},t.binding.controlId)){if(!e.requiredAtExecution)return;throw new I(`Control '${t.binding.controlId}' must resolve to a concrete value before query execution.`,{code:K,controlId:t.binding.controlId})}let r;try{r=re(e,(i=t.controlValues)==null?void 0:i[t.binding.controlId])}catch(s){const f=s instanceof Error?s.message:String(s);throw new I(f,{code:U,controlId:t.binding.controlId})}if(typeof r=="string"&&r.trim().length>0)return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(r instanceof Date&&!Number.isNaN(r.getTime()))return r.toISOString();throw new I(`Binding control '${t.binding.controlId}' must resolve to a single scalar value.`,{code:U,controlId:t.binding.controlId})}function F(t){const e=t.binding.mapping[t.selectedValue];if(typeof e=="string"&&e.trim().length>0)return e;throw new I(`Binding for control '${t.binding.controlId}' does not map value '${t.selectedValue}'.`,{code:x,controlId:t.binding.controlId})}function ne(t){const e=t.binding.mapping[t.selectedValue];if(e&&typeof e=="object"&&"role"in e&&e.role==="groupby")return e;throw new I(`Binding for control '${t.binding.controlId}' does not map value '${t.selectedValue}' to a valid group-by field.`,{code:x,controlId:t.binding.controlId})}function oe(t){const e=t.binding.mapping[t.selectedValue];if(e&&typeof e=="object"&&"role"in e&&e.role==="metric")return e;throw new I(`Binding for control '${t.binding.controlId}' does not map value '${t.selectedValue}' to a valid metric field.`,{code:x,controlId:t.binding.controlId})}const Ue=new Set(["day","week","month","quarter","year","hour","minute","second"]);function Fe(t){let e=t.spec;const n=G(t.controlDefinitions||[],t.cardControlDefinitions||[]),r=(t.controlBindings||[]).filter(o=>o.target!=="sql_param"),i=r.filter(o=>o.target==="config_metric_selector"||o.target==="config_field_selector"),s=r.filter(o=>o.target==="config_grain"||o.target==="config_aggregation"),f=new Set,_=new Map;let d;const m=()=>{if(d)return d;const o=t.catalog,c=new Map;for(const l of o){const u=c.get(l.id)??[];c.set(l.id,[...u,l])}return d={refs:o,byId:c},d},h=(o,c)=>{throw new I(o,{code:te,...c?{controlId:c}:{}})},b=(o,c)=>{var u;if(o.derivedField)return o.derivedField.dataType;const l=m().refs.filter(C=>C.field.name===o.name&&R.semaphorSourcesReferToSameDataset(C.field.source??t.spec.source,o.source??t.spec.source));return l.length>1?h("The selected field is ambiguous in the authorized Matrix field catalog.",c):R.normalizeAnalyticsCatalogDataType(((u=l[0])==null?void 0:u.field.dataType)??o.dataType)},B=(o,c)=>Y.getMatrixBindingTargets(o,c.target,l=>b(l,c.controlId)),T=R.matrixSpecSchema.safeParse(e);if(!T.success)return h(T.error.message);e=T.data;const se=[...i,...s].map(o=>{const c=$({binding:o,definitions:n,controlValues:t.controlValues}),l=!o.matrixTargetId&&c!==void 0&&c!==S.CONTROL_CARD_DEFAULT_VALUE?B(T.data,o):[];return{binding:o,selectedValue:c,targetId:o.matrixTargetId??(l.length===1?l[0].id:void 0)}});for(const{binding:o,targetId:c,selectedValue:l}of se){if(l===void 0||l===S.CONTROL_CARD_DEFAULT_VALUE)continue;const u=a=>h(a,o.controlId),C=o.target==="config_metric_selector"||o.target==="config_aggregation",ae=B(e,o);(!c||!ae.some(a=>a.id===c))&&u("Choose a valid Matrix level or measure target for this control.");const P=`${o.target}:${c}`;f.has(P)&&u("Multiple controls cannot replace the same Matrix target."),f.add(P);const q=a=>{const g=(m().byId.get(a.id)??[]).filter(N=>!a.source||R.semaphorSourcesReferToSameDataset(a.source,N.field.source??t.spec.source));if(g.length!==1)return u(g.length?"The selected field is ambiguous in the authorized Matrix field catalog.":"The selected field is not in the authorized Matrix field catalog.");const D=R.matrixFieldSchema.safeParse(g[0].field);return D.success?D.data:u(D.error.message)},A=o.target==="config_metric_selector"||o.target==="config_field_selector"?o.mapping[l]:void 0,p=A&&typeof A=="object"&&"kind"in A&&A.kind==="matrix_instance"?A.id:void 0;if(C){_.set(c,o.controlId);const a=p===void 0?void 0:T.data.measures.find(O=>O.id===p&&O.kind==="aggregate");p!==void 0&&!a&&u("The selected Matrix aggregate measure is no longer available.");const g=o.target==="config_metric_selector"&&!a?oe({binding:o,selectedValue:l}):void 0,D=((a==null?void 0:a.kind)==="aggregate"?a.aggregate:g==null?void 0:g.aggregate)??(o.target==="config_aggregation"?F({binding:o,selectedValue:l}):void 0),N=D===void 0?void 0:R.matrixAggregateSchema.safeParse(D);N&&!N.success&&u("This aggregation is not supported by Matrix."),e={...e,measures:e.measures.map(O=>O.id!==c||O.kind!=="aggregate"?O:{...O,...g?{field:q(g)}:{},...(a==null?void 0:a.kind)==="aggregate"?{field:a.field}:{},aggregate:N!=null&&N.success?N.data:O.aggregate})}}else{const a=p===void 0?void 0:[...T.data.rows,...T.data.columns].find(O=>O.id===p);p!==void 0&&!a&&u("The selected Matrix level is no longer available.");const g=o.target==="config_field_selector"&&!a?ne({binding:o,selectedValue:l}):void 0,D=o.target==="config_grain"?F({binding:o,selectedValue:l}):a?a.grain:g==null?void 0:g.granularity;D!==void 0&&!Ue.has(D)&&u("This time grain is not supported by Matrix.");const N=O=>O.map(y=>{if(y.id!==c)return y;const k=(a==null?void 0:a.field)??(g?q(g):y.field),H=b(k,o.controlId),z=D??(g&&R.isAnalyticsDateLikeDataType(H)?y.grain:void 0);return z&&!R.isAnalyticsDateLikeDataType(H)&&u("A time grain requires a temporal Matrix level."),{...y,field:k,grain:z}});e={...e,rows:N(e.rows),columns:N(e.columns)}}}for(const[o,c]of Array.from(_)){const l=e.measures.find(C=>C.id===o);if(!l||l.kind!=="aggregate")continue;const u=b(l.field,c);de.getFieldAggregationOptions(u).some(C=>C.value===l.aggregate)||h(`Aggregation '${l.aggregate}' is not eligible for this Matrix field datatype.`,c)}try{return Y.reconcileMatrixSpecStructure(T.data,e)}catch(o){if(o instanceof ue.ZodError)return h(o.message);throw o}}function ie(t,e){const n=[],r=i=>{if(i.source){const s=R.configSourceRefSchema.safeParse(i.source);if(s.success)n.push(s.data);else if(e)throw s.error}i.derivedField&&Object.values(i.derivedField.inputs).forEach(s=>r(s.field))};for(const i of t){if(i.target!=="config_field_selector"&&i.target!=="config_metric_selector")continue;const s=e==null?void 0:e.get(i),f=e?s&&s!==S.CONTROL_CARD_DEFAULT_VALUE?[i.mapping[s]]:[]:Object.values(i.mapping);for(const _ of f)_&&"role"in _&&r(_)}return n}function Ge(t,e=[],n=[]){return R.mergeSemaphorSourcesByIdentity([...Z.matrixDefinitionSources(t),...ie(e),...n])}function $e(t,e={}){const n=e.controlBindings??[],r=G(e.controlDefinitions??[],e.cardControlDefinitions??[]),i=new Map(n.filter(s=>s.target==="config_field_selector"||s.target==="config_metric_selector").map(s=>[s,$({binding:s,definitions:r,controlValues:e.controlValues})]));return R.mergeSemaphorSourcesByIdentity([...Z.matrixDefinitionSources(t),...ie(n,i)])}exports.CONTROL_BINDING_MAPPING_MISSING_ERROR_CODE=x;exports.CONTROL_BINDING_TARGET_INVALID_ERROR_CODE=te;exports.CONTROL_BINDING_VALUE_INVALID_ERROR_CODE=U;exports.CONTROL_CONTEXT_UNSUPPORTED_ERROR_CODE=xe;exports.CONTROL_DEFINITION_DUPLICATE_ERROR_CODE=J;exports.CONTROL_DEFINITION_INVALID_ERROR_CODE=ee;exports.CONTROL_PLACEHOLDER_QUOTED_ERROR_CODE=Se;exports.CONTROL_REFERENCE_MISSING_ERROR_CODE=Q;exports.CONTROL_VALUE_INVALID_ERROR_CODE=Ve;exports.CONTROL_VALUE_MISSING_ERROR_CODE=K;exports.ControlResolutionError=I;exports.DASHBOARD_AUTHORING_BREAKPOINTS=ye;exports.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS=Le;exports.buildControlDefinitionIndex=G;exports.getColumnCatalogFieldId=we;exports.matrixCatalogSources=Ge;exports.matrixExecutionSources=$e;exports.parseISO=X;exports.resolveBindingControlValue=$;exports.resolveGroupByFieldTarget=ne;exports.resolveMatrixControlBindings=Fe;exports.resolveMetricFieldTarget=oe;exports.resolveScalarMappedValue=F;exports.validateControlValue=re;
@@ -3,11 +3,11 @@ var re = (t, e, n) => e in t ? te(t, e, { enumerable: !0, configurable: !0, writ
3
3
  var x = (t, e, n) => re(t, typeof e != "symbol" ? e + "" : e, n);
4
4
  import { C as A } from "./common-types-C6cAQgyh.js";
5
5
  import { N as ne, A as oe, aO as B, B as ie, ac as P, aa as se, q as j, X as ae } from "./validators-BpJDwDnG.js";
6
- import "./matrix-operation-contract-DITvltmL.js";
7
- import { g as ce, r as le } from "./calculated-field-identity-CQb7MOl2.js";
8
- import { g as de } from "./field-aggregations-4O27uCsl.js";
6
+ import "./matrix-operation-contract-D5I-t3i7.js";
7
+ import { g as ce, r as le } from "./calculated-field-identity-CSabKrXt.js";
8
+ import { g as de } from "./field-aggregations-J7de9KZm.js";
9
9
  import { ZodError as ue } from "zod";
10
- import { a as H } from "./matrix-card-CoQiV9pN.js";
10
+ import { a as H } from "./matrix-card-5R39CCdj.js";
11
11
  import { m as Y, a as Z } from "./constants-DeLIHVAW.js";
12
12
  function ge(t, e) {
13
13
  const r = Ie(t);
@@ -1 +1 @@
1
- "use strict";const T=require("./validators-4dRtYUI1.cjs");require("./matrix-operation-contract-CCfuWtro.cjs");const f=require("./semantic-format-BOzelQDB.cjs"),y=require("./raw-temporal-DcHmXurp.cjs"),M=require("./constants-B00YUv89.cjs"),R=require("./index-F25jnH0p.cjs"),v=require("./temporal-bucket-4YEPEKlJ.cjs"),I=["day","hour","minute","second","millisecond"],x={day:864e5,hour:36e5,minute:6e4,second:1e3,millisecond:1},Z={day:"d",hour:"hr",minute:"min",second:"s",millisecond:"ms"},z={day:["day","days"],hour:["hour","hours"],minute:["minute","minutes"],second:["second","seconds"],millisecond:["millisecond","milliseconds"]};function U(e){return e==="day"||e==="hour"||e==="minute"||e==="second"||e==="millisecond"}function L(e,t){return U(e)?e:t}function N(e,t){return I.indexOf(L(e,t))}function k(e,t){const n=N(e,"day"),s=N(t,"second"),r=Math.min(n,s),o=Math.max(n,s);return I.slice(r,o+1)}function V(e,t){return e*x[L(t,"second")]}function q(e,t){const n=k(t.largestUnit,t.smallestUnit),s=n[n.length-1],r=x[s];let o=Math.round(e/r)*r;return n.map(u=>{const a=x[u],c=Math.floor(o/a);return o-=c*a,{unit:u,value:c}})}function X(e,t){const n=e.filter(o=>o.value!==0),s=n.length>0?n:[e[e.length-1]],r=typeof t=="number"&&Number.isFinite(t)?Math.max(1,Math.trunc(t)):s.length;return s.slice(0,r).map(o=>`${o.value}${Z[o.unit]}`).join(" ")}function E(e,t){const n=e.filter(o=>o.value!==0),s=n.length>0?n:[e[e.length-1]],r=typeof t=="number"&&Number.isFinite(t)?Math.max(1,Math.trunc(t)):s.length;return s.slice(0,r).map(o=>{const[u,a]=z[o.unit];return`${o.value} ${o.value===1?u:a}`}).join(" ")}function j(e){const t=e.some(c=>c.unit==="day"&&c.value!==0),n=e.some(c=>c.unit==="millisecond"),s=e.findIndex(c=>c.value!==0),r=Math.max(0,e.length-2),o=t?0:s===-1?r:Math.min(s,r),u=s===-1?e.slice(r):e.slice(o);if(u.length===0)return"0";const a=u.map((c,i)=>c.unit==="millisecond"?String(c.value).padStart(3,"0"):i===0?String(c.value):String(c.value).padStart(2,"0")).join(":");return n?a.replace(/:(\d{3})$/,".$1"):a}function B(e,t,n){const s=`${n.prefix||""}${e}${n.suffix||""}`;return t?n.negativeInParentheses?`(${s})`:`-${s}`:s}function S(e,t={}){if(e==null)return"";const n=typeof e=="number"?e:typeof e=="string"&&e.trim()?Number(e):NaN;if(!Number.isFinite(n))return"";const s=t.inputUnit||"second",r=t.outputStyle==="digital"||t.outputStyle==="long"?t.outputStyle:"compact",o=n<0,u=Math.abs(V(n,s)),a=q(u,t),c=r==="digital"?j(a):r==="long"?E(a,t.maxUnits):X(a,t.maxUnits);return B(c,o,t)}function g(e,t){const n=f.toDate(e),s=f.toDate(t),r=n.getTime()-s.getTime();return r<0?-1:r>0?1:r}function Y(e){return f.constructFrom(e,Date.now())}function W(e,t){const n=f.toDate(e),s=f.toDate(t),r=n.getFullYear()-s.getFullYear(),o=n.getMonth()-s.getMonth();return r*12+o}function F(e){return t=>{const s=(e?Math[e]:Math.trunc)(t);return s===0?0:s}}function H(e,t){return+f.toDate(e)-+f.toDate(t)}function G(e){const t=f.toDate(e);return t.setHours(23,59,59,999),t}function K(e){const t=f.toDate(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}function J(e){const t=f.toDate(e);return+G(t)==+K(t)}function Q(e,t){const n=f.toDate(e),s=f.toDate(t),r=g(n,s),o=Math.abs(W(n,s));let u;if(o<1)u=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-r*o);let a=g(n,s)===-r;J(f.toDate(e))&&o===1&&g(e,s)===1&&(a=!1),u=r*(o-Number(a))}return u===0?0:u}function ee(e,t,n){const s=H(e,t)/1e3;return F(n==null?void 0:n.roundingMethod)(s)}function te(e,t,n){const s=f.getDefaultOptions(),r=(n==null?void 0:n.locale)??s.locale??f.enUS,o=2520,u=g(e,t);if(isNaN(u))throw new RangeError("Invalid time value");const a=Object.assign({},n,{addSuffix:n==null?void 0:n.addSuffix,comparison:u});let c,i;u>0?(c=f.toDate(t),i=f.toDate(e)):(c=f.toDate(e),i=f.toDate(t));const h=ee(i,c),m=(f.getTimezoneOffsetInMilliseconds(i)-f.getTimezoneOffsetInMilliseconds(c))/1e3,l=Math.round((h-m)/60);let d;if(l<2)return n!=null&&n.includeSeconds?h<5?r.formatDistance("lessThanXSeconds",5,a):h<10?r.formatDistance("lessThanXSeconds",10,a):h<20?r.formatDistance("lessThanXSeconds",20,a):h<40?r.formatDistance("halfAMinute",0,a):h<60?r.formatDistance("lessThanXMinutes",1,a):r.formatDistance("xMinutes",1,a):l===0?r.formatDistance("lessThanXMinutes",1,a):r.formatDistance("xMinutes",l,a);if(l<45)return r.formatDistance("xMinutes",l,a);if(l<90)return r.formatDistance("aboutXHours",1,a);if(l<M.minutesInDay){const D=Math.round(l/60);return r.formatDistance("aboutXHours",D,a)}else{if(l<o)return r.formatDistance("xDays",1,a);if(l<M.minutesInMonth){const D=Math.round(l/M.minutesInDay);return r.formatDistance("xDays",D,a)}else if(l<M.minutesInMonth*2)return d=Math.round(l/M.minutesInMonth),r.formatDistance("aboutXMonths",d,a)}if(d=Q(i,c),d<12){const D=Math.round(l/M.minutesInMonth);return r.formatDistance("xMonths",D,a)}else{const D=d%12,b=Math.trunc(d/12);return D<3?r.formatDistance("aboutXYears",b,a):D<9?r.formatDistance("overXYears",b,a):r.formatDistance("almostXYears",b+1,a)}}function _(e,t){return te(e,Y(e),t)}function ne(e,t){return e&&e!=="auto"?e:t}function re(e,t=new Date){try{const n={timeZone:e,timeZoneName:"short"},r=new Intl.DateTimeFormat("en-US",n).formatToParts(t).find(o=>o.type==="timeZoneName");return(r==null?void 0:r.value)||e}catch{return e}}function se(e){try{const t={timeZone:e,timeZoneName:"long"},s=new Intl.DateTimeFormat("en-US",t).formatToParts(new Date).find(r=>r.type==="timeZoneName");return(s==null?void 0:s.value)||e}catch{return e}}function p(e,t="auto"){if(!e)return new Date(NaN);const n=e.endsWith("Z"),s=/[+-]\d{2}:?\d{2}$/.test(e),r=/\([A-Z]{3,4}\)$/.test(e);if(t==="auto")return n||s||r?new Date(e):new Date(e+"Z");if(t==="local"){if(n||s){const o=e.replace(/Z$/,"").replace(/[+-]\d{2}:?\d{2}$/,"");return new Date(o)}return new Date(e)}else return t==="UTC"?n?new Date(e):s?new Date(e):new Date(e+"Z"):n||s||r?new Date(e):R.fromZonedTime(e,t)}const oe="MM/dd/yyyy",C=(e,t,n,s="auto")=>{if(!e)return"";try{const r=p(e,s);if(isNaN(r.getTime()))return e;const u=(t&&t.trim()?t:oe).replace(/LLLL/g,"MMMM").replace(/LLL/g,"MMM");return n&&n!=="auto"?f.formatInTimeZone(r,n,u):f.format(r,u)}catch(r){return console.error("Date formatting error:",r),e}},P=(e,t="auto")=>{if(!e)return"";try{const n=p(e,t);return isNaN(n.getTime())?e:_(n,{addSuffix:!0})}catch(n){return console.error("Relative time formatting error:",n),e}};function ae(e,t,n,s){const r=e instanceof Date?e.toISOString():String(e),o=(s==null?void 0:s.browserTimezone)||n,u=(s==null?void 0:s.isSqlCard)??!1;if(t!=null&&t.useRelativeTime)return P(r,(t==null?void 0:t.sourceTimezone)||"auto");const a=t!=null&&t.useCustomFormat&&(t!=null&&t.customFormat)?t.customFormat:(t==null?void 0:t.format)||"MM/dd/yyyy";return C(r,a,t!=null&&t.timezone&&(t==null?void 0:t.timezone)!=="auto"?t.timezone:u?o:n,(t==null?void 0:t.sourceTimezone)||"auto")}function w(e,t,n){var u,a;if(e==null)return e===null?((u=n.absence)==null?void 0:u.nullText)??"":((a=n.absence)==null?void 0:a.emptyText)??"";const s=T.isExactNumericValue(e)?e:void 0,r=s?s.value:e,o=s??(typeof e=="number"?e:void 0);if(!n.useFormattedValues||!t)return String(r);switch(t.type){case"number":return o!==void 0?y.formatNumberWithColumnSettings(o,t.numberFormat,n.locale):String(r);case"date":return ae(r,t.dateFormat,n.timezone,{browserTimezone:n.browserTimezone,isSqlCard:n.isSqlCard});case"progress":return o!==void 0?`${r}%`:String(r);case"badge":case"link":case"text":case"none":default:return String(r)}}function ie(e,t){return t.visibleColumns.map(n=>{const s=e[n],r=t.columnSettings[n];return w(s,r,{useFormattedValues:t.useFormattedValues,timezone:t.timezone,locale:t.locale})})}function A(e,t){var r;const n=e[e.length-1];if(!n)return"";if(n.member.kind==="others")return"Others";const s=n.member.value;return s===null?"(Blank)":((r=t==null?void 0:t.get(n.levelId))==null?void 0:r(s))??(typeof s=="object"?s.value:String(s))}function O(e,t,n){return e==="grand_total"?n??"Grand Total":e==="subtotal"?n??`${t} Total`:t}function ue(e,t,n,s){var u;const r=e[e.length-1],o=t==="grand_total"?n.grand.label:r?(u=n.levels[r.levelId])==null?void 0:u.label:void 0;return O(t,A(e,s),o)}function ce(e,t,n){return e.kind==="value"?(t==null?void 0:t(e.value))??"":e.kind==="null"?n.nullText:n.emptyText}function le(e){const{path:t,previousPath:n,role:s,repeatLabels:r,levelCount:o}=e;return Array.from({length:o},(u,a)=>{const c=t.slice(0,a+1),i=s==="grand_total"?a===0:s==="subtotal"&&a===t.length-1,h=n&&n.length>a&&T.matrixPathKey(n.slice(0,a+1))===T.matrixPathKey(c);return{path:c,total:i,visible:i||t.length>a&&(r||!h||a===t.length-1)}})}function $(e,t){return f.fromSemanticFormat(e??t,{preserveOmittedProperties:!0,numericInput:"canonical"})}function fe(e,t,n){const s=new Map,r=(o,u)=>{const a=(u==="levels"?t.levelFormats:t.measureFormats)[o.id],c=o.semanticFormat,i=$(a,c);u==="measures"&&s.set(o.id,{isNumeric:T.normalizeAnalyticsCatalogDataType(o.column.dataType)==="number",hasTextAffixes:!!i&&!!("prefix"in i&&i.prefix||"suffix"in i&&i.suffix)});const h=m=>w(m,void 0,{useFormattedValues:!0,timezone:n.calendar.tz,locale:n.valueFormat.locale,absence:t.absence});if(o.column.temporalBucket){const m=o.column.temporalBucket,l=v.resolveTemporalBucketPresentation({metadata:m,cardFormat:(a==null?void 0:a.type)==="temporal_bucket"?a:void 0,semanticFormat:(c==null?void 0:c.type)==="temporal_bucket"?{granularity:m.granularity,format:c}:void 0,locale:n.valueFormat.locale,styles:{dateStyle:n.valueFormat.dateStyle,dateTime:n.valueFormat.dateTime}});return d=>typeof d=="string"?v.formatTemporalBucket({value:d,metadata:m,format:l.format}):h(d)}if(o.column.rawTemporal){const m=y.prepareRawTemporalFormatter({metadata:o.column.rawTemporal,format:y.resolveRawTemporalFormat({format:(i==null?void 0:i.type)==="date"?{type:"raw_temporal",timezone:i.timezone,sourceTimezone:i.sourceTimezone,presentation:i.pattern?{mode:"pattern",dialect:"semaphor_tokens",pattern:i.pattern}:{mode:"auto"}}:void 0,preferences:n.valueFormat,calendar:n.calendar})});return l=>{if(typeof l!="string")return h(l);const d=m(l);return d.ok?d.text:h(l)}}if(f.isNumericCanonicalFormat(i)){const m=y.resolveNumericPresentation(i,n.valueFormat);return l=>typeof l=="number"||typeof l=="object"&&l!==null?y.formatNumericCanonical(l,m):h(l)}return(i==null?void 0:i.type)==="duration"?m=>typeof m=="number"||typeof m=="string"||typeof m=="object"&&m!==null?S(typeof m=="object"?m.value:m,i):h(m):(i==null?void 0:i.type)==="string"?m=>m===null?h(m):`${i.prefix??""}${h(m)}${i.suffix??""}`:h};return{levels:new Map(e.levels.map(o=>[o.id,r(o,"levels")])),measures:new Map(e.measures.map(o=>[o.id,r(o,"measures")])),measureSemantics:s}}exports.formatCellValue=w;exports.formatDate=C;exports.formatDistanceToNow=_;exports.formatDuration=S;exports.formatRelativeTime=P;exports.formatRowForExport=ie;exports.getTimezoneAbbreviation=re;exports.getTimezoneName=se;exports.matrixAxisLabel=ue;exports.matrixCellText=ce;exports.matrixLevelLabels=le;exports.matrixMemberLabel=A;exports.matrixTotalLabel=O;exports.parseWithSourceTimezone=p;exports.prepareMatrixFormatting=fe;exports.resolveMatrixValueFormat=$;exports.resolveTimezone=ne;
1
+ "use strict";const T=require("./validators-4dRtYUI1.cjs");require("./matrix-operation-contract-BiUMcd6G.cjs");const f=require("./semantic-format-CMPIcb8l.cjs"),y=require("./raw-temporal-DcHmXurp.cjs"),M=require("./constants-B00YUv89.cjs"),R=require("./index-F25jnH0p.cjs"),v=require("./temporal-bucket-4YEPEKlJ.cjs"),I=["day","hour","minute","second","millisecond"],x={day:864e5,hour:36e5,minute:6e4,second:1e3,millisecond:1},Z={day:"d",hour:"hr",minute:"min",second:"s",millisecond:"ms"},z={day:["day","days"],hour:["hour","hours"],minute:["minute","minutes"],second:["second","seconds"],millisecond:["millisecond","milliseconds"]};function U(e){return e==="day"||e==="hour"||e==="minute"||e==="second"||e==="millisecond"}function L(e,t){return U(e)?e:t}function N(e,t){return I.indexOf(L(e,t))}function k(e,t){const n=N(e,"day"),s=N(t,"second"),r=Math.min(n,s),o=Math.max(n,s);return I.slice(r,o+1)}function V(e,t){return e*x[L(t,"second")]}function q(e,t){const n=k(t.largestUnit,t.smallestUnit),s=n[n.length-1],r=x[s];let o=Math.round(e/r)*r;return n.map(u=>{const a=x[u],c=Math.floor(o/a);return o-=c*a,{unit:u,value:c}})}function X(e,t){const n=e.filter(o=>o.value!==0),s=n.length>0?n:[e[e.length-1]],r=typeof t=="number"&&Number.isFinite(t)?Math.max(1,Math.trunc(t)):s.length;return s.slice(0,r).map(o=>`${o.value}${Z[o.unit]}`).join(" ")}function E(e,t){const n=e.filter(o=>o.value!==0),s=n.length>0?n:[e[e.length-1]],r=typeof t=="number"&&Number.isFinite(t)?Math.max(1,Math.trunc(t)):s.length;return s.slice(0,r).map(o=>{const[u,a]=z[o.unit];return`${o.value} ${o.value===1?u:a}`}).join(" ")}function j(e){const t=e.some(c=>c.unit==="day"&&c.value!==0),n=e.some(c=>c.unit==="millisecond"),s=e.findIndex(c=>c.value!==0),r=Math.max(0,e.length-2),o=t?0:s===-1?r:Math.min(s,r),u=s===-1?e.slice(r):e.slice(o);if(u.length===0)return"0";const a=u.map((c,i)=>c.unit==="millisecond"?String(c.value).padStart(3,"0"):i===0?String(c.value):String(c.value).padStart(2,"0")).join(":");return n?a.replace(/:(\d{3})$/,".$1"):a}function B(e,t,n){const s=`${n.prefix||""}${e}${n.suffix||""}`;return t?n.negativeInParentheses?`(${s})`:`-${s}`:s}function S(e,t={}){if(e==null)return"";const n=typeof e=="number"?e:typeof e=="string"&&e.trim()?Number(e):NaN;if(!Number.isFinite(n))return"";const s=t.inputUnit||"second",r=t.outputStyle==="digital"||t.outputStyle==="long"?t.outputStyle:"compact",o=n<0,u=Math.abs(V(n,s)),a=q(u,t),c=r==="digital"?j(a):r==="long"?E(a,t.maxUnits):X(a,t.maxUnits);return B(c,o,t)}function g(e,t){const n=f.toDate(e),s=f.toDate(t),r=n.getTime()-s.getTime();return r<0?-1:r>0?1:r}function Y(e){return f.constructFrom(e,Date.now())}function W(e,t){const n=f.toDate(e),s=f.toDate(t),r=n.getFullYear()-s.getFullYear(),o=n.getMonth()-s.getMonth();return r*12+o}function F(e){return t=>{const s=(e?Math[e]:Math.trunc)(t);return s===0?0:s}}function H(e,t){return+f.toDate(e)-+f.toDate(t)}function G(e){const t=f.toDate(e);return t.setHours(23,59,59,999),t}function K(e){const t=f.toDate(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}function J(e){const t=f.toDate(e);return+G(t)==+K(t)}function Q(e,t){const n=f.toDate(e),s=f.toDate(t),r=g(n,s),o=Math.abs(W(n,s));let u;if(o<1)u=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-r*o);let a=g(n,s)===-r;J(f.toDate(e))&&o===1&&g(e,s)===1&&(a=!1),u=r*(o-Number(a))}return u===0?0:u}function ee(e,t,n){const s=H(e,t)/1e3;return F(n==null?void 0:n.roundingMethod)(s)}function te(e,t,n){const s=f.getDefaultOptions(),r=(n==null?void 0:n.locale)??s.locale??f.enUS,o=2520,u=g(e,t);if(isNaN(u))throw new RangeError("Invalid time value");const a=Object.assign({},n,{addSuffix:n==null?void 0:n.addSuffix,comparison:u});let c,i;u>0?(c=f.toDate(t),i=f.toDate(e)):(c=f.toDate(e),i=f.toDate(t));const h=ee(i,c),m=(f.getTimezoneOffsetInMilliseconds(i)-f.getTimezoneOffsetInMilliseconds(c))/1e3,l=Math.round((h-m)/60);let d;if(l<2)return n!=null&&n.includeSeconds?h<5?r.formatDistance("lessThanXSeconds",5,a):h<10?r.formatDistance("lessThanXSeconds",10,a):h<20?r.formatDistance("lessThanXSeconds",20,a):h<40?r.formatDistance("halfAMinute",0,a):h<60?r.formatDistance("lessThanXMinutes",1,a):r.formatDistance("xMinutes",1,a):l===0?r.formatDistance("lessThanXMinutes",1,a):r.formatDistance("xMinutes",l,a);if(l<45)return r.formatDistance("xMinutes",l,a);if(l<90)return r.formatDistance("aboutXHours",1,a);if(l<M.minutesInDay){const D=Math.round(l/60);return r.formatDistance("aboutXHours",D,a)}else{if(l<o)return r.formatDistance("xDays",1,a);if(l<M.minutesInMonth){const D=Math.round(l/M.minutesInDay);return r.formatDistance("xDays",D,a)}else if(l<M.minutesInMonth*2)return d=Math.round(l/M.minutesInMonth),r.formatDistance("aboutXMonths",d,a)}if(d=Q(i,c),d<12){const D=Math.round(l/M.minutesInMonth);return r.formatDistance("xMonths",D,a)}else{const D=d%12,b=Math.trunc(d/12);return D<3?r.formatDistance("aboutXYears",b,a):D<9?r.formatDistance("overXYears",b,a):r.formatDistance("almostXYears",b+1,a)}}function _(e,t){return te(e,Y(e),t)}function ne(e,t){return e&&e!=="auto"?e:t}function re(e,t=new Date){try{const n={timeZone:e,timeZoneName:"short"},r=new Intl.DateTimeFormat("en-US",n).formatToParts(t).find(o=>o.type==="timeZoneName");return(r==null?void 0:r.value)||e}catch{return e}}function se(e){try{const t={timeZone:e,timeZoneName:"long"},s=new Intl.DateTimeFormat("en-US",t).formatToParts(new Date).find(r=>r.type==="timeZoneName");return(s==null?void 0:s.value)||e}catch{return e}}function p(e,t="auto"){if(!e)return new Date(NaN);const n=e.endsWith("Z"),s=/[+-]\d{2}:?\d{2}$/.test(e),r=/\([A-Z]{3,4}\)$/.test(e);if(t==="auto")return n||s||r?new Date(e):new Date(e+"Z");if(t==="local"){if(n||s){const o=e.replace(/Z$/,"").replace(/[+-]\d{2}:?\d{2}$/,"");return new Date(o)}return new Date(e)}else return t==="UTC"?n?new Date(e):s?new Date(e):new Date(e+"Z"):n||s||r?new Date(e):R.fromZonedTime(e,t)}const oe="MM/dd/yyyy",C=(e,t,n,s="auto")=>{if(!e)return"";try{const r=p(e,s);if(isNaN(r.getTime()))return e;const u=(t&&t.trim()?t:oe).replace(/LLLL/g,"MMMM").replace(/LLL/g,"MMM");return n&&n!=="auto"?f.formatInTimeZone(r,n,u):f.format(r,u)}catch(r){return console.error("Date formatting error:",r),e}},P=(e,t="auto")=>{if(!e)return"";try{const n=p(e,t);return isNaN(n.getTime())?e:_(n,{addSuffix:!0})}catch(n){return console.error("Relative time formatting error:",n),e}};function ae(e,t,n,s){const r=e instanceof Date?e.toISOString():String(e),o=(s==null?void 0:s.browserTimezone)||n,u=(s==null?void 0:s.isSqlCard)??!1;if(t!=null&&t.useRelativeTime)return P(r,(t==null?void 0:t.sourceTimezone)||"auto");const a=t!=null&&t.useCustomFormat&&(t!=null&&t.customFormat)?t.customFormat:(t==null?void 0:t.format)||"MM/dd/yyyy";return C(r,a,t!=null&&t.timezone&&(t==null?void 0:t.timezone)!=="auto"?t.timezone:u?o:n,(t==null?void 0:t.sourceTimezone)||"auto")}function w(e,t,n){var u,a;if(e==null)return e===null?((u=n.absence)==null?void 0:u.nullText)??"":((a=n.absence)==null?void 0:a.emptyText)??"";const s=T.isExactNumericValue(e)?e:void 0,r=s?s.value:e,o=s??(typeof e=="number"?e:void 0);if(!n.useFormattedValues||!t)return String(r);switch(t.type){case"number":return o!==void 0?y.formatNumberWithColumnSettings(o,t.numberFormat,n.locale):String(r);case"date":return ae(r,t.dateFormat,n.timezone,{browserTimezone:n.browserTimezone,isSqlCard:n.isSqlCard});case"progress":return o!==void 0?`${r}%`:String(r);case"badge":case"link":case"text":case"none":default:return String(r)}}function ie(e,t){return t.visibleColumns.map(n=>{const s=e[n],r=t.columnSettings[n];return w(s,r,{useFormattedValues:t.useFormattedValues,timezone:t.timezone,locale:t.locale})})}function A(e,t){var r;const n=e[e.length-1];if(!n)return"";if(n.member.kind==="others")return"Others";const s=n.member.value;return s===null?"(Blank)":((r=t==null?void 0:t.get(n.levelId))==null?void 0:r(s))??(typeof s=="object"?s.value:String(s))}function O(e,t,n){return e==="grand_total"?n??"Grand Total":e==="subtotal"?n??`${t} Total`:t}function ue(e,t,n,s){var u;const r=e[e.length-1],o=t==="grand_total"?n.grand.label:r?(u=n.levels[r.levelId])==null?void 0:u.label:void 0;return O(t,A(e,s),o)}function ce(e,t,n){return e.kind==="value"?(t==null?void 0:t(e.value))??"":e.kind==="null"?n.nullText:n.emptyText}function le(e){const{path:t,previousPath:n,role:s,repeatLabels:r,levelCount:o}=e;return Array.from({length:o},(u,a)=>{const c=t.slice(0,a+1),i=s==="grand_total"?a===0:s==="subtotal"&&a===t.length-1,h=n&&n.length>a&&T.matrixPathKey(n.slice(0,a+1))===T.matrixPathKey(c);return{path:c,total:i,visible:i||t.length>a&&(r||!h||a===t.length-1)}})}function $(e,t){return f.fromSemanticFormat(e??t,{preserveOmittedProperties:!0,numericInput:"canonical"})}function fe(e,t,n){const s=new Map,r=(o,u)=>{const a=(u==="levels"?t.levelFormats:t.measureFormats)[o.id],c=o.semanticFormat,i=$(a,c);u==="measures"&&s.set(o.id,{isNumeric:T.normalizeAnalyticsCatalogDataType(o.column.dataType)==="number",hasTextAffixes:!!i&&!!("prefix"in i&&i.prefix||"suffix"in i&&i.suffix)});const h=m=>w(m,void 0,{useFormattedValues:!0,timezone:n.calendar.tz,locale:n.valueFormat.locale,absence:t.absence});if(o.column.temporalBucket){const m=o.column.temporalBucket,l=v.resolveTemporalBucketPresentation({metadata:m,cardFormat:(a==null?void 0:a.type)==="temporal_bucket"?a:void 0,semanticFormat:(c==null?void 0:c.type)==="temporal_bucket"?{granularity:m.granularity,format:c}:void 0,locale:n.valueFormat.locale,styles:{dateStyle:n.valueFormat.dateStyle,dateTime:n.valueFormat.dateTime}});return d=>typeof d=="string"?v.formatTemporalBucket({value:d,metadata:m,format:l.format}):h(d)}if(o.column.rawTemporal){const m=y.prepareRawTemporalFormatter({metadata:o.column.rawTemporal,format:y.resolveRawTemporalFormat({format:(i==null?void 0:i.type)==="date"?{type:"raw_temporal",timezone:i.timezone,sourceTimezone:i.sourceTimezone,presentation:i.pattern?{mode:"pattern",dialect:"semaphor_tokens",pattern:i.pattern}:{mode:"auto"}}:void 0,preferences:n.valueFormat,calendar:n.calendar})});return l=>{if(typeof l!="string")return h(l);const d=m(l);return d.ok?d.text:h(l)}}if(f.isNumericCanonicalFormat(i)){const m=y.resolveNumericPresentation(i,n.valueFormat);return l=>typeof l=="number"||typeof l=="object"&&l!==null?y.formatNumericCanonical(l,m):h(l)}return(i==null?void 0:i.type)==="duration"?m=>typeof m=="number"||typeof m=="string"||typeof m=="object"&&m!==null?S(typeof m=="object"?m.value:m,i):h(m):(i==null?void 0:i.type)==="string"?m=>m===null?h(m):`${i.prefix??""}${h(m)}${i.suffix??""}`:h};return{levels:new Map(e.levels.map(o=>[o.id,r(o,"levels")])),measures:new Map(e.measures.map(o=>[o.id,r(o,"measures")])),measureSemantics:s}}exports.formatCellValue=w;exports.formatDate=C;exports.formatDistanceToNow=_;exports.formatDuration=S;exports.formatRelativeTime=P;exports.formatRowForExport=ie;exports.getTimezoneAbbreviation=re;exports.getTimezoneName=se;exports.matrixAxisLabel=ue;exports.matrixCellText=ce;exports.matrixLevelLabels=le;exports.matrixMemberLabel=A;exports.matrixTotalLabel=O;exports.parseWithSourceTimezone=p;exports.prepareMatrixFormatting=fe;exports.resolveMatrixValueFormat=$;exports.resolveTimezone=ne;
@@ -1,6 +1,6 @@
1
1
  import { aU as L, j as T, aa as _ } from "./validators-BpJDwDnG.js";
2
- import "./matrix-operation-contract-DITvltmL.js";
3
- import { t as d, c as P, g as $, e as C, a as x, b as O, d as A, f as Z, i as R } from "./semantic-format-C_bee0be.js";
2
+ import "./matrix-operation-contract-D5I-t3i7.js";
3
+ import { t as d, c as P, g as $, e as C, a as x, b as O, d as A, f as Z, i as R } from "./semantic-format-UvUAyZS-.js";
4
4
  import { f as U, s as k, k as z, j, b as V } from "./raw-temporal-YWo1GEmr.js";
5
5
  import { b as p, c as M } from "./constants-DeLIHVAW.js";
6
6
  import { f as X } from "./index-CACdoqu3.js";
@@ -0,0 +1 @@
1
+ "use strict";const r=require("zod"),n=require("./validators-4dRtYUI1.cjs"),I={answerSummary:"string",responseDetail:"responseDetail",mode:"string",comparisonKind:"string",executionResult:"executionResult",compiledQuery:"unknown",data:"unknown",resultSets:"record",analysisWarnings:"unknownArray",columns:"unknownArray",records:"recordArray",rowCount:"number",rowLimitExceeded:"boolean",output:"string",querySpec:"unknown",metadata:"record",validation:"validationResult",coverage:"coverage",diagnosticFeedback:"diagnosticFeedback",missingFields:"stringArray",warnings:"unknownArray",comparison:"unknown",population:"population",comparisons:"recordArray",fieldsUsed:"compactExecutionFieldArray",primary:"recordArray",contributors:"recordArray",segments:"recordArray",periodChanges:"recordArray",changes:"recordArray",largestNegativeChanges:"recordArray",largestPositiveChanges:"recordArray",drivers:"recordArray",absoluteDeltaDrivers:"recordArray",largestNegativeDrivers:"recordArray",largestPositiveDrivers:"recordArray",periodRows:"recordArray",sql:"unknown",omitted:"stringArray"},ke=Object.freeze({coordinates:2e4}),v=r.z.string().uuid(),p=r.z.string().min(1),Ae=r.z.number().int().positive().max(Number.MAX_SAFE_INTEGER);function m(i,s,e){i.addIssue({code:"custom",path:s,message:e})}function h(i,s,e){new Set(i).size!==i.length&&m(s,e,"Duplicate identity.")}const Z=r.z.object({id:p,axis:n.matrixAxisSchema,parent:n.matrixPathSchema,position:r.z.union([r.z.object({kind:r.z.literal("first")}).strict(),r.z.object({kind:r.z.enum(["after","before"]),cursor:p}).strict()]),size:Ae}).strict(),K=r.z.object({paths:r.z.array(n.matrixPathSchema).readonly(),pageIds:r.z.array(p).readonly()}).strict(),ee=r.z.object({id:p,rows:K,columns:K,measureIds:r.z.array(v).min(1).readonly()}).strict(),D=r.z.object({pages:r.z.array(Z).readonly(),blocks:r.z.array(ee).readonly()}).strict().superRefine((i,s)=>{!i.pages.length&&!i.blocks.length&&m(s,[],"Request at least one page or block."),h([...i.pages,...i.blocks].map(e=>e.id),s,[]);for(const e of i.blocks){h(e.measureIds,s,["blocks",e.id,"measureIds"]);for(const t of["rows","columns"])for(const a of e[t].pageIds)i.pages.some(o=>o.id===a&&o.axis===t)||m(s,["blocks",e.id,t],"Page reference must name a page on this axis in this operation.")}}),Ie=r.z.object({spec:n.matrixSpecSchema,request:D}).strict().superRefine(({spec:i,request:s},e)=>{for(const t of s.pages)n.checkMatrixPath(i,t.axis,t.parent,e,["pages",t.id],!0),t.parent.length>=i[t.axis].length&&m(e,["pages",t.id],"Cannot request children of a leaf or empty axis.");for(const t of s.blocks){t.measureIds.some(a=>!i.measures.some(o=>o.id===a))&&m(e,["blocks",t.id],"Unknown block measure.");for(const a of["rows","columns"])for(const o of t[a].paths)n.checkMatrixPath(i,a,o,e,["blocks",t.id,a])}}),se=r.z.object({requestId:p,axis:n.matrixAxisSchema,parent:n.matrixPathSchema,members:r.z.array(r.z.object({path:n.matrixPathSchema}).strict()).readonly(),before:p.nullable(),after:p.nullable(),exactCount:r.z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).optional()}).strict().superRefine((i,s)=>{i.parent.some(t=>t.member.kind==="others")&&m(s,["parent"],"Others has no children.");const e=i.members.filter(({path:t})=>{var a;return((a=t[t.length-1])==null?void 0:a.member.kind)==="others"});e.length>1&&m(s,["members"],"A page may contain Others only once."),e.length&&(i.members[i.members.length-1]!==e[0]&&m(s,["members"],"Others must be the last page member."),i.after!==null&&m(s,["after"],"Others must end the branch.")),new Set(i.members.map(t=>{var a;return(a=t.path[t.path.length-1])==null?void 0:a.levelId})).size>1&&m(s,["members"],"One page must contain one child level."),h(i.members.map(t=>n.matrixPathKey(t.path)),s,["members"]);for(const t of i.members)(t.path.length!==i.parent.length+1||n.matrixPathKey(t.path.slice(0,-1))!==n.matrixPathKey(i.parent))&&m(s,["members"],"Page members must be immediate children.")}),te=r.z.object({requestId:p,coverage:r.z.object({rowPaths:r.z.array(n.matrixPathSchema).readonly(),columnPaths:r.z.array(n.matrixPathSchema).readonly(),measureIds:r.z.array(v).readonly()}).strict(),cells:r.z.array(n.matrixCoordinateSchema.extend({value:n.semaphorScalarValueSchema}).strict()).readonly()}).strict().superRefine((i,s)=>{const e=i.coverage.rowPaths.map(n.matrixPathKey),t=i.coverage.columnPaths.map(n.matrixPathKey);h(e,s,["coverage","rowPaths"]),h(t,s,["coverage","columnPaths"]),h(i.coverage.measureIds,s,["coverage","measureIds"]);const a=new Set(e),o=new Set(t),d=new Set(i.coverage.measureIds);h(i.cells.map(c=>JSON.stringify([n.matrixPathKey(c.rowPath),n.matrixPathKey(c.columnPath),c.measureId])),s,["cells"]);for(const c of i.cells)(!a.has(n.matrixPathKey(c.rowPath))||!o.has(n.matrixPathKey(c.columnPath))||!d.has(c.measureId))&&m(s,["cells"],"Cell is outside certified coverage.")}),N=r.z.object({id:v,column:n.semaphorResultColumnSchema,nativeDataType:p,semanticFormat:n.semaphorValueFormatSchema.optional()}).strict(),ie=r.z.object({levels:r.z.array(N).readonly(),measures:r.z.array(N).readonly()}).strict(),_=r.z.object({code:r.z.enum(["invalid_request","unsupported_capability","stale_cursor","forbidden","budget_exceeded","source_truncated","execution_failed","cancelled"]),message:p,detail:p.optional(),retryable:r.z.boolean(),scope:r.z.union([r.z.object({kind:r.z.literal("operation")}).strict(),r.z.object({kind:r.z.enum(["page","block"]),requestId:p}).strict()])}).strict(),re=r.z.object({dialect:r.z.enum(["postgres","clickhouse","duckdb"]),aggregates:r.z.array(n.matrixAggregateSchema).readonly()}).strict(),B=r.z.object({queryIdentity:p,descriptors:ie,capabilities:re,pages:r.z.array(se).readonly(),blocks:r.z.array(te).readonly(),failures:r.z.array(_).readonly()}).strict().superRefine((i,s)=>{const e=new Set(i.descriptors.levels.map(o=>o.id)),t=new Set(i.descriptors.measures.map(o=>o.id)),a=i.pages.flatMap(o=>[o.parent,...o.members.map(d=>d.path)]);for(const o of i.blocks)a.push(...o.coverage.rowPaths,...o.coverage.columnPaths),o.coverage.measureIds.some(d=>!t.has(d))&&m(s,["blocks",o.requestId],"Coverage references an unknown measure descriptor.");a.some(o=>o.some(d=>!e.has(d.levelId)))&&m(s,["descriptors"],"Acquired paths require level descriptors."),h([...i.descriptors.levels,...i.descriptors.measures].map(o=>o.id),s,["descriptors"]),h([...i.pages,...i.blocks].map(o=>o.requestId),s,[]),h(i.failures.map(o=>o.scope.kind==="operation"?"operation":o.scope.requestId),s,["failures"]);for(const o of i.failures)if(o.scope.kind==="operation")m(s,["failures"],"Operation failure cannot accompany acquired data.");else{const d=o.scope.requestId;[...i.pages,...i.blocks].some(c=>c.requestId===d)&&m(s,["failures"],"A requested unit cannot both succeed and fail.")}}),_e=r.z.union([r.z.object({status:r.z.enum(["success","partial"]),window:B}).strict(),r.z.object({status:r.z.literal("failed"),failure:_}).strict()]).superRefine((i,s)=>{if(i.status==="failed")return;const{window:e}=i;!e.pages.length&&!e.blocks.length&&m(s,["window"],"A window outcome requires successful acquired work."),i.status==="success"!=(e.failures.length===0)&&m(s,["status"],"Status must match failure coverage.")}),M=r.z.object({kind:r.z.literal("matrix"),window:B}).strict(),ae=r.z.enum(["member","subtotal","grand_total"]),oe=r.z.discriminatedUnion("kind",[r.z.object({kind:r.z.literal("hierarchy"),label:r.z.string()}).strict(),r.z.object({kind:r.z.literal("level"),levelId:v,label:r.z.string()}).strict(),r.z.object({kind:r.z.literal("measure"),measureId:v,columnPath:n.matrixPathSchema,role:ae,label:r.z.string()}).strict()]),ne=r.z.object({columns:r.z.array(oe).readonly(),descriptors:ie}).strict(),O=r.z.union([r.z.object({kind:r.z.literal("value"),value:n.semaphorScalarValueSchema.refine(i=>i!==null)}).strict(),r.z.object({kind:r.z.enum(["null","empty"])}).strict()]),ue=r.z.discriminatedUnion("kind",[r.z.object({kind:r.z.literal("layout"),rowPath:n.matrixPathSchema,role:ae,values:r.z.array(O).readonly()}).strict(),r.z.object({kind:r.z.literal("flat"),rowPath:n.matrixPathSchema,columnPath:n.matrixPathSchema,values:r.z.array(O).readonly()}).strict()]),Re=r.z.discriminatedUnion("kind",[r.z.object({kind:r.z.literal("layout"),layout:ne,next:p}).strict(),r.z.object({kind:r.z.literal("rows"),rows:r.z.array(ue).readonly(),next:p.nullable()}).strict()]),T=r.z.object({intent:n.matrixAnalyticalIntentSchema,matrixWindowRequest:D}).strict(),A="semaphor-data-app-codegen-summary/v1",xe="semaphor-data-app-codegen-summary-validator/v2",Ee=new Set(["metric","records","matrix","analysis","sql_fallback"]),Ce=new Set(["semaphor.metric","semaphor.records","semaphor.matrix","semaphor.analysis","semaphor.sql"]),qe=new Set(["SUM","COUNT","AVG","MIN","MAX","MEDIAN","DISTINCT"]),je=new Set(["absolute_delta","largest_negative","largest_positive","positive_and_negative","all"]),ce=new Set(["source","id","label","measures","primaryMeasure","dateField","timeGrain","dimensions","comparison","orderBy","filters","relationshipHint","limit","derivedFields"]),Fe=new Set([...ce,"analysis","timeWindow","filters","driverMode","includePopulation","calendarContext","chartTitle","chartType"]),Ke=new Set(["source","id","label","fields","dateField","timeGrain","timeWindow","filters","orderBy","relationshipHint","limit","pagination","totals","derivedFields"]),Ne=new Set(["source","id","label","sql","defaultParameters","pythonCode","fields","limit","pagination","rationale"]),Oe=new Set(["kpi","line_chart","bar_chart","stacked_bar_chart","pie_chart","donut_chart","area_chart","table","matrix","narrative","text_block","custom"]),Pe=new Set(["missing_measure","missing_dimension","missing_date","missing_relationship","missing_semantic_role","missing_current_app_state","raw_identifier_filter_options","unsupported_change_intent","ambiguous_field_grounding","bounded_intent_unavailable","invalid_bounded_intent_output","latest_snapshot_selector_not_modeled","unsupported_grain","requires_sql_escape_hatch","unsupported_sdk_capability"]);function De(i){return V(i).ok}function V(i){const s=[];if(!i||typeof i!="object")return{ok:!1,issues:["Summary must be an object."]};const e=i;return e.schemaVersion!==A&&s.push(`schemaVersion must be ${A}.`),(typeof e.title!="string"||!e.title.trim())&&s.push("title is required."),Array.isArray(e.sources)||s.push("sources must be an array."),Array.isArray(e.inputs)||s.push("inputs must be an array."),Array.isArray(e.views)||s.push("views must be an array."),Array.isArray(e.filterContracts)||s.push("filterContracts must be an array."),(!e.implementationChecklist||typeof e.implementationChecklist!="object")&&s.push("implementationChecklist must be an object."),e.implementationChecklist&&typeof e.implementationChecklist=="object"&&s.push(...Me(e.implementationChecklist)),Array.isArray(e.sources)&&e.sources.forEach((t,a)=>{s.push(...R(t,`sources.${a}`))}),Array.isArray(e.inputs)&&e.inputs.forEach((t,a)=>{s.push(...Te(t,`inputs.${a}`))}),Array.isArray(e.views)&&e.views.forEach((t,a)=>{s.push(...Ve(t,`views.${a}`))}),Array.isArray(e.filterContracts)&&e.filterContracts.forEach((t,a)=>{s.push(...Ze(t,`filterContracts.${a}`))}),e.unsupportedInsights!==void 0&&(Array.isArray(e.unsupportedInsights)?e.unsupportedInsights.forEach((t,a)=>{s.push(...fs(t,`unsupportedInsights.${a}`))}):s.push("unsupportedInsights must be an array.")),s.push(...Be(e)),{ok:s.length===0,issues:s}}function Be(i){const s=Array.isArray(i.unsupportedInsights)&&i.unsupportedInsights.some(d=>{var c;return H.has((c=u(d))==null?void 0:c.reason)}),e=Array.isArray(i.views)&&i.views.some(d=>{var l;const c=u((l=u(d))==null?void 0:l.computation);return(c==null?void 0:c.kind)==="unsupported"&&H.has(c.reason)});if(!s&&!e)return[];const t=[],a=u(i.validation);(a==null?void 0:a.status)!=="blocked"&&t.push("validation.status must be blocked when semantic model repair gaps are present.");const o=u(i.nextRequiredTool);return(o==null?void 0:o.name)!=="semaphor_propose_semantic_model_change"&&t.push("nextRequiredTool.name must be semaphor_propose_semantic_model_change when semantic model repair gaps are present."),t}const H=new Set(["missing_relationship","raw_identifier_filter_options"]);function R(i,s){const e=u(i);return e?e.kind==="semantic"?typeof e.domainId=="string"&&e.domainId.trim()&&typeof e.datasetName=="string"&&e.datasetName.trim()?[]:[`${s} must include sourceKey or a supported source identity.`]:typeof e.sourceKey=="string"&&e.sourceKey.trim()?[]:e.kind==="physical"&&typeof e.tableName=="string"&&e.tableName.trim()&&typeof e.connectionId=="string"&&e.connectionId.trim()?[]:e.kind==="sql"&&typeof e.connectionId=="string"&&e.connectionId.trim()?[]:[`${s} must include sourceKey or a supported source identity.`]:[`${s} must be an object.`]}function Me(i){const s=u(i);if(!s)return["implementationChecklist must be an object."];const e=[],t=["requiredDevtools","requiredInputOptions","filterScopeByInput","bindingsByView","validationCommands","browserSmokeChecks"];for(const o of t)o in s||e.push(`implementationChecklist.${o} is required.`);const a=u(s.requiredDevtools);return a?typeof a.mountRootDevtools!="boolean"&&e.push("implementationChecklist.requiredDevtools.mountRootDevtools must be a boolean."):e.push("implementationChecklist.requiredDevtools must be an object."),Array.isArray(s.requiredInputOptions)||e.push("implementationChecklist.requiredInputOptions must be an array."),Array.isArray(s.filterScopeByInput)||e.push("implementationChecklist.filterScopeByInput must be an array."),u(s.bindingsByView)||e.push("implementationChecklist.bindingsByView must be an object."),y(s.validationCommands)||e.push("implementationChecklist.validationCommands must be an array of strings."),y(s.browserSmokeChecks)||e.push("implementationChecklist.browserSmokeChecks must be an array of strings."),e}function Te(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return(typeof e.id!="string"||!e.id.trim())&&t.push(`${s}.id is required.`),e.fieldRef&&t.push(...f(e.fieldRef,`${s}.fieldRef`)),t.push(...le(e.optionQuery,`${s}.optionQuery`)),y(e.appliesToViewIds)||t.push(`${s}.appliesToViewIds must be an array of strings.`),e.bindings!==void 0&&!Array.isArray(e.bindings)&&t.push(`${s}.bindings must be an array.`),Array.isArray(e.bindings)&&e.bindings.forEach((a,o)=>{const d=u(a);if(!d){t.push(`${s}.bindings.${o} must be an object.`);return}y(d.appliesToViewIds)||t.push(`${s}.bindings.${o}.appliesToViewIds must be an array of strings.`),t.push(...f(d.fieldRef,`${s}.bindings.${o}.fieldRef`))}),t}function Ve(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];if((typeof e.id!="string"||!e.id.trim())&&t.push(`${s}.id is required.`),e.visualSpec!==void 0&&t.push(...ns(e.visualSpec,`${s}.visualSpec`)),e.computation!==void 0&&t.push(...ps(e.computation,`${s}.computation`)),os(e))return t.push(...E(e,`${s}`)),e.fields!==void 0&&(Array.isArray(e.fields)?e.fields.forEach((l,g)=>{t.push(...f(l,`${s}.fields.${g}`))}):t.push(`${s}.fields must be an array.`)),e.queryKind!==void 0&&t.push(`${s}.queryKind is not allowed for non-executable views.`),e.sdkBuilder!==void 0&&t.push(`${s}.sdkBuilder is not allowed for non-executable views.`),e.sdkSpec!==void 0&&t.push(`${s}.sdkSpec is not allowed for non-executable views.`),t;if(!Array.isArray(e.fields))return t.push(`${s}.fields must be an array.`),(e.sdkSpec!==void 0||e.sdkBuilder!==void 0)&&t.push(`${s}.fields must be an array for executable views.`),t.push(...E(e,`${s}`)),t;e.fields.forEach((l,g)=>{t.push(...f(l,`${s}.fields.${g}`))}),z(e.queryKind)||t.push(`${s}.queryKind must be a supported codegen query kind.`),e.sdkBuilder!==void 0&&!pe(e.sdkBuilder)&&t.push(`${s}.sdkBuilder must be a supported SDK builder.`),e.metricBindingKeys!==void 0&&(Array.isArray(e.metricBindingKeys)?e.metricBindingKeys.some(l=>typeof l!="string"||l.trim().length===0)&&t.push(`${s}.metricBindingKeys must be an array of strings.`):t.push(`${s}.metricBindingKeys must be an array of strings.`));const a=u(e.sdkSpec),o=(a==null?void 0:a.builder)==="semaphor.metric";o&&(!Array.isArray(e.metricBindingKeys)||e.metricBindingKeys.length===0)&&t.push(`${s}.metricBindingKeys is required for metric views.`);const d=Ue(e);o&&Array.isArray(e.metricBindingKeys)&&d&&JSON.stringify(e.metricBindingKeys)!==JSON.stringify(d)&&t.push(`${s}.metricBindingKeys must match the generated metric field binding keys in order.`);const c=u(e.computation);return(c==null?void 0:c.kind)==="server_query"&&z(e.queryKind)&&z(c.queryKind)&&c.queryKind!==e.queryKind&&t.push(`${s}.computation.queryKind must match queryKind.`),t.push(...es({value:e.sdkSpec,path:`${s}.sdkSpec`,queryKind:typeof e.queryKind=="string"?e.queryKind:void 0,sdkBuilder:typeof e.sdkBuilder=="string"?e.sdkBuilder:void 0}),...E(e,`${s}`)),t}function Ue(i){const s=u(i.sdkSpec);if((s==null?void 0:s.builder)!=="semaphor.metric")return;const e=u(s.spec);if(!e)return;const a=[e.primaryMeasure,...Array.isArray(e.measures)?e.measures:[]].map(Le).filter(o=>!!o);return Array.from(new Map(a.map(o=>[o.identity,o.bindingKey])).values())}function Le(i){const s=u(i);if(!s||typeof s.name!="string"||!s.name.trim())return;const e=Ge(s);return e?{identity:JSON.stringify({source:e,name:s.name,aggregate:de(s)}),bindingKey:Qe(s)}:void 0}function Ge(i){if(typeof i.sourceKey=="string"&&i.sourceKey.trim())return{sourceKey:i.sourceKey};const s=u(i.source);if(s)return{kind:s.kind,domainId:s.domainId,datasetId:s.datasetId,datasetName:s.datasetName,name:s.name}}function Qe(i){return typeof i.sourceKey=="string"&&i.sourceKey.trim()?[i.sourceKey,de(i),i.name].filter(Boolean).join(":"):n.semaphorMetricMeasureBindingKey(i)}function de(i){return n.semaphorMetricAggregate(i)}function E(i,s){var g;const e=u((g=u(i.visualSpec))==null?void 0:g.tableBehavior),t=u(i.sdkSpec),a=u(t==null?void 0:t.spec),o=typeof(t==null?void 0:t.builder)=="string"?t.builder:void 0,d=o==="semaphor.records"?u(a==null?void 0:a.totals):void 0,c=[];if(!e)return d&&c.push(`${s}.sdkSpec.spec.totals is only allowed when tableBehavior.totals.mode is server.`),c;const l=u(e.totals);return l?(l.mode==="server"&&(o!=="semaphor.records"&&c.push(`${s}.visualSpec.tableBehavior.totals.mode server is only supported for semaphor.records views.`),!d||d.mode!=="server"?c.push(`${s}.sdkSpec.spec.totals.mode must be server when tableBehavior.totals.mode is server.`):c.push(...We({left:l.measures,right:d.measures,leftPath:`${s}.visualSpec.tableBehavior.totals.measures`,rightPath:`${s}.sdkSpec.spec.totals.measures`}))),l.mode!=="server"&&d&&c.push(`${s}.sdkSpec.spec.totals is only allowed when tableBehavior.totals.mode is server.`),o==="semaphor.sql"&&l.mode!=="none"&&c.push(`${s}.visualSpec.tableBehavior.totals.mode must be none for semaphor.sql views.`),o==="semaphor.sql"&&u(a==null?void 0:a.totals)&&c.push(`${s}.sdkSpec.spec.totals is not supported for semaphor.sql.`),c):(d&&c.push(`${s}.sdkSpec.spec.totals is only allowed when tableBehavior.totals.mode is server.`),c)}function We({left:i,right:s,leftPath:e,rightPath:t}){if(!Array.isArray(i)||!Array.isArray(s))return[`${t} must match ${e}.`];const a=[];return i.length!==s.length?(a.push(`${t} must match ${e}.`),a):(i.forEach((o,d)=>{He(u(o),u(s[d]))||a.push(`${t}.${d} must match ${e}.${d}.`)}),a)}function He(i,s){return!i||!s?!1:i.name===s.name&&(i.role||"measure")===(s.role||"measure")&&Y(i)===Y(s)&&Ye(i,s)}function Y(i){return typeof i.aggregate=="string"?i.aggregate.toUpperCase():"SUM"}function Ye(i,s){const e=u(i.source),t=u(s.source);if(Xe(e,t))return!1;const a=X(i),o=X(s);if(a.size>0||o.size>0){for(const d of a)if(o.has(d))return!0;return!1}return!e||!t||e.kind!==t.kind?!1:e.kind==="semantic"?e.domainId===t.domainId&&e.datasetName===t.datasetName&&(e.datasetId===void 0||t.datasetId===void 0||e.datasetId===t.datasetId):e.kind==="physical"?e.connectionId===t.connectionId&&e.tableName===t.tableName:e.kind==="sql"?e.connectionId===t.connectionId:!1}function Xe(i,s){if(!i||!s||i.kind!=="semantic"||s.kind!=="semantic")return!1;const e=typeof i.datasetId=="string"?i.datasetId.trim():"",t=typeof s.datasetId=="string"?s.datasetId.trim():"";return!!(e&&t&&e!==t)}function X(i){const s=typeof i.sourceKey=="string"?i.sourceKey.trim():"";return s?new Set([s]):Je(u(i.source))}function Je(i){const s=new Set;if(!i)return s;const e=typeof i.sourceKey=="string"?i.sourceKey.trim():"";if(e&&s.add(e),i.kind==="semantic"){const t=typeof i.domainId=="string"?i.domainId:"",a=typeof i.datasetName=="string"?i.datasetName:"",o=typeof i.datasetId=="string"?i.datasetId:"";t&&o&&s.add(`semantic:${t}:datasetId:${o}`),t&&a&&s.add(`semantic:${t}:datasetName:${a}`)}if(i.kind==="physical"){const t=typeof i.connectionId=="string"?i.connectionId:"",a=typeof i.tableName=="string"?i.tableName:"",o=typeof i.databaseName=="string"?i.databaseName:"",d=typeof i.schemaName=="string"?i.schemaName:"";t&&a&&(s.add(["physical",t,o,d,a].join(":")),s.add(`physical:${t}:${a}`))}if(i.kind==="sql"){const t=typeof i.connectionId=="string"?i.connectionId:"",a=typeof i.dialect=="string"?i.dialect:"",o=typeof i.label=="string"?i.label:"";t&&(s.add(["sql",t,a,o].join(":")),s.add(`sql:${t}`))}return s}function Ze(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];if(e.fieldRef&&t.push(...f(e.fieldRef,`${s}.fieldRef`)),(typeof e.inputId!="string"||!e.inputId.trim())&&t.push(`${s}.inputId is required.`),t.push(...le(e.optionQuery,`${s}.optionQuery`)),y(e.appliesToViewIds)||t.push(`${s}.appliesToViewIds must be an array of strings.`),y(e.notAppliedToViewIds)||t.push(`${s}.notAppliedToViewIds must be an array of strings.`),!Array.isArray(e.bindings))t.push(`${s}.bindings must be an array.`);else{const a=y(e.appliesToViewIds)?new Set(e.appliesToViewIds):void 0,o=y(e.notAppliedToViewIds)?new Set(e.notAppliedToViewIds):void 0;e.bindings.forEach((d,c)=>{const l=u(d);if(!l){t.push(`${s}.bindings.${c} must be an object.`);return}typeof l.viewId!="string"||!l.viewId?t.push(`${s}.bindings.${c}.viewId is required.`):(a&&!a.has(l.viewId)&&t.push(`${s}.bindings.${c}.viewId must be included in appliesToViewIds.`),o!=null&&o.has(l.viewId)&&t.push(`${s}.bindings.${c}.viewId must not be listed in notAppliedToViewIds.`)),t.push(...f(l.fieldRef,`${s}.bindings.${c}.fieldRef`))})}return t}function le(i,s){if(i===void 0)return[];const e=u(i);if(!e)return[`${s} must be an object.`];const t=[...b(e.valueFieldRef,`${s}.valueFieldRef`),...b(e.labelFieldRef,`${s}.labelFieldRef`),...b(e.filterFieldRef,`${s}.filterFieldRef`)];if(e.builder!=="semaphor.inputOptions"&&t.push(`${s}.builder must be semaphor.inputOptions.`),typeof e.sourceKey!="string"&&e.source===void 0&&t.push(`${s} must include source or sourceKey.`),e.source!==void 0){const a=u(e.source);!a||a.kind!=="semantic"&&a.kind!=="physical"?t.push(`${s}.source.kind must be semantic or physical.`):t.push(...R(e.source,`${s}.source`))}return u(e.valueFieldRef)||t.push(`${s}.valueFieldRef is required.`),u(e.labelFieldRef)||t.push(`${s}.labelFieldRef is required.`),e.limit!==void 0&&(typeof e.limit!="number"||!Number.isInteger(e.limit)||e.limit<=0)&&t.push(`${s}.limit must be a positive integer.`),t}function es(i){var a;const s=u(i.value);if(!s)return[`${i.path} is required for executable views.`];const e=[];if(!pe(s.builder))return e.push(`${i.path}.builder must be a supported SDK builder.`),e;i.sdkBuilder&&s.builder!==i.sdkBuilder&&e.push(`${i.path}.builder must match sdkBuilder.`),i.queryKind&&z(i.queryKind)&&s.builder!==as(i.queryKind)&&e.push(`${i.path}.builder must match queryKind.`);const t=u(s.spec);if(!t)return e.push(`${i.path}.spec must be an object.`),e;switch(s.builder){case"semaphor.metric":e.push(...w(t,ce,`${i.path}.spec`),...k(t,i.path),...C(t.measures,`${i.path}.spec.measures`),...b(t.primaryMeasure,`${i.path}.spec.primaryMeasure`),...b(t.dateField,`${i.path}.spec.dateField`),...q(t.dimensions,`${i.path}.spec.dimensions`),...j(t.orderBy,`${i.path}.spec.orderBy`),...F(t.filters,`${i.path}.spec.filters`));break;case"semaphor.analysis":e.push(...w(t,Fe,`${i.path}.spec`),...k(t,i.path),...C(t.measures,`${i.path}.spec.measures`),...b(t.primaryMeasure,`${i.path}.spec.primaryMeasure`),...b(t.dateField,`${i.path}.spec.dateField`),...q(t.dimensions,`${i.path}.spec.dimensions`),...j(t.orderBy,`${i.path}.spec.orderBy`),...F(t.filters,`${i.path}.spec.filters`),...ss(t,`${i.path}.spec`));break;case"semaphor.records":e.push(...w(t,Ke,`${i.path}.spec`),...k(t,i.path),...C(t.fields,`${i.path}.spec.fields`),...b(t.dateField,`${i.path}.spec.dateField`),...j(t.orderBy,`${i.path}.spec.orderBy`),...F(t.filters,`${i.path}.spec.filters`),...ts(t.totals,`${i.path}.spec.totals`));break;case"semaphor.matrix":{const{id:o,label:d,matrixWindowRequest:c,...l}=t;for(const[$,x]of Object.entries({id:o,label:d}))x!==void 0&&(typeof x!="string"||!x.trim())&&e.push(`${i.path}.spec.${$} must be a nonempty string.`);const g=T.safeParse({intent:{...l,kind:"matrix"},matrixWindowRequest:c});g.success||e.push(...g.error.issues.map($=>`${i.path}.spec.${$.path.join(".")}: ${$.message}`));break}case"semaphor.sql":e.push(...w(t,Ne,`${i.path}.spec`),...k(t,i.path)),((a=u(t.source))==null?void 0:a.kind)!=="sql"&&e.push(`${i.path}.spec.source.kind must be sql.`),(typeof t.sql!="string"||!t.sql.trim())&&e.push(`${i.path}.spec.sql is required.`),e.push(...q(t.fields,`${i.path}.spec.fields`));break}return e}function ss(i,s){const e=[];if(i.driverMode!==void 0&&!je.has(i.driverMode)&&e.push(`${s}.driverMode must be a supported analysis driver mode.`),i.includePopulation!==void 0&&typeof i.includePopulation!="boolean"&&e.push(`${s}.includePopulation must be a boolean.`),i.calendarContext!==void 0){const t=u(i.calendarContext);if(!t)e.push(`${s}.calendarContext must be an object.`);else{t.tz!==void 0&&typeof t.tz!="string"&&e.push(`${s}.calendarContext.tz must be a string.`),t.weekStart!==void 0&&(typeof t.weekStart!="number"||!Number.isInteger(t.weekStart)||t.weekStart<0||t.weekStart>6)&&e.push(`${s}.calendarContext.weekStart must be an integer between 0 and 6.`);const a=t.anchor;if(a!==void 0&&a!=="now"){const o=u(a);(!o||typeof o.iso!="string"||!o.iso.trim())&&e.push(`${s}.calendarContext.anchor must be now or { iso }.`)}}}return e}function ts(i,s){if(i===void 0)return[];const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return e.mode!=="server"&&t.push(`${s}.mode must be server.`),!Array.isArray(e.measures)||e.measures.length===0?t.push(`${s}.measures must include at least one measure.`):e.measures.forEach((a,o)=>{var d;t.push(...fe(a,`${s}.measures.${o}`)),((d=u(a))==null?void 0:d.role)!=="measure"&&t.push(`${s}.measures.${o}.role must be measure.`)}),t}function w(i,s,e){const t=[];return Object.keys(i).forEach(a=>{s.has(a)||t.push(`${e}.${a} is not supported for this SDK builder.`)}),t}function k(i,s){return u(i.source)?R(i.source,`${s}.spec.source`):[`${s}.spec.source must be an object.`]}function C(i,s){const e=rs(i,s);return Array.isArray(i)&&i.forEach((t,a)=>{e.push(...f(t,`${s}.${a}`))}),e}function q(i,s){if(i===void 0)return[];if(!Array.isArray(i))return[`${s} must be an array.`];const e=[];return i.forEach((t,a)=>{e.push(...f(t,`${s}.${a}`))}),e}function j(i,s){if(i===void 0)return[];const e=u(i);return e?[...f(e.field,`${s}.field`),...is(e.direction,`${s}.direction`)]:[`${s} must be an object.`]}function is(i,s){return i==="asc"||i==="desc"?[]:[`${s} must be asc or desc.`]}function F(i,s){if(i===void 0)return[];if(!Array.isArray(i))return[`${s} must be an array.`];const e=[];return i.forEach((t,a)=>{const o=u(t);if(!o){e.push(`${s}.${a} must be an object.`);return}e.push(...f(o.field,`${s}.${a}.field`))}),e}function rs(i,s){return!Array.isArray(i)||i.length===0?[`${s} must be a non-empty array.`]:[]}function as(i){switch(i){case"metric":return"semaphor.metric";case"records":return"semaphor.records";case"matrix":return"semaphor.matrix";case"analysis":return"semaphor.analysis";case"sql_fallback":return"semaphor.sql"}}function os(i){const s=u(i.computation),e=u(i.visualSpec);return(s==null?void 0:s.kind)==="presentation_only"||(s==null?void 0:s.kind)==="derived"||(s==null?void 0:s.kind)==="unsupported"||i.visual==="text_block"||(e==null?void 0:e.visualType)==="text_block"}function ns(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return Oe.has(e.visualType)||t.push(`${s}.visualType must be a supported visual type.`),e.limit!==void 0&&(typeof e.limit!="number"||!Number.isInteger(e.limit)||e.limit<=0)&&t.push(`${s}.limit must be a positive integer.`),e.tableBehavior!==void 0&&t.push(...us(e.tableBehavior,`${s}.tableBehavior`)),t}function us(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return e.tableMode!=="bounded"&&e.tableMode!=="server_paginated"&&e.tableMode!=="server_windowed"&&t.push(`${s}.tableMode must be a supported table mode.`),t.push(...cs(e.height,`${s}.height`),...ds(e.pagination,`${s}.pagination`),...ls(e.sorting,`${s}.sorting`),...ms(e.totals,`${s}.totals`)),typeof e.serverSideRequired!="boolean"&&t.push(`${s}.serverSideRequired must be a boolean.`),t}function cs(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return(typeof e.maxPx!="number"||!Number.isInteger(e.maxPx)||e.maxPx<=0)&&t.push(`${s}.maxPx must be a positive integer.`),e.scroll!=="vertical"&&e.scroll!=="both"&&t.push(`${s}.scroll must be vertical or both.`),typeof e.stickyHeader!="boolean"&&t.push(`${s}.stickyHeader must be a boolean.`),t}function ds(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return e.mode!=="none"&&e.mode!=="server"&&e.mode!=="client_for_bounded_rows"&&t.push(`${s}.mode must be a supported pagination mode.`),e.pageSize!==void 0&&(typeof e.pageSize!="number"||!Number.isInteger(e.pageSize)||e.pageSize<=0)&&t.push(`${s}.pageSize must be a positive integer.`),e.readsFrom!==void 0&&e.readsFrom!=="result.pagination"&&t.push(`${s}.readsFrom must be result.pagination.`),t}function ls(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return e.mode!=="server"&&e.mode!=="client_for_bounded_rows"&&t.push(`${s}.mode must be a supported sorting mode.`),e.defaultField!==void 0&&(typeof e.defaultField!="string"||!e.defaultField.trim())&&t.push(`${s}.defaultField must be a non-empty string.`),e.defaultDirection!==void 0&&e.defaultDirection!=="asc"&&e.defaultDirection!=="desc"&&t.push(`${s}.defaultDirection must be asc or desc.`),e.resetPageOnChange!==void 0&&typeof e.resetPageOnChange!="boolean"&&t.push(`${s}.resetPageOnChange must be a boolean.`),t}function ms(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return e.mode!=="none"&&e.mode!=="server"&&e.mode!=="local"?(t.push(`${s}.mode must be none, server, or local.`),t):e.mode==="none"?(e.measures!==void 0&&t.push(`${s}.measures is not allowed when mode is none.`),e.label!==void 0&&t.push(`${s}.label is not allowed when mode is none.`),t):e.mode==="server"?(!Array.isArray(e.measures)||e.measures.length===0?t.push(`${s}.measures must include at least one measure when mode is server.`):e.measures.forEach((a,o)=>{var d;t.push(...fe(a,`${s}.measures.${o}`)),((d=u(a))==null?void 0:d.role)!=="measure"&&t.push(`${s}.measures.${o}.role must be measure.`)}),e.label!==void 0&&t.push(`${s}.label is not allowed when mode is server.`),t):(e.mode==="local"&&(e.label!=="Displayed rows"&&e.label!=="Current page"&&t.push(`${s}.label must be Displayed rows or Current page when mode is local.`),e.measures!==void 0&&t.push(`${s}.measures is not allowed when mode is local.`)),t)}function ps(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];switch(e.kind){case"server_query":z(e.queryKind)||t.push(`${s}.queryKind must be a supported codegen query kind.`),e.queryOwnership!==void 0&&e.queryOwnership!=="view_owned"&&e.queryOwnership!=="shared_query"&&t.push(`${s}.queryOwnership must be view_owned or shared_query.`),e.sourceKeys!==void 0&&!y(e.sourceKeys)&&t.push(`${s}.sourceKeys must be an array of strings.`),e.fieldNames!==void 0&&!y(e.fieldNames)&&t.push(`${s}.fieldNames must be an array of strings.`);break;case"derived":(typeof e.upstreamViewId!="string"||!e.upstreamViewId.trim())&&t.push(`${s}.upstreamViewId is required.`),(typeof e.derivation!="string"||!e.derivation.trim())&&t.push(`${s}.derivation is required.`);break;case"presentation_only":break;case"unsupported":(typeof e.reason!="string"||!e.reason.trim())&&t.push(`${s}.reason is required.`),(typeof e.suggestedModelingFix!="string"||!e.suggestedModelingFix.trim())&&t.push(`${s}.suggestedModelingFix is required.`);break;default:t.push(`${s}.kind must be a supported computation kind.`)}return t}function fs(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];for(const o of["title","requestedQuestion","suggestedModelingFix"])(typeof e[o]!="string"||!e[o].trim())&&t.push(`${s}.${o} is required.`);return Pe.has(e.reason)||t.push(`${s}.reason must be a supported unsupported insight reason.`),(e.relationshipCandidate!==void 0||e.nextRepairAction!==void 0)&&e.reason!=="missing_relationship"&&t.push(`${s} relationship repair metadata is only valid for missing_relationship unsupported insights.`),e.diagnostic!==void 0&&t.push(...hs(e.diagnostic,`${s}.diagnostic`,e.reason)),e.relationshipCandidate!==void 0&&t.push(...gs(e.relationshipCandidate,`${s}.relationshipCandidate`)),e.nextRepairAction!==void 0&&t.push(...ys(e.nextRepairAction,`${s}.nextRepairAction`)),t}function hs(i,s,e){const t=u(i);if(!t)return[`${s} must be an object.`];const a=[],o=new Set(["kind","inputId","inputLabel","optionSource","optionField","missingEvidence"]);Object.keys(t).forEach(c=>{o.has(c)||a.push(`${s}.${c} is not supported; raw identifier diagnostics support only kind, inputId, inputLabel, optionSource, optionField, and missingEvidence.`)}),e!=="raw_identifier_filter_options"&&a.push(`${s} is only valid for raw_identifier_filter_options unsupported insights.`),t.kind!=="raw_identifier_filter_options"&&a.push(`${s}.kind must be raw_identifier_filter_options.`);for(const c of["inputId","inputLabel"])(typeof t[c]!="string"||!t[c].trim())&&a.push(`${s}.${c} must be a non-empty string.`);a.push(...P(t.optionSource,`${s}.optionSource`)),a.push(...me(t.optionField,`${s}.optionField`));const d=new Set(["display_field","relationship_display_path"]);return!Array.isArray(t.missingEvidence)||t.missingEvidence.length===0?a.push(`${s}.missingEvidence must be a non-empty evidence array.`):t.missingEvidence.forEach((c,l)=>{d.has(c)||a.push(`${s}.missingEvidence.${l} must be display_field or relationship_display_path.`)}),a}function ys(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[],a=new Set(["tool","reason"]);return Object.keys(e).forEach(o=>{a.has(o)||t.push(`${s}.${o} is not supported; repair actions support only tool and reason.`)}),e.tool!=="semaphor_propose_semantic_model_change"&&t.push(`${s}.tool must be semaphor_propose_semantic_model_change.`),e.reason!=="missing_relationship"&&t.push(`${s}.reason must be missing_relationship.`),t}function gs(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[],a=new Set(["source","sourceFields","target","targetFields"]);Object.keys(e).forEach(o=>{a.has(o)||t.push(`${s}.${o} is not supported; relationship candidates support only source, sourceFields, target, and targetFields.`)}),t.push(...P(e.source,`${s}.source`)),t.push(...P(e.target,`${s}.target`));for(const o of["sourceFields","targetFields"]){const d=e[o];if(!Array.isArray(d)||d.length===0){t.push(`${s}.${o} must be a non-empty endpoint field array.`);continue}d.forEach((c,l)=>{t.push(...me(c,`${s}.${o}.${l}`))})}return t}function me(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[],a=new Set(["name","label","role","dataType"]);return Object.keys(e).forEach(o=>{a.has(o)||t.push(`${s}.${o} is not supported; relationship candidate fields are scoped by their endpoint and support only name, label, role, and dataType.`)}),(typeof e.name!="string"||!e.name.trim())&&t.push(`${s}.name must be a non-empty string.`),e.role!==void 0&&(typeof e.role!="string"||!["dimension","measure","date","id","unknown"].includes(e.role))&&t.push(`${s}.role must be dimension, measure, date, id, or unknown.`),e.dataType!==void 0&&(typeof e.dataType!="string"||!["string","number","boolean","date","datetime","unknown"].includes(e.dataType))&&t.push(`${s}.dataType must be string, number, boolean, date, datetime, or unknown.`),t}function P(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[],a=new Set(["kind","domainId","datasetName","datasetId","label","sourceKey"]);return Object.keys(e).forEach(o=>{a.has(o)||t.push(`${s}.${o} is not supported; relationship candidate sources support only semantic identity fields.`)}),e.kind!=="semantic"&&t.push(`${s} must use semantic source identity.`),(typeof e.domainId!="string"||!e.domainId.trim()||typeof e.datasetName!="string"||!e.datasetName.trim())&&t.push(`${s} must include semantic domainId and datasetName.`),t}function z(i){return Ee.has(i)}function pe(i){return Ce.has(i)}function b(i,s){return i===void 0?[]:f(i,s)}function f(i,s){const e=u(i);if(!e)return[`${s} must be an object.`];const t=[];return(typeof e.name!="string"||!e.name.trim())&&t.push(`${s}.name is required.`),!e.source&&typeof e.sourceKey!="string"&&t.push(`${s} must include source or sourceKey.`),e.aggregate!==void 0&&!qe.has(e.aggregate)&&t.push(`${s}.aggregate must be a supported aggregate function.`),t}function fe(i,s){const e=u(i),t=f(i,s);if(!e||typeof e.sourceKey=="string"&&e.sourceKey.trim())return t;if(e.source!==void 0){const o=R(e.source,`${s}.source`);return o.length===0||t.push(...o),t}return t.includes(`${s} must include source or sourceKey.`)||t.push(`${s} must include source or sourceKey.`),t}function u(i){return i&&typeof i=="object"&&!Array.isArray(i)?i:void 0}function y(i){return Array.isArray(i)&&i.every(s=>typeof s=="string")}const he=r.z.union([n.semaphorMetricResultSchema,n.semaphorRecordsResultSchema,n.semaphorInputOptionsResultSchema,n.semaphorSqlResultSchema,M]),ye=r.z.object({status:r.z.enum(["not_required","resolved","missing","ambiguous","fanout_risk","unknown"]),requiredSources:r.z.array(n.semaphorSourceRefSchema).optional(),relationshipsUsed:r.z.array(r.z.string()).optional(),missingSources:r.z.array(r.z.string()).optional(),warnings:r.z.array(r.z.string()).optional(),message:r.z.string().optional(),recommendedNextStep:r.z.string().optional(),joinPlanSummary:r.z.object({baseSource:n.semaphorSourceRefSchema.optional(),joinedSources:r.z.array(n.semaphorSourceRefSchema).optional(),joinCount:r.z.number().optional()}).passthrough().optional(),fanoutRisk:r.z.object({status:r.z.enum(["none","warning","error","unknown"]),message:r.z.string().optional()}).passthrough().optional()}).passthrough(),J=r.z.enum(["ambiguous_fields","empty_result","missing_grounded_fields","missing_relationship","no_grounded_query","partial_result","presentation_incomplete","query_validation_failed","unsafe_join"]),U=r.z.object({version:r.z.literal(1),status:r.z.enum(["answered","partial","blocked"]),summary:r.z.string(),answered:r.z.array(r.z.object({slotId:r.z.string().optional(),queryId:r.z.string().optional(),summary:r.z.string(),evidenceIds:r.z.array(r.z.string()).optional(),fieldsUsed:r.z.array(n.semaphorExecutionFieldRefSchema).optional()}).passthrough()),blocked:r.z.array(r.z.object({slotId:r.z.string().optional(),queryId:r.z.string().optional(),reasonCode:J,message:r.z.string(),missingFields:r.z.array(r.z.string()).optional(),availableFields:r.z.array(r.z.string()).optional(),ambiguousFields:r.z.array(r.z.string()).optional(),missingRelationships:r.z.array(r.z.string()).optional(),evidenceIds:r.z.array(r.z.string()).optional(),neededFromUser:r.z.array(r.z.string()).optional(),recommendedNextStep:r.z.string().optional()}).passthrough()),semanticModelRecommendations:r.z.array(r.z.object({reasonCode:J,message:r.z.string(),recommendedNextStep:r.z.string().optional()}).passthrough()).optional()}).passthrough(),L=r.z.object({scope:r.z.literal("filtered_query"),measures:r.z.record(n.nullableScalarSchema)}).passthrough(),G=r.z.object({answeredObligations:r.z.array(r.z.string()),missingObligations:r.z.array(r.z.string()),warnings:r.z.array(n.semaphorAnalyticsValidationIssueSchema).optional()}).passthrough(),Q=r.z.object({intentId:r.z.string().optional(),queryId:r.z.string().optional(),status:r.z.enum(["answered","partial","failed"]),resultShape:r.z.enum(["metric","records","inputOptions","sql","matrix","period_change","analysis"]).optional(),intent:r.z.unknown().optional(),compiledQuery:r.z.unknown().optional(),fieldsUsed:r.z.array(n.semaphorExecutionFieldRefSchema).optional(),result:he.optional(),validation:n.semaphorAnalyticsValidationResultSchema,coverage:G.optional(),missingFields:r.z.array(r.z.string()).optional(),warnings:r.z.array(r.z.string()).optional(),relationshipDiagnostics:ye.optional(),diagnosticFeedback:U.optional(),population:L.optional(),metadata:r.z.record(r.z.string(),r.z.unknown()).optional()}).passthrough(),ge=Q;function bs(i){switch(i){case"boolean":return r.z.boolean().optional();case"compactExecutionFieldArray":return r.z.array(n.semaphorCompactFieldRefSchema).optional();case"coverage":return G.optional();case"diagnosticFeedback":return U.optional();case"executionFieldArray":return r.z.array(n.semaphorExecutionFieldRefSchema).optional();case"executionResult":return ge.optional();case"number":return r.z.number().finite().optional();case"population":return L.optional();case"record":return n.recordSchema.optional();case"recordArray":return n.recordArraySchema.optional();case"responseDetail":return r.z.enum(["compact","standard","debug"]).optional();case"string":return r.z.string().optional();case"stringArray":return r.z.array(r.z.string()).optional();case"unknown":return r.z.unknown().optional();case"unknownArray":return r.z.array(r.z.unknown()).optional();case"validationResult":return n.semaphorAnalyticsValidationResultSchema.optional()}}const be=Object.fromEntries(Object.entries(I).map(([i,s])=>[i,bs(s)])),Se=r.z.object(be).strict(),W=r.z.object({sourceKey:r.z.string().optional(),kind:r.z.enum(["semantic","physical","sql"]).optional(),domainId:r.z.string().optional(),datasetName:r.z.string().optional(),datasetId:r.z.string().optional(),connectionId:r.z.string().optional(),tableName:r.z.string().optional(),label:r.z.string().optional()}).passthrough(),S=r.z.object({name:r.z.string(),label:r.z.string().optional(),role:r.z.enum(["dimension","measure","date","id","unknown"]).optional(),dataType:r.z.enum(["string","number","boolean","date","datetime","unknown"]).optional(),aggregate:n.semaphorAggregateFunctionSchema.optional(),sourceKey:r.z.string().optional(),source:W.optional()}).passthrough(),ze=r.z.object({id:r.z.string().optional(),builder:r.z.literal("semaphor.inputOptions"),source:W.optional(),sourceKey:r.z.string().optional(),valueFieldRef:S,labelFieldRef:S,filterFieldRef:S.optional(),population:r.z.unknown().optional(),dependencies:r.z.unknown().optional(),limit:r.z.number().int().positive().optional(),spec:n.recordSchema.optional()}).passthrough(),ve=r.z.object({appliesToViewIds:r.z.array(r.z.string()).optional(),viewId:r.z.string().optional(),fieldRef:S,relationshipHint:r.z.unknown().optional(),relationshipsUsed:r.z.array(n.recordSchema).optional()}).passthrough(),Ss=r.z.object({id:r.z.string(),label:r.z.string().optional(),type:r.z.string().optional(),serverSide:r.z.boolean().optional(),fieldRef:S.optional(),optionQuery:ze.optional(),bindings:r.z.array(ve).optional(),appliesToViewIds:r.z.array(r.z.string()),relationshipHint:r.z.unknown().optional(),relationshipsUsed:r.z.array(n.recordSchema).optional()}).passthrough(),zs=r.z.object({builder:r.z.enum(["semaphor.metric","semaphor.records","semaphor.matrix","semaphor.analysis","semaphor.sql"]),spec:n.recordSchema,fallbackReason:n.recordSchema.optional()}).passthrough(),vs=r.z.object({id:r.z.string(),title:r.z.string().optional(),purpose:r.z.string().optional(),sourcePresentation:r.z.object({sourceKeys:r.z.array(r.z.string()).optional(),sourceLabels:r.z.array(r.z.string()).optional()}).passthrough().optional(),visual:r.z.string().optional(),visualSpec:n.recordSchema.optional(),queryKind:r.z.enum(["metric","records","matrix","analysis","sql_fallback"]).optional(),sdkBuilder:r.z.enum(["semaphor.metric","semaphor.records","semaphor.matrix","semaphor.analysis","semaphor.sql"]).optional(),sdkSpec:zs.optional(),fields:r.z.array(S).optional(),computation:n.recordSchema.optional(),uxExpectations:r.z.array(r.z.string()).optional(),validation:n.recordSchema.optional()}).passthrough(),$s=r.z.object({inputId:r.z.string(),label:r.z.string().optional(),type:r.z.string().optional(),serverSide:r.z.boolean().optional(),fieldRef:S.optional(),optionQuery:ze.optional(),bindings:r.z.array(ve),appliesToViewIds:r.z.array(r.z.string()),notAppliedToViewIds:r.z.array(r.z.string())}).passthrough(),ws=r.z.object({schemaVersion:r.z.literal(A),title:r.z.string(),purpose:r.z.string().optional(),userGoal:r.z.string().optional(),nextStep:r.z.string().optional(),sources:r.z.array(W),inputs:r.z.array(Ss),views:r.z.array(vs),filterContracts:r.z.array($s),implementationChecklist:r.z.object({schemaVersion:r.z.string().optional(),requiredDevtools:r.z.object({mountRootDevtools:r.z.boolean(),providerDebugBridge:r.z.string().optional(),panelPosition:r.z.string().optional(),forbidden:r.z.array(r.z.string()).optional()}).passthrough(),requiredInputOptions:r.z.array(n.recordSchema),filterScopeByInput:r.z.array(n.recordSchema),bindingsByView:r.z.record(r.z.string(),r.z.array(n.recordSchema)),validationCommands:r.z.array(r.z.string()),browserSmokeChecks:r.z.array(r.z.string())}).passthrough(),nextRequiredTool:r.z.object({name:r.z.string(),reason:r.z.string().optional()}).optional(),unsupportedInsights:r.z.array(r.z.object({title:r.z.string(),requestedQuestion:r.z.string(),reason:r.z.string(),suggestedModelingFix:r.z.string()}).passthrough()).optional(),assumptions:r.z.array(r.z.string()).optional(),validation:n.recordSchema.optional()}).passthrough().superRefine((i,s)=>{const e=V(i);for(const t of e.issues)s.addIssue({code:r.z.ZodIssueCode.custom,message:t})}),ks=new Set(Object.keys(I));function As(){return Object.keys(I)}function $e(i){return ks.has(i)}function Is(i){if(!i||typeof i!="object"||Array.isArray(i))throw new Error("Semaphor analyze result must be an object.");const e=Object.keys(i).filter(t=>!$e(t));if(e.length)throw new Error(`Semaphor analyze result contains unsupported top-level field(s): ${e.join(", ")}.`);return Se.parse(i)}const we=r.z.object({runtimeFilters:n.matrixSpecSchema.innerType().shape.filters,runtimeSorts:n.matrixSpecSchema.innerType().shape.sorts.optional()});function _s(i){return we.parse(i)}const Rs={compiledQuery:r.z.never().optional(),intent:T.shape.intent,resultShape:r.z.literal("matrix"),result:M.optional(),metadata:r.z.object({rowLimitExceeded:r.z.boolean(),matrixFailure:_.optional()}).passthrough()},xs=Q.extend(Rs),Es=xs.superRefine((i,s)=>{i.status==="failed"==!!i.result&&s.addIssue({code:"custom",message:"Only answered or partial Matrix execution carries a window."}),i.result&&i.status==="partial"!=i.result.window.failures.length>0&&s.addIssue({code:"custom",message:"Matrix execution status must match acquired window failures."})});exports.MATRIX_WINDOW_LIMITS=ke;exports.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT=I;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=A;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION=xe;exports.analyticsExecutionEnvelopeSchema=Q;exports.getSemaphorAnalyzeResultFieldNames=As;exports.isSemaphorAnalyzeResultFieldName=$e;exports.isSemaphorDataAppCodegenSummary=De;exports.matrixAxisPageSchema=se;exports.matrixBlockRequestSchema=ee;exports.matrixCapabilitiesSchema=re;exports.matrixCellBlockSchema=te;exports.matrixDescriptorSchema=N;exports.matrixExecutionResultSchema=Es;exports.matrixExportBatchSchema=Re;exports.matrixExportColumnSchema=oe;exports.matrixExportLayoutSchema=ne;exports.matrixExportRowSchema=ue;exports.matrixExportValueSchema=O;exports.matrixFailureSchema=_;exports.matrixOperationRequestSchema=T;exports.matrixPageRequestSchema=Z;exports.matrixPathSelectionSchema=K;exports.matrixResultSchema=M;exports.matrixRuntimeInputsSchema=we;exports.matrixWindowInputSchema=Ie;exports.matrixWindowOutcomeSchema=_e;exports.matrixWindowRequestSchema=D;exports.matrixWindowSchema=B;exports.parseMatrixRuntimeInputs=_s;exports.parseSemaphorAnalyzeResult=Is;exports.semaphorAnalyticsCoverageSchema=G;exports.semaphorAnalyticsDiagnosticFeedbackSchema=U;exports.semaphorAnalyticsExecutionResultSchema=ge;exports.semaphorAnalyticsPopulationSchema=L;exports.semaphorAnalyticsResultSchema=he;exports.semaphorAnalyzeResultSchema=Se;exports.semaphorAnalyzeResultShape=be;exports.semaphorDataAppCodegenSummarySchema=ws;exports.semaphorRelationshipDiagnosticsSchema=ye;exports.validateSemaphorDataAppCodegenSummary=V;
@@ -182,6 +182,8 @@ const Ne = r.object({
182
182
  "cancelled"
183
183
  ]),
184
184
  message: p,
185
+ /** Technical cause for dashboard owners; never shown as the primary copy. */
186
+ detail: p.optional(),
185
187
  retryable: r.boolean(),
186
188
  scope: r.union([
187
189
  r.object({ kind: r.literal("operation") }).strict(),
@@ -1,8 +1,8 @@
1
1
  var x = Object.defineProperty;
2
2
  var T = (e, r, t) => r in e ? x(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
3
3
  var y = (e, r, t) => T(e, typeof r != "symbol" ? r + "" : r, t);
4
- import { i as C } from "./semantic-format-C_bee0be.js";
5
- import { d as _ } from "./matrix-formatter-PvfZAZMO.js";
4
+ import { i as C } from "./semantic-format-UvUAyZS-.js";
5
+ import { d as _ } from "./matrix-formatter-youWVghC.js";
6
6
  import { b as g } from "./raw-temporal-YWo1GEmr.js";
7
7
  import { PDF_SAFETY_LIMIT_EXCEEDED as S, getUtf8ByteLength as V, FAST_PDF_POLICY as M } from "../pdf-export-policy/index.js";
8
8
  import { f as P } from "./temporal-bucket-B9hMwemw.js";
@@ -1,4 +1,4 @@
1
- "use strict";var v=Object.defineProperty;var X=(e,r,t)=>r in e?v(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var w=(e,r,t)=>X(e,typeof r!="symbol"?r+"":r,t);const D=require("./semantic-format-BOzelQDB.cjs"),k=require("./matrix-formatter-C3cZwlyH.cjs"),f=require("./raw-temporal-DcHmXurp.cjs"),d=require("../pdf-export-policy/index.cjs"),G=require("./temporal-bucket-4YEPEKlJ.cjs");function B(e,r,t){const n={...r,locale:r.locale??t};if(n.type==="number")return f.formatNumericCanonical(e,n);const{prefix:o,suffix:a,...s}=n;return`${o??""}${f.formatNumericCanonical(e,{...s,negativeStyle:n.type==="currency"?n.negativeStyle:"minus"})}${a??""}`}function A(e,r,t){return e===null?{value:e,text:null}:!r||!D.isNumericCanonicalFormat(r)&&r.type!=="duration"?{value:e,text:f.formatNumericCanonical(e,{type:"number",locale:t})}:r.type==="duration"?{value:e,text:k.formatDuration(e,{inputUnit:r.inputUnit,outputStyle:r.outputStyle,largestUnit:r.largestUnit,smallestUnit:r.smallestUnit,maxUnits:r.maxUnits,prefix:r.prefix,suffix:r.suffix,negativeInParentheses:r.negativeStyle==="parentheses"})}:{value:e,text:B(e,r,t)}}function T(e,r,t,n){return e===null?{value:e,text:null}:n==="percent"?{value:e,text:f.formatNumericCanonical(e,{type:"percent",locale:t,minimumFractionDigits:r,maximumFractionDigits:r,percentValueMode:"fraction"})}:{value:e,text:f.formatNumericCanonical(e,{type:"number",locale:t,minimumFractionDigits:r,maximumFractionDigits:r,suffix:"×"})}}function _(e,r){if(e===void 0)return r;if(!Number.isInteger(e)||e<0||e>6)throw new RangeError("Comparison precision must be an integer from 0 to 6.");return e}function $(e,r){const t={mode:r.displayMode,current:A(e.currentValue,r.metricFormat,r.locale),comparison:A(e.comparisonValue,r.metricFormat,r.locale)};return(r.displayMode==="difference"||r.displayMode==="both")&&(t.difference=A(e.delta,r.metricFormat,r.locale)),(r.displayMode==="percent_change"||r.displayMode==="both")&&(t.percentChange=T(e.percentChange,_(r.precision,1),r.locale,"percent")),r.displayMode==="ratio"&&(t.ratio=T(e.ratio,_(r.precision,2),r.locale,"ratio")),t}function U(e){const r=e.trimStart().charAt(0);return["=","+","-","@"].includes(r)||[" ","\r",`
1
+ "use strict";var v=Object.defineProperty;var X=(e,r,t)=>r in e?v(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var w=(e,r,t)=>X(e,typeof r!="symbol"?r+"":r,t);const D=require("./semantic-format-CMPIcb8l.cjs"),k=require("./matrix-formatter-3QR1mqhn.cjs"),f=require("./raw-temporal-DcHmXurp.cjs"),d=require("../pdf-export-policy/index.cjs"),G=require("./temporal-bucket-4YEPEKlJ.cjs");function B(e,r,t){const n={...r,locale:r.locale??t};if(n.type==="number")return f.formatNumericCanonical(e,n);const{prefix:o,suffix:a,...s}=n;return`${o??""}${f.formatNumericCanonical(e,{...s,negativeStyle:n.type==="currency"?n.negativeStyle:"minus"})}${a??""}`}function A(e,r,t){return e===null?{value:e,text:null}:!r||!D.isNumericCanonicalFormat(r)&&r.type!=="duration"?{value:e,text:f.formatNumericCanonical(e,{type:"number",locale:t})}:r.type==="duration"?{value:e,text:k.formatDuration(e,{inputUnit:r.inputUnit,outputStyle:r.outputStyle,largestUnit:r.largestUnit,smallestUnit:r.smallestUnit,maxUnits:r.maxUnits,prefix:r.prefix,suffix:r.suffix,negativeInParentheses:r.negativeStyle==="parentheses"})}:{value:e,text:B(e,r,t)}}function T(e,r,t,n){return e===null?{value:e,text:null}:n==="percent"?{value:e,text:f.formatNumericCanonical(e,{type:"percent",locale:t,minimumFractionDigits:r,maximumFractionDigits:r,percentValueMode:"fraction"})}:{value:e,text:f.formatNumericCanonical(e,{type:"number",locale:t,minimumFractionDigits:r,maximumFractionDigits:r,suffix:"×"})}}function _(e,r){if(e===void 0)return r;if(!Number.isInteger(e)||e<0||e>6)throw new RangeError("Comparison precision must be an integer from 0 to 6.");return e}function $(e,r){const t={mode:r.displayMode,current:A(e.currentValue,r.metricFormat,r.locale),comparison:A(e.comparisonValue,r.metricFormat,r.locale)};return(r.displayMode==="difference"||r.displayMode==="both")&&(t.difference=A(e.delta,r.metricFormat,r.locale)),(r.displayMode==="percent_change"||r.displayMode==="both")&&(t.percentChange=T(e.percentChange,_(r.precision,1),r.locale,"percent")),r.displayMode==="ratio"&&(t.ratio=T(e.ratio,_(r.precision,2),r.locale,"ratio")),t}function U(e){const r=e.trimStart().charAt(0);return["=","+","-","@"].includes(r)||[" ","\r",`
2
2
  `].includes(e.charAt(0))?`'${e}`:e}function C(e,r=","){if(e==null)return"";const t=String(e);return t.includes(r)||t.includes('"')||t.includes(`
3
3
  `)||t.includes("\r")?`"${t.replace(/"/g,'""')}"`:t}function b(e,r=","){return e.map(t=>C(t,r)).join(r)}function h(e,r={}){const{delimiter:t=",",lineEnding:n=`
4
4
  `}=r;return e.map(o=>b(o,t)).join(n)}function N(e,r={}){if(e.length===0)return"";const{delimiter:t=",",lineEnding:n=`
@@ -5,7 +5,7 @@ import { p as _, a as K } from "./raw-temporal-YWo1GEmr.js";
5
5
  import { b as j } from "./report-runtime-context-nCHl3uHC.js";
6
6
  import { i as f, p as F } from "./temporal-bucket-B9hMwemw.js";
7
7
  import { $ as S } from "./validators-BpJDwDnG.js";
8
- import "./matrix-operation-contract-DITvltmL.js";
8
+ import "./matrix-operation-contract-D5I-t3i7.js";
9
9
  import { a as M } from "./metric-comparison-vr9j4Z_Z.js";
10
10
  import { a as P } from "./temporal-bucket-contract-Bx5TJXF3.js";
11
11
  import { b as T, P as O } from "./pivot-result-identity-CMz27nri.js";