react-semaphor 0.1.381 → 0.1.382

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 (74) hide show
  1. package/DATA_APP_SDK.md +238 -0
  2. package/README.md +7 -0
  3. package/dist/analytics-protocol/index.cjs +1 -1
  4. package/dist/analytics-protocol/index.js +45 -41
  5. package/dist/brand-studio/index.cjs +1 -1
  6. package/dist/brand-studio/index.js +6 -6
  7. package/dist/chunks/analyze-result-contract-CtXfp3nv.js +1 -0
  8. package/dist/chunks/analyze-result-contract-DuhlklhI.js +102 -0
  9. package/dist/chunks/{braces-BT-ZyB-g.js → braces-CGi-YFZp.js} +1 -1
  10. package/dist/chunks/{braces-DOxxfERN.js → braces-CP8BEzl3.js} +1 -1
  11. package/dist/chunks/{calendar-preferences-dialog-Dsgs8WDv.js → calendar-preferences-dialog-CV4xF2Tp.js} +3 -3
  12. package/dist/chunks/{calendar-preferences-dialog-iZs8XqyH.js → calendar-preferences-dialog-rDDobeLo.js} +1 -1
  13. package/dist/chunks/catalog-field-grounding-Bnx-3tE0.js +1 -0
  14. package/dist/chunks/catalog-field-grounding-CJKAqtiC.js +100 -0
  15. package/dist/chunks/{dashboard-briefing-launcher-Coks66cV.js → dashboard-briefing-launcher-BT00MvGB.js} +5 -5
  16. package/dist/chunks/{dashboard-briefing-launcher-B5vPTl8P.js → dashboard-briefing-launcher-Dcbh-mjY.js} +1 -1
  17. package/dist/chunks/{dashboard-controls-BfkcnIdy.js → dashboard-controls-B6y7jkKO.js} +8 -8
  18. package/dist/chunks/{dashboard-controls-Dyqye6fh.js → dashboard-controls-CRqnPibB.js} +1 -1
  19. package/dist/chunks/{dashboard-json-DjXi4cI6.js → dashboard-json-CfIUG8k1.js} +3 -3
  20. package/dist/chunks/{dashboard-json-CV_LnO9x.js → dashboard-json-DEQqRR1x.js} +1 -1
  21. package/dist/chunks/{edit-dashboard-visual-DOW1Ap1N.js → edit-dashboard-visual-DMbf89xa.js} +5 -5
  22. package/dist/chunks/{edit-dashboard-visual-yinO0yU-.js → edit-dashboard-visual-wDOcHak3.js} +1 -1
  23. package/dist/chunks/{index-DlprYjr6.js → index-BAsWLkZ8.js} +169 -168
  24. package/dist/chunks/{index-CkoRCh3g.js → index-CrKxP9uF.js} +5 -5
  25. package/dist/chunks/{layout-grid-DTbOIOsE.js → layout-grid-BsKH3TgY.js} +1 -1
  26. package/dist/chunks/{layout-grid-DccceHv4.js → layout-grid-jJQUqDN9.js} +1 -1
  27. package/dist/chunks/operators-C8TxpM4C.js +48 -0
  28. package/dist/chunks/operators-DrTQsJXv.js +1 -0
  29. package/dist/chunks/{palette-SimHJELn.js → palette-9zLPGlj2.js} +1 -1
  30. package/dist/chunks/{palette-DCzLwqIw.js → palette-xU9Qt6bE.js} +1 -1
  31. package/dist/chunks/{save-D2O96E5A.js → save-8A_q6K4E.js} +1 -1
  32. package/dist/chunks/{save-zNVYH02T.js → save-DzciESDh.js} +1 -1
  33. package/dist/chunks/{source-identity-Dj3dryN9.js → source-identity-CN4xiyKJ.js} +5 -5
  34. package/dist/chunks/{switch-DMPsMpHW.js → switch-DArtNJZh.js} +292 -291
  35. package/dist/chunks/{switch-Jhyl63RF.js → switch-k7kj6NRg.js} +1 -1
  36. package/dist/chunks/{use-create-flow-overlay-state-r5JKyXU8.js → use-create-flow-overlay-state-BdG1DiSx.js} +4 -4
  37. package/dist/chunks/{use-create-flow-overlay-state-NsqFPwdB.js → use-create-flow-overlay-state-ipeaE65_.js} +1 -1
  38. package/dist/chunks/{validators-CtNmgsvG.js → validators-CHPH6ORs.js} +641 -498
  39. package/dist/chunks/validators-lWo8m0Q7.js +1 -0
  40. package/dist/dashboard/index.cjs +1 -1
  41. package/dist/dashboard/index.js +1 -1
  42. package/dist/dashboard-authoring/index.cjs +3 -3
  43. package/dist/dashboard-authoring/index.js +105 -92
  44. package/dist/data-app-builder/index.cjs +1 -1
  45. package/dist/data-app-builder/index.js +3 -3
  46. package/dist/data-app-sdk/index.cjs +1 -1
  47. package/dist/data-app-sdk/index.js +444 -380
  48. package/dist/data-app-sdk-adapters/index.cjs +1 -0
  49. package/dist/data-app-sdk-adapters/index.js +383 -0
  50. package/dist/data-app-sdk-validation/index.cjs +1 -1
  51. package/dist/data-app-sdk-validation/index.js +1073 -6
  52. package/dist/index.cjs +1 -1
  53. package/dist/index.js +7 -7
  54. package/dist/surfboard/index.cjs +1 -1
  55. package/dist/surfboard/index.js +2 -2
  56. package/dist/types/analytics-protocol.d.ts +58 -31
  57. package/dist/types/dashboard-assistant.d.ts +40 -15
  58. package/dist/types/dashboard-authoring.d.ts +36 -16
  59. package/dist/types/dashboard.d.ts +8 -8
  60. package/dist/types/data-app-builder.d.ts +35 -11
  61. package/dist/types/data-app-sdk-adapters.d.ts +733 -0
  62. package/dist/types/data-app-sdk-validation.d.ts +85 -25
  63. package/dist/types/data-app-sdk.d.ts +99 -155
  64. package/dist/types/main.d.ts +35 -11
  65. package/dist/types/shared.d.ts +8 -8
  66. package/dist/types/surfboard.d.ts +8 -8
  67. package/dist/types/types.d.ts +8 -8
  68. package/package.json +9 -2
  69. package/src/data-app-sdk/README.md +240 -0
  70. package/dist/chunks/catalog-field-grounding-8L9I0zdg.js +0 -1
  71. package/dist/chunks/catalog-field-grounding-BK4BX8sZ.js +0 -200
  72. package/dist/chunks/validation-BM3-ShHV.js +0 -1003
  73. package/dist/chunks/validation-BVpqRFar.js +0 -1
  74. package/dist/chunks/validators-jpoYhpHh.js +0 -1
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-CkoRCh3g.js"),d=require("./chunks/common-types-C73-Ud1-.js"),N=require("./chunks/calendar-preferences-dialog-iZs8XqyH.js"),t=require("react/jsx-runtime"),a=require("./chunks/switch-Jhyl63RF.js"),C=require("react"),y=require("./types/index.cjs"),r=require("./chunks/dashboard-briefing-launcher-B5vPTl8P.js"),P=require("./chunks/use-debounced-dirty-check-XHSwAefL.js");require("./chunks/catalog-field-grounding-8L9I0zdg.js");require("react-dom");require("./chunks/index-DRlMUglg.js");const S=require("./chunks/normalize-dashboard-for-dirty-check-BXRUMVb2.js");require("./chunks/index-BxM99sFL.js");function _(i){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const n in i)if(n!=="default"){const u=Object.getOwnPropertyDescriptor(i,n);Object.defineProperty(o,n,u.get?u:{enumerable:!0,get:()=>i[n]})}}return o.default=i,Object.freeze(o)}const h=_(C);function R(i){const{displayPreferences:o,cardId:n,...u}=i,s={...u,id:i.dashboardId};return t.jsx(e.ErrorBoundary,{FallbackComponent:e.Fallback,children:t.jsxs(e.SemaphorContextProvider,{dashboardProps:s,children:[t.jsx(e.SemaphorReadyIndicator,{componentType:"visual",componentId:i.cardId}),t.jsx(e.UXProvider,{appearance:i.appearance,children:t.jsx(e.DisplayPreferencesProvider,{displayPreferences:o,children:t.jsx(e.Container,{type:"visual",cardId:n,...s,children:t.jsx(w,{cardId:n})})})})]})})}function w({cardId:i}){const o=a.useDashboardStore(s=>{var c;return(c=s.dashboard)==null?void 0:c.sheets}),{card:n,frame:u}=C.useMemo(()=>{const s=o==null?void 0:o.flatMap(l=>l.frames),c=s==null?void 0:s.flatMap(l=>l==null?void 0:l.cards),D=c==null?void 0:c.find(l=>(l==null?void 0:l.id)===i),E=s==null?void 0:s.find(l=>{var p;return(p=l==null?void 0:l.cards)==null?void 0:p.find(g=>(g==null?void 0:g.id)===i)});return{card:D,frame:E}},[o,i]);return!n||!u?t.jsx(e.FallbackVisual,{error:new Error("Card not found"),resetErrorBoundary:()=>{},customerFacingMessage:`Card not found with ID: ${i}`}):t.jsx("main",{className:"flex h-full grow flex-col",children:t.jsx(e.ErrorBoundary,{FallbackComponent:({error:s,resetErrorBoundary:c})=>t.jsx(e.FallbackVisual,{error:s,resetErrorBoundary:c,customerFacingMessage:"Error creating visual. Please try again."}),children:t.jsx(e.DashboardCard,{card:n,frame:u})})})}function j(i,o,n,u){C.useEffect(()=>{i&&!n&&o&&u(e.cloneDeep(o))},[i,n,o,u])}function L({name:i,items:o,value:n,onChange:u,isLoading:s,isError:c,refetch:D,className:E,icon:l,showNone:p=!1}){const g=h.useRef(null),[b,T]=h.useState(!1),[B,A]=h.useState("100%"),x=p?[...o||[],{id:"none",name:"None"}]:o;h.useLayoutEffect(()=>{g.current&&A(g.current.offsetWidth)},[]);function v(){var f;return s?"Loading...":c?"Error":n?(f=o==null?void 0:o.find(m=>m.id===n))==null?void 0:f.name:`Select ${i}`}function F(f,m){u(m),T(!1)}return t.jsxs(a.Popover,{open:b,onOpenChange:T,children:[t.jsx(a.PopoverTrigger,{asChild:!0,children:t.jsxs(a.Button,{ref:g,variant:"outline",role:"combobox","aria-expanded":b,className:a.cn("flex h-9 w-full justify-between",E),children:[t.jsxs("div",{className:"flex items-center gap-2",children:[l&&t.jsx("div",{className:"mr-2",children:l}),t.jsx("span",{className:"max-w-[150px] overflow-hidden truncate text-ellipsis whitespace-nowrap",children:v()})]}),t.jsx(a.ChevronDown,{className:"size-4 opacity-50"})]})}),t.jsx(a.PopoverContent,{className:"w-full p-0",style:{minWidth:B},children:t.jsxs(e.Command,{children:[t.jsxs("div",{className:"flex h-9 items-center justify-between border-b pr-1",children:[t.jsx(e.CommandInput,{className:"h-9",placeholder:"Search..."}),t.jsx(e.IconButton,{className:"h-7",onClick:D,children:t.jsx(e.RefreshCw,{className:a.cn("size-3.5 opacity-50",s&&"animate-spin")})})]}),t.jsxs(e.CommandList,{children:[t.jsxs(e.CommandEmpty,{children:["No ",i==null?void 0:i.toLowerCase()," found."]}),t.jsx(e.CommandGroup,{children:x==null?void 0:x.map(f=>t.jsx(e.CommandItem,{className:"overflow-x-auto",value:f.name,onSelect:m=>F(m,f.id),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Check,{className:a.cn("size-4",n===f.id?"opacity-100":"opacity-0")}),t.jsx("div",{title:f.name,children:f.name})]})},f.id))})]})]})})]})}function M(i,o){C.useEffect(()=>(i&&o&&(window.__SEMAPHOR_PRINT_STATE__={...o}),()=>{i&&window.__SEMAPHOR_PRINT_STATE__&&delete window.__SEMAPHOR_PRINT_STATE__}),[i,o])}exports.CardSummary=e.CardSummary;exports.Dashboard=e.Dashboard;exports.DashboardCreateDialogBase=e.DashboardCreateDialogBase;exports.DashboardExportDialog=e.DashboardExportDialog;exports.DashboardWC=e.DashboardWC;exports.ExportError=e.ExportError;exports.MatrixTableVisual=e.MatrixTableVisual;exports.ResourceType=e.ResourceType;exports.SemaphorContextProvider=e.SemaphorContextProvider;exports.SemaphorDataProvider=e.SemaphorQueryClient;exports.SemaphorQueryClient=e.SemaphorQueryClient;exports.ShareDialog=e.ShareDialog;exports.SummaryCard=e.SummaryCard;exports.Surfboard=e.DashboardPlus;exports.cancelExport=e.cancelExport;exports.cloneDeep=e.cloneDeep;exports.createExport=e.createExport;exports.downloadDocumentPdf=e.downloadDocumentPdf;exports.downloadPdf=e.downloadPdf;exports.formatFileSize=e.formatFileSize;exports.getDownloadUrl=e.getDownloadUrl;exports.getExportStatus=e.getExportStatus;exports.getExports=e.getExports;exports.isExportComplete=e.isExportComplete;exports.isExportInProgress=e.isExportInProgress;exports.useActiveExports=e.useActiveExports;exports.useAddNewFrame=e.useAddNewFrame;exports.useCard=e.useCard;exports.useCardSummary=e.useCardSummary;exports.useDashboardById=e.useDashboardById;exports.useDashboardQuery=e.useDashboardQuery;exports.useDashboardSummary=e.useDashboardSummary;exports.useDataColumns=e.useDataColumns;exports.useDateFilterHook=e.useDateFilterHook;exports.useEditorAside=e.useEditorAside;exports.useExportActions=e.useExportActions;exports.useExportStore=e.useExportStore;exports.useInProgressExportsCount=e.useInProgressExportsCount;exports.useManagementStore=e.useManagementStore;exports.useResourceManagement=e.useResourceManagement;exports.useTextFilterHook=e.useTextFilterHook;exports.CALCULATED_FIELD_ENTITY_MARKER=d.CALCULATED_FIELD_ENTITY_MARKER;exports.CONTROL_CARD_DEFAULT_VALUE=d.CONTROL_CARD_DEFAULT_VALUE;exports.DATE_FORMAT_VALUES=d.DATE_FORMAT_VALUES;exports.EMPTY_SELECTION=d.EMPTY_SELECTION;exports.PivotMarkerEnum=d.PivotMarkerEnum;exports.getFieldRuntimeColumnName=d.getFieldRuntimeColumnName;exports.hasCalculatedFieldMarker=d.hasCalculatedFieldMarker;exports.hasCalculatedFormulaInputs=d.hasCalculatedFormulaInputs;exports.isCalculatedDimension=d.isCalculatedDimension;exports.isCalculatedField=d.isCalculatedField;exports.isCalculatedMetric=d.isCalculatedMetric;exports.CalendarPreferencesDialog=N.CalendarPreferencesDialog;exports.createEmptyKpiConfig=a.createEmptyKpiConfig;exports.createSqlGenConfig=a.createSqlGenConfig;exports.emitDashboardLoad=a.emitDashboardLoad;exports.emitDashboardUnload=a.emitDashboardUnload;exports.fmt=a.fmt;exports.getColumnDataType=a.getColumnDataType;exports.getFilterValueType=a.getFilterValueType;exports.getFormattedTableNameForQuery=a.getFormattedTableNameForQuery;exports.getQualifiedTableName=a.getQualifiedTableName;exports.getSql=a.getSql;exports.invalidateToken=a.invalidateToken;exports.isBooleanDataType=a.isBooleanDataType;exports.isColumnInSqlGen=a.isColumnInSqlGen;exports.isDateDataType=a.isDateDataType;exports.isNumberDataType=a.isNumberDataType;exports.isTextDataType=a.isTextDataType;exports.resolveDataType=a.resolveDataType;exports.resolveDatamodelName=a.resolveDatamodelName;exports.useCurrentActiveCard=a.useCurrentActiveCard;exports.useCurrentCardConfig=a.useCurrentCardConfig;exports.useCurrentSheetActiveCards=a.useCurrentSheetActiveCards;exports.useDashboardActions=a.useDashboardActions;exports.useDashboardStore=a.useDashboardStore;exports.useEditorActions=a.useEditorActions;exports.useEditorStore=a.useEditorStore;exports.DEFAULT_CALENDAR_CONTEXT=y.DEFAULT_CALENDAR_CONTEXT;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=y.DEFAULT_SEMANTIC_DOMAIN_ACCESS;exports.AdvancedModeToggle=r.AdvancedModeToggle;exports.BriefingAuthor=r.BriefingAuthor;exports.BriefingsApiError=r.BriefingsApiError;exports.DashboardBriefingLauncher=r.DashboardBriefingLauncher;exports.DashboardControlsSettings=r.DashboardControlsSettings;exports.DashboardFilterControlsButton=r.DashboardFilterControlsButton;exports.DashboardFilterControlsLauncher=r.DashboardFilterControlsLauncher;exports.DocumentControlsSettings=r.DocumentControlsSettings;exports.ExportNotificationItem=r.ExportNotificationItem;exports.ExportNotificationList=r.ExportNotificationList;exports.NotificationBell=r.NotificationBell;exports.UnsavedChangesAlert=r.UnsavedChangesAlert;exports.VisualEditingControls=r.VisualEditingControls;exports.VisualsLibraryDialog=r.VisualsLibraryDialog;exports.WatchDashboardButton=r.WatchDashboardButton;exports.applyBriefingFormPatch=r.applyBriefingFormPatch;exports.briefingFormDraftToCreateRequest=r.briefingFormDraftToCreateRequest;exports.briefingFormDraftToUpdateRequest=r.briefingFormDraftToUpdateRequest;exports.briefingToFormDraft=r.briefingToFormDraft;exports.cancelBriefingPreviewRun=r.cancelBriefingPreviewRun;exports.cancelBriefingRun=r.cancelBriefingRun;exports.createBriefing=r.createBriefing;exports.createBriefingFormDraft=r.createBriefingFormDraft;exports.deleteBriefing=r.deleteBriefing;exports.deleteBriefingRun=r.deleteBriefingRun;exports.getBriefing=r.getBriefing;exports.getBriefingArtifact=r.getBriefingArtifact;exports.getBriefingEvidence=r.getBriefingEvidence;exports.getBriefingPreviewRun=r.getBriefingPreviewRun;exports.getBriefingRun=r.getBriefingRun;exports.listBriefingRuns=r.listBriefingRuns;exports.listBriefingTenantSummaries=r.listBriefingTenantSummaries;exports.listBriefings=r.listBriefings;exports.pauseBriefing=r.pauseBriefing;exports.polishBriefingText=r.polishBriefingText;exports.previewBriefingPlan=r.previewBriefingPlan;exports.resumeBriefing=r.resumeBriefing;exports.runBriefingNow=r.runBriefingNow;exports.runBriefingPreview=r.runBriefingPreview;exports.updateBriefing=r.updateBriefing;exports.useExportPolling=r.useExportPolling;exports.useExportRecovery=r.useExportRecovery;exports.validateBriefingFormDraft=r.validateBriefingFormDraft;exports.useDebouncedDirtyCheck=P.useDebouncedDirtyCheck;exports.normalizeDashboardForDirtyCheck=S.normalizeDashboardForDirtyCheck;exports.serializeDashboardForDirtyCheck=S.serializeDashboardForDirtyCheck;exports.Combobox=L;exports.Visual=R;exports.useExposePrintState=M;exports.usePristineSnapshotInitializer=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-CrKxP9uF.js"),d=require("./chunks/common-types-C73-Ud1-.js"),N=require("./chunks/calendar-preferences-dialog-rDDobeLo.js"),t=require("react/jsx-runtime"),a=require("./chunks/switch-k7kj6NRg.js"),C=require("react"),y=require("./types/index.cjs"),r=require("./chunks/dashboard-briefing-launcher-Dcbh-mjY.js"),P=require("./chunks/use-debounced-dirty-check-XHSwAefL.js");require("./chunks/analyze-result-contract-CtXfp3nv.js");require("react-dom");require("./chunks/index-DRlMUglg.js");const S=require("./chunks/normalize-dashboard-for-dirty-check-BXRUMVb2.js");require("./chunks/index-BxM99sFL.js");function _(i){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const n in i)if(n!=="default"){const u=Object.getOwnPropertyDescriptor(i,n);Object.defineProperty(o,n,u.get?u:{enumerable:!0,get:()=>i[n]})}}return o.default=i,Object.freeze(o)}const h=_(C);function R(i){const{displayPreferences:o,cardId:n,...u}=i,s={...u,id:i.dashboardId};return t.jsx(e.ErrorBoundary,{FallbackComponent:e.Fallback,children:t.jsxs(e.SemaphorContextProvider,{dashboardProps:s,children:[t.jsx(e.SemaphorReadyIndicator,{componentType:"visual",componentId:i.cardId}),t.jsx(e.UXProvider,{appearance:i.appearance,children:t.jsx(e.DisplayPreferencesProvider,{displayPreferences:o,children:t.jsx(e.Container,{type:"visual",cardId:n,...s,children:t.jsx(w,{cardId:n})})})})]})})}function w({cardId:i}){const o=a.useDashboardStore(s=>{var c;return(c=s.dashboard)==null?void 0:c.sheets}),{card:n,frame:u}=C.useMemo(()=>{const s=o==null?void 0:o.flatMap(l=>l.frames),c=s==null?void 0:s.flatMap(l=>l==null?void 0:l.cards),D=c==null?void 0:c.find(l=>(l==null?void 0:l.id)===i),E=s==null?void 0:s.find(l=>{var p;return(p=l==null?void 0:l.cards)==null?void 0:p.find(g=>(g==null?void 0:g.id)===i)});return{card:D,frame:E}},[o,i]);return!n||!u?t.jsx(e.FallbackVisual,{error:new Error("Card not found"),resetErrorBoundary:()=>{},customerFacingMessage:`Card not found with ID: ${i}`}):t.jsx("main",{className:"flex h-full grow flex-col",children:t.jsx(e.ErrorBoundary,{FallbackComponent:({error:s,resetErrorBoundary:c})=>t.jsx(e.FallbackVisual,{error:s,resetErrorBoundary:c,customerFacingMessage:"Error creating visual. Please try again."}),children:t.jsx(e.DashboardCard,{card:n,frame:u})})})}function j(i,o,n,u){C.useEffect(()=>{i&&!n&&o&&u(e.cloneDeep(o))},[i,n,o,u])}function L({name:i,items:o,value:n,onChange:u,isLoading:s,isError:c,refetch:D,className:E,icon:l,showNone:p=!1}){const g=h.useRef(null),[b,T]=h.useState(!1),[B,A]=h.useState("100%"),x=p?[...o||[],{id:"none",name:"None"}]:o;h.useLayoutEffect(()=>{g.current&&A(g.current.offsetWidth)},[]);function v(){var f;return s?"Loading...":c?"Error":n?(f=o==null?void 0:o.find(m=>m.id===n))==null?void 0:f.name:`Select ${i}`}function F(f,m){u(m),T(!1)}return t.jsxs(a.Popover,{open:b,onOpenChange:T,children:[t.jsx(a.PopoverTrigger,{asChild:!0,children:t.jsxs(a.Button,{ref:g,variant:"outline",role:"combobox","aria-expanded":b,className:a.cn("flex h-9 w-full justify-between",E),children:[t.jsxs("div",{className:"flex items-center gap-2",children:[l&&t.jsx("div",{className:"mr-2",children:l}),t.jsx("span",{className:"max-w-[150px] overflow-hidden truncate text-ellipsis whitespace-nowrap",children:v()})]}),t.jsx(a.ChevronDown,{className:"size-4 opacity-50"})]})}),t.jsx(a.PopoverContent,{className:"w-full p-0",style:{minWidth:B},children:t.jsxs(e.Command,{children:[t.jsxs("div",{className:"flex h-9 items-center justify-between border-b pr-1",children:[t.jsx(e.CommandInput,{className:"h-9",placeholder:"Search..."}),t.jsx(e.IconButton,{className:"h-7",onClick:D,children:t.jsx(e.RefreshCw,{className:a.cn("size-3.5 opacity-50",s&&"animate-spin")})})]}),t.jsxs(e.CommandList,{children:[t.jsxs(e.CommandEmpty,{children:["No ",i==null?void 0:i.toLowerCase()," found."]}),t.jsx(e.CommandGroup,{children:x==null?void 0:x.map(f=>t.jsx(e.CommandItem,{className:"overflow-x-auto",value:f.name,onSelect:m=>F(m,f.id),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Check,{className:a.cn("size-4",n===f.id?"opacity-100":"opacity-0")}),t.jsx("div",{title:f.name,children:f.name})]})},f.id))})]})]})})]})}function M(i,o){C.useEffect(()=>(i&&o&&(window.__SEMAPHOR_PRINT_STATE__={...o}),()=>{i&&window.__SEMAPHOR_PRINT_STATE__&&delete window.__SEMAPHOR_PRINT_STATE__}),[i,o])}exports.CardSummary=e.CardSummary;exports.Dashboard=e.Dashboard;exports.DashboardCreateDialogBase=e.DashboardCreateDialogBase;exports.DashboardExportDialog=e.DashboardExportDialog;exports.DashboardWC=e.DashboardWC;exports.ExportError=e.ExportError;exports.MatrixTableVisual=e.MatrixTableVisual;exports.ResourceType=e.ResourceType;exports.SemaphorContextProvider=e.SemaphorContextProvider;exports.SemaphorDataProvider=e.SemaphorQueryClient;exports.SemaphorQueryClient=e.SemaphorQueryClient;exports.ShareDialog=e.ShareDialog;exports.SummaryCard=e.SummaryCard;exports.Surfboard=e.DashboardPlus;exports.cancelExport=e.cancelExport;exports.cloneDeep=e.cloneDeep;exports.createExport=e.createExport;exports.downloadDocumentPdf=e.downloadDocumentPdf;exports.downloadPdf=e.downloadPdf;exports.formatFileSize=e.formatFileSize;exports.getDownloadUrl=e.getDownloadUrl;exports.getExportStatus=e.getExportStatus;exports.getExports=e.getExports;exports.isExportComplete=e.isExportComplete;exports.isExportInProgress=e.isExportInProgress;exports.useActiveExports=e.useActiveExports;exports.useAddNewFrame=e.useAddNewFrame;exports.useCard=e.useCard;exports.useCardSummary=e.useCardSummary;exports.useDashboardById=e.useDashboardById;exports.useDashboardQuery=e.useDashboardQuery;exports.useDashboardSummary=e.useDashboardSummary;exports.useDataColumns=e.useDataColumns;exports.useDateFilterHook=e.useDateFilterHook;exports.useEditorAside=e.useEditorAside;exports.useExportActions=e.useExportActions;exports.useExportStore=e.useExportStore;exports.useInProgressExportsCount=e.useInProgressExportsCount;exports.useManagementStore=e.useManagementStore;exports.useResourceManagement=e.useResourceManagement;exports.useTextFilterHook=e.useTextFilterHook;exports.CALCULATED_FIELD_ENTITY_MARKER=d.CALCULATED_FIELD_ENTITY_MARKER;exports.CONTROL_CARD_DEFAULT_VALUE=d.CONTROL_CARD_DEFAULT_VALUE;exports.DATE_FORMAT_VALUES=d.DATE_FORMAT_VALUES;exports.EMPTY_SELECTION=d.EMPTY_SELECTION;exports.PivotMarkerEnum=d.PivotMarkerEnum;exports.getFieldRuntimeColumnName=d.getFieldRuntimeColumnName;exports.hasCalculatedFieldMarker=d.hasCalculatedFieldMarker;exports.hasCalculatedFormulaInputs=d.hasCalculatedFormulaInputs;exports.isCalculatedDimension=d.isCalculatedDimension;exports.isCalculatedField=d.isCalculatedField;exports.isCalculatedMetric=d.isCalculatedMetric;exports.CalendarPreferencesDialog=N.CalendarPreferencesDialog;exports.createEmptyKpiConfig=a.createEmptyKpiConfig;exports.createSqlGenConfig=a.createSqlGenConfig;exports.emitDashboardLoad=a.emitDashboardLoad;exports.emitDashboardUnload=a.emitDashboardUnload;exports.fmt=a.fmt;exports.getColumnDataType=a.getColumnDataType;exports.getFilterValueType=a.getFilterValueType;exports.getFormattedTableNameForQuery=a.getFormattedTableNameForQuery;exports.getQualifiedTableName=a.getQualifiedTableName;exports.getSql=a.getSql;exports.invalidateToken=a.invalidateToken;exports.isBooleanDataType=a.isBooleanDataType;exports.isColumnInSqlGen=a.isColumnInSqlGen;exports.isDateDataType=a.isDateDataType;exports.isNumberDataType=a.isNumberDataType;exports.isTextDataType=a.isTextDataType;exports.resolveDataType=a.resolveDataType;exports.resolveDatamodelName=a.resolveDatamodelName;exports.useCurrentActiveCard=a.useCurrentActiveCard;exports.useCurrentCardConfig=a.useCurrentCardConfig;exports.useCurrentSheetActiveCards=a.useCurrentSheetActiveCards;exports.useDashboardActions=a.useDashboardActions;exports.useDashboardStore=a.useDashboardStore;exports.useEditorActions=a.useEditorActions;exports.useEditorStore=a.useEditorStore;exports.DEFAULT_CALENDAR_CONTEXT=y.DEFAULT_CALENDAR_CONTEXT;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=y.DEFAULT_SEMANTIC_DOMAIN_ACCESS;exports.AdvancedModeToggle=r.AdvancedModeToggle;exports.BriefingAuthor=r.BriefingAuthor;exports.BriefingsApiError=r.BriefingsApiError;exports.DashboardBriefingLauncher=r.DashboardBriefingLauncher;exports.DashboardControlsSettings=r.DashboardControlsSettings;exports.DashboardFilterControlsButton=r.DashboardFilterControlsButton;exports.DashboardFilterControlsLauncher=r.DashboardFilterControlsLauncher;exports.DocumentControlsSettings=r.DocumentControlsSettings;exports.ExportNotificationItem=r.ExportNotificationItem;exports.ExportNotificationList=r.ExportNotificationList;exports.NotificationBell=r.NotificationBell;exports.UnsavedChangesAlert=r.UnsavedChangesAlert;exports.VisualEditingControls=r.VisualEditingControls;exports.VisualsLibraryDialog=r.VisualsLibraryDialog;exports.WatchDashboardButton=r.WatchDashboardButton;exports.applyBriefingFormPatch=r.applyBriefingFormPatch;exports.briefingFormDraftToCreateRequest=r.briefingFormDraftToCreateRequest;exports.briefingFormDraftToUpdateRequest=r.briefingFormDraftToUpdateRequest;exports.briefingToFormDraft=r.briefingToFormDraft;exports.cancelBriefingPreviewRun=r.cancelBriefingPreviewRun;exports.cancelBriefingRun=r.cancelBriefingRun;exports.createBriefing=r.createBriefing;exports.createBriefingFormDraft=r.createBriefingFormDraft;exports.deleteBriefing=r.deleteBriefing;exports.deleteBriefingRun=r.deleteBriefingRun;exports.getBriefing=r.getBriefing;exports.getBriefingArtifact=r.getBriefingArtifact;exports.getBriefingEvidence=r.getBriefingEvidence;exports.getBriefingPreviewRun=r.getBriefingPreviewRun;exports.getBriefingRun=r.getBriefingRun;exports.listBriefingRuns=r.listBriefingRuns;exports.listBriefingTenantSummaries=r.listBriefingTenantSummaries;exports.listBriefings=r.listBriefings;exports.pauseBriefing=r.pauseBriefing;exports.polishBriefingText=r.polishBriefingText;exports.previewBriefingPlan=r.previewBriefingPlan;exports.resumeBriefing=r.resumeBriefing;exports.runBriefingNow=r.runBriefingNow;exports.runBriefingPreview=r.runBriefingPreview;exports.updateBriefing=r.updateBriefing;exports.useExportPolling=r.useExportPolling;exports.useExportRecovery=r.useExportRecovery;exports.validateBriefingFormDraft=r.validateBriefingFormDraft;exports.useDebouncedDirtyCheck=P.useDebouncedDirtyCheck;exports.normalizeDashboardForDirtyCheck=S.normalizeDashboardForDirtyCheck;exports.serializeDashboardForDirtyCheck=S.serializeDashboardForDirtyCheck;exports.Combobox=L;exports.Visual=R;exports.useExposePrintState=M;exports.usePristineSnapshotInitializer=j;
package/dist/index.js CHANGED
@@ -1,16 +1,16 @@
1
- import { E as T, F as N, S, q as P, U as w, r as _, s as F, t as x, v as R, w as M, h as I, i as L, I as k, x as U, j as O, k as V, l as z, m as H } from "./chunks/index-DlprYjr6.js";
2
- import { X as fa, D as ma, V as pa, T as ha, O as ga, aa as Ca, M as Da, A as Ea, H as xa, H as Ta, J as ba, W as ya, a as va, a9 as Ba, a5 as Aa, Q as Na, P as Sa, ad as Pa, a8 as wa, a7 as _a, a6 as Fa, ac as Ra, ab as Ma, a2 as Ia, $ as La, N as ka, Z as Ua, L as Oa, z as Va, Y as za, _ as Ha, B as qa, a4 as Wa, a1 as ja, a0 as Ga, a3 as Qa, y as Ka, K as Xa, G as Ya } from "./chunks/index-DlprYjr6.js";
1
+ import { E as T, F as N, S, q as P, U as w, r as _, s as F, t as x, v as R, w as M, h as I, i as L, I as k, x as U, j as O, k as V, l as z, m as H } from "./chunks/index-BAsWLkZ8.js";
2
+ import { X as fa, D as ma, V as pa, T as ha, O as ga, aa as Ca, M as Da, A as Ea, H as xa, H as Ta, J as ba, W as ya, a as va, a9 as Ba, a5 as Aa, Q as Na, P as Sa, ad as Pa, a8 as wa, a7 as _a, a6 as Fa, ac as Ra, ab as Ma, a2 as Ia, $ as La, N as ka, Z as Ua, L as Oa, z as Va, Y as za, _ as Ha, B as qa, a4 as Wa, a1 as ja, a0 as Ga, a3 as Qa, y as Ka, K as Xa, G as Ya } from "./chunks/index-BAsWLkZ8.js";
3
3
  import { a as Ja, C as Za, D as ae, E as ee, P as se, g as re, d as oe, h as te, b as ie, c as ne, i as le } from "./chunks/common-types-4bjoIgvm.js";
4
- import { C as ue } from "./chunks/calendar-preferences-dialog-Dsgs8WDv.js";
4
+ import { C as ue } from "./chunks/calendar-preferences-dialog-CV4xF2Tp.js";
5
5
  import { jsx as a, jsxs as d } from "react/jsx-runtime";
6
- import { u as q, P as W, b as j, B as G, a as C, g as Q, d as K, e as X } from "./chunks/switch-DMPsMpHW.js";
7
- import { F as fe, q as me, h as pe, i as he, k as ge, s as Ce, r as De, w as Ee, x as xe, p as Te, j as be, o as ye, t as ve, n as Be, m as Ae, l as Ne, y as Se, v as Pe, z as we, D as _e, A as Fe, E as Re, H as Me, G as Ie } from "./chunks/switch-DMPsMpHW.js";
6
+ import { u as q, P as W, b as j, B as G, a as C, g as Q, d as K, e as X } from "./chunks/switch-DArtNJZh.js";
7
+ import { F as fe, q as me, h as pe, i as he, k as ge, s as Ce, r as De, w as Ee, x as xe, p as Te, j as be, o as ye, t as ve, n as Be, m as Ae, l as Ne, y as Se, v as Pe, z as we, D as _e, A as Fe, E as Re, H as Me, G as Ie } from "./chunks/switch-DArtNJZh.js";
8
8
  import * as m from "react";
9
9
  import { useMemo as Y, useEffect as b } from "react";
10
10
  import { DEFAULT_CALENDAR_CONTEXT as ke, DEFAULT_SEMANTIC_DOMAIN_ACCESS as Ue } from "./types/index.js";
11
- import { A as Ve, L as ze, B as He, M as qe, D as We, e as je, f as Ge, d as Qe, b as Ke, E as Xe, N as Ye, U as $e, a as Je, V as Ze, W as as, G as es, I as ss, J as rs, H as os, s as ts, w as is, i as ns, F as ls, k as ds, x as us, h as cs, y as fs, z as ms, q as ps, v as hs, t as gs, g as Cs, l as Ds, p as Es, C as xs, n as Ts, r as bs, m as ys, o as vs, j as Bs, u as As, c as Ns, K as Ss } from "./chunks/dashboard-briefing-launcher-Coks66cV.js";
11
+ import { A as Ve, L as ze, B as He, M as qe, D as We, e as je, f as Ge, d as Qe, b as Ke, E as Xe, N as Ye, U as $e, a as Je, V as Ze, W as as, G as es, I as ss, J as rs, H as os, s as ts, w as is, i as ns, F as ls, k as ds, x as us, h as cs, y as fs, z as ms, q as ps, v as hs, t as gs, g as Cs, l as Ds, p as Es, C as xs, n as Ts, r as bs, m as ys, o as vs, j as Bs, u as As, c as Ns, K as Ss } from "./chunks/dashboard-briefing-launcher-BT00MvGB.js";
12
12
  import { u as ws } from "./chunks/use-debounced-dirty-check-BwAbnX_5.js";
13
- import "./chunks/catalog-field-grounding-BK4BX8sZ.js";
13
+ import "./chunks/analyze-result-contract-DuhlklhI.js";
14
14
  import "react-dom";
15
15
  import "./chunks/index-CJdxSyQq.js";
16
16
  import { n as Fs, s as Rs } from "./chunks/normalize-dashboard-for-dirty-check-5KpZN8xr.js";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../chunks/index-CkoRCh3g.js"),e=require("../chunks/common-types-C73-Ud1-.js"),a=require("../chunks/calendar-preferences-dialog-iZs8XqyH.js");exports.Surfboard=r.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;exports.CalendarPreferencesDialog=a.CalendarPreferencesDialog;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../chunks/index-CrKxP9uF.js"),e=require("../chunks/common-types-C73-Ud1-.js"),a=require("../chunks/calendar-preferences-dialog-rDDobeLo.js");exports.Surfboard=r.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;exports.CalendarPreferencesDialog=a.CalendarPreferencesDialog;
@@ -1,6 +1,6 @@
1
- import { a as e } from "../chunks/index-DlprYjr6.js";
1
+ import { a as e } from "../chunks/index-BAsWLkZ8.js";
2
2
  import { C, E } from "../chunks/common-types-4bjoIgvm.js";
3
- import { C as s } from "../chunks/calendar-preferences-dialog-Dsgs8WDv.js";
3
+ import { C as s } from "../chunks/calendar-preferences-dialog-CV4xF2Tp.js";
4
4
  export {
5
5
  C as CONTROL_CARD_DEFAULT_VALUE,
6
6
  s as CalendarPreferencesDialog,
@@ -13,7 +13,7 @@ export declare type AnalyticsCatalogField = {
13
13
  };
14
14
 
15
15
  export declare type AnalyticsCatalogFieldSummary = {
16
- validMetricCandidates: string[];
16
+ validMeasureCandidates: string[];
17
17
  validDateCandidates: string[];
18
18
  validDimensionCandidates: string[];
19
19
  };
@@ -407,7 +407,7 @@ export declare function normalizeSemaphorAnalyticsFilterOperator(value: Semaphor
407
407
 
408
408
  export declare function normalizeSemaphorDialect(input: string | undefined): SemaphorDialect;
409
409
 
410
- export declare function normalizeSemaphorInputOperator(value: SemaphorInputOperatorInput | string | null | undefined): SemaphorInputOperator | undefined;
410
+ export declare function normalizeSemaphorInputOperator(value: SemaphorInputOperator | string | null | undefined): SemaphorInputOperator | undefined;
411
411
 
412
412
  export declare function parseSemaphorAnalyzeResult(value: unknown): SemaphorAnalyzeResult;
413
413
 
@@ -430,11 +430,11 @@ export declare const SEMAPHOR_ANALYTICS_INTENT_FIXTURES: {
430
430
  readonly connectionId: "conn_sales";
431
431
  readonly label: "Orders";
432
432
  };
433
- metrics: {
433
+ measures: {
434
434
  name: string;
435
435
  role: "measure";
436
436
  }[];
437
- primaryMetric: {
437
+ primaryMeasure: {
438
438
  name: string;
439
439
  role: "measure";
440
440
  };
@@ -509,6 +509,7 @@ export declare const SEMAPHOR_ANALYTICS_INTENT_FIXTURES: {
509
509
  kind: "inputOptions";
510
510
  id: string;
511
511
  label: string;
512
+ inputId: string;
512
513
  source: {
513
514
  readonly kind: "semantic";
514
515
  readonly domainId: "domain_sales";
@@ -516,7 +517,12 @@ export declare const SEMAPHOR_ANALYTICS_INTENT_FIXTURES: {
516
517
  readonly connectionId: "conn_sales";
517
518
  readonly label: "Orders";
518
519
  };
519
- field: {
520
+ labelField: {
521
+ name: string;
522
+ role: "dimension";
523
+ dataType: "string";
524
+ };
525
+ valueField: {
520
526
  name: string;
521
527
  role: "dimension";
522
528
  dataType: "string";
@@ -535,11 +541,11 @@ export declare const SEMAPHOR_ANALYTICS_INTENT_FIXTURES: {
535
541
  readonly connectionId: "conn_sales";
536
542
  readonly label: "Orders";
537
543
  };
538
- metrics: {
544
+ measures: {
539
545
  name: string;
540
546
  role: "measure";
541
547
  }[];
542
- primaryMetric: {
548
+ primaryMeasure: {
543
549
  name: string;
544
550
  role: "measure";
545
551
  };
@@ -566,11 +572,11 @@ export declare const SEMAPHOR_ANALYTICS_INTENT_FIXTURES: {
566
572
  readonly connectionId: "conn_sales";
567
573
  readonly label: "Orders";
568
574
  };
569
- metrics: {
575
+ measures: {
570
576
  name: string;
571
577
  role: "measure";
572
578
  }[];
573
- primaryMetric: {
579
+ primaryMeasure: {
574
580
  name: string;
575
581
  role: "measure";
576
582
  };
@@ -736,7 +742,7 @@ export declare type SemaphorAnalyticsExecutionResult = {
736
742
 
737
743
  export declare type SemaphorAnalyticsExecutionStatus = 'answered' | 'partial' | 'failed';
738
744
 
739
- export declare type SemaphorAnalyticsFieldRole = 'metric' | 'dateField' | 'dimension' | 'input' | 'source' | 'sql';
745
+ export declare type SemaphorAnalyticsFieldRole = 'measure' | 'date' | 'dimension' | 'input' | 'source' | 'sql';
740
746
 
741
747
  export declare type SemaphorAnalyticsFilter = SemaphorAnalyticsValueFilter | SemaphorAnalyticsNullFilter;
742
748
 
@@ -771,9 +777,9 @@ export declare type SemaphorAnalyticsObligation = {
771
777
  type: SemaphorAnalyticsObligationType;
772
778
  subject: string;
773
779
  prompt: string;
774
- metricCandidates?: string[];
780
+ measureCandidates?: string[];
775
781
  entityCandidates?: string[];
776
- dateFieldCandidates?: string[];
782
+ dateCandidates?: string[];
777
783
  dimensionCandidates?: string[];
778
784
  displayFieldCandidates?: string[];
779
785
  requiredFieldCandidates?: string[];
@@ -787,7 +793,7 @@ export declare type SemaphorAnalyticsObligationType = 'record_list' | 'count' |
787
793
 
788
794
  export declare type SemaphorAnalyticsPopulation = {
789
795
  scope: 'filtered_query';
790
- metrics: Record<string, number | string | null>;
796
+ measures: Record<string, number | string | null>;
791
797
  };
792
798
 
793
799
  export declare type SemaphorAnalyticsRecoveryPlan = {
@@ -808,7 +814,7 @@ export declare type SemaphorAnalyticsRepairHint = {
808
814
  message?: string;
809
815
  invalidField?: string;
810
816
  fieldRole?: SemaphorAnalyticsFieldRole;
811
- validMetricCandidates?: string[];
817
+ validMeasureCandidates?: string[];
812
818
  validDateCandidates?: string[];
813
819
  validDimensionCandidates?: string[];
814
820
  recommendedNextStep: string;
@@ -826,7 +832,7 @@ export declare type SemaphorAnalyticsResultBase = {
826
832
  pagination?: SemaphorPaginationMetadata;
827
833
  };
828
834
 
829
- export declare type SemaphorAnalyticsValidationCode = 'missing_source' | 'invalid_source_kind' | 'missing_semantic_domain' | 'missing_dataset_name' | 'missing_connection_id' | 'missing_table_name' | 'missing_sql' | 'missing_metric' | 'missing_record_fields' | 'missing_input_options_field' | 'invalid_metric' | 'invalid_metric_list' | 'invalid_date_field' | 'invalid_dimension' | 'invalid_metric_dimensions' | 'conflicting_sql' | 'sql_policy_violation' | 'unsupported_intent_for_adapter' | 'invalid_analytics_kind' | 'invalid_analytics_intent';
835
+ export declare type SemaphorAnalyticsValidationCode = 'missing_source' | 'invalid_source_kind' | 'missing_semantic_domain' | 'missing_dataset_name' | 'missing_connection_id' | 'missing_table_name' | 'missing_sql' | 'missing_measure' | 'missing_record_fields' | 'missing_input_options_input_id' | 'missing_input_options_label_field' | 'missing_input_options_value_field' | 'invalid_input_options_dependencies' | 'invalid_input_options_population' | 'invalid_measure' | 'invalid_measure_list' | 'invalid_date_field' | 'invalid_dimension' | 'invalid_measure_dimensions' | 'conflicting_sql' | 'sql_policy_violation' | 'unsupported_intent_for_adapter' | 'invalid_analytics_kind' | 'invalid_analytics_intent';
830
836
 
831
837
  export declare type SemaphorAnalyticsValidationIssue = SemaphorProtocolIssue & {
832
838
  code: SemaphorAnalyticsValidationCode | string;
@@ -981,15 +987,9 @@ export declare type SemaphorDerivedFieldInput = {
981
987
  kind: 'field';
982
988
  field: SemaphorFieldRef;
983
989
  aggregate?: SemaphorAggregateFunction;
984
- } | {
985
- kind: 'metric';
986
- metric: SemaphorFieldRef;
987
- } | {
988
- kind: 'dimension';
989
- dimension: SemaphorFieldRef;
990
990
  };
991
991
 
992
- export declare type SemaphorDerivedFieldResultRole = 'measure' | 'group' | 'date' | 'id' | 'filter';
992
+ export declare type SemaphorDerivedFieldResultRole = 'measure' | 'dimension' | 'date' | 'id' | 'unknown';
993
993
 
994
994
  export declare type SemaphorDialect = 'postgres' | 'mysql' | 'mssql' | 'snowflake' | 'clickhouse' | 'bigquery' | 'redshift' | 'duckdb' | 'sqlite' | 'unknown';
995
995
 
@@ -1024,26 +1024,30 @@ export declare function semaphorFieldRefsMatch(left: SemaphorFieldRef, right: Se
1024
1024
  export declare type SemaphorInputBinding = {
1025
1025
  inputId: string;
1026
1026
  kind?: 'filter' | 'control';
1027
- controlRole?: 'grain' | 'metric' | 'dimension' | 'aggregation' | 'sqlParam';
1027
+ controlRole?: 'grain' | 'measure' | 'dimension' | 'aggregation' | 'sqlParam';
1028
1028
  operator?: SemaphorInputOperator;
1029
1029
  field?: SemaphorFieldRef;
1030
+ relationshipHint?: SemaphorRelationshipHint;
1030
1031
  };
1031
1032
 
1032
1033
  export declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
1033
1034
 
1034
- export declare type SemaphorInputOperatorAlias = 'eq' | 'equals' | 'not_equals' | 'neq' | 'not equal' | 'not equals' | 'not in' | 'like' | 'not_contains' | 'not contains' | 'not_like' | 'not like' | 'not_between' | 'not between';
1035
-
1036
- export declare type SemaphorInputOperatorInput = SemaphorInputOperator | SemaphorInputOperatorAlias;
1037
-
1038
1035
  export declare type SemaphorInputOptionsIntent = {
1039
1036
  kind: 'inputOptions';
1040
1037
  version?: SemaphorProtocolVersion;
1041
1038
  id?: string;
1042
1039
  label?: string;
1040
+ inputId: string;
1043
1041
  source: SemaphorSourceRef;
1044
- field: SemaphorFieldRef;
1042
+ labelField: SemaphorFieldRef;
1043
+ valueField: SemaphorFieldRef;
1044
+ searchField?: SemaphorFieldRef;
1045
+ disambiguationFields?: SemaphorFieldRef[];
1046
+ population?: SemaphorOptionPopulation;
1047
+ dependencies?: SemaphorOptionDependencies;
1045
1048
  search?: string;
1046
1049
  limit?: number;
1050
+ inputs?: SemaphorInputBinding[];
1047
1051
  derivedFields?: SemaphorDerivedFieldDefinition[];
1048
1052
  };
1049
1053
 
@@ -1053,6 +1057,7 @@ export declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
1053
1057
  label: string;
1054
1058
  value: unknown;
1055
1059
  count?: number;
1060
+ disambiguation?: string[];
1056
1061
  }>;
1057
1062
  };
1058
1063
 
@@ -1073,7 +1078,7 @@ export declare type SemaphorInputSpec = {
1073
1078
  kind: 'filter' | 'control';
1074
1079
  label: string;
1075
1080
  field: SemaphorFieldRef;
1076
- operator?: SemaphorInputOperatorInput;
1081
+ operator?: SemaphorInputOperator;
1077
1082
  multi?: boolean;
1078
1083
  defaultValue?: unknown;
1079
1084
  scope?: SemaphorInputScope;
@@ -1137,6 +1142,7 @@ export declare type SemaphorMatrixIntent = {
1137
1142
  values: SemaphorMatrixValueField[];
1138
1143
  filters?: SemaphorAnalyticsFilter[];
1139
1144
  inputs?: SemaphorInputBinding[];
1145
+ relationshipHint?: SemaphorRelationshipHint;
1140
1146
  totals?: SemaphorMatrixTotalOptions;
1141
1147
  sort?: SemaphorMatrixSortRule[];
1142
1148
  expansion?: SemaphorMatrixExpansionOptions;
@@ -1261,8 +1267,8 @@ export declare type SemaphorMetricIntent = {
1261
1267
  version?: SemaphorProtocolVersion;
1262
1268
  id?: string;
1263
1269
  source: SemaphorSourceRef;
1264
- metrics: SemaphorFieldRef[];
1265
- primaryMetric?: SemaphorFieldRef;
1270
+ measures: SemaphorFieldRef[];
1271
+ primaryMeasure?: SemaphorFieldRef;
1266
1272
  label?: string;
1267
1273
  dateField?: SemaphorFieldRef;
1268
1274
  timeGrain?: SemaphorTimeGrain;
@@ -1279,6 +1285,7 @@ export declare type SemaphorMetricIntent = {
1279
1285
  direction: 'asc' | 'desc';
1280
1286
  };
1281
1287
  inputs?: SemaphorInputBinding[];
1288
+ relationshipHint?: SemaphorRelationshipHint;
1282
1289
  limit?: number;
1283
1290
  derivedFields?: SemaphorDerivedFieldDefinition[];
1284
1291
  };
@@ -1315,6 +1322,21 @@ export declare type SemaphorOperationIntent = {
1315
1322
  context?: Record<string, unknown>;
1316
1323
  };
1317
1324
 
1325
+ export declare type SemaphorOptionDependencies = {
1326
+ mode?: 'auto' | 'independent' | 'explicit';
1327
+ includeInputIds?: string[];
1328
+ excludeInputIds?: string[];
1329
+ };
1330
+
1331
+ export declare type SemaphorOptionPopulation = {
1332
+ kind: 'option_source';
1333
+ baseSource?: never;
1334
+ } | {
1335
+ kind: 'related_population';
1336
+ baseSource: SemaphorSourceRef;
1337
+ relationshipHint?: SemaphorRelationshipHint;
1338
+ };
1339
+
1318
1340
  export declare type SemaphorPaginationMetadata = {
1319
1341
  page: number;
1320
1342
  pageSize: number;
@@ -1357,6 +1379,7 @@ export declare type SemaphorRecordsIntent = {
1357
1379
  direction: 'asc' | 'desc';
1358
1380
  };
1359
1381
  inputs?: SemaphorInputBinding[];
1382
+ relationshipHint?: SemaphorRelationshipHint;
1360
1383
  derivedFields?: SemaphorDerivedFieldDefinition[];
1361
1384
  };
1362
1385
 
@@ -1395,6 +1418,10 @@ export declare type SemaphorRelationshipDiagnostics = {
1395
1418
 
1396
1419
  export declare type SemaphorRelationshipDiagnosticStatus = 'not_required' | 'resolved' | 'missing' | 'ambiguous' | 'fanout_risk' | 'unknown';
1397
1420
 
1421
+ export declare type SemaphorRelationshipHint = {
1422
+ relationshipIds?: string[];
1423
+ };
1424
+
1398
1425
  export declare type SemaphorRelativeTimeWindow = {
1399
1426
  kind?: 'relative';
1400
1427
  unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
@@ -928,7 +928,7 @@ declare type SemaphorAnalyticsExecutionResult = {
928
928
 
929
929
  declare type SemaphorAnalyticsExecutionStatus = 'answered' | 'partial' | 'failed';
930
930
 
931
- declare type SemaphorAnalyticsFieldRole = 'metric' | 'dateField' | 'dimension' | 'input' | 'source' | 'sql';
931
+ declare type SemaphorAnalyticsFieldRole = 'measure' | 'date' | 'dimension' | 'input' | 'source' | 'sql';
932
932
 
933
933
  declare type SemaphorAnalyticsFilter = SemaphorAnalyticsValueFilter | SemaphorAnalyticsNullFilter;
934
934
 
@@ -958,7 +958,7 @@ declare type SemaphorAnalyticsNullFilterOperator = 'is_null' | 'is_not_null';
958
958
 
959
959
  declare type SemaphorAnalyticsPopulation = {
960
960
  scope: 'filtered_query';
961
- metrics: Record<string, number | string | null>;
961
+ measures: Record<string, number | string | null>;
962
962
  };
963
963
 
964
964
  declare type SemaphorAnalyticsRepairHint = {
@@ -966,7 +966,7 @@ declare type SemaphorAnalyticsRepairHint = {
966
966
  message?: string;
967
967
  invalidField?: string;
968
968
  fieldRole?: SemaphorAnalyticsFieldRole;
969
- validMetricCandidates?: string[];
969
+ validMeasureCandidates?: string[];
970
970
  validDateCandidates?: string[];
971
971
  validDimensionCandidates?: string[];
972
972
  recommendedNextStep: string;
@@ -984,7 +984,7 @@ declare type SemaphorAnalyticsResultBase = {
984
984
  pagination?: SemaphorPaginationMetadata;
985
985
  };
986
986
 
987
- declare type SemaphorAnalyticsValidationCode = 'missing_source' | 'invalid_source_kind' | 'missing_semantic_domain' | 'missing_dataset_name' | 'missing_connection_id' | 'missing_table_name' | 'missing_sql' | 'missing_metric' | 'missing_record_fields' | 'missing_input_options_field' | 'invalid_metric' | 'invalid_metric_list' | 'invalid_date_field' | 'invalid_dimension' | 'invalid_metric_dimensions' | 'conflicting_sql' | 'sql_policy_violation' | 'unsupported_intent_for_adapter' | 'invalid_analytics_kind' | 'invalid_analytics_intent';
987
+ declare type SemaphorAnalyticsValidationCode = 'missing_source' | 'invalid_source_kind' | 'missing_semantic_domain' | 'missing_dataset_name' | 'missing_connection_id' | 'missing_table_name' | 'missing_sql' | 'missing_measure' | 'missing_record_fields' | 'missing_input_options_input_id' | 'missing_input_options_label_field' | 'missing_input_options_value_field' | 'invalid_input_options_dependencies' | 'invalid_input_options_population' | 'invalid_measure' | 'invalid_measure_list' | 'invalid_date_field' | 'invalid_dimension' | 'invalid_measure_dimensions' | 'conflicting_sql' | 'sql_policy_violation' | 'unsupported_intent_for_adapter' | 'invalid_analytics_kind' | 'invalid_analytics_intent';
988
988
 
989
989
  declare type SemaphorAnalyticsValidationIssue = SemaphorProtocolIssue & {
990
990
  code: SemaphorAnalyticsValidationCode | string;
@@ -1061,15 +1061,9 @@ declare type SemaphorDerivedFieldInput = {
1061
1061
  kind: 'field';
1062
1062
  field: SemaphorFieldRef;
1063
1063
  aggregate?: SemaphorAggregateFunction;
1064
- } | {
1065
- kind: 'metric';
1066
- metric: SemaphorFieldRef;
1067
- } | {
1068
- kind: 'dimension';
1069
- dimension: SemaphorFieldRef;
1070
1064
  };
1071
1065
 
1072
- declare type SemaphorDerivedFieldResultRole = 'measure' | 'group' | 'date' | 'id' | 'filter';
1066
+ declare type SemaphorDerivedFieldResultRole = 'measure' | 'dimension' | 'date' | 'id' | 'unknown';
1073
1067
 
1074
1068
  declare type SemaphorDialect = 'postgres' | 'mysql' | 'mssql' | 'snowflake' | 'clickhouse' | 'bigquery' | 'redshift' | 'duckdb' | 'sqlite' | 'unknown';
1075
1069
 
@@ -1100,9 +1094,10 @@ declare type SemaphorFieldRef = {
1100
1094
  declare type SemaphorInputBinding = {
1101
1095
  inputId: string;
1102
1096
  kind?: 'filter' | 'control';
1103
- controlRole?: 'grain' | 'metric' | 'dimension' | 'aggregation' | 'sqlParam';
1097
+ controlRole?: 'grain' | 'measure' | 'dimension' | 'aggregation' | 'sqlParam';
1104
1098
  operator?: SemaphorInputOperator;
1105
1099
  field?: SemaphorFieldRef;
1100
+ relationshipHint?: SemaphorRelationshipHint;
1106
1101
  };
1107
1102
 
1108
1103
  declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
@@ -1112,10 +1107,17 @@ declare type SemaphorInputOptionsIntent = {
1112
1107
  version?: SemaphorProtocolVersion;
1113
1108
  id?: string;
1114
1109
  label?: string;
1110
+ inputId: string;
1115
1111
  source: SemaphorSourceRef;
1116
- field: SemaphorFieldRef;
1112
+ labelField: SemaphorFieldRef;
1113
+ valueField: SemaphorFieldRef;
1114
+ searchField?: SemaphorFieldRef;
1115
+ disambiguationFields?: SemaphorFieldRef[];
1116
+ population?: SemaphorOptionPopulation;
1117
+ dependencies?: SemaphorOptionDependencies;
1117
1118
  search?: string;
1118
1119
  limit?: number;
1120
+ inputs?: SemaphorInputBinding[];
1119
1121
  derivedFields?: SemaphorDerivedFieldDefinition[];
1120
1122
  };
1121
1123
 
@@ -1125,6 +1127,7 @@ declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
1125
1127
  label: string;
1126
1128
  value: unknown;
1127
1129
  count?: number;
1130
+ disambiguation?: string[];
1128
1131
  }>;
1129
1132
  };
1130
1133
 
@@ -1186,6 +1189,7 @@ declare type SemaphorMatrixIntent = {
1186
1189
  values: SemaphorMatrixValueField[];
1187
1190
  filters?: SemaphorAnalyticsFilter[];
1188
1191
  inputs?: SemaphorInputBinding[];
1192
+ relationshipHint?: SemaphorRelationshipHint;
1189
1193
  totals?: SemaphorMatrixTotalOptions;
1190
1194
  sort?: SemaphorMatrixSortRule[];
1191
1195
  expansion?: SemaphorMatrixExpansionOptions;
@@ -1310,8 +1314,8 @@ declare type SemaphorMetricIntent = {
1310
1314
  version?: SemaphorProtocolVersion;
1311
1315
  id?: string;
1312
1316
  source: SemaphorSourceRef;
1313
- metrics: SemaphorFieldRef[];
1314
- primaryMetric?: SemaphorFieldRef;
1317
+ measures: SemaphorFieldRef[];
1318
+ primaryMeasure?: SemaphorFieldRef;
1315
1319
  label?: string;
1316
1320
  dateField?: SemaphorFieldRef;
1317
1321
  timeGrain?: SemaphorTimeGrain;
@@ -1328,6 +1332,7 @@ declare type SemaphorMetricIntent = {
1328
1332
  direction: 'asc' | 'desc';
1329
1333
  };
1330
1334
  inputs?: SemaphorInputBinding[];
1335
+ relationshipHint?: SemaphorRelationshipHint;
1331
1336
  limit?: number;
1332
1337
  derivedFields?: SemaphorDerivedFieldDefinition[];
1333
1338
  };
@@ -1343,6 +1348,21 @@ declare type SemaphorMetricResult = SemaphorAnalyticsResultBase & {
1343
1348
  };
1344
1349
  };
1345
1350
 
1351
+ declare type SemaphorOptionDependencies = {
1352
+ mode?: 'auto' | 'independent' | 'explicit';
1353
+ includeInputIds?: string[];
1354
+ excludeInputIds?: string[];
1355
+ };
1356
+
1357
+ declare type SemaphorOptionPopulation = {
1358
+ kind: 'option_source';
1359
+ baseSource?: never;
1360
+ } | {
1361
+ kind: 'related_population';
1362
+ baseSource: SemaphorSourceRef;
1363
+ relationshipHint?: SemaphorRelationshipHint;
1364
+ };
1365
+
1346
1366
  declare type SemaphorPaginationMetadata = {
1347
1367
  page: number;
1348
1368
  pageSize: number;
@@ -1385,6 +1405,7 @@ declare type SemaphorRecordsIntent = {
1385
1405
  direction: 'asc' | 'desc';
1386
1406
  };
1387
1407
  inputs?: SemaphorInputBinding[];
1408
+ relationshipHint?: SemaphorRelationshipHint;
1388
1409
  derivedFields?: SemaphorDerivedFieldDefinition[];
1389
1410
  };
1390
1411
 
@@ -1415,6 +1436,10 @@ declare type SemaphorRelationshipDiagnostics = {
1415
1436
 
1416
1437
  declare type SemaphorRelationshipDiagnosticStatus = 'not_required' | 'resolved' | 'missing' | 'ambiguous' | 'fanout_risk' | 'unknown';
1417
1438
 
1439
+ declare type SemaphorRelationshipHint = {
1440
+ relationshipIds?: string[];
1441
+ };
1442
+
1418
1443
  declare type SemaphorRelativeTimeWindow = {
1419
1444
  kind?: 'relative';
1420
1445
  unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
@@ -1934,15 +1934,9 @@ declare type SemaphorDerivedFieldInput = {
1934
1934
  kind: 'field';
1935
1935
  field: SemaphorFieldRef;
1936
1936
  aggregate?: SemaphorAggregateFunction;
1937
- } | {
1938
- kind: 'metric';
1939
- metric: SemaphorFieldRef;
1940
- } | {
1941
- kind: 'dimension';
1942
- dimension: SemaphorFieldRef;
1943
1937
  };
1944
1938
 
1945
- declare type SemaphorDerivedFieldResultRole = 'measure' | 'group' | 'date' | 'id' | 'filter';
1939
+ declare type SemaphorDerivedFieldResultRole = 'measure' | 'dimension' | 'date' | 'id' | 'unknown';
1946
1940
 
1947
1941
  declare type SemaphorDialect = 'postgres' | 'mysql' | 'mssql' | 'snowflake' | 'clickhouse' | 'bigquery' | 'redshift' | 'duckdb' | 'sqlite' | 'unknown';
1948
1942
 
@@ -1966,26 +1960,30 @@ declare type SemaphorFieldRef = {
1966
1960
  declare type SemaphorInputBinding = {
1967
1961
  inputId: string;
1968
1962
  kind?: 'filter' | 'control';
1969
- controlRole?: 'grain' | 'metric' | 'dimension' | 'aggregation' | 'sqlParam';
1963
+ controlRole?: 'grain' | 'measure' | 'dimension' | 'aggregation' | 'sqlParam';
1970
1964
  operator?: SemaphorInputOperator;
1971
1965
  field?: SemaphorFieldRef;
1966
+ relationshipHint?: SemaphorRelationshipHint;
1972
1967
  };
1973
1968
 
1974
1969
  declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
1975
1970
 
1976
- declare type SemaphorInputOperatorAlias = 'eq' | 'equals' | 'not_equals' | 'neq' | 'not equal' | 'not equals' | 'not in' | 'like' | 'not_contains' | 'not contains' | 'not_like' | 'not like' | 'not_between' | 'not between';
1977
-
1978
- declare type SemaphorInputOperatorInput = SemaphorInputOperator | SemaphorInputOperatorAlias;
1979
-
1980
1971
  declare type SemaphorInputOptionsIntent = {
1981
1972
  kind: 'inputOptions';
1982
1973
  version?: SemaphorProtocolVersion;
1983
1974
  id?: string;
1984
1975
  label?: string;
1976
+ inputId: string;
1985
1977
  source: SemaphorSourceRef;
1986
- field: SemaphorFieldRef;
1978
+ labelField: SemaphorFieldRef;
1979
+ valueField: SemaphorFieldRef;
1980
+ searchField?: SemaphorFieldRef;
1981
+ disambiguationFields?: SemaphorFieldRef[];
1982
+ population?: SemaphorOptionPopulation;
1983
+ dependencies?: SemaphorOptionDependencies;
1987
1984
  search?: string;
1988
1985
  limit?: number;
1986
+ inputs?: SemaphorInputBinding[];
1989
1987
  derivedFields?: SemaphorDerivedFieldDefinition[];
1990
1988
  };
1991
1989
 
@@ -2006,7 +2004,7 @@ declare type SemaphorInputSpec = {
2006
2004
  kind: 'filter' | 'control';
2007
2005
  label: string;
2008
2006
  field: SemaphorFieldRef;
2009
- operator?: SemaphorInputOperatorInput;
2007
+ operator?: SemaphorInputOperator;
2010
2008
  multi?: boolean;
2011
2009
  defaultValue?: unknown;
2012
2010
  scope?: SemaphorInputScope;
@@ -2070,6 +2068,7 @@ declare type SemaphorMatrixIntent = {
2070
2068
  values: SemaphorMatrixValueField[];
2071
2069
  filters?: SemaphorAnalyticsFilter[];
2072
2070
  inputs?: SemaphorInputBinding[];
2071
+ relationshipHint?: SemaphorRelationshipHint;
2073
2072
  totals?: SemaphorMatrixTotalOptions;
2074
2073
  sort?: SemaphorMatrixSortRule[];
2075
2074
  expansion?: SemaphorMatrixExpansionOptions;
@@ -2168,8 +2167,8 @@ declare type SemaphorMetricIntent = {
2168
2167
  version?: SemaphorProtocolVersion;
2169
2168
  id?: string;
2170
2169
  source: SemaphorSourceRef;
2171
- metrics: SemaphorFieldRef[];
2172
- primaryMetric?: SemaphorFieldRef;
2170
+ measures: SemaphorFieldRef[];
2171
+ primaryMeasure?: SemaphorFieldRef;
2173
2172
  label?: string;
2174
2173
  dateField?: SemaphorFieldRef;
2175
2174
  timeGrain?: SemaphorTimeGrain;
@@ -2186,10 +2185,26 @@ declare type SemaphorMetricIntent = {
2186
2185
  direction: 'asc' | 'desc';
2187
2186
  };
2188
2187
  inputs?: SemaphorInputBinding[];
2188
+ relationshipHint?: SemaphorRelationshipHint;
2189
2189
  limit?: number;
2190
2190
  derivedFields?: SemaphorDerivedFieldDefinition[];
2191
2191
  };
2192
2192
 
2193
+ declare type SemaphorOptionDependencies = {
2194
+ mode?: 'auto' | 'independent' | 'explicit';
2195
+ includeInputIds?: string[];
2196
+ excludeInputIds?: string[];
2197
+ };
2198
+
2199
+ declare type SemaphorOptionPopulation = {
2200
+ kind: 'option_source';
2201
+ baseSource?: never;
2202
+ } | {
2203
+ kind: 'related_population';
2204
+ baseSource: SemaphorSourceRef;
2205
+ relationshipHint?: SemaphorRelationshipHint;
2206
+ };
2207
+
2193
2208
  declare type SemaphorPaginationRequest = {
2194
2209
  page: number;
2195
2210
  pageSize: number;
@@ -2215,9 +2230,14 @@ declare type SemaphorRecordsIntent = {
2215
2230
  direction: 'asc' | 'desc';
2216
2231
  };
2217
2232
  inputs?: SemaphorInputBinding[];
2233
+ relationshipHint?: SemaphorRelationshipHint;
2218
2234
  derivedFields?: SemaphorDerivedFieldDefinition[];
2219
2235
  };
2220
2236
 
2237
+ declare type SemaphorRelationshipHint = {
2238
+ relationshipIds?: string[];
2239
+ };
2240
+
2221
2241
  declare type SemaphorRelativeTimeWindow = {
2222
2242
  kind?: 'relative';
2223
2243
  unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';