react-semaphor 0.1.464 → 0.1.466
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +132 -130
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +4 -4
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +4 -4
- package/dist/chunks/{analyze-result-contract-DROq4vgY.js → analyze-result-contract-CMZDRRwo.js} +1 -1
- package/dist/chunks/{analyze-result-contract-DSGoFuXQ.cjs → analyze-result-contract-CMwVg9w2.cjs} +1 -1
- package/dist/chunks/{common-types-BHVKgxRR.js → common-types-Co766x6t.js} +1 -1
- package/dist/chunks/{common-types-BcV9PD9D.cjs → common-types-o3LJcrpg.cjs} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-CTozRa6c.js → dashboard-briefing-launcher-C_Iy9yvg.js} +9 -9
- package/dist/chunks/{dashboard-briefing-launcher-BSMtcAgE.cjs → dashboard-briefing-launcher-DbLc4VV9.cjs} +1 -1
- package/dist/chunks/{dashboard-controls-wuo6PrDm.js → dashboard-controls-C25Pk_CY.js} +9 -9
- package/dist/chunks/{dashboard-controls-CmK7U1hI.cjs → dashboard-controls-Rotbld-z.cjs} +1 -1
- package/dist/chunks/{dashboard-filter-value-compatibility-KXIyvbhc.js → dashboard-filter-value-compatibility-B8ynE_O1.js} +255 -240
- package/dist/chunks/dashboard-filter-value-compatibility-Bnl2lsng.cjs +1 -0
- package/dist/chunks/{dashboard-input-contract-BkRFQ7Tq.cjs → dashboard-input-contract-12mPNhCF.cjs} +1 -1
- package/dist/chunks/{dashboard-input-contract-D5dxTWJ5.js → dashboard-input-contract-Px64VWBL.js} +1 -1
- package/dist/chunks/{dashboard-json-C9qvau-c.js → dashboard-json-DjMbADzW.js} +7 -7
- package/dist/chunks/{dashboard-json-7BQDKnHy.cjs → dashboard-json-LeJ0JD4L.cjs} +1 -1
- package/dist/chunks/{edit-dashboard-visual-CHlsiGOo.js → edit-dashboard-visual-BDNcPoBS.js} +2727 -2709
- package/dist/chunks/{edit-dashboard-visual-BSWdyT4u.cjs → edit-dashboard-visual-ryv-jOUA.cjs} +14 -14
- package/dist/chunks/{editor-action-buttons-B0o-qU4l.js → editor-action-buttons-CFDC0po3.js} +6 -6
- package/dist/chunks/{editor-action-buttons-DMnbVoBJ.cjs → editor-action-buttons-lBwd5Stw.cjs} +1 -1
- package/dist/chunks/{index-De_7nrwb.js → index-BlCnNcaB.js} +9 -9
- package/dist/chunks/{index-DQvtZ1gG.js → index-Bs9OvwM2.js} +29357 -29207
- package/dist/chunks/{index-DjjKJPDy.cjs → index-CQN-X1jN.cjs} +1 -1
- package/dist/chunks/{index-DqMJN4lZ.cjs → index-UKhl24L_.cjs} +164 -164
- package/dist/chunks/{matrix-result-contract-BTpPuHOc.js → matrix-result-contract-DQ9_UadF.js} +3 -3
- package/dist/chunks/{matrix-result-contract-ZRNfeIbI.cjs → matrix-result-contract-DiHDIyQk.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-DW0gKG8g.js → pivot-header-presentation-CSf6CyOt.js} +2 -2
- package/dist/chunks/{pivot-header-presentation-BijPbP33.cjs → pivot-header-presentation-DyV0iOZ_.cjs} +1 -1
- package/dist/chunks/{pivot-result-identity-Z9tN2tEV.js → pivot-result-identity-BvT51Nog.js} +1 -1
- package/dist/chunks/{pivot-result-identity-DxHtiKVj.cjs → pivot-result-identity-gsOwOjHi.cjs} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-g2U-vzQb.js → pivot-result-lifecycle--NNNPUtG.js} +7 -7
- package/dist/chunks/{pivot-result-lifecycle-BXzIlQVu.cjs → pivot-result-lifecycle-CEfU43GZ.cjs} +1 -1
- package/dist/chunks/{raw-temporal-contract-UtAqoOZO.js → raw-temporal-contract-BqVMduCs.js} +1 -1
- package/dist/chunks/{raw-temporal-contract-DfAvqNMo.cjs → raw-temporal-contract-UdblxoVB.cjs} +1 -1
- package/dist/chunks/{report-preferences-dialog-CkKbfjRg.cjs → report-preferences-dialog-DzUi-b9O.cjs} +1 -1
- package/dist/chunks/{report-preferences-dialog-BP4YC4D_.js → report-preferences-dialog-JCUuGAtd.js} +6 -6
- package/dist/chunks/{report-runtime-context-C0NfLPfc.cjs → report-runtime-context-CLtzrZdC.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-CNncA3VD.js → report-runtime-context-CrTzKt0C.js} +1 -1
- package/dist/chunks/{saved-temporal-bucket-format-3QKveR3v.cjs → saved-temporal-bucket-format-Ca4hUfTo.cjs} +1 -1
- package/dist/chunks/{saved-temporal-bucket-format-Dd2eixTH.js → saved-temporal-bucket-format-DfqnCGCz.js} +3 -3
- package/dist/chunks/{switch-G_-UwdXX.js → switch-B6rFVSdw.js} +2942 -2892
- package/dist/chunks/{switch-CNqDn5b8.cjs → switch-BghC7eOM.cjs} +11 -11
- package/dist/chunks/{temporal-bucket-pMfghsLX.cjs → temporal-bucket-BDRcWdVv.cjs} +1 -1
- package/dist/chunks/{temporal-bucket-C85rmFmC.js → temporal-bucket-DFYIkexB.js} +18 -18
- package/dist/chunks/{temporal-bucket-authoring-BK1UhYpD.cjs → temporal-bucket-authoring-C6sZAVqS.cjs} +1 -1
- package/dist/chunks/{temporal-bucket-authoring-1fZuPAVb.js → temporal-bucket-authoring-ZxFzhTmL.js} +12 -12
- package/dist/chunks/{temporal-bucket-contract-DXXNZssK.js → temporal-bucket-contract-COPPwwbi.js} +1 -1
- package/dist/chunks/{temporal-bucket-contract-xFkvboaw.cjs → temporal-bucket-contract-vrOkax-r.cjs} +1 -1
- package/dist/chunks/{token-types-BYYO109W.cjs → token-types-DALtlgbG.cjs} +1 -1
- package/dist/chunks/{token-types-BLxc7UwR.js → token-types-p1M3SA2G.js} +1 -1
- package/dist/chunks/{update-policy-CB8XJIoY.js → update-policy-BKOA5S76.js} +1 -1
- package/dist/chunks/{update-policy-DMjjGjQY.cjs → update-policy-Cyufdviq.cjs} +1 -1
- package/dist/chunks/{validators-DVd8s3qY.js → validators-CCpBY1e0.js} +824 -788
- package/dist/chunks/validators-DO-YuzgO.cjs +1 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +2 -2
- package/dist/dashboard-authoring/index.cjs +2 -2
- package/dist/dashboard-authoring/index.js +6 -5
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +2 -2
- package/dist/data-app-codegen/index.cjs +1 -1
- package/dist/data-app-codegen/index.js +2 -2
- package/dist/data-app-codegen-node/index.cjs +1 -1
- package/dist/data-app-codegen-node/index.js +3 -3
- package/dist/data-app-sdk/index.cjs +1 -1
- package/dist/data-app-sdk/index.js +3 -3
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +2 -2
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +3 -3
- package/dist/format-utils/index.cjs +1 -1
- package/dist/format-utils/index.js +15 -15
- package/dist/index.cjs +1 -1
- package/dist/index.js +14 -14
- package/dist/report-runtime-context/index.cjs +1 -1
- package/dist/report-runtime-context/index.js +2 -2
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +3 -3
- package/dist/types/analytics-protocol.d.ts +15 -0
- package/dist/types/briefings.d.ts +1 -0
- package/dist/types/dashboard-assistant.d.ts +1 -0
- package/dist/types/dashboard-authoring.d.ts +15 -1
- package/dist/types/dashboard.d.ts +1 -0
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/main.d.ts +2 -1
- package/dist/types/shared.d.ts +1 -0
- package/dist/types/surfboard.d.ts +1 -0
- package/dist/types/types.d.ts +1 -0
- package/package.json +1 -1
- package/dist/chunks/dashboard-filter-value-compatibility-UapptYnn.cjs +0 -1
- package/dist/chunks/validators-dJlwubP4.cjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const a=require("zod"),E=["second","minute","hour","day","week","month","quarter","year"];function ni(e){return typeof e=="string"&&E.includes(e)}const[,,...te]=E;function si(e){return ni(e)&&te.includes(e)}const oi=["week_of_short","week_of_long","quarter_short","quarter_long","fiscal_quarter_short","fiscal_year"],tt={invalidMetadata:"invalid_raw_temporal_metadata"};function ri(e){return e==="second"||e==="minute"||e==="hour"?"datetime":"date"}const at={missingMetadata:"missing_temporal_bucket_metadata",invalidMetadata:"invalid_temporal_bucket_metadata",invalidValue:"invalid_temporal_bucket_value"},nt="__auto_count__";function li(e){try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}const di={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"},st="SUM";function S(e){return typeof e=="string"&&e.trim().length>0}function Be(e){return S(e)?e.trim().toLowerCase():""}function k(e){const i=S(e.datasetId)?e.datasetId.trim():void 0;if(i)return Be(i)===Be(e.datasetName)?void 0:i}function Se(e){if(e.kind!=="semantic")return e;const i=k(e),{datasetId:t,...n}=e;return{...n,...i?{datasetId:i}:{}}}function ot(e){return e?e.kind==="semantic"?!!(S(e.domainId)&&(S(e.datasetId)||S(e.datasetName))):e.kind==="physical"?S(e.connectionId)&&S(e.tableName):S(e.connectionId):!1}function Y(e){if(!e)return"";if(e.kind==="semantic"){const i=k(e);return[e.kind,e.domainId,i?`datasetId:${i}`:`datasetName:${e.datasetName}`].join(":")}return e.kind==="physical"?[e.kind,e.connectionId,e.databaseName||"",e.schemaName||"",e.tableName].join(":"):[e.kind,e.connectionId,e.dialect||"",e.label||""].join(":")}function ae(e,i){if(!e||!i)return e===i;if(e.kind!==i.kind)return!1;if(e.kind==="semantic"&&i.kind==="semantic"){if(e.domainId!==i.domainId)return!1;const t=k(e),n=k(i);return t&&n?t===n:e.datasetName===i.datasetName}return Y(e)===Y(i)}function $e(e,i){return e.kind!=="semantic"||i.kind!=="semantic"?e:Se({...e,datasetName:e.datasetName||i.datasetName,datasetId:k(e)||k(i),label:e.label||i.label,connectionId:e.connectionId||i.connectionId})}function rt(e){const i=[];for(const t of e){const n=Se(t),s=i.findIndex(r=>ae(r,n));if(s===-1){i.push(n);continue}i[s]=$e(i[s],n)}return i}function ui(e,i){return e.name===i.name&&ae(e.source,i.source)}function ci(e){return[e.source?Y(e.source):"unknown",ne(e),e.name].filter(Boolean).join(":")}function ne(e){return lt(e.aggregate||st)}function lt(e){return e.trim().toUpperCase()}function dt(e,i){return{...e,label:e.label||i.label,role:e.role||i.role,dataType:e.dataType||i.dataType,source:e.source&&i.source?$e(e.source,i.source):e.source||i.source}}const Q="semaphor-data-app-codegen-summary/v1",ut="semaphor-data-app-codegen-summary-validator/v2",ct=new Set(["metric","records","matrix","analysis","sql_fallback"]),pt=new Set(["semaphor.metric","semaphor.records","semaphor.matrix","semaphor.analysis","semaphor.sql"]),mt=new Set(["SUM","COUNT","AVG","MIN","MAX","MEDIAN","DISTINCT"]),ft=new Set(["absolute_delta","largest_negative","largest_positive","positive_and_negative","all"]),pi=new Set(["source","id","label","measures","primaryMeasure","dateField","timeGrain","dimensions","comparison","orderBy","filters","relationshipHint","limit","derivedFields"]),gt=new Set([...pi,"analysis","timeWindow","filters","driverMode","includePopulation","calendarContext","chartTitle","chartType"]),ht=new Set(["source","id","label","fields","dateField","timeGrain","timeWindow","filters","orderBy","relationshipHint","limit","pagination","totals","derivedFields"]),yt=new Set(["source","id","label","filters","relationshipHint","rows","columns","values","totals","sort","expansion","layout","displayLimits"]),bt=new Set(["source","id","label","sql","defaultParameters","pythonCode","fields","limit","pagination","rationale"]),_t=new Set(["kpi","line_chart","bar_chart","stacked_bar_chart","pie_chart","donut_chart","area_chart","table","matrix","narrative","text_block","custom"]),vt=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 zt(e){return we(e).ok}function we(e){const i=[];if(!e||typeof e!="object")return{ok:!1,issues:["Summary must be an object."]};const t=e;return t.schemaVersion!==Q&&i.push(`schemaVersion must be ${Q}.`),(typeof t.title!="string"||!t.title.trim())&&i.push("title is required."),Array.isArray(t.sources)||i.push("sources must be an array."),Array.isArray(t.inputs)||i.push("inputs must be an array."),Array.isArray(t.views)||i.push("views must be an array."),Array.isArray(t.filterContracts)||i.push("filterContracts must be an array."),(!t.implementationChecklist||typeof t.implementationChecklist!="object")&&i.push("implementationChecklist must be an object."),t.implementationChecklist&&typeof t.implementationChecklist=="object"&&i.push(...$t(t.implementationChecklist)),Array.isArray(t.sources)&&t.sources.forEach((n,s)=>{i.push(...P(n,`sources.${s}`))}),Array.isArray(t.inputs)&&t.inputs.forEach((n,s)=>{i.push(...wt(n,`inputs.${s}`))}),Array.isArray(t.views)&&t.views.forEach((n,s)=>{i.push(...kt(n,`views.${s}`))}),Array.isArray(t.filterContracts)&&t.filterContracts.forEach((n,s)=>{i.push(...Ft(n,`filterContracts.${s}`))}),t.unsupportedInsights!==void 0&&(Array.isArray(t.unsupportedInsights)?t.unsupportedInsights.forEach((n,s)=>{i.push(...ia(n,`unsupportedInsights.${s}`))}):i.push("unsupportedInsights must be an array.")),i.push(...St(t)),{ok:i.length===0,issues:i}}function St(e){const i=Array.isArray(e.unsupportedInsights)&&e.unsupportedInsights.some(l=>{var d;return Ke.has((d=c(l))==null?void 0:d.reason)}),t=Array.isArray(e.views)&&e.views.some(l=>{var u;const d=c((u=c(l))==null?void 0:u.computation);return(d==null?void 0:d.kind)==="unsupported"&&Ke.has(d.reason)});if(!i&&!t)return[];const n=[],s=c(e.validation);(s==null?void 0:s.status)!=="blocked"&&n.push("validation.status must be blocked when semantic model repair gaps are present.");const r=c(e.nextRequiredTool);return(r==null?void 0:r.name)!=="semaphor_propose_semantic_model_change"&&n.push("nextRequiredTool.name must be semaphor_propose_semantic_model_change when semantic model repair gaps are present."),n}const Ke=new Set(["missing_relationship","raw_identifier_filter_options"]);function P(e,i){const t=c(e);return t?t.kind==="semantic"?typeof t.domainId=="string"&&t.domainId.trim()&&typeof t.datasetName=="string"&&t.datasetName.trim()?[]:[`${i} must include sourceKey or a supported source identity.`]:typeof t.sourceKey=="string"&&t.sourceKey.trim()?[]:t.kind==="physical"&&typeof t.tableName=="string"&&t.tableName.trim()&&typeof t.connectionId=="string"&&t.connectionId.trim()?[]:t.kind==="sql"&&typeof t.connectionId=="string"&&t.connectionId.trim()?[]:[`${i} must include sourceKey or a supported source identity.`]:[`${i} must be an object.`]}function $t(e){const i=c(e);if(!i)return["implementationChecklist must be an object."];const t=[],n=["requiredDevtools","requiredInputOptions","filterScopeByInput","bindingsByView","validationCommands","browserSmokeChecks"];for(const r of n)r in i||t.push(`implementationChecklist.${r} is required.`);const s=c(i.requiredDevtools);return s?typeof s.mountRootDevtools!="boolean"&&t.push("implementationChecklist.requiredDevtools.mountRootDevtools must be a boolean."):t.push("implementationChecklist.requiredDevtools must be an object."),Array.isArray(i.requiredInputOptions)||t.push("implementationChecklist.requiredInputOptions must be an array."),Array.isArray(i.filterScopeByInput)||t.push("implementationChecklist.filterScopeByInput must be an array."),c(i.bindingsByView)||t.push("implementationChecklist.bindingsByView must be an object."),z(i.validationCommands)||t.push("implementationChecklist.validationCommands must be an array of strings."),z(i.browserSmokeChecks)||t.push("implementationChecklist.browserSmokeChecks must be an array of strings."),t}function wt(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return(typeof t.id!="string"||!t.id.trim())&&n.push(`${i}.id is required.`),t.fieldRef&&n.push(...h(t.fieldRef,`${i}.fieldRef`)),n.push(...fi(t.optionQuery,`${i}.optionQuery`)),z(t.appliesToViewIds)||n.push(`${i}.appliesToViewIds must be an array of strings.`),t.bindings!==void 0&&!Array.isArray(t.bindings)&&n.push(`${i}.bindings must be an array.`),Array.isArray(t.bindings)&&t.bindings.forEach((s,r)=>{const l=c(s);if(!l){n.push(`${i}.bindings.${r} must be an object.`);return}z(l.appliesToViewIds)||n.push(`${i}.bindings.${r}.appliesToViewIds must be an array of strings.`),n.push(...h(l.fieldRef,`${i}.bindings.${r}.fieldRef`))}),n}function kt(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];if((typeof t.id!="string"||!t.id.trim())&&n.push(`${i}.id is required.`),t.visualSpec!==void 0&&n.push(...Yt(t.visualSpec,`${i}.visualSpec`)),t.computation!==void 0&&n.push(...ea(t.computation,`${i}.computation`)),Ut(t))return n.push(...ce(t,`${i}`)),t.fields!==void 0&&(Array.isArray(t.fields)?t.fields.forEach((u,p)=>{n.push(...h(u,`${i}.fields.${p}`))}):n.push(`${i}.fields must be an array.`)),t.queryKind!==void 0&&n.push(`${i}.queryKind is not allowed for non-executable views.`),t.sdkBuilder!==void 0&&n.push(`${i}.sdkBuilder is not allowed for non-executable views.`),t.sdkSpec!==void 0&&n.push(`${i}.sdkSpec is not allowed for non-executable views.`),n;if(!Array.isArray(t.fields))return n.push(`${i}.fields must be an array.`),(t.sdkSpec!==void 0||t.sdkBuilder!==void 0)&&n.push(`${i}.fields must be an array for executable views.`),n.push(...ce(t,`${i}`)),n;t.fields.forEach((u,p)=>{n.push(...h(u,`${i}.fields.${p}`))}),N(t.queryKind)||n.push(`${i}.queryKind must be a supported codegen query kind.`),t.sdkBuilder!==void 0&&!yi(t.sdkBuilder)&&n.push(`${i}.sdkBuilder must be a supported SDK builder.`),t.metricBindingKeys!==void 0&&(Array.isArray(t.metricBindingKeys)?t.metricBindingKeys.some(u=>typeof u!="string"||u.trim().length===0)&&n.push(`${i}.metricBindingKeys must be an array of strings.`):n.push(`${i}.metricBindingKeys must be an array of strings.`));const s=c(t.sdkSpec),r=(s==null?void 0:s.builder)==="semaphor.metric";r&&(!Array.isArray(t.metricBindingKeys)||t.metricBindingKeys.length===0)&&n.push(`${i}.metricBindingKeys is required for metric views.`);const l=It(t);r&&Array.isArray(t.metricBindingKeys)&&l&&JSON.stringify(t.metricBindingKeys)!==JSON.stringify(l)&&n.push(`${i}.metricBindingKeys must match the generated metric field binding keys in order.`);const d=c(t.computation);return(d==null?void 0:d.kind)==="server_query"&&N(t.queryKind)&&N(d.queryKind)&&d.queryKind!==t.queryKind&&n.push(`${i}.computation.queryKind must match queryKind.`),n.push(...jt({value:t.sdkSpec,path:`${i}.sdkSpec`,queryKind:typeof t.queryKind=="string"?t.queryKind:void 0,sdkBuilder:typeof t.sdkBuilder=="string"?t.sdkBuilder:void 0}),...ce(t,`${i}`)),n}function It(e){const i=c(e.sdkSpec);if((i==null?void 0:i.builder)!=="semaphor.metric")return;const t=c(i.spec);if(!t)return;const s=[t.primaryMeasure,...Array.isArray(t.measures)?t.measures:[]].map(At).filter(r=>!!r);return Array.from(new Map(s.map(r=>[r.identity,r.bindingKey])).values())}function At(e){const i=c(e);if(!i||typeof i.name!="string"||!i.name.trim())return;const t=xt(i);return t?{identity:JSON.stringify({source:t,name:i.name,aggregate:mi(i)}),bindingKey:Rt(i)}:void 0}function xt(e){if(typeof e.sourceKey=="string"&&e.sourceKey.trim())return{sourceKey:e.sourceKey};const i=c(e.source);if(i)return{kind:i.kind,domainId:i.domainId,datasetId:i.datasetId,datasetName:i.datasetName,name:i.name}}function Rt(e){return typeof e.sourceKey=="string"&&e.sourceKey.trim()?[e.sourceKey,mi(e),e.name].filter(Boolean).join(":"):ci(e)}function mi(e){return ne(e)}function ce(e,i){var p;const t=c((p=c(e.visualSpec))==null?void 0:p.tableBehavior),n=c(e.sdkSpec),s=c(n==null?void 0:n.spec),r=typeof(n==null?void 0:n.builder)=="string"?n.builder:void 0,l=r==="semaphor.records"?c(s==null?void 0:s.totals):void 0,d=[];if(!t)return l&&d.push(`${i}.sdkSpec.spec.totals is only allowed when tableBehavior.totals.mode is server.`),d;const u=c(t.totals);return u?(u.mode==="server"&&(r!=="semaphor.records"&&d.push(`${i}.visualSpec.tableBehavior.totals.mode server is only supported for semaphor.records views.`),!l||l.mode!=="server"?d.push(`${i}.sdkSpec.spec.totals.mode must be server when tableBehavior.totals.mode is server.`):d.push(...Mt({left:u.measures,right:l.measures,leftPath:`${i}.visualSpec.tableBehavior.totals.measures`,rightPath:`${i}.sdkSpec.spec.totals.measures`}))),u.mode!=="server"&&l&&d.push(`${i}.sdkSpec.spec.totals is only allowed when tableBehavior.totals.mode is server.`),r==="semaphor.sql"&&u.mode!=="none"&&d.push(`${i}.visualSpec.tableBehavior.totals.mode must be none for semaphor.sql views.`),r==="semaphor.sql"&&c(s==null?void 0:s.totals)&&d.push(`${i}.sdkSpec.spec.totals is not supported for semaphor.sql.`),d):(l&&d.push(`${i}.sdkSpec.spec.totals is only allowed when tableBehavior.totals.mode is server.`),d)}function Mt({left:e,right:i,leftPath:t,rightPath:n}){if(!Array.isArray(e)||!Array.isArray(i))return[`${n} must match ${t}.`];const s=[];return e.length!==i.length?(s.push(`${n} must match ${t}.`),s):(e.forEach((r,l)=>{Tt(c(r),c(i[l]))||s.push(`${n}.${l} must match ${t}.${l}.`)}),s)}function Tt(e,i){return!e||!i?!1:e.name===i.name&&(e.role||"measure")===(i.role||"measure")&&Ve(e)===Ve(i)&&Et(e,i)}function Ve(e){return typeof e.aggregate=="string"?e.aggregate.toUpperCase():"SUM"}function Et(e,i){const t=c(e.source),n=c(i.source);if(Ct(t,n))return!1;const s=Le(e),r=Le(i);if(s.size>0||r.size>0){for(const l of s)if(r.has(l))return!0;return!1}return!t||!n||t.kind!==n.kind?!1:t.kind==="semantic"?t.domainId===n.domainId&&t.datasetName===n.datasetName&&(t.datasetId===void 0||n.datasetId===void 0||t.datasetId===n.datasetId):t.kind==="physical"?t.connectionId===n.connectionId&&t.tableName===n.tableName:t.kind==="sql"?t.connectionId===n.connectionId:!1}function Ct(e,i){if(!e||!i||e.kind!=="semantic"||i.kind!=="semantic")return!1;const t=typeof e.datasetId=="string"?e.datasetId.trim():"",n=typeof i.datasetId=="string"?i.datasetId.trim():"";return!!(t&&n&&t!==n)}function Le(e){const i=typeof e.sourceKey=="string"?e.sourceKey.trim():"";return i?new Set([i]):Dt(c(e.source))}function Dt(e){const i=new Set;if(!e)return i;const t=typeof e.sourceKey=="string"?e.sourceKey.trim():"";if(t&&i.add(t),e.kind==="semantic"){const n=typeof e.domainId=="string"?e.domainId:"",s=typeof e.datasetName=="string"?e.datasetName:"",r=typeof e.datasetId=="string"?e.datasetId:"";n&&r&&i.add(`semantic:${n}:datasetId:${r}`),n&&s&&i.add(`semantic:${n}:datasetName:${s}`)}if(e.kind==="physical"){const n=typeof e.connectionId=="string"?e.connectionId:"",s=typeof e.tableName=="string"?e.tableName:"",r=typeof e.databaseName=="string"?e.databaseName:"",l=typeof e.schemaName=="string"?e.schemaName:"";n&&s&&(i.add(["physical",n,r,l,s].join(":")),i.add(`physical:${n}:${s}`))}if(e.kind==="sql"){const n=typeof e.connectionId=="string"?e.connectionId:"",s=typeof e.dialect=="string"?e.dialect:"",r=typeof e.label=="string"?e.label:"";n&&(i.add(["sql",n,s,r].join(":")),i.add(`sql:${n}`))}return i}function Ft(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];if(t.fieldRef&&n.push(...h(t.fieldRef,`${i}.fieldRef`)),(typeof t.inputId!="string"||!t.inputId.trim())&&n.push(`${i}.inputId is required.`),n.push(...fi(t.optionQuery,`${i}.optionQuery`)),z(t.appliesToViewIds)||n.push(`${i}.appliesToViewIds must be an array of strings.`),z(t.notAppliedToViewIds)||n.push(`${i}.notAppliedToViewIds must be an array of strings.`),!Array.isArray(t.bindings))n.push(`${i}.bindings must be an array.`);else{const s=z(t.appliesToViewIds)?new Set(t.appliesToViewIds):void 0,r=z(t.notAppliedToViewIds)?new Set(t.notAppliedToViewIds):void 0;t.bindings.forEach((l,d)=>{const u=c(l);if(!u){n.push(`${i}.bindings.${d} must be an object.`);return}typeof u.viewId!="string"||!u.viewId?n.push(`${i}.bindings.${d}.viewId is required.`):(s&&!s.has(u.viewId)&&n.push(`${i}.bindings.${d}.viewId must be included in appliesToViewIds.`),r!=null&&r.has(u.viewId)&&n.push(`${i}.bindings.${d}.viewId must not be listed in notAppliedToViewIds.`)),n.push(...h(u.fieldRef,`${i}.bindings.${d}.fieldRef`))})}return n}function fi(e,i){if(e===void 0)return[];const t=c(e);if(!t)return[`${i} must be an object.`];const n=[...$(t.valueFieldRef,`${i}.valueFieldRef`),...$(t.labelFieldRef,`${i}.labelFieldRef`),...$(t.filterFieldRef,`${i}.filterFieldRef`)];if(t.builder!=="semaphor.inputOptions"&&n.push(`${i}.builder must be semaphor.inputOptions.`),typeof t.sourceKey!="string"&&t.source===void 0&&n.push(`${i} must include source or sourceKey.`),t.source!==void 0){const s=c(t.source);!s||s.kind!=="semantic"&&s.kind!=="physical"?n.push(`${i}.source.kind must be semantic or physical.`):n.push(...P(t.source,`${i}.source`))}return c(t.valueFieldRef)||n.push(`${i}.valueFieldRef is required.`),c(t.labelFieldRef)||n.push(`${i}.labelFieldRef is required.`),t.limit!==void 0&&(typeof t.limit!="number"||!Number.isInteger(t.limit)||t.limit<=0)&&n.push(`${i}.limit must be a positive integer.`),n}function jt(e){var s;const i=c(e.value);if(!i)return[`${e.path} is required for executable views.`];const t=[];if(!yi(i.builder))return t.push(`${e.path}.builder must be a supported SDK builder.`),t;e.sdkBuilder&&i.builder!==e.sdkBuilder&&t.push(`${e.path}.builder must match sdkBuilder.`),e.queryKind&&N(e.queryKind)&&i.builder!==Gt(e.queryKind)&&t.push(`${e.path}.builder must match queryKind.`);const n=c(i.spec);if(!n)return t.push(`${e.path}.spec must be an object.`),t;switch(i.builder){case"semaphor.metric":t.push(...j(n,pi,`${e.path}.spec`),...V(n,e.path),...pe(n.measures,`${e.path}.spec.measures`),...$(n.primaryMeasure,`${e.path}.spec.primaryMeasure`),...$(n.dateField,`${e.path}.spec.dateField`),...me(n.dimensions,`${e.path}.spec.dimensions`),...fe(n.orderBy,`${e.path}.spec.orderBy`),...L(n.filters,`${e.path}.spec.filters`));break;case"semaphor.analysis":t.push(...j(n,gt,`${e.path}.spec`),...V(n,e.path),...pe(n.measures,`${e.path}.spec.measures`),...$(n.primaryMeasure,`${e.path}.spec.primaryMeasure`),...$(n.dateField,`${e.path}.spec.dateField`),...me(n.dimensions,`${e.path}.spec.dimensions`),...fe(n.orderBy,`${e.path}.spec.orderBy`),...L(n.filters,`${e.path}.spec.filters`),...qt(n,`${e.path}.spec`));break;case"semaphor.records":t.push(...j(n,ht,`${e.path}.spec`),...V(n,e.path),...pe(n.fields,`${e.path}.spec.fields`),...$(n.dateField,`${e.path}.spec.dateField`),...fe(n.orderBy,`${e.path}.spec.orderBy`),...L(n.filters,`${e.path}.spec.filters`),...Ot(n.totals,`${e.path}.spec.totals`));break;case"semaphor.matrix":t.push(...j(n,yt,`${e.path}.spec`),...Pt(n,e.path),...Bt(n.rows,`${e.path}.spec.rows`),...Kt(n.columns,`${e.path}.spec.columns`),...Vt(n.values,`${e.path}.spec.values`),...Lt(n.sort,`${e.path}.spec.sort`),...L(n.filters,`${e.path}.spec.filters`),...Nt(n.displayLimits,`${e.path}.spec.displayLimits`));break;case"semaphor.sql":t.push(...j(n,bt,`${e.path}.spec`),...V(n,e.path)),((s=c(n.source))==null?void 0:s.kind)!=="sql"&&t.push(`${e.path}.spec.source.kind must be sql.`),(typeof n.sql!="string"||!n.sql.trim())&&t.push(`${e.path}.spec.sql is required.`),t.push(...me(n.fields,`${e.path}.spec.fields`));break}return t}function Nt(e,i){if(e===void 0)return[];const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];n.push(...He(t.rows,`${i}.rows`),...He(t.columns,`${i}.columns`));for(const s of Object.keys(t))s==="rows"||s==="columns"||n.push(`${i}.${s} is not supported.`);return n}function He(e,i){if(e===void 0)return[];const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];(typeof t.limit!="number"||!Number.isInteger(t.limit)||t.limit<1)&&n.push(`${i}.limit must be a positive integer.`);for(const s of Object.keys(t))s!=="limit"&&n.push(`${i}.${s} is not supported; matrix display limits are count-only in v1.`);return n}function qt(e,i){const t=[];if(e.driverMode!==void 0&&!ft.has(e.driverMode)&&t.push(`${i}.driverMode must be a supported analysis driver mode.`),e.includePopulation!==void 0&&typeof e.includePopulation!="boolean"&&t.push(`${i}.includePopulation must be a boolean.`),e.calendarContext!==void 0){const n=c(e.calendarContext);if(!n)t.push(`${i}.calendarContext must be an object.`);else{n.tz!==void 0&&typeof n.tz!="string"&&t.push(`${i}.calendarContext.tz must be a string.`),n.weekStart!==void 0&&(typeof n.weekStart!="number"||!Number.isInteger(n.weekStart)||n.weekStart<0||n.weekStart>6)&&t.push(`${i}.calendarContext.weekStart must be an integer between 0 and 6.`);const s=n.anchor;if(s!==void 0&&s!=="now"){const r=c(s);(!r||typeof r.iso!="string"||!r.iso.trim())&&t.push(`${i}.calendarContext.anchor must be now or { iso }.`)}}}return t}function Ot(e,i){if(e===void 0)return[];const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return t.mode!=="server"&&n.push(`${i}.mode must be server.`),!Array.isArray(t.measures)||t.measures.length===0?n.push(`${i}.measures must include at least one measure.`):t.measures.forEach((s,r)=>{var l;n.push(...bi(s,`${i}.measures.${r}`)),((l=c(s))==null?void 0:l.role)!=="measure"&&n.push(`${i}.measures.${r}.role must be measure.`)}),n}function j(e,i,t){const n=[];return Object.keys(e).forEach(s=>{i.has(s)||n.push(`${t}.${s} is not supported for this SDK builder.`)}),n}function V(e,i){return c(e.source)?P(e.source,`${i}.spec.source`):[`${i}.spec.source must be an object.`]}function Pt(e,i){const t=c(e.source);if(!t)return[`${i}.spec.source must be an object.`];const n=P(e.source,`${i}.spec.source`);return t.kind!=="semantic"&&t.kind!=="physical"&&n.push(`${i}.spec.source.kind must be semantic or physical.`),n}function pe(e,i){const t=ke(e,i);return Array.isArray(e)&&e.forEach((n,s)=>{t.push(...h(n,`${i}.${s}`))}),t}function me(e,i){if(e===void 0)return[];if(!Array.isArray(e))return[`${i} must be an array.`];const t=[];return e.forEach((n,s)=>{t.push(...h(n,`${i}.${s}`))}),t}function fe(e,i){if(e===void 0)return[];const t=c(e);return t?[...h(t.field,`${i}.field`),...gi(t.direction,`${i}.direction`)]:[`${i} must be an object.`]}function Bt(e,i){const t=ke(e,i);return Array.isArray(e)&&e.forEach((n,s)=>{const r=c(n);if(!r){t.push(`${i}.${s} must be an object.`);return}t.push(...h(r.field,`${i}.${s}.field`))}),t}function Kt(e,i){if(e===void 0)return[];const t=[];return Array.isArray(e)?(e.forEach((n,s)=>{const r=c(n);if(!r){t.push(`${i}.${s} must be an object.`);return}t.push(...h(r.field,`${i}.${s}.field`))}),t):[`${i} must be an array.`]}function Vt(e,i){const t=ke(e,i);return Array.isArray(e)&&e.forEach((n,s)=>{const r=c(n);if(!r){t.push(`${i}.${s} must be an object.`);return}t.push(...h(r.field,`${i}.${s}.field`))}),t}function Lt(e,i){if(e===void 0)return[];if(!Array.isArray(e))return[`${i} must be an array.`];const t=[];return e.forEach((n,s)=>{const r=c(n);if(!r){t.push(`${i}.${s} must be an object.`);return}r.axis!=="row"&&r.axis!=="column"&&t.push(`${i}.${s}.axis must be row or column.`),t.push(...gi(r.direction,`${i}.${s}.direction`),...Ht(r.by,`${i}.${s}.by`))}),t}function Ht(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];switch(t.kind){case"member":return[];case"field":return h(t.field,`${i}.field`);case"value":return typeof t.valueId!="string"||!t.valueId.trim()?[`${i}.valueId is required.`]:[];default:return[`${i}.kind must be member, field, or value.`]}}function gi(e,i){return e==="asc"||e==="desc"?[]:[`${i} must be asc or desc.`]}function L(e,i){if(e===void 0)return[];if(!Array.isArray(e))return[`${i} must be an array.`];const t=[];return e.forEach((n,s)=>{const r=c(n);if(!r){t.push(`${i}.${s} must be an object.`);return}t.push(...h(r.field,`${i}.${s}.field`))}),t}function ke(e,i){return!Array.isArray(e)||e.length===0?[`${i} must be a non-empty array.`]:[]}function Gt(e){switch(e){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 Ut(e){const i=c(e.computation),t=c(e.visualSpec);return(i==null?void 0:i.kind)==="presentation_only"||(i==null?void 0:i.kind)==="derived"||(i==null?void 0:i.kind)==="unsupported"||e.visual==="text_block"||(t==null?void 0:t.visualType)==="text_block"}function Yt(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return _t.has(t.visualType)||n.push(`${i}.visualType must be a supported visual type.`),t.limit!==void 0&&(typeof t.limit!="number"||!Number.isInteger(t.limit)||t.limit<=0)&&n.push(`${i}.limit must be a positive integer.`),t.tableBehavior!==void 0&&n.push(...Qt(t.tableBehavior,`${i}.tableBehavior`)),n}function Qt(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return t.tableMode!=="bounded"&&t.tableMode!=="server_paginated"&&t.tableMode!=="server_windowed"&&n.push(`${i}.tableMode must be a supported table mode.`),n.push(...Zt(t.height,`${i}.height`),...Xt(t.pagination,`${i}.pagination`),...Wt(t.sorting,`${i}.sorting`),...Jt(t.totals,`${i}.totals`)),typeof t.serverSideRequired!="boolean"&&n.push(`${i}.serverSideRequired must be a boolean.`),n}function Zt(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return(typeof t.maxPx!="number"||!Number.isInteger(t.maxPx)||t.maxPx<=0)&&n.push(`${i}.maxPx must be a positive integer.`),t.scroll!=="vertical"&&t.scroll!=="both"&&n.push(`${i}.scroll must be vertical or both.`),typeof t.stickyHeader!="boolean"&&n.push(`${i}.stickyHeader must be a boolean.`),n}function Xt(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return t.mode!=="none"&&t.mode!=="server"&&t.mode!=="client_for_bounded_rows"&&n.push(`${i}.mode must be a supported pagination mode.`),t.pageSize!==void 0&&(typeof t.pageSize!="number"||!Number.isInteger(t.pageSize)||t.pageSize<=0)&&n.push(`${i}.pageSize must be a positive integer.`),t.readsFrom!==void 0&&t.readsFrom!=="result.pagination"&&n.push(`${i}.readsFrom must be result.pagination.`),n}function Wt(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return t.mode!=="server"&&t.mode!=="client_for_bounded_rows"&&n.push(`${i}.mode must be a supported sorting mode.`),t.defaultField!==void 0&&(typeof t.defaultField!="string"||!t.defaultField.trim())&&n.push(`${i}.defaultField must be a non-empty string.`),t.defaultDirection!==void 0&&t.defaultDirection!=="asc"&&t.defaultDirection!=="desc"&&n.push(`${i}.defaultDirection must be asc or desc.`),t.resetPageOnChange!==void 0&&typeof t.resetPageOnChange!="boolean"&&n.push(`${i}.resetPageOnChange must be a boolean.`),n}function Jt(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return t.mode!=="none"&&t.mode!=="server"&&t.mode!=="local"?(n.push(`${i}.mode must be none, server, or local.`),n):t.mode==="none"?(t.measures!==void 0&&n.push(`${i}.measures is not allowed when mode is none.`),t.label!==void 0&&n.push(`${i}.label is not allowed when mode is none.`),n):t.mode==="server"?(!Array.isArray(t.measures)||t.measures.length===0?n.push(`${i}.measures must include at least one measure when mode is server.`):t.measures.forEach((s,r)=>{var l;n.push(...bi(s,`${i}.measures.${r}`)),((l=c(s))==null?void 0:l.role)!=="measure"&&n.push(`${i}.measures.${r}.role must be measure.`)}),t.label!==void 0&&n.push(`${i}.label is not allowed when mode is server.`),n):(t.mode==="local"&&(t.label!=="Displayed rows"&&t.label!=="Current page"&&n.push(`${i}.label must be Displayed rows or Current page when mode is local.`),t.measures!==void 0&&n.push(`${i}.measures is not allowed when mode is local.`)),n)}function ea(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];switch(t.kind){case"server_query":N(t.queryKind)||n.push(`${i}.queryKind must be a supported codegen query kind.`),t.queryOwnership!==void 0&&t.queryOwnership!=="view_owned"&&t.queryOwnership!=="shared_query"&&n.push(`${i}.queryOwnership must be view_owned or shared_query.`),t.sourceKeys!==void 0&&!z(t.sourceKeys)&&n.push(`${i}.sourceKeys must be an array of strings.`),t.fieldNames!==void 0&&!z(t.fieldNames)&&n.push(`${i}.fieldNames must be an array of strings.`);break;case"derived":(typeof t.upstreamViewId!="string"||!t.upstreamViewId.trim())&&n.push(`${i}.upstreamViewId is required.`),(typeof t.derivation!="string"||!t.derivation.trim())&&n.push(`${i}.derivation is required.`);break;case"presentation_only":break;case"unsupported":(typeof t.reason!="string"||!t.reason.trim())&&n.push(`${i}.reason is required.`),(typeof t.suggestedModelingFix!="string"||!t.suggestedModelingFix.trim())&&n.push(`${i}.suggestedModelingFix is required.`);break;default:n.push(`${i}.kind must be a supported computation kind.`)}return n}function ia(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];for(const r of["title","requestedQuestion","suggestedModelingFix"])(typeof t[r]!="string"||!t[r].trim())&&n.push(`${i}.${r} is required.`);return vt.has(t.reason)||n.push(`${i}.reason must be a supported unsupported insight reason.`),(t.relationshipCandidate!==void 0||t.nextRepairAction!==void 0)&&t.reason!=="missing_relationship"&&n.push(`${i} relationship repair metadata is only valid for missing_relationship unsupported insights.`),t.diagnostic!==void 0&&n.push(...ta(t.diagnostic,`${i}.diagnostic`,t.reason)),t.relationshipCandidate!==void 0&&n.push(...na(t.relationshipCandidate,`${i}.relationshipCandidate`)),t.nextRepairAction!==void 0&&n.push(...aa(t.nextRepairAction,`${i}.nextRepairAction`)),n}function ta(e,i,t){const n=c(e);if(!n)return[`${i} must be an object.`];const s=[],r=new Set(["kind","inputId","inputLabel","optionSource","optionField","missingEvidence"]);Object.keys(n).forEach(d=>{r.has(d)||s.push(`${i}.${d} is not supported; raw identifier diagnostics support only kind, inputId, inputLabel, optionSource, optionField, and missingEvidence.`)}),t!=="raw_identifier_filter_options"&&s.push(`${i} is only valid for raw_identifier_filter_options unsupported insights.`),n.kind!=="raw_identifier_filter_options"&&s.push(`${i}.kind must be raw_identifier_filter_options.`);for(const d of["inputId","inputLabel"])(typeof n[d]!="string"||!n[d].trim())&&s.push(`${i}.${d} must be a non-empty string.`);s.push(...ye(n.optionSource,`${i}.optionSource`)),s.push(...hi(n.optionField,`${i}.optionField`));const l=new Set(["display_field","relationship_display_path"]);return!Array.isArray(n.missingEvidence)||n.missingEvidence.length===0?s.push(`${i}.missingEvidence must be a non-empty evidence array.`):n.missingEvidence.forEach((d,u)=>{l.has(d)||s.push(`${i}.missingEvidence.${u} must be display_field or relationship_display_path.`)}),s}function aa(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[],s=new Set(["tool","reason"]);return Object.keys(t).forEach(r=>{s.has(r)||n.push(`${i}.${r} is not supported; repair actions support only tool and reason.`)}),t.tool!=="semaphor_propose_semantic_model_change"&&n.push(`${i}.tool must be semaphor_propose_semantic_model_change.`),t.reason!=="missing_relationship"&&n.push(`${i}.reason must be missing_relationship.`),n}function na(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[],s=new Set(["source","sourceFields","target","targetFields"]);Object.keys(t).forEach(r=>{s.has(r)||n.push(`${i}.${r} is not supported; relationship candidates support only source, sourceFields, target, and targetFields.`)}),n.push(...ye(t.source,`${i}.source`)),n.push(...ye(t.target,`${i}.target`));for(const r of["sourceFields","targetFields"]){const l=t[r];if(!Array.isArray(l)||l.length===0){n.push(`${i}.${r} must be a non-empty endpoint field array.`);continue}l.forEach((d,u)=>{n.push(...hi(d,`${i}.${r}.${u}`))})}return n}function hi(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[],s=new Set(["name","label","role","dataType"]);return Object.keys(t).forEach(r=>{s.has(r)||n.push(`${i}.${r} is not supported; relationship candidate fields are scoped by their endpoint and support only name, label, role, and dataType.`)}),(typeof t.name!="string"||!t.name.trim())&&n.push(`${i}.name must be a non-empty string.`),t.role!==void 0&&(typeof t.role!="string"||!["dimension","measure","date","id","unknown"].includes(t.role))&&n.push(`${i}.role must be dimension, measure, date, id, or unknown.`),t.dataType!==void 0&&(typeof t.dataType!="string"||!["string","number","boolean","date","datetime","unknown"].includes(t.dataType))&&n.push(`${i}.dataType must be string, number, boolean, date, datetime, or unknown.`),n}function ye(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[],s=new Set(["kind","domainId","datasetName","datasetId","label","sourceKey"]);return Object.keys(t).forEach(r=>{s.has(r)||n.push(`${i}.${r} is not supported; relationship candidate sources support only semantic identity fields.`)}),t.kind!=="semantic"&&n.push(`${i} must use semantic source identity.`),(typeof t.domainId!="string"||!t.domainId.trim()||typeof t.datasetName!="string"||!t.datasetName.trim())&&n.push(`${i} must include semantic domainId and datasetName.`),n}function N(e){return ct.has(e)}function yi(e){return pt.has(e)}function $(e,i){return e===void 0?[]:h(e,i)}function h(e,i){const t=c(e);if(!t)return[`${i} must be an object.`];const n=[];return(typeof t.name!="string"||!t.name.trim())&&n.push(`${i}.name is required.`),!t.source&&typeof t.sourceKey!="string"&&n.push(`${i} must include source or sourceKey.`),t.aggregate!==void 0&&!mt.has(t.aggregate)&&n.push(`${i}.aggregate must be a supported aggregate function.`),n}function bi(e,i){const t=c(e),n=h(e,i);if(!t||typeof t.sourceKey=="string"&&t.sourceKey.trim())return n;if(t.source!==void 0){const r=P(t.source,`${i}.source`);return r.length===0||n.push(...r),n}return n.includes(`${i} must include source or sourceKey.`)||n.push(`${i} must include source or sourceKey.`),n}function c(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function z(e){return Array.isArray(e)&&e.every(i=>typeof i=="string")}const b=a.z.record(a.z.string(),a.z.unknown()),C=a.z.array(b),_=a.z.enum(["SUM","COUNT","AVG","MIN","MAX","MEDIAN","DISTINCT"]),se=a.z.enum(["postgres","mysql","mssql","snowflake","clickhouse","bigquery","redshift","duckdb","sqlite","unknown"]),_i=a.z.enum(E),vi=a.z.enum(te),oe=a.z.enum(["dimension","measure","date","id","unknown"]),re=a.z.enum(["string","number","boolean","date","datetime","unknown"]),U=a.z.union([a.z.number(),a.z.string(),a.z.null()]),ge=a.z.enum(["millisecond","second","minute","hour","day"]),sa=a.z.enum(oi),oa=a.z.discriminatedUnion("mode",[a.z.object({mode:a.z.literal("auto")}).strict(),a.z.object({mode:a.z.literal("preset"),preset:sa}).strict(),a.z.object({mode:a.z.literal("pattern"),pattern:a.z.string().min(1)}).strict()]),Z=a.z.object({type:a.z.literal("temporal_bucket"),presentation:oa}).strict(),ra=a.z.object({tz:a.z.string().min(1).refine(li,{message:"tz must be a valid IANA timezone"}),weekStart:a.z.number().int().min(0).max(6),fiscalCalendar:a.z.object({kind:a.z.literal("month_aligned"),yearStartMonth:a.z.number().int().min(1).max(12)}).strict().optional()}).strict(),X=a.z.object({kind:a.z.literal("temporal_bucket"),granularity:_i,calendar:ra}).strict(),zi=a.z.object({kind:a.z.literal("raw_temporal"),valueKind:a.z.enum(["date","wall_datetime","instant"])}).strict(),Si=a.z.union([a.z.object({type:a.z.enum(["number","currency","percent","percentage","scientific"]),locale:a.z.string().optional(),minimumFractionDigits:a.z.number().optional(),maximumFractionDigits:a.z.number().optional(),useGrouping:a.z.boolean().optional(),prefix:a.z.string().optional(),suffix:a.z.string().optional(),negativeStyle:a.z.enum(["minus","parentheses"]).optional(),compact:a.z.boolean().optional(),scale:a.z.number().optional(),currency:a.z.string().optional(),percentValueMode:a.z.enum(["fraction","whole"]).optional()}).passthrough().superRefine((e,i)=>{"locale"in e&&i.addIssue({code:a.z.ZodIssueCode.custom,path:["locale"],message:"Numeric semantic formats inherit locale from viewer preferences."})}),a.z.object({type:a.z.enum(["date","datetime"]),locale:a.z.string().optional(),pattern:a.z.string().optional(),relative:a.z.boolean().optional(),timezone:a.z.string().optional(),sourceTimezone:a.z.string().optional(),prefix:a.z.string().optional(),suffix:a.z.string().optional()}).passthrough(),a.z.object({type:a.z.literal("duration"),inputUnit:ge.optional(),outputStyle:a.z.enum(["compact","digital","long"]).optional(),largestUnit:ge.optional(),smallestUnit:ge.optional(),maxUnits:a.z.number().optional(),prefix:a.z.string().optional(),suffix:a.z.string().optional(),negativeStyle:a.z.enum(["minus","parentheses"]).optional()}).passthrough(),a.z.object({type:a.z.literal("string"),prefix:a.z.string().optional(),suffix:a.z.string().optional()}).passthrough()]),la=a.z.union([a.z.object({kind:a.z.literal("defaultAggregate")}).passthrough(),a.z.object({kind:a.z.literal("blank")}).passthrough(),a.z.object({kind:a.z.literal("labelOnly"),label:a.z.string().optional()}).passthrough(),a.z.object({kind:a.z.literal("customAggregate"),aggregate:_}).passthrough(),a.z.object({kind:a.z.literal("percentOfParent")}).passthrough(),a.z.object({kind:a.z.literal("percentOfGrandTotal")}).passthrough(),a.z.object({kind:a.z.literal("customExpression"),expressionId:a.z.string()}).passthrough()]);function B(e,i){return a.z.object(e).passthrough().superRefine((t,n)=>{for(const s of i)Object.prototype.hasOwnProperty.call(t,s)||n.addIssue({code:"custom",path:[s],message:`Required field "${s}" is missing.`})})}const Ie=a.z.object({kind:a.z.literal("semantic"),domainId:a.z.string(),datasetName:a.z.string(),datasetId:a.z.string().optional(),label:a.z.string().optional(),connectionId:a.z.string().optional()}).passthrough(),$i=a.z.object({kind:a.z.literal("physical"),connectionId:a.z.string(),connectionType:a.z.string().optional(),tableName:a.z.string(),databaseName:a.z.string().optional(),schemaName:a.z.string().optional(),label:a.z.string().optional(),dialect:se.optional()}).passthrough(),wi=a.z.object({kind:a.z.literal("sql"),connectionId:a.z.string(),dialect:se.optional(),label:a.z.string().optional()}).passthrough(),R=a.z.union([Ie,$i,wi]),I=a.z.object({name:a.z.string(),label:a.z.string().optional(),role:oe.optional(),dataType:re.optional(),source:R.optional(),aggregate:_.optional()}).passthrough(),da=a.z.object({kind:a.z.literal("field"),field:I,aggregate:_.optional()}).passthrough(),Ae=a.z.object({kind:a.z.literal("derived_field"),name:a.z.string(),label:a.z.string(),description:a.z.string().optional(),resultRole:oe,dataType:re,computeStage:a.z.enum(["row","aggregate"]),expression:a.z.string(),expressionLanguage:a.z.literal("semaphor_sql_template").optional(),inputs:a.z.record(da),defaultAggregate:_.optional(),aggregationBehavior:a.z.enum(["additive","non_additive","ratio_of_sums","weighted","pre_aggregated","snapshot"]).optional(),aggregationStrategy:a.z.enum(["default","symmetric_aggregate","aggregate_then_join","weighted"]).optional(),format:Si.optional(),tags:a.z.array(a.z.string()).optional()}).passthrough(),le=I.and(a.z.object({derivedField:Ae.optional()}).passthrough()),ua=Ie,ca=a.z.object({kind:a.z.literal("physical"),connectionId:a.z.string().optional(),connectionType:a.z.string().optional(),tableName:a.z.string(),databaseName:a.z.string().optional(),schemaName:a.z.string().optional(),label:a.z.string().optional(),dialect:se.optional()}).passthrough(),pa=a.z.object({kind:a.z.literal("sql"),connectionId:a.z.string().optional(),dialect:se.optional(),label:a.z.string().optional()}).passthrough(),ma=a.z.union([ua,ca,pa]),fa=a.z.object({key:a.z.string().optional(),name:a.z.string(),label:a.z.string().optional(),role:oe.optional(),dataType:re.optional(),source:ma.optional(),aggregate:_.optional(),derivedField:a.z.never().optional()}).passthrough(),M=a.z.object({key:a.z.string(),name:a.z.string(),label:a.z.string(),role:oe.optional(),dataType:re.optional(),aggregate:_.optional(),source:R.optional(),derivedField:Ae.optional(),temporalBucket:X.optional(),rawTemporal:zi.optional(),pivotIdentity:a.z.object({metricId:a.z.string().min(1),metricAlias:a.z.string().min(1),members:a.z.array(a.z.object({fieldId:a.z.string().min(1),value:a.z.string().nullable(),temporalBucket:X.optional()}).strict())}).strict().optional()}).passthrough().superRefine((e,i)=>{if(e.temporalBucket&&e.rawTemporal&&i.addIssue({code:a.z.ZodIssueCode.custom,path:["rawTemporal"],message:"A result column cannot carry both temporalBucket and rawTemporal metadata."}),e.temporalBucket){const t=ri(e.temporalBucket.granularity);e.dataType!==t&&i.addIssue({code:a.z.ZodIssueCode.custom,path:["dataType"],message:`${e.temporalBucket.granularity} temporal buckets require dataType ${t}.`})}if(e.rawTemporal){const t=e.rawTemporal.valueKind==="date"?"date":"datetime";e.dataType!==t&&i.addIssue({code:a.z.ZodIssueCode.custom,path:["dataType"],message:`${e.rawTemporal.valueKind} raw temporal values require dataType ${t}.`})}}),ga=a.z.object({records:C,columns:a.z.array(M).optional()}).passthrough(),ha=a.z.object({records:C,columns:a.z.array(M)}).passthrough(),ki=a.z.object({code:a.z.string(),message:a.z.string().optional(),invalidField:a.z.string().optional(),fieldRole:a.z.enum(["measure","date","dimension","input","source","sql"]).optional(),validMeasureCandidates:a.z.array(a.z.string()).optional(),validDateCandidates:a.z.array(a.z.string()).optional(),validDimensionCandidates:a.z.array(a.z.string()).optional(),recommendedNextStep:a.z.string()}).passthrough(),W=a.z.object({code:a.z.string(),message:a.z.string(),path:a.z.string().optional(),fieldRole:a.z.enum(["measure","date","dimension","input","source","sql"]).optional(),repairHint:ki.optional()}).passthrough(),xe=a.z.object({ok:a.z.boolean(),errors:a.z.array(W),warnings:a.z.array(W),repairHints:a.z.array(ki)}).passthrough(),ya=a.z.object({page:a.z.number(),pageSize:a.z.number(),pageCount:a.z.number(),totalCount:a.z.number(),hasNextPage:a.z.boolean(),hasPrevPage:a.z.boolean()}).passthrough(),K={intentId:a.z.string().optional(),queryPath:a.z.enum(["query_spec","sql","sql_python"]),warnings:a.z.array(a.z.string()).optional(),rowCount:a.z.number().optional(),rowLimitExceeded:a.z.boolean().optional(),limit:a.z.number().optional(),pagination:ya.optional()},Ii=a.z.object({...K,kind:a.z.literal("metric"),primaryValue:U,measures:a.z.record(U).optional(),missingMeasures:a.z.array(a.z.string()).optional(),comparison:a.z.object({kind:a.z.enum(["previous_period","previous_year","target"]),value:U.optional(),delta:a.z.union([a.z.number(),a.z.null()]).optional(),deltaPercent:a.z.union([a.z.number(),a.z.null()]).optional()}).passthrough().optional(),records:C.optional()}).passthrough(),Ai=a.z.object({...K,kind:a.z.literal("records"),columns:a.z.array(M),records:C,totals:a.z.object({mode:a.z.literal("server"),scope:a.z.literal("filtered_result"),row:a.z.record(a.z.string(),a.z.unknown()),columns:a.z.array(M).optional()}).passthrough().optional()}).passthrough(),xi=a.z.object({...K,kind:a.z.literal("inputOptions"),options:a.z.array(B({label:a.z.string(),value:a.z.unknown(),count:a.z.number().optional(),disambiguation:a.z.array(a.z.string()).optional()},["value"]))}).passthrough(),Ri=a.z.object({...K,kind:a.z.literal("sql"),columns:a.z.array(M),records:C,sqlShape:a.z.object({statementType:a.z.string().optional(),explicitLimit:a.z.number().optional(),hasPythonCode:a.z.boolean().optional()}).passthrough().optional()}).passthrough(),ba=a.z.object({enabled:a.z.boolean().optional(),position:a.z.enum(["before","after"]).optional(),label:a.z.string().optional()}).passthrough(),Ge=a.z.object({id:a.z.enum(["rows","columns"]),levels:a.z.array(a.z.object({instanceId:a.z.string(),fieldKey:a.z.string(),label:a.z.string(),field:I,grain:vi.optional(),temporalBucket:X.optional(),subtotal:ba.optional()}).passthrough()),nodeIds:a.z.array(a.z.string())}).passthrough(),T=B({instanceId:a.z.string(),fieldKey:a.z.string(),value:a.z.unknown(),label:a.z.string().optional()},["value"]),_a=a.z.union([a.z.object({kind:a.z.literal("member")}).passthrough(),a.z.object({kind:a.z.literal("field"),field:I,aggregate:_.optional()}).passthrough(),a.z.object({kind:a.z.literal("value"),valueId:a.z.string(),rowPath:a.z.array(T).optional(),columnPath:a.z.array(T).optional()}).passthrough()]),va=a.z.enum(["present","presentNull","missing","densified"]),za=a.z.enum(["value","rowSubtotal","columnSubtotal","subtotalIntersection","rowGrandTotal","columnGrandTotal","matrixGrandTotal"]),Sa=a.z.object({instanceId:a.z.string(),fieldKey:a.z.string(),field:I,role:a.z.enum(["row","column","measure","sort","filter"]),label:a.z.string().optional()}).passthrough(),$a=a.z.union([a.z.object({kind:a.z.literal("additive"),aggregate:_.optional()}).passthrough(),a.z.object({kind:a.z.literal("semiAdditive"),aggregate:_.optional(),grain:vi.optional()}).passthrough(),a.z.object({kind:a.z.literal("nonAdditive"),aggregate:_.optional()}).passthrough(),a.z.object({kind:a.z.literal("ratio"),numeratorMeasureInstanceId:a.z.string().optional(),denominatorMeasureInstanceId:a.z.string().optional()}).passthrough(),a.z.object({kind:a.z.literal("custom"),expressionId:a.z.string().optional()}).passthrough()]),wa=a.z.object({instanceId:a.z.string(),fieldKey:a.z.string(),label:a.z.string(),field:I,aggregate:_.optional(),format:Si.optional(),totalBehavior:la.optional(),semantics:$a}).passthrough(),ka=a.z.object({id:a.z.string(),measureId:a.z.string(),aggregate:_.optional(),label:a.z.string().optional(),source:a.z.enum(["measureDefault","rowSubtotal","columnSubtotal","subtotalIntersection","rowGrandTotal","columnGrandTotal","matrixGrandTotal","custom"]),scope:a.z.object({rowLevelId:a.z.string().optional(),columnLevelId:a.z.string().optional(),rowNodeId:a.z.string().optional(),columnNodeId:a.z.string().optional()}).passthrough().optional()}).passthrough(),Ia=a.z.object({kind:a.z.string(),label:a.z.string().optional(),payload:a.z.record(a.z.string(),a.z.unknown()).optional()}).passthrough(),Aa=B({id:a.z.string(),axis:a.z.enum(["row","column"]),path:a.z.array(T),level:a.z.number(),label:a.z.string().optional(),value:a.z.unknown(),parentId:a.z.string().optional(),hasChildren:a.z.boolean(),isExpanded:a.z.boolean().optional(),isSubtotal:a.z.boolean().optional(),isGrandTotal:a.z.boolean().optional(),subtotalFunction:_.optional(),childCount:a.z.number().optional(),actions:a.z.array(Ia).optional()},["value"]),xa=a.z.object({rowHeaderLevels:a.z.array(a.z.object({id:a.z.string(),label:a.z.string(),fieldInstanceId:a.z.string()}).passthrough()),columnHeaderRows:a.z.array(a.z.object({id:a.z.string(),cells:a.z.array(a.z.object({id:a.z.string(),label:a.z.string().optional(),role:a.z.enum(["rowHeader","columnHeader","measureHeader","subtotal","grandTotal"]),colSpan:a.z.number(),rowSpan:a.z.number(),columnPath:a.z.array(T),measureInstanceId:a.z.string().optional()}).passthrough())}).passthrough()),columns:a.z.array(a.z.object({id:a.z.string(),label:a.z.string().optional(),columnNodeId:a.z.string().optional(),columnPath:a.z.array(T),measureInstanceId:a.z.string(),role:a.z.enum(["value","columnSubtotal","columnGrandTotal"])}).passthrough())}).passthrough(),Ra=B({rowId:a.z.string(),columnId:a.z.string().optional(),measureId:a.z.string(),value:a.z.unknown(),presence:va,role:za,calculationId:a.z.string().optional()},["value"]).superRefine((e,i)=>{Object.prototype.hasOwnProperty.call(e,"formattedValue")&&i.addIssue({code:"custom",path:["formattedValue"],message:"Matrix result cells carry typed values; formattedValue is not supported."})}),Ma=a.z.object({rows:a.z.boolean().optional(),columns:a.z.boolean().optional(),grandTotal:a.z.union([a.z.boolean(),a.z.object({rows:a.z.boolean().optional(),columns:a.z.boolean().optional()}).passthrough()]).optional()}).passthrough(),Ta=B({id:a.z.string(),axis:a.z.enum(["row","column"]),targetInstanceId:a.z.string().optional(),direction:a.z.enum(["asc","desc"]),nulls:a.z.enum(["warehouseDefault","first","last"]).optional(),scope:a.z.enum(["global","withinParent"]).optional(),by:_a},["by"]),Ea=a.z.object({rowOffset:a.z.number().optional(),rowLimit:a.z.number().optional(),columnOffset:a.z.number().optional(),columnLimit:a.z.number().optional(),hasMoreRows:a.z.boolean().optional(),hasMoreColumns:a.z.boolean().optional()}).passthrough(),Ca=a.z.object({axis:a.z.enum(["row","column"]),path:a.z.array(T),depth:a.z.number().optional()}).passthrough(),Da=a.z.object({rowLazyLoading:a.z.boolean().optional(),columnLazyLoading:a.z.boolean().optional(),expandableRowNodeIds:a.z.array(a.z.string()).optional(),expandableColumnNodeIds:a.z.array(a.z.string()).optional(),nextRequests:a.z.array(Ca).optional()}).passthrough(),Fa=a.z.object({domains:a.z.record(a.z.object({min:a.z.number().optional(),max:a.z.number().optional()}).passthrough()).optional(),rules:a.z.array(a.z.record(a.z.string(),a.z.unknown())).optional()}).passthrough(),Mi=a.z.object({...K,kind:a.z.literal("matrix"),schemaVersion:a.z.literal(2),shape:a.z.enum(["hierarchical","pivot"]),capabilities:a.z.array(a.z.string()),executionMetadata:a.z.record(a.z.string(),a.z.unknown()),fieldsById:a.z.record(a.z.string(),Sa),measuresById:a.z.record(a.z.string(),wa),calculationsById:a.z.record(a.z.string(),ka).optional(),axes:a.z.object({rows:Ge,columns:Ge}).passthrough(),nodesById:a.z.record(a.z.string(),Aa),layout:xa,cells:a.z.array(Ra),totals:Ma,sort:a.z.array(Ta),formattingContext:Fa,pageInfo:Ea.optional(),expansion:Da.optional()}).passthrough(),Ti=a.z.union([Ii,Ai,xi,Ri,Mi]),Ei=a.z.object({status:a.z.enum(["not_required","resolved","missing","ambiguous","fanout_risk","unknown"]),requiredSources:a.z.array(R).optional(),relationshipsUsed:a.z.array(a.z.string()).optional(),missingSources:a.z.array(a.z.string()).optional(),warnings:a.z.array(a.z.string()).optional(),message:a.z.string().optional(),recommendedNextStep:a.z.string().optional(),joinPlanSummary:a.z.object({baseSource:R.optional(),joinedSources:a.z.array(R).optional(),joinCount:a.z.number().optional()}).passthrough().optional(),fanoutRisk:a.z.object({status:a.z.enum(["none","warning","error","unknown"]),message:a.z.string().optional()}).passthrough().optional()}).passthrough(),Ue=a.z.enum(["ambiguous_fields","empty_result","missing_grounded_fields","missing_relationship","no_grounded_query","partial_result","presentation_incomplete","query_validation_failed","unsafe_join"]),Re=a.z.object({version:a.z.literal(1),status:a.z.enum(["answered","partial","blocked"]),summary:a.z.string(),answered:a.z.array(a.z.object({slotId:a.z.string().optional(),queryId:a.z.string().optional(),summary:a.z.string(),evidenceIds:a.z.array(a.z.string()).optional(),fieldsUsed:a.z.array(le).optional()}).passthrough()),blocked:a.z.array(a.z.object({slotId:a.z.string().optional(),queryId:a.z.string().optional(),reasonCode:Ue,message:a.z.string(),missingFields:a.z.array(a.z.string()).optional(),availableFields:a.z.array(a.z.string()).optional(),ambiguousFields:a.z.array(a.z.string()).optional(),missingRelationships:a.z.array(a.z.string()).optional(),evidenceIds:a.z.array(a.z.string()).optional(),neededFromUser:a.z.array(a.z.string()).optional(),recommendedNextStep:a.z.string().optional()}).passthrough()),semanticModelRecommendations:a.z.array(a.z.object({reasonCode:Ue,message:a.z.string(),recommendedNextStep:a.z.string().optional()}).passthrough()).optional()}).passthrough(),Me=a.z.object({scope:a.z.literal("filtered_query"),measures:a.z.record(U)}).passthrough(),Te=a.z.object({answeredObligations:a.z.array(a.z.string()),missingObligations:a.z.array(a.z.string()),warnings:a.z.array(W).optional()}).passthrough(),Ci=a.z.object({intentId:a.z.string().optional(),queryId:a.z.string().optional(),status:a.z.enum(["answered","partial","failed"]),resultShape:a.z.enum(["metric","records","inputOptions","sql","matrix","period_change","analysis"]).optional(),intent:a.z.unknown().optional(),compiledQuery:a.z.unknown().optional(),fieldsUsed:a.z.array(le).optional(),result:Ti.optional(),validation:xe,coverage:Te.optional(),missingFields:a.z.array(a.z.string()).optional(),warnings:a.z.array(a.z.string()).optional(),relationshipDiagnostics:Ei.optional(),diagnosticFeedback:Re.optional(),population:Me.optional(),metadata:a.z.record(a.z.string(),a.z.unknown()).optional()}).passthrough();function ja(e){switch(e){case"boolean":return a.z.boolean().optional();case"compactExecutionFieldArray":return a.z.array(fa).optional();case"coverage":return Te.optional();case"diagnosticFeedback":return Re.optional();case"executionFieldArray":return a.z.array(le).optional();case"executionResult":return Ci.optional();case"number":return a.z.number().finite().optional();case"population":return Me.optional();case"record":return b.optional();case"recordArray":return C.optional();case"responseDetail":return a.z.enum(["compact","standard","debug"]).optional();case"string":return a.z.string().optional();case"stringArray":return a.z.array(a.z.string()).optional();case"unknown":return a.z.unknown().optional();case"unknownArray":return a.z.array(a.z.unknown()).optional();case"validationResult":return xe.optional()}}const Di=Object.fromEntries(Object.entries(di).map(([e,i])=>[e,ja(i)])),Na=a.z.object(Di).strict(),Ee=a.z.object({sourceKey:a.z.string().optional(),kind:a.z.enum(["semantic","physical","sql"]).optional(),domainId:a.z.string().optional(),datasetName:a.z.string().optional(),datasetId:a.z.string().optional(),connectionId:a.z.string().optional(),tableName:a.z.string().optional(),label:a.z.string().optional()}).passthrough(),w=a.z.object({name:a.z.string(),label:a.z.string().optional(),role:a.z.enum(["dimension","measure","date","id","unknown"]).optional(),dataType:a.z.enum(["string","number","boolean","date","datetime","unknown"]).optional(),aggregate:_.optional(),sourceKey:a.z.string().optional(),source:Ee.optional()}).passthrough(),Fi=a.z.object({id:a.z.string().optional(),builder:a.z.literal("semaphor.inputOptions"),source:Ee.optional(),sourceKey:a.z.string().optional(),valueFieldRef:w,labelFieldRef:w,filterFieldRef:w.optional(),population:a.z.unknown().optional(),dependencies:a.z.unknown().optional(),limit:a.z.number().int().positive().optional(),spec:b.optional()}).passthrough(),ji=a.z.object({appliesToViewIds:a.z.array(a.z.string()).optional(),viewId:a.z.string().optional(),fieldRef:w,relationshipHint:a.z.unknown().optional(),relationshipsUsed:a.z.array(b).optional()}).passthrough(),qa=a.z.object({id:a.z.string(),label:a.z.string().optional(),type:a.z.string().optional(),serverSide:a.z.boolean().optional(),fieldRef:w.optional(),optionQuery:Fi.optional(),bindings:a.z.array(ji).optional(),appliesToViewIds:a.z.array(a.z.string()),relationshipHint:a.z.unknown().optional(),relationshipsUsed:a.z.array(b).optional()}).passthrough(),Oa=a.z.object({builder:a.z.enum(["semaphor.metric","semaphor.records","semaphor.matrix","semaphor.analysis","semaphor.sql"]),spec:b,fallbackReason:b.optional()}).passthrough(),Pa=a.z.object({id:a.z.string(),title:a.z.string().optional(),purpose:a.z.string().optional(),sourcePresentation:a.z.object({sourceKeys:a.z.array(a.z.string()).optional(),sourceLabels:a.z.array(a.z.string()).optional()}).passthrough().optional(),visual:a.z.string().optional(),visualSpec:b.optional(),queryKind:a.z.enum(["metric","records","matrix","analysis","sql_fallback"]).optional(),sdkBuilder:a.z.enum(["semaphor.metric","semaphor.records","semaphor.matrix","semaphor.analysis","semaphor.sql"]).optional(),sdkSpec:Oa.optional(),fields:a.z.array(w).optional(),computation:b.optional(),uxExpectations:a.z.array(a.z.string()).optional(),validation:b.optional()}).passthrough(),Ba=a.z.object({inputId:a.z.string(),label:a.z.string().optional(),type:a.z.string().optional(),serverSide:a.z.boolean().optional(),fieldRef:w.optional(),optionQuery:Fi.optional(),bindings:a.z.array(ji),appliesToViewIds:a.z.array(a.z.string()),notAppliedToViewIds:a.z.array(a.z.string())}).passthrough(),Ka=a.z.object({schemaVersion:a.z.literal(Q),title:a.z.string(),purpose:a.z.string().optional(),userGoal:a.z.string().optional(),nextStep:a.z.string().optional(),sources:a.z.array(Ee),inputs:a.z.array(qa),views:a.z.array(Pa),filterContracts:a.z.array(Ba),implementationChecklist:a.z.object({schemaVersion:a.z.string().optional(),requiredDevtools:a.z.object({mountRootDevtools:a.z.boolean(),providerDebugBridge:a.z.string().optional(),panelPosition:a.z.string().optional(),forbidden:a.z.array(a.z.string()).optional()}).passthrough(),requiredInputOptions:a.z.array(b),filterScopeByInput:a.z.array(b),bindingsByView:a.z.record(a.z.string(),a.z.array(b)),validationCommands:a.z.array(a.z.string()),browserSmokeChecks:a.z.array(a.z.string())}).passthrough(),nextRequiredTool:a.z.object({name:a.z.string(),reason:a.z.string().optional()}).optional(),unsupportedInsights:a.z.array(a.z.object({title:a.z.string(),requestedQuestion:a.z.string(),reason:a.z.string(),suggestedModelingFix:a.z.string()}).passthrough()).optional(),assumptions:a.z.array(a.z.string()).optional(),validation:b.optional()}).passthrough().superRefine((e,i)=>{const t=we(e);for(const n of t.issues)i.addIssue({code:a.z.ZodIssueCode.custom,message:n})});function de(e){return typeof e=="string"?e.trim().toLowerCase():""}function Ni(e){return String(e.column_name||e.name||e.qualifiedFieldName||"")}function qi(e){return Array.from(new Set([e.column_name,e.name,e.qualifiedFieldName,e.alias].filter(i=>typeof i=="string"&&i.trim().length>0).map(i=>i.trim())))}function ue(e){const i=Ga(e);return i?Ha(i)?"number":i.includes("timestamp")||i.includes("datetime")||i.startsWith("time")?"datetime":i.includes("date")?"date":i.includes("bool")?"boolean":"string":"unknown"}const Va=new Set(["int","uint","integer","bigint","smallint","tinyint","numeric","decimal","double","float","number","real","money","currency","percent"]),La=["int","uint","decimal","float"];function Ha(e){const i=e.split(/[\s(]/,1)[0]||"";return Va.has(i)?!0:La.some(t=>{if(!i.startsWith(t))return!1;const n=i.slice(t.length);return n.length>0&&Array.from(n).every(s=>s>="0"&&s<="9")})}function Ga(e){let i=de(e),t="";for(;i&&i!==t;)t=i,i=Ye(i,"nullable"),i=Ye(i,"lowcardinality");return i}function Ye(e,i){const t=`${i}(`;return!e.startsWith(t)||!e.endsWith(")")?e:e.slice(t.length,-1).trim()}function Oi(e){const i=ue(e);return i==="date"||i==="datetime"}function Ce(e){return Oi(e.dataType||e.data_type)}function De(e){const i=Pi(e);return i==="id"||i==="row_id"}function be(e){const i=Pi(e);return De(e)||i.endsWith("_id")||i.endsWith("_key")||i.endsWith("_number")}function Pi(e){return de(Ni(e)||e.name||e.alias).replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")}function Fe(e,i={}){const t=de(e.role);return t==="metric"||t==="measure"?!i.excludeIdentifiers||!be(e):t==="groupby"||t==="dimension"||t==="date"||t==="id"?!1:ue(e.dataType||e.data_type)==="number"&&(!i.excludeIdentifiers||!be(e))}function Ua(e){return!Fe(e)&&!Ce(e)}function Ya(e){const i=new Set,t=new Set,n=new Set;for(const s of e){if(De(s))continue;const r=qi(s);if(r.length!==0){if(Ce(s)){r.forEach(l=>t.add(l));continue}if(Fe(s,{excludeIdentifiers:!0})){r.forEach(l=>i.add(l));continue}r.forEach(l=>n.add(l))}}return{validMeasureCandidates:Array.from(i).sort(),validDateCandidates:Array.from(t).sort(),validDimensionCandidates:Array.from(n).sort()}}const Bi=["YYYY","MMMM","MMM","YY","MM","DD","HH","mm","ss"],Qa=new Set([" ","-","/",":",".",",","T"]),Ki={week_of_short:"week",week_of_long:"week",quarter_short:"quarter",quarter_long:"quarter",fiscal_quarter_short:"quarter",fiscal_year:"year"};function Za(e){return typeof e=="string"&&Object.prototype.hasOwnProperty.call(Ki,e)}function Xa(e,i){return Bi.find(t=>e.startsWith(t,i))}function Vi(e){var s;if(!e||e.trim()!==e)return{ok:!1,code:"invalid_temporal_bucket_pattern",message:"Temporal bucket patterns must be non-empty and trimmed."};const i=[];let t=0,n=!1;for(;t<e.length;){const r=Xa(e,t);if(r){if(n)return{ok:!1,code:"invalid_temporal_bucket_pattern",message:"Adjacent temporal bucket tokens require a separator."};i.push({kind:"token",value:r}),t+=r.length,n=!0;continue}const l=e[t];if(!Qa.has(l))return{ok:!1,code:"invalid_temporal_bucket_pattern",message:`Unsupported temporal bucket pattern character "${l}".`};if(i.length===0)return{ok:!1,code:"invalid_temporal_bucket_pattern",message:"Temporal bucket patterns cannot begin with a separator."};const d=i[i.length-1];d.kind==="literal"?d.value+=l:i.push({kind:"literal",value:l}),t+=1,n=!1}return((s=i[i.length-1])==null?void 0:s.kind)!=="token"?{ok:!1,code:"invalid_temporal_bucket_pattern",message:"Temporal bucket patterns cannot end with a separator."}:{ok:!0,segments:i}}function Wa(e){return e.flatMap(i=>i.kind==="token"?[i.value]:[])}function Qe(e,i){return e.filter(t=>i.includes(t)).length===1}function H(e,i){return e.some(t=>i.includes(t))}function Ja(e){return new Set(e).size!==e.length}function en(e,i){if(Ja(e))return!1;const t=["YYYY","YY"],n=["MMMM","MMM","MM"],s=["HH","mm","ss"],r=Qe(e,t),l=Qe(e,n),d=e.includes("DD"),u=H(e,s);switch(i){case"second":return e.includes("HH")&&e.includes("mm")&&e.includes("ss")&&(!H(e,[...t,...n,"DD"])||r&&l&&d);case"minute":return e.includes("HH")&&e.includes("mm")&&(!H(e,[...t,...n,"DD"])||r&&l&&d);case"hour":return e.includes("HH")&&(!H(e,[...t,...n,"DD"])||r&&l&&d);case"day":case"week":return r&&l&&d&&!u;case"month":return r&&l&&!d&&!u;case"quarter":return!1;case"year":return r&&!l&&!d&&!u}}function J(e,i){if(e.presentation.mode==="auto")return{ok:!0};if(e.presentation.mode==="preset"){const n=Ki[e.presentation.preset];return n===i?{ok:!0}:{ok:!1,code:"incompatible_temporal_bucket_preset",message:`Preset ${e.presentation.preset} requires ${n} granularity.`}}const t=Vi(e.presentation.pattern);return t.ok?en(Wa(t.segments),i)?{ok:!0,segments:t.segments}:{ok:!1,code:"incompatible_temporal_bucket_pattern",message:`Pattern ${e.presentation.pattern} is not compatible with ${i} granularity.`}:t}function tn(e,i){if(!(!e||!i))return J(e,i).ok?e:void 0}function o(e,i,t){return t?{code:e,message:i,path:t}:{code:e,message:i}}function an(e){for(let i=0;i<e.length;i+=1){const t=e[i];if(e.some((n,s)=>s!==i&&Hi(n,t)))return!1}return!0}function Li(e,i){return ui(e,i)}function Hi(e,i){return Li(e,i)&&O(e)===O(i)}function nn(e){return`Metric intent has duplicate measure "${e.name}" with the same aggregate (${O(e)}). Use different aggregates to request both, or remove one entry.`}function Ze(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null}function sn(e,i,t){if(e!==void 0){if(!e||typeof e!="object"||Array.isArray(e)){t.push(o("invalid_sql_default_parameters","SQL defaultParameters must be an object keyed by parameter name.",i));return}Object.entries(e).forEach(([n,s])=>{if(!n.trim()){t.push(o("invalid_sql_default_parameter_name","SQL defaultParameters names must be non-empty strings.",`${i}.${n}`));return}(Array.isArray(s)?s.every(Ze):Ze(s))||t.push(o("invalid_sql_default_parameter_value","SQL defaultParameters values must be strings, numbers, booleans, nulls, or arrays of those scalar values.",`${i}.${n}`))})}}function on(e,i){return je(e,i).length===1}function rn(e,i){return je(e,i).length===1}function je(e,i){return i.filter(n=>ln(e,n))}function ln(e,i){return dn(e,i)?e.source?Li(i,e):!0:!1}function dn(e,i){return!(i.name!==e.name||e.role!==void 0&&i.role!==void 0&&i.role!==e.role||un(e,i)&&O(i)!==O(e))}function un(e,i){return e.role==="measure"||i.role==="measure"||e.aggregate!==void 0||i.aggregate!==void 0}function O(e){return ne(e)}const cn=/^(\d{4})-(\d{2})-(\d{2})$/,Gi=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|[+-]\d{2}:\d{2})$/;function ee(e){if(typeof e!="string")return null;const i=e.trim(),t=cn.exec(i);if(t){const[,v,D,F]=t;return Xe(v,D,F)?new Date(Date.UTC(Number(v),Number(D)-1,Number(F))):null}const n=Gi.exec(i);if(!n)return null;const[,s,r,l,d,u,p="00",,y]=n;if(!Xe(s,r,l)||!q(d,0,23)||!q(u,0,59)||!q(p,0,59)||!mn(y))return null;const x=new Date(i);return Number.isFinite(x.getTime())?x:null}function pn(e){return typeof e!="string"||!Gi.test(e.trim())?null:ee(e)}function Xe(e,i,t){const n=Number(e),s=Number(i),r=Number(t);if(!Number.isInteger(n)||!Number.isInteger(s)||!Number.isInteger(r)||s<1||s>12)return!1;const l=new Date(Date.UTC(n,s-1,r));return l.getUTCFullYear()===n&&l.getUTCMonth()===s-1&&l.getUTCDate()===r}function q(e,i,t){const n=Number(e);return Number.isInteger(n)&&n>=i&&n<=t}function mn(e){if(e==="Z")return!0;const i=/^([+-])(\d{2}):(\d{2})$/.exec(e);return!!(i&&q(i[2],0,23)&&q(i[3],0,59))}function f(e){return typeof e=="string"&&e.trim().length>0}function fn(e){const i=new Set;let t=0;for(;t<e.length;){const n=e[t];if(n==="'"||n==='"'){t=gn(e,t);continue}if(n==="{"){const s=e.indexOf("}",t+1);if(s===-1){t+=1;continue}const r=e.slice(t+1,s);/^[A-Za-z_][A-Za-z0-9_]*$/.test(r)&&i.add(r),t=s+1;continue}t+=1}return Array.from(i)}function gn(e,i){const t=e[i];let n=i+1;for(;n<e.length;){if(e[n]===t){if(e[n+1]===t){n+=2;continue}return n+1}n+=1}return e.length}function m(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function We(e,i,t){if(e!==void 0){if(!m(e)){t.push(o("invalid_pagination","Pagination must be an object with positive integer page and pageSize.",i));return}(!Number.isInteger(e.page)||typeof e.page!="number"||e.page<1)&&t.push(o("invalid_pagination_page","Pagination page must be a positive integer.",`${i}.page`)),(!Number.isInteger(e.pageSize)||typeof e.pageSize!="number"||e.pageSize<1)&&t.push(o("invalid_pagination_page_size","Pagination pageSize must be a positive integer.",`${i}.pageSize`))}}function _e(e){const i=new Set;for(const t of e){if(i.has(t))return t;i.add(t)}return null}function he(e,i,t,n){_e(e.filter(r=>f(r)))&&n.push(o("duplicate_matrix_public_id",`Matrix ${t} ids must be unique so sort and expansion references are unambiguous.`,i))}const hn=new Set(["SUM","COUNT","AVG","MIN","MAX","MEDIAN","DISTINCT"]);function Ne(e,i,t){if(!e||typeof e!="object"){t.push(o("missing_source","Analytics intent needs a source.",i));return}if(e.kind==="semantic"){f(e.domainId)||t.push(o("missing_semantic_domain","Semantic source needs a domainId.",`${i}.domainId`)),f(e.datasetName)||t.push(o("missing_dataset_name","Semantic source needs a datasetName.",`${i}.datasetName`));return}if(e.kind==="physical"){f(e.connectionId)||t.push(o("missing_connection_id","Physical source needs a connectionId.",`${i}.connectionId`)),f(e.tableName)||t.push(o("missing_table_name","Physical source needs a tableName.",`${i}.tableName`));return}if(e.kind==="sql"){f(e.connectionId)||t.push(o("missing_connection_id","SQL source needs a connectionId.",`${i}.connectionId`));return}t.push(o("invalid_source_kind","Source kind is not supported.",i))}function g(e,i,t,n={}){if(!e||!m(e)){n.required&&t.push(o("missing_field_ref","Field reference needs a name.",i));return}f(e.name)||t.push(o("missing_field_ref","Field reference needs a name.",`${i}.name`)),e.source!==void 0&&Ne(e.source,`${i}.source`,t),A(e.aggregate,`${i}.aggregate`,t)}function yn(e,i,t){if(!m(e)){t.push(o("invalid_input_binding","Input bindings must be structured objects.",i));return}f(e.inputId)||t.push(o("invalid_input_binding","Input bindings need a non-empty inputId.",`${i}.inputId`)),e.kind!==void 0&&e.kind!=="filter"&&e.kind!=="control"&&t.push(o("invalid_input_binding","Input binding kind must be filter or control.",`${i}.kind`)),e.field!==void 0&&g(e.field,`${i}.field`,t),e.relationshipHint!==void 0&&qe(e.relationshipHint,`${i}.relationshipHint`,t)}function qe(e,i,t){if(!m(e)){t.push(o("invalid_relationship_hint","Relationship hints must be structured objects.",i));return}e.relationshipIds!==void 0&&(!Array.isArray(e.relationshipIds)||e.relationshipIds.some(n=>!f(n)))&&t.push(o("invalid_relationship_hint","Relationship hint relationshipIds must be non-empty strings.",`${i}.relationshipIds`))}function bn(e,i){var n,s;if(((n=e.source)==null?void 0:n.kind)!=="semantic"&&((s=e.source)==null?void 0:s.kind)!=="physical"&&i.push(o("invalid_input_options_source","Input options must use a semantic or physical source.","source")),f(e.inputId)||i.push(o("missing_input_options_input_id","Input options intent needs the inputId it populates.","inputId")),e.search!==void 0&&typeof e.search!="string"&&i.push(o("invalid_input_options_search","Input options search must be a string.","search")),e.limit!==void 0&&(typeof e.limit!="number"||!Number.isFinite(e.limit)||!Number.isInteger(e.limit)||e.limit<=0)&&i.push(o("invalid_input_options_limit","Input options limit must be a positive finite number.","limit")),(!e.labelField||!f(e.labelField.name))&&i.push(o("missing_input_options_label_field","Input options intent needs a labelField.","labelField")),g(e.labelField,"labelField",i,{required:!0}),(!e.valueField||!f(e.valueField.name))&&i.push(o("missing_input_options_value_field","Input options intent needs a valueField.","valueField")),g(e.valueField,"valueField",i,{required:!0}),e.searchField!==void 0&&g(e.searchField,"searchField",i,{required:!0}),e.disambiguationFields!==void 0&&(Array.isArray(e.disambiguationFields)?e.disambiguationFields.forEach((r,l)=>{g(r,`disambiguationFields.${l}`,i,{required:!0})}):i.push(o("invalid_input_options_disambiguation_fields","Input options disambiguationFields must be an array of field refs.","disambiguationFields"))),[{field:e.labelField,path:"labelField"},{field:e.valueField,path:"valueField"},...e.searchField?[{field:e.searchField,path:"searchField"}]:[],...Array.isArray(e.disambiguationFields)?e.disambiguationFields.map((r,l)=>({field:r,path:`disambiguationFields.${l}`})):[]].forEach(({field:r,path:l})=>{r!=null&&r.source&&!ae(r.source,e.source)&&i.push(o("input_options_field_source_mismatch","Input option fields must belong to the declared option source.",`${l}.source`))}),e.dependencies!==void 0){const r=e.dependencies;if(!m(r))i.push(o("invalid_input_options_dependencies","Input options dependencies must be a structured object.","dependencies"));else{const l=r.mode;l!==void 0&&l!=="independent"&&l!=="explicit"&&i.push(o("invalid_input_options_dependencies","Input options dependencies mode must be independent or explicit.","dependencies.mode")),Je(r.includeInputIds,"dependencies.includeInputIds",i,"Input options includeInputIds must be non-empty strings."),Je(r.excludeInputIds,"dependencies.excludeInputIds",i,"Input options excludeInputIds must be non-empty strings."),vn(e,i)}}if(e.population!==void 0){const r=e.population;if(!m(r))i.push(o("invalid_input_options_population","Input options population must be a structured object.","population"));else{const l=r.kind;l!=="option_source"&&l!=="related_population"&&i.push(o("invalid_input_options_population","Input options population kind must be option_source or related_population.","population.kind")),l==="option_source"&&r.baseSource!==void 0&&i.push(o("invalid_input_options_population","Input options population baseSource is only valid for related_population.","population.baseSource")),l==="option_source"&&r.relationshipHint!==void 0&&i.push(o("invalid_input_options_population","Input options population relationshipHint is only valid for related_population.","population.relationshipHint")),l==="related_population"&&(Ne(r.baseSource,"population.baseSource",i),r.relationshipHint!==void 0&&qe(r.relationshipHint,"population.relationshipHint",i))}}}function _n(e,i){if(!(!("inputs"in e)||e.inputs===void 0)){if(!Array.isArray(e.inputs)){i.push(o("invalid_input_binding","Analytics intent inputs must be an array of input bindings.","inputs"));return}e.inputs.forEach((t,n)=>yn(t,`inputs.${n}`,i))}}function vn(e,i){var n,s;const t=new Set(Array.isArray(e.inputs)?e.inputs.map(r=>m(r)?r.inputId:void 0).filter(r=>typeof r=="string"):[]);for(const r of((n=e.dependencies)==null?void 0:n.includeInputIds)||[])t.has(r)||i.push(o("invalid_input_options_dependencies",`Input options dependency "${r}" is not declared in inputs.`,"dependencies.includeInputIds"));for(const r of((s=e.dependencies)==null?void 0:s.excludeInputIds)||[])r!==e.inputId&&!t.has(r)&&i.push(o("invalid_input_options_dependencies",`Input options dependency exclusion "${r}" is not the populated inputId and is not declared in inputs.`,"dependencies.excludeInputIds"))}function Je(e,i,t,n){e!==void 0&&(!Array.isArray(e)||e.some(s=>!f(s)))&&t.push(o("invalid_input_options_dependencies",n,i))}function A(e,i,t){e!==void 0&&(typeof e!="string"||!hn.has(e))&&t.push(o("invalid_aggregate","Field aggregate must be SUM, COUNT, AVG, MIN, MAX, MEDIAN, or DISTINCT.",i))}const zn=new Set(["measure","dimension","date","id","unknown"]),Sn=new Set(["row","aggregate"]),Ui=new Set(["string","number","boolean","date","datetime","unknown"]),$n=new Set(["number","currency","percent","percentage","scientific","date","datetime","duration","string","temporal_bucket"]),wn=new Set(E),kn=new Set(["millisecond","second","minute","hour","day"]),In=new Set(["compact","digital","long"]);function Yi(e,i,t){if(e===void 0)return;if(!m(e)){t.push(o("invalid_value_format","Value format must be a structured object.",i));return}const n=e;(typeof n.type!="string"||!$n.has(n.type))&&t.push(o("invalid_value_format_type","Value format type must be number, currency, percent, percentage, scientific, date, datetime, duration, string, or temporal_bucket.",`${i}.type`)),n.type==="temporal_bucket"&&!Z.safeParse(e).success&&t.push(o("invalid_temporal_bucket_format","Temporal bucket format must contain a valid auto, preset, or pattern presentation.",i)),(n.type==="number"||n.type==="currency"||n.type==="percent"||n.type==="percentage"||n.type==="scientific")&&Object.prototype.hasOwnProperty.call(e,"locale")&&t.push(o("invalid_value_format","Numeric value formats cannot define viewer locale.",`${i}.locale`)),G(e.minimumFractionDigits,`${i}.minimumFractionDigits`,t),G(e.maximumFractionDigits,`${i}.maximumFractionDigits`,t),G(e.scale,`${i}.scale`,t),G(e.maxUnits,`${i}.maxUnits`,t),e.useGrouping!==void 0&&typeof e.useGrouping!="boolean"&&t.push(o("invalid_value_format_use_grouping","Value format useGrouping must be boolean.",`${i}.useGrouping`)),e.negativeStyle!==void 0&&e.negativeStyle!=="minus"&&e.negativeStyle!=="parentheses"&&t.push(o("invalid_value_format_negative_style","Value format negativeStyle must be minus or parentheses.",`${i}.negativeStyle`)),e.percentValueMode!==void 0&&e.percentValueMode!=="fraction"&&e.percentValueMode!=="whole"&&t.push(o("invalid_value_format_percent_mode","Value format percentValueMode must be fraction or whole.",`${i}.percentValueMode`));for(const s of["inputUnit","largestUnit","smallestUnit"]){const r=e[s];r!==void 0&&(typeof r!="string"||!kn.has(r))&&t.push(o("invalid_value_format_duration_unit","Duration format units must be millisecond, second, minute, hour, or day.",`${i}.${s}`))}e.outputStyle!==void 0&&(typeof e.outputStyle!="string"||!In.has(e.outputStyle))&&t.push(o("invalid_value_format_duration_style","Duration format outputStyle must be compact, digital, or long.",`${i}.outputStyle`))}function Qi(e,i,t){if(m(e)&&e.type==="temporal_bucket"){t.push(o("invalid_scalar_value_format","Scalar and measure slots cannot own temporal bucket presentation; declare it with grain on a grouped field or axis.",i));return}Yi(e,i,t)}function G(e,i,t){e!==void 0&&(typeof e!="number"||!Number.isFinite(e))&&t.push(o("invalid_value_format_number","Value format numeric options must be finite numbers.",i))}const An=new Set(["additive","non_additive","ratio_of_sums","weighted","pre_aggregated","snapshot"]),xn=new Set(["default","symmetric_aggregate","aggregate_then_join","weighted"]);function Rn(e,i,t){if(!e||!m(e)){t.push(o("invalid_derived_field_input","Derived field inputs must be structured input references.",i));return}if(e.kind==="field"){g(e.field,`${i}.field`,t,{required:!0}),A(e.aggregate,`${i}.aggregate`,t);return}t.push(o("invalid_derived_field_input","Derived field input kind must be field.",`${i}.kind`))}function ei(e,i,t){if(!m(e)){t.push(o("invalid_result_column_ref","Result calculation references must use columnKey or field.",i));return}const n=f(e.columnKey),s=m(e.field);if(n===s){t.push(o("invalid_result_column_ref","Result calculation references must identify exactly one of columnKey or field.",i));return}s&&g(e.field,`${i}.field`,t,{required:!0})}function Mn(e,i,t){if(!m(e)){t.push(o("invalid_result_calculation_output","Result calculation output must be a structured object.",i));return}f(e.key)||t.push(o("invalid_result_calculation_output","Result calculation output needs a stable key.",`${i}.key`)),e.dataType!==void 0&&(typeof e.dataType!="string"||!Ui.has(e.dataType))&&t.push(o("invalid_result_calculation_output","Result calculation output dataType must be string, number, boolean, date, datetime, or unknown.",`${i}.dataType`)),Qi(e.format,`${i}.format`,t)}function Tn(e,i,t){e!==void 0&&(si(e)||t.push(o("invalid_time_grain",`Matrix time grain must be one of: ${te.join(", ")}.`,i)))}function Zi(e,i,t,n){e!=="asc"&&e!=="desc"&&t.push(o(n,"Sort direction must be asc or desc.",i))}function Xi(e,i,t,n){e!==void 0&&e!=="warehouseDefault"&&e!=="first"&&e!=="last"&&t.push(o(n,"Null ordering must be warehouseDefault, first, or last.",i))}function Wi(e,i,t,n){e!==void 0&&e!=="global"&&e!=="withinParent"&&t.push(o(n,"Sort scope must be global or withinParent.",i))}function En(e,i,t){e.enabled!==void 0&&typeof e.enabled!="boolean"&&t.push(o("invalid_matrix_subtotal","Matrix subtotal enabled must be a boolean.",`${i}.enabled`)),e.position!==void 0&&e.position!=="before"&&e.position!=="after"&&t.push(o("invalid_matrix_subtotal","Matrix subtotal position must be before or after.",`${i}.position`)),e.label!==void 0&&typeof e.label!="string"&&t.push(o("invalid_matrix_subtotal","Matrix subtotal label must be a string.",`${i}.label`))}function Cn(e,i,t){if(Zi(e.direction,`${i}.direction`,t,"invalid_matrix_sort_direction"),Xi(e.nulls,`${i}.nulls`,t,"invalid_matrix_sort_nulls"),Wi(e.scope,`${i}.scope`,t,"invalid_matrix_sort_scope"),!m(e.by)){t.push(o("invalid_matrix_sort_by","Matrix sort by must be a structured object.",`${i}.by`));return}if(e.by.kind!=="member"){if(e.by.kind==="field"){g(e.by.field,`${i}.by.field`,t,{required:!0}),A(e.by.aggregate,`${i}.by.aggregate`,t);return}t.push(o("invalid_matrix_sort_by","Matrix axis sort by must be member or field.",`${i}.by.kind`))}}function ii(e,i,t,n){if(!Array.isArray(e))return n.required?t.push(o("missing_matrix_rows","Matrix intent needs at least one row axis level.",i)):e!==void 0&&t.push(o("invalid_matrix_columns","Matrix columns must be an array of axis levels.",i)),[];n.required&&e.length===0&&t.push(o("missing_matrix_rows","Matrix intent needs at least one row axis level.",i));const s=[];return e.forEach((r,l)=>{var D,F;const d=`${i}.${l}`;if(!m(r)){t.push(o("invalid_matrix_axis_level","Matrix axis levels must be structured objects.",d));return}const u=r;s.push(u),u.id!==void 0&&!f(u.id)&&t.push(o("invalid_matrix_axis_level_id","Matrix axis level id must be a non-empty string.",`${d}.id`)),g(u.field,`${d}.field`,t,{required:!0}),Tn(u.grain,`${d}.grain`,t);const p=ue((D=u.field)==null?void 0:D.dataType),y=((F=u.field)==null?void 0:F.role)==="date"||p==="date"||p==="datetime",x=p==="string"||p==="number"||p==="boolean";y&&!u.grain&&t.push(o("missing_matrix_temporal_grain","Temporal Matrix axis levels require an explicit supported grain.",`${d}.grain`)),x&&u.grain&&t.push(o("invalid_matrix_temporal_grain","Matrix grain is valid only for temporal axis fields.",`${d}.grain`)),u.format!==void 0&&(!u.grain||!Z.safeParse(u.format).success?t.push(o("invalid_matrix_temporal_format","Matrix temporal presentation requires a valid structured format and explicit grain.",`${d}.format`)):J(u.format,u.grain).ok||t.push(o("invalid_matrix_temporal_format","Matrix temporal presentation is not applicable to the selected grain.",`${d}.format`)));const v=u.semanticTemporalPresentation;if(v!==void 0){const Pe=v==null?void 0:v.format;!u.grain||(v==null?void 0:v.granularity)!==u.grain||!Z.safeParse(Pe).success?t.push(o("invalid_matrix_temporal_format","Matrix semantic temporal presentation must match the selected grain.",`${d}.semanticTemporalPresentation`)):J(Pe,u.grain).ok||t.push(o("invalid_matrix_temporal_format","Matrix semantic temporal presentation is not applicable to the selected grain.",`${d}.semanticTemporalPresentation.format`))}u.label!==void 0&&typeof u.label!="string"&&t.push(o("invalid_matrix_axis_label","Matrix axis level label must be a string.",`${d}.label`)),u.subtotal!==void 0&&typeof u.subtotal!="boolean"&&(m(u.subtotal)?En(u.subtotal,`${d}.subtotal`,t):t.push(o("invalid_matrix_subtotal","Matrix subtotal must be a boolean or structured options object.",`${d}.subtotal`))),u.sortBy!==void 0&&(m(u.sortBy)?Cn(u.sortBy,`${d}.sortBy`,t):t.push(o("invalid_matrix_sort_by","Matrix axis sortBy must be a structured object.",`${d}.sortBy`)))}),s}function Dn(e,i,t){if(!m(e)){t.push(o("invalid_matrix_total_behavior","Matrix total behavior must be a structured object.",i));return}if(e.kind!=="defaultAggregate"&&e.kind!=="blank"&&e.kind!=="labelOnly"&&e.kind!=="customAggregate"&&e.kind!=="percentOfParent"&&e.kind!=="percentOfGrandTotal"&&e.kind!=="customExpression"){t.push(o("invalid_matrix_total_behavior","Matrix total behavior kind is not supported.",`${i}.kind`));return}e.kind==="customAggregate"&&(Object.prototype.hasOwnProperty.call(e,"aggregate")?A(e.aggregate,`${i}.aggregate`,t):t.push(o("invalid_matrix_total_behavior","Custom matrix total behavior needs an aggregate.",`${i}.aggregate`))),e.kind==="customExpression"&&!f(e.expressionId)&&t.push(o("invalid_matrix_total_behavior","Custom matrix total behavior needs an expressionId.",`${i}.expressionId`)),e.kind==="labelOnly"&&e.label!==void 0&&typeof e.label!="string"&&t.push(o("invalid_matrix_total_behavior","Matrix label-only total behavior label must be a string.",`${i}.label`))}function Fn(e,i,t){if(!Array.isArray(e)||e.length===0)return t.push(o("missing_matrix_values","Matrix intent needs at least one value field.",i)),[];const n=[];return e.forEach((s,r)=>{const l=`${i}.${r}`;if(!m(s)){t.push(o("invalid_matrix_value","Matrix values must be structured objects.",l));return}const d=s;n.push(d),d.id!==void 0&&!f(d.id)&&t.push(o("invalid_matrix_value_id","Matrix value id must be a non-empty string.",`${l}.id`)),g(d.field,`${l}.field`,t,{required:!0}),A(d.aggregate,`${l}.aggregate`,t),Qi(d.format,`${l}.format`,t),d.label!==void 0&&typeof d.label!="string"&&t.push(o("invalid_matrix_value_label","Matrix value label must be a string.",`${l}.label`)),d.totalBehavior!==void 0&&Dn(d.totalBehavior,`${l}.totalBehavior`,t)}),n}function jn(e,i,t){if(!m(e)){t.push(o("invalid_matrix_totals","Matrix totals must be a structured object.",i));return}for(const n of["rows","columns"]){const s=e[n];s!==void 0&&s!==!0&&s!==!1&&s!=="perLevel"&&t.push(o("invalid_matrix_totals","Matrix total axis setting must be a boolean or perLevel.",`${i}.${n}`))}if(e.grandTotal!==void 0&&typeof e.grandTotal!="boolean")if(!m(e.grandTotal))t.push(o("invalid_matrix_totals","Matrix grandTotal must be a boolean or structured object.",`${i}.grandTotal`));else for(const n of["rows","columns"]){const s=e.grandTotal[n];s!==void 0&&typeof s!="boolean"&&t.push(o("invalid_matrix_totals","Matrix grandTotal rows/columns must be booleans.",`${i}.grandTotal.${n}`))}e.rowPosition!==void 0&&e.rowPosition!=="top"&&e.rowPosition!=="bottom"&&t.push(o("invalid_matrix_totals","Matrix row total position must be top or bottom.",`${i}.rowPosition`)),e.columnPosition!==void 0&&e.columnPosition!=="left"&&e.columnPosition!=="right"&&t.push(o("invalid_matrix_totals","Matrix column total position must be left or right.",`${i}.columnPosition`))}function ve(e,i,t,n){if(!Array.isArray(e)){n.push(o("invalid_matrix_path","Matrix member path must be an array of path segments.",i));return}e.forEach((s,r)=>{const l=`${i}.${r}`;if(!m(s)){n.push(o("invalid_matrix_path","Matrix path segment must be a structured object.",l));return}const d=s;if(!f(d.levelId)){n.push(o("stable_id_required","Matrix path segments must reference an explicit public axis level id.",`${l}.levelId`));return}Object.prototype.hasOwnProperty.call(s,"value")||n.push(o("invalid_matrix_path","Matrix path segments must include a value property; use explicit null for null members.",`${l}.value`)),t.has(d.levelId)||n.push(o("stable_id_required","Matrix path segment levelId must match an explicit public axis level id.",`${l}.levelId`))})}function ti(e,i,t,n){if(!m(e)){n.push(o("invalid_matrix_expansion","Matrix expansion axis options must be structured objects.",i));return}e.defaultDepth!==void 0&&(typeof e.defaultDepth!="number"||!Number.isInteger(e.defaultDepth)||e.defaultDepth<0)&&n.push(o("invalid_matrix_expansion","Matrix expansion defaultDepth must be a non-negative integer.",`${i}.defaultDepth`)),e.lazy!==void 0&&typeof e.lazy!="boolean"&&n.push(o("invalid_matrix_expansion","Matrix expansion lazy must be a boolean.",`${i}.lazy`)),e.expandedPaths!==void 0&&(Array.isArray(e.expandedPaths)?e.expandedPaths.forEach((s,r)=>{ve(s,`${i}.expandedPaths.${r}`,t,n)}):n.push(o("invalid_matrix_expansion","Matrix expandedPaths must be an array of member paths.",`${i}.expandedPaths`)))}function Nn(e,i,t,n){if(e!==void 0){if(!m(e)){n.push(o("invalid_matrix_expansion","Matrix expansion must be a structured object.","expansion"));return}e.rows!==void 0&&ti(e.rows,"expansion.rows",i,n),e.columns!==void 0&&ti(e.columns,"expansion.columns",t,n)}}function qn(e,i,t,n,s){if(e!==void 0){if(!Array.isArray(e)){s.push(o("invalid_matrix_sort","Matrix sort must be an array of sort rules.","sort"));return}e.forEach((r,l)=>{const d=`sort.${l}`;if(!m(r)){s.push(o("invalid_matrix_sort","Matrix sort rule must be a structured object.",d));return}const u=r;u.axis!=="row"&&u.axis!=="column"&&s.push(o("invalid_matrix_sort","Matrix sort axis must be row or column.",`${d}.axis`));const p=u.axis==="column"?t:i;if(u.targetId!==void 0&&!p.has(u.targetId)&&s.push(o("stable_id_required","Matrix sort targetId must reference an explicit public axis level id.",`${d}.targetId`)),Zi(u.direction,`${d}.direction`,s,"invalid_matrix_sort_direction"),Xi(u.nulls,`${d}.nulls`,s,"invalid_matrix_sort_nulls"),Wi(u.scope,`${d}.scope`,s,"invalid_matrix_sort_scope"),!m(u.by)){s.push(o("invalid_matrix_sort_by","Matrix sort by must be a structured object.",`${d}.by`));return}if(u.by.kind!=="member"){if(u.by.kind==="field"){g(u.by.field,`${d}.by.field`,s,{required:!0}),A(u.by.aggregate,`${d}.by.aggregate`,s);return}if(u.by.kind==="value"){(!f(u.by.valueId)||!n.has(u.by.valueId))&&s.push(o("stable_id_required","Matrix value sort must reference an explicit public value id.",`${d}.by.valueId`)),u.by.rowPath!==void 0&&ve(u.by.rowPath,`${d}.by.rowPath`,i,s),u.by.columnPath!==void 0&&ve(u.by.columnPath,`${d}.by.columnPath`,t,s);return}s.push(o("invalid_matrix_sort_by","Matrix sort by must be label, field, or value.",`${d}.by.kind`))}})}}function On(e,i){if(e!==void 0){if(!m(e)){i.push(o("invalid_matrix_layout","Matrix layout must be a structured object.","layout"));return}e.hierarchy!==void 0&&e.hierarchy!=="compact"&&e.hierarchy!=="tabular"&&e.hierarchy!=="outline"&&i.push(o("invalid_matrix_layout","Matrix hierarchy layout must be compact, tabular, or outline.","layout.hierarchy")),e.valuesPlacement!==void 0&&e.valuesPlacement!=="columns"&&e.valuesPlacement!=="rows"&&i.push(o("invalid_matrix_layout","Matrix valuesPlacement must be columns or rows.","layout.valuesPlacement")),e.stickyRowHeaders!==void 0&&typeof e.stickyRowHeaders!="boolean"&&i.push(o("invalid_matrix_layout","Matrix stickyRowHeaders must be a boolean.","layout.stickyRowHeaders")),e.stickyColumnHeaders!==void 0&&typeof e.stickyColumnHeaders!="boolean"&&i.push(o("invalid_matrix_layout","Matrix stickyColumnHeaders must be a boolean.","layout.stickyColumnHeaders"))}}function ai(e,i,t){if(!m(e)){t.push(o("invalid_matrix_display_limits","Matrix display limit must be a structured object.",i));return}(typeof e.limit!="number"||!Number.isInteger(e.limit)||e.limit<1)&&t.push(o("invalid_matrix_display_limits","Matrix display limit must be a positive integer.",`${i}.limit`));for(const n of Object.keys(e))n!=="limit"&&t.push(o("invalid_matrix_display_limits",`Matrix display limit ${n} is not supported in v1; use count-only { limit } display limits.`,`${i}.${n}`))}function Pn(e,i){if(e!==void 0){if(!m(e)){i.push(o("invalid_matrix_display_limits","Matrix displayLimits must be a structured object.","displayLimits"));return}e.rows!==void 0&&ai(e.rows,"displayLimits.rows",i),e.columns!==void 0&&ai(e.columns,"displayLimits.columns",i);for(const t of Object.keys(e))t==="rows"||t==="columns"||i.push(o("invalid_matrix_display_limits",`Matrix displayLimits ${t} is not supported in v1; use rows and columns count limits only.`,`displayLimits.${t}`))}}function Bn(e,i){var u;((u=e.source)==null?void 0:u.kind)==="sql"&&i.push(o("unsupported_matrix_sql_source","Matrix analytics intent does not support raw SQL sources.","source.kind"));const t=ii(e.rows,"rows",i,{required:!0}),n=ii(e.columns,"columns",i,{required:!1}),s=Fn(e.values,"values",i);ie(e.filters,"filters",i),e.totals!==void 0&&jn(e.totals,"totals",i),he(t.map(p=>p.id),"rows","row axis level",i),he(n.map(p=>p.id),"columns","column axis level",i),he(s.map(p=>p.id),"values","value",i);const r=new Set(t.map(p=>p.id).filter(p=>f(p))),l=new Set(n.map(p=>p.id).filter(p=>f(p))),d=new Set(s.map(p=>p.id).filter(p=>f(p)));qn(e.sort,r,l,d,i),Nn(e.expansion,r,l,i),On(e.layout,i),Pn(e.displayLimits,i)}function Kn(e,i){if(e.analysis===void 0)return;if(!m(e.analysis)){i.push(o("invalid_measure_analysis","Metric analysis must be a structured object.","analysis"));return}if(e.analysis.kind!=="period_change"){i.push(o("invalid_measure_analysis","Metric analysis kind is not supported.","analysis.kind"));return}e.dateField||i.push(o("missing_analysis_date_field","Period-change analysis needs a dateField.","dateField")),e.timeGrain||i.push(o("missing_analysis_time_grain","Period-change analysis needs a timeGrain.","timeGrain")),e.analysis.orderBy!==void 0&&e.analysis.orderBy!=="absolute_change"&&e.analysis.orderBy!=="positive_change"&&e.analysis.orderBy!=="negative_change"&&e.analysis.orderBy!=="period"&&i.push(o("invalid_measure_analysis","Period-change analysis orderBy must be absolute_change, positive_change, negative_change, or period.","analysis.orderBy"));const{timeWindow:t}=e.analysis;t!==void 0&&ze(t,"analysis.timeWindow",i)}function ze(e,i,t){if(!m(e)){t.push(o("invalid_time_window","Time window must be a structured object.",i));return}if(e.kind!==void 0&&e.kind!=="relative"&&e.kind!=="absolute"&&t.push(o("invalid_time_window","Time window kind must be relative or absolute.",`${i}.kind`)),e.kind==="absolute"){if(f(e.start)||t.push(o("invalid_time_window","Absolute time window start must be a non-empty ISO date or timestamp string.",`${i}.start`)),f(e.end)||t.push(o("invalid_time_window","Absolute time window end must be a non-empty ISO date or timestamp string.",`${i}.end`)),f(e.start)&&f(e.end)){const n=ee(e.start),s=ee(e.end);n||t.push(o("invalid_time_window","Absolute time window start must be a valid ISO date or timestamp.",`${i}.start`)),s||t.push(o("invalid_time_window","Absolute time window end must be a valid ISO date or timestamp.",`${i}.end`)),n&&s&&n.getTime()>s.getTime()&&t.push(o("invalid_time_window","Absolute time window start must be before or equal to end.",i))}return}(typeof e.unit!="string"||!wn.has(e.unit))&&t.push(o("invalid_time_window",`Time window unit must be one of: ${E.join(", ")}.`,`${i}.unit`)),(typeof e.value!="number"||!Number.isFinite(e.value)||e.value<=0)&&t.push(o("invalid_time_window","Time window value must be a positive number.",`${i}.value`)),e.anchor!==void 0&&e.anchor!=="now"&&e.anchor!=="latest_available"&&t.push(o("invalid_time_window","Time window anchor must be now or latest_available.",`${i}.anchor`)),e.completeness!==void 0&&e.completeness!=="include_partial"&&e.completeness!=="complete_periods"&&t.push(o("invalid_time_window","Time window completeness must be include_partial or complete_periods.",`${i}.completeness`))}function ie(e,i,t){if(e!==void 0){if(!Array.isArray(e)){t.push(o("invalid_analytics_filters","Analytics filters must be an array.",i));return}e.forEach((n,s)=>{var u;const r=`${i}.${s}`;if(!m(n)){t.push(o("invalid_analytics_filter","Analytics filter must be a structured object.",r));return}const l=n;g(l.field,`${r}.field`,t,{required:!0}),l.scope!==void 0&&l.scope!=="row"&&l.scope!=="aggregate"&&t.push(o("invalid_analytics_filter_scope","Analytics filter scope must be row or aggregate.",`${r}.scope`)),l.scope==="aggregate"&&((u=l.field)==null?void 0:u.role)!==void 0&&l.field.role!=="measure"&&t.push(o("invalid_analytics_filter_scope","Aggregate-scope analytics filters must target a measure field.",`${r}.scope`));const d=l.operator==="is_null"||l.operator==="is_not_null";if(l.operator!==void 0&&l.operator!=="="&&l.operator!=="!="&&l.operator!=="in"&&l.operator!=="not_in"&&l.operator!=="contains"&&l.operator!=="not_contains"&&l.operator!=="between"&&l.operator!=="not_between"&&l.operator!==">"&&l.operator!==">="&&l.operator!=="<"&&l.operator!=="<="&&l.operator!=="is_null"&&l.operator!=="is_not_null"&&t.push(o("invalid_analytics_filter_operator","Analytics filter operator is not supported.",`${r}.operator`)),l.values===void 0&&!d&&t.push(o("missing_analytics_filter_value","Analytics filter needs values unless it is a null check.",r)),d&&l.values!==void 0){t.push(o("invalid_analytics_filter_values","Null-check analytics filters must not include values.",`${r}.values`));return}if(l.values!==void 0&&!Array.isArray(l.values)){t.push(o("invalid_analytics_filter_values","Analytics filter values must be an array when provided.",`${r}.values`));return}if(l.values!==void 0){const p=l.values.length;if(l.operator==="between"||l.operator==="not_between"){p!==2&&t.push(o("invalid_analytics_filter_values","Between analytics filters must include exactly two values.",`${r}.values`));return}(l.operator==="contains"||l.operator==="not_contains"||l.operator==="="||l.operator==="!="||l.operator===">"||l.operator===">="||l.operator==="<"||l.operator==="<="||l.operator===void 0)&&p!==1&&t.push(o("invalid_analytics_filter_values","Scalar analytics filters must include exactly one value. Use in/not_in for multiple values.",`${r}.values`))}})}}function Ji(e){const i=[];if(!m(e))return i.push(o("invalid_derived_field","Derived field definition must be a structured object.")),{ok:!1,errors:i,warnings:[]};if(e.kind!=="derived_field"&&i.push(o("invalid_derived_field_kind","Derived field kind must be derived_field.","kind")),f(e.name)||i.push(o("invalid_derived_field_name","Derived field needs a name.","name")),f(e.label)||i.push(o("invalid_derived_field_label","Derived field needs a label.","label")),zn.has(e.resultRole)||i.push(o("invalid_derived_field_role","Derived field resultRole must be measure, dimension, date, id, or unknown.","resultRole")),Ui.has(e.dataType)||i.push(o("invalid_derived_field_data_type","Derived field dataType must be string, number, boolean, date, datetime, or unknown.","dataType")),Sn.has(e.computeStage)||i.push(o("invalid_derived_field_compute_stage","Derived field computeStage must be row or aggregate.","computeStage")),e.computeStage==="aggregate"&&e.resultRole!=="measure"&&i.push(o("invalid_derived_field_compute_stage","Aggregate-stage derived fields must have resultRole measure.","computeStage")),e.resultRole!=="measure"&&e.defaultAggregate!==void 0&&i.push(o("invalid_derived_field_aggregate","Only measure derived fields may declare defaultAggregate.","defaultAggregate")),e.computeStage==="row"&&e.resultRole==="measure"&&e.defaultAggregate===void 0&&i.push(o("missing_derived_field_default_aggregate","Row-stage measure derived fields must declare defaultAggregate so row results have explicit rollup semantics.","defaultAggregate")),A(e.defaultAggregate,"defaultAggregate",i),e.aggregationBehavior!==void 0&&!An.has(e.aggregationBehavior)&&i.push(o("invalid_derived_field_aggregation_behavior","Derived field aggregationBehavior is not supported.","aggregationBehavior")),e.aggregationStrategy!==void 0&&!xn.has(e.aggregationStrategy)&&i.push(o("invalid_derived_field_aggregation_strategy","Derived field aggregationStrategy is not supported.","aggregationStrategy")),f(e.expression)||i.push(o("invalid_derived_field_expression","Derived field needs a named-token expression.","expression")),e.expressionLanguage!==void 0&&e.expressionLanguage!=="semaphor_sql_template"&&i.push(o("invalid_derived_field_expression_language","Derived field expressionLanguage must be semaphor_sql_template.","expressionLanguage")),!m(e.inputs)||Object.keys(e.inputs).length===0?i.push(o("invalid_derived_field_inputs","Derived field needs at least one typed input.","inputs")):Object.entries(e.inputs).forEach(([n,s])=>{if(!f(n)){i.push(o("invalid_derived_field_input_name","Derived field input names must be non-empty strings.","inputs"));return}Rn(s,`inputs.${n}`,i)}),f(e.expression)&&m(e.inputs)){const n=fn(e.expression),s=new Set(n),r=Object.keys(e.inputs).filter(l=>f(l));n.forEach(l=>{Object.prototype.hasOwnProperty.call(e.inputs,l)||i.push(o("invalid_derived_field_expression_token",`Derived field expression token "{${l}}" needs a matching inputs.${l} entry.`,"expression"))}),r.forEach(l=>{s.has(l)||i.push(o("unused_derived_field_input",`Derived field input "${l}" is not referenced by expression.`,`inputs.${l}`))})}const t=e.format;return m(t)&&t.type==="temporal_bucket"?i.push(o("invalid_derived_field_format","Derived field computation metadata cannot own temporal bucket presentation; declare grain and format on the grouped field.","format")):Yi(t,"format",i),e.tags!==void 0&&(!Array.isArray(e.tags)||e.tags.some(n=>!f(n)))&&i.push(o("invalid_derived_field_tags","Derived field tags must be non-empty strings.","tags")),{ok:i.length===0,errors:i,warnings:[]}}function Vn(e){const i=[];if(!m(e))return i.push(o("invalid_result_calculation","Result calculation must be a structured object.")),{ok:!1,errors:i,warnings:[]};if(f(e.id)||i.push(o("invalid_result_calculation_id","Result calculation needs an id.","id")),f(e.label)||i.push(o("invalid_result_calculation_label","Result calculation needs a label.","label")),e.kind!=="percent_of_total"&&e.kind!=="rank"&&e.kind!=="running_total"&&e.kind!=="previous_row_delta"&&i.push(o("invalid_result_calculation_kind","Result calculation kind must be percent_of_total, rank, running_total, or previous_row_delta.","kind")),ei(e.input,"input",i),Mn(e.output,"output",i),e.kind==="percent_of_total"){const t=e.denominator;t!==void 0&&(m(t)?t.scope==="population"?(g(t.metric,"denominator.metric",i,{required:!0}),ie(t.filters,"denominator.filters",i)):t.scope!=="returned_result"&&i.push(o("invalid_result_calculation_denominator","Percent-of-total denominator scope must be returned_result or population.","denominator.scope")):i.push(o("invalid_result_calculation_denominator","Percent-of-total denominator must be a structured object.","denominator")))}return e.kind==="rank"&&e.order!==void 0&&e.order!=="asc"&&e.order!=="desc"&&i.push(o("invalid_result_calculation_order","Rank result calculation order must be asc or desc.","order")),(e.kind==="running_total"||e.kind==="previous_row_delta")&&e.orderBy!==void 0&&ei(e.orderBy,"orderBy",i),{ok:i.length===0,errors:i,warnings:[]}}function Oe(e){var n;const i=[],t=[];if(!e||typeof e!="object")return{ok:!1,errors:[o("invalid_analytics_intent","Analytics intent must be a structured object.")],warnings:t,repairHints:[{code:"invalid_analytics_intent",recommendedNextStep:"Send one structured analytics intent object with kind, source, and required fields."}]};if(e.version!==void 0&&e.version!==1&&i.push(o("invalid_version","Analytics intent version must be 1.","version")),Ne(e.source,"source",i),Ln(e,i),_n(e,i),"relationshipHint"in e&&e.relationshipHint!==void 0&&qe(e.relationshipHint,"relationshipHint",i),e.kind==="metric"){const s=Array.isArray(e.measures)?e.measures.filter(r=>m(r)&&f(r.name)):[];if(!Array.isArray(e.measures)||e.measures.length===0?i.push(o("missing_measure","Metric intent needs at least one measure.","measures")):e.measures.some(r=>!m(r)||!f(r.name))&&i.push(o("invalid_measure_list","Metric intent measures must be an array of field references with names.","measures")),s.forEach((r,l)=>{g(r,`measures.${l}`,i,{required:!0})}),s.length>0&&!an(s)){const r=s.find((l,d)=>s.some((u,p)=>p!==d&&Hi(u,l)));r&&i.push(o("duplicate_measure",nn(r),"measures"))}if(m(e.primaryMeasure)&&f(e.primaryMeasure.name)&&je(e.primaryMeasure,s).length>1&&i.push(o("ambiguous_primary_measure","Metric intent primaryMeasure must identify exactly one selected measure.","primaryMeasure")),e.primaryMeasure!==void 0&&(g(e.primaryMeasure,"primaryMeasure",i,{required:!0}),m(e.primaryMeasure)&&f(e.primaryMeasure.name)&&s.length>0&&!on(e.primaryMeasure,s)&&i.push(o("invalid_primary_measure","Metric intent primaryMeasure must match one measure field reference.","primaryMeasure"))),e.dimensions!==void 0&&!Array.isArray(e.dimensions)?i.push(o("invalid_measure_dimensions","Metric intent dimensions must be an array of field references.","dimensions")):Array.isArray(e.dimensions)&&e.dimensions.some(r=>!m(r)||!f(r.name))&&i.push(o("invalid_measure_dimensions","Metric intent dimensions must be an array of field references with names.","dimensions")),e.dateField!==void 0&&g(e.dateField,"dateField",i),e.timeWindow!==void 0&&(ze(e.timeWindow,"timeWindow",i),e.dateField||i.push(o("missing_time_window_date_field","Metric timeWindow needs a dateField.","dateField"))),ie(e.filters,"filters",i),Array.isArray(e.dimensions)&&e.dimensions.forEach((r,l)=>{g(r,`dimensions.${l}`,i)}),e.orderBy!==void 0){if(!m(e.orderBy))i.push(o("invalid_measure_order_by","Metric intent orderBy must be a structured object.","orderBy"));else if(g(e.orderBy.field,"orderBy.field",i,{required:!0}),e.orderBy.direction!=="asc"&&e.orderBy.direction!=="desc"&&i.push(o("invalid_measure_order_direction","Metric intent orderBy direction must be asc or desc.","orderBy.direction")),m(e.orderBy.field)&&f(e.orderBy.field.name)){const r=[...s,...e.timeGrain&&e.dateField&&m(e.dateField)?[e.dateField]:[],...Array.isArray(e.dimensions)?e.dimensions.filter(l=>m(l)&&f(l.name)):[]];r.length>0&&!rn(e.orderBy.field,r)&&i.push(o("invalid_measure_order_by","Metric intent orderBy.field must match one selected measure, grouped dateField, or dimension.","orderBy.field"))}}Kn(e,i)}else if(e.kind==="records"){if(!Array.isArray(e.fields)||e.fields.length===0?i.push(o("missing_record_fields","Records intent needs at least one field.","fields")):e.fields.some(s=>!m(s)||!f(s.name))&&i.push(o("invalid_record_fields","Records intent fields must be field references with names.","fields")),Array.isArray(e.fields)&&e.fields.forEach((s,r)=>{g(s,`fields.${r}`,i)}),e.dateField!==void 0&&g(e.dateField,"dateField",i),We(e.pagination,"pagination",i),e.timeWindow!==void 0&&(ze(e.timeWindow,"timeWindow",i),e.dateField||i.push(o("missing_time_window_date_field","Records timeWindow needs a dateField.","dateField"))),ie(e.filters,"filters",i),Array.isArray(e.filters)&&e.filters.forEach((s,r)=>{m(s)&&s.scope==="aggregate"&&i.push(o("unsupported_record_filter_scope","Records intents support row-scope filters only. Use a metric intent for aggregate-scope filters.",`filters.${r}.scope`))}),e.orderBy!==void 0&&(m(e.orderBy)?(g(e.orderBy.field,"orderBy.field",i,{required:!0}),e.orderBy.direction!=="asc"&&e.orderBy.direction!=="desc"&&i.push(o("invalid_record_order_direction","Records intent orderBy direction must be asc or desc.","orderBy.direction"))):i.push(o("invalid_record_order_by","Records intent orderBy must be a structured object.","orderBy"))),e.totals!==void 0)if(!m(e.totals))i.push(o("invalid_records_totals","Records totals must be a structured server totals request.","totals"));else{e.totals.mode!=="server"&&i.push(o("invalid_records_totals","Records totals mode must be server.","totals.mode"));const s=e.totals.measures;!Array.isArray(s)||s.length===0?i.push(o("missing_records_totals_measures","Records server totals need at least one measure.","totals.measures")):s.forEach((r,l)=>{g(r,`totals.measures.${l}`,i,{required:!0}),(!m(r)||r.role!=="measure")&&i.push(o("invalid_records_totals_measure","Records server totals measures must be measure field references.",`totals.measures.${l}.role`))})}}else e.kind==="inputOptions"?bn(e,i):e.kind==="matrix"?Bn(e,i):e.kind==="sql"?(((n=e.source)==null?void 0:n.kind)!=="sql"&&i.push(o("invalid_sql_source","SQL analytics intent must use a SQL execution source.","source")),f(e.sql)||i.push(o("missing_sql","SQL analytics intent needs SQL text.","sql")),sn(e.defaultParameters,"defaultParameters",i),Array.isArray(e.fields)&&e.fields.forEach((s,r)=>{g(s,`fields.${r}`,i)}),We(e.pagination,"pagination",i)):i.push(o("invalid_analytics_kind","Analytics kind is not supported.","kind"));return{ok:i.length===0,errors:i,warnings:t,repairHints:Gn(i)}}function Ln(e,i){if(!(!("derivedFields"in e)||e.derivedFields===void 0)){if(!Array.isArray(e.derivedFields)){i.push(o("invalid_derived_fields","Analytics intent derivedFields must be an array of derived field definitions.","derivedFields"));return}e.derivedFields.forEach((t,n)=>{Ji(t).errors.forEach(r=>{i.push({...r,path:r.path?`derivedFields.${n}.${r.path}`:`derivedFields.${n}`})})})}}function et(e){const i=[],t=[];if(!e||typeof e!="object")return{ok:!1,errors:[o("invalid_operation_intent","Operation intent must be a structured object.")],warnings:t,repairHints:[{code:"invalid_operation_intent",recommendedNextStep:"Send one typed operation intent with version, kind, and required operation fields."}]};if(e.version!==1&&i.push(o("invalid_version","Operation intent version must be 1.","version")),e.kind==="answer_obligations")!Array.isArray(e.obligations)||e.obligations.length===0?i.push(o("missing_obligations","Answer-obligations operation intent needs at least one obligation.","obligations")):e.obligations.forEach((n,s)=>{f(n.id)||i.push(o("missing_obligation_id","Each analytics obligation needs an id.",`obligations.${s}.id`)),f(n.prompt)||i.push(o("missing_obligation_prompt","Each analytics obligation needs a prompt.",`obligations.${s}.prompt`))});else if(e.kind==="dashboard_change"||e.kind==="data_app_change"){if(f(e.instruction)||i.push(o("missing_instruction","Change operation intent needs an instruction.","instruction")),e.analyticsIntent){const n=Oe(e.analyticsIntent);i.push(...n.errors),t.push(...n.warnings)}}else i.push(o("invalid_operation_kind","Operation intent kind is not supported.","kind"));return{ok:i.length===0,errors:i,warnings:t,repairHints:it(i)}}function Hn(e){const i=[],t=[];if(!e||typeof e!="object")return{ok:!1,errors:[o("invalid_recovery_plan","Analytics recovery plan must be a structured object.")],warnings:t,repairHints:[{code:"invalid_recovery_plan",recommendedNextStep:"Return a typed recovery plan with operationIntent and plannedToolCalls."}]};e.version!==1&&i.push(o("invalid_version","Recovery plan version must be 1.","version")),e.kind!=="analytics_recovery_plan"&&i.push(o("invalid_recovery_plan_kind","Recovery plan kind must be analytics_recovery_plan.","kind"));const n=et(e.operationIntent);return i.push(...n.errors),t.push(...n.warnings),Array.isArray(e.plannedToolCalls)||i.push(o("invalid_planned_tool_calls","Recovery plan plannedToolCalls must be an array.","plannedToolCalls")),{ok:i.length===0,errors:i,warnings:t,repairHints:it(i)}}function it(e){return e.map(i=>({code:i.code,recommendedNextStep:i.code==="missing_obligations"?"Normalize the user request into one or more typed analytics obligations before recovery planning.":"Correct the operation/recovery contract shape before planning execution."}))}function Gn(e){return e.map(i=>{switch(i.code){case"missing_source":return{code:i.code,fieldRole:"source",recommendedNextStep:"Provide a semantic, physical, or SQL source before executing analytics."};case"missing_measure":return{code:i.code,fieldRole:"measure",recommendedNextStep:"Choose one exact measure from the grounded schema candidates."};case"missing_record_fields":return{code:i.code,fieldRole:"dimension",recommendedNextStep:"Provide at least one field for the records intent."};case"missing_matrix_rows":return{code:i.code,fieldRole:"dimension",recommendedNextStep:"Choose at least one row axis level for the matrix table."};case"missing_matrix_values":return{code:i.code,fieldRole:"measure",recommendedNextStep:"Choose at least one value field for the matrix table."};case"unsupported_matrix_sql_source":return{code:i.code,fieldRole:"source",recommendedNextStep:"Use a semantic or explorer-backed source for matrix tables; raw SQL matrix tables are not supported."};case"missing_input_options_input_id":return{code:i.code,fieldRole:"input",recommendedNextStep:"Provide the inputId that these option values populate."};case"missing_input_options_label_field":return{code:i.code,fieldRole:"dimension",recommendedNextStep:"Provide the human-readable field used as option labels."};case"missing_input_options_value_field":return{code:i.code,fieldRole:"dimension",recommendedNextStep:"Provide the stable field used as option values."};case"missing_sql":return{code:i.code,fieldRole:"sql",recommendedNextStep:"Provide bounded read-only SQL with an explicit outer LIMIT."};case"conflicting_sql":return{code:i.code,fieldRole:"sql",recommendedNextStep:"Use one canonical SQL text location for the intent; prefer top-level sql."};case"missing_semantic_domain":case"missing_dataset_name":case"missing_connection_id":case"missing_table_name":return{code:i.code,fieldRole:"source",recommendedNextStep:"Use grounded catalog metadata to fill the missing source reference."};default:return}}).filter(i=>!!i)}function Un(e,i,t,n){if(!e||typeof e!="object"){t.push(o("invalid_view","Dashboard view must be an object.",i));return}if(f(e.title)||t.push(o("missing_view_title","Dashboard view needs a title.",i)),!e.presentation||typeof e.presentation!="object"){t.push(o("missing_presentation","Dashboard view needs a presentation.",`${i}.presentation`));return}if(e.presentation.kind==="text"){f(e.text)||n.push(o("missing_text_content","Text views should include text content.",`${i}.text`));return}if(!e.analytics){t.push(o("missing_view_analytics","Non-text dashboard views need analytics intent.",`${i}.analytics`));return}e.presentation.kind==="matrixTable"&&e.analytics.kind!=="matrix"&&t.push(o("invalid_matrix_view_analytics","Matrix table views need matrix analytics intent.",`${i}.analytics.kind`));const s=Oe(e.analytics);for(const r of s.errors)t.push(o(r.code,r.message,`${i}.analytics${r.path?`.${r.path}`:""}`));for(const r of s.warnings)n.push(o(r.code,r.message,`${i}.analytics${r.path?`.${r.path}`:""}`))}function Yn(e){const i=[],t=[];if(!e||typeof e!="object")return{ok:!1,errors:[o("invalid_dashboard_intent","Dashboard intent must be a structured object.")],warnings:t};e.version!==1&&i.push(o("invalid_version","Dashboard intent version must be 1.")),e.kind!=="dashboard"&&i.push(o("invalid_kind","Experience intent kind must be dashboard.")),f(e.title)||i.push(o("missing_title","Dashboard intent needs a title.","title"));const n=Array.isArray(e.inputs)?e.inputs:[],s=_e(n.filter(m).map(u=>u.id).filter(u=>typeof u=="string"));s&&i.push(o("duplicate_input_id",`Duplicate input id: ${s}.`,"inputs"));for(const[u,p]of n.entries()){const y=`inputs.${u}`;if(!m(p)){i.push(o("invalid_input","Dashboard input must be an object.",y));continue}f(p.id)||i.push(o("missing_input_id","Input needs an id.",`${y}.id`)),f(p.label)||i.push(o("missing_input_label","Input needs a label.",`${y}.label`)),!p.field||!f(p.field.name)?i.push(o("missing_input_field","Input needs a field.",`${y}.field`)):g(p.field,`${y}.field`,i)}const r=Array.isArray(e.sections)?e.sections:[];r.length===0&&i.push(o("missing_sections","Dashboard intent needs at least one section.","sections"));const l=r.flatMap(u=>u&&typeof u=="object"&&Array.isArray(u.views)?u.views.filter(m).map(p=>p.id).filter(p=>!!p):[]),d=_e(l);d&&i.push(o("duplicate_view_id",`Duplicate dashboard view id: ${d}.`,"sections"));for(const[u,p]of r.entries()){const y=`sections.${u}`;if(!p||typeof p!="object"){i.push(o("invalid_section","Dashboard section must be an object.",y));continue}if(f(p.title)||i.push(o("missing_section_title","Dashboard section needs a title.",y)),!Array.isArray(p.views)||p.views.length===0){i.push(o("missing_section_views","Dashboard section needs at least one view.",`${y}.views`));continue}for(const[x,v]of p.views.entries())Un(v,`${y}.views.${x}`,i,t)}return{ok:i.length===0,errors:i,warnings:t}}exports.RAW_TEMPORAL_CONTRACT_ERROR_CODES=tt;exports.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT=di;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=Q;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION=ut;exports.SEMAPHOR_GENERATED_COUNT_METRIC_ID=nt;exports.SEMAPHOR_MATRIX_TIME_GRAINS=te;exports.SEMAPHOR_TIME_GRAINS=E;exports.TEMPORAL_BUCKET_CONTRACT_ERROR_CODES=at;exports.TEMPORAL_BUCKET_PATTERN_TOKENS=Bi;exports.TEMPORAL_BUCKET_PRESETS=oi;exports.buildAnalyticsCatalogFieldSummary=Ya;exports.canonicalDashboardRecordsPayloadSchema=ha;exports.canonicalizeSemaphorSourceIdentity=Se;exports.dashboardRecordsPayloadSchema=ga;exports.getAnalyticsCatalogFieldCandidates=qi;exports.getAnalyticsCatalogFieldName=Ni;exports.getSemaphorNonRedundantDatasetId=k;exports.hasCompleteSemaphorSourceIdentity=ot;exports.isAnalyticsCatalogDateField=Ce;exports.isAnalyticsCatalogDimensionField=Ua;exports.isAnalyticsCatalogMetricField=Fe;exports.isAnalyticsDateLikeDataType=Oi;exports.isAnalyticsMetricIdentifierField=be;exports.isAnalyticsTechnicalIdentifierField=De;exports.isSemaphorDataAppCodegenSummary=zt;exports.isSemaphorMatrixTimeGrain=si;exports.isSemaphorTimeGrain=ni;exports.isTemporalBucketPreset=Za;exports.isValidIanaTimeZone=li;exports.mergeSemaphorSourcesByIdentity=rt;exports.normalizeAnalyticsCatalogDataType=ue;exports.normalizeAnalyticsCatalogName=de;exports.parseSemaphorIsoInstant=pn;exports.parseSemaphorIsoTimeWindowBoundary=ee;exports.preferSemaphorFieldRefMetadata=dt;exports.preferSemaphorSourceMetadata=$e;exports.rawTemporalValueMetadataSchema=zi;exports.resolveApplicableTemporalBucketFormat=tn;exports.semaphorAnalyticsCoverageSchema=Te;exports.semaphorAnalyticsDiagnosticFeedbackSchema=Re;exports.semaphorAnalyticsExecutionResultSchema=Ci;exports.semaphorAnalyticsPopulationSchema=Me;exports.semaphorAnalyticsResultSchema=Ti;exports.semaphorAnalyticsValidationIssueSchema=W;exports.semaphorAnalyticsValidationResultSchema=xe;exports.semaphorAnalyzeResultSchema=Na;exports.semaphorAnalyzeResultShape=Di;exports.semaphorDataAppCodegenSummarySchema=Ka;exports.semaphorDerivedFieldDefinitionSchema=Ae;exports.semaphorExecutionFieldRefSchema=le;exports.semaphorFieldRefSchema=I;exports.semaphorFieldRefsMatch=ui;exports.semaphorInputOptionsResultSchema=xi;exports.semaphorMatrixResultSchema=Mi;exports.semaphorMetricAggregate=ne;exports.semaphorMetricMeasureBindingKey=ci;exports.semaphorMetricResultSchema=Ii;exports.semaphorPhysicalSourceRefSchema=$i;exports.semaphorRecordsResultSchema=Ai;exports.semaphorRelationshipDiagnosticsSchema=Ei;exports.semaphorResultColumnSchema=M;exports.semaphorSemanticSourceRefSchema=Ie;exports.semaphorSourceIdentityKey=Y;exports.semaphorSourceRefSchema=R;exports.semaphorSourcesReferToSameDataset=ae;exports.semaphorSqlResultSchema=Ri;exports.semaphorSqlSourceRefSchema=wi;exports.semaphorTimeGrainSchema=_i;exports.temporalBucketDataTypeForGrain=ri;exports.temporalBucketFormatSchema=Z;exports.temporalBucketMetadataSchema=X;exports.tokenizeTemporalBucketPattern=Vi;exports.validateSemaphorAnalyticsIntent=Oe;exports.validateSemaphorAnalyticsRecoveryPlan=Hn;exports.validateSemaphorDashboardIntent=Yn;exports.validateSemaphorDataAppCodegenSummary=we;exports.validateSemaphorDerivedFieldDefinition=Ji;exports.validateSemaphorOperationIntent=et;exports.validateSemaphorResultCalculation=Vn;exports.validateTemporalBucketFormatApplicability=J;
|
package/dist/dashboard/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../chunks/index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../chunks/index-UKhl24L_.cjs"),e=require("../chunks/common-types-o3LJcrpg.cjs");exports.Dashboard=o.Dashboard;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;
|
package/dist/dashboard/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { D as o } from "../chunks/index-
|
|
2
|
-
import { C as s, E as C } from "../chunks/common-types-
|
|
1
|
+
import { D as o } from "../chunks/index-Bs9OvwM2.js";
|
|
2
|
+
import { C as s, E as C } from "../chunks/common-types-Co766x6t.js";
|
|
3
3
|
export {
|
|
4
4
|
s as CONTROL_CARD_DEFAULT_VALUE,
|
|
5
5
|
o as Dashboard,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("../chunks/contracts-CtB2VONT.cjs"),A=require("../chunks/temporal-bucket-authoring-BK1UhYpD.cjs"),w=require("../chunks/validators-dJlwubP4.cjs");require("../chunks/analyze-result-contract-DSGoFuXQ.cjs");require("../value-format-preferences/index.cjs");const Te=require("../chunks/operators-DrTQsJXv.cjs"),X=require("../chunks/canonical-result-keys-Cb96edol.cjs"),m=require("../chunks/dashboard-filter-value-compatibility-UapptYnn.cjs");function S(e){return e&&typeof e=="object"?e:null}function T(e){return typeof e=="string"?e:null}function de(e){var t,r,a;return!!(e&&typeof e=="object")&&(((t=S(e))==null?void 0:t.kind)==="semantic"||((r=S(e))==null?void 0:r.kind)==="physical"||((a=S(e))==null?void 0:a.kind)==="sql")}function M(e){return de(e)?e.kind==="semantic"?!!(e.domainId&&e.datasetName):e.kind==="physical"?!!(e.connectionId&&e.tableName):!1:!1}function Fe(e){return w.semaphorSourceIdentityKey(e)}function Y(e,t){return w.semaphorSourcesReferToSameDataset(e,t)}function ce(e,t){return w.preferSemaphorSourceMetadata(e,t)}function B(e){const t=[];for(const r of e){const a=t.findIndex(o=>Y(o,r));a===-1?t.push(r):t[a]=ce(t[a],r)}return t}function ke(e){return B(e)[0]}function K(e,t){return e.kind!=="semantic"||e.connectionId||(t==null?void 0:t.kind)!=="semantic"||!w.semaphorSourcesReferToSameDataset(e,t)||!t.connectionId?e:{...e,connectionId:t.connectionId}}function U(e){return M(e)?e:void 0}function oe(e,t){if(!(e.kind!=="semantic"||e.connectionId))return t.find(r=>(r==null?void 0:r.kind)==="semantic"&&w.semaphorSourcesReferToSameDataset(e,r)&&!!r.connectionId)}function v(e,t){const r=U(e==null?void 0:e.source);return r?K(r,t):void 0}function le({explicitSource:e,field:t,defaultSource:r,fallbackSources:a}){const o=[r,...a||[]],n=U(e),i=n?K(n,oe(n,o)):void 0;if(i)return i;if(e!==void 0)return;const d=v(t,r),s=d?K(d,oe(d,o)):void 0;if(s)return s;if((t==null?void 0:t.source)===void 0)return U(r)}function xe(e,t){if(!(e!=null&&e.name)||!(t!=null&&t.name)||e.name!==t.name)return!1;const r=v(e),a=v(t);return!r||!a?!0:Y(r,a)}function x(e){var t;return T((t=S(e))==null?void 0:t.kind)}function ue(e){var t,r;return x(e)!=="semantic"?null:((r=T((t=S(e))==null?void 0:t.domainId))==null?void 0:r.trim())||null}function Re(e){var t;return x(e)!=="semantic"?null:T((t=S(e))==null?void 0:t.datasetName)}function Me(e){var t;return x(e)!=="semantic"?null:T((t=S(e))==null?void 0:t.datasetId)}function Ne(e){var t;return x(e)!=="physical"?null:T((t=S(e))==null?void 0:t.connectionId)}function Oe(e){var t;return x(e)!=="physical"?null:T((t=S(e))==null?void 0:t.tableName)}function Be(e){var t;return x(e)!=="physical"?"":T((t=S(e))==null?void 0:t.databaseName)||""}function $e(e){var t;return x(e)!=="physical"?"":T((t=S(e))==null?void 0:t.schemaName)||""}function fe(e){if(e.analyticsIntent&&typeof e.analyticsIntent=="object"&&"source"in e.analyticsIntent)return e.analyticsIntent.source}function pe({datasets:e,requireAtLeastOne:t}){if(t&&e.length<1)return{ok:!1,issue:"invalid_dataset_count"};if(e.length<=1)return{ok:!0};const r=e.map(ue),a=new Set(r.filter(Boolean));return r.some(o=>!o)||a.size!==1?{ok:!1,issue:"invalid_multi_dataset_scope"}:{ok:!0}}function z(e,t){if(!t)return!1;if(t.kind==="semantic"){const r=Me(e);return ue(e)===t.domainId?r&&t.datasetId?r===t.datasetId:Re(e)===t.datasetName:!1}return t.kind==="physical"?Ne(e)===t.connectionId&&Oe(e)===t.tableName&&Be(e)===(t.databaseName||"")&&$e(e)===(t.schemaName||""):!1}function Pe(e,t){return e.find(r=>z(r,t))}function p(e,t,r){return r?{code:e,message:t,cardId:r}:{code:e,message:t}}function E(e){const t=new Set;for(const r of e){if(t.has(r))return r;t.add(r)}return null}function he({card:e,datasets:t,errors:r}){if(e.type==="text")return;const a=fe(e);if(!a){if(t.length<=1)return;r.push(p("missing_card_analytics_source","Multi-dataset dashboard cards must include analytics intent with a source so the materializer can choose the correct dataset.",e.id));return}t.some(o=>z(o,a))||r.push(p("invalid_card_analytics_source","Dashboard cards with an explicit analytics source must use one of the selected datasets.",e.id))}function q(e){return e.map(t=>t==null?void 0:t.source).filter(t=>!!t)}function L(e){return Array.isArray(e)?e.filter(t=>!!(t&&typeof t=="object")):[]}function se(e){return Array.isArray(e)?e.filter(t=>!!(t&&typeof t=="object")):[]}function Ee(e){var r,a;if(!e)return[];const t=[e.source];return e.kind==="metric"?t.push(...q([...L(e.measures),e.primaryMeasure,e.dateField,...L(e.dimensions),...se(e.filters).map(o=>o.field)])):e.kind==="records"?t.push(...q([...L(e.fields),e.dateField,(r=e.orderBy)==null?void 0:r.field,...se(e.filters).map(o=>o.field)])):e.kind==="inputOptions"?(((a=e.population)==null?void 0:a.kind)==="related_population"&&t.push(e.population.baseSource),t.push(...q([e.labelField,e.valueField,e.searchField,...e.disambiguationFields||[]]))):e.kind==="sql"&&t.push(...q(e.fields||[])),t}function me({card:e,datasets:t,errors:r}){if(e.type!=="text"){for(const a of Ee(e.analyticsIntent))if(a&&!t.some(o=>z(o,a))){r.push(p("invalid_card_query_source","Dashboard card query field references must use one of the selected datasets.",e.id));return}}}function be({card:e,errors:t}){if(e.type==="text"||!e.analyticsIntent)return;const r=w.validateSemaphorAnalyticsIntent(e.analyticsIntent);if(!r.ok)for(const a of r.errors)t.push(p(a.code,a.path?`${a.path}: ${a.message}`:a.message,e.id))}function ge({datasets:e,errors:t,requireAtLeastOne:r}){const a=pe({datasets:e,requireAtLeastOne:r});if(!a.ok){if(a.issue==="invalid_dataset_count"){t.push(p("invalid_dataset_count","Dashboard authoring requires at least one selected dataset."));return}t.push(p("invalid_multi_dataset_scope","Multi-dataset dashboard authoring is limited to semantic datasets from one domain."))}}function Ie({input:e,errors:t}){var r;(r=e.filter.sql)!=null&&r.trim()&&t.push(p("generated_filter_sql_out_of_scope",`Generated dashboard filter "${e.label}" must use grounded filter configuration; custom SQL is outside the dashboard-authoring contract.`))}function ye(e){var f,g;const t=[];if(!e||typeof e!="object")return{ok:!1,errors:[p("invalid_plan","Dashboard plan must be a structured object.")],warnings:[]};const r=e,a=[...r.warnings||[]];r.version!==1&&t.push(p("invalid_version","Dashboard plan version must be 1.")),(f=r.title)!=null&&f.trim()||t.push(p("missing_title","Dashboard plan needs a title."));const o=Array.isArray(r.datasets)?r.datasets:[],n=Array.isArray(r.sheets)?r.sheets:[];ge({datasets:o,errors:t,requireAtLeastOne:!0}),n.length!==1&&t.push(p("invalid_sheet_count","MVP dashboard authoring creates exactly one dashboard sheet."));const i=n[0];i&&i.kind!=="dashboard"&&t.push(p("invalid_sheet_kind",'Generated sheet must use kind "dashboard".'));const d=(i==null?void 0:i.cards)||[];d.length>k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS&&t.push(p("too_many_cards",`Generated dashboards can contain at most ${k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS} cards.`));const s=E(d.map(l=>l.id));s&&t.push(p("duplicate_card_id",`Duplicate generated card id: ${s}.`));const u=E(d.map(l=>l.frameId));u&&t.push(p("duplicate_frame_id",`Duplicate generated frame id: ${u}.`));for(const l of d)(g=l.title)!=null&&g.trim()||t.push(p("missing_card_title","Card title is required.",l.id)),l.type==="custom"&&t.push(p("custom_visual_out_of_scope","Whole-dashboard authoring supports built-in visual types only.",l.id)),l.type!=="text"&&!l.analyticsIntent&&a.push(p("missing_analytics_intent","Non-text card has no analytics intent and may be skipped by the app layer.",l.id)),he({card:l,datasets:o,errors:t}),be({card:l,errors:t}),me({card:l,datasets:o,errors:t});const h=Array.isArray(r.filterInputs)?r.filterInputs:[],y=h.map(l=>l.id),D=E(y);D&&t.push(p("duplicate_input_id",`Duplicate dashboard input id: ${D}.`));const C=h.map(l=>l.variableName).filter(Boolean)||[],_=E(C);_&&t.push(p("duplicate_input_variable",`Duplicate dashboard input variable name: ${_}.`));for(const l of h)Ie({input:l,errors:t});const c=Array.isArray(r.calculatedFields)?r.calculatedFields:[];for(const l of c)l.scope==="domain"&&l.reuseOnly!==!0&&t.push(p("domain_calculated_field_create_out_of_scope",`Creating domain calculated field "${l.name}" is outside MVP.`));return{ok:t.length===0,errors:t,warnings:a}}function _e(e){var i;const t=[];if(!e||typeof e!="object")return{ok:!1,errors:[p("invalid_change_plan","Dashboard change plan must be a structured object.")],warnings:[]};const r=e,a=[...r.warnings||[]];r.version!==1&&t.push(p("invalid_version","Dashboard change plan version must be 1.")),(i=r.dashboardId)!=null&&i.trim()||t.push(p("missing_dashboard_id","Dashboard change plan needs a dashboard id."));const o=Array.isArray(r.datasets)?r.datasets:[],n=Array.isArray(r.operations)?r.operations:[];ge({datasets:o,errors:t,requireAtLeastOne:!1});for(const d of n){if(d.kind==="unsupported"){a.push(p("unsupported_operation",d.reason||d.requestedAction));continue}d.kind==="addCard"&&d.card.type==="custom"&&t.push(p("custom_visual_out_of_scope","Whole-dashboard authoring supports built-in visual types only.",d.card.id)),d.kind==="addCard"&&(he({card:d.card,datasets:o,errors:t}),be({card:d.card,errors:t}),me({card:d.card,datasets:o,errors:t})),d.kind==="addFilterInput"&&Ie({input:d.input,errors:t}),d.kind==="addCalculatedField"&&d.field.scope==="domain"&&d.field.reuseOnly!==!0&&t.push(p("domain_calculated_field_create_out_of_scope",`Creating domain calculated field "${d.field.name}" is outside MVP.`))}return{ok:t.length===0,errors:t,warnings:a}}const qe={lg:48,md:36,sm:24,xs:12,xxs:6};function ze(e,t){let r=0,a=0,o=0;return e.map(n=>{const i=Math.min(n.w,t);r>0&&r+i>t&&(r=0,a+=o,o=0);const d={i:n.frameId,x:r,y:a,w:i,h:n.h,minW:Math.min(n.minW,t),minH:n.minH,static:!1};return r+=i,o=Math.max(o,n.h),d})}function He(e){const t=[...e].sort((s,u)=>s.priority-u.priority),r=t.filter(s=>s.role==="kpi"),a=t.filter(s=>s.role==="chart"),o=t.filter(s=>s.role==="table"),n=t.filter(s=>s.role==="text"),i=n.slice(0,1),d=n.slice(i.length);return{kpis:r,introText:i,charts:a,tables:o,supportingText:d}}function Ve(e,t,r){return t==="xxs"||t==="xs"?r:t==="sm"?Math.min(12,r):t==="md"?e<=1||e===2?18:12:e<=1||e===2?24:e===3?16:12}function Le(e,t,r,a){return r==="xxs"||r==="xs"||r==="sm"||r==="md"||t===1||t%2===1&&e===0?a:a/2}function je(e){const{item:t,band:r,index:a,bandCount:o,breakpoint:n,columns:i}=e;return r==="kpi"?{...t,band:r,w:Ve(o,n,i),h:15,minW:Math.min(6,i),minH:12}:r==="table"?{...t,band:r,w:i,h:n==="xxs"||n==="xs"?34:38,minW:Math.min(12,i),minH:18}:r==="introText"?{...t,band:r,w:i,h:n==="xxs"||n==="xs"?12:10,minW:Math.min(12,i),minH:8}:r==="supportingText"?{...t,band:r,w:n==="lg"?i/2:i,h:n==="xxs"||n==="xs"?12:10,minW:Math.min(12,i),minH:8}:{...t,band:r,w:Le(a,o,n,i),h:n==="xxs"||n==="xs"?28:30,minW:Math.min(12,i),minH:16}}function N(e,t,r,a){return e.map((o,n)=>je({item:o,band:t,index:n,bandCount:e.length,breakpoint:r,columns:a}))}function H(e){const t=He(e);return Object.fromEntries(k.DASHBOARD_AUTHORING_BREAKPOINTS.map(r=>{const a=qe[r],o=[...N(t.introText,"introText",r,a),...N(t.kpis,"kpi",r,a),...N(t.charts,"chart",r,a),...N(t.tables,"table",r,a),...N(t.supportingText,"supportingText",r,a)];return[r,ze(o,a)]}))}function Ge(e){const t=w.normalizeAnalyticsCatalogDataType(e);return t==="datetime"?"date":t==="unknown"?"string":t}function Ke(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function Ue(e){return Ke(e)&&typeof e.filterId=="string"&&typeof e.operation=="string"&&Array.isArray(e.values)}function We(e){return e.filter(t=>typeof t=="string"||typeof t=="number")}function Xe(e){return e.filter(t=>t instanceof Date||typeof t=="string")}function Q(e,t){if(t===void 0)return;const r=Ge(e.dataType),a=e.operation||"in";if(Ue(t))return{...t,filterId:e.id,name:t.name||e.column,valueType:r,dataType:e.dataType,fieldMeta:e.fieldMeta,semanticContext:e.semanticContext};if(a==="is null"||a==="is not null")return{filterId:e.id,name:e.column,operation:a,valueType:r,values:[],dataType:e.dataType,fieldMeta:e.fieldMeta,semanticContext:e.semanticContext};const o=Array.isArray(t)?t:[t],n=r==="date"?Xe(o):We(o);if(n.length!==0&&!((a==="between"||a==="not between")&&n.length<2))return{filterId:e.id,name:e.column,operation:a,valueType:r,values:n,dataType:e.dataType,fieldMeta:e.fieldMeta,semanticContext:e.semanticContext}}function Se(e,t,r){return r?{code:e,message:t,cardId:r}:{code:e,message:t}}function Ye(e,t,r){const a=(t||[]).filter(o=>o.scope==="card"&&o.targetCardId===r).map(o=>o.field).filter(Boolean);return a.length===0?e:{...e,calculatedFields:[...e.calculatedFields||[],...a]}}function W(e,t){return Array.from(new Set((e||[]).map(r=>t.get(r)).filter(r=>!!r)))}function Qe(e,t){if((e==null?void 0:e.kind)!=="cards")return e;const r=W(e.cardIds,t);return r.length>0?{...e,cardIds:r}:null}function Je(e,t){return!e.applyToCardIds&&!e.excludeCardIds?e:{...e,...e.applyToCardIds?{applyToCardIds:W(e.applyToCardIds,t)}:{},...e.excludeCardIds?{excludeCardIds:W(e.excludeCardIds,t)}:{}}}function Ze(e,t){const r={},a=[];return{inputs:(e.filterInputs||[]).flatMap((n,i)=>{const d=Qe(n.scope,t);if(d===null)return a.push(Se("filter_input_scope_empty",`Filter input "${n.label}" was skipped because all scoped cards were skipped during query validation.`)),[];const s=Q(n.filter,n.defaultValue);return s&&(r.shared??(r.shared={}),r.shared[n.id]={status:"set",value:{kind:"filter",filterValue:s}}),[{id:n.id,kind:"filter",label:n.label,variableName:n.variableName,scope:d||{kind:"allSheets",sheetKinds:["dashboard"]},runtimeScope:"shared",presentation:{placement:"toolbar",order:i},exports:["label","value","start","end","range"],filter:Je(n.filter,t)}]}),warnings:a,defaultInputValues:r.shared&&Object.keys(r.shared).length>0?r:void 0}}function et(e){var C,_;const t=ye(e.plan);if(!t.ok)throw new Error(t.errors.map(c=>c.message).join(`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("../chunks/contracts-CtB2VONT.cjs"),A=require("../chunks/temporal-bucket-authoring-C6sZAVqS.cjs"),w=require("../chunks/validators-DO-YuzgO.cjs");require("../chunks/analyze-result-contract-CMwVg9w2.cjs");require("../value-format-preferences/index.cjs");const Te=require("../chunks/operators-DrTQsJXv.cjs"),X=require("../chunks/canonical-result-keys-Cb96edol.cjs"),m=require("../chunks/dashboard-filter-value-compatibility-Bnl2lsng.cjs");function S(e){return e&&typeof e=="object"?e:null}function T(e){return typeof e=="string"?e:null}function de(e){var t,r,a;return!!(e&&typeof e=="object")&&(((t=S(e))==null?void 0:t.kind)==="semantic"||((r=S(e))==null?void 0:r.kind)==="physical"||((a=S(e))==null?void 0:a.kind)==="sql")}function M(e){return de(e)?e.kind==="semantic"?!!(e.domainId&&e.datasetName):e.kind==="physical"?!!(e.connectionId&&e.tableName):!1:!1}function Fe(e){return w.semaphorSourceIdentityKey(e)}function Y(e,t){return w.semaphorSourcesReferToSameDataset(e,t)}function ce(e,t){return w.preferSemaphorSourceMetadata(e,t)}function B(e){const t=[];for(const r of e){const a=t.findIndex(o=>Y(o,r));a===-1?t.push(r):t[a]=ce(t[a],r)}return t}function ke(e){return B(e)[0]}function K(e,t){return e.kind!=="semantic"||e.connectionId||(t==null?void 0:t.kind)!=="semantic"||!w.semaphorSourcesReferToSameDataset(e,t)||!t.connectionId?e:{...e,connectionId:t.connectionId}}function U(e){return M(e)?e:void 0}function oe(e,t){if(!(e.kind!=="semantic"||e.connectionId))return t.find(r=>(r==null?void 0:r.kind)==="semantic"&&w.semaphorSourcesReferToSameDataset(e,r)&&!!r.connectionId)}function v(e,t){const r=U(e==null?void 0:e.source);return r?K(r,t):void 0}function le({explicitSource:e,field:t,defaultSource:r,fallbackSources:a}){const o=[r,...a||[]],n=U(e),i=n?K(n,oe(n,o)):void 0;if(i)return i;if(e!==void 0)return;const d=v(t,r),s=d?K(d,oe(d,o)):void 0;if(s)return s;if((t==null?void 0:t.source)===void 0)return U(r)}function xe(e,t){if(!(e!=null&&e.name)||!(t!=null&&t.name)||e.name!==t.name)return!1;const r=v(e),a=v(t);return!r||!a?!0:Y(r,a)}function x(e){var t;return T((t=S(e))==null?void 0:t.kind)}function ue(e){var t,r;return x(e)!=="semantic"?null:((r=T((t=S(e))==null?void 0:t.domainId))==null?void 0:r.trim())||null}function Re(e){var t;return x(e)!=="semantic"?null:T((t=S(e))==null?void 0:t.datasetName)}function Me(e){var t;return x(e)!=="semantic"?null:T((t=S(e))==null?void 0:t.datasetId)}function Ne(e){var t;return x(e)!=="physical"?null:T((t=S(e))==null?void 0:t.connectionId)}function Oe(e){var t;return x(e)!=="physical"?null:T((t=S(e))==null?void 0:t.tableName)}function Be(e){var t;return x(e)!=="physical"?"":T((t=S(e))==null?void 0:t.databaseName)||""}function $e(e){var t;return x(e)!=="physical"?"":T((t=S(e))==null?void 0:t.schemaName)||""}function fe(e){if(e.analyticsIntent&&typeof e.analyticsIntent=="object"&&"source"in e.analyticsIntent)return e.analyticsIntent.source}function pe({datasets:e,requireAtLeastOne:t}){if(t&&e.length<1)return{ok:!1,issue:"invalid_dataset_count"};if(e.length<=1)return{ok:!0};const r=e.map(ue),a=new Set(r.filter(Boolean));return r.some(o=>!o)||a.size!==1?{ok:!1,issue:"invalid_multi_dataset_scope"}:{ok:!0}}function z(e,t){if(!t)return!1;if(t.kind==="semantic"){const r=Me(e);return ue(e)===t.domainId?r&&t.datasetId?r===t.datasetId:Re(e)===t.datasetName:!1}return t.kind==="physical"?Ne(e)===t.connectionId&&Oe(e)===t.tableName&&Be(e)===(t.databaseName||"")&&$e(e)===(t.schemaName||""):!1}function Pe(e,t){return e.find(r=>z(r,t))}function p(e,t,r){return r?{code:e,message:t,cardId:r}:{code:e,message:t}}function E(e){const t=new Set;for(const r of e){if(t.has(r))return r;t.add(r)}return null}function he({card:e,datasets:t,errors:r}){if(e.type==="text")return;const a=fe(e);if(!a){if(t.length<=1)return;r.push(p("missing_card_analytics_source","Multi-dataset dashboard cards must include analytics intent with a source so the materializer can choose the correct dataset.",e.id));return}t.some(o=>z(o,a))||r.push(p("invalid_card_analytics_source","Dashboard cards with an explicit analytics source must use one of the selected datasets.",e.id))}function q(e){return e.map(t=>t==null?void 0:t.source).filter(t=>!!t)}function L(e){return Array.isArray(e)?e.filter(t=>!!(t&&typeof t=="object")):[]}function se(e){return Array.isArray(e)?e.filter(t=>!!(t&&typeof t=="object")):[]}function Ee(e){var r,a;if(!e)return[];const t=[e.source];return e.kind==="metric"?t.push(...q([...L(e.measures),e.primaryMeasure,e.dateField,...L(e.dimensions),...se(e.filters).map(o=>o.field)])):e.kind==="records"?t.push(...q([...L(e.fields),e.dateField,(r=e.orderBy)==null?void 0:r.field,...se(e.filters).map(o=>o.field)])):e.kind==="inputOptions"?(((a=e.population)==null?void 0:a.kind)==="related_population"&&t.push(e.population.baseSource),t.push(...q([e.labelField,e.valueField,e.searchField,...e.disambiguationFields||[]]))):e.kind==="sql"&&t.push(...q(e.fields||[])),t}function me({card:e,datasets:t,errors:r}){if(e.type!=="text"){for(const a of Ee(e.analyticsIntent))if(a&&!t.some(o=>z(o,a))){r.push(p("invalid_card_query_source","Dashboard card query field references must use one of the selected datasets.",e.id));return}}}function be({card:e,errors:t}){if(e.type==="text"||!e.analyticsIntent)return;const r=w.validateSemaphorAnalyticsIntent(e.analyticsIntent);if(!r.ok)for(const a of r.errors)t.push(p(a.code,a.path?`${a.path}: ${a.message}`:a.message,e.id))}function ge({datasets:e,errors:t,requireAtLeastOne:r}){const a=pe({datasets:e,requireAtLeastOne:r});if(!a.ok){if(a.issue==="invalid_dataset_count"){t.push(p("invalid_dataset_count","Dashboard authoring requires at least one selected dataset."));return}t.push(p("invalid_multi_dataset_scope","Multi-dataset dashboard authoring is limited to semantic datasets from one domain."))}}function Ie({input:e,errors:t}){var r;(r=e.filter.sql)!=null&&r.trim()&&t.push(p("generated_filter_sql_out_of_scope",`Generated dashboard filter "${e.label}" must use grounded filter configuration; custom SQL is outside the dashboard-authoring contract.`))}function ye(e){var f,g;const t=[];if(!e||typeof e!="object")return{ok:!1,errors:[p("invalid_plan","Dashboard plan must be a structured object.")],warnings:[]};const r=e,a=[...r.warnings||[]];r.version!==1&&t.push(p("invalid_version","Dashboard plan version must be 1.")),(f=r.title)!=null&&f.trim()||t.push(p("missing_title","Dashboard plan needs a title."));const o=Array.isArray(r.datasets)?r.datasets:[],n=Array.isArray(r.sheets)?r.sheets:[];ge({datasets:o,errors:t,requireAtLeastOne:!0}),n.length!==1&&t.push(p("invalid_sheet_count","MVP dashboard authoring creates exactly one dashboard sheet."));const i=n[0];i&&i.kind!=="dashboard"&&t.push(p("invalid_sheet_kind",'Generated sheet must use kind "dashboard".'));const d=(i==null?void 0:i.cards)||[];d.length>k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS&&t.push(p("too_many_cards",`Generated dashboards can contain at most ${k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS} cards.`));const s=E(d.map(l=>l.id));s&&t.push(p("duplicate_card_id",`Duplicate generated card id: ${s}.`));const u=E(d.map(l=>l.frameId));u&&t.push(p("duplicate_frame_id",`Duplicate generated frame id: ${u}.`));for(const l of d)(g=l.title)!=null&&g.trim()||t.push(p("missing_card_title","Card title is required.",l.id)),l.type==="custom"&&t.push(p("custom_visual_out_of_scope","Whole-dashboard authoring supports built-in visual types only.",l.id)),l.type!=="text"&&!l.analyticsIntent&&a.push(p("missing_analytics_intent","Non-text card has no analytics intent and may be skipped by the app layer.",l.id)),he({card:l,datasets:o,errors:t}),be({card:l,errors:t}),me({card:l,datasets:o,errors:t});const h=Array.isArray(r.filterInputs)?r.filterInputs:[],y=h.map(l=>l.id),D=E(y);D&&t.push(p("duplicate_input_id",`Duplicate dashboard input id: ${D}.`));const C=h.map(l=>l.variableName).filter(Boolean)||[],_=E(C);_&&t.push(p("duplicate_input_variable",`Duplicate dashboard input variable name: ${_}.`));for(const l of h)Ie({input:l,errors:t});const c=Array.isArray(r.calculatedFields)?r.calculatedFields:[];for(const l of c)l.scope==="domain"&&l.reuseOnly!==!0&&t.push(p("domain_calculated_field_create_out_of_scope",`Creating domain calculated field "${l.name}" is outside MVP.`));return{ok:t.length===0,errors:t,warnings:a}}function _e(e){var i;const t=[];if(!e||typeof e!="object")return{ok:!1,errors:[p("invalid_change_plan","Dashboard change plan must be a structured object.")],warnings:[]};const r=e,a=[...r.warnings||[]];r.version!==1&&t.push(p("invalid_version","Dashboard change plan version must be 1.")),(i=r.dashboardId)!=null&&i.trim()||t.push(p("missing_dashboard_id","Dashboard change plan needs a dashboard id."));const o=Array.isArray(r.datasets)?r.datasets:[],n=Array.isArray(r.operations)?r.operations:[];ge({datasets:o,errors:t,requireAtLeastOne:!1});for(const d of n){if(d.kind==="unsupported"){a.push(p("unsupported_operation",d.reason||d.requestedAction));continue}d.kind==="addCard"&&d.card.type==="custom"&&t.push(p("custom_visual_out_of_scope","Whole-dashboard authoring supports built-in visual types only.",d.card.id)),d.kind==="addCard"&&(he({card:d.card,datasets:o,errors:t}),be({card:d.card,errors:t}),me({card:d.card,datasets:o,errors:t})),d.kind==="addFilterInput"&&Ie({input:d.input,errors:t}),d.kind==="addCalculatedField"&&d.field.scope==="domain"&&d.field.reuseOnly!==!0&&t.push(p("domain_calculated_field_create_out_of_scope",`Creating domain calculated field "${d.field.name}" is outside MVP.`))}return{ok:t.length===0,errors:t,warnings:a}}const qe={lg:48,md:36,sm:24,xs:12,xxs:6};function ze(e,t){let r=0,a=0,o=0;return e.map(n=>{const i=Math.min(n.w,t);r>0&&r+i>t&&(r=0,a+=o,o=0);const d={i:n.frameId,x:r,y:a,w:i,h:n.h,minW:Math.min(n.minW,t),minH:n.minH,static:!1};return r+=i,o=Math.max(o,n.h),d})}function He(e){const t=[...e].sort((s,u)=>s.priority-u.priority),r=t.filter(s=>s.role==="kpi"),a=t.filter(s=>s.role==="chart"),o=t.filter(s=>s.role==="table"),n=t.filter(s=>s.role==="text"),i=n.slice(0,1),d=n.slice(i.length);return{kpis:r,introText:i,charts:a,tables:o,supportingText:d}}function Ve(e,t,r){return t==="xxs"||t==="xs"?r:t==="sm"?Math.min(12,r):t==="md"?e<=1||e===2?18:12:e<=1||e===2?24:e===3?16:12}function Le(e,t,r,a){return r==="xxs"||r==="xs"||r==="sm"||r==="md"||t===1||t%2===1&&e===0?a:a/2}function je(e){const{item:t,band:r,index:a,bandCount:o,breakpoint:n,columns:i}=e;return r==="kpi"?{...t,band:r,w:Ve(o,n,i),h:15,minW:Math.min(6,i),minH:12}:r==="table"?{...t,band:r,w:i,h:n==="xxs"||n==="xs"?34:38,minW:Math.min(12,i),minH:18}:r==="introText"?{...t,band:r,w:i,h:n==="xxs"||n==="xs"?12:10,minW:Math.min(12,i),minH:8}:r==="supportingText"?{...t,band:r,w:n==="lg"?i/2:i,h:n==="xxs"||n==="xs"?12:10,minW:Math.min(12,i),minH:8}:{...t,band:r,w:Le(a,o,n,i),h:n==="xxs"||n==="xs"?28:30,minW:Math.min(12,i),minH:16}}function N(e,t,r,a){return e.map((o,n)=>je({item:o,band:t,index:n,bandCount:e.length,breakpoint:r,columns:a}))}function H(e){const t=He(e);return Object.fromEntries(k.DASHBOARD_AUTHORING_BREAKPOINTS.map(r=>{const a=qe[r],o=[...N(t.introText,"introText",r,a),...N(t.kpis,"kpi",r,a),...N(t.charts,"chart",r,a),...N(t.tables,"table",r,a),...N(t.supportingText,"supportingText",r,a)];return[r,ze(o,a)]}))}function Ge(e){const t=w.normalizeAnalyticsCatalogDataType(e);return t==="datetime"?"date":t==="unknown"?"string":t}function Ke(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function Ue(e){return Ke(e)&&typeof e.filterId=="string"&&typeof e.operation=="string"&&Array.isArray(e.values)}function We(e){return e.filter(t=>typeof t=="string"||typeof t=="number")}function Xe(e){return e.filter(t=>t instanceof Date||typeof t=="string")}function Q(e,t){if(t===void 0)return;const r=Ge(e.dataType),a=e.operation||"in";if(Ue(t))return{...t,filterId:e.id,name:t.name||e.column,valueType:r,dataType:e.dataType,fieldMeta:e.fieldMeta,semanticContext:e.semanticContext};if(a==="is null"||a==="is not null")return{filterId:e.id,name:e.column,operation:a,valueType:r,values:[],dataType:e.dataType,fieldMeta:e.fieldMeta,semanticContext:e.semanticContext};const o=Array.isArray(t)?t:[t],n=r==="date"?Xe(o):We(o);if(n.length!==0&&!((a==="between"||a==="not between")&&n.length<2))return{filterId:e.id,name:e.column,operation:a,valueType:r,values:n,dataType:e.dataType,fieldMeta:e.fieldMeta,semanticContext:e.semanticContext}}function Se(e,t,r){return r?{code:e,message:t,cardId:r}:{code:e,message:t}}function Ye(e,t,r){const a=(t||[]).filter(o=>o.scope==="card"&&o.targetCardId===r).map(o=>o.field).filter(Boolean);return a.length===0?e:{...e,calculatedFields:[...e.calculatedFields||[],...a]}}function W(e,t){return Array.from(new Set((e||[]).map(r=>t.get(r)).filter(r=>!!r)))}function Qe(e,t){if((e==null?void 0:e.kind)!=="cards")return e;const r=W(e.cardIds,t);return r.length>0?{...e,cardIds:r}:null}function Je(e,t){return!e.applyToCardIds&&!e.excludeCardIds?e:{...e,...e.applyToCardIds?{applyToCardIds:W(e.applyToCardIds,t)}:{},...e.excludeCardIds?{excludeCardIds:W(e.excludeCardIds,t)}:{}}}function Ze(e,t){const r={},a=[];return{inputs:(e.filterInputs||[]).flatMap((n,i)=>{const d=Qe(n.scope,t);if(d===null)return a.push(Se("filter_input_scope_empty",`Filter input "${n.label}" was skipped because all scoped cards were skipped during query validation.`)),[];const s=Q(n.filter,n.defaultValue);return s&&(r.shared??(r.shared={}),r.shared[n.id]={status:"set",value:{kind:"filter",filterValue:s}}),[{id:n.id,kind:"filter",label:n.label,variableName:n.variableName,scope:d||{kind:"allSheets",sheetKinds:["dashboard"]},runtimeScope:"shared",presentation:{placement:"toolbar",order:i},exports:["label","value","start","end","range"],filter:Je(n.filter,t)}]}),warnings:a,defaultInputValues:r.shared&&Object.keys(r.shared).length>0?r:void 0}}function et(e){var C,_;const t=ye(e.plan);if(!t.ok)throw new Error(t.errors.map(c=>c.message).join(`
|
|
2
2
|
`)||"Dashboard plan is invalid.");const r=e.plan.sheets[0],a=[...t.warnings],o=[],n=new Map(e.cardArtifacts.map(c=>[c.planCardId,c])),i=new Map(e.cardArtifacts.map(c=>[c.planCardId,c.card.id])),d=[];for(const c of r.cards){const f=n.get(c.id);if(!f){const l=Se("missing_card_artifact",`Card "${c.title}" was skipped because no generated artifact was supplied.`,c.id);o.push(l);continue}a.push(...f.warnings||[]);const g=Ye(f.card,e.plan.calculatedFields,c.id);d.push({id:c.frameId,cards:[g],activeCardId:g.id})}if(d.length===0)throw new Error("Dashboard plan did not produce any persistable cards.");const{inputs:s,defaultInputValues:u,warnings:h}=Ze(e.plan,i);a.push(...h);const y=H(r.cards.filter(c=>d.some(f=>f.id===c.frameId)).map(c=>({frameId:c.frameId,priority:c.priority,role:c.role})));return{dashboard:{id:e.dashboardId,title:e.plan.title,description:e.plan.description||"",sheets:[{id:r.id,kind:"dashboard",title:r.title,description:r.description,frames:d,layouts:y,calculatedFields:(C=e.plan.calculatedFields)==null?void 0:C.filter(c=>c.scope==="sheet"&&c.field).map(c=>c.field)}],calculatedFields:(_=e.plan.calculatedFields)==null?void 0:_.filter(c=>c.scope==="dashboard"&&c.field).map(c=>c.field),inputs:s,...u?{defaultInputValues:u}:{}},warnings:a,skippedOperations:o}}function R(e,t,r){return r?{code:e,message:t,cardId:r}:{code:e,message:t}}function tt(e){return JSON.parse(JSON.stringify(e))}function rt(e){var t;return(t=e.sheets)==null?void 0:t.find(r=>(r.kind||"dashboard")==="dashboard")}function j(e,t){var r;for(const a of e.sheets||[])for(const o of a.frames||[]){const n=(r=o.cards)==null?void 0:r.find(i=>i.id===t);if(n)return{sheet:a,frame:o,card:n}}return null}function Ae(e){var r,a;const t=(a=(r=e.cards)==null?void 0:r[0])==null?void 0:a.type;return t==="kpi"?"kpi":t==="table"||t==="detailTable"||t==="pivotTable"?"table":t==="text"?"text":"chart"}function at(e){var t;return new Map((((t=e.layouts)==null?void 0:t.lg)||[]).map((r,a)=>[r.i,a]))}function De(e,t=new Map){const r=at(e),a=Math.max(r.size,t.size),o=(e.frames||[]).map((n,i)=>({frameId:n.id,role:Ae(n),priority:t.get(n.id)??r.get(n.id)??a+i}));e.layouts=H(o)}function nt(e){return Object.values(e.layouts||{}).some(t=>t.length>0)}function it(e,t){if(!nt(e)){De(e);return}const r=H([{frameId:t.id,role:Ae(t),priority:0}]);e.layouts??(e.layouts={});for(const[a,o]of Object.entries(r)){const n=e.layouts[a]||[];if(n.some(s=>s.i===t.id))continue;const i=o[0];if(!i)continue;const d=n.reduce((s,u)=>Math.max(s,u.y+u.h),0);e.layouts[a]=[...n,{...i,y:d}]}}function ot(e,t){var a;const r=Q(t.filter,t.defaultValue);r&&(e.defaultInputValues??(e.defaultInputValues={}),(a=e.defaultInputValues).shared??(a.shared={}),e.defaultInputValues.shared[t.id]={status:"set",value:{kind:"filter",filterValue:r}})}function st(e){var d;const t=_e(e.changePlan);if(!t.ok)throw new Error(t.errors.map(s=>s.message).join(`
|
|
3
|
-
`)||"Dashboard change plan is invalid.");const r=tt(e.dashboard),a=[...t.warnings],o=[],n=new Map(e.cardArtifacts.map(s=>[s.planCardId,s])),i=rt(r);if(!i)throw new Error("Dashboard has no editable dashboard sheet.");i.frames??(i.frames=[]);for(const s of e.changePlan.operations)switch(s.kind){case"addCard":{if((i.frames||[]).reduce((D,C)=>{var _;return D+(((_=C.cards)==null?void 0:_.length)||0)},0)>=k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS){o.push(R("generated_card_limit_reached",`AI refinement is capped at ${k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS} cards.`,s.card.id));break}const h=n.get(s.card.id);if(!h){o.push(R("missing_card_artifact",`Card "${s.card.title}" was skipped because no generated artifact was supplied.`,s.card.id));break}const y={id:s.card.frameId,cards:[h.card],activeCardId:h.card.id};i.frames.push(y),it(i,y);break}case"addFilterInput":{r.inputs??(r.inputs=[]);const u={id:s.input.id,kind:"filter",label:s.input.label,variableName:s.input.variableName,scope:s.input.scope||{kind:"allSheets",sheetKinds:["dashboard"]},runtimeScope:"shared",presentation:{placement:"toolbar",order:r.inputs.length},exports:["label","value","start","end","range"],filter:s.input.filter};r.inputs.push(u),ot(r,s.input);break}case"addCalculatedField":{if(s.field.scope==="dashboard"&&s.field.field)r.calculatedFields??(r.calculatedFields=[]),r.calculatedFields.push(s.field.field);else if(s.field.scope==="sheet"&&s.field.field)i.calculatedFields??(i.calculatedFields=[]),i.calculatedFields.push(s.field.field);else if(s.field.scope==="card"&&s.field.field){const u=s.field.targetCardId?j(r,s.field.targetCardId):null;u?((d=u.card).calculatedFields??(d.calculatedFields=[]),u.card.calculatedFields.push(s.field.field)):o.push(R("missing_calculated_field_target",`Calculated field "${s.field.name}" needs a valid target card.`))}break}case"renameCard":{const u=j(r,s.cardId);if(!u){o.push(R("card_not_found",`Card "${s.cardId}" could not be renamed because it was not found.`,s.cardId));break}u.card.title=s.title,s.description!==void 0&&(u.card.description=s.description);break}case"reorderCards":{const u=new Map;for(let h=0;h<s.cardIds.length;h+=1){const y=s.cardIds[h],D=j(r,y);D&&u.set(D.frame.id,h)}De(i,u);break}case"reuseCalculatedField":a.push(R("reused_calculated_field",`Calculated field "${s.fieldId}" is reused by reference.`));break;case"unsupported":o.push(R("unsupported_operation",s.reason||s.requestedAction));break}return{dashboard:r,warnings:a,skippedOperations:o}}function I(e,t,r){return r?{code:e,message:t,cardId:r}:{code:e,message:t}}function O(e,t){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||t}function Ce(e,t){if(!t.has(e))return t.add(e),e;let r=2,a=`${e}-${r}`;for(;t.has(a);)r+=1,a=`${e}-${r}`;return t.add(a),a}function $(e){return!!(e&&typeof e=="object")}function ve(e){return Array.isArray(e.inputs)?e.inputs.filter(t=>$(t)&&typeof t.id=="string"):[]}function J(e){return Array.isArray(e.sections)?e.sections.filter(t=>$(t)):[]}function Z(e){return Array.isArray(e.views)?e.views.filter(t=>$(t)):[]}function F(e){if(!Array.isArray(e))return[];const t=[];for(const r of e){const a=v(r);a&&t.push(a)}return t}function dt(e){var a,o,n;if(!e)return[];const t=[];if(M(e.source)&&t.push(e.source),e.kind==="metric"){t.push(...F(e.measures));const i=v(e.dateField);i&&t.push(i),t.push(...F(e.dimensions)),t.push(...F((a=e.filters)==null?void 0:a.map(d=>d.field)))}else if(e.kind==="records"){const i=v(e.dateField);i&&t.push(i),t.push(...F(e.fields)),t.push(...F((o=e.filters)==null?void 0:o.map(d=>d.field)))}else e.kind==="inputOptions"?(((n=e.population)==null?void 0:n.kind)==="related_population"&&M(e.population.baseSource)&&t.push(e.population.baseSource),t.push(...F([e.labelField,e.valueField,e.searchField,...e.disambiguationFields||[]].filter(i=>!!i)))):e.kind==="sql"&&t.push(...F(e.fields));const r="inputs"in e&&Array.isArray(e.inputs)?e.inputs:[];for(const i of r){const d=v(i.field);d&&t.push(d)}return t}function ct(e){const t=[];for(const r of ve(e)){const a=v(r.field);a&&t.push(a)}for(const r of J(e))for(const a of Z(r))t.push(...dt(a.analytics));return t}function lt(e){var r;const t=[];for(const a of J(e))for(const o of Z(a))M((r=o.analytics)==null?void 0:r.source)&&t.push(o.analytics.source);return t}function ut(e,t){const r=B(e).filter(M);if(r.length===0)return t.push(I("missing_materializable_dataset","No semantic or physical source could be converted into the current dashboard authoring dataset reference.")),[];const a=r.every(n=>n.kind==="semantic"),o=Array.from(new Set(r.filter(n=>n.kind==="semantic").map(n=>n.domainId)));return r.length>1&&(!a||o.length!==1)?(t.push(I("multiple_datasets_out_of_scope","The dashboard authoring compiler supports multiple datasets only within one semantic domain; using the first source and deferring the rest.")),[r[0]]):r}function ft(e,t){const r=J(e),a=ve(e),o=B(ct(e)),n=B(lt(e));return{sections:r,inputs:a,sources:o,primarySources:n,defaultSource:n.length===1?n[0]:void 0,datasets:ut(o,t)}}function pt(e){return e&&w.validateSemaphorAnalyticsIntent(e).ok?e:void 0}function ht(e){var t;switch((t=e.presentation)==null?void 0:t.kind){case"kpi":return"kpi";case"lineChart":return"line";case"barChart":return"bar";case"areaChart":return"area";case"table":return"table";case"text":return"text";default:return null}}function mt(e){var t,r,a;return((t=e.presentation)==null?void 0:t.kind)==="kpi"?"kpi":((r=e.presentation)==null?void 0:r.kind)==="table"?"table":((a=e.presentation)==null?void 0:a.kind)==="text"?"text":"chart"}function bt(e){const t=Te.normalizeSemaphorInputOperator(e);switch(t){case"not_in":return"not in";case"not_between":return"not between";case"contains":return"like";case"not_contains":return"not like";default:return t||"in"}}function gt(e){return $(e.field)?e.field.dataType==="datetime"?"date":e.field.dataType||"string":"string"}function It(e){if(!(!e||e.kind!=="physical"))return[e.databaseName,e.schemaName,e.tableName].filter(Boolean).join(".")}function yt(e,t,r,a,o,n){if(e.kind!=="filter")return n.push(I("control_inputs_deferred",`Control input "${e.label}" is represented in the protocol but not yet materialized by the dashboard authoring adapter.`)),null;if(!$(e.field)||typeof e.field.name!="string")return n.push(I("filter_requires_field",`Filter "${e.label||e.id}" needs a field before the dashboard compiler can materialize it.`)),null;const i=le({explicitSource:void 0,field:e.field,defaultSource:t,fallbackSources:r}),d=(i==null?void 0:i.kind)==="semantic"||(i==null?void 0:i.kind)==="physical"?i.connectionId:void 0;if(!d)return n.push(I("filter_requires_connection_id",`Filter "${e.label}" needs a source connectionId before the dashboard compiler can materialize it.`)),null;const h={id:`filter-${Ce(O(e.id,e.field.name),o)}`,variableName:e.id,connectionId:d,title:e.label,column:e.field.name,dataType:gt(e),qualifiedTableName:It(i),sql:"",operation:bt(e.operator),type:e.multi===!1?"single":"multiple",location:"dashboard",displayMode:"toolbar",fieldMeta:(i==null?void 0:i.kind)==="semantic"?{name:e.field.name,qualifiedFieldName:e.field.name,dataType:e.field.dataType,role:e.field.role==="measure"?"metric":"groupby"}:void 0,semanticContext:(i==null?void 0:i.kind)==="semantic"?{semanticDomainId:i.domainId,connectionId:i.connectionId}:void 0};return{id:e.id,label:e.label,variableName:e.id,scope:a,filter:h,defaultValue:Q(h,e.defaultValue)}}function G(e){const t=[],r=[];for(const a of e.viewIds){const o=e.viewIdToCardId.get(a);o?t.push(o):r.push(a)}return r.length>0&&e.warnings.push(I("input_scope_view_not_found",`Filter "${e.inputLabel}" referenced unknown view ids: ${r.join(", ")}.`)),Array.from(new Set(t))}function _t(e){var a,o;if(!e.protocolScope){const n=Array.from(new Set(e.boundCardIds));return n.length>0&&n.length<e.allCardIds.length?{kind:"cards",cardIds:n}:void 0}if(e.protocolScope.level==="dashboard"){if(!((a=e.protocolScope.excludeViewIds)!=null&&a.length))return;const n=new Set(G({inputLabel:e.inputLabel,viewIds:e.protocolScope.excludeViewIds,viewIdToCardId:e.viewIdToCardId,warnings:e.warnings}));return{kind:"cards",cardIds:e.allCardIds.filter(i=>!n.has(i))}}if(e.protocolScope.level==="view"){const n=G({inputLabel:e.inputLabel,viewIds:e.protocolScope.viewIds,viewIdToCardId:e.viewIdToCardId,warnings:e.warnings});return n.length===0?(e.warnings.push(I("input_scope_has_no_materialized_cards",`Filter "${e.inputLabel}" was deferred because its view scope does not match any materialized cards.`)),null):{kind:"cards",cardIds:n}}const t=e.sectionIdToCardIds.get(e.protocolScope.sectionId)||[];if(t.length===0)return e.warnings.push(I("input_scope_section_not_found",`Filter "${e.inputLabel}" was deferred because section "${e.protocolScope.sectionId}" does not match any materialized cards.`)),null;if(!((o=e.protocolScope.excludeViewIds)!=null&&o.length))return{kind:"cards",cardIds:t};const r=new Set(G({inputLabel:e.inputLabel,viewIds:e.protocolScope.excludeViewIds,viewIdToCardId:e.viewIdToCardId,warnings:e.warnings}));return{kind:"cards",cardIds:t.filter(n=>!r.has(n))}}function St(e){var C,_,c;const t=[],r=w.validateSemaphorDashboardIntent(e);for(const f of r.warnings)t.push(I(f.code,f.message));for(const f of r.errors)t.push(I(f.code,f.message));const a=ft(e,t),o=[],n=new Map,i=new Map,d=new Map,s=new Set,u=new Set;let h=0;for(const[f,g]of a.sections.entries()){const l=typeof g.title=="string"?g.title:`Section ${f+1}`,ee=g.id||O(l,`section-${f+1}`);i.set(ee,[]);for(const[te,b]of Z(g).entries()){const re=ht(b),V=O(b.id||`${l}-${b.title||`View ${te+1}`}`,`card-${f+1}-${te+1}`);if(!re){t.push(I("unsupported_presentation",`Dashboard presentation "${((C=b.presentation)==null?void 0:C.kind)||"unknown"}" is not supported by the dashboard authoring adapter.`,`card-${V}`));continue}if(((_=b.analytics)==null?void 0:_.kind)==="sql"){t.push(I("sql_intent_deferred","SQL analytics intent is valid protocol, but the current dashboard authoring adapter only materializes semantic and physical config-card intents.",`card-${V}`));continue}const ae=Ce(V,s),P=`card-${ae}`;b.id&&n.set(b.id,P),(c=i.get(ee))==null||c.push(P);const we=b.analytics&&"inputs"in b.analytics?b.analytics.inputs:void 0;for(const ne of we||[]){const ie=d.get(ne.inputId)||[];ie.push(P),d.set(ne.inputId,ie)}o.push({id:P,frameId:`frame-${ae}`,title:b.title,description:b.description,type:re,role:mt(b),priority:h,section:l,analyticsIntent:pt(b.analytics),text:b.text}),h+=1}}const y=a.inputs.map(f=>{const g=_t({protocolScope:f.scope,inputLabel:f.label,allCardIds:o.map(l=>l.id),boundCardIds:d.get(f.id)||[],viewIdToCardId:n,sectionIdToCardIds:i,warnings:t});return g===null?null:yt(f,a.defaultSource,a.sources,g,u,t)}).filter(f=>!!f);return{plan:{version:1,id:`plan-${O(e.title,"dashboard")}`,title:e.title,description:e.description,datasets:a.datasets,sheets:[{id:`sheet-${O(e.title,"dashboard")}`,title:e.title,description:e.description,kind:"dashboard",cards:o}],filterInputs:y.length?y:void 0,warnings:t.length?t:void 0,unresolvedRequests:r.ok?void 0:r.errors.map(f=>f.message)},warnings:t}}exports.DASHBOARD_AUTHORING_BREAKPOINTS=k.DASHBOARD_AUTHORING_BREAKPOINTS;exports.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS=k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS;exports.AUTOMATIC_TEMPORAL_BUCKET_FORMAT=A.AUTOMATIC_TEMPORAL_BUCKET_FORMAT;exports.SEMAPHOR_CARTESIAN_CHART_TYPES=A.SEMAPHOR_CARTESIAN_CHART_TYPES;exports.getTemporalBucketAuthoringOptions=A.getTemporalBucketAuthoringOptions;exports.getTemporalBucketAuthoringSelection=A.getTemporalBucketAuthoringSelection;exports.isSemaphorCartesianChartType=A.isSemaphorCartesianChartType;exports.previewTemporalBucketAuthoringFormat=A.previewTemporalBucketAuthoringFormat;exports.reconcileTemporalBucketAuthoringFormat=A.reconcileTemporalBucketAuthoringFormat;exports.resolveTemporalBucketAuthoringFormat=A.resolveTemporalBucketAuthoringFormat;exports.resolveTemporalResultOwner=A.resolveTemporalResultOwner;exports.supportsCanonicalDashboardTemporalResult=A.supportsCanonicalDashboardTemporalResult;exports.transformComparisonDocument=A.transformComparisonDocument;exports.resolveCanonicalDetailResultRawKey=X.resolveCanonicalDetailResultRawKey;exports.resolveCanonicalResultOutputKey=X.resolveCanonicalResultOutputKey;exports.resolveCanonicalResultRawKey=X.resolveCanonicalResultRawKey;exports.DashboardFilterMappingContractError=m.DashboardFilterMappingContractError;exports.buildDashboardCardSourceIndex=m.buildDashboardCardSourceIndex;exports.createDashboardFilterBindingId=m.createDashboardFilterBindingId;exports.dashboardCardFilterSourceInventoryContains=m.dashboardCardFilterSourceInventoryContains;exports.dashboardFilterTargetMatchesLogicalValue=m.dashboardFilterTargetMatchesLogicalValue;exports.dashboardFilterValueTypeForDataType=m.dashboardFilterValueTypeForDataType;exports.findDashboardCardExecutableSource=m.findDashboardCardExecutableSource;exports.findDashboardCardPinnedCatalogSource=m.findDashboardCardPinnedCatalogSource;exports.findDashboardSqlPinnedCatalogSource=m.findDashboardSqlPinnedCatalogSource;exports.getDashboardFilterSubscriptionHint=m.getDashboardFilterSubscriptionHint;exports.hasDashboardFilterSubscription=m.hasDashboardFilterSubscription;exports.isDashboardFilterOperationCompatible=m.isDashboardFilterOperationCompatible;exports.normalizeDashboardInputs=m.normalizeDashboardInputs;exports.requireNormalizedDashboardInputs=m.requireNormalizedDashboardInputs;exports.resolveDashboardFilterAutomaticTarget=m.resolveDashboardFilterAutomaticTarget;exports.resolveDashboardSqlFilterTarget=m.resolveDashboardSqlFilterTarget;exports.applyDashboardChangePlan=st;exports.compileDashboardFromPlan=et;exports.compileResponsiveDashboardLayouts=H;exports.dashboardAuthoringDatasetMatchesSource=z;exports.dashboardAuthoringFieldsReferToSameTarget=xe;exports.dashboardAuthoringSourceFromField=v;exports.dashboardAuthoringSourceKey=Fe;exports.dashboardAuthoringSourcesReferToSameDataset=Y;exports.dashboardPlanFromSemaphorDashboardIntent=St;exports.findDashboardAuthoringDatasetForSource=Pe;exports.getDashboardAuthoringCardSource=fe;exports.isMaterializableDashboardAuthoringSource=M;exports.isSemaphorSourceRef=de;exports.mergeDashboardAuthoringSources=B;exports.preferDashboardAuthoringSourceMetadata=ce;exports.preferredDashboardAuthoringSource=ke;exports.resolveDashboardAuthoringSource=le;exports.validateDashboardAuthoringDatasetScope=pe;exports.validateDashboardChangePlan=_e;exports.validateDashboardPlan=ye;
|
|
3
|
+
`)||"Dashboard change plan is invalid.");const r=tt(e.dashboard),a=[...t.warnings],o=[],n=new Map(e.cardArtifacts.map(s=>[s.planCardId,s])),i=rt(r);if(!i)throw new Error("Dashboard has no editable dashboard sheet.");i.frames??(i.frames=[]);for(const s of e.changePlan.operations)switch(s.kind){case"addCard":{if((i.frames||[]).reduce((D,C)=>{var _;return D+(((_=C.cards)==null?void 0:_.length)||0)},0)>=k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS){o.push(R("generated_card_limit_reached",`AI refinement is capped at ${k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS} cards.`,s.card.id));break}const h=n.get(s.card.id);if(!h){o.push(R("missing_card_artifact",`Card "${s.card.title}" was skipped because no generated artifact was supplied.`,s.card.id));break}const y={id:s.card.frameId,cards:[h.card],activeCardId:h.card.id};i.frames.push(y),it(i,y);break}case"addFilterInput":{r.inputs??(r.inputs=[]);const u={id:s.input.id,kind:"filter",label:s.input.label,variableName:s.input.variableName,scope:s.input.scope||{kind:"allSheets",sheetKinds:["dashboard"]},runtimeScope:"shared",presentation:{placement:"toolbar",order:r.inputs.length},exports:["label","value","start","end","range"],filter:s.input.filter};r.inputs.push(u),ot(r,s.input);break}case"addCalculatedField":{if(s.field.scope==="dashboard"&&s.field.field)r.calculatedFields??(r.calculatedFields=[]),r.calculatedFields.push(s.field.field);else if(s.field.scope==="sheet"&&s.field.field)i.calculatedFields??(i.calculatedFields=[]),i.calculatedFields.push(s.field.field);else if(s.field.scope==="card"&&s.field.field){const u=s.field.targetCardId?j(r,s.field.targetCardId):null;u?((d=u.card).calculatedFields??(d.calculatedFields=[]),u.card.calculatedFields.push(s.field.field)):o.push(R("missing_calculated_field_target",`Calculated field "${s.field.name}" needs a valid target card.`))}break}case"renameCard":{const u=j(r,s.cardId);if(!u){o.push(R("card_not_found",`Card "${s.cardId}" could not be renamed because it was not found.`,s.cardId));break}u.card.title=s.title,s.description!==void 0&&(u.card.description=s.description);break}case"reorderCards":{const u=new Map;for(let h=0;h<s.cardIds.length;h+=1){const y=s.cardIds[h],D=j(r,y);D&&u.set(D.frame.id,h)}De(i,u);break}case"reuseCalculatedField":a.push(R("reused_calculated_field",`Calculated field "${s.fieldId}" is reused by reference.`));break;case"unsupported":o.push(R("unsupported_operation",s.reason||s.requestedAction));break}return{dashboard:r,warnings:a,skippedOperations:o}}function I(e,t,r){return r?{code:e,message:t,cardId:r}:{code:e,message:t}}function O(e,t){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||t}function Ce(e,t){if(!t.has(e))return t.add(e),e;let r=2,a=`${e}-${r}`;for(;t.has(a);)r+=1,a=`${e}-${r}`;return t.add(a),a}function $(e){return!!(e&&typeof e=="object")}function ve(e){return Array.isArray(e.inputs)?e.inputs.filter(t=>$(t)&&typeof t.id=="string"):[]}function J(e){return Array.isArray(e.sections)?e.sections.filter(t=>$(t)):[]}function Z(e){return Array.isArray(e.views)?e.views.filter(t=>$(t)):[]}function F(e){if(!Array.isArray(e))return[];const t=[];for(const r of e){const a=v(r);a&&t.push(a)}return t}function dt(e){var a,o,n;if(!e)return[];const t=[];if(M(e.source)&&t.push(e.source),e.kind==="metric"){t.push(...F(e.measures));const i=v(e.dateField);i&&t.push(i),t.push(...F(e.dimensions)),t.push(...F((a=e.filters)==null?void 0:a.map(d=>d.field)))}else if(e.kind==="records"){const i=v(e.dateField);i&&t.push(i),t.push(...F(e.fields)),t.push(...F((o=e.filters)==null?void 0:o.map(d=>d.field)))}else e.kind==="inputOptions"?(((n=e.population)==null?void 0:n.kind)==="related_population"&&M(e.population.baseSource)&&t.push(e.population.baseSource),t.push(...F([e.labelField,e.valueField,e.searchField,...e.disambiguationFields||[]].filter(i=>!!i)))):e.kind==="sql"&&t.push(...F(e.fields));const r="inputs"in e&&Array.isArray(e.inputs)?e.inputs:[];for(const i of r){const d=v(i.field);d&&t.push(d)}return t}function ct(e){const t=[];for(const r of ve(e)){const a=v(r.field);a&&t.push(a)}for(const r of J(e))for(const a of Z(r))t.push(...dt(a.analytics));return t}function lt(e){var r;const t=[];for(const a of J(e))for(const o of Z(a))M((r=o.analytics)==null?void 0:r.source)&&t.push(o.analytics.source);return t}function ut(e,t){const r=B(e).filter(M);if(r.length===0)return t.push(I("missing_materializable_dataset","No semantic or physical source could be converted into the current dashboard authoring dataset reference.")),[];const a=r.every(n=>n.kind==="semantic"),o=Array.from(new Set(r.filter(n=>n.kind==="semantic").map(n=>n.domainId)));return r.length>1&&(!a||o.length!==1)?(t.push(I("multiple_datasets_out_of_scope","The dashboard authoring compiler supports multiple datasets only within one semantic domain; using the first source and deferring the rest.")),[r[0]]):r}function ft(e,t){const r=J(e),a=ve(e),o=B(ct(e)),n=B(lt(e));return{sections:r,inputs:a,sources:o,primarySources:n,defaultSource:n.length===1?n[0]:void 0,datasets:ut(o,t)}}function pt(e){return e&&w.validateSemaphorAnalyticsIntent(e).ok?e:void 0}function ht(e){var t;switch((t=e.presentation)==null?void 0:t.kind){case"kpi":return"kpi";case"lineChart":return"line";case"barChart":return"bar";case"areaChart":return"area";case"table":return"table";case"text":return"text";default:return null}}function mt(e){var t,r,a;return((t=e.presentation)==null?void 0:t.kind)==="kpi"?"kpi":((r=e.presentation)==null?void 0:r.kind)==="table"?"table":((a=e.presentation)==null?void 0:a.kind)==="text"?"text":"chart"}function bt(e){const t=Te.normalizeSemaphorInputOperator(e);switch(t){case"not_in":return"not in";case"not_between":return"not between";case"contains":return"like";case"not_contains":return"not like";default:return t||"in"}}function gt(e){return $(e.field)?e.field.dataType==="datetime"?"date":e.field.dataType||"string":"string"}function It(e){if(!(!e||e.kind!=="physical"))return[e.databaseName,e.schemaName,e.tableName].filter(Boolean).join(".")}function yt(e,t,r,a,o,n){if(e.kind!=="filter")return n.push(I("control_inputs_deferred",`Control input "${e.label}" is represented in the protocol but not yet materialized by the dashboard authoring adapter.`)),null;if(!$(e.field)||typeof e.field.name!="string")return n.push(I("filter_requires_field",`Filter "${e.label||e.id}" needs a field before the dashboard compiler can materialize it.`)),null;const i=le({explicitSource:void 0,field:e.field,defaultSource:t,fallbackSources:r}),d=(i==null?void 0:i.kind)==="semantic"||(i==null?void 0:i.kind)==="physical"?i.connectionId:void 0;if(!d)return n.push(I("filter_requires_connection_id",`Filter "${e.label}" needs a source connectionId before the dashboard compiler can materialize it.`)),null;const h={id:`filter-${Ce(O(e.id,e.field.name),o)}`,variableName:e.id,connectionId:d,title:e.label,column:e.field.name,dataType:gt(e),qualifiedTableName:It(i),sql:"",operation:bt(e.operator),type:e.multi===!1?"single":"multiple",location:"dashboard",displayMode:"toolbar",fieldMeta:(i==null?void 0:i.kind)==="semantic"?{name:e.field.name,qualifiedFieldName:e.field.name,dataType:e.field.dataType,role:e.field.role==="measure"?"metric":"groupby"}:void 0,semanticContext:(i==null?void 0:i.kind)==="semantic"?{semanticDomainId:i.domainId,connectionId:i.connectionId}:void 0};return{id:e.id,label:e.label,variableName:e.id,scope:a,filter:h,defaultValue:Q(h,e.defaultValue)}}function G(e){const t=[],r=[];for(const a of e.viewIds){const o=e.viewIdToCardId.get(a);o?t.push(o):r.push(a)}return r.length>0&&e.warnings.push(I("input_scope_view_not_found",`Filter "${e.inputLabel}" referenced unknown view ids: ${r.join(", ")}.`)),Array.from(new Set(t))}function _t(e){var a,o;if(!e.protocolScope){const n=Array.from(new Set(e.boundCardIds));return n.length>0&&n.length<e.allCardIds.length?{kind:"cards",cardIds:n}:void 0}if(e.protocolScope.level==="dashboard"){if(!((a=e.protocolScope.excludeViewIds)!=null&&a.length))return;const n=new Set(G({inputLabel:e.inputLabel,viewIds:e.protocolScope.excludeViewIds,viewIdToCardId:e.viewIdToCardId,warnings:e.warnings}));return{kind:"cards",cardIds:e.allCardIds.filter(i=>!n.has(i))}}if(e.protocolScope.level==="view"){const n=G({inputLabel:e.inputLabel,viewIds:e.protocolScope.viewIds,viewIdToCardId:e.viewIdToCardId,warnings:e.warnings});return n.length===0?(e.warnings.push(I("input_scope_has_no_materialized_cards",`Filter "${e.inputLabel}" was deferred because its view scope does not match any materialized cards.`)),null):{kind:"cards",cardIds:n}}const t=e.sectionIdToCardIds.get(e.protocolScope.sectionId)||[];if(t.length===0)return e.warnings.push(I("input_scope_section_not_found",`Filter "${e.inputLabel}" was deferred because section "${e.protocolScope.sectionId}" does not match any materialized cards.`)),null;if(!((o=e.protocolScope.excludeViewIds)!=null&&o.length))return{kind:"cards",cardIds:t};const r=new Set(G({inputLabel:e.inputLabel,viewIds:e.protocolScope.excludeViewIds,viewIdToCardId:e.viewIdToCardId,warnings:e.warnings}));return{kind:"cards",cardIds:t.filter(n=>!r.has(n))}}function St(e){var C,_,c;const t=[],r=w.validateSemaphorDashboardIntent(e);for(const f of r.warnings)t.push(I(f.code,f.message));for(const f of r.errors)t.push(I(f.code,f.message));const a=ft(e,t),o=[],n=new Map,i=new Map,d=new Map,s=new Set,u=new Set;let h=0;for(const[f,g]of a.sections.entries()){const l=typeof g.title=="string"?g.title:`Section ${f+1}`,ee=g.id||O(l,`section-${f+1}`);i.set(ee,[]);for(const[te,b]of Z(g).entries()){const re=ht(b),V=O(b.id||`${l}-${b.title||`View ${te+1}`}`,`card-${f+1}-${te+1}`);if(!re){t.push(I("unsupported_presentation",`Dashboard presentation "${((C=b.presentation)==null?void 0:C.kind)||"unknown"}" is not supported by the dashboard authoring adapter.`,`card-${V}`));continue}if(((_=b.analytics)==null?void 0:_.kind)==="sql"){t.push(I("sql_intent_deferred","SQL analytics intent is valid protocol, but the current dashboard authoring adapter only materializes semantic and physical config-card intents.",`card-${V}`));continue}const ae=Ce(V,s),P=`card-${ae}`;b.id&&n.set(b.id,P),(c=i.get(ee))==null||c.push(P);const we=b.analytics&&"inputs"in b.analytics?b.analytics.inputs:void 0;for(const ne of we||[]){const ie=d.get(ne.inputId)||[];ie.push(P),d.set(ne.inputId,ie)}o.push({id:P,frameId:`frame-${ae}`,title:b.title,description:b.description,type:re,role:mt(b),priority:h,section:l,analyticsIntent:pt(b.analytics),text:b.text}),h+=1}}const y=a.inputs.map(f=>{const g=_t({protocolScope:f.scope,inputLabel:f.label,allCardIds:o.map(l=>l.id),boundCardIds:d.get(f.id)||[],viewIdToCardId:n,sectionIdToCardIds:i,warnings:t});return g===null?null:yt(f,a.defaultSource,a.sources,g,u,t)}).filter(f=>!!f);return{plan:{version:1,id:`plan-${O(e.title,"dashboard")}`,title:e.title,description:e.description,datasets:a.datasets,sheets:[{id:`sheet-${O(e.title,"dashboard")}`,title:e.title,description:e.description,kind:"dashboard",cards:o}],filterInputs:y.length?y:void 0,warnings:t.length?t:void 0,unresolvedRequests:r.ok?void 0:r.errors.map(f=>f.message)},warnings:t}}exports.DASHBOARD_AUTHORING_BREAKPOINTS=k.DASHBOARD_AUTHORING_BREAKPOINTS;exports.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS=k.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS;exports.AUTOMATIC_TEMPORAL_BUCKET_FORMAT=A.AUTOMATIC_TEMPORAL_BUCKET_FORMAT;exports.SEMAPHOR_CARTESIAN_CHART_TYPES=A.SEMAPHOR_CARTESIAN_CHART_TYPES;exports.getTemporalBucketAuthoringOptions=A.getTemporalBucketAuthoringOptions;exports.getTemporalBucketAuthoringSelection=A.getTemporalBucketAuthoringSelection;exports.isSemaphorCartesianChartType=A.isSemaphorCartesianChartType;exports.previewTemporalBucketAuthoringFormat=A.previewTemporalBucketAuthoringFormat;exports.reconcileTemporalBucketAuthoringFormat=A.reconcileTemporalBucketAuthoringFormat;exports.resolveTemporalBucketAuthoringFormat=A.resolveTemporalBucketAuthoringFormat;exports.resolveTemporalResultOwner=A.resolveTemporalResultOwner;exports.supportsCanonicalDashboardTemporalResult=A.supportsCanonicalDashboardTemporalResult;exports.transformComparisonDocument=A.transformComparisonDocument;exports.resolveCanonicalDetailResultRawKey=X.resolveCanonicalDetailResultRawKey;exports.resolveCanonicalResultOutputKey=X.resolveCanonicalResultOutputKey;exports.resolveCanonicalResultRawKey=X.resolveCanonicalResultRawKey;exports.DashboardFilterMappingContractError=m.DashboardFilterMappingContractError;exports.buildDashboardCardSourceIndex=m.buildDashboardCardSourceIndex;exports.createDashboardFilterBindingId=m.createDashboardFilterBindingId;exports.dashboardCardFilterSourceInventoryContains=m.dashboardCardFilterSourceInventoryContains;exports.dashboardFilterTargetMatchesLogicalValue=m.dashboardFilterTargetMatchesLogicalValue;exports.dashboardFilterValueTypeForDataType=m.dashboardFilterValueTypeForDataType;exports.findDashboardCardExecutableSource=m.findDashboardCardExecutableSource;exports.findDashboardCardPinnedCatalogSource=m.findDashboardCardPinnedCatalogSource;exports.findDashboardSqlPinnedCatalogSource=m.findDashboardSqlPinnedCatalogSource;exports.getDashboardFilterSubscriptionHint=m.getDashboardFilterSubscriptionHint;exports.hasDashboardFilterSubscription=m.hasDashboardFilterSubscription;exports.isDashboardFilterOperationCompatible=m.isDashboardFilterOperationCompatible;exports.normalizeDashboardInputs=m.normalizeDashboardInputs;exports.requireNormalizedDashboardInputs=m.requireNormalizedDashboardInputs;exports.resolveDashboardFilterAutomaticTarget=m.resolveDashboardFilterAutomaticTarget;exports.resolveDashboardFilterInheritedTarget=m.resolveDashboardFilterInheritedTarget;exports.resolveDashboardSqlFilterTarget=m.resolveDashboardSqlFilterTarget;exports.applyDashboardChangePlan=st;exports.compileDashboardFromPlan=et;exports.compileResponsiveDashboardLayouts=H;exports.dashboardAuthoringDatasetMatchesSource=z;exports.dashboardAuthoringFieldsReferToSameTarget=xe;exports.dashboardAuthoringSourceFromField=v;exports.dashboardAuthoringSourceKey=Fe;exports.dashboardAuthoringSourcesReferToSameDataset=Y;exports.dashboardPlanFromSemaphorDashboardIntent=St;exports.findDashboardAuthoringDatasetForSource=Pe;exports.getDashboardAuthoringCardSource=fe;exports.isMaterializableDashboardAuthoringSource=M;exports.isSemaphorSourceRef=de;exports.mergeDashboardAuthoringSources=B;exports.preferDashboardAuthoringSourceMetadata=ce;exports.preferredDashboardAuthoringSource=ke;exports.resolveDashboardAuthoringSource=le;exports.validateDashboardAuthoringDatasetScope=pe;exports.validateDashboardChangePlan=_e;exports.validateDashboardPlan=ye;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { D as R, a as Ie } from "../chunks/contracts-CoCOpd_i.js";
|
|
2
|
-
import { A as Mt, S as Nt, g as Bt, a as Rt, i as Pt, p as Ot, c as zt, b as qt, r as Vt, s as Lt, t as jt } from "../chunks/temporal-bucket-authoring-
|
|
3
|
-
import { k as ye,
|
|
4
|
-
import "../chunks/analyze-result-contract-
|
|
2
|
+
import { A as Mt, S as Nt, g as Bt, a as Rt, i as Pt, p as Ot, c as zt, b as qt, r as Vt, s as Lt, t as jt } from "../chunks/temporal-bucket-authoring-ZxFzhTmL.js";
|
|
3
|
+
import { k as ye, ah as H, ai as _e, y as ae, F as we, B as ve } from "../chunks/validators-CCpBY1e0.js";
|
|
4
|
+
import "../chunks/analyze-result-contract-CMZDRRwo.js";
|
|
5
5
|
import "../value-format-preferences/index.js";
|
|
6
6
|
import { n as Se } from "../chunks/operators-C8TxpM4C.js";
|
|
7
7
|
import { a as Ht, b as Wt, r as Kt } from "../chunks/canonical-result-keys-CEQefvdO.js";
|
|
8
|
-
import { D as Ut, b as Qt,
|
|
8
|
+
import { D as Ut, b as Qt, l as Yt, d as Jt, e as Xt, m as Zt, f as er, a as tr, c as rr, i as nr, h as ar, o as ir, n as or, k as sr, r as dr, g as cr, j as lr } from "../chunks/dashboard-filter-value-compatibility-B8ynE_O1.js";
|
|
9
9
|
function _(e) {
|
|
10
10
|
return e && typeof e == "object" ? e : null;
|
|
11
11
|
}
|
|
@@ -1446,7 +1446,8 @@ export {
|
|
|
1446
1446
|
Kt as resolveCanonicalResultRawKey,
|
|
1447
1447
|
De as resolveDashboardAuthoringSource,
|
|
1448
1448
|
dr as resolveDashboardFilterAutomaticTarget,
|
|
1449
|
-
cr as
|
|
1449
|
+
cr as resolveDashboardFilterInheritedTarget,
|
|
1450
|
+
lr as resolveDashboardSqlFilterTarget,
|
|
1450
1451
|
qt as resolveTemporalBucketAuthoringFormat,
|
|
1451
1452
|
Vt as resolveTemporalResultOwner,
|
|
1452
1453
|
Lt as supportsCanonicalDashboardTemporalResult,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("react"),An=require("react-dom/client"),k=require("../chunks/index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("react"),An=require("react-dom/client"),k=require("../chunks/index-UKhl24L_.cjs"),w=require("../chunks/switch-BghC7eOM.cjs"),Ze=require("../data-app-builder-browser-runtime/index.cjs"),te=require("../chunks/x-B6ghREd2.cjs"),Cn=require("../chunks/save-3dYRmehL.cjs"),Rn=require("../chunks/mouse-pointer-2-DX4A_XZw.cjs"),tt=require("../chunks/search-BqqhaMx9.cjs");function Tr(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const d=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(s,a,d.get?d:{enumerable:!0,get:()=>t[a]})}}return s.default=t,Object.freeze(s)}const Bn=Tr(p),Dn=Tr(An);/**
|
|
2
2
|
* @license lucide-react v0.453.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -2,8 +2,8 @@ import { jsx as r, jsxs as c, Fragment as re } from "react/jsx-runtime";
|
|
|
2
2
|
import * as Zn from "react";
|
|
3
3
|
import { useContext as qn, useState as x, useRef as oe, useMemo as je, useEffect as W, useCallback as Ot } from "react";
|
|
4
4
|
import * as Xn from "react-dom/client";
|
|
5
|
-
import { aM as ea, aN as ta, aO as Ir, aP as jr, aQ as zr, aR as ra, aS as Wr, aT as Hr, aU as Jr, aV as Vr, aW as _r, aX as Ur, aY as Gr, aZ as na, a_ as aa, a$ as oa, b0 as Ht, b1 as on, R as Kr, b2 as sa, b3 as Vt, b4 as sn, b5 as ia, b6 as la } from "../chunks/index-
|
|
6
|
-
import { B as H, P as it, a as lt, b as dt, _ as da, $ as ca, a0 as ua, a1 as pa, a2 as ha, L as me, R as ma, d as _t } from "../chunks/switch-
|
|
5
|
+
import { aM as ea, aN as ta, aO as Ir, aP as jr, aQ as zr, aR as ra, aS as Wr, aT as Hr, aU as Jr, aV as Vr, aW as _r, aX as Ur, aY as Gr, aZ as na, a_ as aa, a$ as oa, b0 as Ht, b1 as on, R as Kr, b2 as sa, b3 as Vt, b4 as sn, b5 as ia, b6 as la } from "../chunks/index-Bs9OvwM2.js";
|
|
6
|
+
import { B as H, P as it, a as lt, b as dt, _ as da, $ as ca, a0 as ua, a1 as pa, a2 as ha, L as me, R as ma, d as _t } from "../chunks/switch-B6rFVSdw.js";
|
|
7
7
|
import { loadSemaphorBrowserRuntime as ot } from "../data-app-builder-browser-runtime/index.js";
|
|
8
8
|
import { c as Ve, X as He } from "../chunks/x-CXDkqdur.js";
|
|
9
9
|
import { S as fa } from "../chunks/save-DgMfP0j8.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../chunks/validators-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../chunks/validators-DO-YuzgO.cjs"),e=require("../chunks/update-policy-Cyufdviq.cjs");exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=a.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION=a.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.isSemaphorDataAppCodegenSummary=a.isSemaphorDataAppCodegenSummary;exports.validateSemaphorDataAppCodegenSummary=a.validateSemaphorDataAppCodegenSummary;exports.CODEGEN_SUMMARY_SCHEMA_VERSION=e.CODEGEN_SUMMARY_SCHEMA_VERSION;exports.CODEGEN_SUMMARY_VALIDATOR_VERSION=e.CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.CONTRACT_MANIFEST_SCHEMA_VERSION=e.CONTRACT_MANIFEST_SCHEMA_VERSION;exports.GENERATED_CONTRACT_SCHEMA_VERSION=e.GENERATED_CONTRACT_SCHEMA_VERSION;exports.GENERATED_CONTRACT_TYPESCRIPT_FILES=e.GENERATED_CONTRACT_TYPESCRIPT_FILES;exports.REQUIRED_GENERATED_CONTRACT_FILES=e.REQUIRED_GENERATED_CONTRACT_FILES;exports.assertValidCodegenSummary=e.assertValidCodegenSummary;exports.buildSemaphorGeneratedActiveInput=e.buildSemaphorGeneratedActiveInput;exports.buildSemaphorGeneratedInputOptionIntent=e.buildSemaphorGeneratedInputOptionIntent;exports.buildSemaphorGeneratedViewExecutionRequest=e.buildSemaphorGeneratedViewExecutionRequest;exports.buildSemaphorGeneratedViewExecutionRequests=e.buildSemaphorGeneratedViewExecutionRequests;exports.evaluateSemaphorDataAppContractUpdatePolicy=e.evaluateSemaphorDataAppContractUpdatePolicy;exports.validateCodegenSummary=e.validateCodegenSummary;exports.validateSemaphorGeneratedContract=e.validateSemaphorGeneratedContract;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as E, a as S, i as A, v as t } from "../chunks/validators-
|
|
2
|
-
import { C as R, a as r, b as s, G as C, e as o, R as p, c as d, f as O, g as i, h as m, i as n, j as N, v as T, d as I } from "../chunks/update-policy-
|
|
1
|
+
import { S as E, a as S, i as A, v as t } from "../chunks/validators-CCpBY1e0.js";
|
|
2
|
+
import { C as R, a as r, b as s, G as C, e as o, R as p, c as d, f as O, g as i, h as m, i as n, j as N, v as T, d as I } from "../chunks/update-policy-BKOA5S76.js";
|
|
3
3
|
export {
|
|
4
4
|
R as CODEGEN_SUMMARY_SCHEMA_VERSION,
|
|
5
5
|
r as CODEGEN_SUMMARY_VALIDATOR_VERSION,
|