react-semaphor 0.1.334 → 0.1.336

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +100 -242
  3. package/dist/brand-studio/index.cjs +1 -1
  4. package/dist/brand-studio/index.js +3 -3
  5. package/dist/briefings/index.cjs +1 -1
  6. package/dist/briefings/index.js +435 -391
  7. package/dist/chunks/{braces-DlW7C5BH.js → braces-BLa_lORs.js} +1 -1
  8. package/dist/chunks/{braces-DYx37F5Z.js → braces-Q86XHDaD.js} +1 -1
  9. package/dist/chunks/{calendar-preferences-dialog-CB5MA9gF.js → calendar-preferences-dialog-Bm7ji3k9.js} +1 -1
  10. package/dist/chunks/{calendar-preferences-dialog-BLz4PrDX.js → calendar-preferences-dialog-Cocogo9H.js} +3 -3
  11. package/dist/chunks/catalog-field-grounding-DmT7aGUA.js +191 -0
  12. package/dist/chunks/catalog-field-grounding-VgVzDd25.js +1 -0
  13. package/dist/chunks/{chevrons-up-down-CP6oFMrt.js → chevrons-up-down-BBTZ5pAY.js} +1 -1
  14. package/dist/chunks/{chevrons-up-down-B_66pVv5.js → chevrons-up-down-CYuWasy_.js} +1 -1
  15. package/dist/chunks/{dashboard-briefing-launcher-Bwz4mKOI.js → dashboard-briefing-launcher-BtqtLx1-.js} +1 -1
  16. package/dist/chunks/{dashboard-briefing-launcher-B7AxiecS.js → dashboard-briefing-launcher-DF4CoaRn.js} +4 -4
  17. package/dist/chunks/{dashboard-controls-DlN7FGW-.js → dashboard-controls-0VMAeMoa.js} +1 -1
  18. package/dist/chunks/{dashboard-controls-CbuKeeeP.js → dashboard-controls-B5U-VUxs.js} +6 -6
  19. package/dist/chunks/{dashboard-json-CeVrYTnR.js → dashboard-json-CqbLOfnr.js} +1 -1
  20. package/dist/chunks/{dashboard-json-gcpeSd5I.js → dashboard-json-Hmc0Ri5z.js} +2 -2
  21. package/dist/chunks/{edit-dashboard-visual-Kn1wtj-Z.js → edit-dashboard-visual-C0EDM0QB.js} +3 -3
  22. package/dist/chunks/{edit-dashboard-visual-BggRcCO2.js → edit-dashboard-visual-D4VVu-QQ.js} +1302 -1302
  23. package/dist/chunks/{index-CP3_hN7P.js → index-DE0vIuYG.js} +4 -4
  24. package/dist/chunks/{index-TA0tBZ1g.js → index-DzyUhzV3.js} +262 -270
  25. package/dist/chunks/{palette-BW7lzLOY.js → palette-B9AbDw0n.js} +1 -1
  26. package/dist/chunks/{palette-BueS2ZEM.js → palette-DalASD28.js} +1 -1
  27. package/dist/chunks/{resource-management-panel-vDrPcmXs.js → resource-management-panel-C4YydU9I.js} +3 -3
  28. package/dist/chunks/{resource-management-panel-DBYcMHVL.js → resource-management-panel-P9iNqBM1.js} +1 -1
  29. package/dist/chunks/{switch-B6fK1sl9.js → switch-BAYfpAEb.js} +1967 -2008
  30. package/dist/chunks/{switch-BT7khJGF.js → switch-CyRoZr5T.js} +35 -35
  31. package/dist/chunks/{use-create-flow-overlay-state-T8Su6dzu.js → use-create-flow-overlay-state-CbhjxI3W.js} +1 -1
  32. package/dist/chunks/{use-create-flow-overlay-state-DPYHfe-S.js → use-create-flow-overlay-state-P1LMwQ89.js} +3 -3
  33. package/dist/chunks/{use-visual-utils-wqosOqyY.js → use-visual-utils-CV6_-y4p.js} +1 -1
  34. package/dist/chunks/{use-visual-utils-Daov8_1p.js → use-visual-utils-lB-3Zk0b.js} +2 -2
  35. package/dist/chunks/validators-BOqiGymD.js +660 -0
  36. package/dist/chunks/validators-BtFXY3S_.js +2 -0
  37. package/dist/dashboard/index.cjs +1 -1
  38. package/dist/dashboard/index.js +1 -1
  39. package/dist/dashboard-authoring/index.cjs +3 -3
  40. package/dist/dashboard-authoring/index.js +476 -453
  41. package/dist/data-app-builder/index.cjs +1 -1
  42. package/dist/data-app-builder/index.js +1 -1
  43. package/dist/data-app-builder-browser-runtime/index.cjs +1 -1
  44. package/dist/data-app-builder-browser-runtime/index.js +4 -9
  45. package/dist/data-app-sdk/index.cjs +1 -1
  46. package/dist/data-app-sdk/index.js +89 -80
  47. package/dist/index.cjs +1 -1
  48. package/dist/index.js +7 -7
  49. package/dist/surfboard/index.cjs +1 -1
  50. package/dist/surfboard/index.js +2 -2
  51. package/dist/types/analytics-protocol.d.ts +183 -5
  52. package/dist/types/briefings.d.ts +12 -0
  53. package/dist/types/dashboard-authoring.d.ts +33 -4
  54. package/dist/types/data-app-builder.d.ts +30 -3
  55. package/dist/types/data-app-sdk.d.ts +32 -5
  56. package/dist/types/main.d.ts +34 -3
  57. package/package.json +1 -1
  58. package/dist/chunks/validators-DDAweCzB.js +0 -371
  59. package/dist/chunks/validators-odlRJblR.js +0 -2
@@ -1 +1 @@
1
- "use strict";var Q=Object.defineProperty;var ee=(n,t,e)=>t in n?Q(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var j=(n,t,e)=>ee(n,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _="BRIEFING",K=["markdown","html"],B=["markdown"],k=20,l={name:500,description:2e3,instruction:5e4,customMessage:5e4,contentTitle:500,contentSummary:2e4,contentText:5e3,contentItem:2e3,contentCell:500,attachmentTitle:500,presentationAudience:1e3,presentationTone:500,presentationFormat:2e3,id:500},g={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:l.contentCell,maxParagraphCharacters:l.contentText,maxFindingCharacters:l.contentText,maxListItems:100,maxKpiTiles:8},q=new Set(K),te=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),D={maxToolCalls:{min:1,max:100},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},ne=new Set(["letter","legal","a4","a3","tabloid"]),re=new Set(["portrait","landscape"]),oe=new Set([",",";"," "]),ie=new Set(["current","all"]),ae=new Set(["concise","balanced","detailed"]),ce=new Set(["info","positive","warning","critical"]),de=new Set(["text","number","currency","percent","date","boolean"]),le=new Set(["left","center","right"]),fe=["pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","theme"];class x extends Error{constructor(e){super(e.map(r=>`${r.field}: ${r.message}`).join("; "));j(this,"issues");this.name="BriefingContractError",this.issues=e}}function G(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function c(n,t,e){n.push({field:t,message:e})}function v(n,t,e){return G(n)?n:(c(e,t,"Expected an object."),{})}function s(n,t,e,r){const o=new Set(e);Object.keys(n).forEach(i=>{o.has(i)||c(r,t?`${t}.${i}`:i,`Unexpected field "${i}".`)})}function p(n,t,e,r){if(typeof n!="string")return c(r,t,"Expected a string."),"";const o=n.trim();return o?(o.length>e&&c(r,t,`Must be ${e} characters or fewer.`),o):(c(r,t,"Required value cannot be empty."),"")}function y(n,t,e,r){if(n==null)return;if(typeof n!="string"){c(r,t,"Expected a string.");return}const o=n.trim();if(o)return o.length>e&&c(r,t,`Must be ${e} characters or fewer.`),o}function se(n,t,e){if(n!=null){if(!Number.isInteger(n)||Number(n)<0){c(e,t,"Expected a non-negative integer.");return}return Number(n)}}function $(n,t,e,r={}){if(n==null)return r.required?(c(e,t,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(n))return c(e,t,"Expected an array."),r.required?[]:void 0;const o=[];return n.forEach((i,a)=>{const d=p(i,`${t}.${a}`,l.id,e);d&&!o.includes(d)&&o.push(d)}),r.required&&o.length===0&&c(e,t,"Expected at least one evidence id."),o.length>0||r.required?o:void 0}function C(n,t,e,r){return n==null?t:typeof n!="boolean"?(c(r,e,"Expected a boolean."),t):n}function me(n,t){return n==null?"ACTIVE":n==="ACTIVE"||n==="PAUSED"||n==="DISABLED"?n:(c(t,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function ue(n){return n.includes("@")&&n.includes(".")&&!n.includes(" ")}function U(n,t){if(n==null)return{type:"project"};const e=v(n,"source",t),r=e.type;return r==="project"?(s(e,"source",["type"],t),{type:"project"}):r==="dashboard"?(s(e,"source",["type","dashboardId"],t),{type:"dashboard",dashboardId:p(e.dashboardId,"source.dashboardId",l.id,t)}):(c(t,"source.type","Expected project or dashboard."),{type:"project"})}function H(n,t){const e=v(n,"body",t),r=e.type;return r==="generated_analysis"?(s(e,"body",["type","instruction"],t),{type:"generated_analysis",instruction:p(e.instruction,"body.instruction",l.instruction,t)}):r==="custom_message"?(s(e,"body",["type","message"],t),{type:"custom_message",message:p(e.message,"body.message",l.customMessage,t)}):r==="none"?(s(e,"body",["type"],t),{type:"none"}):(c(t,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function pe(n,t){if(n==null)return[...B];if(!Array.isArray(n))return c(t,"presentation.artifactFormats","Expected an array."),[...B];if(n.length===0)return c(t,"presentation.artifactFormats","Choose at least one artifact format."),[];const e=[];return n.forEach((r,o)=>{if(typeof r!="string"||!q.has(r)){c(t,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}e.includes(r)||e.push(r)}),e}function J(n,t){if(n==null)return{artifactFormats:[...B],includeEvidence:!0,includeSql:!0};const e=v(n,"presentation",t);s(e,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format"],t);const r={artifactFormats:pe(e.artifactFormats,t),includeEvidence:C(e.includeEvidence,!0,"presentation.includeEvidence",t),includeSql:C(e.includeSql,!0,"presentation.includeSql",t)},o=y(e.audience,"presentation.audience",l.presentationAudience,t),i=y(e.tone,"presentation.tone",l.presentationTone,t),a=y(e.format,"presentation.format",l.presentationFormat,t);return o&&(r.audience=o),i&&(r.tone=i),a&&(r.format=a),r}function ye(n,t,e){return Array.isArray(n)?(n.length===0&&c(e,t,"Expected at least one item."),n.length>g.maxListItems&&c(e,t,`Must have ${g.maxListItems} items or fewer.`),n.slice(0,g.maxListItems).map((r,o)=>p(r,`${t}.${o}`,l.contentItem,e)).filter(Boolean)):(c(e,t,"Expected an array."),[])}function he(n,t,e){return n===null||typeof n=="string"||typeof n=="number"||typeof n=="boolean"?typeof n=="string"&&n.length>l.contentCell?(c(e,t,`Must be ${l.contentCell} characters or fewer.`),n.slice(0,l.contentCell)):typeof n=="number"&&!Number.isFinite(n)?(c(e,t,"Expected a finite number."),null):n:(c(e,t,"Expected a string, number, boolean, or null."),null)}function ve(n,t,e){if(!Array.isArray(n))return c(e,t,"Expected an array."),[];n.length===0&&c(e,t,"Expected at least one column."),n.length>g.maxTableColumns&&c(e,t,`Must have ${g.maxTableColumns} columns or fewer.`);const r=new Set;return n.slice(0,g.maxTableColumns).map((o,i)=>{const a=`${t}.${i}`,d=v(o,a,e);s(d,a,["key","label","kind","align"],e);const m=p(d.key,`${a}.key`,l.id,e);m&&(r.has(m)&&c(e,`${a}.key`,"Column key must be unique."),r.add(m));const f=p(d.label,`${a}.label`,l.contentTitle,e),u=E(d.kind,`${a}.kind`,de,"text, number, currency, percent, date, or boolean",e),I=E(d.align,`${a}.align`,le,"left, center, or right",e);return{key:m,label:f,...u?{kind:u}:{},...I?{align:I}:{}}})}function ge(n,t,e,r){if(!Array.isArray(n))return c(r,t,"Expected an array."),[];n.length>g.maxTableRows&&c(r,t,`Must have ${g.maxTableRows} rows or fewer.`);const o=new Set(e.map(i=>i.key).filter(Boolean));return n.slice(0,g.maxTableRows).map((i,a)=>{const d=`${t}.${a}`,m=v(i,d,r);return Object.keys(m).forEach(f=>{o.has(f)||c(r,`${d}.${f}`,`Unexpected table cell "${f}".`)}),Object.fromEntries(e.map(f=>[f.key,he(m[f.key]??null,`${d}.${f.key}`,r)]))})}function Ie(n,t,e){const r=`content.blocks.${t}`,o=v(n,r,e),i=o.type;if(i==="heading"){s(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 d=$(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"heading",text:p(o.text,`${r}.text`,l.contentTitle,e),...a?{level:a}:{},...d?{evidenceIds:d}:{}}}if(i==="paragraph"){s(o,r,["type","text","evidenceIds"],e);const a=$(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"paragraph",text:p(o.text,`${r}.text`,l.contentText,e),...a?{evidenceIds:a}:{}}}if(i==="finding"){s(o,r,["type","title","text","severity","evidenceIds"],e);const a=y(o.title,`${r}.title`,l.contentTitle,e),d=E(o.severity,`${r}.severity`,ce,"info, positive, warning, or critical",e);return{type:"finding",...a?{title:a}:{},text:p(o.text,`${r}.text`,l.contentText,e),...d?{severity:d}:{},evidenceIds:$(o.evidenceIds,`${r}.evidenceIds`,e,{required:!0})??[]}}if(i==="bullets"||i==="actions"||i==="limitations"){s(o,r,["type","title","items","evidenceIds"],e);const a=y(o.title,`${r}.title`,l.contentTitle,e),d=$(o.evidenceIds,`${r}.evidenceIds`,e);return{type:i,...a?{title:a}:{},items:ye(o.items,`${r}.items`,e),...d?{evidenceIds:d}:{}}}if(i==="metric"){s(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 d=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&&d===void 0&&c(e,`${r}.previousValue`,"Expected a string, number, or null.");const m=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&&m===void 0&&c(e,`${r}.delta`,"Expected a string, number, or null.");const f=y(o.unit,`${r}.unit`,l.contentTitle,e),u=$(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"metric",label:p(o.label,`${r}.label`,l.contentTitle,e),value:a,...d!==void 0?{previousValue:d}:{},...m!==void 0?{delta:m}:{},...f?{unit:f}:{},...u?{evidenceIds:u}:{}}}if(i==="kpi_grid"){s(o,r,["type","title","tiles","evidenceIds"],e);const a=y(o.title,`${r}.title`,l.contentTitle,e),d=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||c(e,`${r}.tiles`,"Expected an array."),d.length===0&&c(e,`${r}.tiles`,"Expected at least one tile."),d.length>g.maxKpiTiles&&c(e,`${r}.tiles`,`Must have ${g.maxKpiTiles} tiles or fewer.`);const m=d.slice(0,g.maxKpiTiles).map((u,I)=>{const b=`${r}.tiles.${I}`,h=v(u,b,e);s(h,b,["label","value","previousValue","delta","unit","evidenceIds"],e);const O=typeof h.value=="string"||typeof h.value=="number"?h.value:"";O===""&&c(e,`${b}.value`,"Expected a string or number.");const R=h.previousValue===void 0||h.previousValue===null||typeof h.previousValue=="string"||typeof h.previousValue=="number"?h.previousValue:void 0;h.previousValue!==void 0&&h.previousValue!==null&&R===void 0&&c(e,`${b}.previousValue`,"Expected a string, number, or null.");const w=h.delta===void 0||h.delta===null||typeof h.delta=="string"||typeof h.delta=="number"?h.delta:void 0;h.delta!==void 0&&h.delta!==null&&w===void 0&&c(e,`${b}.delta`,"Expected a string, number, or null.");const M=y(h.unit,`${b}.unit`,l.contentTitle,e),P=$(h.evidenceIds,`${b}.evidenceIds`,e);return{label:p(h.label,`${b}.label`,l.contentTitle,e),value:O,...R!==void 0?{previousValue:R}:{},...w!==void 0?{delta:w}:{},...M?{unit:M}:{},...P?{evidenceIds:P}:{}}}),f=$(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"kpi_grid",...a?{title:a}:{},tiles:m,...f?{evidenceIds:f}:{}}}if(i==="table"){s(o,r,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],e);const a=ve(o.columns,`${r}.columns`,e),d=y(o.title,`${r}.title`,l.contentTitle,e),m=y(o.id,`${r}.id`,l.id,e),f=y(o.caption,`${r}.caption`,l.contentItem,e),u=se(o.totalRows,`${r}.totalRows`,e),I=$(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"table",...m?{id:m}:{},...d?{title:d}:{},columns:a,rows:ge(o.rows,`${r}.rows`,a,e),...f?{caption:f}:{},...u!==void 0?{totalRows:u}:{},...I?{evidenceIds:I}:{}}}if(i==="evidence_appendix"){s(o,r,["type","title","evidenceIds"],e);const a=y(o.title,`${r}.title`,l.contentTitle,e);return{type:"evidence_appendix",...a?{title:a}:{},evidenceIds:$(o.evidenceIds,`${r}.evidenceIds`,e,{required:!0})??[]}}return c(e,`${r}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, table, actions, limitations, or evidence_appendix."),{type:"paragraph",text:""}}function X(n){const t=[],e=v(n,"content",t);s(e,"content",["version","title","summary","blocks"],t),e.version!==1&&c(t,"content.version","Expected version 1.");const r=y(e.title,"content.title",l.contentTitle,t),o=y(e.summary,"content.summary",l.contentSummary,t);Array.isArray(e.blocks)||c(t,"content.blocks","Expected an array.");const i=Array.isArray(e.blocks)?e.blocks:[];i.length===0&&c(t,"content.blocks","Expected at least one block."),i.length>g.maxBlocks&&c(t,"content.blocks",`Must have ${g.maxBlocks} blocks or fewer.`);const a=i.slice(0,g.maxBlocks).map((d,m)=>Ie(d,m,t));return V(t),{version:1,...r?{title:r}:{},...o?{summary:o}:{},blocks:a}}function be(n){try{return{valid:!0,value:X(n),issues:[]}}catch(t){if(t instanceof x)return{valid:!1,issues:t.issues};throw t}}function T(n,t,e,r){return typeof n=="string"&&e.includes(n)?n:(c(r,t,`Expected ${e.join(" or ")}.`),e[0])}function E(n,t,e,r,o){if(n!=null){if(typeof n=="string"&&e.has(n))return n;c(o,t,`Expected ${r}.`)}}function $e(n,t,e){if(n!=null){if(!Array.isArray(n)){c(e,t,"Expected an array.");return}return n}}function Ee(n,t,e){if(n!=null){if(!G(n)){c(e,t,"Expected an object.");return}return n}}function Ce(n,t,e){if(n==null)return;const r=v(n,t,e);s(r,t,fe,e);const o={},i=E(r.pageSize,`${t}.pageSize`,ne,"letter, legal, a4, a3, or tabloid",e),a=E(r.orientation,`${t}.orientation`,re,"portrait or landscape",e),d=E(r.delimiter,`${t}.delimiter`,oe,"comma, semicolon, or tab",e),m=E(r.sheetSelection,`${t}.sheetSelection`,ie,"current or all",e);i&&(o.pageSize=i),a&&(o.orientation=a),d&&(o.delimiter=d),m&&(o.sheetSelection=m);for(const f of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues"])if(!(r[f]===void 0||r[f]===null)){if(typeof r[f]!="boolean"){c(e,`${t}.${f}`,"Expected a boolean.");continue}o[f]=r[f]}for(const f of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const u=y(r[f],`${t}.${f}`,l.id,e);u&&(o[f]=u)}for(const f of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const u=$e(r[f],`${t}.${f}`,e);u&&(o[f]=u)}for(const f of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const u=Ee(r[f],`${t}.${f}`,e);u&&(o[f]=u)}return Object.keys(o).length>0?o:void 0}function A(n,t,e,r){const o=y(t,e,l.attachmentTitle,r);return o&&(n.title=o),n}function S(n,t,e,r){const o=Ce(t,e,r);return o&&(n.settings=o),n}function Te(n,t,e){const r=`attachments.${t}`,o=v(n,r,e),i=o.type;if(i==="dashboard"){s(o,r,["type","dashboardId","format","title","settings"],e);const a=A({type:"dashboard",dashboardId:p(o.dashboardId,`${r}.dashboardId`,l.id,e),format:T(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return S(a,o.settings,`${r}.settings`,e)}if(i==="dashboard_sheet"||i==="document_sheet"){s(o,r,["type","dashboardId","sheetId","format","title","settings"],e);const a=A({type:i,dashboardId:p(o.dashboardId,`${r}.dashboardId`,l.id,e),sheetId:p(o.sheetId,`${r}.sheetId`,l.id,e),format:T(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return S(a,o.settings,`${r}.settings`,e)}if(i==="visual"){s(o,r,["type","dashboardId","visualId","format","title","settings"],e);const a=A({type:"visual",dashboardId:p(o.dashboardId,`${r}.dashboardId`,l.id,e),visualId:p(o.visualId,`${r}.visualId`,l.id,e),format:T(o.format,`${r}.format`,["pdf","png"],e)},o.title,`${r}.title`,e);return S(a,o.settings,`${r}.settings`,e)}if(i==="card"){s(o,r,["type","dashboardId","cardId","format","title","settings"],e);const a=A({type:"card",dashboardId:p(o.dashboardId,`${r}.dashboardId`,l.id,e),cardId:p(o.cardId,`${r}.cardId`,l.id,e),format:T(o.format,`${r}.format`,["csv","pdf","png"],e)},o.title,`${r}.title`,e);return S(a,o.settings,`${r}.settings`,e)}return c(e,`${r}.type`,"Expected dashboard, dashboard_sheet, document_sheet, visual, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function xe(n){switch(n.type){case"dashboard":return`${n.type}:${n.dashboardId}:${n.format}`;case"dashboard_sheet":case"document_sheet":return`${n.type}:${n.dashboardId}:${n.sheetId}:${n.format}`;case"visual":return`${n.type}:${n.dashboardId}:${n.visualId}:${n.format}`;case"card":return`${n.type}:${n.dashboardId}:${n.cardId}:${n.format}`}}function W(n,t){if(n==null)return[];if(!Array.isArray(n))return c(t,"attachments","Expected an array."),[];n.length>k&&c(t,"attachments",`Choose ${k} attachments or fewer.`);const e=n.slice(0,k).map((o,i)=>Te(o,i,t)),r=new Set;return e.forEach((o,i)=>{const a=xe(o);r.has(a)&&c(t,`attachments.${i}`,"Duplicate attachment."),r.add(a)}),e}function Y(n,t){if(n==null)return;const e=v(n,"limits",t);s(e,"limits",Object.keys(D),t);const r={};return Object.keys(D).forEach(o=>{const i=e[o];if(i==null)return;const a=D[o];if(typeof i!="number"||!Number.isInteger(i)||i<a.min||i>a.max){c(t,`limits.${o}`,`Expected an integer between ${a.min} and ${a.max}.`);return}r[o]=i}),Object.keys(r).length>0?r:void 0}function V(n){if(n.length>0)throw new x(n)}function Z(n,t,e){n.type==="none"&&t.length===0&&c(e,"body","Add briefing instructions, a custom message, or at least one attachment.")}function F(n){const t=[],e=v(n,"jobConfig",t);s(e,"jobConfig",["kind","source","body","attachments","presentation","limits"],t),e.kind!==_&&c(t,"kind","Expected BRIEFING.");const r=U(e.source,t),o=H(e.body,t),i=W(e.attachments,t),a=J(e.presentation,t),d=Y(e.limits,t);return Z(o,i,t),V(t),{kind:_,source:r,body:o,attachments:i,presentation:a,...d?{limits:d}:{}}}function Ae(n){return F({...n,kind:_})}function z(n,t,e,r="deliveryConfig.recipients"){const o=`${r}.${t}`,i=v(n,o,e),a=i.type;if(a==="email"){s(i,o,["type","address","name"],e);const d=p(i.address,`${o}.address`,l.id,e),m=y(i.name,`${o}.name`,l.attachmentTitle,e);return d&&!ue(d)&&c(e,`${o}.address`,"Email address is invalid."),{type:"email",address:d,...m?{name:m}:{}}}return a==="user"?(s(i,o,["type","userId"],e),{type:"user",userId:p(i.userId,`${o}.userId`,l.id,e)}):a==="tenant_user"?(s(i,o,["type","tenantUserId"],e),{type:"tenant_user",tenantUserId:p(i.tenantUserId,`${o}.tenantUserId`,l.id,e)}):a==="group"?(s(i,o,["type","groupId"],e),{type:"group",groupId:p(i.groupId,`${o}.groupId`,l.id,e)}):(c(e,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function Se(n,t){return n==null?[]:Array.isArray(n)?n.map((e,r)=>z(e,r,t)):(c(t,"deliveryConfig.recipients","Expected an array."),[])}function ke(n,t){if(!Array.isArray(n))return c(t,"deliveryConfig.channels","Expected an array."),[];const e=[];return n.forEach((r,o)=>{if(!N(r)){c(t,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}e.includes(r)||e.push(r)}),e}function _e(n,t,e){if(n==null)return;const r=v(n,t,e),o={};return Object.entries(r).forEach(([i,a])=>{if(typeof a!="string"){c(e,`${t}.${i}`,"Expected a string.");return}o[i]=a.trim()}),Object.keys(o).length>0?o:void 0}function Be(n,t,e){if(n==null)return;const r=v(n,t,e);s(r,t,["url","method","headers","secretEncrypted"],e);const o=r.method===void 0||r.method===null?void 0:T(r.method,`${t}.method`,["POST","PUT"],e),i=_e(r.headers,`${t}.headers`,e),a=y(r.secretEncrypted,`${t}.secretEncrypted`,2e3,e);return{url:p(r.url,`${t}.url`,2e3,e),...o?{method:o}:{},...i?{headers:i}:{},...a?{secretEncrypted:a}:{}}}function Le(n,t,e){const r=v(n,t,e),o=r.type;if(o==="channel"){s(r,t,["type","channelId","channelName","isPrivate"],e);const i=y(r.channelName,`${t}.channelName`,l.attachmentTitle,e),a=r.isPrivate===void 0||r.isPrivate===null?void 0:C(r.isPrivate,!1,`${t}.isPrivate`,e);return{type:"channel",channelId:p(r.channelId,`${t}.channelId`,l.id,e),...i?{channelName:i}:{},...a!==void 0?{isPrivate:a}:{}}}return o==="dm"?(s(r,t,["type","recipient"],e),c(e,`${t}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:z(r.recipient,0,e,`${t}.recipient`)}):(c(e,`${t}.type`,"Expected channel."),{type:"channel",channelId:""})}function Re(n,t,e){if(n==null)return;if(!Array.isArray(n)){c(e,t,"Expected an array.");return}const r=n.map((o,i)=>z(o,i,e,t));return r.length>0?r:void 0}function we(n,t,e){if(n==null)return;const r=v(n,t,e);s(r,t,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],e);const o=Re(r.threadMentions,`${t}.threadMentions`,e),i=C(r.postThreadDetail,!0,`${t}.postThreadDetail`,e),a=C(r.includeDashboardLink,!0,`${t}.includeDashboardLink`,e),d=C(r.includeBriefingLink,!0,`${t}.includeBriefingLink`,e);return{destination:Le(r.destination,`${t}.destination`,e),...o?{threadMentions:o}:{},...r.postThreadDetail!==void 0?{postThreadDetail:i}:{},...r.includeDashboardLink!==void 0?{includeDashboardLink:a}:{},...r.includeBriefingLink!==void 0?{includeBriefingLink:d}:{}}}function De(n,t,e){const r=v(n,t,e);s(r,t,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],e);const o=E(r.formatProfile,`${t}.formatProfile`,ae,"concise, balanced, or detailed",e),i=y(r.subjectOverride,`${t}.subjectOverride`,500,e),a=y(r.titleOverride,`${t}.titleOverride`,500,e),d=y(r.summaryOverride,`${t}.summaryOverride`,2e3,e),m=C(r.actionBlockVisible,!0,`${t}.actionBlockVisible`,e),f=Be(r.webhookConfig,`${t}.webhookConfig`,e),u=we(r.slackConfig,`${t}.slackConfig`,e);return{...o?{formatProfile:o}:{},...i?{subjectOverride:i}:{},...a?{titleOverride:a}:{},...d?{summaryOverride:d}:{},...r.actionBlockVisible!==void 0?{actionBlockVisible:m}:{},...u?{slackConfig:u}:{},...f?{webhookConfig:f}:{}}}function Ve(n,t){if(n==null)return;const e=v(n,"deliveryConfig.channelConfigs",t),r={};return Object.entries(e).forEach(([o,i])=>{if(!N(o)){c(t,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}r[o]=De(i,`deliveryConfig.channelConfigs.${o}`,t)}),Object.keys(r).length>0?r:void 0}function Fe(n,t){var m,f,u;if(n==null)return null;const e=v(n,"deliveryConfig",t);s(e,"deliveryConfig",["recipients","channels","channelConfigs"],t);const r=Ve(e.channelConfigs,t),o=Se(e.recipients,t),i=ke(e.channels,t),a=((f=(m=r==null?void 0:r.SLACK)==null?void 0:m.slackConfig)==null?void 0:f.destination.type)==="channel"&&!!r.SLACK.slackConfig.destination.channelId.trim();return i.some(I=>I!=="SLACK")&&o.length===0&&c(t,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),i.length===0&&c(t,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),i.includes("SLACK")&&!a&&c(t,"deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId","Choose a Slack channel destination."),!i.includes("SLACK")&&((u=r==null?void 0:r.SLACK)!=null&&u.slackConfig)&&c(t,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:i,...r?{channelConfigs:r}:{}}}function L(n){const t=[],e=v(n,"draft",t);s(e,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],t);const r=p(e.name,"name",l.name,t),o=y(e.description,"description",l.description,t)??null,i=y(e.scheduleExpr,"scheduleExpr",500,t)??null,a=y(e.timezone,"timezone",200,t)??"UTC",d=me(e.status,t),m=U(e.source,t),f=H(e.body,t),u=W(e.attachments,t),I=J(e.presentation,t),b=Y(e.limits,t),h=Fe(e.deliveryConfig,t);return Z(f,u,t),V(t),{name:r,description:o,status:d,scheduleExpr:i,timezone:a,source:m,body:f,attachments:u,presentation:I,...b?{limits:b}:{},deliveryConfig:h}}function ze(n){return L(n)}function Ne(n){return L(n)}function Oe(n){try{return{valid:!0,value:L(n),issues:[]}}catch(t){if(t instanceof x)return{valid:!1,issues:t.issues};throw t}}function Me(n){try{return{valid:!0,value:F(n),issues:[]}}catch(t){if(t instanceof x)return{valid:!1,issues:t.issues};throw t}}function Pe(n){return typeof n=="string"&&q.has(n)}function N(n){return typeof n=="string"&&te.has(n)}exports.BRIEFING_ARTIFACT_FORMATS=K;exports.BRIEFING_CONTENT_LIMITS=g;exports.BRIEFING_KIND=_;exports.BRIEFING_TEXT_LIMITS=l;exports.BriefingContractError=x;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=B;exports.MAX_BRIEFING_ATTACHMENTS=k;exports.buildBriefingJobConfig=Ae;exports.buildCreateBriefingRequest=ze;exports.buildUpdateBriefingRequest=Ne;exports.isBriefingArtifactFormat=Pe;exports.isBriefingDeliveryChannel=N;exports.normalizeBriefingContentDocument=X;exports.normalizeBriefingDraft=L;exports.normalizeBriefingJobConfig=F;exports.validateBriefingContentDocument=be;exports.validateBriefingDraft=Oe;exports.validateBriefingJobConfig=Me;
1
+ "use strict";var Q=Object.defineProperty;var ee=(r,t,e)=>t in r?Q(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var q=(r,t,e)=>ee(r,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _="BRIEFING",j=["markdown","html"],B=["markdown"],k=20,l={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},g={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:l.contentCell,maxParagraphCharacters:l.contentText,maxFindingCharacters:l.contentText,maxListItems:100,maxKpiTiles:8},K=new Set(j),te=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),D={maxToolCalls:{min:1,max:100},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},ne=new Set(["letter","legal","a4","a3","tabloid"]),re=new Set(["portrait","landscape"]),oe=new Set([",",";"," "]),ie=new Set(["current","all"]),ae=new Set(["concise","balanced","detailed"]),ce=new Set(["info","positive","warning","critical"]),de=new Set(["text","number","currency","percent","date","boolean"]),le=new Set(["left","center","right"]),fe=["pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","theme"];class x extends Error{constructor(e){super(e.map(n=>`${n.field}: ${n.message}`).join("; "));q(this,"issues");this.name="BriefingContractError",this.issues=e}}function G(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function c(r,t,e){r.push({field:t,message:e})}function h(r,t,e){return G(r)?r:(c(e,t,"Expected an object."),{})}function m(r,t,e,n){const o=new Set(e);Object.keys(r).forEach(i=>{o.has(i)||c(n,t?`${t}.${i}`:i,`Unexpected field "${i}".`)})}function u(r,t,e,n){if(typeof r!="string")return c(n,t,"Expected a string."),"";const o=r.trim();return o?(o.length>e&&c(n,t,`Must be ${e} characters or fewer.`),o):(c(n,t,"Required value cannot be empty."),"")}function y(r,t,e,n){if(r==null)return;if(typeof r!="string"){c(n,t,"Expected a string.");return}const o=r.trim();if(o)return o.length>e&&c(n,t,`Must be ${e} characters or fewer.`),o}function se(r,t,e){if(r!=null){if(!Number.isInteger(r)||Number(r)<0){c(e,t,"Expected a non-negative integer.");return}return Number(r)}}function $(r,t,e,n={}){if(r==null)return n.required?(c(e,t,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(r))return c(e,t,"Expected an array."),n.required?[]:void 0;const o=[];return r.forEach((i,a)=>{const d=u(i,`${t}.${a}`,l.id,e);d&&!o.includes(d)&&o.push(d)}),n.required&&o.length===0&&c(e,t,"Expected at least one evidence id."),o.length>0||n.required?o:void 0}function C(r,t,e,n){return r==null?t:typeof r!="boolean"?(c(n,e,"Expected a boolean."),t):r}function me(r,t){return r==null?"ACTIVE":r==="ACTIVE"||r==="PAUSED"||r==="DISABLED"?r:(c(t,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function pe(r){return r.includes("@")&&r.includes(".")&&!r.includes(" ")}function U(r,t){if(r==null)return{type:"project"};const e=h(r,"source",t),n=e.type;return n==="project"?(m(e,"source",["type"],t),{type:"project"}):n==="dashboard"?(m(e,"source",["type","dashboardId"],t),{type:"dashboard",dashboardId:u(e.dashboardId,"source.dashboardId",l.id,t)}):(c(t,"source.type","Expected project or dashboard."),{type:"project"})}function H(r,t){const e=h(r,"body",t),n=e.type;return n==="generated_analysis"?(m(e,"body",["type","instruction"],t),{type:"generated_analysis",instruction:u(e.instruction,"body.instruction",l.instruction,t)}):n==="custom_message"?(m(e,"body",["type","message"],t),{type:"custom_message",message:u(e.message,"body.message",l.customMessage,t)}):n==="none"?(m(e,"body",["type"],t),{type:"none"}):(c(t,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function ue(r,t){if(r==null)return[...B];if(!Array.isArray(r))return c(t,"presentation.artifactFormats","Expected an array."),[...B];if(r.length===0)return c(t,"presentation.artifactFormats","Choose at least one artifact format."),[];const e=[];return r.forEach((n,o)=>{if(typeof n!="string"||!K.has(n)){c(t,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}e.includes(n)||e.push(n)}),e}function J(r,t){if(r==null)return{artifactFormats:[...B],includeEvidence:!0,includeSql:!0};const e=h(r,"presentation",t);m(e,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format"],t);const n={artifactFormats:ue(e.artifactFormats,t),includeEvidence:C(e.includeEvidence,!0,"presentation.includeEvidence",t),includeSql:C(e.includeSql,!0,"presentation.includeSql",t)},o=y(e.audience,"presentation.audience",l.presentationAudience,t),i=y(e.tone,"presentation.tone",l.presentationTone,t),a=y(e.format,"presentation.format",l.presentationFormat,t);return o&&(n.audience=o),i&&(n.tone=i),a&&(n.format=a),n}function ye(r,t,e){return Array.isArray(r)?(r.length===0&&c(e,t,"Expected at least one item."),r.length>g.maxListItems&&c(e,t,`Must have ${g.maxListItems} items or fewer.`),r.slice(0,g.maxListItems).map((n,o)=>u(n,`${t}.${o}`,l.contentItem,e)).filter(Boolean)):(c(e,t,"Expected an array."),[])}function ve(r,t,e){return r===null||typeof r=="string"||typeof r=="number"||typeof r=="boolean"?typeof r=="string"&&r.length>l.contentCell?(c(e,t,`Must be ${l.contentCell} characters or fewer.`),r.slice(0,l.contentCell)):typeof r=="number"&&!Number.isFinite(r)?(c(e,t,"Expected a finite number."),null):r:(c(e,t,"Expected a string, number, boolean, or null."),null)}function he(r,t,e){if(!Array.isArray(r))return c(e,t,"Expected an array."),[];r.length===0&&c(e,t,"Expected at least one column."),r.length>g.maxTableColumns&&c(e,t,`Must have ${g.maxTableColumns} columns or fewer.`);const n=new Set;return r.slice(0,g.maxTableColumns).map((o,i)=>{const a=`${t}.${i}`,d=h(o,a,e);m(d,a,["key","label","kind","align"],e);const s=u(d.key,`${a}.key`,l.id,e);s&&(n.has(s)&&c(e,`${a}.key`,"Column key must be unique."),n.add(s));const f=u(d.label,`${a}.label`,l.contentTitle,e),p=E(d.kind,`${a}.kind`,de,"text, number, currency, percent, date, or boolean",e),I=E(d.align,`${a}.align`,le,"left, center, or right",e);return{key:s,label:f,...p?{kind:p}:{},...I?{align:I}:{}}})}function ge(r,t,e,n){if(!Array.isArray(r))return c(n,t,"Expected an array."),[];r.length>g.maxTableRows&&c(n,t,`Must have ${g.maxTableRows} rows or fewer.`);const o=new Set(e.map(i=>i.key).filter(Boolean));return r.slice(0,g.maxTableRows).map((i,a)=>{const d=`${t}.${a}`,s=h(i,d,n);return Object.keys(s).forEach(f=>{o.has(f)||c(n,`${d}.${f}`,`Unexpected table cell "${f}".`)}),Object.fromEntries(e.map(f=>[f.key,ve(s[f.key]??null,`${d}.${f.key}`,n)]))})}function Ie(r,t,e){const n=`content.blocks.${t}`,o=h(r,n,e),i=o.type;if(i==="heading"){m(o,n,["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,`${n}.level`,"Expected 2 or 3.");const d=$(o.evidenceIds,`${n}.evidenceIds`,e);return{type:"heading",text:u(o.text,`${n}.text`,l.contentTitle,e),...a?{level:a}:{},...d?{evidenceIds:d}:{}}}if(i==="paragraph"){m(o,n,["type","text","evidenceIds"],e);const a=$(o.evidenceIds,`${n}.evidenceIds`,e);return{type:"paragraph",text:u(o.text,`${n}.text`,l.contentText,e),...a?{evidenceIds:a}:{}}}if(i==="finding"){m(o,n,["type","title","text","severity","evidenceIds"],e);const a=y(o.title,`${n}.title`,l.contentTitle,e),d=E(o.severity,`${n}.severity`,ce,"info, positive, warning, or critical",e);return{type:"finding",...a?{title:a}:{},text:u(o.text,`${n}.text`,l.contentText,e),...d?{severity:d}:{},evidenceIds:$(o.evidenceIds,`${n}.evidenceIds`,e,{required:!0})??[]}}if(i==="bullets"||i==="actions"||i==="limitations"){m(o,n,["type","title","items","evidenceIds"],e);const a=y(o.title,`${n}.title`,l.contentTitle,e),d=$(o.evidenceIds,`${n}.evidenceIds`,e);return{type:i,...a?{title:a}:{},items:ye(o.items,`${n}.items`,e),...d?{evidenceIds:d}:{}}}if(i==="metric"){m(o,n,["type","label","value","previousValue","delta","unit","evidenceIds"],e);const a=typeof o.value=="string"||typeof o.value=="number"?o.value:"";a===""&&c(e,`${n}.value`,"Expected a string or number.");const d=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&&d===void 0&&c(e,`${n}.previousValue`,"Expected a string, number, or null.");const s=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&&s===void 0&&c(e,`${n}.delta`,"Expected a string, number, or null.");const f=y(o.unit,`${n}.unit`,l.contentTitle,e),p=$(o.evidenceIds,`${n}.evidenceIds`,e);return{type:"metric",label:u(o.label,`${n}.label`,l.contentTitle,e),value:a,...d!==void 0?{previousValue:d}:{},...s!==void 0?{delta:s}:{},...f?{unit:f}:{},...p?{evidenceIds:p}:{}}}if(i==="kpi_grid"){m(o,n,["type","title","tiles","evidenceIds"],e);const a=y(o.title,`${n}.title`,l.contentTitle,e),d=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||c(e,`${n}.tiles`,"Expected an array."),d.length===0&&c(e,`${n}.tiles`,"Expected at least one tile."),d.length>g.maxKpiTiles&&c(e,`${n}.tiles`,`Must have ${g.maxKpiTiles} tiles or fewer.`);const s=d.slice(0,g.maxKpiTiles).map((p,I)=>{const b=`${n}.tiles.${I}`,v=h(p,b,e);m(v,b,["label","value","previousValue","delta","unit","evidenceIds"],e);const O=typeof v.value=="string"||typeof v.value=="number"?v.value:"";O===""&&c(e,`${b}.value`,"Expected a string or number.");const R=v.previousValue===void 0||v.previousValue===null||typeof v.previousValue=="string"||typeof v.previousValue=="number"?v.previousValue:void 0;v.previousValue!==void 0&&v.previousValue!==null&&R===void 0&&c(e,`${b}.previousValue`,"Expected a string, number, or null.");const w=v.delta===void 0||v.delta===null||typeof v.delta=="string"||typeof v.delta=="number"?v.delta:void 0;v.delta!==void 0&&v.delta!==null&&w===void 0&&c(e,`${b}.delta`,"Expected a string, number, or null.");const M=y(v.unit,`${b}.unit`,l.contentTitle,e),P=$(v.evidenceIds,`${b}.evidenceIds`,e);return{label:u(v.label,`${b}.label`,l.contentTitle,e),value:O,...R!==void 0?{previousValue:R}:{},...w!==void 0?{delta:w}:{},...M?{unit:M}:{},...P?{evidenceIds:P}:{}}}),f=$(o.evidenceIds,`${n}.evidenceIds`,e);return{type:"kpi_grid",...a?{title:a}:{},tiles:s,...f?{evidenceIds:f}:{}}}if(i==="progress"){m(o,n,["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,`${n}.value`,"Expected a finite number.");const d=y(o.detail,`${n}.detail`,l.contentText,e),s=$(o.evidenceIds,`${n}.evidenceIds`,e);return{type:"progress",label:u(o.label,`${n}.label`,l.contentTitle,e),value:a,...d?{detail:d}:{},...s?{evidenceIds:s}:{}}}if(i==="table"){m(o,n,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],e);const a=he(o.columns,`${n}.columns`,e),d=y(o.title,`${n}.title`,l.contentTitle,e),s=y(o.id,`${n}.id`,l.id,e),f=y(o.caption,`${n}.caption`,l.contentItem,e),p=se(o.totalRows,`${n}.totalRows`,e),I=$(o.evidenceIds,`${n}.evidenceIds`,e);return{type:"table",...s?{id:s}:{},...d?{title:d}:{},columns:a,rows:ge(o.rows,`${n}.rows`,a,e),...f?{caption:f}:{},...p!==void 0?{totalRows:p}:{},...I?{evidenceIds:I}:{}}}if(i==="evidence_appendix"){m(o,n,["type","title","evidenceIds"],e);const a=y(o.title,`${n}.title`,l.contentTitle,e);return{type:"evidence_appendix",...a?{title:a}:{},evidenceIds:$(o.evidenceIds,`${n}.evidenceIds`,e,{required:!0})??[]}}if(i==="sql"){m(o,n,["type","title","sql","evidenceIds"],e);const a=y(o.title,`${n}.title`,l.contentTitle,e),d=u(o.sql,`${n}.sql`,l.contentSql,e),s=$(o.evidenceIds,`${n}.evidenceIds`,e);return{type:"sql",...a?{title:a}:{},sql:d,...s?{evidenceIds:s}:{}}}return c(e,`${n}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."),{type:"paragraph",text:""}}function X(r){const t=[],e=h(r,"content",t);m(e,"content",["version","title","summary","blocks"],t),e.version!==1&&c(t,"content.version","Expected version 1.");const n=y(e.title,"content.title",l.contentTitle,t),o=y(e.summary,"content.summary",l.contentSummary,t);Array.isArray(e.blocks)||c(t,"content.blocks","Expected an array.");const i=Array.isArray(e.blocks)?e.blocks:[];i.length===0&&c(t,"content.blocks","Expected at least one block."),i.length>g.maxBlocks&&c(t,"content.blocks",`Must have ${g.maxBlocks} blocks or fewer.`);const a=i.slice(0,g.maxBlocks).map((d,s)=>Ie(d,s,t));return F(t),{version:1,...n?{title:n}:{},...o?{summary:o}:{},blocks:a}}function be(r){try{return{valid:!0,value:X(r),issues:[]}}catch(t){if(t instanceof x)return{valid:!1,issues:t.issues};throw t}}function T(r,t,e,n){return typeof r=="string"&&e.includes(r)?r:(c(n,t,`Expected ${e.join(" or ")}.`),e[0])}function E(r,t,e,n,o){if(r!=null){if(typeof r=="string"&&e.has(r))return r;c(o,t,`Expected ${n}.`)}}function $e(r,t,e){if(r!=null){if(!Array.isArray(r)){c(e,t,"Expected an array.");return}return r}}function Ee(r,t,e){if(r!=null){if(!G(r)){c(e,t,"Expected an object.");return}return r}}function Ce(r,t,e){if(r==null)return;const n=h(r,t,e);m(n,t,fe,e);const o={},i=E(n.pageSize,`${t}.pageSize`,ne,"letter, legal, a4, a3, or tabloid",e),a=E(n.orientation,`${t}.orientation`,re,"portrait or landscape",e),d=E(n.delimiter,`${t}.delimiter`,oe,"comma, semicolon, or tab",e),s=E(n.sheetSelection,`${t}.sheetSelection`,ie,"current or all",e);i&&(o.pageSize=i),a&&(o.orientation=a),d&&(o.delimiter=d),s&&(o.sheetSelection=s);for(const f of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues"])if(!(n[f]===void 0||n[f]===null)){if(typeof n[f]!="boolean"){c(e,`${t}.${f}`,"Expected a boolean.");continue}o[f]=n[f]}for(const f of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const p=y(n[f],`${t}.${f}`,l.id,e);p&&(o[f]=p)}for(const f of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const p=$e(n[f],`${t}.${f}`,e);p&&(o[f]=p)}for(const f of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const p=Ee(n[f],`${t}.${f}`,e);p&&(o[f]=p)}return Object.keys(o).length>0?o:void 0}function A(r,t,e,n){const o=y(t,e,l.attachmentTitle,n);return o&&(r.title=o),r}function S(r,t,e,n){const o=Ce(t,e,n);return o&&(r.settings=o),r}function Te(r,t,e){const n=`attachments.${t}`,o=h(r,n,e),i=o.type;if(i==="dashboard"){m(o,n,["type","dashboardId","format","title","settings"],e);const a=A({type:"dashboard",dashboardId:u(o.dashboardId,`${n}.dashboardId`,l.id,e),format:T(o.format,`${n}.format`,["pdf"],e)},o.title,`${n}.title`,e);return S(a,o.settings,`${n}.settings`,e)}if(i==="dashboard_sheet"||i==="document_sheet"){m(o,n,["type","dashboardId","sheetId","format","title","settings"],e);const a=A({type:i,dashboardId:u(o.dashboardId,`${n}.dashboardId`,l.id,e),sheetId:u(o.sheetId,`${n}.sheetId`,l.id,e),format:T(o.format,`${n}.format`,["pdf"],e)},o.title,`${n}.title`,e);return S(a,o.settings,`${n}.settings`,e)}if(i==="visual"){m(o,n,["type","dashboardId","visualId","format","title","settings"],e);const a=A({type:"visual",dashboardId:u(o.dashboardId,`${n}.dashboardId`,l.id,e),visualId:u(o.visualId,`${n}.visualId`,l.id,e),format:T(o.format,`${n}.format`,["pdf","png"],e)},o.title,`${n}.title`,e);return S(a,o.settings,`${n}.settings`,e)}if(i==="card"){m(o,n,["type","dashboardId","cardId","format","title","settings"],e);const a=A({type:"card",dashboardId:u(o.dashboardId,`${n}.dashboardId`,l.id,e),cardId:u(o.cardId,`${n}.cardId`,l.id,e),format:T(o.format,`${n}.format`,["csv","pdf","png"],e)},o.title,`${n}.title`,e);return S(a,o.settings,`${n}.settings`,e)}return c(e,`${n}.type`,"Expected dashboard, dashboard_sheet, document_sheet, visual, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function xe(r){switch(r.type){case"dashboard":return`${r.type}:${r.dashboardId}:${r.format}`;case"dashboard_sheet":case"document_sheet":return`${r.type}:${r.dashboardId}:${r.sheetId}:${r.format}`;case"visual":return`${r.type}:${r.dashboardId}:${r.visualId}:${r.format}`;case"card":return`${r.type}:${r.dashboardId}:${r.cardId}:${r.format}`}}function W(r,t){if(r==null)return[];if(!Array.isArray(r))return c(t,"attachments","Expected an array."),[];r.length>k&&c(t,"attachments",`Choose ${k} attachments or fewer.`);const e=r.slice(0,k).map((o,i)=>Te(o,i,t)),n=new Set;return e.forEach((o,i)=>{const a=xe(o);n.has(a)&&c(t,`attachments.${i}`,"Duplicate attachment."),n.add(a)}),e}function Y(r,t){if(r==null)return;const e=h(r,"limits",t);m(e,"limits",Object.keys(D),t);const n={};return Object.keys(D).forEach(o=>{const i=e[o];if(i==null)return;const a=D[o];if(typeof i!="number"||!Number.isInteger(i)||i<a.min||i>a.max){c(t,`limits.${o}`,`Expected an integer between ${a.min} and ${a.max}.`);return}n[o]=i}),Object.keys(n).length>0?n:void 0}function F(r){if(r.length>0)throw new x(r)}function Z(r,t,e){r.type==="none"&&t.length===0&&c(e,"body","Add briefing instructions, a custom message, or at least one attachment.")}function V(r){const t=[],e=h(r,"jobConfig",t);m(e,"jobConfig",["kind","source","body","attachments","presentation","limits"],t),e.kind!==_&&c(t,"kind","Expected BRIEFING.");const n=U(e.source,t),o=H(e.body,t),i=W(e.attachments,t),a=J(e.presentation,t),d=Y(e.limits,t);return Z(o,i,t),F(t),{kind:_,source:n,body:o,attachments:i,presentation:a,...d?{limits:d}:{}}}function Ae(r){return V({...r,kind:_})}function N(r,t,e,n="deliveryConfig.recipients"){const o=`${n}.${t}`,i=h(r,o,e),a=i.type;if(a==="email"){m(i,o,["type","address","name"],e);const d=u(i.address,`${o}.address`,l.id,e),s=y(i.name,`${o}.name`,l.attachmentTitle,e);return d&&!pe(d)&&c(e,`${o}.address`,"Email address is invalid."),{type:"email",address:d,...s?{name:s}:{}}}return a==="user"?(m(i,o,["type","userId"],e),{type:"user",userId:u(i.userId,`${o}.userId`,l.id,e)}):a==="tenant_user"?(m(i,o,["type","tenantUserId"],e),{type:"tenant_user",tenantUserId:u(i.tenantUserId,`${o}.tenantUserId`,l.id,e)}):a==="group"?(m(i,o,["type","groupId"],e),{type:"group",groupId:u(i.groupId,`${o}.groupId`,l.id,e)}):(c(e,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function Se(r,t){return r==null?[]:Array.isArray(r)?r.map((e,n)=>N(e,n,t)):(c(t,"deliveryConfig.recipients","Expected an array."),[])}function ke(r,t){if(!Array.isArray(r))return c(t,"deliveryConfig.channels","Expected an array."),[];const e=[];return r.forEach((n,o)=>{if(!z(n)){c(t,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}e.includes(n)||e.push(n)}),e}function _e(r,t,e){if(r==null)return;const n=h(r,t,e),o={};return Object.entries(n).forEach(([i,a])=>{if(typeof a!="string"){c(e,`${t}.${i}`,"Expected a string.");return}o[i]=a.trim()}),Object.keys(o).length>0?o:void 0}function Be(r,t,e){if(r==null)return;const n=h(r,t,e);m(n,t,["url","method","headers","secretEncrypted"],e);const o=n.method===void 0||n.method===null?void 0:T(n.method,`${t}.method`,["POST","PUT"],e),i=_e(n.headers,`${t}.headers`,e),a=y(n.secretEncrypted,`${t}.secretEncrypted`,2e3,e);return{url:u(n.url,`${t}.url`,2e3,e),...o?{method:o}:{},...i?{headers:i}:{},...a?{secretEncrypted:a}:{}}}function Le(r,t,e){const n=h(r,t,e),o=n.type;if(o==="channel"){m(n,t,["type","channelId","channelName","isPrivate"],e);const i=y(n.channelName,`${t}.channelName`,l.attachmentTitle,e),a=n.isPrivate===void 0||n.isPrivate===null?void 0:C(n.isPrivate,!1,`${t}.isPrivate`,e);return{type:"channel",channelId:u(n.channelId,`${t}.channelId`,l.id,e),...i?{channelName:i}:{},...a!==void 0?{isPrivate:a}:{}}}return o==="dm"?(m(n,t,["type","recipient"],e),c(e,`${t}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:N(n.recipient,0,e,`${t}.recipient`)}):(c(e,`${t}.type`,"Expected channel."),{type:"channel",channelId:""})}function Re(r,t,e){if(r==null)return;if(!Array.isArray(r)){c(e,t,"Expected an array.");return}const n=r.map((o,i)=>N(o,i,e,t));return n.length>0?n:void 0}function we(r,t,e){if(r==null)return;const n=h(r,t,e);m(n,t,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],e);const o=Re(n.threadMentions,`${t}.threadMentions`,e),i=C(n.postThreadDetail,!0,`${t}.postThreadDetail`,e),a=C(n.includeDashboardLink,!0,`${t}.includeDashboardLink`,e),d=C(n.includeBriefingLink,!0,`${t}.includeBriefingLink`,e);return{destination:Le(n.destination,`${t}.destination`,e),...o?{threadMentions:o}:{},...n.postThreadDetail!==void 0?{postThreadDetail:i}:{},...n.includeDashboardLink!==void 0?{includeDashboardLink:a}:{},...n.includeBriefingLink!==void 0?{includeBriefingLink:d}:{}}}function De(r,t,e){const n=h(r,t,e);m(n,t,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],e);const o=E(n.formatProfile,`${t}.formatProfile`,ae,"concise, balanced, or detailed",e),i=y(n.subjectOverride,`${t}.subjectOverride`,500,e),a=y(n.titleOverride,`${t}.titleOverride`,500,e),d=y(n.summaryOverride,`${t}.summaryOverride`,2e3,e),s=C(n.actionBlockVisible,!0,`${t}.actionBlockVisible`,e),f=Be(n.webhookConfig,`${t}.webhookConfig`,e),p=we(n.slackConfig,`${t}.slackConfig`,e);return{...o?{formatProfile:o}:{},...i?{subjectOverride:i}:{},...a?{titleOverride:a}:{},...d?{summaryOverride:d}:{},...n.actionBlockVisible!==void 0?{actionBlockVisible:s}:{},...p?{slackConfig:p}:{},...f?{webhookConfig:f}:{}}}function Fe(r,t){if(r==null)return;const e=h(r,"deliveryConfig.channelConfigs",t),n={};return Object.entries(e).forEach(([o,i])=>{if(!z(o)){c(t,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}n[o]=De(i,`deliveryConfig.channelConfigs.${o}`,t)}),Object.keys(n).length>0?n:void 0}function Ve(r,t){var s,f,p;if(r==null)return null;const e=h(r,"deliveryConfig",t);m(e,"deliveryConfig",["recipients","channels","channelConfigs"],t);const n=Fe(e.channelConfigs,t),o=Se(e.recipients,t),i=ke(e.channels,t),a=((f=(s=n==null?void 0:n.SLACK)==null?void 0:s.slackConfig)==null?void 0:f.destination.type)==="channel"&&!!n.SLACK.slackConfig.destination.channelId.trim();return i.some(I=>I!=="SLACK")&&o.length===0&&c(t,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),i.length===0&&c(t,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),i.includes("SLACK")&&!a&&c(t,"deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId","Choose a Slack channel destination."),!i.includes("SLACK")&&((p=n==null?void 0:n.SLACK)!=null&&p.slackConfig)&&c(t,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:i,...n?{channelConfigs:n}:{}}}function L(r){const t=[],e=h(r,"draft",t);m(e,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],t);const n=u(e.name,"name",l.name,t),o=y(e.description,"description",l.description,t)??null,i=y(e.scheduleExpr,"scheduleExpr",500,t)??null,a=y(e.timezone,"timezone",200,t)??"UTC",d=me(e.status,t),s=U(e.source,t),f=H(e.body,t),p=W(e.attachments,t),I=J(e.presentation,t),b=Y(e.limits,t),v=Ve(e.deliveryConfig,t);return Z(f,p,t),F(t),{name:n,description:o,status:d,scheduleExpr:i,timezone:a,source:s,body:f,attachments:p,presentation:I,...b?{limits:b}:{},deliveryConfig:v}}function Ne(r){return L(r)}function ze(r){return L(r)}function Oe(r){try{return{valid:!0,value:L(r),issues:[]}}catch(t){if(t instanceof x)return{valid:!1,issues:t.issues};throw t}}function Me(r){try{return{valid:!0,value:V(r),issues:[]}}catch(t){if(t instanceof x)return{valid:!1,issues:t.issues};throw t}}function Pe(r){return typeof r=="string"&&K.has(r)}function z(r){return typeof r=="string"&&te.has(r)}exports.BRIEFING_ARTIFACT_FORMATS=j;exports.BRIEFING_CONTENT_LIMITS=g;exports.BRIEFING_KIND=_;exports.BRIEFING_TEXT_LIMITS=l;exports.BriefingContractError=x;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=B;exports.MAX_BRIEFING_ATTACHMENTS=k;exports.buildBriefingJobConfig=Ae;exports.buildCreateBriefingRequest=Ne;exports.buildUpdateBriefingRequest=ze;exports.isBriefingArtifactFormat=Pe;exports.isBriefingDeliveryChannel=z;exports.normalizeBriefingContentDocument=X;exports.normalizeBriefingDraft=L;exports.normalizeBriefingJobConfig=V;exports.validateBriefingContentDocument=be;exports.validateBriefingDraft=Oe;exports.validateBriefingJobConfig=Me;