react-semaphor 0.1.428 → 0.1.429
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 +72 -71
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +5 -4
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +1031 -622
- package/dist/chunks/analyze-result-contract-BswhsmWT.js +1 -0
- package/dist/chunks/{analyze-result-contract-DnfF8kBb.js → analyze-result-contract-CfOBEwaC.js} +681 -759
- package/dist/chunks/{code-editor-CojfM3qp.js → code-editor-C65eEYyU.js} +2980 -2960
- package/dist/chunks/code-editor-DOh3aYEh.js +138 -0
- package/dist/chunks/{comparison-document-migration-b6c3xiWh.js → comparison-document-migration-DbU_BTxR.js} +1 -1
- package/dist/chunks/{comparison-document-migration-BJH1idOd.js → comparison-document-migration-Dj6xZMCb.js} +2 -2
- package/dist/chunks/csv-utils-Co0WxHke.js +4 -0
- package/dist/chunks/csv-utils-suxSkJGj.js +376 -0
- package/dist/chunks/dashboard-CQfAvRYI.js +1401 -0
- package/dist/chunks/{dashboard-509sbC4_.js → dashboard-agBXhvKo.js} +47563 -44929
- package/dist/chunks/{dashboard-briefing-launcher-B-ZTWJwo.js → dashboard-briefing-launcher-CkH_pthg.js} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-DIdYHNTq.js → dashboard-briefing-launcher-gBNNKqoH.js} +100 -99
- package/dist/chunks/{dashboard-controls-CWprw-Pb.js → dashboard-controls-CAZnIGfT.js} +2 -2
- package/dist/chunks/{dashboard-controls-CbRzWo1N.js → dashboard-controls-CoIxUTvH.js} +114 -113
- package/dist/chunks/{dashboard-json-jO4GQfZk.js → dashboard-json-BMcPjL8-.js} +18 -17
- package/dist/chunks/dashboard-json-D4hFrMkX.js +1 -0
- package/dist/chunks/{edit-dashboard-visual-KgQTjqWp.js → edit-dashboard-visual-Bc8qNfSr.js} +8721 -8481
- package/dist/chunks/edit-dashboard-visual-onhUUXlw.js +182 -0
- package/dist/chunks/{metric-comparison-CWweq9RG.js → metric-comparison-CPoDx56y.js} +1 -1
- package/dist/chunks/{metric-comparison-BKgkMy9r.js → metric-comparison-DVy3fll_.js} +1 -1
- package/dist/chunks/numeric-presentation-CGTcqocU.js +517 -0
- package/dist/chunks/numeric-presentation-Dlb-Dk4c.js +1 -0
- package/dist/chunks/report-preferences-dialog-CPptr_V9.js +690 -0
- package/dist/chunks/report-preferences-dialog-DV_5aHrS.js +1 -0
- package/dist/chunks/source-identity-5OPV4gvg.js +92 -0
- package/dist/chunks/source-identity-Cbo2LOHQ.js +1 -0
- package/dist/chunks/{update-policy-CY2k-pJP.js → update-policy-De2NswtM.js} +1 -1
- package/dist/chunks/{update-policy-BgONreNd.js → update-policy-DnF_74zC.js} +1 -1
- package/dist/chunks/{use-create-flow-overlay-state-BiMYdjZP.js → use-create-flow-overlay-state-Bs6gqgjo.js} +1 -1
- package/dist/chunks/{use-create-flow-overlay-state-CGsLzp9A.js → use-create-flow-overlay-state-CgQbCrni.js} +97 -96
- package/dist/chunks/validators-B2vUAqTf.js +1 -0
- package/dist/chunks/{validators-Cz-XuORM.js → validators-Bce_J7Vd.js} +19 -13
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/dashboard-authoring/index.cjs +3 -3
- package/dist/dashboard-authoring/index.js +20 -19
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +50 -50
- 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 +2 -2
- package/dist/data-app-sdk/index.js +27 -26
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +25 -24
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +57 -55
- package/dist/format-utils/index.cjs +2 -5
- package/dist/format-utils/index.js +136 -161
- package/dist/index.cjs +1 -1
- package/dist/index.js +158 -155
- package/dist/report-runtime-context/index.cjs +1 -0
- package/dist/report-runtime-context/index.js +394 -0
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +7 -6
- package/dist/types/analytics-protocol.d.ts +0 -4
- package/dist/types/briefings.d.ts +216 -19
- package/dist/types/dashboard-assistant.d.ts +0 -2
- package/dist/types/dashboard-authoring.d.ts +34 -9
- package/dist/types/dashboard.d.ts +93 -9
- package/dist/types/data-app-builder.d.ts +0 -1
- package/dist/types/data-app-codegen-node.d.ts +6 -28
- package/dist/types/data-app-codegen.d.ts +6 -28
- package/dist/types/data-app-sdk-adapters.d.ts +6 -28
- package/dist/types/data-app-sdk-validation.d.ts +6 -29
- package/dist/types/data-app-sdk.d.ts +6 -31
- package/dist/types/format-utils.d.ts +128 -4
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +10 -13
- package/dist/types/main.d.ts +249 -89
- package/dist/types/report-runtime-context.d.ts +99 -0
- package/dist/types/shared.d.ts +34 -9
- package/dist/types/surfboard.d.ts +119 -16
- package/dist/types/types.d.ts +156 -73
- package/dist/types/value-format-preferences.d.ts +126 -0
- package/dist/value-format-preferences/index.cjs +1 -0
- package/dist/value-format-preferences/index.js +635 -0
- package/package.json +11 -1
- package/dist/chunks/analyze-result-contract-ege_u6Nl.js +0 -1
- package/dist/chunks/calendar-preferences-dialog-BF9bNAF_.js +0 -457
- package/dist/chunks/calendar-preferences-dialog-_L9eBQfj.js +0 -1
- package/dist/chunks/code-editor-BoowcKU0.js +0 -138
- package/dist/chunks/dashboard-CMDXBLnG.js +0 -1402
- package/dist/chunks/dashboard-json-BEZrxx_k.js +0 -1
- package/dist/chunks/date-formatter-BTTYdAik.js +0 -1
- package/dist/chunks/date-formatter-D-89jTjG.js +0 -514
- package/dist/chunks/edit-dashboard-visual-D3uhqgm3.js +0 -182
- package/dist/chunks/validators-B4VMLX3_.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../chunks/operators-DrTQsJXv.js"),m=require("../chunks/validators-B4VMLX3_.js"),a=require("../chunks/analyze-result-contract-ege_u6Nl.js"),n=require("../chunks/catalog-field-grounding-Bnx-3tE0.js"),l=require("../chunks/metric-comparison-BKgkMy9r.js"),p=require("../chunks/dashboard-date-comparison-definition-DGZr3m-b.js"),h=require("../chunks/dashboard-input-contract-DV3cshjz.js");function A(e,t={}){const i=C(e),r={connectionId:t.connectionId,connectionType:e,path:["database","schema","table"],labels:{database:"Database",schema:"Schema",table:"Table"},prefixLevels:["database","schema","table"],dialect:"postgres",supportsFilterClause:!0};return i.includes("postgres")?{...r,prefixLevels:["schema","table"],dialect:"postgres"}:i.includes("mysql")?{...r,prefixLevels:["database","table"],dialect:"mysql",supportsFilterClause:!1}:i.includes("mssql")||i.includes("sqlserver")?{...r,dialect:"mssql",supportsFilterClause:!1}:i.includes("redshift")?{...r,prefixLevels:["schema","table"],dialect:"redshift"}:i.includes("snowflake")?{...r,dialect:"snowflake"}:i.includes("clickhouse")?{connectionId:t.connectionId,connectionType:e,path:["database","table"],labels:{database:"Database",table:"Table"},prefixLevels:["database","table"],dialect:"clickhouse",supportsFilterClause:!1}:i==="s3"||i==="api"?{connectionId:t.connectionId,connectionType:e,path:["table"],labels:{table:i==="api"?"API Table":"File Table"},prefixLevels:["table"],dialect:"duckdb",supportsFilterClause:!0}:i==="googlesheets"||i==="fileupload"?{connectionId:t.connectionId,connectionType:e,path:["table"],labels:{table:"Table"},prefixLevels:["table"],dialect:"postgres",supportsFilterClause:!0}:i==="s3tables"?{...r,labels:{database:"Database",schema:"Namespace",table:"Table"},dialect:"duckdb"}:i==="bigquery"?{...r,labels:{database:"Project",schema:"Dataset",table:"Table"},prefixLevels:["schema","table"],dialect:"bigquery",supportsFilterClause:!1}:r}function y(e){const t=C(e);switch(t){case"mysql":case"bigquery":case"redshift":case"snowflake":case"clickhouse":case"duckdb":case"sqlite":return t;case"mssql":case"sqlserver":return"mssql";case"postgres":case"postgresql":return"postgres";default:return"unknown"}}function R(e){return e.capabilities.prefixLevels.every(t=>!!g(e.source,t))}function v(e){const t=e.quoteIdentifier??I;return e.capabilities.prefixLevels.map(i=>g(e.source,i)).filter(i=>!!i).map(i=>t(i,e.capabilities.dialect)).join(".")}function g(e,t){return t==="database"?e.databaseName:t==="schema"?e.schemaName:e.tableName}function I(e,t){return t==="mysql"||t==="bigquery"||t==="clickhouse"||t==="duckdb"?`\`${e.replace(/`/g,"``")}\``:t==="mssql"?`[${e.replace(/]/g,"]]")}]`:`"${e.replace(/"/g,'""')}"`}function C(e){if(typeof e!="string")return"";const t=[];for(const i of e.trim().toLowerCase())_(i)&&t.push(i);return t.join("")}function _(e){const t=e.charCodeAt(0);return t>=48&&t<=57||t>=97&&t<=122}const u={kind:"semantic",domainId:"domain_sales",datasetName:"orders",connectionId:"conn_sales",label:"Orders"},D={revenueKpi:{version:1,kind:"metric",id:"revenue-kpi",label:"Revenue",source:u,measures:[{name:"revenue",role:"measure"}],primaryMeasure:{name:"revenue",role:"measure"},comparison:{kind:"previous_period"},limit:1},revenueTrend:{version:1,kind:"records",id:"revenue-trend",label:"Revenue trend",source:u,fields:[{name:"order_date",role:"date",dataType:"date",label:"Order Date"},{name:"revenue",role:"measure",dataType:"number"}],dateField:{name:"order_date",role:"date",dataType:"date"},timeGrain:"month",limit:100},topCustomersRecords:{version:1,kind:"records",id:"top-customers",label:"Top customers",source:u,fields:[{name:"customer_name",role:"dimension",dataType:"string"},{name:"segment",role:"dimension",dataType:"string"},{name:"revenue",role:"measure",dataType:"number"}],orderBy:{field:{name:"revenue",role:"measure"},direction:"desc"},limit:20},regionInputOptions:{version:1,kind:"inputOptions",id:"region-options",label:"Region options",inputId:"region",source:u,labelField:{name:"region",role:"dimension",dataType:"string"},valueField:{name:"region",role:"dimension",dataType:"string"},limit:100},previousPeriodRevenueComparison:{version:1,kind:"metric",id:"revenue-previous-period",label:"Revenue previous period comparison",source:u,measures:[{name:"revenue",role:"measure"}],primaryMeasure:{name:"revenue",role:"measure"},dateField:{name:"order_date",role:"date",dataType:"date"},timeGrain:"week",comparison:{kind:"previous_period"},limit:100},inboundSupplierConcentration:{version:1,kind:"metric",id:"inbound-supplier-concentration",label:"Inbound supplier concentration",source:u,measures:[{name:"net_tons",role:"measure"},{name:"ticket_value",role:"measure"}],primaryMeasure:{name:"net_tons",role:"measure"},dateField:{name:"ticket_date",role:"date",dataType:"date"},timeWindow:{unit:"month",value:6,anchor:"latest_available"},dimensions:[{name:"supplier_id",role:"dimension",dataType:"number"}],filters:[{field:{name:"direction",role:"dimension",dataType:"string"},operator:"=",values:["Inbound"]}],limit:15},boundedSqlRanking:{version:1,kind:"sql",id:"top-customer-ranking-sql",label:"Top customer ranking SQL",source:{kind:"sql",connectionId:"conn_sales",dialect:"postgres"},sql:"SELECT customer_name, SUM(revenue) AS revenue FROM public.orders GROUP BY customer_name ORDER BY revenue DESC LIMIT 20",limit:20,rationale:"Ranking is SQL-natural because it requires ordering grouped aggregate rows.",fields:[{name:"customer_name",role:"dimension",dataType:"string"},{name:"revenue",role:"measure",dataType:"number"}]}},T={visibleAxis:{source:{kind:"semantic",domainId:"commerce",datasetName:"orders"},field:{name:"order_date",label:"Order date",dataType:"timestamp with time zone"},expected:{status:"resolved",bindingSource:"visible_axis",name:"order_date",dataType:"datetime"}},invalidSource:{source:{kind:"semantic",datasetName:"orders"},field:{name:"order_date",label:"Order date",dataType:"date"},expected:{status:"unavailable",reason:"temporal_binding_invalid"}}};function f(e){return!!(e.name.trim()&&a.hasCompleteSemaphorSourceIdentity(e.source)&&(e.role==="date"||e.dataType==="date"||e.dataType==="datetime"))}function S(e){return e.filter((t,i)=>e.findIndex(r=>a.semaphorFieldRefsMatch(t.field,r.field))===i)}function F(e){return new Set(e.map(a.semaphorSourceIdentityKey).filter(Boolean)).size}function M(e){const t=S(e.candidates.filter(s=>s.kind==="visible_axis")),i=S(e.candidates.filter(s=>s.kind==="explicit_hidden"));if([...t,...i].some(s=>!f(s.field)))return"invalid";if(t.length>1||i.length>1)return"ambiguous";const r=t[0],d=i[0];if(r)return d&&!a.semaphorFieldRefsMatch(r.field,d.field)?"invalid":r;if(d)return d;if(F(e.querySources??[])>1)return"ambiguous";const c=S(e.candidates.filter(s=>s.kind==="semantic_primary"));return c.some(s=>!f(s.field))?"invalid":c.length>1?"ambiguous":c[0]??"missing"}function E(e){const t=new Date(e.startInclusive),i=new Date(e.endExclusive);return e.timezone.trim()?Number.isFinite(t.getTime())&&Number.isFinite(i.getTime())&&t.getTime()<i.getTime():!1}function O(e){const t=e.ranges??[];if(e.rawSql)return{status:"unavailable",reason:"unsupported_raw_sql",constraints:t};if((e.querySources??[]).some(o=>!a.hasCompleteSemaphorSourceIdentity(o))||t.some(o=>!f(o.field)))return{status:"unavailable",reason:"temporal_binding_invalid",constraints:t};const i=M(e);if(typeof i=="string")return{status:"unavailable",reason:`temporal_binding_${i}`,constraints:t};const r=t.filter(o=>a.semaphorFieldRefsMatch(o.field,i.field));if(r.some(o=>!E(o.window)))return{status:"unavailable",reason:"temporal_binding_invalid",constraints:t};const d=r.filter(o=>o.source==="global_date"),c=r.filter(o=>o.source==="card");if(d.length>1||d.length===0&&c.length>1)return{status:"unavailable",reason:"temporal_binding_ambiguous",constraints:t};const s=d[0]??c[0];return{status:"resolved",field:i.field,bindingSource:i.kind,...s?{currentWindow:s.window,governingWindowSource:s.source,governingRangeId:s.id}:{},constraints:t.filter(o=>o.id!==(s==null?void 0:s.id))}}exports.normalizeSemaphorAnalyticsFilterOperator=b.normalizeSemaphorAnalyticsFilterOperator;exports.normalizeSemaphorInputOperator=b.normalizeSemaphorInputOperator;exports.parseSemaphorIsoInstant=m.parseSemaphorIsoInstant;exports.parseSemaphorIsoTimeWindowBoundary=m.parseSemaphorIsoTimeWindowBoundary;exports.validateSemaphorAnalyticsIntent=m.validateSemaphorAnalyticsIntent;exports.validateSemaphorAnalyticsRecoveryPlan=m.validateSemaphorAnalyticsRecoveryPlan;exports.validateSemaphorDashboardIntent=m.validateSemaphorDashboardIntent;exports.validateSemaphorDerivedFieldDefinition=m.validateSemaphorDerivedFieldDefinition;exports.validateSemaphorOperationIntent=m.validateSemaphorOperationIntent;exports.validateSemaphorResultCalculation=m.validateSemaphorResultCalculation;exports.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT=a.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT;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.getSemaphorAnalyzeResultFieldNames=a.getSemaphorAnalyzeResultFieldNames;exports.hasCompleteSemaphorSourceIdentity=a.hasCompleteSemaphorSourceIdentity;exports.isSemaphorAnalyzeResultFieldName=a.isSemaphorAnalyzeResultFieldName;exports.isSemaphorDataAppCodegenSummary=a.isSemaphorDataAppCodegenSummary;exports.mergeSemaphorSourcesByIdentity=a.mergeSemaphorSourcesByIdentity;exports.parseSemaphorAnalyzeResult=a.parseSemaphorAnalyzeResult;exports.preferSemaphorFieldRefMetadata=a.preferSemaphorFieldRefMetadata;exports.preferSemaphorSourceMetadata=a.preferSemaphorSourceMetadata;exports.semaphorAnalyticsCoverageSchema=a.semaphorAnalyticsCoverageSchema;exports.semaphorAnalyticsDiagnosticFeedbackSchema=a.semaphorAnalyticsDiagnosticFeedbackSchema;exports.semaphorAnalyticsExecutionResultSchema=a.semaphorAnalyticsExecutionResultSchema;exports.semaphorAnalyticsPopulationSchema=a.semaphorAnalyticsPopulationSchema;exports.semaphorAnalyticsResultSchema=a.semaphorAnalyticsResultSchema;exports.semaphorAnalyticsValidationIssueSchema=a.semaphorAnalyticsValidationIssueSchema;exports.semaphorAnalyticsValidationResultSchema=a.semaphorAnalyticsValidationResultSchema;exports.semaphorAnalyzeResultSchema=a.semaphorAnalyzeResultSchema;exports.semaphorAnalyzeResultShape=a.semaphorAnalyzeResultShape;exports.semaphorDataAppCodegenSummarySchema=a.semaphorDataAppCodegenSummarySchema;exports.semaphorDerivedFieldDefinitionSchema=a.semaphorDerivedFieldDefinitionSchema;exports.semaphorExecutionFieldRefSchema=a.semaphorExecutionFieldRefSchema;exports.semaphorFieldRefSchema=a.semaphorFieldRefSchema;exports.semaphorFieldRefsMatch=a.semaphorFieldRefsMatch;exports.semaphorInputOptionsResultSchema=a.semaphorInputOptionsResultSchema;exports.semaphorMatrixResultSchema=a.semaphorMatrixResultSchema;exports.semaphorMetricAggregate=a.semaphorMetricAggregate;exports.semaphorMetricMeasureBindingKey=a.semaphorMetricMeasureBindingKey;exports.semaphorMetricResultSchema=a.semaphorMetricResultSchema;exports.semaphorPhysicalSourceRefSchema=a.semaphorPhysicalSourceRefSchema;exports.semaphorRecordsResultSchema=a.semaphorRecordsResultSchema;exports.semaphorRelationshipDiagnosticsSchema=a.semaphorRelationshipDiagnosticsSchema;exports.semaphorResultColumnSchema=a.semaphorResultColumnSchema;exports.semaphorSemanticSourceRefSchema=a.semaphorSemanticSourceRefSchema;exports.semaphorSourceIdentityKey=a.semaphorSourceIdentityKey;exports.semaphorSourceRefSchema=a.semaphorSourceRefSchema;exports.semaphorSourcesReferToSameDataset=a.semaphorSourcesReferToSameDataset;exports.semaphorSqlResultSchema=a.semaphorSqlResultSchema;exports.semaphorSqlSourceRefSchema=a.semaphorSqlSourceRefSchema;exports.validateSemaphorDataAppCodegenSummary=a.validateSemaphorDataAppCodegenSummary;exports.buildAnalyticsCatalogFieldSummary=n.buildAnalyticsCatalogFieldSummary;exports.getAnalyticsCatalogFieldCandidates=n.getAnalyticsCatalogFieldCandidates;exports.getAnalyticsCatalogFieldName=n.getAnalyticsCatalogFieldName;exports.isAnalyticsCatalogDateField=n.isAnalyticsCatalogDateField;exports.isAnalyticsCatalogDimensionField=n.isAnalyticsCatalogDimensionField;exports.isAnalyticsCatalogMetricField=n.isAnalyticsCatalogMetricField;exports.isAnalyticsDateLikeDataType=n.isAnalyticsDateLikeDataType;exports.isAnalyticsMetricIdentifierField=n.isAnalyticsMetricIdentifierField;exports.isAnalyticsTechnicalIdentifierField=n.isAnalyticsTechnicalIdentifierField;exports.normalizeAnalyticsCatalogDataType=n.normalizeAnalyticsCatalogDataType;exports.normalizeAnalyticsCatalogName=n.normalizeAnalyticsCatalogName;exports.COMPARISON_PRESENTATION_DEFAULTS=l.COMPARISON_PRESENTATION_DEFAULTS;exports.DEFAULT_METRIC_COMPARISON_POLARITY=l.DEFAULT_METRIC_COMPARISON_POLARITY;exports.evaluateMetricComparison=l.evaluateMetricComparison;exports.resolveMetricComparisonRequest=l.resolveMetricComparisonRequest;exports.resolveMetricResultAlias=l.resolveMetricResultAlias;exports.validateComparisonPresentationSpec=l.validateComparisonPresentationSpec;exports.validateGlobalDateComparisonContext=l.validateGlobalDateComparisonContext;exports.validateGlobalDateComparisonSelection=l.validateGlobalDateComparisonSelection;exports.validateMetricComparisonConfig=l.validateMetricComparisonConfig;exports.validateMetricComparisonPolarity=l.validateMetricComparisonPolarity;exports.validateMetricComparisonSpec=l.validateMetricComparisonSpec;exports.isComparisonCapableDashboardDateInputDefinition=p.isComparisonCapableDashboardDateInputDefinition;exports.resolveDashboardDateComparisonFilterDefinition=p.resolveDashboardDateComparisonFilterDefinition;exports.resolveDashboardDateComparisonInputDefinition=p.resolveDashboardDateComparisonInputDefinition;exports.semanticDatasetMatchesFieldCoordinates=p.semanticDatasetMatchesFieldCoordinates;exports.getCardControlCompatInputId=h.getCardControlCompatInputId;exports.getCardInlineFilterCompatInputId=h.getCardInlineFilterCompatInputId;exports.getDashboardControlCompatInputId=h.getDashboardControlCompatInputId;exports.getDashboardFilterCompatInputId=h.getDashboardFilterCompatInputId;exports.SEMAPHOR_ANALYTICS_INTENT_FIXTURES=D;exports.TEMPORAL_CONTEXT_ADAPTER_PARITY_FIXTURES=T;exports.buildSemaphorQualifiedSourcePath=v;exports.getSemaphorConnectionCapabilities=A;exports.normalizeSemaphorDialect=y;exports.resolveTemporalContext=O;exports.semaphorSourceHasRequiredCoordinates=R;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../chunks/operators-DrTQsJXv.js"),c=require("../chunks/validators-B2vUAqTf.js"),i=require("../chunks/analyze-result-contract-BswhsmWT.js"),l=require("../chunks/catalog-field-grounding-Bnx-3tE0.js"),o=require("../chunks/source-identity-Cbo2LOHQ.js"),d=require("../chunks/metric-comparison-DVy3fll_.js"),h=require("../chunks/dashboard-date-comparison-definition-DGZr3m-b.js"),S=require("../chunks/dashboard-input-contract-DV3cshjz.js");function A(e,a={}){const t=y(e),r={connectionId:a.connectionId,connectionType:e,path:["database","schema","table"],labels:{database:"Database",schema:"Schema",table:"Table"},prefixLevels:["database","schema","table"],dialect:"postgres",supportsFilterClause:!0};return t.includes("postgres")?{...r,prefixLevels:["schema","table"],dialect:"postgres"}:t.includes("mysql")?{...r,prefixLevels:["database","table"],dialect:"mysql",supportsFilterClause:!1}:t.includes("mssql")||t.includes("sqlserver")?{...r,dialect:"mssql",supportsFilterClause:!1}:t.includes("redshift")?{...r,prefixLevels:["schema","table"],dialect:"redshift"}:t.includes("snowflake")?{...r,dialect:"snowflake"}:t.includes("clickhouse")?{connectionId:a.connectionId,connectionType:e,path:["database","table"],labels:{database:"Database",table:"Table"},prefixLevels:["database","table"],dialect:"clickhouse",supportsFilterClause:!1}:t==="s3"||t==="api"?{connectionId:a.connectionId,connectionType:e,path:["table"],labels:{table:t==="api"?"API Table":"File Table"},prefixLevels:["table"],dialect:"duckdb",supportsFilterClause:!0}:t==="googlesheets"||t==="fileupload"?{connectionId:a.connectionId,connectionType:e,path:["table"],labels:{table:"Table"},prefixLevels:["table"],dialect:"postgres",supportsFilterClause:!0}:t==="s3tables"?{...r,labels:{database:"Database",schema:"Namespace",table:"Table"},dialect:"duckdb"}:t==="bigquery"?{...r,labels:{database:"Project",schema:"Dataset",table:"Table"},prefixLevels:["schema","table"],dialect:"bigquery",supportsFilterClause:!1}:r}function R(e){const a=y(e);switch(a){case"mysql":case"bigquery":case"redshift":case"snowflake":case"clickhouse":case"duckdb":case"sqlite":return a;case"mssql":case"sqlserver":return"mssql";case"postgres":case"postgresql":return"postgres";default:return"unknown"}}function v(e){return e.capabilities.prefixLevels.every(a=>!!C(e.source,a))}function I(e){const a=e.quoteIdentifier??_;return e.capabilities.prefixLevels.map(t=>C(e.source,t)).filter(t=>!!t).map(t=>a(t,e.capabilities.dialect)).join(".")}function C(e,a){return a==="database"?e.databaseName:a==="schema"?e.schemaName:e.tableName}function _(e,a){return a==="mysql"||a==="bigquery"||a==="clickhouse"||a==="duckdb"?`\`${e.replace(/`/g,"``")}\``:a==="mssql"?`[${e.replace(/]/g,"]]")}]`:`"${e.replace(/"/g,'""')}"`}function y(e){if(typeof e!="string")return"";const a=[];for(const t of e.trim().toLowerCase())D(t)&&a.push(t);return a.join("")}function D(e){const a=e.charCodeAt(0);return a>=48&&a<=57||a>=97&&a<=122}const p={kind:"semantic",domainId:"domain_sales",datasetName:"orders",connectionId:"conn_sales",label:"Orders"},T={revenueKpi:{version:1,kind:"metric",id:"revenue-kpi",label:"Revenue",source:p,measures:[{name:"revenue",role:"measure"}],primaryMeasure:{name:"revenue",role:"measure"},comparison:{kind:"previous_period"},limit:1},revenueTrend:{version:1,kind:"records",id:"revenue-trend",label:"Revenue trend",source:p,fields:[{name:"order_date",role:"date",dataType:"date",label:"Order Date"},{name:"revenue",role:"measure",dataType:"number"}],dateField:{name:"order_date",role:"date",dataType:"date"},timeGrain:"month",limit:100},topCustomersRecords:{version:1,kind:"records",id:"top-customers",label:"Top customers",source:p,fields:[{name:"customer_name",role:"dimension",dataType:"string"},{name:"segment",role:"dimension",dataType:"string"},{name:"revenue",role:"measure",dataType:"number"}],orderBy:{field:{name:"revenue",role:"measure"},direction:"desc"},limit:20},regionInputOptions:{version:1,kind:"inputOptions",id:"region-options",label:"Region options",inputId:"region",source:p,labelField:{name:"region",role:"dimension",dataType:"string"},valueField:{name:"region",role:"dimension",dataType:"string"},limit:100},previousPeriodRevenueComparison:{version:1,kind:"metric",id:"revenue-previous-period",label:"Revenue previous period comparison",source:p,measures:[{name:"revenue",role:"measure"}],primaryMeasure:{name:"revenue",role:"measure"},dateField:{name:"order_date",role:"date",dataType:"date"},timeGrain:"week",comparison:{kind:"previous_period"},limit:100},inboundSupplierConcentration:{version:1,kind:"metric",id:"inbound-supplier-concentration",label:"Inbound supplier concentration",source:p,measures:[{name:"net_tons",role:"measure"},{name:"ticket_value",role:"measure"}],primaryMeasure:{name:"net_tons",role:"measure"},dateField:{name:"ticket_date",role:"date",dataType:"date"},timeWindow:{unit:"month",value:6,anchor:"latest_available"},dimensions:[{name:"supplier_id",role:"dimension",dataType:"number"}],filters:[{field:{name:"direction",role:"dimension",dataType:"string"},operator:"=",values:["Inbound"]}],limit:15},boundedSqlRanking:{version:1,kind:"sql",id:"top-customer-ranking-sql",label:"Top customer ranking SQL",source:{kind:"sql",connectionId:"conn_sales",dialect:"postgres"},sql:"SELECT customer_name, SUM(revenue) AS revenue FROM public.orders GROUP BY customer_name ORDER BY revenue DESC LIMIT 20",limit:20,rationale:"Ranking is SQL-natural because it requires ordering grouped aggregate rows.",fields:[{name:"customer_name",role:"dimension",dataType:"string"},{name:"revenue",role:"measure",dataType:"number"}]}},F={visibleAxis:{source:{kind:"semantic",domainId:"commerce",datasetName:"orders"},field:{name:"order_date",label:"Order date",dataType:"timestamp with time zone"},expected:{status:"resolved",bindingSource:"visible_axis",name:"order_date",dataType:"datetime"}},invalidSource:{source:{kind:"semantic",datasetName:"orders"},field:{name:"order_date",label:"Order date",dataType:"date"},expected:{status:"unavailable",reason:"temporal_binding_invalid"}}};function b(e){return!!(e.name.trim()&&o.hasCompleteSemaphorSourceIdentity(e.source)&&(e.role==="date"||e.dataType==="date"||e.dataType==="datetime"))}function f(e){return e.filter((a,t)=>e.findIndex(r=>o.semaphorFieldRefsMatch(a.field,r.field))===t)}function M(e){return new Set(e.map(o.semaphorSourceIdentityKey).filter(Boolean)).size}function E(e){const a=f(e.candidates.filter(s=>s.kind==="visible_axis")),t=f(e.candidates.filter(s=>s.kind==="explicit_hidden"));if([...a,...t].some(s=>!b(s.field)))return"invalid";if(a.length>1||t.length>1)return"ambiguous";const r=a[0],m=t[0];if(r)return m&&!o.semaphorFieldRefsMatch(r.field,m.field)?"invalid":r;if(m)return m;if(M(e.querySources??[])>1)return"ambiguous";const u=f(e.candidates.filter(s=>s.kind==="semantic_primary"));return u.some(s=>!b(s.field))?"invalid":u.length>1?"ambiguous":u[0]??"missing"}function O(e){const a=new Date(e.startInclusive),t=new Date(e.endExclusive);return e.timezone.trim()?Number.isFinite(a.getTime())&&Number.isFinite(t.getTime())&&a.getTime()<t.getTime():!1}function q(e){const a=e.ranges??[];if(e.rawSql)return{status:"unavailable",reason:"unsupported_raw_sql",constraints:a};if((e.querySources??[]).some(n=>!o.hasCompleteSemaphorSourceIdentity(n))||a.some(n=>!b(n.field)))return{status:"unavailable",reason:"temporal_binding_invalid",constraints:a};const t=E(e);if(typeof t=="string")return{status:"unavailable",reason:`temporal_binding_${t}`,constraints:a};const r=a.filter(n=>o.semaphorFieldRefsMatch(n.field,t.field));if(r.some(n=>!O(n.window)))return{status:"unavailable",reason:"temporal_binding_invalid",constraints:a};const m=r.filter(n=>n.source==="global_date"),u=r.filter(n=>n.source==="card");if(m.length>1||m.length===0&&u.length>1)return{status:"unavailable",reason:"temporal_binding_ambiguous",constraints:a};const s=m[0]??u[0];return{status:"resolved",field:t.field,bindingSource:t.kind,...s?{currentWindow:s.window,governingWindowSource:s.source,governingRangeId:s.id}:{},constraints:a.filter(n=>n.id!==(s==null?void 0:s.id))}}exports.normalizeSemaphorAnalyticsFilterOperator=g.normalizeSemaphorAnalyticsFilterOperator;exports.normalizeSemaphorInputOperator=g.normalizeSemaphorInputOperator;exports.parseSemaphorIsoInstant=c.parseSemaphorIsoInstant;exports.parseSemaphorIsoTimeWindowBoundary=c.parseSemaphorIsoTimeWindowBoundary;exports.validateSemaphorAnalyticsIntent=c.validateSemaphorAnalyticsIntent;exports.validateSemaphorAnalyticsRecoveryPlan=c.validateSemaphorAnalyticsRecoveryPlan;exports.validateSemaphorDashboardIntent=c.validateSemaphorDashboardIntent;exports.validateSemaphorDerivedFieldDefinition=c.validateSemaphorDerivedFieldDefinition;exports.validateSemaphorOperationIntent=c.validateSemaphorOperationIntent;exports.validateSemaphorResultCalculation=c.validateSemaphorResultCalculation;exports.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT=i.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=i.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION=i.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.getSemaphorAnalyzeResultFieldNames=i.getSemaphorAnalyzeResultFieldNames;exports.isSemaphorAnalyzeResultFieldName=i.isSemaphorAnalyzeResultFieldName;exports.isSemaphorDataAppCodegenSummary=i.isSemaphorDataAppCodegenSummary;exports.parseSemaphorAnalyzeResult=i.parseSemaphorAnalyzeResult;exports.semaphorAnalyticsCoverageSchema=i.semaphorAnalyticsCoverageSchema;exports.semaphorAnalyticsDiagnosticFeedbackSchema=i.semaphorAnalyticsDiagnosticFeedbackSchema;exports.semaphorAnalyticsExecutionResultSchema=i.semaphorAnalyticsExecutionResultSchema;exports.semaphorAnalyticsPopulationSchema=i.semaphorAnalyticsPopulationSchema;exports.semaphorAnalyticsResultSchema=i.semaphorAnalyticsResultSchema;exports.semaphorAnalyticsValidationIssueSchema=i.semaphorAnalyticsValidationIssueSchema;exports.semaphorAnalyticsValidationResultSchema=i.semaphorAnalyticsValidationResultSchema;exports.semaphorAnalyzeResultSchema=i.semaphorAnalyzeResultSchema;exports.semaphorAnalyzeResultShape=i.semaphorAnalyzeResultShape;exports.semaphorDataAppCodegenSummarySchema=i.semaphorDataAppCodegenSummarySchema;exports.semaphorDerivedFieldDefinitionSchema=i.semaphorDerivedFieldDefinitionSchema;exports.semaphorExecutionFieldRefSchema=i.semaphorExecutionFieldRefSchema;exports.semaphorFieldRefSchema=i.semaphorFieldRefSchema;exports.semaphorInputOptionsResultSchema=i.semaphorInputOptionsResultSchema;exports.semaphorMatrixResultSchema=i.semaphorMatrixResultSchema;exports.semaphorMetricResultSchema=i.semaphorMetricResultSchema;exports.semaphorPhysicalSourceRefSchema=i.semaphorPhysicalSourceRefSchema;exports.semaphorRecordsResultSchema=i.semaphorRecordsResultSchema;exports.semaphorRelationshipDiagnosticsSchema=i.semaphorRelationshipDiagnosticsSchema;exports.semaphorResultColumnSchema=i.semaphorResultColumnSchema;exports.semaphorSemanticSourceRefSchema=i.semaphorSemanticSourceRefSchema;exports.semaphorSourceRefSchema=i.semaphorSourceRefSchema;exports.semaphorSqlResultSchema=i.semaphorSqlResultSchema;exports.semaphorSqlSourceRefSchema=i.semaphorSqlSourceRefSchema;exports.validateSemaphorDataAppCodegenSummary=i.validateSemaphorDataAppCodegenSummary;exports.buildAnalyticsCatalogFieldSummary=l.buildAnalyticsCatalogFieldSummary;exports.getAnalyticsCatalogFieldCandidates=l.getAnalyticsCatalogFieldCandidates;exports.getAnalyticsCatalogFieldName=l.getAnalyticsCatalogFieldName;exports.isAnalyticsCatalogDateField=l.isAnalyticsCatalogDateField;exports.isAnalyticsCatalogDimensionField=l.isAnalyticsCatalogDimensionField;exports.isAnalyticsCatalogMetricField=l.isAnalyticsCatalogMetricField;exports.isAnalyticsDateLikeDataType=l.isAnalyticsDateLikeDataType;exports.isAnalyticsMetricIdentifierField=l.isAnalyticsMetricIdentifierField;exports.isAnalyticsTechnicalIdentifierField=l.isAnalyticsTechnicalIdentifierField;exports.normalizeAnalyticsCatalogDataType=l.normalizeAnalyticsCatalogDataType;exports.normalizeAnalyticsCatalogName=l.normalizeAnalyticsCatalogName;exports.hasCompleteSemaphorSourceIdentity=o.hasCompleteSemaphorSourceIdentity;exports.mergeSemaphorSourcesByIdentity=o.mergeSemaphorSourcesByIdentity;exports.preferSemaphorFieldRefMetadata=o.preferSemaphorFieldRefMetadata;exports.preferSemaphorSourceMetadata=o.preferSemaphorSourceMetadata;exports.semaphorFieldRefsMatch=o.semaphorFieldRefsMatch;exports.semaphorMetricAggregate=o.semaphorMetricAggregate;exports.semaphorMetricMeasureBindingKey=o.semaphorMetricMeasureBindingKey;exports.semaphorSourceIdentityKey=o.semaphorSourceIdentityKey;exports.semaphorSourcesReferToSameDataset=o.semaphorSourcesReferToSameDataset;exports.COMPARISON_PRESENTATION_DEFAULTS=d.COMPARISON_PRESENTATION_DEFAULTS;exports.DEFAULT_METRIC_COMPARISON_POLARITY=d.DEFAULT_METRIC_COMPARISON_POLARITY;exports.evaluateMetricComparison=d.evaluateMetricComparison;exports.resolveMetricComparisonRequest=d.resolveMetricComparisonRequest;exports.resolveMetricResultAlias=d.resolveMetricResultAlias;exports.validateComparisonPresentationSpec=d.validateComparisonPresentationSpec;exports.validateGlobalDateComparisonContext=d.validateGlobalDateComparisonContext;exports.validateGlobalDateComparisonSelection=d.validateGlobalDateComparisonSelection;exports.validateMetricComparisonConfig=d.validateMetricComparisonConfig;exports.validateMetricComparisonPolarity=d.validateMetricComparisonPolarity;exports.validateMetricComparisonSpec=d.validateMetricComparisonSpec;exports.isComparisonCapableDashboardDateInputDefinition=h.isComparisonCapableDashboardDateInputDefinition;exports.resolveDashboardDateComparisonFilterDefinition=h.resolveDashboardDateComparisonFilterDefinition;exports.resolveDashboardDateComparisonInputDefinition=h.resolveDashboardDateComparisonInputDefinition;exports.semanticDatasetMatchesFieldCoordinates=h.semanticDatasetMatchesFieldCoordinates;exports.getCardControlCompatInputId=S.getCardControlCompatInputId;exports.getCardInlineFilterCompatInputId=S.getCardInlineFilterCompatInputId;exports.getDashboardControlCompatInputId=S.getDashboardControlCompatInputId;exports.getDashboardFilterCompatInputId=S.getDashboardFilterCompatInputId;exports.SEMAPHOR_ANALYTICS_INTENT_FIXTURES=T;exports.TEMPORAL_CONTEXT_ADAPTER_PARITY_FIXTURES=F;exports.buildSemaphorQualifiedSourcePath=I;exports.getSemaphorConnectionCapabilities=A;exports.normalizeSemaphorDialect=R;exports.resolveTemporalContext=q;exports.semaphorSourceHasRequiredCoordinates=v;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
import { p as O, a as N, v as L, b as P, c as w, d as z, e as B, f as U } from "../chunks/validators-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { a as M, n as x } from "../chunks/operators-C8TxpM4C.js";
|
|
2
|
+
import { p as O, a as N, v as L, b as P, c as w, d as z, e as B, f as U } from "../chunks/validators-Bce_J7Vd.js";
|
|
3
|
+
import { b as G, S as H, a as V, g as j, c as W, i as Q, p as $, s as K, d as X, e as Z, f as J, h as ee, j as ae, k as se, l as re, m as te, n as ie, o as ne, q as oe, r as le, t as de, u as me, w as ce, x as ue, y as pe, z as fe, A as he, B as be, C as ge, D as Se, E as ve, v as ye } from "../chunks/analyze-result-contract-CfOBEwaC.js";
|
|
4
|
+
import { b as Ae, g as Re, c as _e, i as Ie, d as Te, e as De, f as Fe, h as ke, j as qe, n as Me, a as xe } from "../chunks/catalog-field-grounding-AOGwWu0K.js";
|
|
5
|
+
import { h as u, s as c, c as h } from "../chunks/source-identity-5OPV4gvg.js";
|
|
6
|
+
import { m as Oe, p as Ne, d as Le, a as Pe, e as we, b as ze } from "../chunks/source-identity-5OPV4gvg.js";
|
|
7
|
+
import { C as Ue, D as Ye, e as Ge, r as He, a as Ve, v as je, b as We, c as Qe, d as $e, f as Ke, g as Xe } from "../chunks/metric-comparison-CPoDx56y.js";
|
|
8
|
+
import { i as Je, r as ea, a as aa, s as sa } from "../chunks/dashboard-date-comparison-definition-BaYxjLi5.js";
|
|
9
|
+
import { g as ta, a as ia, b as na, c as oa } from "../chunks/dashboard-input-contract-BFpERluO.js";
|
|
9
10
|
function A(e, a = {}) {
|
|
10
11
|
const s = f(e), r = {
|
|
11
12
|
connectionId: a.connectionId,
|
|
@@ -380,91 +381,91 @@ function F(e) {
|
|
|
380
381
|
};
|
|
381
382
|
}
|
|
382
383
|
export {
|
|
383
|
-
|
|
384
|
-
|
|
384
|
+
Ue as COMPARISON_PRESENTATION_DEFAULTS,
|
|
385
|
+
Ye as DEFAULT_METRIC_COMPARISON_POLARITY,
|
|
385
386
|
T as SEMAPHOR_ANALYTICS_INTENT_FIXTURES,
|
|
386
|
-
|
|
387
|
+
G as SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT,
|
|
387
388
|
H as SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION,
|
|
388
389
|
V as SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION,
|
|
389
390
|
D as TEMPORAL_CONTEXT_ADAPTER_PARITY_FIXTURES,
|
|
390
|
-
|
|
391
|
+
Ae as buildAnalyticsCatalogFieldSummary,
|
|
391
392
|
I as buildSemaphorQualifiedSourcePath,
|
|
392
393
|
Ge as evaluateMetricComparison,
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
394
|
+
Re as getAnalyticsCatalogFieldCandidates,
|
|
395
|
+
_e as getAnalyticsCatalogFieldName,
|
|
396
|
+
ta as getCardControlCompatInputId,
|
|
397
|
+
ia as getCardInlineFilterCompatInputId,
|
|
398
|
+
na as getDashboardControlCompatInputId,
|
|
399
|
+
oa as getDashboardFilterCompatInputId,
|
|
399
400
|
j as getSemaphorAnalyzeResultFieldNames,
|
|
400
401
|
A as getSemaphorConnectionCapabilities,
|
|
401
402
|
u as hasCompleteSemaphorSourceIdentity,
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
403
|
+
Ie as isAnalyticsCatalogDateField,
|
|
404
|
+
Te as isAnalyticsCatalogDimensionField,
|
|
405
|
+
De as isAnalyticsCatalogMetricField,
|
|
406
|
+
Fe as isAnalyticsDateLikeDataType,
|
|
407
|
+
ke as isAnalyticsMetricIdentifierField,
|
|
408
|
+
qe as isAnalyticsTechnicalIdentifierField,
|
|
408
409
|
Je as isComparisonCapableDashboardDateInputDefinition,
|
|
409
410
|
W as isSemaphorAnalyzeResultFieldName,
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
411
|
+
Q as isSemaphorDataAppCodegenSummary,
|
|
412
|
+
Oe as mergeSemaphorSourcesByIdentity,
|
|
413
|
+
Me as normalizeAnalyticsCatalogDataType,
|
|
414
|
+
xe as normalizeAnalyticsCatalogName,
|
|
415
|
+
M as normalizeSemaphorAnalyticsFilterOperator,
|
|
415
416
|
R as normalizeSemaphorDialect,
|
|
416
|
-
|
|
417
|
+
x as normalizeSemaphorInputOperator,
|
|
417
418
|
$ as parseSemaphorAnalyzeResult,
|
|
418
419
|
O as parseSemaphorIsoInstant,
|
|
419
420
|
N as parseSemaphorIsoTimeWindowBoundary,
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
421
|
+
Ne as preferSemaphorFieldRefMetadata,
|
|
422
|
+
Le as preferSemaphorSourceMetadata,
|
|
423
|
+
ea as resolveDashboardDateComparisonFilterDefinition,
|
|
424
|
+
aa as resolveDashboardDateComparisonInputDefinition,
|
|
425
|
+
He as resolveMetricComparisonRequest,
|
|
426
|
+
Ve as resolveMetricResultAlias,
|
|
426
427
|
F as resolveTemporalContext,
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
428
|
+
sa as semanticDatasetMatchesFieldCoordinates,
|
|
429
|
+
K as semaphorAnalyticsCoverageSchema,
|
|
430
|
+
X as semaphorAnalyticsDiagnosticFeedbackSchema,
|
|
431
|
+
Z as semaphorAnalyticsExecutionResultSchema,
|
|
432
|
+
J as semaphorAnalyticsPopulationSchema,
|
|
433
|
+
ee as semaphorAnalyticsResultSchema,
|
|
434
|
+
ae as semaphorAnalyticsValidationIssueSchema,
|
|
435
|
+
se as semaphorAnalyticsValidationResultSchema,
|
|
436
|
+
re as semaphorAnalyzeResultSchema,
|
|
437
|
+
te as semaphorAnalyzeResultShape,
|
|
438
|
+
ie as semaphorDataAppCodegenSummarySchema,
|
|
439
|
+
ne as semaphorDerivedFieldDefinitionSchema,
|
|
440
|
+
oe as semaphorExecutionFieldRefSchema,
|
|
441
|
+
le as semaphorFieldRefSchema,
|
|
441
442
|
c as semaphorFieldRefsMatch,
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
443
|
+
de as semaphorInputOptionsResultSchema,
|
|
444
|
+
me as semaphorMatrixResultSchema,
|
|
445
|
+
Pe as semaphorMetricAggregate,
|
|
446
|
+
we as semaphorMetricMeasureBindingKey,
|
|
447
|
+
ce as semaphorMetricResultSchema,
|
|
448
|
+
ue as semaphorPhysicalSourceRefSchema,
|
|
449
|
+
pe as semaphorRecordsResultSchema,
|
|
450
|
+
fe as semaphorRelationshipDiagnosticsSchema,
|
|
451
|
+
he as semaphorResultColumnSchema,
|
|
452
|
+
be as semaphorSemanticSourceRefSchema,
|
|
452
453
|
_ as semaphorSourceHasRequiredCoordinates,
|
|
453
454
|
h as semaphorSourceIdentityKey,
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
455
|
+
ge as semaphorSourceRefSchema,
|
|
456
|
+
ze as semaphorSourcesReferToSameDataset,
|
|
457
|
+
Se as semaphorSqlResultSchema,
|
|
458
|
+
ve as semaphorSqlSourceRefSchema,
|
|
459
|
+
je as validateComparisonPresentationSpec,
|
|
460
|
+
We as validateGlobalDateComparisonContext,
|
|
461
|
+
Qe as validateGlobalDateComparisonSelection,
|
|
462
|
+
$e as validateMetricComparisonConfig,
|
|
463
|
+
Ke as validateMetricComparisonPolarity,
|
|
464
|
+
Xe as validateMetricComparisonSpec,
|
|
464
465
|
L as validateSemaphorAnalyticsIntent,
|
|
465
466
|
P as validateSemaphorAnalyticsRecoveryPlan,
|
|
466
467
|
w as validateSemaphorDashboardIntent,
|
|
467
|
-
|
|
468
|
+
ye as validateSemaphorDataAppCodegenSummary,
|
|
468
469
|
z as validateSemaphorDerivedFieldDefinition,
|
|
469
470
|
B as validateSemaphorOperationIntent,
|
|
470
471
|
U as validateSemaphorResultCalculation
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("react"),d=require("../chunks/code-editor-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("react"),d=require("../chunks/code-editor-DOh3aYEh.js"),A=require("../chunks/index-Dpm_VET4.js"),J=require("../chunks/index-jSrCwPQz.js");require("../chunks/analyze-result-contract-BswhsmWT.js");require("../value-format-preferences/index.cjs");const U=require("../chunks/palette-C0yjT5Tv.js"),be=require("../chunks/braces-CbO-aIwH.js"),fe=require("../chunks/save-Xdc4pnys.js"),me=require("../chunks/layout-grid-B08pP7v6.js");/**
|
|
2
2
|
* @license lucide-react v0.453.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsxs as d, jsx as r, Fragment as ce } from "react/jsx-runtime";
|
|
2
2
|
import m from "react";
|
|
3
|
-
import { P as ge, a as be, B as C, b as fe, U as De, C as Ie, R as me,
|
|
3
|
+
import { P as ge, a as be, B as C, b as fe, U as De, C as Ie, R as me, L as le, S as se, d as Je, c as q, T as je, F as Le, G as U, H as $e, I as M, J as _e, K as Ve, M as Ue, N as Me, O as E, Q as K, V as Q, W as ee, X as he, Y as re, Z as oe, _ as ke, $ as xe, a0 as ye, a1 as ve, a2 as Ce, a3 as Ge } from "../chunks/code-editor-C65eEYyU.js";
|
|
4
4
|
import { r as We, v as He, A as Xe, a as Ye, p as Ze } from "../chunks/index-If0wlXGi.js";
|
|
5
5
|
import { c as ae, X as qe } from "../chunks/index-xHCrHprY.js";
|
|
6
|
-
import "../chunks/analyze-result-contract-
|
|
6
|
+
import "../chunks/analyze-result-contract-CfOBEwaC.js";
|
|
7
|
+
import "../value-format-preferences/index.js";
|
|
7
8
|
import { P as G } from "../chunks/palette-jqaAcwiQ.js";
|
|
8
9
|
import { B as Ke } from "../chunks/braces-BdbUk_r9.js";
|
|
9
10
|
import { S as Qe } from "../chunks/save-HCJjjzdX.js";
|
|
@@ -448,7 +449,7 @@ const dr = [
|
|
|
448
449
|
"#dc2626",
|
|
449
450
|
"#7c3aed"
|
|
450
451
|
];
|
|
451
|
-
function
|
|
452
|
+
function Sr({
|
|
452
453
|
appearance: e,
|
|
453
454
|
previewTitle: n,
|
|
454
455
|
isLoading: t = !1,
|
|
@@ -1444,7 +1445,7 @@ function gr(e) {
|
|
|
1444
1445
|
}
|
|
1445
1446
|
export {
|
|
1446
1447
|
Ne as BRAND_STUDIO_PRESETS,
|
|
1447
|
-
|
|
1448
|
+
Sr as BrandStudioEditor,
|
|
1448
1449
|
nr as applyBrandStudioPreset,
|
|
1449
1450
|
L as buildAppearanceSpecFromDraft,
|
|
1450
1451
|
j as createBrandStudioDraft,
|
package/dist/briefings/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var ae=Object.defineProperty;var ce=(t,n,e)=>n in t?ae(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e;var U=(t,n,e)=>ce(t,typeof n!="symbol"?n+"":n,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const le=require("../chunks/card-config-utils-15sRtebL.js"),q=["SUN","MON","TUE","WED","THU","FRI","SAT"],de=new Map(q.map((t,n)=>[t,n])),se={cadence:"weekly",hour:9,minute:0,weekdays:[1]};function fe(t){if(typeof t!="string"||t.length===0||t!==t.trim()||/^(?:(?:UTC|GMT)[+-]|[+-]\d{2}:\d{2}$)/.test(t))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:t}).format(),!0}catch{return!1}}function ue(t){return Number.isInteger(t.minute)&&t.minute>=0&&t.minute<=59&&Number.isInteger(t.hour)&&t.hour>=0&&t.hour<=23}function j(t){if(t.length===0)return null;const n=[...t].sort((e,r)=>e-r);return n.some((e,r)=>!Number.isInteger(e)||e<0||e>6||r>0&&e===n[r-1])?null:n}function me(t){if(!ue(t))throw new Error("Choose a valid schedule time.");const n=`${t.minute} ${t.hour}`;switch(t.cadence){case"daily":return`${n} * * *`;case"weekly":{const e=j(t.weekdays);if(!e)throw new Error("Choose at least one weekday.");return`${n} * * ${e.map(r=>q[r]).join(",")}`}case"twice_monthly":return`${n} 1,15 * *`;case"monthly":return`${n} 1 * *`}}function K(t){if(typeof t!="string"||t.length===0)return{ok:!1,issue:"Choose a supported schedule."};if(t!==t.trim()||t.includes(" "))return{ok:!1,issue:"Choose a supported schedule."};const n=t.split(" ");if(n.length!==5)return{ok:!1,issue:"Choose a supported schedule."};const[e,r,o,i,a]=n;if(!/^(0|[1-9]\d?)$/.test(e)||!/^(0|[1-9]\d?)$/.test(r))return{ok:!1,issue:"Choose a supported schedule."};const l=Number(e),f=Number(r);if(l>59||f>23||i!=="*")return{ok:!1,issue:"Choose a supported schedule."};if(o==="*"&&a==="*")return{ok:!0,value:{cadence:"daily",hour:f,minute:l,weekdays:[]}};if(o==="*"&&a!=="*"){const m=a.split(",").map(p=>de.get(p));if(m.some(p=>p===void 0))return{ok:!1,issue:"Choose a supported schedule."};const I=m,v=j(I);return!v||v.some((p,A)=>p!==I[A])?{ok:!1,issue:"Choose a supported schedule."}:{ok:!0,value:{cadence:"weekly",hour:f,minute:l,weekdays:v}}}return o==="1,15"&&a==="*"?{ok:!0,value:{cadence:"twice_monthly",hour:f,minute:l,weekdays:[]}}:o==="1"&&a==="*"?{ok:!0,value:{cadence:"monthly",hour:f,minute:l,weekdays:[]}}:{ok:!1,issue:"Choose a supported schedule."}}function pe(t,n,e){return new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",timeZone:"UTC"}).format(new Date(Date.UTC(2020,0,1,t,n)))}function he(t,n){var e;if(t==="UTC")return"UTC";try{return((e=new Intl.DateTimeFormat(n,{timeZone:t,timeZoneName:"longGeneric"}).formatToParts(new Date(Date.UTC(2020,0,1))).find(o=>o.type==="timeZoneName"))==null?void 0:e.value)??t}catch{return null}}function ye(t,n,e="en-US"){const r=K(t);if(!r.ok)return null;try{const o=pe(r.value.hour,r.value.minute,e),i=he(n,e);if(!i)return null;switch(r.value.cadence){case"daily":return`Daily at ${o} ${i}`;case"weekly":{const a=new Intl.DateTimeFormat(e,{weekday:"long",timeZone:"UTC"});return`${r.value.weekdays.map(f=>a.format(new Date(Date.UTC(2023,0,1+f)))).join(" and ")} at ${o} ${i}`}case"twice_monthly":return`On the 1st and 15th at ${o} ${i}`;case"monthly":return`Monthly on the 1st at ${o} ${i}`}}catch{return null}}const ge=new Set(["table","aggregateTable","pivotTable","detailTable"]),be=new Set(["bar","horizontalBar","line","area","stackedArea","combo","pie","doughnut","radar","polarArea","bubble","scatter","stackedBar","stackedLine","table","pivotTable","aggregateTable","matrixTable","detailTable","kpi","pyramid","tornado","range","map","funnel","bullet","heatmap","treemap","custom"]);function ve(t){var r,o,i;const n=be.has(t.type)&&(t.type!=="custom"||!!((r=t.customCardPreferences)!=null&&r.url));return t.type==="text"||!n||le.isCardUnconfigured(t)?{formats:[],defaultFormat:null}:{formats:G({cardType:t.type,allowDownload:(o=t.preferences)==null?void 0:o.allowDownload}),defaultFormat:H({cardType:t.type,allowDownload:(i=t.preferences)==null?void 0:i.allowDownload})}}function G(t){return t.allowDownload===!1?["pdf"]:["pdf","csv"]}function H(t){return ge.has(t.cardType)&&t.allowDownload!==!1?"csv":"pdf"}function Ie(t){return t!=null&&t.role?t.type==="tenant"?t.role==="POWER_USER":["AUTHOR","ADMIN","SUPER_ADMIN"].includes(t.role):!1}function Ee(t){return t.canCreate?[...t.scheduledReportAvailable?["scheduled_report"]:[],...t.analyticalBriefingsEnabled?["analytical_briefing"]:[]]:[]}function W(t){const n=(t==null?void 0:t.channels)??[];return n.length===1&&n[0]==="EMAIL"}function Z(t){return t.body.type==="generated_analysis"?"Analytical briefing":t.body.type==="custom_message"&&t.attachments.length>0&&W(t.deliveryConfig)?t.scheduleExpr?"Scheduled report":"On-demand report":"Plain briefing"}function $e(t){const n=Z(t),e=n==="Scheduled report"||n==="On-demand report"?"report":"briefing";return{typeLabel:n,noun:e,pluralNoun:e==="report"?"reports":"briefings"}}const x="BRIEFING",J=["markdown","html"],B=["markdown"],S=20,d={name:500,description:2e3,instruction:5e4,customMessage:5e4,contentTitle:500,contentSummary:2e4,contentText:5e3,contentSql:5e4,contentItem:2e3,contentCell:500,attachmentTitle:500,presentationAudience:1e3,presentationTone:500,presentationFormat:2e3,id:500},b={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:d.contentCell,maxParagraphCharacters:d.contentText,maxFindingCharacters:d.contentText,maxListItems:100,maxKpiTiles:8},Y=new Set(J),Te=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),F={maxToolCalls:{min:1,max:100},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},Ce=new Set(["letter","legal","a4","a3","tabloid"]),Ae=new Set(["portrait","landscape"]),Se=new Set([",",";"," "]),ke=new Set(["current","all"]),xe=new Set(["concise","balanced","detailed"]),Be=new Set(["info","positive","warning","critical"]),we=new Set(["text","number","currency","percent","date","boolean"]),De=new Set(["left","center","right"]),_e=["pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","allowDownload","theme"];class C extends Error{constructor(e){super(e.map(r=>`${r.field}: ${r.message}`).join("; "));U(this,"issues");this.name="BriefingContractError",this.issues=e}}function X(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function c(t,n,e){t.push({field:n,message:e})}function g(t,n,e){return X(t)?t:(c(e,n,"Expected an object."),{})}function u(t,n,e,r){const o=new Set(e);Object.keys(t).forEach(i=>{o.has(i)||c(r,n?`${n}.${i}`:i,`Unexpected field "${i}".`)})}function y(t,n,e,r){if(typeof t!="string")return c(r,n,"Expected a string."),"";const o=t.trim();return o?(o.length>e&&c(r,n,`Must be ${e} characters or fewer.`),o):(c(r,n,"Required value cannot be empty."),"")}function h(t,n,e,r){if(t==null)return;if(typeof t!="string"){c(r,n,"Expected a string.");return}const o=t.trim();if(o)return o.length>e&&c(r,n,`Must be ${e} characters or fewer.`),o}function Fe(t,n,e,r){if(typeof t!="string")return c(r,n,"Expected a string."),"";const o=t.trim();return o.length>e&&c(r,n,`Must be ${e} characters or fewer.`),o}function Le(t,n,e){if(t!=null){if(!Number.isInteger(t)||Number(t)<0){c(e,n,"Expected a non-negative integer.");return}return Number(t)}}function E(t,n,e,r={}){if(t==null)return r.required?(c(e,n,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(t))return c(e,n,"Expected an array."),r.required?[]:void 0;const o=[];return t.forEach((i,a)=>{const l=y(i,`${n}.${a}`,d.id,e);l&&!o.includes(l)&&o.push(l)}),r.required&&o.length===0&&c(e,n,"Expected at least one evidence id."),o.length>0||r.required?o:void 0}function T(t,n,e,r){return t==null?n:typeof t!="boolean"?(c(r,e,"Expected a boolean."),n):t}function Ne(t,n){return t==null?"ACTIVE":t==="ACTIVE"||t==="PAUSED"||t==="DISABLED"?t:(c(n,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function Re(t){return t.includes("@")&&t.includes(".")&&!t.includes(" ")}function Q(t,n){if(t==null)return{type:"project"};const e=g(t,"source",n),r=e.type;return r==="project"?(u(e,"source",["type"],n),{type:"project"}):r==="dashboard"?(u(e,"source",["type","dashboardId"],n),{type:"dashboard",dashboardId:y(e.dashboardId,"source.dashboardId",d.id,n)}):(c(n,"source.type","Expected project or dashboard."),{type:"project"})}function ee(t,n){const e=g(t,"body",n),r=e.type;return r==="generated_analysis"?(u(e,"body",["type","instruction"],n),{type:"generated_analysis",instruction:y(e.instruction,"body.instruction",d.instruction,n)}):r==="custom_message"?(u(e,"body",["type","message"],n),{type:"custom_message",message:Fe(e.message,"body.message",d.customMessage,n)}):r==="none"?(u(e,"body",["type"],n),{type:"none"}):(c(n,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function Oe(t,n){if(t==null)return[...B];if(!Array.isArray(t))return c(n,"presentation.artifactFormats","Expected an array."),[...B];if(t.length===0)return c(n,"presentation.artifactFormats","Choose at least one artifact format."),[];const e=[];return t.forEach((r,o)=>{if(typeof r!="string"||!Y.has(r)){c(n,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}e.includes(r)||e.push(r)}),e}function te(t,n){if(t==null)return{artifactFormats:[...B],includeEvidence:!0,includeSql:!0};const e=g(t,"presentation",n);u(e,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format"],n);const r={artifactFormats:Oe(e.artifactFormats,n),includeEvidence:T(e.includeEvidence,!0,"presentation.includeEvidence",n),includeSql:T(e.includeSql,!0,"presentation.includeSql",n)},o=h(e.audience,"presentation.audience",d.presentationAudience,n),i=h(e.tone,"presentation.tone",d.presentationTone,n),a=h(e.format,"presentation.format",d.presentationFormat,n);return o&&(r.audience=o),i&&(r.tone=i),a&&(r.format=a),r}function Ve(t,n,e){return Array.isArray(t)?(t.length===0&&c(e,n,"Expected at least one item."),t.length>b.maxListItems&&c(e,n,`Must have ${b.maxListItems} items or fewer.`),t.slice(0,b.maxListItems).map((r,o)=>y(r,`${n}.${o}`,d.contentItem,e)).filter(Boolean)):(c(e,n,"Expected an array."),[])}function ze(t,n,e){return t===null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?typeof t=="string"&&t.length>d.contentCell?(c(e,n,`Must be ${d.contentCell} characters or fewer.`),t.slice(0,d.contentCell)):typeof t=="number"&&!Number.isFinite(t)?(c(e,n,"Expected a finite number."),null):t:(c(e,n,"Expected a string, number, boolean, or null."),null)}function Me(t,n,e){if(!Array.isArray(t))return c(e,n,"Expected an array."),[];t.length===0&&c(e,n,"Expected at least one column."),t.length>b.maxTableColumns&&c(e,n,`Must have ${b.maxTableColumns} columns or fewer.`);const r=new Set;return t.slice(0,b.maxTableColumns).map((o,i)=>{const a=`${n}.${i}`,l=g(o,a,e);u(l,a,["key","label","kind","align"],e);const f=y(l.key,`${a}.key`,d.id,e);f&&(r.has(f)&&c(e,`${a}.key`,"Column key must be unique."),r.add(f));const s=y(l.label,`${a}.label`,d.contentTitle,e),m=$(l.kind,`${a}.kind`,we,"text, number, currency, percent, date, or boolean",e),I=$(l.align,`${a}.align`,De,"left, center, or right",e);return{key:f,label:s,...m?{kind:m}:{},...I?{align:I}:{}}})}function Pe(t,n,e,r){if(!Array.isArray(t))return c(r,n,"Expected an array."),[];t.length>b.maxTableRows&&c(r,n,`Must have ${b.maxTableRows} rows or fewer.`);const o=new Set(e.map(i=>i.key).filter(Boolean));return t.slice(0,b.maxTableRows).map((i,a)=>{const l=`${n}.${a}`,f=g(i,l,r);return Object.keys(f).forEach(s=>{o.has(s)||c(r,`${l}.${s}`,`Unexpected table cell "${s}".`)}),Object.fromEntries(e.map(s=>[s.key,ze(f[s.key]??null,`${l}.${s.key}`,r)]))})}function Ue(t,n,e){const r=`content.blocks.${n}`,o=g(t,r,e),i=o.type;if(i==="heading"){u(o,r,["type","text","level","evidenceIds"],e);const a=o.level===void 0||o.level===null?void 0:o.level===2||o.level===3?o.level:void 0;o.level!==void 0&&o.level!==null&&a===void 0&&c(e,`${r}.level`,"Expected 2 or 3.");const l=E(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"heading",text:y(o.text,`${r}.text`,d.contentTitle,e),...a?{level:a}:{},...l?{evidenceIds:l}:{}}}if(i==="paragraph"){u(o,r,["type","text","evidenceIds"],e);const a=E(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"paragraph",text:y(o.text,`${r}.text`,d.contentText,e),...a?{evidenceIds:a}:{}}}if(i==="finding"){u(o,r,["type","title","text","severity","evidenceIds"],e);const a=h(o.title,`${r}.title`,d.contentTitle,e),l=$(o.severity,`${r}.severity`,Be,"info, positive, warning, or critical",e);return{type:"finding",...a?{title:a}:{},text:y(o.text,`${r}.text`,d.contentText,e),...l?{severity:l}:{},evidenceIds:E(o.evidenceIds,`${r}.evidenceIds`,e,{required:!0})??[]}}if(i==="bullets"||i==="actions"||i==="limitations"){u(o,r,["type","title","items","evidenceIds"],e);const a=h(o.title,`${r}.title`,d.contentTitle,e),l=E(o.evidenceIds,`${r}.evidenceIds`,e);return{type:i,...a?{title:a}:{},items:Ve(o.items,`${r}.items`,e),...l?{evidenceIds:l}:{}}}if(i==="metric"){u(o,r,["type","label","value","previousValue","delta","unit","evidenceIds"],e);const a=typeof o.value=="string"||typeof o.value=="number"?o.value:"";a===""&&c(e,`${r}.value`,"Expected a string or number.");const l=o.previousValue===void 0||o.previousValue===null||typeof o.previousValue=="string"||typeof o.previousValue=="number"?o.previousValue:void 0;o.previousValue!==void 0&&o.previousValue!==null&&l===void 0&&c(e,`${r}.previousValue`,"Expected a string, number, or null.");const f=o.delta===void 0||o.delta===null||typeof o.delta=="string"||typeof o.delta=="number"?o.delta:void 0;o.delta!==void 0&&o.delta!==null&&f===void 0&&c(e,`${r}.delta`,"Expected a string, number, or null.");const s=h(o.unit,`${r}.unit`,d.contentTitle,e),m=E(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"metric",label:y(o.label,`${r}.label`,d.contentTitle,e),value:a,...l!==void 0?{previousValue:l}:{},...f!==void 0?{delta:f}:{},...s?{unit:s}:{},...m?{evidenceIds:m}:{}}}if(i==="kpi_grid"){u(o,r,["type","title","tiles","evidenceIds"],e);const a=h(o.title,`${r}.title`,d.contentTitle,e),l=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||c(e,`${r}.tiles`,"Expected an array."),l.length===0&&c(e,`${r}.tiles`,"Expected at least one tile."),l.length>b.maxKpiTiles&&c(e,`${r}.tiles`,`Must have ${b.maxKpiTiles} tiles or fewer.`);const f=l.slice(0,b.maxKpiTiles).map((m,I)=>{const v=`${r}.tiles.${I}`,p=g(m,v,e);u(p,v,["label","value","previousValue","delta","unit","evidenceIds"],e);const A=typeof p.value=="string"||typeof p.value=="number"?p.value:"";A===""&&c(e,`${v}.value`,"Expected a string or number.");const D=p.previousValue===void 0||p.previousValue===null||typeof p.previousValue=="string"||typeof p.previousValue=="number"?p.previousValue:void 0;p.previousValue!==void 0&&p.previousValue!==null&&D===void 0&&c(e,`${v}.previousValue`,"Expected a string, number, or null.");const _=p.delta===void 0||p.delta===null||typeof p.delta=="string"||typeof p.delta=="number"?p.delta:void 0;p.delta!==void 0&&p.delta!==null&&_===void 0&&c(e,`${v}.delta`,"Expected a string, number, or null.");const M=h(p.unit,`${v}.unit`,d.contentTitle,e),P=E(p.evidenceIds,`${v}.evidenceIds`,e);return{label:y(p.label,`${v}.label`,d.contentTitle,e),value:A,...D!==void 0?{previousValue:D}:{},..._!==void 0?{delta:_}:{},...M?{unit:M}:{},...P?{evidenceIds:P}:{}}}),s=E(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"kpi_grid",...a?{title:a}:{},tiles:f,...s?{evidenceIds:s}:{}}}if(i==="progress"){u(o,r,["type","label","value","detail","evidenceIds"],e);const a=typeof o.value=="number"&&Number.isFinite(o.value)?o.value:0;(typeof o.value!="number"||!Number.isFinite(o.value))&&c(e,`${r}.value`,"Expected a finite number.");const l=h(o.detail,`${r}.detail`,d.contentText,e),f=E(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"progress",label:y(o.label,`${r}.label`,d.contentTitle,e),value:a,...l?{detail:l}:{},...f?{evidenceIds:f}:{}}}if(i==="table"){u(o,r,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],e);const a=Me(o.columns,`${r}.columns`,e),l=h(o.title,`${r}.title`,d.contentTitle,e),f=h(o.id,`${r}.id`,d.id,e),s=h(o.caption,`${r}.caption`,d.contentItem,e),m=Le(o.totalRows,`${r}.totalRows`,e),I=E(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"table",...f?{id:f}:{},...l?{title:l}:{},columns:a,rows:Pe(o.rows,`${r}.rows`,a,e),...s?{caption:s}:{},...m!==void 0?{totalRows:m}:{},...I?{evidenceIds:I}:{}}}if(i==="evidence_appendix"){u(o,r,["type","title","evidenceIds"],e);const a=h(o.title,`${r}.title`,d.contentTitle,e);return{type:"evidence_appendix",...a?{title:a}:{},evidenceIds:E(o.evidenceIds,`${r}.evidenceIds`,e,{required:!0})??[]}}if(i==="sql"){u(o,r,["type","title","sql","evidenceIds"],e);const a=h(o.title,`${r}.title`,d.contentTitle,e),l=y(o.sql,`${r}.sql`,d.contentSql,e),f=E(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"sql",...a?{title:a}:{},sql:l,...f?{evidenceIds:f}:{}}}return c(e,`${r}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."),{type:"paragraph",text:""}}function ne(t){const n=[],e=g(t,"content",n);u(e,"content",["version","title","summary","blocks"],n),e.version!==1&&c(n,"content.version","Expected version 1.");const r=h(e.title,"content.title",d.contentTitle,n),o=h(e.summary,"content.summary",d.contentSummary,n);Array.isArray(e.blocks)||c(n,"content.blocks","Expected an array.");const i=Array.isArray(e.blocks)?e.blocks:[];i.length===0&&c(n,"content.blocks","Expected at least one block."),i.length>b.maxBlocks&&c(n,"content.blocks",`Must have ${b.maxBlocks} blocks or fewer.`);const a=i.slice(0,b.maxBlocks).map((l,f)=>Ue(l,f,n));return R(n),{version:1,...r?{title:r}:{},...o?{summary:o}:{},blocks:a}}function qe(t){try{return{valid:!0,value:ne(t),issues:[]}}catch(n){if(n instanceof C)return{valid:!1,issues:n.issues};throw n}}function k(t,n,e,r){return typeof t=="string"&&e.includes(t)?t:(c(r,n,`Expected ${e.join(" or ")}.`),e[0])}function $(t,n,e,r,o){if(t!=null){if(typeof t=="string"&&e.has(t))return t;c(o,n,`Expected ${r}.`)}}function je(t,n,e){if(t!=null){if(!Array.isArray(t)){c(e,n,"Expected an array.");return}return t}}function Ke(t,n,e){if(t!=null){if(!X(t)){c(e,n,"Expected an object.");return}return t}}function Ge(t,n,e){if(t==null)return;const r=g(t,n,e);u(r,n,_e,e);const o={},i=$(r.pageSize,`${n}.pageSize`,Ce,"letter, legal, a4, a3, or tabloid",e),a=$(r.orientation,`${n}.orientation`,Ae,"portrait or landscape",e),l=$(r.delimiter,`${n}.delimiter`,Se,"comma, semicolon, or tab",e),f=$(r.sheetSelection,`${n}.sheetSelection`,ke,"current or all",e);i&&(o.pageSize=i),a&&(o.orientation=a),l&&(o.delimiter=l),f&&(o.sheetSelection=f);for(const s of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues","allowDownload"])if(!(r[s]===void 0||r[s]===null)){if(typeof r[s]!="boolean"){c(e,`${n}.${s}`,"Expected a boolean.");continue}o[s]=r[s]}for(const s of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const m=h(r[s],`${n}.${s}`,d.id,e);m&&(o[s]=m)}for(const s of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const m=je(r[s],`${n}.${s}`,e);m&&(o[s]=m)}for(const s of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const m=Ke(r[s],`${n}.${s}`,e);m&&(o[s]=m)}return Object.keys(o).length>0?o:void 0}function L(t,n,e,r){const o=h(n,e,d.attachmentTitle,r);return o&&(t.title=o),t}function N(t,n,e,r){const o=Ge(n,e,r);return o&&(t.settings=o),t}function He(t,n,e){const r=`attachments.${n}`,o=g(t,r,e),i=o.type;if(i==="dashboard"){u(o,r,["type","dashboardId","format","title","settings"],e);const a=L({type:"dashboard",dashboardId:y(o.dashboardId,`${r}.dashboardId`,d.id,e),format:k(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return N(a,o.settings,`${r}.settings`,e)}if(i==="dashboard_sheet"||i==="document_sheet"){u(o,r,["type","dashboardId","sheetId","format","title","settings"],e);const a=L({type:i,dashboardId:y(o.dashboardId,`${r}.dashboardId`,d.id,e),sheetId:y(o.sheetId,`${r}.sheetId`,d.id,e),format:k(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return N(a,o.settings,`${r}.settings`,e)}if(i==="card"){u(o,r,["type","dashboardId","cardId","format","title","settings"],e);const a=L({type:"card",dashboardId:y(o.dashboardId,`${r}.dashboardId`,d.id,e),cardId:y(o.cardId,`${r}.cardId`,d.id,e),format:k(o.format,`${r}.format`,["csv","pdf"],e)},o.title,`${r}.title`,e);return N(a,o.settings,`${r}.settings`,e)}return c(e,`${r}.type`,"Expected dashboard, dashboard_sheet, document_sheet, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function We(t){switch(t.type){case"dashboard":return`${t.type}:${t.dashboardId}:${t.format}`;case"dashboard_sheet":case"document_sheet":return`${t.type}:${t.dashboardId}:${t.sheetId}:${t.format}`;case"card":return`${t.type}:${t.dashboardId}:${t.cardId}:${t.format}`}}function re(t,n){if(t==null)return[];if(!Array.isArray(t))return c(n,"attachments","Expected an array."),[];t.length>S&&c(n,"attachments",`Choose ${S} attachments or fewer.`);const e=t.slice(0,S).map((o,i)=>He(o,i,n)),r=new Set;return e.forEach((o,i)=>{const a=We(o);r.has(a)&&c(n,`attachments.${i}`,"Duplicate attachment."),r.add(a)}),e}function oe(t,n){if(t==null)return;const e=g(t,"limits",n);u(e,"limits",Object.keys(F),n);const r={};return Object.keys(F).forEach(o=>{const i=e[o];if(i==null)return;const a=F[o];if(typeof i!="number"||!Number.isInteger(i)||i<a.min||i>a.max){c(n,`limits.${o}`,`Expected an integer between ${a.min} and ${a.max}.`);return}r[o]=i}),Object.keys(r).length>0?r:void 0}function R(t){if(t.length>0)throw new C(t)}function ie(t,n,e){!(t.type==="generated_analysis"||t.type==="custom_message"&&!!t.message.trim())&&n.length===0&&c(e,"body","Add briefing instructions, a custom message, or at least one attachment.")}function O(t){const n=[],e=g(t,"jobConfig",n);u(e,"jobConfig",["kind","source","body","attachments","presentation","limits"],n),e.kind!==x&&c(n,"kind","Expected BRIEFING.");const r=Q(e.source,n),o=ee(e.body,n),i=re(e.attachments,n),a=te(e.presentation,n),l=oe(e.limits,n);return ie(o,i,n),R(n),{kind:x,source:r,body:o,attachments:i,presentation:a,...l?{limits:l}:{}}}function Ze(t){return O({...t,kind:x})}function V(t,n,e,r="deliveryConfig.recipients"){const o=`${r}.${n}`,i=g(t,o,e),a=i.type;if(a==="email"){u(i,o,["type","address","name"],e);const l=y(i.address,`${o}.address`,d.id,e),f=h(i.name,`${o}.name`,d.attachmentTitle,e);return l&&!Re(l)&&c(e,`${o}.address`,"Email address is invalid."),{type:"email",address:l,...f?{name:f}:{}}}return a==="user"?(u(i,o,["type","userId"],e),{type:"user",userId:y(i.userId,`${o}.userId`,d.id,e)}):a==="tenant_user"?(u(i,o,["type","tenantUserId"],e),{type:"tenant_user",tenantUserId:y(i.tenantUserId,`${o}.tenantUserId`,d.id,e)}):a==="group"?(u(i,o,["type","groupId"],e),{type:"group",groupId:y(i.groupId,`${o}.groupId`,d.id,e)}):(c(e,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function Je(t,n){return t==null?[]:Array.isArray(t)?t.map((e,r)=>V(e,r,n)):(c(n,"deliveryConfig.recipients","Expected an array."),[])}function Ye(t,n){if(!Array.isArray(t))return c(n,"deliveryConfig.channels","Expected an array."),[];const e=[];return t.forEach((r,o)=>{if(!z(r)){c(n,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}e.includes(r)||e.push(r)}),e}function Xe(t,n,e){if(t==null)return;const r=g(t,n,e),o={};return Object.entries(r).forEach(([i,a])=>{if(typeof a!="string"){c(e,`${n}.${i}`,"Expected a string.");return}o[i]=a.trim()}),Object.keys(o).length>0?o:void 0}function Qe(t,n,e){if(t==null)return;const r=g(t,n,e);u(r,n,["url","method","headers","secretEncrypted"],e);const o=r.method===void 0||r.method===null?void 0:k(r.method,`${n}.method`,["POST","PUT"],e),i=Xe(r.headers,`${n}.headers`,e),a=h(r.secretEncrypted,`${n}.secretEncrypted`,2e3,e);return{url:y(r.url,`${n}.url`,2e3,e),...o?{method:o}:{},...i?{headers:i}:{},...a?{secretEncrypted:a}:{}}}function et(t,n,e){const r=g(t,n,e),o=r.type;if(o==="channel"){u(r,n,["type","channelId","channelName","isPrivate"],e);const i=h(r.channelName,`${n}.channelName`,d.attachmentTitle,e),a=r.isPrivate===void 0||r.isPrivate===null?void 0:T(r.isPrivate,!1,`${n}.isPrivate`,e);return{type:"channel",channelId:y(r.channelId,`${n}.channelId`,d.id,e),...i?{channelName:i}:{},...a!==void 0?{isPrivate:a}:{}}}return o==="dm"?(u(r,n,["type","recipient"],e),c(e,`${n}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:V(r.recipient,0,e,`${n}.recipient`)}):(c(e,`${n}.type`,"Expected channel."),{type:"channel",channelId:""})}function tt(t,n,e){if(t==null)return;if(!Array.isArray(t)){c(e,n,"Expected an array.");return}const r=t.map((o,i)=>V(o,i,e,n));return r.length>0?r:void 0}function nt(t,n,e){if(t==null)return;const r=g(t,n,e);u(r,n,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],e);const o=tt(r.threadMentions,`${n}.threadMentions`,e),i=T(r.postThreadDetail,!0,`${n}.postThreadDetail`,e),a=T(r.includeDashboardLink,!0,`${n}.includeDashboardLink`,e),l=T(r.includeBriefingLink,!0,`${n}.includeBriefingLink`,e);return{destination:et(r.destination,`${n}.destination`,e),...o?{threadMentions:o}:{},...r.postThreadDetail!==void 0?{postThreadDetail:i}:{},...r.includeDashboardLink!==void 0?{includeDashboardLink:a}:{},...r.includeBriefingLink!==void 0?{includeBriefingLink:l}:{}}}function rt(t,n,e){const r=g(t,n,e);u(r,n,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],e);const o=$(r.formatProfile,`${n}.formatProfile`,xe,"concise, balanced, or detailed",e),i=h(r.subjectOverride,`${n}.subjectOverride`,500,e),a=h(r.titleOverride,`${n}.titleOverride`,500,e),l=h(r.summaryOverride,`${n}.summaryOverride`,2e3,e),f=T(r.actionBlockVisible,!0,`${n}.actionBlockVisible`,e),s=Qe(r.webhookConfig,`${n}.webhookConfig`,e),m=nt(r.slackConfig,`${n}.slackConfig`,e);return{...o?{formatProfile:o}:{},...i?{subjectOverride:i}:{},...a?{titleOverride:a}:{},...l?{summaryOverride:l}:{},...r.actionBlockVisible!==void 0?{actionBlockVisible:f}:{},...m?{slackConfig:m}:{},...s?{webhookConfig:s}:{}}}function ot(t,n){if(t==null)return;const e=g(t,"deliveryConfig.channelConfigs",n),r={};return Object.entries(e).forEach(([o,i])=>{if(!z(o)){c(n,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}r[o]=rt(i,`deliveryConfig.channelConfigs.${o}`,n)}),Object.keys(r).length>0?r:void 0}function it(t,n){var f,s,m;if(t==null)return null;const e=g(t,"deliveryConfig",n);u(e,"deliveryConfig",["recipients","channels","channelConfigs"],n);const r=ot(e.channelConfigs,n),o=Je(e.recipients,n),i=Ye(e.channels,n),a=((s=(f=r==null?void 0:r.SLACK)==null?void 0:f.slackConfig)==null?void 0:s.destination.type)==="channel"&&!!r.SLACK.slackConfig.destination.channelId.trim();return i.some(I=>I!=="SLACK")&&o.length===0&&c(n,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),i.length===0&&c(n,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),i.includes("SLACK")&&!a&&c(n,"deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId","Choose a Slack channel destination."),!i.includes("SLACK")&&((m=r==null?void 0:r.SLACK)!=null&&m.slackConfig)&&c(n,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:i,...r?{channelConfigs:r}:{}}}function w(t){const n=[],e=g(t,"draft",n);u(e,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],n);const r=y(e.name,"name",d.name,n),o=h(e.description,"description",d.description,n)??null,i=h(e.scheduleExpr,"scheduleExpr",500,n)??null,a=h(e.timezone,"timezone",200,n)??"UTC",l=Ne(e.status,n),f=Q(e.source,n),s=ee(e.body,n),m=re(e.attachments,n),I=te(e.presentation,n),v=oe(e.limits,n),p=it(e.deliveryConfig,n);return ie(s,m,n),R(n),{name:r,description:o,status:l,scheduleExpr:i,timezone:a,source:f,body:s,attachments:m,presentation:I,...v?{limits:v}:{},deliveryConfig:p}}function at(t){return w(t)}function ct(t){return w(t)}function lt(t){try{return{valid:!0,value:w(t),issues:[]}}catch(n){if(n instanceof C)return{valid:!1,issues:n.issues};throw n}}function dt(t){try{return{valid:!0,value:O(t),issues:[]}}catch(n){if(n instanceof C)return{valid:!1,issues:n.issues};throw n}}function st(t){return typeof t=="string"&&Y.has(t)}function z(t){return typeof t=="string"&&Te.has(t)}exports.BRIEFING_ARTIFACT_FORMATS=J;exports.BRIEFING_CONTENT_LIMITS=b;exports.BRIEFING_KIND=x;exports.BRIEFING_TEXT_LIMITS=d;exports.BriefingContractError=C;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=B;exports.DEFAULT_BRIEFING_SCHEDULE=se;exports.MAX_BRIEFING_ATTACHMENTS=S;exports.buildBriefingJobConfig=Ze;exports.buildBriefingScheduleExpr=me;exports.buildCreateBriefingRequest=at;exports.buildUpdateBriefingRequest=ct;exports.canCreateBriefingForUser=Ie;exports.describeBriefingSchedule=ye;exports.getBriefingCardAttachmentCapability=ve;exports.getBriefingCardAttachmentFormats=G;exports.getBriefingCreationIntents=Ee;exports.getBriefingDisplayTypeLabel=Z;exports.getBriefingPresentation=$e;exports.getDefaultBriefingCardAttachmentFormat=H;exports.isBriefingArtifactFormat=st;exports.isBriefingDeliveryChannel=z;exports.isEmailOnlyBriefingDelivery=W;exports.isValidBriefingTimezone=fe;exports.normalizeBriefingContentDocument=ne;exports.normalizeBriefingDraft=w;exports.normalizeBriefingJobConfig=O;exports.parseBriefingScheduleExpr=K;exports.validateBriefingContentDocument=qe;exports.validateBriefingDraft=lt;exports.validateBriefingJobConfig=dt;
|
|
1
|
+
"use strict";var ye=Object.defineProperty;var ve=(t,n,e)=>n in t?ye(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e;var Z=(t,n,e)=>ve(t,typeof n!="symbol"?n+"":n,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const z=require("../chunks/numeric-presentation-Dlb-Dk4c.js"),be=require("../report-runtime-context/index.cjs"),$e=require("../chunks/card-config-utils-15sRtebL.js");function Ie(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function E(t,n,e){return Ie(t)?t:(e.push({field:n,message:"Expected an object."}),{})}function C(t,n,e,r){const o=new Set(e);Object.keys(t).forEach(i=>{o.has(i)||r.push({field:`${n}.${i}`,message:"Unexpected property."})})}function k(t,n,e,r,o={}){if(t==null)return;if(typeof t!="string"){r.push({field:n,message:"Expected a string."});return}const i=o.trim===!1?t:t.trim();if(!o.allowEmpty&&i.length===0){r.push({field:n,message:"Expected a non-empty string."});return}if(i.length>e){r.push({field:n,message:`Expected ${e} characters or fewer.`});return}return i}function V(t,n,e){const r=k(t,n,2e3,e);if(r)try{return new URL(r),r}catch{e.push({field:n,message:"Expected an absolute URL."});return}}function J(t,n,e){const r=E(t,n,e);C(r,n,["tokens","components"],e);const o={};if(r.tokens!==void 0){const i=E(r.tokens,`${n}.tokens`,e);C(i,`${n}.tokens`,["color","typography"],e);const a={};if(i.color!==void 0){const c=E(i.color,`${n}.tokens.color`,e),d=["background","foreground","muted","mutedForeground","border","primary","primaryForeground","positive","negative","warning","info"];C(c,`${n}.tokens.color`,d,e);const s={};d.forEach(u=>{const v=k(c[u],`${n}.tokens.color.${u}`,120,e);v!==void 0&&(s[u]=v)}),a.color=s}if(i.typography!==void 0){const c=E(i.typography,`${n}.tokens.typography`,e);C(c,`${n}.tokens.typography`,["fontFamily","monoFontFamily"],e);const d=k(c.fontFamily,`${n}.tokens.typography.fontFamily`,500,e,{allowEmpty:!0}),s=k(c.monoFontFamily,`${n}.tokens.typography.monoFontFamily`,500,e,{allowEmpty:!0});a.typography={...d!==void 0?{fontFamily:d}:{},...s!==void 0?{monoFontFamily:s}:{}}}o.tokens=a}if(r.components!==void 0){const i=E(r.components,`${n}.components`,e);if(C(i,`${n}.components`,["chart"],e),i.chart!==void 0){const a=E(i.chart,`${n}.components.chart`,e);C(a,`${n}.components.chart`,["palette"],e);let c;a.palette!==void 0&&(Array.isArray(a.palette)?a.palette.length>20?e.push({field:`${n}.components.chart.palette`,message:"Expected 20 colors or fewer."}):c=a.palette.map((d,s)=>k(d,`${n}.components.chart.palette.${s}`,120,e)).filter(d=>d!==void 0):e.push({field:`${n}.components.chart.palette`,message:"Expected an array."})),o.components={chart:c?{palette:c}:{}}}}return o}function Ee(t,n){const e="presentation.appearance",r=E(t,e,n);C(r,e,["version","schemes"],n);const o={};if(r.version!==void 0&&(typeof r.version!="number"||!Number.isFinite(r.version)?n.push({field:`${e}.version`,message:"Expected a number."}):o.version=r.version),r.schemes!==void 0){const i=E(r.schemes,`${e}.schemes`,n);C(i,`${e}.schemes`,["light","dark"],n),o.schemes={...i.light!==void 0?{light:J(i.light,`${e}.schemes.light`,n)}:{},...i.dark!==void 0?{dark:J(i.dark,`${e}.schemes.dark`,n)}:{}}}return o}function Ce(t,n){const e="presentation.brandOverrides",r=E(t,e,n);C(r,e,["brandName","logoUrl","link"],n);const o=k(r.brandName,`${e}.brandName`,200,n),i=V(r.logoUrl,`${e}.logoUrl`,n),a=k(r.link,`${e}.link`,120,n);return{...o!==void 0?{brandName:o}:{},...i!==void 0?{logoUrl:i}:{},...a!==void 0?{link:a}:{}}}function Te(t,n){const e="presentation.fragments",r=E(t,e,n),o=["preHeaderText","headerBannerHtml","signatureHtml","footerHtml","disclaimerHtml","unsubscribeUrl"];C(r,e,o,n);const i={};return o.forEach(a=>{const c=a==="unsubscribeUrl"?V(r[a],`${e}.${a}`,n):k(r[a],`${e}.${a}`,a==="preHeaderText"?200:5e3,n,{trim:a==="preHeaderText"});c!==void 0&&(i[a]=c)}),i}function ke(t){const n=[],e={};if(t.appearance!==void 0&&(e.appearance=Ee(t.appearance,n)),t.brandOverrides!==void 0&&(e.brandOverrides=Ce(t.brandOverrides,n)),t.fragments!==void 0&&(e.fragments=Te(t.fragments,n)),t.viewUrl!==void 0){const r=V(t.viewUrl,"presentation.viewUrl",n);r!==void 0&&(e.viewUrl=r)}return{value:e,issues:n}}const Y=["SUN","MON","TUE","WED","THU","FRI","SAT"],Ae=new Map(Y.map((t,n)=>[t,n])),xe={cadence:"weekly",hour:9,minute:0,weekdays:[1]};function Se(t){if(typeof t!="string"||t.length===0||t!==t.trim()||/^(?:(?:UTC|GMT)[+-]|[+-]\d{2}:\d{2}$)/.test(t))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:t}).format(),!0}catch{return!1}}function Be(t){return Number.isInteger(t.minute)&&t.minute>=0&&t.minute<=59&&Number.isInteger(t.hour)&&t.hour>=0&&t.hour<=23}function X(t){if(t.length===0)return null;const n=[...t].sort((e,r)=>e-r);return n.some((e,r)=>!Number.isInteger(e)||e<0||e>6||r>0&&e===n[r-1])?null:n}function we(t){if(!Be(t))throw new Error("Choose a valid schedule time.");const n=`${t.minute} ${t.hour}`;switch(t.cadence){case"daily":return`${n} * * *`;case"weekly":{const e=X(t.weekdays);if(!e)throw new Error("Choose at least one weekday.");return`${n} * * ${e.map(r=>Y[r]).join(",")}`}case"twice_monthly":return`${n} 1,15 * *`;case"monthly":return`${n} 1 * *`}}function Q(t){if(typeof t!="string"||t.length===0)return{ok:!1,issue:"Choose a supported schedule."};if(t!==t.trim()||t.includes(" "))return{ok:!1,issue:"Choose a supported schedule."};const n=t.split(" ");if(n.length!==5)return{ok:!1,issue:"Choose a supported schedule."};const[e,r,o,i,a]=n;if(!/^(0|[1-9]\d?)$/.test(e)||!/^(0|[1-9]\d?)$/.test(r))return{ok:!1,issue:"Choose a supported schedule."};const c=Number(e),d=Number(r);if(c>59||d>23||i!=="*")return{ok:!1,issue:"Choose a supported schedule."};if(o==="*"&&a==="*")return{ok:!0,value:{cadence:"daily",hour:d,minute:c,weekdays:[]}};if(o==="*"&&a!=="*"){const u=a.split(",").map(g=>Ae.get(g));if(u.some(g=>g===void 0))return{ok:!1,issue:"Choose a supported schedule."};const v=u,b=X(v);return!b||b.some((g,B)=>g!==v[B])?{ok:!1,issue:"Choose a supported schedule."}:{ok:!0,value:{cadence:"weekly",hour:d,minute:c,weekdays:b}}}return o==="1,15"&&a==="*"?{ok:!0,value:{cadence:"twice_monthly",hour:d,minute:c,weekdays:[]}}:o==="1"&&a==="*"?{ok:!0,value:{cadence:"monthly",hour:d,minute:c,weekdays:[]}}:{ok:!1,issue:"Choose a supported schedule."}}function De(t,n,e){return new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",timeZone:"UTC"}).format(new Date(Date.UTC(2020,0,1,t,n)))}function _e(t,n){var e;if(t==="UTC")return"UTC";try{return((e=new Intl.DateTimeFormat(n,{timeZone:t,timeZoneName:"longGeneric"}).formatToParts(new Date(Date.UTC(2020,0,1))).find(o=>o.type==="timeZoneName"))==null?void 0:e.value)??t}catch{return null}}function Fe(t,n,e="en-US"){const r=Q(t);if(!r.ok)return null;try{const o=De(r.value.hour,r.value.minute,e),i=_e(n,e);if(!i)return null;switch(r.value.cadence){case"daily":return`Daily at ${o} ${i}`;case"weekly":{const a=new Intl.DateTimeFormat(e,{weekday:"long",timeZone:"UTC"});return`${r.value.weekdays.map(d=>a.format(new Date(Date.UTC(2023,0,1+d)))).join(" and ")} at ${o} ${i}`}case"twice_monthly":return`On the 1st and 15th at ${o} ${i}`;case"monthly":return`Monthly on the 1st at ${o} ${i}`}}catch{return null}}const Ne=new Set(["table","aggregateTable","pivotTable","detailTable"]),Re=new Set(["bar","horizontalBar","line","area","stackedArea","combo","pie","doughnut","radar","polarArea","bubble","scatter","stackedBar","stackedLine","table","pivotTable","aggregateTable","matrixTable","detailTable","kpi","pyramid","tornado","range","map","funnel","bullet","heatmap","treemap","custom"]);function Oe(t){var r,o,i;const n=Re.has(t.type)&&(t.type!=="custom"||!!((r=t.customCardPreferences)!=null&&r.url));return t.type==="text"||!n||$e.isCardUnconfigured(t)?{formats:[],defaultFormat:null}:{formats:ee({cardType:t.type,allowDownload:(o=t.preferences)==null?void 0:o.allowDownload}),defaultFormat:te({cardType:t.type,allowDownload:(i=t.preferences)==null?void 0:i.allowDownload})}}function ee(t){return t.allowDownload===!1?["pdf"]:["pdf","csv"]}function te(t){return Ne.has(t.cardType)&&t.allowDownload!==!1?"csv":"pdf"}function Le(t){return t!=null&&t.role?t.type==="tenant"?t.role==="POWER_USER":["AUTHOR","ADMIN","SUPER_ADMIN"].includes(t.role):!1}function ze(t){return t.canCreate?[...t.scheduledReportAvailable?["scheduled_report"]:[],...t.analyticalBriefingsEnabled?["analytical_briefing"]:[]]:[]}function ne(t){const n=(t==null?void 0:t.channels)??[];return n.length===1&&n[0]==="EMAIL"}function re(t){return t.body.type==="generated_analysis"?"Analytical briefing":t.body.type==="custom_message"&&t.attachments.length>0&&ne(t.deliveryConfig)?t.scheduleExpr?"Scheduled report":"On-demand report":"Plain briefing"}function Ve(t){const n=re(t),e=n==="Scheduled report"||n==="On-demand report"?"report":"briefing";return{typeLabel:n,noun:e,pluralNoun:e==="report"?"reports":"briefings"}}const _="BRIEFING",oe=["markdown","html"],F=["markdown"],w=20,m={name:500,description:2e3,instruction:5e4,customMessage:5e4,contentTitle:500,contentSummary:2e4,contentText:5e3,contentSql:5e4,contentItem:2e3,contentCell:500,attachmentTitle:500,presentationAudience:1e3,presentationTone:500,presentationFormat:2e3,id:500},$={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:m.contentCell,maxParagraphCharacters:m.contentText,maxFindingCharacters:m.contentText,maxListItems:100,maxKpiTiles:8};function ie(t){if(t===null||typeof t!="object"||Array.isArray(t))return!1;const n=t;if(typeof n.value!="number"||!Number.isFinite(n.value))return!1;const e=n.target;if(e===null||typeof e!="object"||Array.isArray(e))return!1;const r=e;return(r.kind==="metric"&&typeof r.metricId=="string"&&!!r.metricId.trim()||r.kind==="column"&&typeof r.columnKey=="string"&&!!r.columnKey.trim()||r.kind==="matrix_measure"&&typeof r.measureId=="string"&&!!r.measureId.trim())&&z.parseResolvedNumericCanonicalFormat(n.format).ok}function ae(t){return t==null?"":ie(t)?z.formatNumericCanonical(t.value,t.format):String(t)}function Ue(t){return[t.delta,t.percentChange].filter(n=>n!=null).map(ae).filter(Boolean).join(" / ")}const ce=new Set(oe),Me=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),R={maxToolCalls:{min:1,max:100},maxPlanningIterations:{min:1,max:10},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},Pe=new Set(["letter","legal","a4","a3","tabloid"]),je=new Set(["portrait","landscape"]),Ke=new Set([",",";"," "]),qe=new Set(["current","all"]),Ge=new Set(["concise","balanced","detailed"]),He=new Set(["info","positive","warning","critical"]),We=new Set(["text","number","currency","percent","date","boolean"]),Ze=new Set(["left","center","right"]),Je=["pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","allowDownload","theme"];class S extends Error{constructor(e){super(e.map(r=>`${r.field}: ${r.message}`).join("; "));Z(this,"issues");this.name="BriefingContractError",this.issues=e}}function le(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function l(t,n,e){t.push({field:n,message:e})}function y(t,n,e){return le(t)?t:(l(e,n,"Expected an object."),{})}function f(t,n,e,r){const o=new Set(e);Object.keys(t).forEach(i=>{o.has(i)||l(r,n?`${n}.${i}`:i,`Unexpected field "${i}".`)})}function p(t,n,e,r){if(typeof t!="string")return l(r,n,"Expected a string."),"";const o=t.trim();return o?(o.length>e&&l(r,n,`Must be ${e} characters or fewer.`),o):(l(r,n,"Required value cannot be empty."),"")}function h(t,n,e,r){if(t==null)return;if(typeof t!="string"){l(r,n,"Expected a string.");return}const o=t.trim();if(o)return o.length>e&&l(r,n,`Must be ${e} characters or fewer.`),o}function Ye(t,n,e,r){if(typeof t!="string")return l(r,n,"Expected a string."),"";const o=t.trim();return o.length>e&&l(r,n,`Must be ${e} characters or fewer.`),o}function Xe(t,n,e){if(t!=null){if(!Number.isInteger(t)||Number(t)<0){l(e,n,"Expected a non-negative integer.");return}return Number(t)}}function I(t,n,e,r={}){if(t==null)return r.required?(l(e,n,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(t))return l(e,n,"Expected an array."),r.required?[]:void 0;const o=[];return t.forEach((i,a)=>{const c=p(i,`${n}.${a}`,m.id,e);c&&!o.includes(c)&&o.push(c)}),r.required&&o.length===0&&l(e,n,"Expected at least one evidence id."),o.length>0||r.required?o:void 0}function x(t,n,e,r){return t==null?n:typeof t!="boolean"?(l(r,e,"Expected a boolean."),n):t}function Qe(t,n){return t==null?"ACTIVE":t==="ACTIVE"||t==="PAUSED"||t==="DISABLED"?t:(l(n,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function et(t){return t.includes("@")&&t.includes(".")&&!t.includes(" ")}function de(t,n){if(t==null)return{type:"project"};const e=y(t,"source",n),r=e.type;return r==="project"?(f(e,"source",["type"],n),{type:"project"}):r==="dashboard"?(f(e,"source",["type","dashboardId"],n),{type:"dashboard",dashboardId:p(e.dashboardId,"source.dashboardId",m.id,n)}):(l(n,"source.type","Expected project or dashboard."),{type:"project"})}function se(t,n){const e=y(t,"body",n),r=e.type;return r==="generated_analysis"?(f(e,"body",["type","instruction"],n),{type:"generated_analysis",instruction:p(e.instruction,"body.instruction",m.instruction,n)}):r==="custom_message"?(f(e,"body",["type","message"],n),{type:"custom_message",message:Ye(e.message,"body.message",m.customMessage,n)}):r==="none"?(f(e,"body",["type"],n),{type:"none"}):(l(n,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function tt(t,n){if(t==null)return[...F];if(!Array.isArray(t))return l(n,"presentation.artifactFormats","Expected an array."),[...F];if(t.length===0)return l(n,"presentation.artifactFormats","Choose at least one artifact format."),[];const e=[];return t.forEach((r,o)=>{if(typeof r!="string"||!ce.has(r)){l(n,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}e.includes(r)||e.push(r)}),e}function me(t,n){if(t==null)return{artifactFormats:[...F],includeEvidence:!0,includeSql:!0};const e=y(t,"presentation",n);f(e,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format","appearance","brandOverrides","fragments","viewUrl"],n);const r={artifactFormats:tt(e.artifactFormats,n),includeEvidence:x(e.includeEvidence,!0,"presentation.includeEvidence",n),includeSql:x(e.includeSql,!0,"presentation.includeSql",n)},o=h(e.audience,"presentation.audience",m.presentationAudience,n),i=h(e.tone,"presentation.tone",m.presentationTone,n),a=h(e.format,"presentation.format",m.presentationFormat,n);o&&(r.audience=o),i&&(r.tone=i),a&&(r.format=a);const c=ke(e);return c.issues.forEach(d=>l(n,d.field,d.message)),Object.assign(r,c.value),r}function nt(t,n,e){return Array.isArray(t)?(t.length===0&&l(e,n,"Expected at least one item."),t.length>$.maxListItems&&l(e,n,`Must have ${$.maxListItems} items or fewer.`),t.slice(0,$.maxListItems).map((r,o)=>p(r,`${n}.${o}`,m.contentItem,e)).filter(Boolean)):(l(e,n,"Expected an array."),[])}function rt(t,n,e){const r=y(t,n,e);if(r.kind==="metric")return f(r,n,["kind","metricId"],e),{kind:"metric",metricId:p(r.metricId,`${n}.metricId`,m.id,e)};if(r.kind==="column")return f(r,n,["kind","columnKey"],e),{kind:"column",columnKey:p(r.columnKey,`${n}.columnKey`,m.id,e)};if(r.kind==="matrix_measure")return f(r,n,["kind","measureId"],e),{kind:"matrix_measure",measureId:p(r.measureId,`${n}.measureId`,m.id,e)};l(e,`${n}.kind`,"Expected metric, column, or matrix_measure.")}function fe(t,n,e){if(t===null||typeof t!="object"||Array.isArray(t))return;const r=y(t,n,e);if(!Object.prototype.hasOwnProperty.call(r,"target")&&!Object.prototype.hasOwnProperty.call(r,"format"))return;f(r,n,["value","target","format"],e),(typeof r.value!="number"||!Number.isFinite(r.value))&&l(e,`${n}.value`,"Expected a finite number.");const o=rt(r.target,`${n}.target`,e),i=z.parseResolvedNumericCanonicalFormat(r.format);if(i.ok||i.issues.forEach(a=>l(e,a.path==="$"?`${n}.format`:`${n}.format.${a.path}`,a.message)),!(typeof r.value!="number"||!Number.isFinite(r.value)||!o||!i.ok))return{value:r.value,target:o,format:i.value}}function T(t,n,e){if(typeof t=="string")return t;if(typeof t=="number"){if(!Number.isFinite(t)){l(e,n,"Expected a finite number.");return}return t}const r=fe(t,n,e);if(r)return r;l(e,n,"Expected a string, number, or structured numeric value.")}function ot(t,n,e){if(t===null||typeof t=="string"||typeof t=="number"||typeof t=="boolean")return typeof t=="string"&&t.length>m.contentCell?(l(e,n,`Must be ${m.contentCell} characters or fewer.`),t.slice(0,m.contentCell)):typeof t=="number"&&!Number.isFinite(t)?(l(e,n,"Expected a finite number."),null):t;const r=fe(t,n,e);return r||(l(e,n,"Expected a string, number, boolean, structured numeric value, or null."),null)}function it(t,n,e){if(!Array.isArray(t))return l(e,n,"Expected an array."),[];t.length===0&&l(e,n,"Expected at least one column."),t.length>$.maxTableColumns&&l(e,n,`Must have ${$.maxTableColumns} columns or fewer.`);const r=new Set;return t.slice(0,$.maxTableColumns).map((o,i)=>{const a=`${n}.${i}`,c=y(o,a,e);f(c,a,["key","label","kind","align"],e);const d=p(c.key,`${a}.key`,m.id,e);d&&(r.has(d)&&l(e,`${a}.key`,"Column key must be unique."),r.add(d));const s=p(c.label,`${a}.label`,m.contentTitle,e),u=A(c.kind,`${a}.kind`,We,"text, number, currency, percent, date, or boolean",e),v=A(c.align,`${a}.align`,Ze,"left, center, or right",e);return{key:d,label:s,...u?{kind:u}:{},...v?{align:v}:{}}})}function at(t,n,e,r){if(!Array.isArray(t))return l(r,n,"Expected an array."),[];t.length>$.maxTableRows&&l(r,n,`Must have ${$.maxTableRows} rows or fewer.`);const o=new Set(e.map(i=>i.key).filter(Boolean));return t.slice(0,$.maxTableRows).map((i,a)=>{const c=`${n}.${a}`,d=y(i,c,r);return Object.keys(d).forEach(s=>{o.has(s)||l(r,`${c}.${s}`,`Unexpected table cell "${s}".`)}),Object.fromEntries(e.map(s=>[s.key,ot(d[s.key]??null,`${c}.${s.key}`,r)]))})}function ct(t,n,e){const r=`content.blocks.${n}`,o=y(t,r,e),i=o.type;if(i==="heading"){f(o,r,["type","text","level","evidenceIds"],e);const a=o.level===void 0||o.level===null?void 0:o.level===2||o.level===3?o.level:void 0;o.level!==void 0&&o.level!==null&&a===void 0&&l(e,`${r}.level`,"Expected 2 or 3.");const c=I(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"heading",text:p(o.text,`${r}.text`,m.contentTitle,e),...a?{level:a}:{},...c?{evidenceIds:c}:{}}}if(i==="paragraph"){f(o,r,["type","text","evidenceIds"],e);const a=I(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"paragraph",text:p(o.text,`${r}.text`,m.contentText,e),...a?{evidenceIds:a}:{}}}if(i==="finding"){f(o,r,["type","title","text","severity","evidenceIds"],e);const a=h(o.title,`${r}.title`,m.contentTitle,e),c=A(o.severity,`${r}.severity`,He,"info, positive, warning, or critical",e);return{type:"finding",...a?{title:a}:{},text:p(o.text,`${r}.text`,m.contentText,e),...c?{severity:c}:{},evidenceIds:I(o.evidenceIds,`${r}.evidenceIds`,e,{required:!0})??[]}}if(i==="bullets"||i==="actions"||i==="limitations"){f(o,r,["type","title","items","evidenceIds"],e);const a=h(o.title,`${r}.title`,m.contentTitle,e),c=I(o.evidenceIds,`${r}.evidenceIds`,e);return{type:i,...a?{title:a}:{},items:nt(o.items,`${r}.items`,e),...c?{evidenceIds:c}:{}}}if(i==="metric"){f(o,r,["type","label","value","previousValue","delta","percentChange","unit","evidenceIds"],e);const a=T(o.value,`${r}.value`,e)??"";a===""&&l(e,`${r}.value`,"Expected a non-empty string, number, or structured numeric value.");const c=o.previousValue===void 0||o.previousValue===null?o.previousValue:T(o.previousValue,`${r}.previousValue`,e),d=o.delta===void 0||o.delta===null?o.delta:T(o.delta,`${r}.delta`,e),s=o.percentChange===void 0||o.percentChange===null?o.percentChange:T(o.percentChange,`${r}.percentChange`,e),u=h(o.unit,`${r}.unit`,m.contentTitle,e),v=I(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"metric",label:p(o.label,`${r}.label`,m.contentTitle,e),value:a,...c!==void 0?{previousValue:c}:{},...d!==void 0?{delta:d}:{},...s!==void 0?{percentChange:s}:{},...u?{unit:u}:{},...v?{evidenceIds:v}:{}}}if(i==="kpi_grid"){f(o,r,["type","title","tiles","evidenceIds"],e);const a=h(o.title,`${r}.title`,m.contentTitle,e),c=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||l(e,`${r}.tiles`,"Expected an array."),c.length===0&&l(e,`${r}.tiles`,"Expected at least one tile."),c.length>$.maxKpiTiles&&l(e,`${r}.tiles`,`Must have ${$.maxKpiTiles} tiles or fewer.`);const d=c.slice(0,$.maxKpiTiles).map((u,v)=>{const b=`${r}.tiles.${v}`,g=y(u,b,e);f(g,b,["label","value","previousValue","delta","percentChange","unit","evidenceIds"],e);const B=T(g.value,`${b}.value`,e)??"";B===""&&l(e,`${b}.value`,"Expected a non-empty string, number, or structured numeric value.");const K=g.previousValue===void 0||g.previousValue===null?g.previousValue:T(g.previousValue,`${b}.previousValue`,e),q=g.delta===void 0||g.delta===null?g.delta:T(g.delta,`${b}.delta`,e),G=g.percentChange===void 0||g.percentChange===null?g.percentChange:T(g.percentChange,`${b}.percentChange`,e),H=h(g.unit,`${b}.unit`,m.contentTitle,e),W=I(g.evidenceIds,`${b}.evidenceIds`,e);return{label:p(g.label,`${b}.label`,m.contentTitle,e),value:B,...K!==void 0?{previousValue:K}:{},...q!==void 0?{delta:q}:{},...G!==void 0?{percentChange:G}:{},...H?{unit:H}:{},...W?{evidenceIds:W}:{}}}),s=I(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"kpi_grid",...a?{title:a}:{},tiles:d,...s?{evidenceIds:s}:{}}}if(i==="progress"){f(o,r,["type","label","value","detail","evidenceIds"],e);const a=typeof o.value=="number"&&Number.isFinite(o.value)?o.value:0;(typeof o.value!="number"||!Number.isFinite(o.value))&&l(e,`${r}.value`,"Expected a finite number.");const c=h(o.detail,`${r}.detail`,m.contentText,e),d=I(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"progress",label:p(o.label,`${r}.label`,m.contentTitle,e),value:a,...c?{detail:c}:{},...d?{evidenceIds:d}:{}}}if(i==="table"){f(o,r,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],e);const a=it(o.columns,`${r}.columns`,e),c=h(o.title,`${r}.title`,m.contentTitle,e),d=h(o.id,`${r}.id`,m.id,e),s=h(o.caption,`${r}.caption`,m.contentItem,e),u=Xe(o.totalRows,`${r}.totalRows`,e),v=I(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"table",...d?{id:d}:{},...c?{title:c}:{},columns:a,rows:at(o.rows,`${r}.rows`,a,e),...s?{caption:s}:{},...u!==void 0?{totalRows:u}:{},...v?{evidenceIds:v}:{}}}if(i==="evidence_appendix"){f(o,r,["type","title","evidenceIds"],e);const a=h(o.title,`${r}.title`,m.contentTitle,e);return{type:"evidence_appendix",...a?{title:a}:{},evidenceIds:I(o.evidenceIds,`${r}.evidenceIds`,e,{required:!0})??[]}}if(i==="sql"){f(o,r,["type","title","sql","evidenceIds"],e);const a=h(o.title,`${r}.title`,m.contentTitle,e),c=p(o.sql,`${r}.sql`,m.contentSql,e),d=I(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"sql",...a?{title:a}:{},sql:c,...d?{evidenceIds:d}:{}}}return l(e,`${r}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."),{type:"paragraph",text:""}}function ue(t){const n=[],e=y(t,"content",n);f(e,"content",["version","title","summary","blocks"],n),e.version!==1&&l(n,"content.version","Expected version 1.");const r=h(e.title,"content.title",m.contentTitle,n),o=h(e.summary,"content.summary",m.contentSummary,n);Array.isArray(e.blocks)||l(n,"content.blocks","Expected an array.");const i=Array.isArray(e.blocks)?e.blocks:[];i.length===0&&l(n,"content.blocks","Expected at least one block."),i.length>$.maxBlocks&&l(n,"content.blocks",`Must have ${$.maxBlocks} blocks or fewer.`);const a=i.slice(0,$.maxBlocks).map((c,d)=>ct(c,d,n));return U(n),{version:1,...r?{title:r}:{},...o?{summary:o}:{},blocks:a}}function lt(t){try{return{valid:!0,value:ue(t),issues:[]}}catch(n){if(n instanceof S)return{valid:!1,issues:n.issues};throw n}}function D(t,n,e,r){return typeof t=="string"&&e.includes(t)?t:(l(r,n,`Expected ${e.join(" or ")}.`),e[0])}function A(t,n,e,r,o){if(t!=null){if(typeof t=="string"&&e.has(t))return t;l(o,n,`Expected ${r}.`)}}function dt(t,n,e){if(t!=null){if(!Array.isArray(t)){l(e,n,"Expected an array.");return}return t}}function st(t,n,e){if(t!=null){if(!le(t)){l(e,n,"Expected an object.");return}return t}}function mt(t,n,e){if(t==null)return;const r=y(t,n,e);f(r,n,Je,e);const o={},i=A(r.pageSize,`${n}.pageSize`,Pe,"letter, legal, a4, a3, or tabloid",e),a=A(r.orientation,`${n}.orientation`,je,"portrait or landscape",e),c=A(r.delimiter,`${n}.delimiter`,Ke,"comma, semicolon, or tab",e),d=A(r.sheetSelection,`${n}.sheetSelection`,qe,"current or all",e);i&&(o.pageSize=i),a&&(o.orientation=a),c&&(o.delimiter=c),d&&(o.sheetSelection=d);for(const s of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues","allowDownload"])if(!(r[s]===void 0||r[s]===null)){if(typeof r[s]!="boolean"){l(e,`${n}.${s}`,"Expected a boolean.");continue}o[s]=r[s]}for(const s of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const u=h(r[s],`${n}.${s}`,m.id,e);u&&(o[s]=u)}for(const s of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const u=dt(r[s],`${n}.${s}`,e);u&&(o[s]=u)}for(const s of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const u=st(r[s],`${n}.${s}`,e);u&&(o[s]=u)}return Object.keys(o).length>0?o:void 0}function O(t,n,e,r){const o=h(n,e,m.attachmentTitle,r);return o&&(t.title=o),t}function L(t,n,e,r){const o=mt(n,e,r);return o&&(t.settings=o),t}function ft(t,n,e){const r=`attachments.${n}`,o=y(t,r,e),i=o.type;if(i==="dashboard"){f(o,r,["type","dashboardId","format","title","settings"],e);const a=O({type:"dashboard",dashboardId:p(o.dashboardId,`${r}.dashboardId`,m.id,e),format:D(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return L(a,o.settings,`${r}.settings`,e)}if(i==="dashboard_sheet"||i==="document_sheet"){f(o,r,["type","dashboardId","sheetId","format","title","settings"],e);const a=O({type:i,dashboardId:p(o.dashboardId,`${r}.dashboardId`,m.id,e),sheetId:p(o.sheetId,`${r}.sheetId`,m.id,e),format:D(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return L(a,o.settings,`${r}.settings`,e)}if(i==="card"){f(o,r,["type","dashboardId","cardId","format","title","settings"],e);const a=O({type:"card",dashboardId:p(o.dashboardId,`${r}.dashboardId`,m.id,e),cardId:p(o.cardId,`${r}.cardId`,m.id,e),format:D(o.format,`${r}.format`,["csv","pdf"],e)},o.title,`${r}.title`,e);return L(a,o.settings,`${r}.settings`,e)}return l(e,`${r}.type`,"Expected dashboard, dashboard_sheet, document_sheet, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function ut(t){switch(t.type){case"dashboard":return`${t.type}:${t.dashboardId}:${t.format}`;case"dashboard_sheet":case"document_sheet":return`${t.type}:${t.dashboardId}:${t.sheetId}:${t.format}`;case"card":return`${t.type}:${t.dashboardId}:${t.cardId}:${t.format}`}}function pe(t,n){if(t==null)return[];if(!Array.isArray(t))return l(n,"attachments","Expected an array."),[];t.length>w&&l(n,"attachments",`Choose ${w} attachments or fewer.`);const e=t.slice(0,w).map((o,i)=>ft(o,i,n)),r=new Set;return e.forEach((o,i)=>{const a=ut(o);r.has(a)&&l(n,`attachments.${i}`,"Duplicate attachment."),r.add(a)}),e}function he(t,n){if(t==null)return;const e=y(t,"limits",n);f(e,"limits",Object.keys(R),n);const r={};return Object.keys(R).forEach(o=>{const i=e[o];if(i==null)return;const a=R[o];if(typeof i!="number"||!Number.isInteger(i)||i<a.min||i>a.max){l(n,`limits.${o}`,`Expected an integer between ${a.min} and ${a.max}.`);return}r[o]=i}),Object.keys(r).length>0?r:void 0}function U(t){if(t.length>0)throw new S(t)}function ge(t,n,e){!(t.type==="generated_analysis"||t.type==="custom_message"&&!!t.message.trim())&&n.length===0&&l(e,"body","Add briefing instructions, a custom message, or at least one attachment.")}function M(t){const n=[],e=y(t,"jobConfig",n);f(e,"jobConfig",["kind","reportContext","source","body","attachments","presentation","limits"],n),e.kind!==_&&l(n,"kind","Expected BRIEFING.");const r=be.parseReportRuntimeContext(e.reportContext);r.ok||r.issues.forEach(s=>l(n,s.path==="$"?"jobConfig.reportContext":`jobConfig.reportContext.${s.path}`,s.message));const o=de(e.source,n),i=se(e.body,n),a=pe(e.attachments,n),c=me(e.presentation,n),d=he(e.limits,n);return ge(i,a,n),U(n),{kind:_,reportContext:r.ok?r.value:e.reportContext,source:o,body:i,attachments:a,presentation:c,...d?{limits:d}:{}}}function pt(t){return M({...t,kind:_})}function P(t,n,e,r="deliveryConfig.recipients"){const o=`${r}.${n}`,i=y(t,o,e),a=i.type;if(a==="email"){f(i,o,["type","address","name"],e);const c=p(i.address,`${o}.address`,m.id,e),d=h(i.name,`${o}.name`,m.attachmentTitle,e);return c&&!et(c)&&l(e,`${o}.address`,"Email address is invalid."),{type:"email",address:c,...d?{name:d}:{}}}return a==="user"?(f(i,o,["type","userId"],e),{type:"user",userId:p(i.userId,`${o}.userId`,m.id,e)}):a==="tenant_user"?(f(i,o,["type","tenantUserId"],e),{type:"tenant_user",tenantUserId:p(i.tenantUserId,`${o}.tenantUserId`,m.id,e)}):a==="group"?(f(i,o,["type","groupId"],e),{type:"group",groupId:p(i.groupId,`${o}.groupId`,m.id,e)}):(l(e,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function ht(t,n){return t==null?[]:Array.isArray(t)?t.map((e,r)=>P(e,r,n)):(l(n,"deliveryConfig.recipients","Expected an array."),[])}function gt(t,n){if(!Array.isArray(t))return l(n,"deliveryConfig.channels","Expected an array."),[];const e=[];return t.forEach((r,o)=>{if(!j(r)){l(n,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}e.includes(r)||e.push(r)}),e}function yt(t,n,e){if(t==null)return;const r=y(t,n,e),o={};return Object.entries(r).forEach(([i,a])=>{if(typeof a!="string"){l(e,`${n}.${i}`,"Expected a string.");return}o[i]=a.trim()}),Object.keys(o).length>0?o:void 0}function vt(t,n,e){if(t==null)return;const r=y(t,n,e);f(r,n,["url","method","headers","secretEncrypted"],e);const o=r.method===void 0||r.method===null?void 0:D(r.method,`${n}.method`,["POST","PUT"],e),i=yt(r.headers,`${n}.headers`,e),a=h(r.secretEncrypted,`${n}.secretEncrypted`,2e3,e);return{url:p(r.url,`${n}.url`,2e3,e),...o?{method:o}:{},...i?{headers:i}:{},...a?{secretEncrypted:a}:{}}}function bt(t,n,e){const r=y(t,n,e),o=r.type;if(o==="channel"){f(r,n,["type","channelId","channelName","isPrivate"],e);const i=h(r.channelName,`${n}.channelName`,m.attachmentTitle,e),a=r.isPrivate===void 0||r.isPrivate===null?void 0:x(r.isPrivate,!1,`${n}.isPrivate`,e);return{type:"channel",channelId:p(r.channelId,`${n}.channelId`,m.id,e),...i?{channelName:i}:{},...a!==void 0?{isPrivate:a}:{}}}return o==="dm"?(f(r,n,["type","recipient"],e),l(e,`${n}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:P(r.recipient,0,e,`${n}.recipient`)}):(l(e,`${n}.type`,"Expected channel."),{type:"channel",channelId:""})}function $t(t,n,e){if(t==null)return;if(!Array.isArray(t)){l(e,n,"Expected an array.");return}const r=t.map((o,i)=>P(o,i,e,n));return r.length>0?r:void 0}function It(t,n,e){if(t==null)return;const r=y(t,n,e);f(r,n,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],e);const o=$t(r.threadMentions,`${n}.threadMentions`,e),i=x(r.postThreadDetail,!0,`${n}.postThreadDetail`,e),a=x(r.includeDashboardLink,!0,`${n}.includeDashboardLink`,e),c=x(r.includeBriefingLink,!0,`${n}.includeBriefingLink`,e);return{destination:bt(r.destination,`${n}.destination`,e),...o?{threadMentions:o}:{},...r.postThreadDetail!==void 0?{postThreadDetail:i}:{},...r.includeDashboardLink!==void 0?{includeDashboardLink:a}:{},...r.includeBriefingLink!==void 0?{includeBriefingLink:c}:{}}}function Et(t,n,e){const r=y(t,n,e);f(r,n,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],e);const o=A(r.formatProfile,`${n}.formatProfile`,Ge,"concise, balanced, or detailed",e),i=h(r.subjectOverride,`${n}.subjectOverride`,500,e),a=h(r.titleOverride,`${n}.titleOverride`,500,e),c=h(r.summaryOverride,`${n}.summaryOverride`,2e3,e),d=x(r.actionBlockVisible,!0,`${n}.actionBlockVisible`,e),s=vt(r.webhookConfig,`${n}.webhookConfig`,e),u=It(r.slackConfig,`${n}.slackConfig`,e);return{...o?{formatProfile:o}:{},...i?{subjectOverride:i}:{},...a?{titleOverride:a}:{},...c?{summaryOverride:c}:{},...r.actionBlockVisible!==void 0?{actionBlockVisible:d}:{},...u?{slackConfig:u}:{},...s?{webhookConfig:s}:{}}}function Ct(t,n){if(t==null)return;const e=y(t,"deliveryConfig.channelConfigs",n),r={};return Object.entries(e).forEach(([o,i])=>{if(!j(o)){l(n,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}r[o]=Et(i,`deliveryConfig.channelConfigs.${o}`,n)}),Object.keys(r).length>0?r:void 0}function Tt(t,n){var d,s,u;if(t==null)return null;const e=y(t,"deliveryConfig",n);f(e,"deliveryConfig",["recipients","channels","channelConfigs"],n);const r=Ct(e.channelConfigs,n),o=ht(e.recipients,n),i=gt(e.channels,n),a=((s=(d=r==null?void 0:r.SLACK)==null?void 0:d.slackConfig)==null?void 0:s.destination.type)==="channel"&&!!r.SLACK.slackConfig.destination.channelId.trim();return i.some(v=>v!=="SLACK")&&o.length===0&&l(n,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),i.length===0&&l(n,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),i.includes("SLACK")&&!a&&l(n,"deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId","Choose a Slack channel destination."),!i.includes("SLACK")&&((u=r==null?void 0:r.SLACK)!=null&&u.slackConfig)&&l(n,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:i,...r?{channelConfigs:r}:{}}}function N(t){const n=[],e=y(t,"draft",n);f(e,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],n);const r=p(e.name,"name",m.name,n),o=h(e.description,"description",m.description,n)??null,i=h(e.scheduleExpr,"scheduleExpr",500,n)??null,a=h(e.timezone,"timezone",200,n)??"UTC",c=Qe(e.status,n),d=de(e.source,n),s=se(e.body,n),u=pe(e.attachments,n),v=me(e.presentation,n),b=he(e.limits,n),g=Tt(e.deliveryConfig,n);return ge(s,u,n),U(n),{name:r,description:o,status:c,scheduleExpr:i,timezone:a,source:d,body:s,attachments:u,presentation:v,...b?{limits:b}:{},deliveryConfig:g}}function kt(t){return N(t)}function At(t){return N(t)}function xt(t){try{return{valid:!0,value:N(t),issues:[]}}catch(n){if(n instanceof S)return{valid:!1,issues:n.issues};throw n}}function St(t){try{return{valid:!0,value:M(t),issues:[]}}catch(n){if(n instanceof S)return{valid:!1,issues:n.issues};throw n}}function Bt(t){return typeof t=="string"&&ce.has(t)}function j(t){return typeof t=="string"&&Me.has(t)}exports.BRIEFING_ARTIFACT_FORMATS=oe;exports.BRIEFING_CONTENT_LIMITS=$;exports.BRIEFING_KIND=_;exports.BRIEFING_TEXT_LIMITS=m;exports.BriefingContractError=S;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=F;exports.DEFAULT_BRIEFING_SCHEDULE=xe;exports.MAX_BRIEFING_ATTACHMENTS=w;exports.buildBriefingJobConfig=pt;exports.buildBriefingScheduleExpr=we;exports.buildCreateBriefingRequest=kt;exports.buildUpdateBriefingRequest=At;exports.canCreateBriefingForUser=Le;exports.describeBriefingSchedule=Fe;exports.formatBriefingComparisonValues=Ue;exports.formatBriefingDisplayValue=ae;exports.getBriefingCardAttachmentCapability=Oe;exports.getBriefingCardAttachmentFormats=ee;exports.getBriefingCreationIntents=ze;exports.getBriefingDisplayTypeLabel=re;exports.getBriefingPresentation=Ve;exports.getDefaultBriefingCardAttachmentFormat=te;exports.isBriefingArtifactFormat=Bt;exports.isBriefingDeliveryChannel=j;exports.isBriefingNumericValue=ie;exports.isEmailOnlyBriefingDelivery=ne;exports.isValidBriefingTimezone=Se;exports.normalizeBriefingContentDocument=ue;exports.normalizeBriefingDraft=N;exports.normalizeBriefingJobConfig=M;exports.parseBriefingScheduleExpr=Q;exports.validateBriefingContentDocument=lt;exports.validateBriefingDraft=xt;exports.validateBriefingJobConfig=St;
|