drizzle-cube 0.4.53 → 0.5.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 (276) hide show
  1. package/dist/adapters/express/index.cjs +2 -2
  2. package/dist/adapters/express/index.js +92 -83
  3. package/dist/adapters/fastify/index.cjs +2 -2
  4. package/dist/adapters/fastify/index.js +126 -116
  5. package/dist/adapters/{handler-RItnSaEl.js → handler-3LGcjLtr.js} +617 -612
  6. package/dist/adapters/handler-BzzbVpcl.cjs +25 -0
  7. package/dist/adapters/hono/index.cjs +1 -1
  8. package/dist/adapters/hono/index.js +94 -86
  9. package/dist/adapters/{compiler-S6KHiOY6.js → locale-DTnJrxm1.js} +1700 -1563
  10. package/dist/adapters/locale-DueXjqMh.cjs +198 -0
  11. package/dist/adapters/locale.d.ts +8 -0
  12. package/dist/adapters/mcp-tools.cjs +1 -1
  13. package/dist/adapters/mcp-tools.js +14 -14
  14. package/dist/adapters/mcp-transport-45SiFcCH.cjs +39 -0
  15. package/dist/adapters/mcp-transport-Bxpc4mRy.js +553 -0
  16. package/dist/adapters/mcp-transport.d.ts +11 -0
  17. package/dist/adapters/nextjs/index.cjs +1 -1
  18. package/dist/adapters/nextjs/index.js +138 -122
  19. package/dist/adapters/utils-DNrj-ryp.cjs +17 -0
  20. package/dist/adapters/{utils-IH1ePsBd.js → utils-DOg9oGdt.js} +2341 -819
  21. package/dist/adapters/utils.cjs +1 -1
  22. package/dist/adapters/utils.d.ts +7 -0
  23. package/dist/adapters/utils.js +1 -1
  24. package/dist/client/charts.js +12 -12
  25. package/dist/client/chunks/{DashboardEditModal-BTdV528l.js → DashboardEditModal-cSSIAZGy.js} +1968 -1973
  26. package/dist/client/chunks/DashboardEditModal-cSSIAZGy.js.map +1 -0
  27. package/dist/client/chunks/{FieldSearchModal-D75vy4Wb.js → FieldSearchModal-CZNo4pNK.js} +550 -536
  28. package/dist/client/chunks/FieldSearchModal-CZNo4pNK.js.map +1 -0
  29. package/dist/client/chunks/KpiDelta-Dll_eCV1.js +2 -0
  30. package/dist/client/chunks/KpiNumber-BPlR92hI.js +2 -0
  31. package/dist/client/chunks/KpiText-BIxq7Jso.js +2 -0
  32. package/dist/client/chunks/{RetentionCombinedChart-DIhK5pD8.js → RetentionCombinedChart-BD8tGeM_.js} +96 -96
  33. package/dist/client/chunks/RetentionCombinedChart-BD8tGeM_.js.map +1 -0
  34. package/dist/client/chunks/{RetentionHeatmap-CyREolyP.js → RetentionHeatmap-B_5sewwi.js} +77 -77
  35. package/dist/client/chunks/RetentionHeatmap-B_5sewwi.js.map +1 -0
  36. package/dist/client/chunks/SchemaVisualization-CCICjhvv.js +2 -0
  37. package/dist/client/chunks/SchemaVisualizationLazy-DraGsMx6.js +2 -0
  38. package/dist/client/chunks/af-ZA-xDmO5F0s.js +1431 -0
  39. package/dist/client/chunks/af-ZA-xDmO5F0s.js.map +1 -0
  40. package/dist/client/chunks/{analysis-builder-C1CJ0c7L.js → analysis-builder-BeVZhiQ5.js} +1519 -1507
  41. package/dist/client/chunks/analysis-builder-BeVZhiQ5.js.map +1 -0
  42. package/dist/client/chunks/{analysis-builder-shared-rkjJfWLT.js → analysis-builder-shared-BWc7ZZnG.js} +925 -954
  43. package/dist/client/chunks/analysis-builder-shared-BWc7ZZnG.js.map +1 -0
  44. package/dist/client/chunks/chart-activity-grid-CWT0gLv4.js +2376 -0
  45. package/dist/client/chunks/chart-activity-grid-CWT0gLv4.js.map +1 -0
  46. package/dist/client/chunks/{chart-area-BwYaflNk.js → chart-area-D63kG8OT.js} +157 -157
  47. package/dist/client/chunks/chart-area-D63kG8OT.js.map +1 -0
  48. package/dist/client/chunks/{chart-bar-BiENfFgE.js → chart-bar-BEfsCLjl.js} +78 -78
  49. package/dist/client/chunks/chart-bar-BEfsCLjl.js.map +1 -0
  50. package/dist/client/chunks/{chart-box-plot-BJF1tBXC.js → chart-box-plot-o-h9MRX5.js} +111 -114
  51. package/dist/client/chunks/chart-box-plot-o-h9MRX5.js.map +1 -0
  52. package/dist/client/chunks/{chart-bubble-DQQhGVDJ.js → chart-bubble-CMDp4Pfm.js} +121 -121
  53. package/dist/client/chunks/chart-bubble-CMDp4Pfm.js.map +1 -0
  54. package/dist/client/chunks/chart-candlestick-WyANJ0Ky.js +303 -0
  55. package/dist/client/chunks/chart-candlestick-WyANJ0Ky.js.map +1 -0
  56. package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js +51 -0
  57. package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js.map +1 -0
  58. package/dist/client/chunks/chart-config-area-CMZpbIah.js +93 -0
  59. package/dist/client/chunks/chart-config-area-CMZpbIah.js.map +1 -0
  60. package/dist/client/chunks/chart-config-bar-B8_V4YLg.js +87 -0
  61. package/dist/client/chunks/chart-config-bar-B8_V4YLg.js.map +1 -0
  62. package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js +35 -0
  63. package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js.map +1 -0
  64. package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js +82 -0
  65. package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js.map +1 -0
  66. package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js +72 -0
  67. package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js.map +1 -0
  68. package/dist/client/chunks/{chart-config-data-table-Bhdx5Hem.js → chart-config-data-table-BQXSn4b_.js} +9 -9
  69. package/dist/client/chunks/chart-config-data-table-BQXSn4b_.js.map +1 -0
  70. package/dist/client/chunks/chart-config-funnel-BzEsHmjR.js +93 -0
  71. package/dist/client/chunks/chart-config-funnel-BzEsHmjR.js.map +1 -0
  72. package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js +64 -0
  73. package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js.map +1 -0
  74. package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js +91 -0
  75. package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js.map +1 -0
  76. package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js +94 -0
  77. package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js.map +1 -0
  78. package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js +75 -0
  79. package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js.map +1 -0
  80. package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js +47 -0
  81. package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js.map +1 -0
  82. package/dist/client/chunks/chart-config-line-BVKapAQK.js +104 -0
  83. package/dist/client/chunks/chart-config-line-BVKapAQK.js.map +1 -0
  84. package/dist/client/chunks/chart-config-markdown-C-_g_8te.js +117 -0
  85. package/dist/client/chunks/chart-config-markdown-C-_g_8te.js.map +1 -0
  86. package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js +82 -0
  87. package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js.map +1 -0
  88. package/dist/client/chunks/chart-config-pie-BZxVl25X.js +68 -0
  89. package/dist/client/chunks/chart-config-pie-BZxVl25X.js.map +1 -0
  90. package/dist/client/chunks/chart-config-radar-B7FByX3t.js +49 -0
  91. package/dist/client/chunks/chart-config-radar-B7FByX3t.js.map +1 -0
  92. package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js +38 -0
  93. package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js.map +1 -0
  94. package/dist/client/chunks/chart-config-sankey-DGAThN9i.js +66 -0
  95. package/dist/client/chunks/chart-config-sankey-DGAThN9i.js.map +1 -0
  96. package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js +61 -0
  97. package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js.map +1 -0
  98. package/dist/client/chunks/chart-config-sunburst-utejM2YS.js +45 -0
  99. package/dist/client/chunks/chart-config-sunburst-utejM2YS.js.map +1 -0
  100. package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js +51 -0
  101. package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js.map +1 -0
  102. package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js +59 -0
  103. package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js.map +1 -0
  104. package/dist/client/chunks/{chart-data-table-2iCsn0CF.js → chart-data-table-C3Xh9jwL.js} +1083 -1086
  105. package/dist/client/chunks/chart-data-table-C3Xh9jwL.js.map +1 -0
  106. package/dist/client/chunks/{chart-funnel-poyOf7-e.js → chart-funnel-C7pgktN5.js} +132 -132
  107. package/dist/client/chunks/chart-funnel-C7pgktN5.js.map +1 -0
  108. package/dist/client/chunks/{chart-gauge-D5J4gRky.js → chart-gauge-D2r2B_AR.js} +150 -150
  109. package/dist/client/chunks/chart-gauge-D2r2B_AR.js.map +1 -0
  110. package/dist/client/chunks/{chart-heat-map-BAMVhLGG.js → chart-heat-map-Dw2yjwfO.js} +75 -80
  111. package/dist/client/chunks/chart-heat-map-Dw2yjwfO.js.map +1 -0
  112. package/dist/client/chunks/{chart-kpi-delta-KQjUIeal.js → chart-kpi-delta-CYE0S1x_.js} +117 -117
  113. package/dist/client/chunks/chart-kpi-delta-CYE0S1x_.js.map +1 -0
  114. package/dist/client/chunks/chart-kpi-number-BlZ79xHW.js +321 -0
  115. package/dist/client/chunks/chart-kpi-number-BlZ79xHW.js.map +1 -0
  116. package/dist/client/chunks/chart-kpi-text-DY1BnxPe.js +148 -0
  117. package/dist/client/chunks/chart-kpi-text-DY1BnxPe.js.map +1 -0
  118. package/dist/client/chunks/{chart-line-B5_WntY5.js → chart-line-CBsTThTv.js} +123 -123
  119. package/dist/client/chunks/chart-line-CBsTThTv.js.map +1 -0
  120. package/dist/client/chunks/chart-markdown-BWaWVkuz.js +3474 -0
  121. package/dist/client/chunks/chart-markdown-BWaWVkuz.js.map +1 -0
  122. package/dist/client/chunks/chart-measure-profile-B41qCTBG.js +179 -0
  123. package/dist/client/chunks/chart-measure-profile-B41qCTBG.js.map +1 -0
  124. package/dist/client/chunks/chart-pie-Djbu8x2v.js +172 -0
  125. package/dist/client/chunks/chart-pie-Djbu8x2v.js.map +1 -0
  126. package/dist/client/chunks/chart-radar-BsTcKV0K.js +154 -0
  127. package/dist/client/chunks/chart-radar-BsTcKV0K.js.map +1 -0
  128. package/dist/client/chunks/chart-radial-bar-Du7XNnwE.js +148 -0
  129. package/dist/client/chunks/chart-radial-bar-Du7XNnwE.js.map +1 -0
  130. package/dist/client/chunks/{chart-sankey-BOyxfG1Q.js → chart-sankey-WwkZAhLy.js} +73 -73
  131. package/dist/client/chunks/chart-sankey-WwkZAhLy.js.map +1 -0
  132. package/dist/client/chunks/chart-scatter-D8krEYsA.js +255 -0
  133. package/dist/client/chunks/chart-scatter-D8krEYsA.js.map +1 -0
  134. package/dist/client/chunks/{chart-sunburst-D9lGEOCc.js → chart-sunburst-CIDB_pTl.js} +66 -66
  135. package/dist/client/chunks/chart-sunburst-CIDB_pTl.js.map +1 -0
  136. package/dist/client/chunks/chart-tree-map-C5C2iaWM.js +298 -0
  137. package/dist/client/chunks/chart-tree-map-C5C2iaWM.js.map +1 -0
  138. package/dist/client/chunks/{chart-waterfall-BCdUx4DC.js → chart-waterfall-BGdPrJ5Y.js} +80 -80
  139. package/dist/client/chunks/chart-waterfall-BGdPrJ5Y.js.map +1 -0
  140. package/dist/client/chunks/{charts-core-C5Yokk-x.js → charts-core-BXOqaYFn.js} +92 -92
  141. package/dist/client/chunks/charts-core-BXOqaYFn.js.map +1 -0
  142. package/dist/client/chunks/en-US-5xPTdCXg.js +35 -0
  143. package/dist/client/chunks/en-US-5xPTdCXg.js.map +1 -0
  144. package/dist/client/chunks/nl-NL-vCifBijs.js +1491 -0
  145. package/dist/client/chunks/nl-NL-vCifBijs.js.map +1 -0
  146. package/dist/client/chunks/{schema-visualization-t1KiOORo.js → schema-visualization-Xp60Ff2W.js} +352 -364
  147. package/dist/client/chunks/schema-visualization-Xp60Ff2W.js.map +1 -0
  148. package/dist/client/chunks/{useDebounce-CKqkM42n.js → useDebounce-CfmUMFau.js} +85 -85
  149. package/dist/client/chunks/useDebounce-CfmUMFau.js.map +1 -0
  150. package/dist/client/chunks/{useExplainAI-DBIfYwz-.js → useExplainAI-BKGmejIj.js} +4 -4
  151. package/dist/client/chunks/{useExplainAI-DBIfYwz-.js.map → useExplainAI-BKGmejIj.js.map} +1 -1
  152. package/dist/client/chunks/{utils--qCr8Yn5.js → utils-BldkcRHv.js} +2 -2
  153. package/dist/client/chunks/{utils--qCr8Yn5.js.map → utils-BldkcRHv.js.map} +1 -1
  154. package/dist/client/chunks/{vendor-BRlsCGnK.js → vendor-ClXpIiea.js} +2 -2
  155. package/dist/client/chunks/{vendor-BRlsCGnK.js.map → vendor-ClXpIiea.js.map} +1 -1
  156. package/dist/client/components/AnalysisBuilder/types.d.ts +6 -6
  157. package/dist/client/components.js +3 -3
  158. package/dist/client/hooks/useTranslation.d.ts +21 -0
  159. package/dist/client/hooks.js +3 -3
  160. package/dist/client/icons.js +1 -1
  161. package/dist/client/index.js +493 -488
  162. package/dist/client/index.js.map +1 -1
  163. package/dist/client/providers/CubeApiProvider.d.ts +2 -1
  164. package/dist/client/providers/CubeProvider.d.ts +7 -1
  165. package/dist/client/providers/I18nProvider.d.ts +18 -0
  166. package/dist/client/providers.js +1 -1
  167. package/dist/client/schema.js +1 -1
  168. package/dist/client/shared/types.d.ts +5 -20
  169. package/dist/client/styles.css +1 -1
  170. package/dist/client/utils.js +5 -5
  171. package/dist/client-bundle-stats.html +1 -1
  172. package/dist/mcp-app/mcp-app.html +26 -24
  173. package/dist/server/index.cjs +42 -40
  174. package/dist/server/index.js +3311 -1672
  175. package/package.json +5 -2
  176. package/dist/adapters/compiler-CRgLzmSn.cjs +0 -198
  177. package/dist/adapters/handler-DumFgnNM.cjs +0 -25
  178. package/dist/adapters/mcp-transport-C6bsIOSV.js +0 -545
  179. package/dist/adapters/mcp-transport-DMhuYmFp.cjs +0 -39
  180. package/dist/adapters/utils-CyBt-as9.cjs +0 -15
  181. package/dist/client/chunks/DashboardEditModal-BTdV528l.js.map +0 -1
  182. package/dist/client/chunks/FieldSearchModal-D75vy4Wb.js.map +0 -1
  183. package/dist/client/chunks/KpiDelta-Bk8bzKYM.js +0 -2
  184. package/dist/client/chunks/KpiNumber-CKF-8e_T.js +0 -2
  185. package/dist/client/chunks/KpiText-Iz1vIvu_.js +0 -2
  186. package/dist/client/chunks/RetentionCombinedChart-DIhK5pD8.js.map +0 -1
  187. package/dist/client/chunks/RetentionHeatmap-CyREolyP.js.map +0 -1
  188. package/dist/client/chunks/SchemaVisualization-B1GUT-FM.js +0 -2
  189. package/dist/client/chunks/SchemaVisualizationLazy-DymwT34e.js +0 -2
  190. package/dist/client/chunks/analysis-builder-C1CJ0c7L.js.map +0 -1
  191. package/dist/client/chunks/analysis-builder-shared-rkjJfWLT.js.map +0 -1
  192. package/dist/client/chunks/chart-activity-grid-DLktOINm.js +0 -806
  193. package/dist/client/chunks/chart-activity-grid-DLktOINm.js.map +0 -1
  194. package/dist/client/chunks/chart-area-BwYaflNk.js.map +0 -1
  195. package/dist/client/chunks/chart-bar-BiENfFgE.js.map +0 -1
  196. package/dist/client/chunks/chart-box-plot-BJF1tBXC.js.map +0 -1
  197. package/dist/client/chunks/chart-bubble-DQQhGVDJ.js.map +0 -1
  198. package/dist/client/chunks/chart-candlestick-C2UuXbLe.js +0 -306
  199. package/dist/client/chunks/chart-candlestick-C2UuXbLe.js.map +0 -1
  200. package/dist/client/chunks/chart-config-activity-grid-DJOU3TEz.js +0 -51
  201. package/dist/client/chunks/chart-config-activity-grid-DJOU3TEz.js.map +0 -1
  202. package/dist/client/chunks/chart-config-area-CWnWVT6a.js +0 -93
  203. package/dist/client/chunks/chart-config-area-CWnWVT6a.js.map +0 -1
  204. package/dist/client/chunks/chart-config-bar-C-7Dr1Ho.js +0 -87
  205. package/dist/client/chunks/chart-config-bar-C-7Dr1Ho.js.map +0 -1
  206. package/dist/client/chunks/chart-config-box-plot-mVOwmLdu.js +0 -35
  207. package/dist/client/chunks/chart-config-box-plot-mVOwmLdu.js.map +0 -1
  208. package/dist/client/chunks/chart-config-bubble-BPE2CeiD.js +0 -82
  209. package/dist/client/chunks/chart-config-bubble-BPE2CeiD.js.map +0 -1
  210. package/dist/client/chunks/chart-config-candlestick-BSB9DRy2.js +0 -72
  211. package/dist/client/chunks/chart-config-candlestick-BSB9DRy2.js.map +0 -1
  212. package/dist/client/chunks/chart-config-data-table-Bhdx5Hem.js.map +0 -1
  213. package/dist/client/chunks/chart-config-funnel-Cl-v-bm1.js +0 -93
  214. package/dist/client/chunks/chart-config-funnel-Cl-v-bm1.js.map +0 -1
  215. package/dist/client/chunks/chart-config-gauge-CdrUTJMJ.js +0 -64
  216. package/dist/client/chunks/chart-config-gauge-CdrUTJMJ.js.map +0 -1
  217. package/dist/client/chunks/chart-config-heat-map-DGE3NzoF.js +0 -91
  218. package/dist/client/chunks/chart-config-heat-map-DGE3NzoF.js.map +0 -1
  219. package/dist/client/chunks/chart-config-kpi-delta-DMrQerUW.js +0 -94
  220. package/dist/client/chunks/chart-config-kpi-delta-DMrQerUW.js.map +0 -1
  221. package/dist/client/chunks/chart-config-kpi-number-DCytCytn.js +0 -75
  222. package/dist/client/chunks/chart-config-kpi-number-DCytCytn.js.map +0 -1
  223. package/dist/client/chunks/chart-config-kpi-text-KdKQUvHo.js +0 -47
  224. package/dist/client/chunks/chart-config-kpi-text-KdKQUvHo.js.map +0 -1
  225. package/dist/client/chunks/chart-config-line-Bl9VDAdz.js +0 -104
  226. package/dist/client/chunks/chart-config-line-Bl9VDAdz.js.map +0 -1
  227. package/dist/client/chunks/chart-config-markdown-BX26b94i.js +0 -117
  228. package/dist/client/chunks/chart-config-markdown-BX26b94i.js.map +0 -1
  229. package/dist/client/chunks/chart-config-measure-profile-DwtRhEFh.js +0 -82
  230. package/dist/client/chunks/chart-config-measure-profile-DwtRhEFh.js.map +0 -1
  231. package/dist/client/chunks/chart-config-pie-BzBcqPMJ.js +0 -68
  232. package/dist/client/chunks/chart-config-pie-BzBcqPMJ.js.map +0 -1
  233. package/dist/client/chunks/chart-config-radar-6ZOgt__z.js +0 -49
  234. package/dist/client/chunks/chart-config-radar-6ZOgt__z.js.map +0 -1
  235. package/dist/client/chunks/chart-config-radial-bar-Df6Eta7N.js +0 -38
  236. package/dist/client/chunks/chart-config-radial-bar-Df6Eta7N.js.map +0 -1
  237. package/dist/client/chunks/chart-config-sankey-DgqKBFvN.js +0 -66
  238. package/dist/client/chunks/chart-config-sankey-DgqKBFvN.js.map +0 -1
  239. package/dist/client/chunks/chart-config-scatter-D5nVLDvi.js +0 -61
  240. package/dist/client/chunks/chart-config-scatter-D5nVLDvi.js.map +0 -1
  241. package/dist/client/chunks/chart-config-sunburst-Ca3FX9nW.js +0 -45
  242. package/dist/client/chunks/chart-config-sunburst-Ca3FX9nW.js.map +0 -1
  243. package/dist/client/chunks/chart-config-tree-map-Bjy4QNa3.js +0 -51
  244. package/dist/client/chunks/chart-config-tree-map-Bjy4QNa3.js.map +0 -1
  245. package/dist/client/chunks/chart-config-waterfall-C5K2eqR7.js +0 -59
  246. package/dist/client/chunks/chart-config-waterfall-C5K2eqR7.js.map +0 -1
  247. package/dist/client/chunks/chart-data-table-2iCsn0CF.js.map +0 -1
  248. package/dist/client/chunks/chart-funnel-poyOf7-e.js.map +0 -1
  249. package/dist/client/chunks/chart-gauge-D5J4gRky.js.map +0 -1
  250. package/dist/client/chunks/chart-heat-map-BAMVhLGG.js.map +0 -1
  251. package/dist/client/chunks/chart-kpi-delta-KQjUIeal.js.map +0 -1
  252. package/dist/client/chunks/chart-kpi-number-CsQgV_x3.js +0 -325
  253. package/dist/client/chunks/chart-kpi-number-CsQgV_x3.js.map +0 -1
  254. package/dist/client/chunks/chart-kpi-text-BR0IyeUU.js +0 -148
  255. package/dist/client/chunks/chart-kpi-text-BR0IyeUU.js.map +0 -1
  256. package/dist/client/chunks/chart-line-B5_WntY5.js.map +0 -1
  257. package/dist/client/chunks/chart-markdown-B6bENbel.js +0 -3473
  258. package/dist/client/chunks/chart-markdown-B6bENbel.js.map +0 -1
  259. package/dist/client/chunks/chart-measure-profile-yWk-obNb.js +0 -179
  260. package/dist/client/chunks/chart-measure-profile-yWk-obNb.js.map +0 -1
  261. package/dist/client/chunks/chart-pie-BodrUoHv.js +0 -172
  262. package/dist/client/chunks/chart-pie-BodrUoHv.js.map +0 -1
  263. package/dist/client/chunks/chart-radar-gG3zfLud.js +0 -154
  264. package/dist/client/chunks/chart-radar-gG3zfLud.js.map +0 -1
  265. package/dist/client/chunks/chart-radial-bar-C2IPCV8c.js +0 -148
  266. package/dist/client/chunks/chart-radial-bar-C2IPCV8c.js.map +0 -1
  267. package/dist/client/chunks/chart-sankey-BOyxfG1Q.js.map +0 -1
  268. package/dist/client/chunks/chart-scatter-B8OwlsAX.js +0 -255
  269. package/dist/client/chunks/chart-scatter-B8OwlsAX.js.map +0 -1
  270. package/dist/client/chunks/chart-sunburst-D9lGEOCc.js.map +0 -1
  271. package/dist/client/chunks/chart-tree-map-DZaKy9he.js +0 -298
  272. package/dist/client/chunks/chart-tree-map-DZaKy9he.js.map +0 -1
  273. package/dist/client/chunks/chart-waterfall-BCdUx4DC.js.map +0 -1
  274. package/dist/client/chunks/charts-core-C5Yokk-x.js.map +0 -1
  275. package/dist/client/chunks/schema-visualization-t1KiOORo.js.map +0 -1
  276. package/dist/client/chunks/useDebounce-CKqkM42n.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { d as e, g as t, p as n } from "./utils-IH1ePsBd.js";
2
- import { a as r, n as i, r as a, t as o } from "./mcp-prompts-BUFyQLHQ.js";
1
+ import { _ as e, d as t, g as n, p as r } from "./utils-DOg9oGdt.js";
2
+ import { a as i, n as a, r as o, t as s } from "./mcp-prompts-BUFyQLHQ.js";
3
3
  //#region src/server/agent/system-prompt.ts
4
- function s(e) {
4
+ function c(e) {
5
5
  if (e.length === 0) return "No cubes are currently available.";
6
6
  let t = ["## Available Cubes", ""];
7
7
  for (let n of e) {
@@ -27,10 +27,10 @@ function s(e) {
27
27
  }
28
28
  return t.join("\n");
29
29
  }
30
- function c(e) {
30
+ function l(e) {
31
31
  return e.messages.map((e) => e.content.text).join("\n\n");
32
32
  }
33
- function l(e) {
33
+ function u(e) {
34
34
  return [
35
35
  "# Drizzle Cube Analytics Agent",
36
36
  "",
@@ -171,15 +171,15 @@ function l(e) {
171
171
  "",
172
172
  "---",
173
173
  "",
174
- c(i),
174
+ l(a),
175
175
  "",
176
176
  "---",
177
177
  "",
178
- c(a),
178
+ l(o),
179
179
  "",
180
180
  "---",
181
181
  "",
182
- c(o),
182
+ l(s),
183
183
  "",
184
184
  "---",
185
185
  "",
@@ -233,42 +233,42 @@ function l(e) {
233
233
  "",
234
234
  "---",
235
235
  "",
236
- s(e)
236
+ c(e)
237
237
  ].join("\n");
238
238
  }
239
239
  //#endregion
240
240
  //#region src/client/charts/chartConfigRegistry.ts
241
- var u = {
241
+ var d = {
242
242
  bar: {
243
- label: "Bar Chart",
244
- description: "Compare values across categories",
245
- useCase: "Best for comparing discrete categories, showing rankings, or displaying changes over time",
243
+ label: "chart.bar.label",
244
+ description: "chart.bar.description",
245
+ useCase: "chart.bar.useCase",
246
246
  clickableElements: { bar: !0 },
247
247
  dropZones: [
248
248
  {
249
249
  key: "xAxis",
250
- label: "X-Axis (Categories)",
251
- description: "Dimensions and time dimensions for grouping",
250
+ label: "chart.dropZone.xAxis.label",
251
+ description: "chart.dropZone.xAxis.description",
252
252
  mandatory: !1,
253
253
  acceptTypes: ["dimension", "timeDimension"],
254
- emptyText: "Drop dimensions & time dimensions here"
254
+ emptyText: "chart.bar.dropZone.xAxis.empty"
255
255
  },
256
256
  {
257
257
  key: "yAxis",
258
- label: "Y-Axis (Values)",
259
- description: "Measures for bar heights",
258
+ label: "chart.dropZone.yAxis.label",
259
+ description: "chart.configText.measures_for_bar_heights",
260
260
  mandatory: !0,
261
261
  acceptTypes: ["measure"],
262
- emptyText: "Drop measures here",
262
+ emptyText: "chart.bar.dropZone.yAxis.empty",
263
263
  enableDualAxis: !0
264
264
  },
265
265
  {
266
266
  key: "series",
267
- label: "Series (Split into Multiple Series)",
268
- description: "Dimensions to create separate data series",
267
+ label: "chart.dropZone.series.label",
268
+ description: "chart.dropZone.series.description",
269
269
  mandatory: !1,
270
270
  acceptTypes: ["dimension"],
271
- emptyText: "Drop dimensions here to split data into series"
271
+ emptyText: "chart.bar.dropZone.series.empty"
272
272
  }
273
273
  ],
274
274
  displayOptions: [
@@ -280,76 +280,76 @@ var u = {
280
280
  displayOptionsConfig: [
281
281
  {
282
282
  key: "stackType",
283
- label: "Stacking",
283
+ label: "chart.option.stacking.label",
284
284
  type: "select",
285
285
  defaultValue: "none",
286
286
  options: [
287
287
  {
288
288
  value: "none",
289
- label: "None"
289
+ label: "chart.option.accentBorder.none"
290
290
  },
291
291
  {
292
292
  value: "normal",
293
- label: "Stacked"
293
+ label: "chart.option.stacking.stacked"
294
294
  },
295
295
  {
296
296
  value: "percent",
297
- label: "Stacked 100%"
297
+ label: "chart.option.stacking.percent"
298
298
  }
299
299
  ],
300
- description: "How to stack multiple bar series"
300
+ description: "chart.configText.how_to_stack_multiple_bar_series"
301
301
  },
302
302
  {
303
303
  key: "target",
304
- label: "Target Values",
304
+ label: "chart.option.target.label",
305
305
  type: "string",
306
306
  placeholder: "e.g., 100 or 50,75 for spread",
307
- description: "Single value or comma-separated values to spread across X-axis"
307
+ description: "chart.option.target.description"
308
308
  },
309
309
  {
310
310
  key: "leftYAxisFormat",
311
- label: "Left Y-Axis Format",
311
+ label: "chart.option.leftYAxisFormat.label",
312
312
  type: "axisFormat",
313
- description: "Number formatting for left Y-axis"
313
+ description: "chart.option.leftYAxisFormat.description"
314
314
  },
315
315
  {
316
316
  key: "rightYAxisFormat",
317
- label: "Right Y-Axis Format",
317
+ label: "chart.option.rightYAxisFormat.label",
318
318
  type: "axisFormat",
319
- description: "Number formatting for right Y-axis"
319
+ description: "chart.option.rightYAxisFormat.description"
320
320
  }
321
321
  ]
322
322
  },
323
323
  line: {
324
- label: "Line Chart",
325
- description: "Show trends and changes over time",
326
- useCase: "Best for continuous data, trends, time series, and showing relationships between multiple series",
324
+ label: "chart.line.label",
325
+ description: "chart.line.description",
326
+ useCase: "chart.line.useCase",
327
327
  clickableElements: { point: !0 },
328
328
  dropZones: [
329
329
  {
330
330
  key: "xAxis",
331
- label: "X-Axis (Time/Categories)",
332
- description: "Time dimensions or dimensions for X-axis",
331
+ label: "chart.configText.x_axis_time_categories",
332
+ description: "chart.configText.time_dimensions_or_dimensions_for_x_axis",
333
333
  mandatory: !0,
334
334
  acceptTypes: ["dimension", "timeDimension"],
335
- emptyText: "Drop time dimensions or dimensions here"
335
+ emptyText: "chart.line.dropZone.xAxis.empty"
336
336
  },
337
337
  {
338
338
  key: "yAxis",
339
- label: "Y-Axis (Values)",
340
- description: "Measures for line values",
339
+ label: "chart.dropZone.yAxis.label",
340
+ description: "chart.configText.measures_for_line_values",
341
341
  mandatory: !0,
342
342
  acceptTypes: ["measure"],
343
- emptyText: "Drop measures here",
343
+ emptyText: "chart.line.dropZone.yAxis.empty",
344
344
  enableDualAxis: !0
345
345
  },
346
346
  {
347
347
  key: "series",
348
- label: "Series (Multiple Lines)",
349
- description: "Dimensions to create separate lines",
348
+ label: "chart.configText.series_multiple_lines",
349
+ description: "chart.configText.dimensions_to_create_separate_lines",
350
350
  mandatory: !1,
351
351
  acceptTypes: ["dimension"],
352
- emptyText: "Drop dimensions here for multiple lines"
352
+ emptyText: "chart.line.dropZone.series.empty"
353
353
  }
354
354
  ],
355
355
  displayOptions: [
@@ -361,92 +361,92 @@ var u = {
361
361
  displayOptionsConfig: [
362
362
  {
363
363
  key: "connectNulls",
364
- label: "Connect Nulls",
364
+ label: "chart.option.connectNulls.label",
365
365
  type: "boolean",
366
366
  defaultValue: !1,
367
- description: "Draw continuous line through missing data points"
367
+ description: "chart.option.connectNulls.description"
368
368
  },
369
369
  {
370
370
  key: "target",
371
- label: "Target Values",
371
+ label: "chart.option.target.label",
372
372
  type: "string",
373
373
  placeholder: "e.g., 100 or 50,75 for spread",
374
- description: "Single value or comma-separated values to spread across X-axis"
374
+ description: "chart.option.target.description"
375
375
  },
376
376
  {
377
377
  key: "priorPeriodStyle",
378
- label: "Prior Period Line Style",
378
+ label: "chart.option.priorPeriodStyle.label",
379
379
  type: "select",
380
380
  defaultValue: "dashed",
381
381
  options: [
382
382
  {
383
383
  value: "dashed",
384
- label: "Dashed"
384
+ label: "chart.option.priorPeriodStyle.dashed"
385
385
  },
386
386
  {
387
387
  value: "dotted",
388
- label: "Dotted"
388
+ label: "chart.option.priorPeriodStyle.dotted"
389
389
  },
390
390
  {
391
391
  value: "solid",
392
- label: "Solid"
392
+ label: "chart.option.priorPeriodStyle.solid"
393
393
  }
394
394
  ],
395
- description: "Line style for prior period in comparison mode"
395
+ description: "chart.option.priorPeriodStyle.description"
396
396
  },
397
397
  {
398
398
  key: "priorPeriodOpacity",
399
- label: "Prior Period Opacity",
399
+ label: "chart.option.priorPeriodOpacity.label",
400
400
  type: "number",
401
401
  defaultValue: .5,
402
402
  min: .1,
403
403
  max: 1,
404
404
  step: .1,
405
- description: "Opacity for prior period lines (0.1 to 1)"
405
+ description: "chart.option.priorPeriodOpacity.description"
406
406
  },
407
407
  {
408
408
  key: "leftYAxisFormat",
409
- label: "Left Y-Axis Format",
409
+ label: "chart.option.leftYAxisFormat.label",
410
410
  type: "axisFormat",
411
- description: "Number formatting for left Y-axis"
411
+ description: "chart.option.leftYAxisFormat.description"
412
412
  },
413
413
  {
414
414
  key: "rightYAxisFormat",
415
- label: "Right Y-Axis Format",
415
+ label: "chart.option.rightYAxisFormat.label",
416
416
  type: "axisFormat",
417
- description: "Number formatting for right Y-axis"
417
+ description: "chart.option.rightYAxisFormat.description"
418
418
  }
419
419
  ]
420
420
  },
421
421
  area: {
422
- label: "Area Chart",
423
- description: "Emphasize magnitude of change over time",
424
- useCase: "Best for showing cumulative totals, volume changes, or stacked comparisons over time",
422
+ label: "chart.area.label",
423
+ description: "chart.area.description",
424
+ useCase: "chart.area.useCase",
425
425
  dropZones: [
426
426
  {
427
427
  key: "xAxis",
428
- label: "X-Axis (Time/Categories)",
429
- description: "Time dimensions or dimensions for X-axis",
428
+ label: "chart.configText.x_axis_time_categories",
429
+ description: "chart.configText.time_dimensions_or_dimensions_for_x_axis",
430
430
  mandatory: !0,
431
431
  acceptTypes: ["dimension", "timeDimension"],
432
- emptyText: "Drop time dimensions or dimensions here"
432
+ emptyText: "chart.area.dropZone.xAxis.empty"
433
433
  },
434
434
  {
435
435
  key: "yAxis",
436
- label: "Y-Axis (Values)",
437
- description: "Measures for area values",
436
+ label: "chart.dropZone.yAxis.label",
437
+ description: "chart.configText.measures_for_area_values",
438
438
  mandatory: !0,
439
439
  acceptTypes: ["measure"],
440
- emptyText: "Drop measures here",
440
+ emptyText: "chart.area.dropZone.yAxis.empty",
441
441
  enableDualAxis: !0
442
442
  },
443
443
  {
444
444
  key: "series",
445
- label: "Series (Stack Areas)",
446
- description: "Dimensions to create stacked areas",
445
+ label: "chart.configText.series_stack_areas",
446
+ description: "chart.configText.dimensions_to_create_stacked_areas",
447
447
  mandatory: !1,
448
448
  acceptTypes: ["dimension"],
449
- emptyText: "Drop dimensions here for stacked areas"
449
+ emptyText: "chart.area.dropZone.series.empty"
450
450
  }
451
451
  ],
452
452
  displayOptions: [
@@ -458,74 +458,74 @@ var u = {
458
458
  displayOptionsConfig: [
459
459
  {
460
460
  key: "stackType",
461
- label: "Stacking",
461
+ label: "chart.option.stacking.label",
462
462
  type: "select",
463
463
  defaultValue: "none",
464
464
  options: [
465
465
  {
466
466
  value: "none",
467
- label: "None"
467
+ label: "chart.option.accentBorder.none"
468
468
  },
469
469
  {
470
470
  value: "normal",
471
- label: "Stacked"
471
+ label: "chart.option.stacking.stacked"
472
472
  },
473
473
  {
474
474
  value: "percent",
475
- label: "Stacked 100%"
475
+ label: "chart.option.stacking.percent"
476
476
  }
477
477
  ],
478
- description: "How to stack multiple area series"
478
+ description: "chart.configText.how_to_stack_multiple_area_series"
479
479
  },
480
480
  {
481
481
  key: "connectNulls",
482
- label: "Connect Nulls",
482
+ label: "chart.option.connectNulls.label",
483
483
  type: "boolean",
484
484
  defaultValue: !1,
485
- description: "Draw continuous line through missing data points"
485
+ description: "chart.option.connectNulls.description"
486
486
  },
487
487
  {
488
488
  key: "target",
489
- label: "Target Values",
489
+ label: "chart.option.target.label",
490
490
  type: "string",
491
491
  placeholder: "e.g., 100 or 50,75 for spread",
492
- description: "Single value or comma-separated values to spread across X-axis"
492
+ description: "chart.option.target.description"
493
493
  },
494
494
  {
495
495
  key: "leftYAxisFormat",
496
- label: "Left Y-Axis Format",
496
+ label: "chart.option.leftYAxisFormat.label",
497
497
  type: "axisFormat",
498
- description: "Number formatting for left Y-axis"
498
+ description: "chart.option.leftYAxisFormat.description"
499
499
  },
500
500
  {
501
501
  key: "rightYAxisFormat",
502
- label: "Right Y-Axis Format",
502
+ label: "chart.option.rightYAxisFormat.label",
503
503
  type: "axisFormat",
504
- description: "Number formatting for right Y-axis"
504
+ description: "chart.option.rightYAxisFormat.description"
505
505
  }
506
506
  ]
507
507
  },
508
508
  pie: {
509
- label: "Pie Chart",
510
- description: "Show proportions of a whole",
511
- useCase: "Best for showing percentage distribution or composition of a total (limit to 5-7 slices)",
509
+ label: "chart.pie.label",
510
+ description: "chart.pie.description",
511
+ useCase: "chart.pie.useCase",
512
512
  clickableElements: { slice: !0 },
513
513
  dropZones: [{
514
514
  key: "xAxis",
515
- label: "Categories",
516
- description: "Dimension for pie slices",
515
+ label: "chart.configText.categories",
516
+ description: "chart.configText.dimension_for_pie_slices",
517
517
  mandatory: !0,
518
518
  maxItems: 1,
519
519
  acceptTypes: ["dimension"],
520
- emptyText: "Drop a dimension for categories"
520
+ emptyText: "chart.pie.dropZone.xAxis.empty"
521
521
  }, {
522
522
  key: "yAxis",
523
- label: "Values",
524
- description: "Measure for slice sizes",
523
+ label: "chart.configText.values",
524
+ description: "chart.configText.measure_for_slice_sizes",
525
525
  mandatory: !0,
526
526
  maxItems: 1,
527
527
  acceptTypes: ["measure"],
528
- emptyText: "Drop a measure for values"
528
+ emptyText: "chart.pie.dropZone.yAxis.empty"
529
529
  }],
530
530
  displayOptions: [
531
531
  "showLegend",
@@ -534,48 +534,48 @@ var u = {
534
534
  ],
535
535
  displayOptionsConfig: [{
536
536
  key: "innerRadius",
537
- label: "Inner Radius",
537
+ label: "chart.option.innerRadius.label",
538
538
  type: "select",
539
- description: "Hollow center size (0% = solid pie, higher = donut style)",
539
+ description: "chart.configText.hollow_center_size_0_percent_solid_pie_higher_donut_style",
540
540
  defaultValue: "0%",
541
541
  options: [
542
542
  {
543
543
  value: "0%",
544
- label: "None (Pie)"
544
+ label: "chart.configText.none_pie"
545
545
  },
546
546
  {
547
547
  value: "20%",
548
- label: "20%"
548
+ label: "chart.configText.20_percent"
549
549
  },
550
550
  {
551
551
  value: "40%",
552
- label: "40%"
552
+ label: "chart.configText.40_percent"
553
553
  },
554
554
  {
555
555
  value: "60%",
556
- label: "60%"
556
+ label: "chart.configText.60_percent"
557
557
  },
558
558
  {
559
559
  value: "80%",
560
- label: "80%"
560
+ label: "chart.configText.80_percent"
561
561
  }
562
562
  ]
563
563
  }, {
564
564
  key: "leftYAxisFormat",
565
- label: "Value Format",
565
+ label: "chart.option.valueFormat.label",
566
566
  type: "axisFormat",
567
- description: "Number formatting for values"
567
+ description: "chart.option.valueFormat.description"
568
568
  }]
569
569
  },
570
570
  scatter: {
571
- label: "Scatter Plot",
572
- description: "Reveal correlations between variables",
573
- useCase: "Best for identifying patterns, correlations, outliers, and relationships between two measures",
571
+ label: "chart.scatter.label",
572
+ description: "chart.scatter.description",
573
+ useCase: "chart.scatter.useCase",
574
574
  dropZones: [
575
575
  {
576
576
  key: "xAxis",
577
- label: "X-Axis",
578
- description: "Measure or dimension for X position",
577
+ label: "chart.runtime.axisFormat.xAxis",
578
+ description: "chart.configText.measure_or_dimension_for_x_position",
579
579
  mandatory: !0,
580
580
  maxItems: 1,
581
581
  acceptTypes: [
@@ -583,25 +583,25 @@ var u = {
583
583
  "timeDimension",
584
584
  "measure"
585
585
  ],
586
- emptyText: "Drop a field for X-axis"
586
+ emptyText: "chart.scatter.dropZone.xAxis.empty"
587
587
  },
588
588
  {
589
589
  key: "yAxis",
590
- label: "Y-Axis",
591
- description: "Measure for Y position",
590
+ label: "chart.configText.y_axis",
591
+ description: "chart.configText.measure_for_y_position",
592
592
  mandatory: !0,
593
593
  maxItems: 1,
594
594
  acceptTypes: ["measure"],
595
- emptyText: "Drop a measure for Y-axis"
595
+ emptyText: "chart.scatter.dropZone.yAxis.empty"
596
596
  },
597
597
  {
598
598
  key: "series",
599
- label: "Series (Color Groups)",
600
- description: "Dimension to color points by category",
599
+ label: "chart.configText.series_color_groups",
600
+ description: "chart.configText.dimension_to_color_points_by_category",
601
601
  mandatory: !1,
602
602
  maxItems: 1,
603
603
  acceptTypes: ["dimension"],
604
- emptyText: "Drop a dimension to color points"
604
+ emptyText: "chart.scatter.dropZone.series.empty"
605
605
  }
606
606
  ],
607
607
  displayOptions: [
@@ -612,25 +612,25 @@ var u = {
612
612
  ],
613
613
  displayOptionsConfig: [{
614
614
  key: "xAxisFormat",
615
- label: "X-Axis Format",
615
+ label: "chart.option.xAxisFormat.label",
616
616
  type: "axisFormat",
617
- description: "Number formatting for X-axis"
617
+ description: "chart.option.xAxisFormat.description"
618
618
  }, {
619
619
  key: "leftYAxisFormat",
620
- label: "Y-Axis Format",
620
+ label: "chart.option.yAxisFormat.label",
621
621
  type: "axisFormat",
622
- description: "Number formatting for Y-axis"
622
+ description: "chart.option.yAxisFormat.description"
623
623
  }]
624
624
  },
625
625
  bubble: {
626
- label: "Bubble Chart",
627
- description: "Compare three dimensions of data",
628
- useCase: "Best for showing relationships between three variables (X, Y, and size), market analysis",
626
+ label: "chart.bubble.label",
627
+ description: "chart.bubble.description",
628
+ useCase: "chart.bubble.useCase",
629
629
  dropZones: [
630
630
  {
631
631
  key: "xAxis",
632
- label: "X-Axis",
633
- description: "Horizontal axis position",
632
+ label: "chart.runtime.axisFormat.xAxis",
633
+ description: "chart.configText.horizontal_axis_position",
634
634
  mandatory: !0,
635
635
  maxItems: 1,
636
636
  acceptTypes: [
@@ -638,43 +638,43 @@ var u = {
638
638
  "timeDimension",
639
639
  "measure"
640
640
  ],
641
- emptyText: "Drop a field for X-axis position"
641
+ emptyText: "chart.bubble.dropZone.xAxis.empty"
642
642
  },
643
643
  {
644
644
  key: "yAxis",
645
- label: "Y-Axis",
646
- description: "Vertical axis position",
645
+ label: "chart.configText.y_axis",
646
+ description: "chart.configText.vertical_axis_position",
647
647
  mandatory: !0,
648
648
  maxItems: 1,
649
649
  acceptTypes: ["measure"],
650
- emptyText: "Drop a measure for Y-axis position"
650
+ emptyText: "chart.bubble.dropZone.yAxis.empty"
651
651
  },
652
652
  {
653
653
  key: "sizeField",
654
- label: "Bubble Radius",
655
- description: "Size of bubbles based on this measure",
654
+ label: "chart.configText.bubble_radius",
655
+ description: "chart.configText.size_of_bubbles_based_on_this_measure",
656
656
  mandatory: !0,
657
657
  maxItems: 1,
658
658
  acceptTypes: ["measure"],
659
- emptyText: "Drop a measure for bubble size"
659
+ emptyText: "chart.bubble.dropZone.sizeField.empty"
660
660
  },
661
661
  {
662
662
  key: "series",
663
- label: "Bubble Labels",
664
- description: "Field to use for bubble labels and identification",
663
+ label: "chart.configText.bubble_labels",
664
+ description: "chart.configText.field_to_use_for_bubble_labels_and_identification",
665
665
  mandatory: !0,
666
666
  maxItems: 1,
667
667
  acceptTypes: ["dimension"],
668
- emptyText: "Drop a dimension for bubble labels"
668
+ emptyText: "chart.bubble.dropZone.series.empty"
669
669
  },
670
670
  {
671
671
  key: "colorField",
672
- label: "Bubble Colour",
673
- description: "Color bubbles by this field (optional)",
672
+ label: "chart.configText.bubble_colour",
673
+ description: "chart.configText.color_bubbles_by_this_field_optional",
674
674
  mandatory: !1,
675
675
  maxItems: 1,
676
676
  acceptTypes: ["dimension", "measure"],
677
- emptyText: "Drop a field for bubble color (optional)"
677
+ emptyText: "chart.bubble.dropZone.colorField.empty"
678
678
  }
679
679
  ],
680
680
  displayOptions: [
@@ -688,44 +688,44 @@ var u = {
688
688
  ],
689
689
  displayOptionsConfig: [{
690
690
  key: "xAxisFormat",
691
- label: "X-Axis Format",
691
+ label: "chart.option.xAxisFormat.label",
692
692
  type: "axisFormat",
693
- description: "Number formatting for X-axis"
693
+ description: "chart.option.xAxisFormat.description"
694
694
  }, {
695
695
  key: "leftYAxisFormat",
696
- label: "Y-Axis Format",
696
+ label: "chart.option.yAxisFormat.label",
697
697
  type: "axisFormat",
698
- description: "Number formatting for Y-axis and values"
698
+ description: "chart.configText.number_formatting_for_y_axis_and_values"
699
699
  }]
700
700
  },
701
701
  radar: {
702
- label: "Radar Chart",
703
- description: "Compare multiple metrics across categories",
704
- useCase: "Best for multivariate comparisons, performance metrics, strengths/weaknesses analysis",
702
+ label: "chart.radar.label",
703
+ description: "chart.radar.description",
704
+ useCase: "chart.radar.useCase",
705
705
  dropZones: [
706
706
  {
707
707
  key: "xAxis",
708
- label: "Axes (Categories)",
709
- description: "Dimensions for radar axes",
708
+ label: "chart.configText.axes_categories",
709
+ description: "chart.configText.dimensions_for_radar_axes",
710
710
  mandatory: !0,
711
711
  acceptTypes: ["dimension"],
712
- emptyText: "Drop dimensions for radar axes"
712
+ emptyText: "chart.radar.dropZone.xAxis.empty"
713
713
  },
714
714
  {
715
715
  key: "yAxis",
716
- label: "Values",
717
- description: "Measures for radar values",
716
+ label: "chart.configText.values",
717
+ description: "chart.configText.measures_for_radar_values",
718
718
  mandatory: !0,
719
719
  acceptTypes: ["measure"],
720
- emptyText: "Drop measures for values"
720
+ emptyText: "chart.radar.dropZone.yAxis.empty"
721
721
  },
722
722
  {
723
723
  key: "series",
724
- label: "Series (Multiple Shapes)",
725
- description: "Dimensions to create multiple radar shapes",
724
+ label: "chart.configText.series_multiple_shapes",
725
+ description: "chart.configText.dimensions_to_create_multiple_radar_shapes",
726
726
  mandatory: !1,
727
727
  acceptTypes: ["dimension"],
728
- emptyText: "Drop dimensions for multiple shapes"
728
+ emptyText: "chart.radar.dropZone.series.empty"
729
729
  }
730
730
  ],
731
731
  displayOptions: [
@@ -736,30 +736,30 @@ var u = {
736
736
  ],
737
737
  displayOptionsConfig: [{
738
738
  key: "leftYAxisFormat",
739
- label: "Value Format",
739
+ label: "chart.option.valueFormat.label",
740
740
  type: "axisFormat",
741
- description: "Number formatting for values"
741
+ description: "chart.option.valueFormat.description"
742
742
  }]
743
743
  },
744
744
  radialBar: {
745
- label: "Radial Bar Chart",
746
- description: "Circular progress and KPI visualization",
747
- useCase: "Best for showing progress toward goals, KPIs, or comparing percentages in a compact form",
745
+ label: "chart.radialBar.label",
746
+ description: "chart.radialBar.description",
747
+ useCase: "chart.radialBar.useCase",
748
748
  dropZones: [{
749
749
  key: "xAxis",
750
- label: "Categories",
751
- description: "Dimensions for radial segments",
750
+ label: "chart.configText.categories",
751
+ description: "chart.configText.dimensions_for_radial_segments",
752
752
  mandatory: !0,
753
753
  acceptTypes: ["dimension"],
754
- emptyText: "Drop dimensions for categories"
754
+ emptyText: "chart.radialBar.dropZone.xAxis.empty"
755
755
  }, {
756
756
  key: "yAxis",
757
- label: "Values",
758
- description: "Measures for radial bar lengths",
757
+ label: "chart.configText.values",
758
+ description: "chart.configText.measures_for_radial_bar_lengths",
759
759
  mandatory: !0,
760
760
  maxItems: 1,
761
761
  acceptTypes: ["measure"],
762
- emptyText: "Drop a measure for values"
762
+ emptyText: "chart.radialBar.dropZone.yAxis.empty"
763
763
  }],
764
764
  displayOptions: [
765
765
  "showLegend",
@@ -768,41 +768,41 @@ var u = {
768
768
  ],
769
769
  displayOptionsConfig: [{
770
770
  key: "leftYAxisFormat",
771
- label: "Value Format",
771
+ label: "chart.option.valueFormat.label",
772
772
  type: "axisFormat",
773
- description: "Number formatting for values"
773
+ description: "chart.option.valueFormat.description"
774
774
  }]
775
775
  },
776
776
  treemap: {
777
- label: "TreeMap",
778
- description: "Visualize hierarchical data with nested rectangles",
779
- useCase: "Best for showing part-to-whole relationships in hierarchical data, disk usage, budget allocation",
777
+ label: "chart.treemap.label",
778
+ description: "chart.treemap.description",
779
+ useCase: "chart.treemap.useCase",
780
780
  dropZones: [
781
781
  {
782
782
  key: "xAxis",
783
- label: "Categories",
784
- description: "Dimensions for treemap rectangles",
783
+ label: "chart.configText.categories",
784
+ description: "chart.configText.dimensions_for_treemap_rectangles",
785
785
  mandatory: !0,
786
786
  acceptTypes: ["dimension"],
787
- emptyText: "Drop dimensions for categories"
787
+ emptyText: "chart.treemap.dropZone.xAxis.empty"
788
788
  },
789
789
  {
790
790
  key: "yAxis",
791
- label: "Size",
792
- description: "Measure for rectangle sizes",
791
+ label: "chart.configText.size",
792
+ description: "chart.configText.measure_for_rectangle_sizes",
793
793
  mandatory: !0,
794
794
  maxItems: 1,
795
795
  acceptTypes: ["measure"],
796
- emptyText: "Drop a measure for size"
796
+ emptyText: "chart.treemap.dropZone.yAxis.empty"
797
797
  },
798
798
  {
799
799
  key: "series",
800
- label: "Color Groups",
801
- description: "Dimension to color rectangles by category",
800
+ label: "chart.configText.color_groups",
801
+ description: "chart.configText.dimension_to_color_rectangles_by_category",
802
802
  mandatory: !1,
803
803
  maxItems: 1,
804
804
  acceptTypes: ["dimension"],
805
- emptyText: "Drop a dimension for color grouping"
805
+ emptyText: "chart.treemap.dropZone.series.empty"
806
806
  }
807
807
  ],
808
808
  displayOptions: [
@@ -812,56 +812,56 @@ var u = {
812
812
  ],
813
813
  displayOptionsConfig: [{
814
814
  key: "leftYAxisFormat",
815
- label: "Value Format",
815
+ label: "chart.option.valueFormat.label",
816
816
  type: "axisFormat",
817
- description: "Number formatting for size values"
817
+ description: "chart.configText.number_formatting_for_size_values"
818
818
  }],
819
819
  clickableElements: { cell: !0 }
820
820
  },
821
821
  table: {
822
- label: "Data Table",
823
- description: "Display detailed tabular data",
824
- useCase: "Best for precise values, detailed analysis, sortable/filterable data exploration",
822
+ label: "chart.table.label",
823
+ description: "chart.table.description",
824
+ useCase: "chart.table.useCase",
825
825
  dropZones: [{
826
826
  key: "xAxis",
827
- label: "Columns",
828
- description: "All fields to display as columns",
827
+ label: "chart.configText.columns",
828
+ description: "chart.configText.all_fields_to_display_as_columns",
829
829
  mandatory: !1,
830
830
  acceptTypes: [
831
831
  "dimension",
832
832
  "timeDimension",
833
833
  "measure"
834
834
  ],
835
- emptyText: "Drop fields to display as columns (or leave empty for all)"
835
+ emptyText: "chart.table.dropZone.xAxis.empty"
836
836
  }],
837
837
  displayOptions: ["hideHeader"],
838
838
  displayOptionsConfig: [{
839
839
  key: "leftYAxisFormat",
840
- label: "Value Format",
840
+ label: "chart.option.valueFormat.label",
841
841
  type: "axisFormat",
842
- description: "Number formatting for numeric values"
842
+ description: "chart.configText.number_formatting_for_numeric_values"
843
843
  }]
844
844
  },
845
845
  activityGrid: {
846
- label: "Activity Grid",
847
- description: "GitHub-style activity grid showing temporal patterns across different time scales",
848
- useCase: "Best for visualizing activity patterns over time. Supports hour (3hr blocks × days), day (days × weeks), week (weeks × months), month (months × quarters), and quarter (quarters × years) granularities",
846
+ label: "chart.activityGrid.label",
847
+ description: "chart.activityGrid.description",
848
+ useCase: "chart.activityGrid.useCase",
849
849
  dropZones: [{
850
850
  key: "dateField",
851
- label: "Time Dimension",
852
- description: "Time field that determines grid structure (granularity affects layout)",
851
+ label: "chart.configText.time_dimension",
852
+ description: "chart.configText.time_field_that_determines_grid_structure_granularity_affects_layout",
853
853
  mandatory: !0,
854
854
  maxItems: 1,
855
855
  acceptTypes: ["timeDimension"],
856
- emptyText: "Drop a time dimension (granularity affects grid structure)"
856
+ emptyText: "chart.activityGrid.dropZone.dateField.empty"
857
857
  }, {
858
858
  key: "valueField",
859
- label: "Activity Measure",
860
- description: "Measure used for activity intensity (color coding)",
859
+ label: "chart.configText.activity_measure",
860
+ description: "chart.configText.measure_used_for_activity_intensity_color_coding",
861
861
  mandatory: !0,
862
862
  maxItems: 1,
863
863
  acceptTypes: ["measure"],
864
- emptyText: "Drop a measure for activity intensity"
864
+ emptyText: "chart.activityGrid.dropZone.valueField.empty"
865
865
  }],
866
866
  displayOptions: [
867
867
  "showLabels",
@@ -870,824 +870,824 @@ var u = {
870
870
  ],
871
871
  displayOptionsConfig: [{
872
872
  key: "fitToWidth",
873
- label: "Fit to Width",
873
+ label: "chart.option.fitToWidth.label",
874
874
  type: "boolean",
875
875
  defaultValue: !1,
876
- description: "Automatically size blocks to fill portlet width and height while maintaining aspect ratio"
876
+ description: "chart.option.fitToWidth.description"
877
877
  }],
878
878
  validate: (e) => {
879
879
  let { dateField: t, valueField: n } = e;
880
880
  return !t || Array.isArray(t) && t.length === 0 ? {
881
881
  isValid: !1,
882
- message: "Time dimension is required for activity grid"
882
+ message: "chart.activityGrid.validation.timeDimensionRequired"
883
883
  } : !n || Array.isArray(n) && n.length === 0 ? {
884
884
  isValid: !1,
885
- message: "Activity measure is required for intensity mapping"
885
+ message: "chart.activityGrid.validation.measureRequired"
886
886
  } : { isValid: !0 };
887
887
  },
888
888
  clickableElements: { cell: !0 }
889
889
  },
890
890
  kpiNumber: {
891
- label: "KPI Number",
892
- description: "Display key performance indicators as large numbers",
893
- useCase: "Perfect for showing important metrics like revenue, user count, or other key business metrics in a prominent, easy-to-read format",
891
+ label: "chart.kpiNumber.label",
892
+ description: "chart.kpiNumber.description",
893
+ useCase: "chart.kpiNumber.useCase",
894
894
  dropZones: [{
895
895
  key: "yAxis",
896
- label: "Value",
897
- description: "Measure to display as KPI number",
896
+ label: "chart.configText.value",
897
+ description: "chart.configText.measure_to_display_as_kpi_number",
898
898
  mandatory: !0,
899
899
  maxItems: 1,
900
900
  acceptTypes: ["measure"],
901
- emptyText: "Drop a measure here"
901
+ emptyText: "chart.kpiNumber.dropZone.yAxis.empty"
902
902
  }],
903
903
  displayOptionsConfig: [
904
904
  {
905
905
  key: "target",
906
- label: "Target Value",
906
+ label: "chart.runtime.tooltip.targetValue",
907
907
  type: "string",
908
908
  placeholder: "e.g., 100",
909
- description: "Target value to compare against (first value used if multiple provided)"
909
+ description: "chart.configText.target_value_to_compare_against_first_value_used_if_multiple_provided"
910
910
  },
911
911
  {
912
912
  key: "prefix",
913
- label: "Prefix",
913
+ label: "chart.option.prefix.label",
914
914
  type: "string",
915
915
  placeholder: "e.g., $, €, #",
916
- description: "Text to display before the number"
916
+ description: "chart.option.prefix.description"
917
917
  },
918
918
  {
919
919
  key: "suffix",
920
- label: "Suffix",
920
+ label: "chart.option.suffix.label",
921
921
  type: "string",
922
922
  placeholder: "e.g., %, units, items",
923
- description: "Text to display after the number"
923
+ description: "chart.option.suffix.description"
924
924
  },
925
925
  {
926
926
  key: "decimals",
927
- label: "Decimal Places",
927
+ label: "chart.option.decimals.label",
928
928
  type: "number",
929
929
  defaultValue: 0,
930
930
  min: 0,
931
931
  max: 10,
932
932
  step: 1,
933
- description: "Number of decimal places to display"
933
+ description: "chart.option.decimals.description"
934
934
  },
935
935
  {
936
936
  key: "valueColorIndex",
937
- label: "Value Color",
937
+ label: "chart.configText.value_color",
938
938
  type: "paletteColor",
939
939
  defaultValue: 0,
940
- description: "Color from the dashboard palette for the KPI value text"
940
+ description: "chart.configText.color_from_the_dashboard_palette_for_the_kpi_value_text"
941
941
  },
942
942
  {
943
943
  key: "useLastCompletePeriod",
944
- label: "Use Last Complete Period",
944
+ label: "chart.option.useLastCompletePeriod.label",
945
945
  type: "boolean",
946
946
  defaultValue: !0,
947
- description: "Exclude current incomplete period from aggregation (e.g., partial week/month)"
947
+ description: "chart.configText.exclude_current_incomplete_period_from_aggregation_e_g_partial_week_mont"
948
948
  },
949
949
  {
950
950
  key: "skipLastPeriod",
951
- label: "Skip Last Period",
951
+ label: "chart.option.skipLastPeriod.label",
952
952
  type: "boolean",
953
953
  defaultValue: !1,
954
- description: "Always exclude the last period regardless of completeness"
954
+ description: "chart.option.skipLastPeriod.description"
955
955
  }
956
956
  ],
957
957
  displayOptions: ["hideHeader"]
958
958
  },
959
959
  kpiDelta: {
960
- label: "KPI Delta",
961
- description: "Display change between latest and previous values with trend indicators",
962
- useCase: "Perfect for showing performance changes over time, such as revenue growth, user acquisition changes, or other metrics where the trend and delta are more important than the absolute value",
960
+ label: "chart.kpiDelta.label",
961
+ description: "chart.kpiDelta.description",
962
+ useCase: "chart.kpiDelta.useCase",
963
963
  dropZones: [{
964
964
  key: "yAxis",
965
- label: "Value",
966
- description: "Measure to track changes for",
965
+ label: "chart.configText.value",
966
+ description: "chart.configText.measure_to_track_changes_for",
967
967
  mandatory: !0,
968
968
  maxItems: 1,
969
969
  acceptTypes: ["measure"],
970
- emptyText: "Drop a measure here"
970
+ emptyText: "chart.kpiDelta.dropZone.yAxis.empty"
971
971
  }, {
972
972
  key: "xAxis",
973
- label: "Dimension (optional)",
974
- description: "Dimension for ordering data (typically time)",
973
+ label: "chart.configText.dimension_optional",
974
+ description: "chart.configText.dimension_for_ordering_data_typically_time",
975
975
  mandatory: !1,
976
976
  maxItems: 1,
977
977
  acceptTypes: ["dimension", "timeDimension"],
978
- emptyText: "Drop a dimension for ordering"
978
+ emptyText: "chart.kpiDelta.dropZone.xAxis.empty"
979
979
  }],
980
980
  displayOptionsConfig: [
981
981
  {
982
982
  key: "prefix",
983
- label: "Prefix",
983
+ label: "chart.option.prefix.label",
984
984
  type: "string",
985
985
  placeholder: "e.g., $, €, #",
986
- description: "Text to display before the number"
986
+ description: "chart.option.prefix.description"
987
987
  },
988
988
  {
989
989
  key: "suffix",
990
- label: "Suffix",
990
+ label: "chart.option.suffix.label",
991
991
  type: "string",
992
992
  placeholder: "e.g., %, units, items",
993
- description: "Text to display after the number"
993
+ description: "chart.option.suffix.description"
994
994
  },
995
995
  {
996
996
  key: "decimals",
997
- label: "Decimal Places",
997
+ label: "chart.option.decimals.label",
998
998
  type: "number",
999
999
  defaultValue: 1,
1000
1000
  min: 0,
1001
1001
  max: 10,
1002
1002
  step: 1,
1003
- description: "Number of decimal places to display"
1003
+ description: "chart.option.decimals.description"
1004
1004
  },
1005
1005
  {
1006
1006
  key: "positiveColorIndex",
1007
- label: "Positive Change Color",
1007
+ label: "chart.configText.positive_change_color",
1008
1008
  type: "paletteColor",
1009
1009
  defaultValue: 2,
1010
- description: "Color for positive changes (increases)"
1010
+ description: "chart.configText.color_for_positive_changes_increases"
1011
1011
  },
1012
1012
  {
1013
1013
  key: "negativeColorIndex",
1014
- label: "Negative Change Color",
1014
+ label: "chart.configText.negative_change_color",
1015
1015
  type: "paletteColor",
1016
1016
  defaultValue: 3,
1017
- description: "Color for negative changes (decreases)"
1017
+ description: "chart.configText.color_for_negative_changes_decreases"
1018
1018
  },
1019
1019
  {
1020
1020
  key: "showHistogram",
1021
- label: "Show Variance Histogram",
1021
+ label: "chart.option.showHistogram.label",
1022
1022
  type: "boolean",
1023
1023
  defaultValue: !0,
1024
- description: "Display historical variance chart below the delta"
1024
+ description: "chart.option.showHistogram.description"
1025
1025
  },
1026
1026
  {
1027
1027
  key: "useLastCompletePeriod",
1028
- label: "Use Last Complete Period",
1028
+ label: "chart.option.useLastCompletePeriod.label",
1029
1029
  type: "boolean",
1030
1030
  defaultValue: !0,
1031
- description: "Exclude current incomplete period from delta calculation (e.g., partial week/month)"
1031
+ description: "chart.configText.exclude_current_incomplete_period_from_delta_calculation_e_g_partial_wee"
1032
1032
  },
1033
1033
  {
1034
1034
  key: "skipLastPeriod",
1035
- label: "Skip Last Period",
1035
+ label: "chart.option.skipLastPeriod.label",
1036
1036
  type: "boolean",
1037
1037
  defaultValue: !1,
1038
- description: "Always exclude the last period regardless of completeness"
1038
+ description: "chart.option.skipLastPeriod.description"
1039
1039
  }
1040
1040
  ],
1041
1041
  displayOptions: ["hideHeader"],
1042
1042
  validate: (e) => !e.yAxis || Array.isArray(e.yAxis) && e.yAxis.length === 0 ? {
1043
1043
  isValid: !1,
1044
- message: "A measure is required for KPI Delta charts"
1044
+ message: "chart.kpiDelta.validation.measureRequired"
1045
1045
  } : { isValid: !0 }
1046
1046
  },
1047
1047
  kpiText: {
1048
- label: "KPI Text",
1049
- description: "Display key performance indicators as customizable text",
1050
- useCase: "Perfect for showing metrics with custom formatting, combining multiple values, or displaying contextual KPI information using templates",
1048
+ label: "chart.kpiText.label",
1049
+ description: "chart.kpiText.description",
1050
+ useCase: "chart.kpiText.useCase",
1051
1051
  dropZones: [{
1052
1052
  key: "yAxis",
1053
- label: "Value",
1054
- description: "Measure to display in the KPI text template",
1053
+ label: "chart.configText.value",
1054
+ description: "chart.configText.measure_to_display_in_the_kpi_text_template",
1055
1055
  mandatory: !0,
1056
1056
  maxItems: 1,
1057
1057
  acceptTypes: ["measure"],
1058
- emptyText: "Drop a measure here"
1058
+ emptyText: "chart.kpiText.dropZone.yAxis.empty"
1059
1059
  }],
1060
1060
  displayOptionsConfig: [
1061
1061
  {
1062
1062
  key: "template",
1063
- label: "Text Template",
1063
+ label: "chart.configText.text_template",
1064
1064
  type: "string",
1065
1065
  placeholder: "e.g., Total Revenue: ${value}",
1066
- description: "Template for displaying the text. Use ${value} to insert the measure value."
1066
+ description: "chart.configText.template_for_displaying_the_text_use_value_to_insert_the_measure_value"
1067
1067
  },
1068
1068
  {
1069
1069
  key: "decimals",
1070
- label: "Decimal Places",
1070
+ label: "chart.option.decimals.label",
1071
1071
  type: "number",
1072
1072
  defaultValue: 0,
1073
1073
  min: 0,
1074
1074
  max: 10,
1075
1075
  step: 1,
1076
- description: "Number of decimal places to display for numeric values"
1076
+ description: "chart.configText.number_of_decimal_places_to_display_for_numeric_values"
1077
1077
  },
1078
1078
  {
1079
1079
  key: "valueColorIndex",
1080
- label: "Value Color",
1080
+ label: "chart.configText.value_color",
1081
1081
  type: "paletteColor",
1082
1082
  defaultValue: 0,
1083
- description: "Color from the dashboard palette for the KPI value text"
1083
+ description: "chart.configText.color_from_the_dashboard_palette_for_the_kpi_value_text"
1084
1084
  }
1085
1085
  ],
1086
1086
  displayOptions: ["hideHeader"]
1087
1087
  },
1088
1088
  markdown: {
1089
- label: "Markdown",
1090
- description: "Display custom markdown content with formatting",
1091
- useCase: "Perfect for adding documentation, notes, section headers, instructions, or formatted text to dashboards",
1089
+ label: "chart.markdown.label",
1090
+ description: "chart.markdown.description",
1091
+ useCase: "chart.markdown.useCase",
1092
1092
  skipQuery: !0,
1093
1093
  dropZones: [],
1094
1094
  displayOptionsConfig: [
1095
1095
  {
1096
1096
  key: "content",
1097
- label: "Markdown Content",
1097
+ label: "chart.configText.markdown_content",
1098
1098
  type: "string",
1099
1099
  placeholder: "# Welcome\n\nAdd your **markdown** content here:\n\n- Lists with bullets\n- [Links](https://example.com)\n- *Italic* and **bold** text\n\n---\n\nUse --- for horizontal rules.",
1100
- description: "Enter markdown text. Supports headers (#), bold (**text**), italic (*text*), links ([text](url)), lists (- item), and horizontal rules (---)."
1100
+ description: "chart.configText.enter_markdown_text_supports_headers_bold_text_italic_text_links_text_ur"
1101
1101
  },
1102
1102
  {
1103
1103
  key: "accentColorIndex",
1104
- label: "Accent Color",
1104
+ label: "chart.configText.accent_color",
1105
1105
  type: "paletteColor",
1106
1106
  defaultValue: 0,
1107
- description: "Color from the dashboard palette for headers, bullets, and links"
1107
+ description: "chart.configText.color_from_the_dashboard_palette_for_headers_bullets_and_links"
1108
1108
  },
1109
1109
  {
1110
1110
  key: "fontSize",
1111
- label: "Font Size",
1111
+ label: "chart.option.fontSize.label",
1112
1112
  type: "select",
1113
1113
  defaultValue: "medium",
1114
1114
  options: [
1115
1115
  {
1116
1116
  value: "small",
1117
- label: "Small"
1117
+ label: "chart.option.fontSize.small"
1118
1118
  },
1119
1119
  {
1120
1120
  value: "medium",
1121
- label: "Medium"
1121
+ label: "chart.option.fontSize.medium"
1122
1122
  },
1123
1123
  {
1124
1124
  value: "large",
1125
- label: "Large"
1125
+ label: "chart.option.fontSize.large"
1126
1126
  }
1127
1127
  ],
1128
- description: "Overall text size for the markdown content"
1128
+ description: "chart.configText.overall_text_size_for_the_markdown_content"
1129
1129
  },
1130
1130
  {
1131
1131
  key: "alignment",
1132
- label: "Text Alignment",
1132
+ label: "chart.option.alignment.label",
1133
1133
  type: "select",
1134
1134
  defaultValue: "left",
1135
1135
  options: [
1136
1136
  {
1137
1137
  value: "left",
1138
- label: "Left"
1138
+ label: "chart.option.accentBorder.left"
1139
1139
  },
1140
1140
  {
1141
1141
  value: "center",
1142
- label: "Center"
1142
+ label: "chart.option.alignment.center"
1143
1143
  },
1144
1144
  {
1145
1145
  value: "right",
1146
- label: "Right"
1146
+ label: "chart.option.alignment.right"
1147
1147
  }
1148
1148
  ],
1149
- description: "Horizontal alignment of the markdown content"
1149
+ description: "chart.configText.horizontal_alignment_of_the_markdown_content"
1150
1150
  },
1151
1151
  {
1152
1152
  key: "hideHeader",
1153
- label: "Hide Header",
1153
+ label: "chart.option.hideHeader.label",
1154
1154
  type: "boolean",
1155
1155
  defaultValue: !0,
1156
- description: "Hide the portlet header bar (title and action buttons)"
1156
+ description: "chart.option.hideHeader.description"
1157
1157
  },
1158
1158
  {
1159
1159
  key: "transparentBackground",
1160
- label: "Transparent Background",
1160
+ label: "chart.option.transparentBackground.label",
1161
1161
  type: "boolean",
1162
1162
  defaultValue: !1,
1163
- description: "Remove card background, border, and shadow for seamless integration as section headers"
1163
+ description: "chart.option.transparentBackground.description"
1164
1164
  },
1165
1165
  {
1166
1166
  key: "autoHeight",
1167
- label: "Auto Height",
1167
+ label: "chart.option.autoHeight.label",
1168
1168
  type: "boolean",
1169
1169
  defaultValue: !0,
1170
- description: "In row and mobile layouts, size to markdown content instead of fixed row height"
1170
+ description: "chart.option.autoHeight.description"
1171
1171
  },
1172
1172
  {
1173
1173
  key: "accentBorder",
1174
- label: "Accent Border",
1174
+ label: "chart.option.accentBorder.label",
1175
1175
  type: "select",
1176
1176
  defaultValue: "none",
1177
1177
  options: [
1178
1178
  {
1179
1179
  value: "none",
1180
- label: "None"
1180
+ label: "chart.option.accentBorder.none"
1181
1181
  },
1182
1182
  {
1183
1183
  value: "left",
1184
- label: "Left"
1184
+ label: "chart.option.accentBorder.left"
1185
1185
  },
1186
1186
  {
1187
1187
  value: "top",
1188
- label: "Top"
1188
+ label: "chart.option.accentBorder.top"
1189
1189
  },
1190
1190
  {
1191
1191
  value: "bottom",
1192
- label: "Bottom"
1192
+ label: "chart.option.accentBorder.bottom"
1193
1193
  }
1194
1194
  ],
1195
- description: "Add an accent-colored border on one side of the content"
1195
+ description: "chart.configText.add_an_accent_colored_border_on_one_side_of_the_content"
1196
1196
  }
1197
1197
  ]
1198
1198
  },
1199
1199
  funnel: {
1200
- label: "Funnel Chart",
1201
- description: "Show conversion through sequential steps",
1202
- useCase: "Best for visualizing user journey funnels, sales pipelines, or multi-step processes",
1200
+ label: "chart.funnel.label",
1201
+ description: "chart.funnel.description",
1202
+ useCase: "chart.funnel.useCase",
1203
1203
  dropZones: [{
1204
1204
  key: "xAxis",
1205
- label: "Step Name",
1206
- description: "Step names (auto-populated from funnel steps)",
1205
+ label: "chart.configText.step_name",
1206
+ description: "chart.configText.step_names_auto_populated_from_funnel_steps",
1207
1207
  mandatory: !1,
1208
1208
  maxItems: 1,
1209
1209
  acceptTypes: ["dimension"],
1210
- emptyText: "Steps defined in funnel config"
1210
+ emptyText: "chart.funnel.dropZone.xAxis.empty"
1211
1211
  }, {
1212
1212
  key: "yAxis",
1213
- label: "Step Count",
1214
- description: "Count at each step (auto-calculated)",
1213
+ label: "chart.configText.step_count",
1214
+ description: "chart.configText.count_at_each_step_auto_calculated",
1215
1215
  mandatory: !1,
1216
1216
  maxItems: 1,
1217
1217
  acceptTypes: ["measure"],
1218
- emptyText: "Counts calculated from funnel execution"
1218
+ emptyText: "chart.funnel.dropZone.yAxis.empty"
1219
1219
  }],
1220
1220
  displayOptions: ["hideHeader"],
1221
1221
  displayOptionsConfig: [
1222
1222
  {
1223
1223
  key: "funnelStyle",
1224
- label: "Funnel Style",
1224
+ label: "chart.option.funnelStyle.label",
1225
1225
  type: "buttonGroup",
1226
1226
  defaultValue: "bars",
1227
1227
  options: [{
1228
1228
  value: "bars",
1229
- label: "Bars"
1229
+ label: "chart.option.funnelStyle.bars"
1230
1230
  }, {
1231
1231
  value: "funnel",
1232
- label: "Funnel"
1232
+ label: "chart.option.funnelStyle.funnel"
1233
1233
  }],
1234
- description: "Visualization style"
1234
+ description: "chart.configText.visualization_style"
1235
1235
  },
1236
1236
  {
1237
1237
  key: "funnelOrientation",
1238
- label: "Orientation",
1238
+ label: "chart.option.funnelOrientation.label",
1239
1239
  type: "buttonGroup",
1240
1240
  defaultValue: "horizontal",
1241
1241
  options: [{
1242
1242
  value: "horizontal",
1243
- label: "Horizontal"
1243
+ label: "chart.option.funnelOrientation.horizontal"
1244
1244
  }, {
1245
1245
  value: "vertical",
1246
- label: "Vertical"
1246
+ label: "chart.option.funnelOrientation.vertical"
1247
1247
  }]
1248
1248
  },
1249
1249
  {
1250
1250
  key: "hideSummaryFooter",
1251
- label: "Hide Summary Footer",
1251
+ label: "chart.option.hideSummaryFooter.label",
1252
1252
  type: "boolean",
1253
1253
  defaultValue: !1,
1254
- description: "Hide the summary footer showing steps count and overall conversion"
1254
+ description: "chart.option.hideSummaryFooter.description"
1255
1255
  },
1256
1256
  {
1257
1257
  key: "showFunnelConversion",
1258
- label: "Show Conversion Rate",
1258
+ label: "chart.option.showConversion.label",
1259
1259
  type: "boolean",
1260
1260
  defaultValue: !0,
1261
- description: "Display step-to-step conversion percentage"
1261
+ description: "chart.option.showConversion.description"
1262
1262
  },
1263
1263
  {
1264
1264
  key: "showFunnelAvgTime",
1265
- label: "Show Avg Time",
1265
+ label: "chart.option.showAvgTime.label",
1266
1266
  type: "boolean",
1267
1267
  defaultValue: !1,
1268
- description: "Display average time to convert"
1268
+ description: "chart.option.showAvgTime.description"
1269
1269
  },
1270
1270
  {
1271
1271
  key: "showFunnelMedianTime",
1272
- label: "Show Median Time",
1272
+ label: "chart.option.showMedianTime.label",
1273
1273
  type: "boolean",
1274
1274
  defaultValue: !1,
1275
- description: "Display median time to convert"
1275
+ description: "chart.option.showMedianTime.description"
1276
1276
  },
1277
1277
  {
1278
1278
  key: "showFunnelP90Time",
1279
- label: "Show P90 Time",
1279
+ label: "chart.option.showP90Time.label",
1280
1280
  type: "boolean",
1281
1281
  defaultValue: !1,
1282
- description: "Display 90th percentile time to convert"
1282
+ description: "chart.option.showP90Time.description"
1283
1283
  }
1284
1284
  ]
1285
1285
  },
1286
1286
  sankey: {
1287
- label: "Sankey Chart",
1288
- description: "Show flow between states or steps",
1289
- useCase: "Best for visualizing user journey flows, path analysis, or state transitions",
1287
+ label: "chart.sankey.label",
1288
+ description: "chart.sankey.description",
1289
+ useCase: "chart.sankey.useCase",
1290
1290
  dropZones: [{
1291
1291
  key: "xAxis",
1292
- label: "Event Type",
1293
- description: "Event dimension that categorizes flow nodes",
1292
+ label: "chart.configText.event_type",
1293
+ description: "chart.configText.event_dimension_that_categorizes_flow_nodes",
1294
1294
  mandatory: !1,
1295
1295
  maxItems: 1,
1296
1296
  acceptTypes: ["dimension"],
1297
- emptyText: "Auto-populated from flow config"
1297
+ emptyText: "chart.sankey.dropZone.xAxis.empty"
1298
1298
  }, {
1299
1299
  key: "yAxis",
1300
- label: "Flow Count",
1301
- description: "Count of entities following each path",
1300
+ label: "chart.configText.flow_count",
1301
+ description: "chart.configText.count_of_entities_following_each_path",
1302
1302
  mandatory: !1,
1303
1303
  maxItems: 1,
1304
1304
  acceptTypes: ["measure"],
1305
- emptyText: "Calculated from flow execution"
1305
+ emptyText: "chart.sankey.dropZone.yAxis.empty"
1306
1306
  }],
1307
1307
  displayOptions: ["hideHeader"],
1308
1308
  displayOptionsConfig: [
1309
1309
  {
1310
1310
  key: "linkOpacity",
1311
- label: "Link Opacity",
1311
+ label: "chart.option.linkOpacity.label",
1312
1312
  type: "buttonGroup",
1313
1313
  defaultValue: "0.5",
1314
1314
  options: [
1315
1315
  {
1316
1316
  value: "0.3",
1317
- label: "Light"
1317
+ label: "chart.option.linkOpacity.light"
1318
1318
  },
1319
1319
  {
1320
1320
  value: "0.5",
1321
- label: "Medium"
1321
+ label: "chart.option.fontSize.medium"
1322
1322
  },
1323
1323
  {
1324
1324
  value: "0.7",
1325
- label: "Dark"
1325
+ label: "chart.option.linkOpacity.dark"
1326
1326
  }
1327
1327
  ],
1328
- description: "Opacity of flow links"
1328
+ description: "chart.configText.opacity_of_flow_links"
1329
1329
  },
1330
1330
  {
1331
1331
  key: "showNodeLabels",
1332
- label: "Show Node Labels",
1332
+ label: "chart.option.showNodeLabels.label",
1333
1333
  type: "boolean",
1334
1334
  defaultValue: !0,
1335
- description: "Display labels on flow nodes"
1335
+ description: "chart.option.showNodeLabels.description"
1336
1336
  },
1337
1337
  {
1338
1338
  key: "hideSummaryFooter",
1339
- label: "Hide Summary Footer",
1339
+ label: "chart.option.hideSummaryFooter.label",
1340
1340
  type: "boolean",
1341
1341
  defaultValue: !0,
1342
- description: "Hide the statistics footer below the chart"
1342
+ description: "chart.configText.hide_the_statistics_footer_below_the_chart"
1343
1343
  }
1344
1344
  ]
1345
1345
  },
1346
1346
  sunburst: {
1347
- label: "Sunburst Chart",
1348
- description: "Show hierarchical flow as radial rings",
1349
- useCase: "Best for visualizing forward paths from a starting event in a compact radial layout",
1347
+ label: "chart.sunburst.label",
1348
+ description: "chart.sunburst.description",
1349
+ useCase: "chart.sunburst.useCase",
1350
1350
  dropZones: [{
1351
1351
  key: "xAxis",
1352
- label: "Event Type",
1353
- description: "Event dimension that categorizes flow nodes",
1352
+ label: "chart.configText.event_type",
1353
+ description: "chart.configText.event_dimension_that_categorizes_flow_nodes",
1354
1354
  mandatory: !1,
1355
1355
  maxItems: 1,
1356
1356
  acceptTypes: ["dimension"],
1357
- emptyText: "Auto-populated from flow config"
1357
+ emptyText: "chart.sunburst.dropZone.xAxis.empty"
1358
1358
  }, {
1359
1359
  key: "yAxis",
1360
- label: "Flow Count",
1361
- description: "Count of entities following each path",
1360
+ label: "chart.configText.flow_count",
1361
+ description: "chart.configText.count_of_entities_following_each_path",
1362
1362
  mandatory: !1,
1363
1363
  maxItems: 1,
1364
1364
  acceptTypes: ["measure"],
1365
- emptyText: "Calculated from flow execution"
1365
+ emptyText: "chart.sunburst.dropZone.yAxis.empty"
1366
1366
  }],
1367
1367
  displayOptions: ["hideHeader"],
1368
1368
  displayOptionsConfig: [{
1369
1369
  key: "innerRadius",
1370
- label: "Inner Radius",
1370
+ label: "chart.option.innerRadius.label",
1371
1371
  type: "number",
1372
1372
  defaultValue: 40,
1373
1373
  min: 0,
1374
1374
  max: 100,
1375
1375
  step: 10,
1376
- description: "Size of the center hole (0 for full circle)"
1376
+ description: "chart.configText.size_of_the_center_hole_0_for_full_circle"
1377
1377
  }, {
1378
1378
  key: "hideSummaryFooter",
1379
- label: "Hide Summary Footer",
1379
+ label: "chart.option.hideSummaryFooter.label",
1380
1380
  type: "boolean",
1381
1381
  defaultValue: !0,
1382
- description: "Hide the statistics footer below the chart"
1382
+ description: "chart.configText.hide_the_statistics_footer_below_the_chart"
1383
1383
  }]
1384
1384
  },
1385
1385
  heatmap: {
1386
- label: "Heatmap",
1387
- description: "Visualize intensity across two dimensions",
1388
- useCase: "Best for showing patterns in matrix data like correlations, schedules, or category comparisons",
1386
+ label: "chart.heatmap.label",
1387
+ description: "chart.heatmap.description",
1388
+ useCase: "chart.heatmap.useCase",
1389
1389
  dropZones: [
1390
1390
  {
1391
1391
  key: "xAxis",
1392
- label: "Columns (X-Axis)",
1393
- description: "Dimension for column categories",
1392
+ label: "chart.configText.columns_x_axis",
1393
+ description: "chart.configText.dimension_for_column_categories",
1394
1394
  mandatory: !0,
1395
1395
  maxItems: 1,
1396
1396
  acceptTypes: ["dimension"],
1397
- emptyText: "Drop one dimension here"
1397
+ emptyText: "chart.heatmap.dropZone.xAxis.empty"
1398
1398
  },
1399
1399
  {
1400
1400
  key: "yAxis",
1401
- label: "Rows (Y-Axis)",
1402
- description: "Dimension for row categories",
1401
+ label: "chart.configText.rows_y_axis",
1402
+ description: "chart.configText.dimension_for_row_categories",
1403
1403
  mandatory: !0,
1404
1404
  maxItems: 1,
1405
1405
  acceptTypes: ["dimension"],
1406
- emptyText: "Drop one dimension here"
1406
+ emptyText: "chart.heatmap.dropZone.yAxis.empty"
1407
1407
  },
1408
1408
  {
1409
1409
  key: "valueField",
1410
- label: "Value (Color Intensity)",
1411
- description: "Measure that determines cell color",
1410
+ label: "chart.configText.value_color_intensity",
1411
+ description: "chart.configText.measure_that_determines_cell_color",
1412
1412
  mandatory: !0,
1413
1413
  maxItems: 1,
1414
1414
  acceptTypes: ["measure"],
1415
- emptyText: "Drop one measure here"
1415
+ emptyText: "chart.heatmap.dropZone.valueField.empty"
1416
1416
  }
1417
1417
  ],
1418
1418
  displayOptions: ["showLegend", "showTooltip"],
1419
1419
  displayOptionsConfig: [
1420
1420
  {
1421
1421
  key: "showLabels",
1422
- label: "Show Cell Values",
1422
+ label: "chart.option.showLabels.label",
1423
1423
  type: "boolean",
1424
1424
  defaultValue: !1,
1425
- description: "Display values inside each cell"
1425
+ description: "chart.option.showLabels.description"
1426
1426
  },
1427
1427
  {
1428
1428
  key: "cellShape",
1429
- label: "Cell Shape",
1429
+ label: "chart.option.cellShape.label",
1430
1430
  type: "select",
1431
1431
  defaultValue: "rect",
1432
1432
  options: [{
1433
1433
  value: "rect",
1434
- label: "Rectangle"
1434
+ label: "chart.option.cellShape.rectangle"
1435
1435
  }, {
1436
1436
  value: "circle",
1437
- label: "Circle"
1437
+ label: "chart.option.cellShape.circle"
1438
1438
  }]
1439
1439
  },
1440
1440
  {
1441
1441
  key: "xAxisFormat",
1442
- label: "X-Axis Format",
1442
+ label: "chart.option.xAxisFormat.label",
1443
1443
  type: "axisFormat",
1444
- description: "Number formatting for X-axis labels"
1444
+ description: "chart.configText.number_formatting_for_x_axis_labels"
1445
1445
  },
1446
1446
  {
1447
1447
  key: "yAxisFormat",
1448
- label: "Y-Axis Format",
1448
+ label: "chart.option.yAxisFormat.label",
1449
1449
  type: "axisFormat",
1450
- description: "Number formatting for Y-axis labels"
1450
+ description: "chart.configText.number_formatting_for_y_axis_labels"
1451
1451
  },
1452
1452
  {
1453
1453
  key: "valueFormat",
1454
- label: "Value Format",
1454
+ label: "chart.option.valueFormat.label",
1455
1455
  type: "axisFormat",
1456
- description: "Number formatting for cell values and legend"
1456
+ description: "chart.configText.number_formatting_for_cell_values_and_legend"
1457
1457
  }
1458
1458
  ],
1459
1459
  validate: (e) => e.xAxis?.length ? e.yAxis?.length ? e.valueField?.length ? { isValid: !0 } : {
1460
1460
  isValid: !1,
1461
- message: "Value measure required"
1461
+ message: "chart.heatmap.validation.valueRequired"
1462
1462
  } : {
1463
1463
  isValid: !1,
1464
- message: "Y-axis dimension required"
1464
+ message: "chart.heatmap.validation.yAxisRequired"
1465
1465
  } : {
1466
1466
  isValid: !1,
1467
- message: "X-axis dimension required"
1467
+ message: "chart.heatmap.validation.xAxisRequired"
1468
1468
  }
1469
1469
  },
1470
1470
  retentionHeatmap: {
1471
- label: "Retention Matrix",
1471
+ label: "chart.retentionHeatmap.label",
1472
1472
  dropZones: [],
1473
1473
  displayOptionsConfig: [{
1474
1474
  key: "showLegend",
1475
- label: "Show Legend",
1475
+ label: "chart.option.showLegend.label",
1476
1476
  type: "boolean",
1477
1477
  defaultValue: !0,
1478
- description: "Show the color intensity legend"
1478
+ description: "chart.configText.show_the_color_intensity_legend"
1479
1479
  }, {
1480
1480
  key: "showTooltip",
1481
- label: "Show Tooltip",
1481
+ label: "chart.option.showTooltip.label",
1482
1482
  type: "boolean",
1483
1483
  defaultValue: !0,
1484
- description: "Show tooltip on hover with detailed stats"
1484
+ description: "chart.option.showTooltip.description"
1485
1485
  }],
1486
- description: "Cohort retention matrix visualization",
1487
- useCase: "Visualize user retention over time by cohort"
1486
+ description: "chart.retentionHeatmap.description",
1487
+ useCase: "chart.retentionHeatmap.useCase"
1488
1488
  },
1489
1489
  retentionCombined: {
1490
- label: "Retention Chart",
1490
+ label: "chart.retentionCombined.label",
1491
1491
  dropZones: [],
1492
1492
  displayOptionsConfig: [
1493
1493
  {
1494
1494
  key: "retentionDisplayMode",
1495
- label: "Display Mode",
1495
+ label: "chart.option.retentionDisplayMode.label",
1496
1496
  type: "select",
1497
1497
  defaultValue: "line",
1498
1498
  options: [
1499
1499
  {
1500
1500
  value: "line",
1501
- label: "Line Chart"
1501
+ label: "chart.option.retentionDisplayMode.lineChart"
1502
1502
  },
1503
1503
  {
1504
1504
  value: "heatmap",
1505
- label: "Heatmap Table"
1505
+ label: "chart.option.retentionDisplayMode.heatmapTable"
1506
1506
  },
1507
1507
  {
1508
1508
  value: "combined",
1509
- label: "Combined"
1509
+ label: "chart.option.retentionDisplayMode.combined"
1510
1510
  }
1511
1511
  ],
1512
- description: "Choose how to visualize retention data"
1512
+ description: "chart.configText.choose_how_to_visualize_retention_data"
1513
1513
  },
1514
1514
  {
1515
1515
  key: "showLegend",
1516
- label: "Show Legend",
1516
+ label: "chart.option.showLegend.label",
1517
1517
  type: "boolean",
1518
1518
  defaultValue: !0,
1519
- description: "Show the legend for breakdown segments"
1519
+ description: "chart.configText.show_the_legend_for_breakdown_segments"
1520
1520
  },
1521
1521
  {
1522
1522
  key: "showGrid",
1523
- label: "Show Grid",
1523
+ label: "chart.option.showGrid.label",
1524
1524
  type: "boolean",
1525
1525
  defaultValue: !0,
1526
- description: "Show grid lines on the chart"
1526
+ description: "chart.option.showGrid.description"
1527
1527
  },
1528
1528
  {
1529
1529
  key: "showTooltip",
1530
- label: "Show Tooltip",
1530
+ label: "chart.option.showTooltip.label",
1531
1531
  type: "boolean",
1532
1532
  defaultValue: !0,
1533
- description: "Show tooltip on hover with detailed stats"
1533
+ description: "chart.option.showTooltip.description"
1534
1534
  }
1535
1535
  ],
1536
- description: "Combined retention visualization with line chart and heatmap modes",
1537
- useCase: "Visualize user retention over time with optional breakdown segmentation"
1536
+ description: "chart.retentionCombined.description",
1537
+ useCase: "chart.retentionCombined.useCase"
1538
1538
  },
1539
1539
  boxPlot: {
1540
- label: "Box Plot",
1541
- description: "Show statistical distribution (median, IQR, whiskers) across categories",
1542
- useCase: "Best for P&L spread per symbol, trade size distribution, latency distribution across platforms",
1540
+ label: "chart.boxPlot.label",
1541
+ description: "chart.boxPlot.description",
1542
+ useCase: "chart.boxPlot.useCase",
1543
1543
  displayOptions: ["hideHeader"],
1544
1544
  dropZones: [{
1545
1545
  key: "xAxis",
1546
- label: "X-Axis (Groups)",
1547
- description: "Dimension to group boxes by (e.g. symbol, platform)",
1546
+ label: "chart.configText.x_axis_groups",
1547
+ description: "chart.configText.dimension_to_group_boxes_by_e_g_symbol_platform",
1548
1548
  mandatory: !0,
1549
1549
  maxItems: 1,
1550
1550
  acceptTypes: ["dimension", "timeDimension"],
1551
- emptyText: "Drop a dimension here"
1551
+ emptyText: "chart.boxPlot.dropZone.xAxis.empty"
1552
1552
  }, {
1553
1553
  key: "yAxis",
1554
- label: "Y-Axis (Measures)",
1555
- description: "Drop 1 measure for auto mode, 3 for avg/stddev/median mode, or 5 for min/q1/median/q3/max mode",
1554
+ label: "chart.configText.y_axis_measures",
1555
+ description: "chart.configText.drop_1_measure_for_auto_mode_3_for_avg_stddev_median_mode_or_5_for_min_q",
1556
1556
  mandatory: !0,
1557
1557
  maxItems: 5,
1558
1558
  acceptTypes: ["measure"],
1559
- emptyText: "Drop 1, 3, or 5 measures here"
1559
+ emptyText: "chart.boxPlot.dropZone.yAxis.empty"
1560
1560
  }],
1561
1561
  displayOptionsConfig: [{
1562
1562
  key: "leftYAxisFormat",
1563
- label: "Y-Axis Format",
1563
+ label: "chart.option.yAxisFormat.label",
1564
1564
  type: "axisFormat",
1565
- description: "Number formatting for the value axis"
1565
+ description: "chart.configText.number_formatting_for_the_value_axis"
1566
1566
  }]
1567
1567
  },
1568
1568
  waterfall: {
1569
- label: "Waterfall Chart",
1570
- description: "Show cumulative effect of sequential positive and negative values",
1571
- useCase: "Best for P&L decomposition, cash flow analysis, budget variance, or any sequential contribution breakdown",
1569
+ label: "chart.waterfall.label",
1570
+ description: "chart.waterfall.description",
1571
+ useCase: "chart.waterfall.useCase",
1572
1572
  clickableElements: { bar: !0 },
1573
1573
  displayOptions: ["showTooltip", "hideHeader"],
1574
1574
  dropZones: [{
1575
1575
  key: "xAxis",
1576
- label: "X-Axis (Categories)",
1577
- description: "Dimension labels for each bar segment (e.g. symbol, transaction type)",
1576
+ label: "chart.dropZone.xAxis.label",
1577
+ description: "chart.configText.dimension_labels_for_each_bar_segment_e_g_symbol_transaction_type",
1578
1578
  mandatory: !0,
1579
1579
  maxItems: 1,
1580
1580
  acceptTypes: ["dimension", "timeDimension"],
1581
- emptyText: "Drop a dimension here"
1581
+ emptyText: "chart.waterfall.dropZone.xAxis.empty"
1582
1582
  }, {
1583
1583
  key: "yAxis",
1584
- label: "Y-Axis (Value)",
1585
- description: "Single measure whose values are summed cumulatively",
1584
+ label: "chart.configText.y_axis_value",
1585
+ description: "chart.configText.single_measure_whose_values_are_summed_cumulatively",
1586
1586
  mandatory: !0,
1587
1587
  maxItems: 1,
1588
1588
  acceptTypes: ["measure"],
1589
- emptyText: "Drop a measure here"
1589
+ emptyText: "chart.waterfall.dropZone.yAxis.empty"
1590
1590
  }],
1591
1591
  displayOptionsConfig: [
1592
1592
  {
1593
1593
  key: "showTotal",
1594
- label: "Show Total Bar",
1594
+ label: "chart.option.showTotal.label",
1595
1595
  type: "boolean",
1596
1596
  defaultValue: !0,
1597
- description: "Append a final bar showing the running total"
1597
+ description: "chart.option.showTotal.description"
1598
1598
  },
1599
1599
  {
1600
1600
  key: "showConnectorLine",
1601
- label: "Show Connector Line",
1601
+ label: "chart.option.showConnectorLine.label",
1602
1602
  type: "boolean",
1603
1603
  defaultValue: !0,
1604
- description: "Draw a dashed step-line connecting bar tops"
1604
+ description: "chart.option.showConnectorLine.description"
1605
1605
  },
1606
1606
  {
1607
1607
  key: "showDataLabels",
1608
- label: "Show Data Labels",
1608
+ label: "chart.option.showDataLabels.label",
1609
1609
  type: "boolean",
1610
1610
  defaultValue: !1,
1611
- description: "Display the value above each bar segment"
1611
+ description: "chart.configText.display_the_value_above_each_bar_segment"
1612
1612
  },
1613
1613
  {
1614
1614
  key: "leftYAxisFormat",
1615
- label: "Y-Axis Format",
1615
+ label: "chart.option.yAxisFormat.label",
1616
1616
  type: "axisFormat",
1617
- description: "Number formatting for the Y-axis"
1617
+ description: "chart.configText.number_formatting_for_the_y_axis"
1618
1618
  }
1619
1619
  ]
1620
1620
  },
1621
1621
  candlestick: {
1622
- label: "Candlestick Chart",
1623
- description: "Financial candlestick chart showing open/close body and high/low wicks",
1624
- useCase: "Best for EOD quotes (bid/ask spread per date/symbol), markout distribution bands, or OHLC price data",
1622
+ label: "chart.candlestick.label",
1623
+ description: "chart.candlestick.description",
1624
+ useCase: "chart.candlestick.useCase",
1625
1625
  clickableElements: { bar: !0 },
1626
1626
  displayOptions: ["hideHeader"],
1627
1627
  dropZones: [{
1628
1628
  key: "xAxis",
1629
- label: "X-Axis (Time / Category)",
1630
- description: "Time dimension or category for each candle (e.g. date, symbol)",
1629
+ label: "chart.configText.x_axis_time_category",
1630
+ description: "chart.configText.time_dimension_or_category_for_each_candle_e_g_date_symbol",
1631
1631
  mandatory: !0,
1632
1632
  maxItems: 1,
1633
1633
  acceptTypes: ["timeDimension", "dimension"],
1634
- emptyText: "Drop a time or dimension here"
1634
+ emptyText: "chart.candlestick.dropZone.xAxis.empty"
1635
1635
  }, {
1636
1636
  key: "yAxis",
1637
- label: "OHLC Measures (open, close, high, low)",
1638
- description: "Drop 2–4 measures in order: open, close, high, low (OHLC mode). For range mode drop 2: high, low.",
1637
+ label: "chart.configText.ohlc_measures_open_close_high_low",
1638
+ description: "chart.configText.drop_2_4_measures_in_order_open_close_high_low_ohlc_mode_for_range_mode_",
1639
1639
  mandatory: !0,
1640
1640
  acceptTypes: ["measure"],
1641
- emptyText: "Drop 2+ measures here"
1641
+ emptyText: "chart.candlestick.dropZone.yAxis.empty"
1642
1642
  }],
1643
1643
  displayOptionsConfig: [
1644
1644
  {
1645
1645
  key: "rangeMode",
1646
- label: "Chart Mode",
1646
+ label: "chart.option.rangeMode.label",
1647
1647
  type: "select",
1648
1648
  defaultValue: "ohlc",
1649
1649
  options: [{
1650
1650
  value: "ohlc",
1651
- label: "OHLC (open, close, high, low)"
1651
+ label: "chart.option.rangeMode.ohlc"
1652
1652
  }, {
1653
1653
  value: "range",
1654
- label: "Range (high, low / bid, ask)"
1654
+ label: "chart.option.rangeMode.range"
1655
1655
  }],
1656
- description: "OHLC: 4 measures. Range: 2 measures (high + low)."
1656
+ description: "chart.option.rangeMode.description"
1657
1657
  },
1658
1658
  {
1659
1659
  key: "bullColor",
1660
- label: "Bullish Colour",
1660
+ label: "chart.option.bullColor.label",
1661
1661
  type: "color",
1662
1662
  defaultValue: "#22c55e",
1663
- description: "Candle colour when close ≥ open"
1663
+ description: "chart.option.bullColor.description"
1664
1664
  },
1665
1665
  {
1666
1666
  key: "bearColor",
1667
- label: "Bearish Colour",
1667
+ label: "chart.option.bearColor.label",
1668
1668
  type: "color",
1669
1669
  defaultValue: "#ef4444",
1670
- description: "Candle colour when close < open"
1670
+ description: "chart.option.bearColor.description"
1671
1671
  },
1672
1672
  {
1673
1673
  key: "showWicks",
1674
- label: "Show Wicks",
1674
+ label: "chart.option.showWicks.label",
1675
1675
  type: "boolean",
1676
1676
  defaultValue: !0,
1677
- description: "Draw high/low wicks above and below the body"
1677
+ description: "chart.option.showWicks.description"
1678
1678
  },
1679
1679
  {
1680
1680
  key: "leftYAxisFormat",
1681
- label: "Y-Axis Format",
1681
+ label: "chart.option.yAxisFormat.label",
1682
1682
  type: "axisFormat",
1683
- description: "Number formatting for the price axis"
1683
+ description: "chart.configText.number_formatting_for_the_price_axis"
1684
1684
  }
1685
1685
  ]
1686
1686
  },
1687
1687
  measureProfile: {
1688
- label: "Measure Profile",
1689
- description: "Plot N measures as sequential X-axis points to visualise a profile or shape across intervals",
1690
- useCase: "Best for markout interval analysis (e.g. avgMinus2m → avgAtEvent → avgPlus2h), metric profiles, or any pattern across ordered measures",
1688
+ label: "chart.measureProfile.label",
1689
+ description: "chart.measureProfile.description",
1690
+ useCase: "chart.measureProfile.useCase",
1691
1691
  displayOptions: [
1692
1692
  "showLegend",
1693
1693
  "showTooltip",
@@ -1695,165 +1695,170 @@ var u = {
1695
1695
  ],
1696
1696
  dropZones: [{
1697
1697
  key: "yAxis",
1698
- label: "Measures (X-Axis Order)",
1699
- description: "Add 2 or more measures — they become the X-axis categories in the order listed",
1698
+ label: "chart.configText.measures_x_axis_order",
1699
+ description: "chart.configText.add_2_or_more_measures_they_become_the_x_axis_categories_in_the_order_li",
1700
1700
  mandatory: !0,
1701
1701
  acceptTypes: ["measure"],
1702
- emptyText: "Drop 2+ measures here (displayed left → right)"
1702
+ emptyText: "chart.measureProfile.dropZone.yAxis.empty"
1703
1703
  }, {
1704
1704
  key: "series",
1705
- label: "Series (Split into Multiple Lines)",
1706
- description: "Dimension to split data into separate profile lines (e.g. symbol, platform)",
1705
+ label: "chart.configText.series_split_into_multiple_lines",
1706
+ description: "chart.configText.dimension_to_split_data_into_separate_profile_lines_e_g_symbol_platform",
1707
1707
  mandatory: !1,
1708
1708
  maxItems: 1,
1709
1709
  acceptTypes: ["dimension"],
1710
- emptyText: "Drop a dimension here to create multiple lines"
1710
+ emptyText: "chart.measureProfile.dropZone.series.empty"
1711
1711
  }],
1712
1712
  displayOptionsConfig: [
1713
1713
  {
1714
1714
  key: "showReferenceLineAtZero",
1715
- label: "Show Zero Reference Line",
1715
+ label: "chart.option.showReferenceLineAtZero.label",
1716
1716
  type: "boolean",
1717
1717
  defaultValue: !0,
1718
- description: "Draw a dashed line at Y = 0"
1718
+ description: "chart.option.showReferenceLineAtZero.description"
1719
1719
  },
1720
1720
  {
1721
1721
  key: "showDataLabels",
1722
- label: "Show Data Labels",
1722
+ label: "chart.option.showDataLabels.label",
1723
1723
  type: "boolean",
1724
1724
  defaultValue: !1,
1725
- description: "Display value at each data point"
1725
+ description: "chart.configText.display_value_at_each_data_point"
1726
1726
  },
1727
1727
  {
1728
1728
  key: "showLegend",
1729
- label: "Show Legend",
1729
+ label: "chart.option.showLegend.label",
1730
1730
  type: "boolean",
1731
1731
  defaultValue: !0,
1732
- description: "Show series legend (only visible with a Series dimension)"
1732
+ description: "chart.configText.show_series_legend_only_visible_with_a_series_dimension"
1733
1733
  },
1734
1734
  {
1735
1735
  key: "lineType",
1736
- label: "Line Interpolation",
1736
+ label: "chart.option.lineType.label",
1737
1737
  type: "select",
1738
1738
  defaultValue: "monotone",
1739
1739
  options: [
1740
1740
  {
1741
1741
  value: "monotone",
1742
- label: "Smooth (monotone)"
1742
+ label: "chart.option.lineType.smooth"
1743
1743
  },
1744
1744
  {
1745
1745
  value: "linear",
1746
- label: "Linear"
1746
+ label: "chart.option.lineType.linear"
1747
1747
  },
1748
1748
  {
1749
1749
  value: "step",
1750
- label: "Step"
1750
+ label: "chart.option.lineType.step"
1751
1751
  }
1752
1752
  ],
1753
- description: "How data points are connected"
1753
+ description: "chart.option.lineType.description"
1754
1754
  },
1755
1755
  {
1756
1756
  key: "leftYAxisFormat",
1757
- label: "Y-Axis Format",
1757
+ label: "chart.option.yAxisFormat.label",
1758
1758
  type: "axisFormat",
1759
- description: "Number formatting for the Y-axis"
1759
+ description: "chart.configText.number_formatting_for_the_y_axis"
1760
1760
  }
1761
1761
  ]
1762
1762
  },
1763
1763
  gauge: {
1764
- label: "Gauge Chart",
1765
- description: "Half-circle arc gauge for a single KPI value versus a maximum target",
1766
- useCase: "Best for high-water marks vs equity, margin utilisation, or any single value progress toward a goal",
1764
+ label: "chart.gauge.label",
1765
+ description: "chart.gauge.description",
1766
+ useCase: "chart.gauge.useCase",
1767
1767
  clickableElements: {},
1768
1768
  displayOptions: ["hideHeader"],
1769
1769
  dropZones: [{
1770
1770
  key: "yAxis",
1771
- label: "Value Measure",
1772
- description: "Current value to display on the gauge (e.g. current equity, margin used)",
1771
+ label: "chart.configText.value_measure",
1772
+ description: "chart.configText.current_value_to_display_on_the_gauge_e_g_current_equity_margin_used",
1773
1773
  mandatory: !0,
1774
1774
  maxItems: 2,
1775
1775
  acceptTypes: ["measure"],
1776
- emptyText: "Drop 1 measure here (optional 2nd for dynamic max)"
1776
+ emptyText: "chart.gauge.dropZone.yAxis.empty"
1777
1777
  }],
1778
1778
  displayOptionsConfig: [
1779
1779
  {
1780
1780
  key: "minValue",
1781
- label: "Minimum Value",
1781
+ label: "chart.option.minValue.label",
1782
1782
  type: "number",
1783
1783
  defaultValue: 0,
1784
- description: "Lower bound of the gauge arc (default 0)"
1784
+ description: "chart.option.minValue.description"
1785
1785
  },
1786
1786
  {
1787
1787
  key: "maxValue",
1788
- label: "Maximum Value (static)",
1788
+ label: "chart.option.maxValue.label",
1789
1789
  type: "number",
1790
- description: "Upper bound of the gauge. Leave empty to use yAxis[1] or default 100"
1790
+ description: "chart.option.maxValue.description"
1791
1791
  },
1792
1792
  {
1793
1793
  key: "thresholds",
1794
- label: "Threshold Bands",
1794
+ label: "chart.configText.threshold_bands",
1795
1795
  type: "string",
1796
1796
  placeholder: "[{\"value\":0.33,\"color\":\"#22c55e\"},{\"value\":0.66,\"color\":\"#f59e0b\"},{\"value\":1,\"color\":\"#ef4444\"}]",
1797
- description: "Array of {value (0–1 fraction), color} bands shown as outer arc markers"
1797
+ description: "chart.configText.array_of_value_0_1_fraction_color_bands_shown_as_outer_arc_markers"
1798
1798
  },
1799
1799
  {
1800
1800
  key: "showCenterLabel",
1801
- label: "Show Centre Label",
1801
+ label: "chart.option.showCentreLabel.label",
1802
1802
  type: "boolean",
1803
1803
  defaultValue: !0,
1804
- description: "Display current value and field name in the centre of the gauge"
1804
+ description: "chart.option.showCentreLabel.description"
1805
1805
  },
1806
1806
  {
1807
1807
  key: "showPercentage",
1808
- label: "Show as Percentage",
1808
+ label: "chart.option.showPercentage.label",
1809
1809
  type: "boolean",
1810
1810
  defaultValue: !1,
1811
- description: "Display value as % of max instead of raw number"
1811
+ description: "chart.option.showPercentage.description"
1812
1812
  },
1813
1813
  {
1814
1814
  key: "leftYAxisFormat",
1815
- label: "Value Format",
1815
+ label: "chart.option.valueFormat.label",
1816
1816
  type: "axisFormat",
1817
- description: "Number formatting for the displayed value and axis labels"
1817
+ description: "chart.configText.number_formatting_for_the_displayed_value_and_axis_labels"
1818
1818
  }
1819
1819
  ]
1820
1820
  }
1821
1821
  };
1822
1822
  //#endregion
1823
1823
  //#region src/server/agent/chart-validation.ts
1824
- function d(e, t, n) {
1825
- let r = u[e];
1826
- if (!r || r.skipQuery) return {
1824
+ function f(t, n, r) {
1825
+ let i = d[t];
1826
+ if (!i || i.skipQuery) return {
1827
1827
  isValid: !0,
1828
1828
  errors: []
1829
1829
  };
1830
- let i = [];
1831
- for (let n of r.dropZones) {
1832
- if (!n.mandatory) continue;
1833
- let r = t?.[n.key];
1834
- if (!(Array.isArray(r) ? r.length > 0 : r)) {
1835
- let t = n.acceptTypes?.join("/") ?? "fields";
1836
- i.push(`chartConfig.${n.key} is required for ${e} chart (${n.label}). Accepts: ${t}.`);
1830
+ let a = [];
1831
+ for (let r of i.dropZones) {
1832
+ if (!r.mandatory) continue;
1833
+ let i = n?.[r.key];
1834
+ if (!(Array.isArray(i) ? i.length > 0 : i)) {
1835
+ let n = r.acceptTypes?.join("/") ?? "fields";
1836
+ a.push(e("server.validation.chart.dropZoneRequired", {
1837
+ key: r.key,
1838
+ chartType: t,
1839
+ label: r.label,
1840
+ acceptDesc: n
1841
+ }));
1837
1842
  }
1838
1843
  }
1839
- if (e === "bar") {
1840
- let e = t?.xAxis;
1841
- if (!(Array.isArray(e) ? e.length > 0 : e)) {
1842
- let e = n.dimensions ?? [], t = n.timeDimensions ?? [];
1843
- e.length > 0 || t.length > 0 ? i.push("chartConfig.xAxis is required for bar charts. Put a dimension in xAxis so bars have category labels.") : i.push("Bar charts need an xAxis dimension for category labels. Add a dimension to the query or use \"table\" chart type instead.");
1844
+ if (t === "bar") {
1845
+ let t = n?.xAxis;
1846
+ if (!(Array.isArray(t) ? t.length > 0 : t)) {
1847
+ let t = r.dimensions ?? [], n = r.timeDimensions ?? [];
1848
+ t.length > 0 || n.length > 0 ? a.push(e("server.validation.chart.barXAxisRequired")) : a.push(e("server.validation.chart.barNeedsDimension"));
1844
1849
  }
1845
1850
  }
1846
- if (t?.xAxis && t?.series) {
1847
- let e = new Set(Array.isArray(t.xAxis) ? t.xAxis : [t.xAxis]), n = (Array.isArray(t.series) ? t.series : [t.series]).filter((t) => e.has(t));
1848
- n.length > 0 && i.push(`chartConfig.series must not contain the same field as xAxis (found: ${n.join(", ")}). The series field is only for splitting into grouped/stacked sub-series by a DIFFERENT dimension. Remove the duplicate from series.`);
1851
+ if (n?.xAxis && n?.series) {
1852
+ let t = new Set(Array.isArray(n.xAxis) ? n.xAxis : [n.xAxis]), r = (Array.isArray(n.series) ? n.series : [n.series]).filter((e) => t.has(e));
1853
+ r.length > 0 && a.push(e("server.validation.chart.seriesDuplicatesXAxis", { duplicates: r.join(", ") }));
1849
1854
  }
1850
1855
  return {
1851
- isValid: i.length === 0,
1852
- errors: i
1856
+ isValid: a.length === 0,
1857
+ errors: a
1853
1858
  };
1854
1859
  }
1855
- function f(e, t, n) {
1856
- let r = u[e];
1860
+ function p(e, t, n) {
1861
+ let r = d[e];
1857
1862
  if (!r) return t ?? {};
1858
1863
  let i = { ...t }, a = n.measures ?? [], o = n.dimensions ?? [], s = (n.timeDimensions ?? []).map((e) => e.dimension);
1859
1864
  for (let e of r.dropZones) {
@@ -1885,10 +1890,10 @@ function f(e, t, n) {
1885
1890
  }
1886
1891
  return i;
1887
1892
  }
1888
- function p(e) {
1893
+ function m(e) {
1889
1894
  let t = ["\nChart config requirements by type:"];
1890
1895
  for (let n of e) {
1891
- let e = u[n];
1896
+ let e = d[n];
1892
1897
  if (!e) continue;
1893
1898
  let r = [e.description ?? "", e.useCase ?? ""].filter(Boolean).join(". "), i = r ? ` — ${r}.` : "", a = e.dropZones.filter((e) => e.mandatory);
1894
1899
  if (a.length === 0 && !e.skipQuery) {
@@ -1909,7 +1914,7 @@ function p(e) {
1909
1914
  }
1910
1915
  //#endregion
1911
1916
  //#region src/server/agent/tools.ts
1912
- var m = [
1917
+ var h = [
1913
1918
  "bar",
1914
1919
  "line",
1915
1920
  "area",
@@ -1929,7 +1934,7 @@ var m = [
1929
1934
  "boxPlot",
1930
1935
  "markdown"
1931
1936
  ];
1932
- function h() {
1937
+ function g() {
1933
1938
  return [
1934
1939
  {
1935
1940
  name: "discover_cubes",
@@ -1969,12 +1974,12 @@ function h() {
1969
1974
  description: "Execute a semantic query and return data results. Supports standard queries (measures/dimensions) and analysis modes (funnel/flow/retention). Only provide ONE mode per call.",
1970
1975
  parameters: {
1971
1976
  type: "object",
1972
- properties: r
1977
+ properties: i
1973
1978
  }
1974
1979
  },
1975
1980
  {
1976
1981
  name: "add_portlet",
1977
- description: "Add a chart visualization to the notebook.\n" + p(m) + "\nThe query is validated before adding. The portlet fetches its own data.",
1982
+ description: "Add a chart visualization to the notebook.\n" + m(h) + "\nThe query is validated before adding. The portlet fetches its own data.",
1978
1983
  parameters: {
1979
1984
  type: "object",
1980
1985
  properties: {
@@ -1988,7 +1993,7 @@ function h() {
1988
1993
  },
1989
1994
  chartType: {
1990
1995
  type: "string",
1991
- enum: m,
1996
+ enum: h,
1992
1997
  description: "Chart type to render"
1993
1998
  },
1994
1999
  chartConfig: {
@@ -2084,7 +2089,7 @@ function h() {
2084
2089
  },
2085
2090
  chartType: {
2086
2091
  type: "string",
2087
- enum: m,
2092
+ enum: h,
2088
2093
  description: "Chart type. Use \"markdown\" for section headers."
2089
2094
  },
2090
2095
  query: {
@@ -2208,14 +2213,14 @@ function h() {
2208
2213
  }
2209
2214
  ];
2210
2215
  }
2211
- function g(r) {
2212
- let { semanticLayer: i, securityContext: a } = r, o = /* @__PURE__ */ new Map();
2213
- o.set("discover_cubes", async (t) => {
2214
- let n = { cubes: (await e(i, {
2215
- topic: t.topic,
2216
- intent: t.intent,
2217
- limit: t.limit,
2218
- minScore: t.minScore
2216
+ function _(e) {
2217
+ let { semanticLayer: i, securityContext: a } = e, o = /* @__PURE__ */ new Map();
2218
+ o.set("discover_cubes", async (e) => {
2219
+ let n = { cubes: (await t(i, {
2220
+ topic: e.topic,
2221
+ intent: e.intent,
2222
+ limit: e.limit,
2223
+ minScore: e.minScore
2219
2224
  })).cubes.map((e) => ({
2220
2225
  cube: e.cube,
2221
2226
  title: e.title,
@@ -2257,8 +2262,8 @@ function g(r) {
2257
2262
  if (n.length > 0) throw Error(`Invalid ${t}:\n${n.join("\n")}`);
2258
2263
  };
2259
2264
  t(e.measures, "measures"), t(e.dimensions, "dimensions");
2260
- let r;
2261
- r = e.funnel ? { funnel: e.funnel } : e.flow ? { flow: e.flow } : e.retention ? { retention: e.retention } : {
2265
+ let n;
2266
+ n = e.funnel ? { funnel: e.funnel } : e.flow ? { flow: e.flow } : e.retention ? { retention: e.retention } : {
2262
2267
  measures: e.measures,
2263
2268
  dimensions: e.dimensions,
2264
2269
  filters: e.filters,
@@ -2268,7 +2273,7 @@ function g(r) {
2268
2273
  offset: e.offset,
2269
2274
  ungrouped: e.ungrouped
2270
2275
  };
2271
- let o = await n(i, a, { query: r });
2276
+ let o = await r(i, a, { query: n });
2272
2277
  return { result: JSON.stringify({
2273
2278
  rowCount: o.data.length,
2274
2279
  data: o.data,
@@ -2292,7 +2297,7 @@ function g(r) {
2292
2297
  };
2293
2298
  }
2294
2299
  }), o.set("add_portlet", async (e) => {
2295
- let n = {
2300
+ let t = {
2296
2301
  number: "kpiNumber",
2297
2302
  retention: "retentionHeatmap"
2298
2303
  }[e.chartType] ?? e.chartType, r;
@@ -2304,7 +2309,7 @@ function g(r) {
2304
2309
  isError: !0
2305
2310
  };
2306
2311
  }
2307
- r = t(r);
2312
+ r = n(r);
2308
2313
  let a = i.validateQuery(r);
2309
2314
  if (!a.isValid) return {
2310
2315
  result: `Invalid query — fix these errors and retry:\n${a.errors.join("\n")}\n\nAttempted query:\n${JSON.stringify(r, null, 2)}`,
@@ -2313,23 +2318,23 @@ function g(r) {
2313
2318
  let o = !!(r.funnel || r.flow || r.retention), s;
2314
2319
  if (o) s = e.chartConfig ?? {};
2315
2320
  else {
2316
- let t = f(n, e.chartConfig, r), i = d(n, t, r);
2321
+ let n = p(t, e.chartConfig, r), i = f(t, n, r);
2317
2322
  if (!i.isValid) return {
2318
2323
  result: `Chart config invalid — fix these errors and retry:\n${i.errors.join("\n")}`,
2319
2324
  isError: !0
2320
2325
  };
2321
- s = t;
2326
+ s = n;
2322
2327
  }
2323
2328
  let c = `portlet-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`, l = {
2324
2329
  id: c,
2325
2330
  title: e.title,
2326
2331
  query: e.query,
2327
- chartType: n,
2332
+ chartType: t,
2328
2333
  chartConfig: s,
2329
2334
  displayConfig: e.displayConfig
2330
2335
  };
2331
2336
  return {
2332
- result: `Portlet "${e.title}" added to notebook (id: ${c}, chart: ${n}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,
2337
+ result: `Portlet "${e.title}" added to notebook (id: ${c}, chart: ${t}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,
2333
2338
  sideEffect: {
2334
2339
  type: "add_portlet",
2335
2340
  data: l
@@ -2350,27 +2355,27 @@ function g(r) {
2350
2355
  };
2351
2356
  }), o.set("save_as_dashboard", async (e) => {
2352
2357
  try {
2353
- let n = e.portlets;
2354
- if (!n || n.length === 0) return {
2358
+ let t = e.portlets;
2359
+ if (!t || t.length === 0) return {
2355
2360
  result: "Dashboard must contain at least one portlet.",
2356
2361
  isError: !0
2357
2362
  };
2358
2363
  let r = [];
2359
- for (let e of n) {
2364
+ for (let e of t) {
2360
2365
  if (e.chartType === "markdown") continue;
2361
- let n = e.query;
2362
- if (!n) {
2366
+ let t = e.query;
2367
+ if (!t) {
2363
2368
  r.push(`Portlet "${e.title}": missing query`);
2364
2369
  continue;
2365
2370
  }
2366
2371
  let a;
2367
2372
  try {
2368
- a = JSON.parse(n);
2373
+ a = JSON.parse(t);
2369
2374
  } catch {
2370
2375
  r.push(`Portlet "${e.title}": invalid JSON query`);
2371
2376
  continue;
2372
2377
  }
2373
- a = t(a);
2378
+ a = n(a);
2374
2379
  let o = i.validateQuery(a);
2375
2380
  o.isValid || r.push(`Portlet "${e.title}": ${o.errors.join(", ")}`);
2376
2381
  }
@@ -2379,7 +2384,7 @@ function g(r) {
2379
2384
  isError: !0
2380
2385
  };
2381
2386
  let a = {
2382
- portlets: n.map((e) => {
2387
+ portlets: t.map((e) => {
2383
2388
  let t = e.chartType, n = t === "markdown", r = n ? "query" : e.analysisType || "query", i = r === "funnel" ? "funnel" : r === "flow" ? "flow" : r === "retention" ? "retention" : "query", a = e.query || "{}", o;
2384
2389
  try {
2385
2390
  o = JSON.parse(a);
@@ -2432,7 +2437,7 @@ function g(r) {
2432
2437
  }
2433
2438
  //#endregion
2434
2439
  //#region src/server/agent/providers/factory.ts
2435
- async function _(e, t, n) {
2440
+ async function v(e, t, n) {
2436
2441
  switch (e) {
2437
2442
  case "anthropic": {
2438
2443
  let { AnthropicProvider: e } = await import("./anthropic-DpEbCVvF.js");
@@ -2451,39 +2456,39 @@ async function _(e, t, n) {
2451
2456
  }
2452
2457
  //#endregion
2453
2458
  //#region src/server/agent/handler.ts
2454
- var v = {
2459
+ var y = {
2455
2460
  anthropic: "claude-sonnet-4-6",
2456
2461
  openai: "gpt-4.1-mini",
2457
2462
  google: "gemini-3-flash-preview"
2458
2463
  };
2459
- async function* y(e) {
2460
- let { message: t, history: n, semanticLayer: r, securityContext: i, agentConfig: a, apiKey: o } = e, s = e.sessionId || crypto.randomUUID(), c = a.observability, u = crypto.randomUUID(), d = Date.now(), f = e.providerOverride || a.provider || "anthropic", p = e.modelOverride || a.model || v[f] || "claude-sonnet-4-6", m = e.baseURLOverride || a.baseURL, y = a.maxTurns || 25, b = a.maxTokens || 4096, x;
2464
+ async function* b(t) {
2465
+ let { message: n, history: r, semanticLayer: i, securityContext: a, agentConfig: o, apiKey: s } = t, c = t.sessionId || crypto.randomUUID(), l = o.observability, d = crypto.randomUUID(), f = Date.now(), p = t.providerOverride || o.provider || "anthropic", m = t.modelOverride || o.model || y[p] || "claude-sonnet-4-6", h = t.baseURLOverride || o.baseURL, b = o.maxTurns || 25, x = o.maxTokens || 4096, S;
2461
2466
  try {
2462
- x = await _(f, o, { baseURL: m });
2463
- } catch (e) {
2464
- console.error("[agent] Failed to create %s provider: %s", String(f).replace(/\n|\r/g, ""), String(e instanceof Error ? e.message : e).replace(/\n|\r/g, "")), yield {
2467
+ S = await v(p, s, { baseURL: h });
2468
+ } catch (t) {
2469
+ console.error("[agent] Failed to create %s provider: %s", String(p).replace(/\n|\r/g, ""), String(t instanceof Error ? t.message : t).replace(/\n|\r/g, "")), yield {
2465
2470
  type: "error",
2466
- data: { message: e instanceof Error ? e.message : "Failed to initialize LLM provider" }
2471
+ data: { message: t instanceof Error ? t.message : e("server.errors.llmInitFailed") }
2467
2472
  };
2468
2473
  return;
2469
2474
  }
2470
- let S = h(), C = g({
2471
- semanticLayer: r,
2472
- securityContext: i
2473
- }), w = l(r.getMetadata());
2474
- e.systemContext && (w += `\n\n## User Context\n\n${e.systemContext}`);
2475
+ let C = g(), w = _({
2476
+ semanticLayer: i,
2477
+ securityContext: a
2478
+ }), T = u(i.getMetadata());
2479
+ t.systemContext && (T += `\n\n## User Context\n\n${t.systemContext}`);
2475
2480
  try {
2476
- c?.onChatStart?.({
2477
- traceId: u,
2478
- sessionId: s,
2479
- message: t,
2480
- model: p,
2481
- historyLength: n?.length ?? 0
2481
+ l?.onChatStart?.({
2482
+ traceId: d,
2483
+ sessionId: c,
2484
+ message: n,
2485
+ model: m,
2486
+ historyLength: r?.length ?? 0
2482
2487
  });
2483
2488
  } catch {}
2484
- let T = [];
2485
- if (n && n.length > 0) {
2486
- for (let e of n) if (e.role === "user") T.push({
2489
+ let E = [];
2490
+ if (r && r.length > 0) {
2491
+ for (let e of r) if (e.role === "user") E.push({
2487
2492
  role: "user",
2488
2493
  content: e.content
2489
2494
  });
@@ -2499,7 +2504,7 @@ async function* y(e) {
2499
2504
  name: n.name,
2500
2505
  input: n.input || {}
2501
2506
  });
2502
- T.push({
2507
+ E.push({
2503
2508
  role: "assistant",
2504
2509
  content: t
2505
2510
  });
@@ -2508,31 +2513,31 @@ async function* y(e) {
2508
2513
  toolName: e.name,
2509
2514
  content: typeof e.result == "string" ? e.result : JSON.stringify(e.result ?? ""),
2510
2515
  isError: e.status === "error"
2511
- })), r = x.formatToolResults(n);
2512
- if (Array.isArray(r)) for (let e of r) T.push(e);
2513
- else T.push(r);
2514
- } else t.length > 0 && T.push({
2516
+ })), r = S.formatToolResults(n);
2517
+ if (Array.isArray(r)) for (let e of r) E.push(e);
2518
+ else E.push(r);
2519
+ } else t.length > 0 && E.push({
2515
2520
  role: "assistant",
2516
2521
  content: e.content
2517
2522
  });
2518
2523
  }
2519
2524
  }
2520
- T.push({
2525
+ E.push({
2521
2526
  role: "user",
2522
- content: t
2527
+ content: n
2523
2528
  });
2524
- let E = 0;
2529
+ let D = 0;
2525
2530
  try {
2526
- for (let e = 0; e < y; e++) {
2527
- E = e + 1;
2528
- let t = await x.createStream({
2529
- model: p,
2530
- maxTokens: b,
2531
- system: w,
2532
- tools: S,
2533
- messages: T
2534
- }), n = [], r = "", i = "", a, o, s = Date.now(), l = !1;
2535
- for await (let e of x.parseStreamEvents(t)) {
2531
+ for (let e = 0; e < b; e++) {
2532
+ D = e + 1;
2533
+ let t = await S.createStream({
2534
+ model: m,
2535
+ maxTokens: x,
2536
+ system: T,
2537
+ tools: C,
2538
+ messages: E
2539
+ }), n = [], r = "", i = "", a, o, s = Date.now(), c = !1;
2540
+ for await (let e of S.parseStreamEvents(t)) {
2536
2541
  let t = e;
2537
2542
  switch (t.type) {
2538
2543
  case "text_delta": {
@@ -2547,7 +2552,7 @@ async function* y(e) {
2547
2552
  break;
2548
2553
  }
2549
2554
  case "tool_use_start":
2550
- if (l && r) {
2555
+ if (c && r) {
2551
2556
  let e = n[n.length - 1];
2552
2557
  if (e?.type === "tool_use") try {
2553
2558
  e.input = JSON.parse(r);
@@ -2559,7 +2564,7 @@ async function* y(e) {
2559
2564
  name: t.name,
2560
2565
  input: {},
2561
2566
  ...t.metadata ? { metadata: t.metadata } : {}
2562
- }), r = "", l = !0, yield {
2567
+ }), r = "", c = !0, yield {
2563
2568
  type: "tool_use_start",
2564
2569
  data: {
2565
2570
  id: t.id,
@@ -2575,7 +2580,7 @@ async function* y(e) {
2575
2580
  if (t.id && t.input) {
2576
2581
  let e = n.find((e) => e.type === "tool_use" && e.id === t.id);
2577
2582
  e && (e.input = t.input);
2578
- } else if (l) {
2583
+ } else if (c) {
2579
2584
  let e = n[n.length - 1];
2580
2585
  if (e?.type === "tool_use" && r) {
2581
2586
  try {
@@ -2585,7 +2590,7 @@ async function* y(e) {
2585
2590
  }
2586
2591
  r = "";
2587
2592
  }
2588
- l = !1;
2593
+ c = !1;
2589
2594
  }
2590
2595
  break;
2591
2596
  case "message_meta":
@@ -2594,28 +2599,28 @@ async function* y(e) {
2594
2599
  }
2595
2600
  }
2596
2601
  try {
2597
- c?.onGenerationEnd?.({
2598
- traceId: u,
2602
+ l?.onGenerationEnd?.({
2603
+ traceId: d,
2599
2604
  turn: e,
2600
- model: p,
2605
+ model: m,
2601
2606
  stopReason: i,
2602
2607
  inputTokens: a,
2603
2608
  outputTokens: o,
2604
2609
  durationMs: Date.now() - s,
2605
- input: T,
2610
+ input: E,
2606
2611
  output: n
2607
2612
  });
2608
2613
  } catch {}
2609
- if (T.push({
2614
+ if (E.push({
2610
2615
  role: "assistant",
2611
2616
  content: n
2612
- }), !x.shouldContinue(i)) break;
2613
- let d = [];
2617
+ }), !S.shouldContinue(i)) break;
2618
+ let u = [];
2614
2619
  for (let t of n) {
2615
2620
  if (t.type !== "tool_use") continue;
2616
- let n = t.name, r = t.input || {}, i = t.id, a = C.get(n);
2621
+ let n = t.name, r = t.input || {}, i = t.id, a = w.get(n);
2617
2622
  if (!a) {
2618
- d.push({
2623
+ u.push({
2619
2624
  toolUseId: i,
2620
2625
  toolName: n,
2621
2626
  content: `Unknown tool: ${n}`,
@@ -2634,7 +2639,7 @@ async function* y(e) {
2634
2639
  let o = Date.now();
2635
2640
  try {
2636
2641
  let t = await a(r);
2637
- t.sideEffect && (yield t.sideEffect), d.push({
2642
+ t.sideEffect && (yield t.sideEffect), u.push({
2638
2643
  toolUseId: i,
2639
2644
  toolName: n,
2640
2645
  content: t.result,
@@ -2649,8 +2654,8 @@ async function* y(e) {
2649
2654
  }
2650
2655
  };
2651
2656
  try {
2652
- c?.onToolEnd?.({
2653
- traceId: u,
2657
+ l?.onToolEnd?.({
2658
+ traceId: d,
2654
2659
  turn: e,
2655
2660
  toolName: n,
2656
2661
  toolUseId: i,
@@ -2660,7 +2665,7 @@ async function* y(e) {
2660
2665
  } catch {}
2661
2666
  } catch (t) {
2662
2667
  let r = t instanceof Error ? t.message : "Tool execution failed";
2663
- d.push({
2668
+ u.push({
2664
2669
  toolUseId: i,
2665
2670
  toolName: n,
2666
2671
  content: r,
@@ -2675,8 +2680,8 @@ async function* y(e) {
2675
2680
  }
2676
2681
  };
2677
2682
  try {
2678
- c?.onToolEnd?.({
2679
- traceId: u,
2683
+ l?.onToolEnd?.({
2684
+ traceId: d,
2680
2685
  turn: e,
2681
2686
  toolName: n,
2682
2687
  toolUseId: i,
@@ -2690,40 +2695,40 @@ async function* y(e) {
2690
2695
  type: "turn_complete",
2691
2696
  data: {}
2692
2697
  };
2693
- let f = x.formatToolResults(d);
2694
- if (Array.isArray(f)) for (let e of f) T.push(e);
2695
- else T.push(f);
2698
+ let f = S.formatToolResults(u);
2699
+ if (Array.isArray(f)) for (let e of f) E.push(e);
2700
+ else E.push(f);
2696
2701
  }
2697
2702
  try {
2698
- c?.onChatEnd?.({
2699
- traceId: u,
2700
- sessionId: s,
2701
- totalTurns: E,
2702
- durationMs: Date.now() - d
2703
+ l?.onChatEnd?.({
2704
+ traceId: d,
2705
+ sessionId: c,
2706
+ totalTurns: D,
2707
+ durationMs: Date.now() - f
2703
2708
  });
2704
2709
  } catch {}
2705
2710
  yield {
2706
2711
  type: "done",
2707
2712
  data: {
2708
- sessionId: s || "",
2709
- traceId: u
2713
+ sessionId: c || "",
2714
+ traceId: d
2710
2715
  }
2711
2716
  };
2712
2717
  } catch (e) {
2713
2718
  try {
2714
- c?.onChatEnd?.({
2715
- traceId: u,
2716
- sessionId: s,
2719
+ l?.onChatEnd?.({
2720
+ traceId: d,
2721
+ sessionId: c,
2717
2722
  totalTurns: 0,
2718
- durationMs: Date.now() - d,
2723
+ durationMs: Date.now() - f,
2719
2724
  error: e instanceof Error ? e.message : "Unknown error"
2720
2725
  });
2721
2726
  } catch {}
2722
- console.error("[agent] Chat error (provider=%s, model=%s): %s", String(f).replace(/\n|\r/g, ""), String(p).replace(/\n|\r/g, ""), String(e instanceof Error ? e.message : e).replace(/\n|\r/g, "")), yield {
2727
+ console.error("[agent] Chat error (provider=%s, model=%s): %s", String(p).replace(/\n|\r/g, ""), String(m).replace(/\n|\r/g, ""), String(e instanceof Error ? e.message : e).replace(/\n|\r/g, "")), yield {
2723
2728
  type: "error",
2724
- data: { message: x.formatError(e) }
2729
+ data: { message: S.formatError(e) }
2725
2730
  };
2726
2731
  }
2727
2732
  }
2728
2733
  //#endregion
2729
- export { y as handleAgentChat };
2734
+ export { b as handleAgentChat };