@factorialco/f0-react 1.408.0 → 1.410.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/f0.d.ts CHANGED
@@ -298,8 +298,12 @@ declare type ActionVariant = (typeof actionVariants)[number];
298
298
 
299
299
  declare const actionVariants: readonly ["default", "outline", "critical", "neutral", "ghost", "promote", "outlinePromote", "ai", "link", "unstyled", "mention"];
300
300
 
301
+ declare type AddRowActionsResult = PrimaryActionItemDefinition | PrimaryActionItemDefinition[] | undefined;
302
+
301
303
  /* Excluded from this release type: AgentState */
302
304
 
305
+ export declare type AggregationType = "count" | "sum" | "avg" | "min" | "max" | "countDistinct";
306
+
303
307
  /**
304
308
  * Disclaimer configuration for the chat input
305
309
  */
@@ -334,6 +338,13 @@ export declare type AiChatProviderProps = {
334
338
  * @default false
335
339
  */
336
340
  lockVisualizationMode?: boolean;
341
+ /**
342
+ * Enable chat history UI (clickable header title + history dialog).
343
+ * When false (default), the header shows a simple "New Chat" button instead.
344
+ * Set to true only when the backend supports the /copilotkit/chat-history/threads route.
345
+ * @default false
346
+ */
347
+ historyEnabled?: boolean;
337
348
  /**
338
349
  * Optional footer content rendered below the textarea
339
350
  */
@@ -396,6 +407,18 @@ declare type AiChatProviderReturnValue = {
396
407
  */
397
408
  clear: () => void;
398
409
  /* Excluded from this release type: setClearFunction */
410
+ /**
411
+ * Title of the currently loaded thread, or null for new conversations
412
+ */
413
+ currentThreadTitle: string | null;
414
+ /**
415
+ * Load a thread by ID and set its title in the header
416
+ */
417
+ loadThread: (threadId: string, title: string) => void;
418
+ /* Excluded from this release type: setLoadThreadFunction */
419
+ /** Whether a thread's messages are currently being fetched */
420
+ isLoadingThread: boolean;
421
+ /* Excluded from this release type: setIsLoadingThread */
399
422
  /**
400
423
  * Send a message to the chat
401
424
  * @param message - The message content as a string, or a full Message object
@@ -423,6 +446,7 @@ declare type AiChatProviderReturnValue = {
423
446
  * When true, prevents switching between visualization modes
424
447
  */
425
448
  lockVisualizationMode: boolean;
449
+ historyEnabled: boolean;
426
450
  /**
427
451
  * Optional footer content rendered below the textarea
428
452
  */
@@ -432,10 +456,22 @@ declare type AiChatProviderReturnValue = {
432
456
  */
433
457
  setFooter: React.Dispatch<React.SetStateAction<React.ReactNode | undefined>>;
434
458
  } & Pick<AiChatState, "greeting" | "agent" | "disclaimer" | "resizable" | "entityResolvers" | "toolHints"> & {
459
+ /** The current canvas content, or null when canvas is closed */
460
+ canvasContent: CanvasContent | null;
461
+ /** The dashboard config from the current canvas content, or null */
462
+ canvasDashboard: ChatDashboardConfig | null;
463
+ /** Open the canvas panel with the given content */
464
+ openCanvas: (content: CanvasContent) => void;
465
+ /** Close the canvas panel and restore the previous visualization mode */
466
+ closeCanvas: () => void;
435
467
  /** The currently active tool hint, or null if none is selected */
436
468
  activeToolHint: AiChatToolHint | null;
437
469
  /** Set the active tool hint (pass null to clear) */
438
470
  setActiveToolHint: React.Dispatch<React.SetStateAction<AiChatToolHint | null>>;
471
+ /** Get a saved dashboard config by toolCallId (returns updated config after user edits) */
472
+ getSavedDashboardConfig: (toolCallId: string) => ChatDashboardConfig | undefined;
473
+ /** Save an updated dashboard config keyed by toolCallId */
474
+ updateDashboardConfig: (toolCallId: string, config: ChatDashboardConfig) => void;
439
475
  };
440
476
 
441
477
  /**
@@ -451,6 +487,7 @@ declare interface AiChatState {
451
487
  resizable?: boolean;
452
488
  defaultVisualizationMode?: VisualizationMode;
453
489
  lockVisualizationMode?: boolean;
490
+ historyEnabled?: boolean;
454
491
  footer?: React.ReactNode;
455
492
  entityResolvers?: EntityResolvers;
456
493
  toolHints?: AiChatToolHint[];
@@ -533,6 +570,9 @@ export declare const aiTranslations: {
533
570
  thoughtsGroupTitle: string;
534
571
  resourcesGroupTitle: string;
535
572
  thinking: string;
573
+ closeDashboard: string;
574
+ exportTable: string;
575
+ generatedTableFilename: string;
536
576
  feedbackModal: {
537
577
  positive: {
538
578
  title: string;
@@ -548,9 +588,32 @@ export declare const aiTranslations: {
548
588
  dataDownloadPreview: string;
549
589
  expandChat: string;
550
590
  collapseChat: string;
591
+ chatHistory: string;
592
+ noPreviousChats: string;
593
+ newConversation: string;
594
+ today: string;
595
+ yesterday: string;
596
+ thisMonth: string;
597
+ older: string;
598
+ searchChats: string;
599
+ pinnedChats: string;
600
+ threadOptions: string;
601
+ pinChat: string;
602
+ unpinChat: string;
603
+ deleteChat: string;
551
604
  ask: string;
552
605
  viewProfile: string;
553
606
  tools: string;
607
+ reportCard: {
608
+ reportLabel: string;
609
+ openButton: string;
610
+ };
611
+ dataDownload: {
612
+ download: string;
613
+ };
614
+ unsavedChanges: string;
615
+ saveChanges: string;
616
+ discardChanges: string;
554
617
  };
555
618
  };
556
619
 
@@ -1243,6 +1306,21 @@ declare type CalendarMode = "single" | "range";
1243
1306
 
1244
1307
  declare type CalendarView = "day" | "month" | "year" | "week" | "quarter" | "halfyear";
1245
1308
 
1309
+ /**
1310
+ * Discriminated union for canvas panel content.
1311
+ * Expand this union to support new content types in the canvas.
1312
+ */
1313
+ export declare type CanvasContent = {
1314
+ type: "dashboard";
1315
+ title: string;
1316
+ config: ChatDashboardConfig;
1317
+ apiConfig: {
1318
+ baseUrl: string;
1319
+ headers: Record<string, string>;
1320
+ };
1321
+ toolCallId?: string;
1322
+ };
1323
+
1246
1324
  declare type CardAvatarVariant = AvatarVariant | {
1247
1325
  type: "emoji";
1248
1326
  emoji: string;
@@ -1458,6 +1536,17 @@ declare type ChartColorToken = (typeof chartColorTokens)[number];
1458
1536
  */
1459
1537
  declare const chartColorTokens: readonly ["lilac", "barbie", "smoke", "army", "flubber", "indigo", "camel", "radical", "viridian", "orange", "red", "grass", "malibu", "yellow", "purple"];
1460
1538
 
1539
+ export declare interface ChartComputation {
1540
+ datasetId: string;
1541
+ xAxis: string;
1542
+ yAxis: string;
1543
+ aggregation: AggregationType;
1544
+ series?: string;
1545
+ sortBy?: "value" | "category";
1546
+ sortOrder?: "asc" | "desc";
1547
+ limit?: number;
1548
+ }
1549
+
1461
1550
  declare interface ChartConfigBase {
1462
1551
  /** Show the legend below the chart. @default true */
1463
1552
  showLegend?: boolean;
@@ -1471,6 +1560,148 @@ declare interface ChartConfigBase {
1471
1560
  categoryFormatter?: (value: string) => string;
1472
1561
  }
1473
1562
 
1563
+ export declare interface ChatDashboardBarChartConfig extends ChatDashboardChartConfigBase {
1564
+ type: "bar";
1565
+ orientation?: "vertical" | "horizontal";
1566
+ stacked?: boolean;
1567
+ }
1568
+
1569
+ export declare type ChatDashboardChartConfig = ChatDashboardBarChartConfig | ChatDashboardLineChartConfig | ChatDashboardFunnelChartConfig | ChatDashboardRadarChartConfig | ChatDashboardPieChartConfig | ChatDashboardGaugeChartConfig | ChatDashboardHeatmapChartConfig;
1570
+
1571
+ declare interface ChatDashboardChartConfigBase {
1572
+ showLegend?: boolean;
1573
+ showGrid?: boolean;
1574
+ showLabels?: boolean;
1575
+ valueFormat?: FormatPreset;
1576
+ }
1577
+
1578
+ export declare interface ChatDashboardChartItem extends ChatDashboardItemBase {
1579
+ type: "chart";
1580
+ chart: ChatDashboardChartConfig;
1581
+ computation: ChartComputation | RadarComputation | PieComputation | GaugeComputation | HeatmapComputation;
1582
+ }
1583
+
1584
+ export declare interface ChatDashboardCollectionItem extends ChatDashboardItemBase {
1585
+ type: "collection";
1586
+ columns: ChatDashboardColumn[];
1587
+ computation: CollectionComputation;
1588
+ }
1589
+
1590
+ export declare interface ChatDashboardColumn {
1591
+ /** Column key — must match a key in each row object */
1592
+ id: string;
1593
+ /** Display header label */
1594
+ label: string;
1595
+ /** Optional fixed width in pixels */
1596
+ width?: number;
1597
+ }
1598
+
1599
+ /**
1600
+ * Complete dashboard configuration received via `displayDashboard`.
1601
+ * Contains fetchSpecs that describe how to obtain data server-side —
1602
+ * no raw data is included. Fully JSON-serializable.
1603
+ */
1604
+ export declare interface ChatDashboardConfig {
1605
+ /** Dashboard title displayed in the canvas header and chat report card */
1606
+ title: string;
1607
+ /** Filter definitions — keys become filter IDs */
1608
+ filters?: Record<string, ChatDashboardFilterDefinition>;
1609
+ /** Ordered list of dashboard items with computation specs */
1610
+ items: ChatDashboardItem[];
1611
+ /** Fetch specs for server-side data retrieval, keyed by datasetId */
1612
+ fetchSpecs: Record<string, DashboardFetchSpec>;
1613
+ }
1614
+
1615
+ export declare interface ChatDashboardFilterDefinition {
1616
+ type: "in";
1617
+ label: string;
1618
+ column: string;
1619
+ datasetId: string;
1620
+ }
1621
+
1622
+ export declare interface ChatDashboardFunnelChartConfig {
1623
+ type: "funnel";
1624
+ sort?: "descending" | "ascending" | "none";
1625
+ orient?: "horizontal" | "vertical";
1626
+ labelPosition?: "inside" | "outside";
1627
+ showLegend?: boolean;
1628
+ showLabels?: boolean;
1629
+ showConversion?: boolean;
1630
+ valueFormat?: FormatPreset;
1631
+ }
1632
+
1633
+ declare interface ChatDashboardGaugeChartConfig {
1634
+ type: "gauge";
1635
+ min?: number;
1636
+ max?: number;
1637
+ showValue?: boolean;
1638
+ valueFormat?: FormatPreset;
1639
+ }
1640
+
1641
+ declare interface ChatDashboardHeatmapChartConfig {
1642
+ type: "heatmap";
1643
+ min?: number;
1644
+ max?: number;
1645
+ showLabels?: boolean;
1646
+ showVisualMap?: boolean;
1647
+ valueFormat?: FormatPreset;
1648
+ }
1649
+
1650
+ export declare type ChatDashboardItem = ChatDashboardChartItem | ChatDashboardMetricItem | ChatDashboardCollectionItem;
1651
+
1652
+ declare interface ChatDashboardItemBase {
1653
+ id: string;
1654
+ title: string;
1655
+ description?: string;
1656
+ /** Source attribution shown as a subtitle (e.g. "Based on 8 feedbacks from 3 evaluators") */
1657
+ sourceDescription?: string;
1658
+ colSpan?: number;
1659
+ rowSpan?: number;
1660
+ x?: number;
1661
+ y?: number;
1662
+ }
1663
+
1664
+ export declare interface ChatDashboardLineChartConfig extends ChatDashboardChartConfigBase {
1665
+ type: "line";
1666
+ lineType?: "linear" | "smooth" | "step";
1667
+ showArea?: boolean;
1668
+ showDots?: boolean;
1669
+ }
1670
+
1671
+ export declare type ChatDashboardMetricFormat = {
1672
+ type: "number";
1673
+ } | {
1674
+ type: "currency";
1675
+ currency?: string;
1676
+ } | {
1677
+ type: "percent";
1678
+ } | {
1679
+ type: "custom";
1680
+ suffix?: string;
1681
+ prefix?: string;
1682
+ };
1683
+
1684
+ export declare interface ChatDashboardMetricItem extends ChatDashboardItemBase {
1685
+ type: "metric";
1686
+ format?: ChatDashboardMetricFormat;
1687
+ decimals?: number;
1688
+ computation: MetricComputation;
1689
+ }
1690
+
1691
+ declare interface ChatDashboardPieChartConfig {
1692
+ type: "pie";
1693
+ innerRadius?: number;
1694
+ showLegend?: boolean;
1695
+ showLabels?: boolean;
1696
+ showPercentage?: boolean;
1697
+ valueFormat?: FormatPreset;
1698
+ }
1699
+
1700
+ declare interface ChatDashboardRadarChartConfig extends ChatDashboardChartConfigBase {
1701
+ type: "radar";
1702
+ showArea?: boolean;
1703
+ }
1704
+
1474
1705
  export declare const ChatSpinner: ForwardRefExoticComponent<Omit<SVGProps<SVGSVGElement>, "ref"> & RefAttributes<SVGSVGElement>>;
1475
1706
 
1476
1707
  /**
@@ -1592,6 +1823,13 @@ declare const chipVariants: (props?: ({
1592
1823
 
1593
1824
  declare type ColId = string;
1594
1825
 
1826
+ export declare interface CollectionComputation {
1827
+ datasetId: string;
1828
+ sortBy?: string;
1829
+ sortOrder?: "asc" | "desc";
1830
+ limit?: number;
1831
+ }
1832
+
1595
1833
  /**
1596
1834
  * Props for the Collection component.
1597
1835
  * @template Record - The type of records in the collection
@@ -1866,6 +2104,15 @@ export declare interface DashboardCollectionItem<Filters extends FiltersDefiniti
1866
2104
  visualizations: ReadonlyArray<any>;
1867
2105
  }
1868
2106
 
2107
+ export declare interface DashboardFetchSpec {
2108
+ fetch: Array<{
2109
+ toolId: string;
2110
+ args: Record<string, unknown>;
2111
+ }>;
2112
+ query: string | null;
2113
+ columnLabels?: Record<string, string>;
2114
+ }
2115
+
1869
2116
  /**
1870
2117
  * A single dashboard item. Discriminated on `type`.
1871
2118
  *
@@ -1881,8 +2128,14 @@ export declare interface DashboardItemBase {
1881
2128
  title: string;
1882
2129
  /** Optional description below the title */
1883
2130
  description?: string;
1884
- /** Number of grid columns this item spans (1–3). @default 1 */
1885
- colSpan?: 1 | 2 | 3;
2131
+ /** Number of grid columns this item spans (1–12). */
2132
+ colSpan?: number;
2133
+ /** Number of grid rows this item spans. */
2134
+ rowSpan?: number;
2135
+ /** Grid column position (0-based). When set, skip auto-packing. */
2136
+ x?: number;
2137
+ /** Grid row position (0-based). When set, skip auto-packing. */
2138
+ y?: number;
1886
2139
  /**
1887
2140
  * Whether this item receives dashboard-level filters in its fetchData.
1888
2141
  * When false, fetchData receives an empty object.
@@ -1891,6 +2144,19 @@ export declare interface DashboardItemBase {
1891
2144
  useDashboardFilters?: boolean;
1892
2145
  }
1893
2146
 
2147
+ /**
2148
+ * Minimal descriptor of a dashboard item's position and size.
2149
+ * Used by `onLayoutChange` so the consumer can reconcile layout
2150
+ * edits against its own source-of-truth config items.
2151
+ */
2152
+ declare type DashboardItemLayout = {
2153
+ id: string;
2154
+ colSpan: number;
2155
+ rowSpan: number;
2156
+ x: number;
2157
+ y: number;
2158
+ };
2159
+
1894
2160
  /** Data returned by a metric item's fetchData */
1895
2161
  export declare interface DashboardMetricData {
1896
2162
  /** The main numeric value displayed in large text */
@@ -2726,6 +2992,10 @@ export declare const defaultTranslations: {
2726
2992
  readonly thoughtsGroupTitle: "Reflection";
2727
2993
  readonly resourcesGroupTitle: "Resources";
2728
2994
  readonly thinking: "Thinking...";
2995
+ readonly closeDashboard: "Close dashboard";
2996
+ readonly unsavedChanges: "Unsaved changes";
2997
+ readonly saveChanges: "Save changes";
2998
+ readonly discardChanges: "Discard";
2729
2999
  readonly exportTable: "Download table";
2730
3000
  readonly generatedTableFilename: "OneGeneratedTable";
2731
3001
  readonly feedbackModal: {
@@ -2743,9 +3013,29 @@ export declare const defaultTranslations: {
2743
3013
  readonly dataDownloadPreview: "Preview {{shown}} of {{total}} rows — download the Excel to see all data.";
2744
3014
  readonly expandChat: "Expand chat";
2745
3015
  readonly collapseChat: "Collapse chat";
3016
+ readonly chatHistory: "Chat history";
3017
+ readonly noPreviousChats: "No previous conversations";
3018
+ readonly newConversation: "New conversation";
3019
+ readonly today: "Today";
3020
+ readonly yesterday: "Yesterday";
3021
+ readonly thisMonth: "This month";
3022
+ readonly older: "Older";
3023
+ readonly searchChats: "Search conversations...";
3024
+ readonly pinnedChats: "Pinned";
3025
+ readonly threadOptions: "Thread options";
3026
+ readonly pinChat: "Pin chat";
3027
+ readonly unpinChat: "Unpin chat";
3028
+ readonly deleteChat: "Delete chat";
2746
3029
  readonly ask: "Ask One";
2747
3030
  readonly viewProfile: "View profile";
2748
3031
  readonly tools: "Tools";
3032
+ readonly reportCard: {
3033
+ readonly reportLabel: "Report";
3034
+ readonly openButton: "Open";
3035
+ };
3036
+ readonly dataDownload: {
3037
+ readonly download: "Download {{format}}";
3038
+ };
2749
3039
  readonly growth: {
2750
3040
  readonly demoCard: {
2751
3041
  readonly title: "See {{moduleName}} in action";
@@ -3141,12 +3431,26 @@ declare type EditableTableVisualizationOptions<R extends RecordType, _Filters ex
3141
3431
  * Rejection sets an error on the edited column.
3142
3432
  */
3143
3433
  onCellChange: (updatedItem: R) => Promise<void | Record<string, string>>;
3144
- /** When provided, renders an "Add" button row at the bottom of the table and nested rows. Receives the parent item when triggered from a nested row. Supports async functions for loading state. */
3145
- onAddRow?: (parentItem?: R) => void | Promise<void>;
3146
- /** Custom label for the root-level "Add row" button. Falls back to the default i18n translation. */
3147
- addRowButtonLabel?: string;
3148
- /** Custom label for the nested-row "Add row" button. Falls back to the default i18n translation. */
3149
- nestedAddRowButtonLabel?: string;
3434
+ /**
3435
+ * When provided, renders action buttons at the bottom of the root-level table.
3436
+ * Returns a single action, an array of actions, or undefined to hide the row.
3437
+ */
3438
+ addRowActions?: () => AddRowActionsResult;
3439
+ /**
3440
+ * Label for the dropdown trigger button when multiple root-level add-row
3441
+ * actions are provided. Falls back to the first action's label if omitted.
3442
+ */
3443
+ addRowActionsLabel?: string;
3444
+ /**
3445
+ * When provided, renders action buttons at the bottom of each expanded nested row.
3446
+ * Receives the parent item whose children the new row will be added to.
3447
+ */
3448
+ addNestedRowActions?: (parent: R) => AddRowActionsResult;
3449
+ /**
3450
+ * Label for the dropdown trigger button when multiple nested add-row
3451
+ * actions are provided. Falls back to the first action's label if omitted.
3452
+ */
3453
+ addNestedRowActionsLabel?: string;
3150
3454
  };
3151
3455
 
3152
3456
  declare type EditableTableVisualizationSettings = TableVisualizationSettings;
@@ -3267,7 +3571,7 @@ export declare const F0AiChat: () => JSX_2.Element | null;
3267
3571
  /**
3268
3572
  * @experimental This is an experimental component use it at your own risk
3269
3573
  */
3270
- export declare const F0AiChatProvider: ({ enabled, greeting, initialMessage, welcomeScreenSuggestions, disclaimer, resizable, defaultVisualizationMode, lockVisualizationMode, footer, entityResolvers, toolHints, onThumbsUp, onThumbsDown, children, agent, tracking, ...copilotKitProps }: AiChatProviderProps) => JSX_2.Element;
3574
+ export declare const F0AiChatProvider: ({ enabled, greeting, initialMessage, welcomeScreenSuggestions, disclaimer, resizable, defaultVisualizationMode, lockVisualizationMode, historyEnabled, footer, entityResolvers, toolHints, onThumbsUp, onThumbsDown, children, agent, tracking, ...copilotKitProps }: AiChatProviderProps) => JSX_2.Element;
3271
3575
 
3272
3576
  export declare const F0AiChatTextArea: ({ submitLabel, inProgress, onSend, onStop, placeholders, defaultPlaceholder, autoFocus, entityResolvers, toolHints, activeToolHint, onActiveToolHintChange, }: F0AiChatTextAreaProps) => JSX_2.Element;
3273
3577
 
@@ -3403,7 +3707,7 @@ export declare interface F0AlertProps {
3403
3707
  * @experimental This is an experimental component use it at your own risk
3404
3708
  */
3405
3709
  export declare const F0AnalyticsDashboard: {
3406
- <Filters extends FiltersDefinition_2 = FiltersDefinition_2>({ filters, presets, defaultFilters, items, }: F0AnalyticsDashboardProps_2<Filters>): JSX_2.Element;
3710
+ <Filters extends FiltersDefinition_2 = FiltersDefinition_2>({ filters, presets, defaultFilters, items, editMode, onLayoutChange, }: F0AnalyticsDashboardProps_2<Filters>): JSX_2.Element;
3407
3711
  displayName: string;
3408
3712
  };
3409
3713
 
@@ -3436,6 +3740,16 @@ export declare interface F0AnalyticsDashboardProps<Filters extends FiltersDefini
3436
3740
  * Each item declares its type, visual config, grid span, and data fetcher.
3437
3741
  */
3438
3742
  items: DashboardItem<Filters>[];
3743
+ /**
3744
+ * When true, enables drag-and-drop reordering, resize, and delete controls.
3745
+ */
3746
+ editMode?: boolean;
3747
+ /**
3748
+ * Called when items are reordered, resized, or deleted in edit mode.
3749
+ * Receives a layout descriptor (ordered list of { id, colSpan }) so
3750
+ * the consumer can reconcile against the original config items.
3751
+ */
3752
+ onLayoutChange?: (layout: DashboardItemLayout[]) => void;
3439
3753
  }
3440
3754
 
3441
3755
  /**
@@ -3953,6 +4267,31 @@ compact?: boolean;
3953
4267
 
3954
4268
  export declare type F0CardProps = Omit<CardInternalProps, (typeof privateProps_3)[number]>;
3955
4269
 
4270
+ /**
4271
+ * Compact card shown inline in the AI chat to represent a generated
4272
+ * dashboard report. Uses F0Card with an icon avatar, the dashboard
4273
+ * title/description, and an item summary in metadata. Clicking the
4274
+ * card triggers `onView` to open the canvas panel.
4275
+ *
4276
+ * Subscribes to the external `savedDashboardConfigStore` via
4277
+ * `useSyncExternalStore` so it re-renders when the user edits the
4278
+ * dashboard layout and saves — independently of React context.
4279
+ */
4280
+ export declare function F0ChatReportCard({ config: originalConfig, onView, toolCallId, }: F0ChatReportCardProps): JSX_2.Element;
4281
+
4282
+ export declare namespace F0ChatReportCard {
4283
+ var displayName: string;
4284
+ }
4285
+
4286
+ export declare interface F0ChatReportCardProps {
4287
+ /** The original dashboard config from the agent */
4288
+ config: ChatDashboardConfig;
4289
+ /** Callback when the user clicks the card to view the report */
4290
+ onView: (config: ChatDashboardConfig) => void;
4291
+ /** Tool call ID used to look up saved (edited) dashboard configs */
4292
+ toolCallId?: string;
4293
+ }
4294
+
3956
4295
  /**
3957
4296
  * @experimental This is an experimental component use it at your own risk
3958
4297
  */
@@ -5131,7 +5470,7 @@ export declare type F0FormSubmitResult = {
5131
5470
  };
5132
5471
 
5133
5472
  export declare const F0GridStack: WithDataTestIdReturnType_4< {
5134
- ({ options, widgets, onChange, className, }: F0GridStackProps_2): JSX_2.Element;
5473
+ ({ options, widgets, onChange, className, static: isStatic, forcePositionSync, }: F0GridStackProps_2): JSX_2.Element;
5135
5474
  displayName: string;
5136
5475
  }>;
5137
5476
 
@@ -5140,6 +5479,12 @@ export declare interface F0GridStackProps {
5140
5479
  widgets: GridStackReactWidget[];
5141
5480
  onChange?: (widgets: GridStackReactWidget[]) => void;
5142
5481
  className?: string;
5482
+ /** Toggle static mode imperatively via `gridStack.setStatic()`.
5483
+ * Unlike putting `staticGrid` in options, this does NOT recreate the grid. */
5484
+ static?: boolean;
5485
+ /** Incrementing counter that forces all widget positions to match props.
5486
+ * Used to reset positions on layout discard. */
5487
+ forcePositionSync?: number;
5143
5488
  }
5144
5489
 
5145
5490
  export declare const F0Heading: WithDataTestIdReturnType_3<ForwardRefExoticComponent<Omit<F0HeadingProps, "ref"> & RefAttributes<HTMLElement>>>;
@@ -6226,6 +6571,22 @@ declare type FontSize = (typeof fontSizes)[number];
6226
6571
 
6227
6572
  declare const fontSizes: readonly ["sm", "md", "lg"];
6228
6573
 
6574
+ /**
6575
+ * A preset formatting instruction the LLM can specify instead of a
6576
+ * real formatter function. The wrapper component maps these to actual
6577
+ * `(value: number) => string` functions at render time.
6578
+ */
6579
+ export declare type FormatPreset = {
6580
+ type: "number";
6581
+ } | {
6582
+ type: "currency";
6583
+ currency?: string;
6584
+ } | {
6585
+ type: "percent";
6586
+ } | {
6587
+ type: "compact";
6588
+ };
6589
+
6229
6590
  /* Excluded from this release type: FormDefinitionItem */
6230
6591
 
6231
6592
  /**
@@ -6313,6 +6674,15 @@ export declare interface GaugeChartConfig {
6313
6674
  valueFormatter?: (value: number) => string;
6314
6675
  }
6315
6676
 
6677
+ declare interface GaugeComputation {
6678
+ datasetId: string;
6679
+ aggregation: AggregationType;
6680
+ column?: string;
6681
+ min?: number;
6682
+ max?: number;
6683
+ name?: string;
6684
+ }
6685
+
6316
6686
  /**
6317
6687
  * Generates an anchor ID for a form element
6318
6688
  * Format: forms.[formName].[sectionId].[fieldId]
@@ -6538,6 +6908,14 @@ export declare interface HeatmapChartConfig {
6538
6908
  valueFormatter?: (value: number) => string;
6539
6909
  }
6540
6910
 
6911
+ declare interface HeatmapComputation {
6912
+ datasetId: string;
6913
+ xAxis: string;
6914
+ yAxis: string;
6915
+ valueColumn: string;
6916
+ aggregation: AggregationType;
6917
+ }
6918
+
6541
6919
  declare type heightType = "xxs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full" | "auto";
6542
6920
 
6543
6921
  export declare const HomeLayout: WithDataTestIdReturnType_2<ForwardRefExoticComponent<Omit<{
@@ -7141,6 +7519,12 @@ declare interface MetadataProps {
7141
7519
  collapse?: boolean;
7142
7520
  }
7143
7521
 
7522
+ export declare interface MetricComputation {
7523
+ datasetId: string;
7524
+ aggregation: AggregationType;
7525
+ column?: string;
7526
+ }
7527
+
7144
7528
  /** How to format the metric value */
7145
7529
  export declare type MetricFormat = {
7146
7530
  type: "number";
@@ -7756,6 +8140,16 @@ export declare interface PieChartConfig {
7756
8140
  valueFormatter?: (value: number) => string;
7757
8141
  }
7758
8142
 
8143
+ declare interface PieComputation {
8144
+ datasetId: string;
8145
+ nameColumn: string;
8146
+ valueColumn: string;
8147
+ aggregation: AggregationType;
8148
+ sortBy?: "value" | "name";
8149
+ sortOrder?: "asc" | "desc";
8150
+ limit?: number;
8151
+ }
8152
+
7759
8153
  declare type PopupSize = "sm" | "md" | "lg";
7760
8154
 
7761
8155
  /** CSS position */
@@ -8066,6 +8460,19 @@ export declare interface RadarChartConfig {
8066
8460
  valueFormatter?: (value: number) => string;
8067
8461
  }
8068
8462
 
8463
+ declare interface RadarComputation {
8464
+ datasetId: string;
8465
+ seriesColumn: string;
8466
+ indicators: Array<{
8467
+ column: string;
8468
+ label: string;
8469
+ max?: number;
8470
+ }>;
8471
+ limit?: number;
8472
+ sortBy?: string;
8473
+ sortOrder?: "asc" | "desc";
8474
+ }
8475
+
8069
8476
  declare type RatingQuestionProps = BaseQuestionPropsForOtherQuestionComponents & {
8070
8477
  value?: number;
8071
8478
  } & {
@@ -9766,7 +10173,7 @@ declare type VisualizacionTypeDefinition<Props, Settings = Record<string, never>
9766
10173
  /**
9767
10174
  * Visualization mode for the AI chat
9768
10175
  */
9769
- export declare type VisualizationMode = "sidepanel" | "fullscreen";
10176
+ export declare type VisualizationMode = "sidepanel" | "fullscreen" | "canvas";
9770
10177
 
9771
10178
  declare type VisualizationSettings = {
9772
10179
  [K in keyof typeof collectionVisualizations]: ExtractVisualizationSettings<(typeof collectionVisualizations)[K]>;
@@ -9889,6 +10296,11 @@ declare module "gridstack" {
9889
10296
  }
9890
10297
 
9891
10298
 
10299
+ declare namespace Calendar {
10300
+ var displayName: string;
10301
+ }
10302
+
10303
+
9892
10304
  declare module "@tiptap/core" {
9893
10305
  interface Commands<ReturnType> {
9894
10306
  aiBlock: {
@@ -9936,8 +10348,3 @@ declare module "@tiptap/core" {
9936
10348
  };
9937
10349
  }
9938
10350
  }
9939
-
9940
-
9941
- declare namespace Calendar {
9942
- var displayName: string;
9943
- }