drizzle-cube 0.8.2 → 0.9.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.
Files changed (295) hide show
  1. package/dist/adapters/ActivityGridChart.config-DfyZh3He.js +2 -0
  2. package/dist/adapters/ActivityGridChart.config-DgOwl51m.cjs +1 -0
  3. package/dist/adapters/AreaChart.config-BL_ZpMsg.js +2 -0
  4. package/dist/adapters/AreaChart.config-rc1phjmI.cjs +1 -0
  5. package/dist/adapters/BarChart.config-C6k4BxhM.cjs +1 -0
  6. package/dist/adapters/BarChart.config-CBACR7Z-.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-Bvg6yFn2.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-CAlLRM0v.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-22qXNskY.js +2 -0
  10. package/dist/adapters/BubbleChart.config-BkB3P6Bi.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-DuZb-y6d.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-G78UbuwS.js +2 -0
  13. package/dist/adapters/DataTable.config-BXkpzOC2.js +2 -0
  14. package/dist/adapters/DataTable.config-CwPlSht6.cjs +1 -0
  15. package/dist/adapters/DotStripChart.config-Bw9Ww5zY.cjs +1 -0
  16. package/dist/adapters/DotStripChart.config-D5sbLAqA.js +2 -0
  17. package/dist/adapters/FunnelChart.config-CUs1rqN2.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-Cw9qrC2C.js +2 -0
  19. package/dist/adapters/GaugeChart.config-CjGtJVoO.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-F5SA5Oi3.js +2 -0
  21. package/dist/adapters/HeatMapChart.config-CvgmSiuY.cjs +1 -0
  22. package/dist/adapters/HeatMapChart.config-DrvQrPHT.js +2 -0
  23. package/dist/adapters/KpiDelta.config-B-UJWdJ5.cjs +1 -0
  24. package/dist/adapters/KpiDelta.config-C00mTZYy.js +2 -0
  25. package/dist/adapters/KpiNumber.config-CB0kTeoV.cjs +1 -0
  26. package/dist/adapters/KpiNumber.config-D3CogH8j.js +2 -0
  27. package/dist/adapters/KpiText.config-B0LbKRCf.js +2 -0
  28. package/dist/adapters/KpiText.config-Dv4TNprC.cjs +1 -0
  29. package/dist/adapters/LineChart.config-CdONxSLL.js +2 -0
  30. package/dist/adapters/LineChart.config-DBHsfIYG.cjs +1 -0
  31. package/dist/adapters/MarkdownChart.config-AYKXdpuw.cjs +1 -0
  32. package/dist/adapters/MarkdownChart.config-CngxD_Lc.js +2 -0
  33. package/dist/adapters/MeasureProfileChart.config-B0a5sUk6.cjs +1 -0
  34. package/dist/adapters/MeasureProfileChart.config-ByW5F1Ey.js +2 -0
  35. package/dist/adapters/PieChart.config-Csx1ctk4.js +2 -0
  36. package/dist/adapters/PieChart.config-Dfw66Xab.cjs +1 -0
  37. package/dist/adapters/ProportionBarChart.config-BaeYznc1.cjs +1 -0
  38. package/dist/adapters/ProportionBarChart.config-DCOizSVs.js +2 -0
  39. package/dist/adapters/RadarChart.config-AxQh97rB.js +2 -0
  40. package/dist/adapters/RadarChart.config-BjP-zEGW.cjs +1 -0
  41. package/dist/adapters/RadialBarChart.config-D5EwyJ0G.cjs +1 -0
  42. package/dist/adapters/RadialBarChart.config-DMaEJYM_.js +2 -0
  43. package/dist/adapters/RecordsTable.config-BdN0kZ8b.js +2 -0
  44. package/dist/adapters/RecordsTable.config-CWRvGDbi.cjs +1 -0
  45. package/dist/adapters/RetentionCombinedChart.config-BpciOTeX.cjs +1 -0
  46. package/dist/adapters/RetentionCombinedChart.config-CY8TDzuy.js +2 -0
  47. package/dist/adapters/RetentionHeatmap.config-BZPRoVpF.cjs +1 -0
  48. package/dist/adapters/RetentionHeatmap.config-YMZt-u-T.js +2 -0
  49. package/dist/adapters/SankeyChart.config-BdSA-Jlp.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-Dlgi5_DA.js +2 -0
  51. package/dist/adapters/ScatterChart.config-VJ0xG0Ak.cjs +1 -0
  52. package/dist/adapters/ScatterChart.config-oOd1Jplx.js +2 -0
  53. package/dist/adapters/SunburstChart.config-Cllhyjy4.js +2 -0
  54. package/dist/adapters/SunburstChart.config-DU11BAei.cjs +1 -0
  55. package/dist/adapters/TreeMapChart.config--EB8bQTo.js +2 -0
  56. package/dist/adapters/TreeMapChart.config-BPmMLBH1.cjs +1 -0
  57. package/dist/adapters/WaterfallChart.config-E99Fl6uM.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-xz3DaoMQ.js +2 -0
  59. package/dist/adapters/{anthropic-DG4r1LSm.cjs → anthropic-CqLkud62.cjs} +1 -1
  60. package/dist/adapters/{anthropic-CZh4hB-m.js → anthropic-MQlafOZv.js} +3 -0
  61. package/dist/adapters/compiler-BdVMQ3Xj.cjs +166 -0
  62. package/dist/adapters/{compiler-BFLAXV7W.js → compiler-SBDjxyQ3.js} +1231 -1231
  63. package/dist/adapters/core/index.cjs +1 -1
  64. package/dist/adapters/core/index.js +1 -1
  65. package/dist/adapters/{core-CrJu6vJY.cjs → core-CSt8MGbw.cjs} +1 -1
  66. package/dist/adapters/{core-l3KMTu9u.js → core-CXrxqh7l.js} +2 -2
  67. package/dist/adapters/express/index.cjs +1 -1
  68. package/dist/adapters/express/index.js +5 -5
  69. package/dist/adapters/fastify/index.cjs +1 -1
  70. package/dist/adapters/fastify/index.js +23 -23
  71. package/dist/{server/google-PsZzwedr.cjs → adapters/google-6pofxIfm.cjs} +1 -1
  72. package/dist/{server/google-DRY7jnOh.js → adapters/google-BBBP1Dhs.js} +3 -0
  73. package/dist/adapters/{handler-DESp4wPg.js → handler-Cppe-aqH.js} +569 -374
  74. package/dist/adapters/handler-_u5krbOj.cjs +26 -0
  75. package/dist/adapters/hono/index.cjs +1 -1
  76. package/dist/adapters/hono/index.js +4 -4
  77. package/dist/adapters/mcp-tools.cjs +1 -1
  78. package/dist/adapters/mcp-tools.js +2 -2
  79. package/dist/adapters/mcp-transport-CpF7usmR.js +754 -0
  80. package/dist/adapters/mcp-transport-DXIfb0p-.cjs +42 -0
  81. package/dist/adapters/nextjs/index.cjs +1 -1
  82. package/dist/adapters/nextjs/index.js +5 -5
  83. package/dist/adapters/{openai-DK_KWiI7.js → openai-62sEF0Ev.js} +10 -4
  84. package/dist/adapters/{openai-BJyU4kvE.js → openai-BIoIunc7.js} +2 -2
  85. package/dist/adapters/openai-CaxNY6TC.cjs +1 -0
  86. package/dist/adapters/{openai-GO3M7Hwi.cjs → openai-EBTQKJnV.cjs} +2 -2
  87. package/dist/adapters/{utils-BhlkVCzZ.js → utils-C_RKaP0n.js} +2 -1
  88. package/dist/adapters/utils-DXWQUJbD.cjs +128 -0
  89. package/dist/adapters/utils.cjs +1 -1
  90. package/dist/adapters/utils.js +2 -2
  91. package/dist/cjs/client/components/AgenticNotebook/chatMessageParts.d.ts +0 -2
  92. package/dist/cjs/client/components/PortletGroupCard.d.ts +3 -1
  93. package/dist/cjs/client/components/RowManagedLayout.d.ts +5 -2
  94. package/dist/cjs/client/components/dashboardPortletCard/cardStyles.d.ts +7 -3
  95. package/dist/cjs/client/components/markdownOverrides.d.ts +202 -0
  96. package/dist/cjs/client/components/rowManagedLayout/sections.d.ts +46 -0
  97. package/dist/cjs/client/hooks/agentChatStream.d.ts +3 -2
  98. package/dist/cjs/client/hooks/useAgentChat.d.ts +1 -0
  99. package/dist/cjs/server/agent/agent-prompts.d.ts +14 -0
  100. package/dist/cjs/server/agent/chart-validation.d.ts +14 -0
  101. package/dist/cjs/server/agent/data-shape.d.ts +41 -0
  102. package/dist/cjs/server/agent/providers/anthropic.d.ts +1 -0
  103. package/dist/cjs/server/agent/providers/google.d.ts +1 -0
  104. package/dist/cjs/server/agent/providers/openai.d.ts +1 -0
  105. package/dist/cjs/server/agent/providers/types.d.ts +13 -0
  106. package/dist/cjs/server/agent/tools.d.ts +18 -4
  107. package/dist/cjs/server/agent/types.d.ts +5 -1
  108. package/dist/cjs/server/ai/chart-schema.d.ts +37 -0
  109. package/dist/client/charts.js +12 -12
  110. package/dist/client/chunks/{DashboardEditModal-BliiIHcI.js → DashboardEditModal-DjMGNTUa.js} +878 -785
  111. package/dist/client/chunks/DashboardEditModal-DjMGNTUa.js.map +1 -0
  112. package/dist/client/chunks/{DotStripChart-ChwsVeRU.js → DotStripChart-EEtJyV1v.js} +3 -3
  113. package/dist/client/chunks/{DotStripChart-ChwsVeRU.js.map → DotStripChart-EEtJyV1v.js.map} +1 -1
  114. package/dist/client/chunks/{ProportionBarChart-D-Qt9nkF.js → ProportionBarChart-3r7ZPX-V.js} +3 -3
  115. package/dist/client/chunks/{ProportionBarChart-D-Qt9nkF.js.map → ProportionBarChart-3r7ZPX-V.js.map} +1 -1
  116. package/dist/client/chunks/{RecordsTable-aG-QYXOH.js → RecordsTable-DvMXV6F6.js} +4 -4
  117. package/dist/client/chunks/{RecordsTable-aG-QYXOH.js.map → RecordsTable-DvMXV6F6.js.map} +1 -1
  118. package/dist/client/chunks/{RetentionCombinedChart-BRZ9w7ah.js → RetentionCombinedChart-DbxB86fj.js} +3 -3
  119. package/dist/client/chunks/{RetentionCombinedChart-BRZ9w7ah.js.map → RetentionCombinedChart-DbxB86fj.js.map} +1 -1
  120. package/dist/client/chunks/{RetentionHeatmap-LkTt89pK.js → RetentionHeatmap-CE3rxhAU.js} +2 -2
  121. package/dist/client/chunks/{RetentionHeatmap-LkTt89pK.js.map → RetentionHeatmap-CE3rxhAU.js.map} +1 -1
  122. package/dist/client/chunks/{analysis-builder-C0gJ3kDD.js → analysis-builder-lQk_qJBQ.js} +9 -9
  123. package/dist/client/chunks/{analysis-builder-C0gJ3kDD.js.map → analysis-builder-lQk_qJBQ.js.map} +1 -1
  124. package/dist/client/chunks/{analysis-builder-shared-dqcpl_WL.js → analysis-builder-shared-C_pLSXJR.js} +9 -9
  125. package/dist/client/chunks/{analysis-builder-shared-dqcpl_WL.js.map → analysis-builder-shared-C_pLSXJR.js.map} +1 -1
  126. package/dist/client/chunks/{chart-activity-grid-CJzxC18G.js → chart-activity-grid-UZIp9_2E.js} +3 -2
  127. package/dist/client/chunks/chart-activity-grid-UZIp9_2E.js.map +1 -0
  128. package/dist/client/chunks/{chart-area-C66dgy84.js → chart-area-CEBcvCcn.js} +2 -2
  129. package/dist/client/chunks/{chart-area-C66dgy84.js.map → chart-area-CEBcvCcn.js.map} +1 -1
  130. package/dist/client/chunks/{chart-bar-D9kiSOCT.js → chart-bar-DGh7cpU-.js} +3 -3
  131. package/dist/client/chunks/{chart-bar-D9kiSOCT.js.map → chart-bar-DGh7cpU-.js.map} +1 -1
  132. package/dist/client/chunks/{chart-box-plot-FsLIMisc.js → chart-box-plot-CeqoKPFa.js} +2 -2
  133. package/dist/client/chunks/{chart-box-plot-FsLIMisc.js.map → chart-box-plot-CeqoKPFa.js.map} +1 -1
  134. package/dist/client/chunks/{chart-bubble-BzyvrqKs.js → chart-bubble-8uH_JKNt.js} +2 -2
  135. package/dist/client/chunks/{chart-bubble-BzyvrqKs.js.map → chart-bubble-8uH_JKNt.js.map} +1 -1
  136. package/dist/client/chunks/{chart-candlestick-6lD35bLw.js → chart-candlestick-DogklMg1.js} +2 -2
  137. package/dist/client/chunks/{chart-candlestick-6lD35bLw.js.map → chart-candlestick-DogklMg1.js.map} +1 -1
  138. package/dist/client/chunks/{chart-data-table-Cou9qOab.js → chart-data-table-CCvvgeG_.js} +2 -2
  139. package/dist/client/chunks/{chart-data-table-Cou9qOab.js.map → chart-data-table-CCvvgeG_.js.map} +1 -1
  140. package/dist/client/chunks/{chart-funnel-B0775aaT.js → chart-funnel-D2vGQhaz.js} +2 -2
  141. package/dist/client/chunks/{chart-funnel-B0775aaT.js.map → chart-funnel-D2vGQhaz.js.map} +1 -1
  142. package/dist/client/chunks/{chart-gauge-pf-2E8w9.js → chart-gauge-DbU0rxqv.js} +3 -3
  143. package/dist/client/chunks/{chart-gauge-pf-2E8w9.js.map → chart-gauge-DbU0rxqv.js.map} +1 -1
  144. package/dist/client/chunks/{chart-heat-map-EzVGe6fl.js → chart-heat-map-x6aQq91x.js} +3 -3
  145. package/dist/client/chunks/{chart-heat-map-EzVGe6fl.js.map → chart-heat-map-x6aQq91x.js.map} +1 -1
  146. package/dist/client/chunks/{chart-kpi-delta-lfskDdx4.js → chart-kpi-delta-B2-m16QC.js} +3 -3
  147. package/dist/client/chunks/{chart-kpi-delta-lfskDdx4.js.map → chart-kpi-delta-B2-m16QC.js.map} +1 -1
  148. package/dist/client/chunks/{chart-kpi-number-BnsofbTf.js → chart-kpi-number-DggvlYT_.js} +5 -5
  149. package/dist/client/chunks/{chart-kpi-number-BnsofbTf.js.map → chart-kpi-number-DggvlYT_.js.map} +1 -1
  150. package/dist/client/chunks/{chart-kpi-text-U5EdmdkV.js → chart-kpi-text-BFy-m1NP.js} +3 -3
  151. package/dist/client/chunks/{chart-kpi-text-U5EdmdkV.js.map → chart-kpi-text-BFy-m1NP.js.map} +1 -1
  152. package/dist/client/chunks/{chart-line-IwXqPY80.js → chart-line-C4r44HWi.js} +3 -3
  153. package/dist/client/chunks/{chart-line-IwXqPY80.js.map → chart-line-C4r44HWi.js.map} +1 -1
  154. package/dist/client/chunks/{chart-markdown-yxN_xBP9.js → chart-markdown-b0qPZ617.js} +3 -3
  155. package/dist/client/chunks/chart-markdown-b0qPZ617.js.map +1 -0
  156. package/dist/client/chunks/{chart-measure-profile-Bs4vhBJQ.js → chart-measure-profile-Dc-d82kF.js} +3 -3
  157. package/dist/client/chunks/{chart-measure-profile-Bs4vhBJQ.js.map → chart-measure-profile-Dc-d82kF.js.map} +1 -1
  158. package/dist/client/chunks/{chart-pie-LDJfDXfX.js → chart-pie-BHrPxga2.js} +3 -3
  159. package/dist/client/chunks/{chart-pie-LDJfDXfX.js.map → chart-pie-BHrPxga2.js.map} +1 -1
  160. package/dist/client/chunks/{chart-radar-BZY6TP9m.js → chart-radar-I9sOFbG5.js} +3 -3
  161. package/dist/client/chunks/{chart-radar-BZY6TP9m.js.map → chart-radar-I9sOFbG5.js.map} +1 -1
  162. package/dist/client/chunks/{chart-radial-bar-aga05X7h.js → chart-radial-bar-DeDMMf9P.js} +3 -3
  163. package/dist/client/chunks/{chart-radial-bar-aga05X7h.js.map → chart-radial-bar-DeDMMf9P.js.map} +1 -1
  164. package/dist/client/chunks/{chart-sankey-MRCoWFd4.js → chart-sankey-1qB7yWHq.js} +2 -2
  165. package/dist/client/chunks/{chart-sankey-MRCoWFd4.js.map → chart-sankey-1qB7yWHq.js.map} +1 -1
  166. package/dist/client/chunks/{chart-scatter-DP-nn9hH.js → chart-scatter-BHttSxcc.js} +3 -3
  167. package/dist/client/chunks/{chart-scatter-DP-nn9hH.js.map → chart-scatter-BHttSxcc.js.map} +1 -1
  168. package/dist/client/chunks/{chart-sunburst-DE4EX7zi.js → chart-sunburst-Cmzol8kR.js} +3 -3
  169. package/dist/client/chunks/{chart-sunburst-DE4EX7zi.js.map → chart-sunburst-Cmzol8kR.js.map} +1 -1
  170. package/dist/client/chunks/{chart-tree-map-C3O6uQcP.js → chart-tree-map-CdSwr_zI.js} +3 -3
  171. package/dist/client/chunks/{chart-tree-map-C3O6uQcP.js.map → chart-tree-map-CdSwr_zI.js.map} +1 -1
  172. package/dist/client/chunks/{chart-waterfall-DU2Fg_7P.js → chart-waterfall-BN3B5luW.js} +3 -3
  173. package/dist/client/chunks/{chart-waterfall-DU2Fg_7P.js.map → chart-waterfall-BN3B5luW.js.map} +1 -1
  174. package/dist/client/chunks/{charts-core-DnirPG1F.js → charts-core-DIneMirc.js} +2 -2
  175. package/dist/client/chunks/{charts-core-DnirPG1F.js.map → charts-core-DIneMirc.js.map} +1 -1
  176. package/dist/client/chunks/charts-loader-OHpTBq8c.js +87 -0
  177. package/dist/client/chunks/{charts-loader-tCSbqT7H.js.map → charts-loader-OHpTBq8c.js.map} +1 -1
  178. package/dist/client/chunks/{nl-NL-B9VnaVAm.js → nl-NL-dk-kC0sL.js} +2 -1
  179. package/dist/client/chunks/nl-NL-dk-kC0sL.js.map +1 -0
  180. package/dist/client/chunks/{schema-visualization-o1zzuMQy.js → schema-visualization-PYa578pV.js} +3 -3
  181. package/dist/client/chunks/{schema-visualization-o1zzuMQy.js.map → schema-visualization-PYa578pV.js.map} +1 -1
  182. package/dist/client/chunks/{useDirtyStateTracking-DTYbmRBn.js → useDirtyStateTracking-BQupC3wJ.js} +4 -4
  183. package/dist/client/chunks/{useDirtyStateTracking-DTYbmRBn.js.map → useDirtyStateTracking-BQupC3wJ.js.map} +1 -1
  184. package/dist/client/chunks/{useExplainAI-MuC9jBn-.js → useExplainAI-DORnTynt.js} +4 -4
  185. package/dist/client/chunks/{useExplainAI-MuC9jBn-.js.map → useExplainAI-DORnTynt.js.map} +1 -1
  186. package/dist/client/chunks/{vendor-XQT9APIq.js → vendor-DDo8nSGP.js} +2 -2
  187. package/dist/client/chunks/{vendor-XQT9APIq.js.map → vendor-DDo8nSGP.js.map} +1 -1
  188. package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +0 -2
  189. package/dist/client/components/PortletGroupCard.d.ts +3 -1
  190. package/dist/client/components/RowManagedLayout.d.ts +5 -2
  191. package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +7 -3
  192. package/dist/client/components/markdownOverrides.d.ts +202 -0
  193. package/dist/client/components/rowManagedLayout/sections.d.ts +46 -0
  194. package/dist/client/components.js +1 -1
  195. package/dist/client/hooks/agentChatStream.d.ts +3 -2
  196. package/dist/client/hooks/useAgentChat.d.ts +1 -0
  197. package/dist/client/hooks.js +3 -3
  198. package/dist/client/icons.js +1 -1
  199. package/dist/client/index.js +474 -471
  200. package/dist/client/index.js.map +1 -1
  201. package/dist/client/providers.js +1 -1
  202. package/dist/client/schema.js +1 -1
  203. package/dist/client/styles.css +1 -1
  204. package/dist/client/utils.js +4 -4
  205. package/dist/client-bundle-stats.html +1 -1
  206. package/dist/mcp-app/mcp-app.html +4 -4
  207. package/dist/server/agent/agent-prompts.d.ts +14 -0
  208. package/dist/server/agent/chart-validation.d.ts +14 -0
  209. package/dist/server/agent/data-shape.d.ts +41 -0
  210. package/dist/server/agent/providers/anthropic.d.ts +1 -0
  211. package/dist/server/agent/providers/google.d.ts +1 -0
  212. package/dist/server/agent/providers/openai.d.ts +1 -0
  213. package/dist/server/agent/providers/types.d.ts +13 -0
  214. package/dist/server/agent/tools.d.ts +18 -4
  215. package/dist/server/agent/types.d.ts +5 -1
  216. package/dist/server/ai/chart-schema.d.ts +37 -0
  217. package/dist/server/{anthropic-DG4r1LSm.cjs → anthropic-CqLkud62.cjs} +1 -1
  218. package/dist/server/{anthropic-CZh4hB-m.js → anthropic-MQlafOZv.js} +3 -0
  219. package/dist/{adapters/google-PsZzwedr.cjs → server/google-6pofxIfm.cjs} +1 -1
  220. package/dist/{adapters/google-DRY7jnOh.js → server/google-BBBP1Dhs.js} +3 -0
  221. package/dist/server/index.cjs +44 -43
  222. package/dist/server/index.js +2069 -1857
  223. package/dist/server/{openai-6uUf7h-5.js → openai-nBhuSFd3.js} +9 -3
  224. package/dist/server/openai-rF50ZEiR.cjs +1 -0
  225. package/package.json +4 -4
  226. package/dist/adapters/ActivityGridChart.config-Bc7mPqcf.cjs +0 -1
  227. package/dist/adapters/ActivityGridChart.config-Dd2YDeaM.js +0 -2
  228. package/dist/adapters/AreaChart.config-BqNusnpg.js +0 -2
  229. package/dist/adapters/AreaChart.config-dI84V34B.cjs +0 -1
  230. package/dist/adapters/BarChart.config-B9MQjgLJ.cjs +0 -1
  231. package/dist/adapters/BarChart.config-Cq_qcxBA.js +0 -2
  232. package/dist/adapters/BoxPlotChart.config-XmtRN2xq.cjs +0 -1
  233. package/dist/adapters/BoxPlotChart.config-Zc-JGV-W.js +0 -2
  234. package/dist/adapters/BubbleChart.config-CU_18uxb.js +0 -2
  235. package/dist/adapters/BubbleChart.config-CbhOzA6-.cjs +0 -1
  236. package/dist/adapters/CandlestickChart.config-Bwo3uaa-.js +0 -2
  237. package/dist/adapters/CandlestickChart.config-CmRBlWFv.cjs +0 -1
  238. package/dist/adapters/DataTable.config-7JNSj6qQ.js +0 -2
  239. package/dist/adapters/DataTable.config-DNxm1sYk.cjs +0 -1
  240. package/dist/adapters/DotStripChart.config-B7Dl-T1h.js +0 -2
  241. package/dist/adapters/DotStripChart.config-Co4g1fpZ.cjs +0 -1
  242. package/dist/adapters/FunnelChart.config-D1TpuGtL.cjs +0 -1
  243. package/dist/adapters/FunnelChart.config-vuZScOHQ.js +0 -2
  244. package/dist/adapters/GaugeChart.config-BMgUHKhC.cjs +0 -1
  245. package/dist/adapters/GaugeChart.config-zdpFydo6.js +0 -2
  246. package/dist/adapters/HeatMapChart.config-4XMab1zq.js +0 -2
  247. package/dist/adapters/HeatMapChart.config-C-Ns6QBq.cjs +0 -1
  248. package/dist/adapters/KpiDelta.config-BGdqsHcc.js +0 -2
  249. package/dist/adapters/KpiDelta.config-DuNxrGIi.cjs +0 -1
  250. package/dist/adapters/KpiNumber.config-CkPWpcSz.js +0 -2
  251. package/dist/adapters/KpiNumber.config-DMGmuA3i.cjs +0 -1
  252. package/dist/adapters/KpiText.config-Bvtuv8vE.js +0 -2
  253. package/dist/adapters/KpiText.config-DOMLO16U.cjs +0 -1
  254. package/dist/adapters/LineChart.config-CJmTSmZ1.js +0 -2
  255. package/dist/adapters/LineChart.config-CrkGu0aa.cjs +0 -1
  256. package/dist/adapters/MarkdownChart.config-BgY5Xc97.cjs +0 -1
  257. package/dist/adapters/MarkdownChart.config-Cm6G4Yuh.js +0 -2
  258. package/dist/adapters/MeasureProfileChart.config-BYwDo_ox.cjs +0 -1
  259. package/dist/adapters/MeasureProfileChart.config-Dt7npubZ.js +0 -2
  260. package/dist/adapters/PieChart.config-BRbPctBN.cjs +0 -1
  261. package/dist/adapters/PieChart.config-HZofeody.js +0 -2
  262. package/dist/adapters/ProportionBarChart.config-B_rTtGZr.cjs +0 -1
  263. package/dist/adapters/ProportionBarChart.config-ChCSoM0L.js +0 -2
  264. package/dist/adapters/RadarChart.config-B9OdMEib.js +0 -2
  265. package/dist/adapters/RadarChart.config-BOgPD2Kz.cjs +0 -1
  266. package/dist/adapters/RadialBarChart.config-CeP7jEbq.js +0 -2
  267. package/dist/adapters/RadialBarChart.config-sivA1Jmo.cjs +0 -1
  268. package/dist/adapters/RecordsTable.config-BInSgo-G.js +0 -2
  269. package/dist/adapters/RecordsTable.config-CVmxLdjz.cjs +0 -1
  270. package/dist/adapters/RetentionCombinedChart.config-8ry7gh6X.cjs +0 -1
  271. package/dist/adapters/RetentionCombinedChart.config-Bxtxnlcf.js +0 -2
  272. package/dist/adapters/RetentionHeatmap.config-DCtOD8dO.js +0 -2
  273. package/dist/adapters/RetentionHeatmap.config-i-LgmmIT.cjs +0 -1
  274. package/dist/adapters/SankeyChart.config-DfpeHfNT.cjs +0 -1
  275. package/dist/adapters/SankeyChart.config-hfM0ACm1.js +0 -2
  276. package/dist/adapters/ScatterChart.config-BD2vfOZ6.js +0 -2
  277. package/dist/adapters/ScatterChart.config-CdpvRueF.cjs +0 -1
  278. package/dist/adapters/SunburstChart.config-Boyt88L_.cjs +0 -1
  279. package/dist/adapters/SunburstChart.config-BvrofzMv.js +0 -2
  280. package/dist/adapters/TreeMapChart.config-DBrqwtqT.js +0 -2
  281. package/dist/adapters/TreeMapChart.config-KcRLlZAG.cjs +0 -1
  282. package/dist/adapters/WaterfallChart.config-CuCGaIl5.cjs +0 -1
  283. package/dist/adapters/WaterfallChart.config-DZ8H0V2L.js +0 -2
  284. package/dist/adapters/compiler-DG6dLFQU.cjs +0 -166
  285. package/dist/adapters/handler-CRGZ8gd2.cjs +0 -25
  286. package/dist/adapters/mcp-transport-BqdBHmXL.js +0 -730
  287. package/dist/adapters/mcp-transport-D8xZJLPD.cjs +0 -42
  288. package/dist/adapters/openai-DH9MtcLA.cjs +0 -1
  289. package/dist/adapters/utils-C1JpSDOX.cjs +0 -128
  290. package/dist/client/chunks/DashboardEditModal-BliiIHcI.js.map +0 -1
  291. package/dist/client/chunks/chart-activity-grid-CJzxC18G.js.map +0 -1
  292. package/dist/client/chunks/chart-markdown-yxN_xBP9.js.map +0 -1
  293. package/dist/client/chunks/charts-loader-tCSbqT7H.js +0 -87
  294. package/dist/client/chunks/nl-NL-B9VnaVAm.js.map +0 -1
  295. package/dist/server/openai-BBe1XbZd.cjs +0 -1
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Notebook-agent prompt fragments.
3
+ *
4
+ * The agent used to inline `MCP_GUIDE_PROMPT` from `../ai/mcp-prompts.js`, which
5
+ * documents the MCP transport's `discover` / `validate` / `load` tools. Those
6
+ * are real tools — over MCP. The notebook agent has a different set entirely, so
7
+ * the guide was naming tools it cannot call.
8
+ *
9
+ * `MCP_GUIDE_PROMPT` stays as it is: it is a public export and is served through
10
+ * `ALL_PROMPTS`, so real MCP clients depend on it. This is the agent's own copy.
11
+ * `QUERY_LANGUAGE_PROMPT` and `DATE_FILTERING_PROMPT` remain shared — they name
12
+ * no tools and are correct for both.
13
+ */
14
+ export declare const AGENT_WORKFLOW_GUIDE: string;
@@ -13,6 +13,20 @@ interface ValidationResult {
13
13
  * Validate chartConfig against the chart type's drop zone requirements.
14
14
  */
15
15
  export declare function validateChartConfig(chartType: string, chartConfig: Record<string, unknown> | undefined, query: Record<string, unknown>): ValidationResult;
16
+ /**
17
+ * Pick a chart type that can actually render the query.
18
+ *
19
+ * A `bar` over a measures-only query has no category axis: `resolveChartAxisFields`
20
+ * reports `axisInvalid` and the portlet renders a config-error card. Rejecting it
21
+ * instead costs the model a full query+portlet rebuild, so swap to a type that
22
+ * shows the same numbers and tell it what happened.
23
+ *
24
+ * The note is model-facing, not user-facing, so it is deliberately not translated.
25
+ */
26
+ export declare function resolveChartTypeFallback(chartType: string, chartConfig: Record<string, unknown> | undefined, query: Record<string, unknown>): {
27
+ chartType: string;
28
+ note?: string;
29
+ };
16
30
  export declare function inferChartConfig(chartType: string, chartConfig: Record<string, unknown> | undefined, query: Record<string, unknown>): Record<string, unknown>;
17
31
  /**
18
32
  * Build per-chart-type requirements text for the agent tool description.
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Data-shape summary for the agent's `execute_query` results.
3
+ *
4
+ * The agent used to receive every row and no summary, so it chose a chart type
5
+ * blind and then spent its context — and its output-token budget — on raw data.
6
+ * A per-field summary is what the chart decision actually needs: how many
7
+ * distinct categories there are, and whether measures share a scale.
8
+ */
9
+ /** How many rows of the result set are handed back to the model. */
10
+ export declare const AGENT_RESULT_ROW_LIMIT = 25;
11
+ /** Per-field summary of a query result. */
12
+ export interface FieldShape {
13
+ field: string;
14
+ kind: 'measure' | 'dimension' | 'timeDimension';
15
+ type?: string;
16
+ /** Distinct non-null values seen. Capped at the rows inspected. */
17
+ distinctCount: number;
18
+ nullCount: number;
19
+ /** Numeric range, present only when every non-null value is a number. */
20
+ min?: number;
21
+ max?: number;
22
+ }
23
+ interface ResultAnnotation {
24
+ measures?: Record<string, {
25
+ type?: string;
26
+ }>;
27
+ dimensions?: Record<string, {
28
+ type?: string;
29
+ }>;
30
+ timeDimensions?: Record<string, {
31
+ type?: string;
32
+ }>;
33
+ }
34
+ /**
35
+ * Build a per-field summary of a query result.
36
+ *
37
+ * Computed from the rows handed to the model, so `distinctCount` is a floor
38
+ * rather than an exact count when the result was truncated.
39
+ */
40
+ export declare function summariseDataShape(rows: Record<string, unknown>[], annotation: ResultAnnotation | undefined): FieldShape[];
41
+ export {};
@@ -20,5 +20,6 @@ export declare class AnthropicProvider implements LLMProvider {
20
20
  };
21
21
  formatToolResults(results: ToolResult[]): unknown;
22
22
  shouldContinue(stopReason: string): boolean;
23
+ isTruncated(stopReason: string): boolean;
23
24
  formatError(error: unknown): string;
24
25
  }
@@ -19,5 +19,6 @@ export declare class GoogleProvider implements LLMProvider {
19
19
  };
20
20
  formatToolResults(results: ToolResult[]): unknown;
21
21
  shouldContinue(stopReason: string): boolean;
22
+ isTruncated(stopReason: string): boolean;
22
23
  formatError(error: unknown): string;
23
24
  }
@@ -22,5 +22,6 @@ export declare class OpenAIProvider implements LLMProvider {
22
22
  };
23
23
  formatToolResults(results: ToolResult[]): unknown[];
24
24
  shouldContinue(stopReason: string): boolean;
25
+ isTruncated(stopReason: string): boolean;
25
26
  formatError(error: unknown): string;
26
27
  }
@@ -31,6 +31,12 @@ export interface ContentBlock {
31
31
  input?: Record<string, unknown>;
32
32
  /** Provider-specific metadata (e.g. Gemini thoughtSignature) */
33
33
  metadata?: Record<string, unknown>;
34
+ /**
35
+ * Set when the tool-call arguments could not be parsed as JSON. The handler
36
+ * returns an error tool_result instead of executing the tool with an empty
37
+ * input — running on `{}` silently produced empty notebook blocks.
38
+ */
39
+ inputParseError?: boolean;
34
40
  }
35
41
  export interface ToolResult {
36
42
  toolUseId: string;
@@ -58,6 +64,7 @@ export type NormalizedEvent = {
58
64
  type: 'tool_use_end';
59
65
  id?: string;
60
66
  input?: Record<string, unknown>;
67
+ parseError?: boolean;
61
68
  } | {
62
69
  type: 'message_meta';
63
70
  inputTokens?: number;
@@ -90,6 +97,12 @@ export interface LLMProvider {
90
97
  formatToolResults(results: ToolResult[]): unknown;
91
98
  /** Return true if the stop reason means the model wants to continue (tool use). */
92
99
  shouldContinue(stopReason: string): boolean;
100
+ /**
101
+ * Return true if the stop reason means the response was cut off by the output
102
+ * token limit rather than finished. Without this the loop breaks silently and
103
+ * the notebook just stops mid-analysis.
104
+ */
105
+ isTruncated(stopReason: string): boolean;
93
106
  /** Format a provider-specific error into a user-friendly message. */
94
107
  formatError(error: unknown): string;
95
108
  }
@@ -1,3 +1,4 @@
1
+ import { BuiltInChartType } from '../../client/types.js';
1
2
  import { SemanticLayerCompiler } from '../compiler.js';
2
3
  import { SecurityContext } from '../types/index.js';
3
4
  import { AgentSSEEvent } from './types.js';
@@ -13,15 +14,28 @@ export interface ToolExecutionResult {
13
14
  /** Optional SSE event to emit as a side effect (add_portlet, add_markdown) */
14
15
  sideEffect?: AgentSSEEvent;
15
16
  }
17
+ /**
18
+ * Chart types the notebook agent may create — an explicit list, not a derived
19
+ * one, so widening it stays a product decision. It now covers every
20
+ * `BuiltInChartType`: the config each one needs is expressible through the
21
+ * `add_portlet` chartConfig/displayConfig schema below, and a narrower list was
22
+ * making the agent reach for `bar` and `table` for everything.
23
+ *
24
+ * Two carry caveats the system prompt spells out rather than the schema:
25
+ * `gauge` needs an explicit `maxValue` (it otherwise scales to the data and
26
+ * reads as 100%), and `candlestick` needs its measures in OHLC order, which
27
+ * JSON Schema cannot express.
28
+ *
29
+ * Typed against `BuiltInChartType` (type-only import — no runtime dependency on
30
+ * the client graph) so a renamed or removed chart type fails `npm run typecheck`
31
+ * here instead of silently offering the model a type that no longer renders.
32
+ */
33
+ export declare const AGENT_ALLOWED_CHART_TYPES: BuiltInChartType[];
16
34
  /**
17
35
  * Returns the array of tool definitions for the Anthropic Messages API.
18
36
  * Plain JSON schema — no Zod dependency.
19
37
  */
20
38
  export declare function getToolDefinitions(): ToolDefinition[];
21
- /**
22
- * Create a tool executor map that closes over the semantic layer and security context.
23
- * Returns a Map<toolName, handler> where each handler takes parsed input and returns a result.
24
- */
25
39
  export declare function createToolExecutor(options: {
26
40
  semanticLayer: SemanticLayerCompiler;
27
41
  securityContext: SecurityContext;
@@ -100,7 +100,7 @@ export interface AgentConfig {
100
100
  model?: string;
101
101
  /** Maximum agentic turns per request (default: 25) */
102
102
  maxTurns?: number;
103
- /** Maximum tokens per response (default: 4096) */
103
+ /** Maximum tokens per response (default: 8192) */
104
104
  maxTokens?: number;
105
105
  /** Allow X-Agent-Api-Key header to override server apiKey */
106
106
  allowClientApiKey?: boolean;
@@ -163,12 +163,16 @@ export type AgentSSEEvent = {
163
163
  data: {
164
164
  id: string;
165
165
  name: string;
166
+ input?: unknown;
166
167
  result?: unknown;
167
168
  isError?: boolean;
168
169
  };
169
170
  } | {
170
171
  type: 'add_portlet';
171
172
  data: PortletBlockData;
173
+ } | {
174
+ type: 'update_portlet';
175
+ data: PortletBlockData;
172
176
  } | {
173
177
  type: 'add_markdown';
174
178
  data: MarkdownBlockData;
@@ -11,6 +11,43 @@
11
11
  * never guessed from the data, so a model that cannot see this shape produces a
12
12
  * listing of unformatted strings.
13
13
  */
14
+ /**
15
+ * `chartConfig` fields for the charts whose mandatory drop zones are not the
16
+ * usual axes. Without these the model cannot state them at all: `heatmap` needs
17
+ * a `valueField` to colour its cells, and `activityGrid` lays itself out from a
18
+ * date field plus a value field. Both were only ever filled by inference.
19
+ */
20
+ export declare const FIELD_ZONE_CHART_CONFIG_SCHEMA: {
21
+ readonly valueField: {
22
+ readonly type: "array";
23
+ readonly items: {
24
+ readonly type: "string";
25
+ };
26
+ readonly description: "heatmap and activityGrid: single measure driving cell colour intensity. Required for both — the chart renders empty without it.";
27
+ };
28
+ readonly dateField: {
29
+ readonly type: "array";
30
+ readonly items: {
31
+ readonly type: "string";
32
+ };
33
+ readonly description: "activityGrid only: single time dimension laying out the grid. Query it with day granularity over several months, or the grid has nothing to show.";
34
+ };
35
+ };
36
+ /** `displayConfig` fields for charts that need an explicit scale or template. */
37
+ export declare const SCALE_DISPLAY_CONFIG_SCHEMA: {
38
+ readonly minValue: {
39
+ readonly type: "number";
40
+ readonly description: "gauge only: scale minimum (defaults to 0).";
41
+ };
42
+ readonly maxValue: {
43
+ readonly type: "number";
44
+ readonly description: "gauge only: scale maximum. ALWAYS set this — without it the gauge scales to the data it was given, so a single value always reads as 100%.";
45
+ };
46
+ readonly template: {
47
+ readonly type: "string";
48
+ readonly description: "kpiText only: sentence template around the value, e.g. \"${fieldLabel}: ${value}\". Defaults to that if omitted.";
49
+ };
50
+ };
14
51
  /** `chartConfig` fields specific to the records table. */
15
52
  export declare const RECORDS_TABLE_CHART_CONFIG_SCHEMA: {
16
53
  readonly columns: {
@@ -1 +1 @@
1
- var e=class{client;constructor(e){this.apiKey=e}apiKey;initialized=!1;async ensureClient(){if(this.initialized)return;let e;try{let t=await import(`@anthropic-ai/sdk`);e=t.default||t.Anthropic||t}catch{throw Error(`@anthropic-ai/sdk is required for the Anthropic provider. Install it with: npm install @anthropic-ai/sdk`)}this.client=new e({apiKey:this.apiKey}),this.initialized=!0}async createStream(e){await this.ensureClient();let{messages:t,system:n}=this.formatMessages(e.messages,e.system);return this.client.messages.create({model:e.model,max_tokens:e.maxTokens,system:n,tools:this.formatTools(e.tools),messages:t,stream:!0})}async*parseStreamEvents(e){for await(let t of e){let e=t;switch(e.type){case`content_block_start`:{let t=e.content_block;t.type===`tool_use`&&(yield{type:`tool_use_start`,id:t.id,name:t.name});break}case`content_block_delta`:{let t=e.delta;t.type===`text_delta`&&t.text?yield{type:`text_delta`,text:t.text}:t.type===`input_json_delta`&&t.partial_json&&(yield{type:`tool_input_delta`,json:t.partial_json});break}case`content_block_stop`:yield{type:`tool_use_end`};break;case`message_start`:{let t=e.message;t?.usage?.input_tokens!=null&&(yield{type:`message_meta`,inputTokens:t.usage.input_tokens,stopReason:``});break}case`message_delta`:{let t=e.usage,n=e.delta?.stop_reason||``;yield{type:`message_meta`,outputTokens:t?.output_tokens,stopReason:n};break}}}}formatTools(e){return e.map(e=>({name:e.name,description:e.description,input_schema:e.parameters}))}formatMessages(e,t){return{messages:e.map(e=>e.role===`tool_result`?{role:`user`,content:e.content}:{role:e.role,content:e.content}),system:t}}formatToolResults(e){return{role:`user`,content:e.map(e=>({type:`tool_result`,tool_use_id:e.toolUseId,content:e.content,...e.isError?{is_error:!0}:{}}))}}shouldContinue(e){return e===`tool_use`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n={overloaded_error:`The AI service is temporarily overloaded. Please try again in a moment.`,rate_limit_error:`Too many requests. Please wait a moment and try again.`,api_error:`The AI service encountered an error. Please try again.`,authentication_error:`Authentication failed. Please check your API key configuration.`,invalid_request_error:`There was a problem with the request. Please try again.`},r=e;if(r.status||r.type){let e=r.error?.type||r.type||``;if(n[e])return n[e]}if(t.startsWith(`{`)||t.startsWith(`Error: {`)){try{let e=JSON.parse(t.replace(/^Error:\s*/,``)),r=e.error?.type||e.type||``;if(n[r])return n[r]}catch{}return`The AI service encountered an error. Please try again.`}return t}};exports.AnthropicProvider=e;
1
+ var e=class{client;constructor(e){this.apiKey=e}apiKey;initialized=!1;async ensureClient(){if(this.initialized)return;let e;try{let t=await import(`@anthropic-ai/sdk`);e=t.default||t.Anthropic||t}catch{throw Error(`@anthropic-ai/sdk is required for the Anthropic provider. Install it with: npm install @anthropic-ai/sdk`)}this.client=new e({apiKey:this.apiKey}),this.initialized=!0}async createStream(e){await this.ensureClient();let{messages:t,system:n}=this.formatMessages(e.messages,e.system);return this.client.messages.create({model:e.model,max_tokens:e.maxTokens,system:n,tools:this.formatTools(e.tools),messages:t,stream:!0})}async*parseStreamEvents(e){for await(let t of e){let e=t;switch(e.type){case`content_block_start`:{let t=e.content_block;t.type===`tool_use`&&(yield{type:`tool_use_start`,id:t.id,name:t.name});break}case`content_block_delta`:{let t=e.delta;t.type===`text_delta`&&t.text?yield{type:`text_delta`,text:t.text}:t.type===`input_json_delta`&&t.partial_json&&(yield{type:`tool_input_delta`,json:t.partial_json});break}case`content_block_stop`:yield{type:`tool_use_end`};break;case`message_start`:{let t=e.message;t?.usage?.input_tokens!=null&&(yield{type:`message_meta`,inputTokens:t.usage.input_tokens,stopReason:``});break}case`message_delta`:{let t=e.usage,n=e.delta?.stop_reason||``;yield{type:`message_meta`,outputTokens:t?.output_tokens,stopReason:n};break}}}}formatTools(e){return e.map(e=>({name:e.name,description:e.description,input_schema:e.parameters}))}formatMessages(e,t){return{messages:e.map(e=>e.role===`tool_result`?{role:`user`,content:e.content}:{role:e.role,content:e.content}),system:t}}formatToolResults(e){return{role:`user`,content:e.map(e=>({type:`tool_result`,tool_use_id:e.toolUseId,content:e.content,...e.isError?{is_error:!0}:{}}))}}shouldContinue(e){return e===`tool_use`}isTruncated(e){return e===`max_tokens`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n={overloaded_error:`The AI service is temporarily overloaded. Please try again in a moment.`,rate_limit_error:`Too many requests. Please wait a moment and try again.`,api_error:`The AI service encountered an error. Please try again.`,authentication_error:`Authentication failed. Please check your API key configuration.`,invalid_request_error:`There was a problem with the request. Please try again.`},r=e;if(r.status||r.type){let e=r.error?.type||r.type||``;if(n[e])return n[e]}if(t.startsWith(`{`)||t.startsWith(`Error: {`)){try{let e=JSON.parse(t.replace(/^Error:\s*/,``)),r=e.error?.type||e.type||``;if(n[r])return n[r]}catch{}return`The AI service encountered an error. Please try again.`}return t}};exports.AnthropicProvider=e;
@@ -113,6 +113,9 @@ var e = class {
113
113
  shouldContinue(e) {
114
114
  return e === "tool_use";
115
115
  }
116
+ isTruncated(e) {
117
+ return e === "max_tokens";
118
+ }
116
119
  formatError(e) {
117
120
  if (!e || !(e instanceof Error)) return "Something went wrong. Please try again.";
118
121
  let t = e.message || "", n = {
@@ -1,2 +1,2 @@
1
1
  function e(n,r=0){if(!n||typeof n!=`object`)return`value`;let i=n,a=i.enum;if(Array.isArray(a)&&a.length>0)return a.map(e=>typeof e==`string`?`"${e}"`:String(e)).join(`|`);let o=typeof i.type==`string`?i.type.toLowerCase():`value`;if(o===`array`)return r>=t?`array`:`array of ${e(i.items,r+1)}`;if(o===`object`){let n=i.properties;if(!n||r>=t)return`object`;let a=new Set(Array.isArray(i.required)?i.required:[]);return`{ ${Object.entries(n).map(([t,n])=>{let i=a.has(t)?` (required)`:``;return`${t}: ${e(n,r+1)}${i}`}).join(`, `)} }`}return o}var t=3;function n(t){let r={},i=[];for(let[a,o]of Object.entries(t))if(a===`type`&&typeof o==`string`)r[a]=o.toUpperCase();else if(a===`properties`&&typeof o==`object`&&o){let e={};for(let[t,r]of Object.entries(o))e[t]=typeof r==`object`&&r?n(r):r;r[a]=e}else a===`items`&&typeof o==`object`&&o?r[a]=n(o):(a===`anyOf`||a===`oneOf`||a===`allOf`)&&Array.isArray(o)?r[a]=o.map(e=>e&&typeof e==`object`?n(e):e):a===`additionalProperties`?o&&typeof o==`object`&&i.push(`Each value is: ${e(o)}.`):a===`enum`&&Array.isArray(o)&&o.some(e=>typeof e!=`string`)?i.push(`Allowed values: ${o.join(`, `)}.`):r[a]=o;return i.length>0&&(r.description=[typeof r.description==`string`?r.description:``,...i].filter(Boolean).join(` `)),r}function r(e){return e===`STOP`?`stop`:e===`MAX_TOKENS`?`max_tokens`:e}function*i(e){if(e.text&&!e.thought&&(yield{type:`text_delta`,text:e.text}),e.functionCall){let t=`gemini-tc-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,n=e.thoughtSignature?{thoughtSignature:e.thoughtSignature}:void 0;yield{type:`tool_use_start`,id:t,name:e.functionCall.name,...n?{metadata:n}:{}},yield{type:`tool_input_delta`,json:JSON.stringify(e.functionCall.args||{})},yield{type:`tool_use_end`}}}function a(e){let t=e._toolResults;if(t&&t.length>0)return{role:`user`,parts:t.map(e=>({functionResponse:{name:e.toolName||e.toolUseId,response:{content:e.content,isError:e.isError||!1}}}))};let n=typeof e.content==`string`?e.content:JSON.stringify(e.content);return n?{role:`user`,parts:[{text:n}]}:null}function o(e){let t=[];for(let n of e)if(n.type===`text`&&n.text)t.push({text:n.text});else if(n.type===`tool_use`){let e={functionCall:{name:n.name,args:n.input||{}}};n.metadata?.thoughtSignature&&(e.thoughtSignature=n.metadata.thoughtSignature),t.push(e)}return t}function s(e){if(e.role===`tool_result`)return a(e);if(e.role===`user`)return{role:`user`,parts:[{text:typeof e.content==`string`?e.content:JSON.stringify(e.content)}]};if(e.role===`assistant`){if(typeof e.content==`string`)return{role:`model`,parts:[{text:e.content}]};let t=o(e.content);return t.length>0?{role:`model`,parts:t}:null}return null}var c=class{apiKey;sdk;initialized=!1;constructor(e){this.apiKey=e}async ensureSDK(){if(!this.initialized){try{this.sdk=await Promise.resolve().then(()=>require("./dist-CohrBmKe.cjs"))}catch{throw Error(`@google/generative-ai is required for the Google provider. Install it with: npm install @google/generative-ai`)}this.initialized=!0}}async createStream(e){await this.ensureSDK();let{GoogleGenerativeAI:t}=this.sdk,n=new t(this.apiKey).getGenerativeModel({model:e.model,systemInstruction:e.system,generationConfig:{maxOutputTokens:e.maxTokens}}),{messages:r}=this.formatMessages(e.messages,e.system),i=this.formatTools(e.tools);return(await n.generateContentStream({contents:r,tools:i.length>0?[{functionDeclarations:i}]:void 0})).stream}async*parseStreamEvents(e){let t=`stop`,n=!1;for await(let a of e){let e=a;e.usageMetadata&&(yield{type:`message_meta`,inputTokens:e.usageMetadata.promptTokenCount,outputTokens:e.usageMetadata.candidatesTokenCount,stopReason:``});let o=e.candidates?.[0];if(!o)continue;o.finishReason&&(t=r(o.finishReason));let s=o.content?.parts;if(s)for(let e of s)for(let t of i(e))t.type===`tool_use_start`&&(n=!0),yield t}yield{type:`message_meta`,stopReason:n?`tool_use`:t}}formatTools(e){return e.map(e=>({name:e.name,description:e.description,parameters:n(e.parameters)}))}formatMessages(e,t){let n=[];for(let t of e){let e=s(t);e&&n.push(e)}return{messages:n}}formatToolResults(e){return{role:`tool_result`,content:e.map(e=>`${e.toolName||e.toolUseId}: ${e.content}`).join(`
2
- `),_toolResults:e}}shouldContinue(e){return e===`tool_use`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===403||n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===500?`The AI service is temporarily unavailable. Please try again in a moment.`:t.includes(`SAFETY`)?`The request was blocked by safety filters. Please rephrase your request.`:t.includes(`RECITATION`)?`The response was blocked due to recitation concerns. Please try a different query.`:t.startsWith(`{`)||t.startsWith(`[`)?`The AI service encountered an error. Please try again.`:t}};exports.GoogleProvider=c;
2
+ `),_toolResults:e}}shouldContinue(e){return e===`tool_use`}isTruncated(e){return e===`max_tokens`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===403||n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===500?`The AI service is temporarily unavailable. Please try again in a moment.`:t.includes(`SAFETY`)?`The request was blocked by safety filters. Please rephrase your request.`:t.includes(`RECITATION`)?`The response was blocked due to recitation concerns. Please try a different query.`:t.startsWith(`{`)||t.startsWith(`[`)?`The AI service encountered an error. Please try again.`:t}};exports.GoogleProvider=c;
@@ -174,6 +174,9 @@ var c = class {
174
174
  shouldContinue(e) {
175
175
  return e === "tool_use";
176
176
  }
177
+ isTruncated(e) {
178
+ return e === "max_tokens";
179
+ }
177
180
  formatError(e) {
178
181
  if (!e || !(e instanceof Error)) return "Something went wrong. Please try again.";
179
182
  let t = e.message || "", n = e;