@mastra/react 1.7.3-alpha.2 → 1.8.0-alpha.4

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 (510) hide show
  1. package/dist/accumulator-B1MuNX3j.js +1668 -0
  2. package/dist/accumulator-B1MuNX3j.js.map +1 -0
  3. package/dist/accumulator-CsUGDUHk.cjs +1709 -0
  4. package/dist/accumulator-CsUGDUHk.cjs.map +1 -0
  5. package/dist/agent/hooks.d.ts.map +1 -1
  6. package/dist/agent/user-message.d.ts +4 -0
  7. package/dist/agent/user-message.d.ts.map +1 -0
  8. package/dist/chat/index.cjs +3 -0
  9. package/dist/chat/index.d.ts +3 -0
  10. package/dist/chat/index.d.ts.map +1 -0
  11. package/dist/chat/index.js +2 -0
  12. package/dist/feedback-refetch-interval-DLHzQoVV.js +12 -0
  13. package/dist/feedback-refetch-interval-DLHzQoVV.js.map +1 -0
  14. package/dist/feedback-refetch-interval-XD5FVc2k.cjs +17 -0
  15. package/dist/feedback-refetch-interval-XD5FVc2k.cjs.map +1 -0
  16. package/dist/hooks/agents/index.cjs +988 -0
  17. package/dist/hooks/agents/index.cjs.map +1 -0
  18. package/dist/hooks/agents/index.d.ts +19 -0
  19. package/dist/hooks/agents/index.d.ts.map +1 -0
  20. package/dist/hooks/agents/index.js +952 -0
  21. package/dist/hooks/agents/index.js.map +1 -0
  22. package/dist/hooks/agents/is-model-not-allowed.d.ts +15 -0
  23. package/dist/hooks/agents/is-model-not-allowed.d.ts.map +1 -0
  24. package/dist/hooks/agents/use-agent-messages.d.ts +18 -0
  25. package/dist/hooks/agents/use-agent-messages.d.ts.map +1 -0
  26. package/dist/hooks/agents/use-agent-plan.d.ts +14 -0
  27. package/dist/hooks/agents/use-agent-plan.d.ts.map +1 -0
  28. package/dist/hooks/agents/use-agent-skills.d.ts +2021 -0
  29. package/dist/hooks/agents/use-agent-skills.d.ts.map +1 -0
  30. package/dist/hooks/agents/use-agent-versions.d.ts +72 -0
  31. package/dist/hooks/agents/use-agent-versions.d.ts.map +1 -0
  32. package/dist/hooks/agents/use-agent-working-memory.d.ts +11 -0
  33. package/dist/hooks/agents/use-agent-working-memory.d.ts.map +1 -0
  34. package/dist/hooks/agents/use-agent-workspace.d.ts +2022 -0
  35. package/dist/hooks/agents/use-agent-workspace.d.ts.map +1 -0
  36. package/dist/hooks/agents/use-agent.d.ts +12 -0
  37. package/dist/hooks/agents/use-agent.d.ts.map +1 -0
  38. package/dist/hooks/agents/use-agents-model-providers.d.ts +9 -0
  39. package/dist/hooks/agents/use-agents-model-providers.d.ts.map +1 -0
  40. package/dist/hooks/agents/use-agents.d.ts +28 -0
  41. package/dist/hooks/agents/use-agents.d.ts.map +1 -0
  42. package/dist/hooks/agents/use-background-tasks.d.ts +51 -0
  43. package/dist/hooks/agents/use-background-tasks.d.ts.map +1 -0
  44. package/dist/hooks/agents/use-browser-session-probe.d.ts +34 -0
  45. package/dist/hooks/agents/use-browser-session-probe.d.ts.map +1 -0
  46. package/dist/hooks/agents/use-channels.d.ts +34 -0
  47. package/dist/hooks/agents/use-channels.d.ts.map +1 -0
  48. package/dist/hooks/agents/use-close-browser.d.ts +17 -0
  49. package/dist/hooks/agents/use-close-browser.d.ts.map +1 -0
  50. package/dist/hooks/agents/use-execute-agent-tool.d.ts +14 -0
  51. package/dist/hooks/agents/use-execute-agent-tool.d.ts.map +1 -0
  52. package/dist/hooks/agents/use-preview-instructions.d.ts +20 -0
  53. package/dist/hooks/agents/use-preview-instructions.d.ts.map +1 -0
  54. package/dist/hooks/agents/use-stored-agents.d.ts +8023 -0
  55. package/dist/hooks/agents/use-stored-agents.d.ts.map +1 -0
  56. package/dist/hooks/agents/use-stored-skills.d.ts +8 -0
  57. package/dist/hooks/agents/use-stored-skills.d.ts.map +1 -0
  58. package/dist/hooks/auth/fetch-with-refresh.d.ts +28 -0
  59. package/dist/hooks/auth/fetch-with-refresh.d.ts.map +1 -0
  60. package/dist/hooks/auth/get-client-query-key.d.ts +7 -0
  61. package/dist/hooks/auth/get-client-query-key.d.ts.map +1 -0
  62. package/dist/hooks/auth/index.cjs +492 -0
  63. package/dist/hooks/auth/index.cjs.map +1 -0
  64. package/dist/hooks/auth/index.d.ts +11 -0
  65. package/dist/hooks/auth/index.d.ts.map +1 -0
  66. package/dist/hooks/auth/index.js +474 -0
  67. package/dist/hooks/auth/index.js.map +1 -0
  68. package/dist/hooks/auth/sso-login.d.ts +8 -0
  69. package/dist/hooks/auth/sso-login.d.ts.map +1 -0
  70. package/dist/hooks/auth/types.d.ts +107 -0
  71. package/dist/hooks/auth/types.d.ts.map +1 -0
  72. package/dist/hooks/auth/use-auth-actions.d.ts +99 -0
  73. package/dist/hooks/auth/use-auth-actions.d.ts.map +1 -0
  74. package/dist/hooks/auth/use-auth-capabilities.d.ts +43 -0
  75. package/dist/hooks/auth/use-auth-capabilities.d.ts.map +1 -0
  76. package/dist/hooks/auth/use-credentials-login.d.ts +63 -0
  77. package/dist/hooks/auth/use-credentials-login.d.ts.map +1 -0
  78. package/dist/hooks/auth/use-credentials-signup.d.ts +66 -0
  79. package/dist/hooks/auth/use-credentials-signup.d.ts.map +1 -0
  80. package/dist/hooks/auth/use-current-user.d.ts +40 -0
  81. package/dist/hooks/auth/use-current-user.d.ts.map +1 -0
  82. package/dist/hooks/auth/use-permission-patterns.d.ts +24 -0
  83. package/dist/hooks/auth/use-permission-patterns.d.ts.map +1 -0
  84. package/dist/hooks/capabilities/index.cjs +47 -0
  85. package/dist/hooks/capabilities/index.cjs.map +1 -0
  86. package/dist/hooks/capabilities/index.d.ts +4 -0
  87. package/dist/hooks/capabilities/index.d.ts.map +1 -0
  88. package/dist/hooks/capabilities/index.js +44 -0
  89. package/dist/hooks/capabilities/index.js.map +1 -0
  90. package/dist/hooks/capabilities/use-feedback-available.d.ts +9 -0
  91. package/dist/hooks/capabilities/use-feedback-available.d.ts.map +1 -0
  92. package/dist/hooks/capabilities/use-observability-capabilities.d.ts +9 -0
  93. package/dist/hooks/capabilities/use-observability-capabilities.d.ts.map +1 -0
  94. package/dist/hooks/capabilities/use-trace-query-available.d.ts +9 -0
  95. package/dist/hooks/capabilities/use-trace-query-available.d.ts.map +1 -0
  96. package/dist/hooks/configuration/index.cjs +18 -0
  97. package/dist/hooks/configuration/index.cjs.map +1 -0
  98. package/dist/hooks/configuration/index.d.ts +2 -0
  99. package/dist/hooks/configuration/index.d.ts.map +1 -0
  100. package/dist/hooks/configuration/index.js +17 -0
  101. package/dist/hooks/configuration/index.js.map +1 -0
  102. package/dist/hooks/configuration/use-mastra-packages.d.ts +9 -0
  103. package/dist/hooks/configuration/use-mastra-packages.d.ts.map +1 -0
  104. package/dist/hooks/datasets/index.cjs +615 -0
  105. package/dist/hooks/datasets/index.cjs.map +1 -0
  106. package/dist/hooks/datasets/index.d.ts +10 -0
  107. package/dist/hooks/datasets/index.d.ts.map +1 -0
  108. package/dist/hooks/datasets/index.js +600 -0
  109. package/dist/hooks/datasets/index.js.map +1 -0
  110. package/dist/hooks/datasets/use-compare-experiments.d.ts +23 -0
  111. package/dist/hooks/datasets/use-compare-experiments.d.ts.map +1 -0
  112. package/dist/hooks/datasets/use-dataset-experiments.d.ts +49 -0
  113. package/dist/hooks/datasets/use-dataset-experiments.d.ts.map +1 -0
  114. package/dist/hooks/datasets/use-dataset-item-versions.d.ts +31 -0
  115. package/dist/hooks/datasets/use-dataset-item-versions.d.ts.map +1 -0
  116. package/dist/hooks/datasets/use-dataset-items.d.ts +38 -0
  117. package/dist/hooks/datasets/use-dataset-items.d.ts.map +1 -0
  118. package/dist/hooks/datasets/use-dataset-mutations.d.ts +362 -0
  119. package/dist/hooks/datasets/use-dataset-mutations.d.ts.map +1 -0
  120. package/dist/hooks/datasets/use-dataset-versions.d.ts +23 -0
  121. package/dist/hooks/datasets/use-dataset-versions.d.ts.map +1 -0
  122. package/dist/hooks/datasets/use-datasets.d.ts +44 -0
  123. package/dist/hooks/datasets/use-datasets.d.ts.map +1 -0
  124. package/dist/hooks/datasets/use-experiments.d.ts +16 -0
  125. package/dist/hooks/datasets/use-experiments.d.ts.map +1 -0
  126. package/dist/hooks/datasets/use-workflow-schema.d.ts +16 -0
  127. package/dist/hooks/datasets/use-workflow-schema.d.ts.map +1 -0
  128. package/dist/hooks/embedders/index.cjs +19 -0
  129. package/dist/hooks/embedders/index.cjs.map +1 -0
  130. package/dist/hooks/embedders/index.d.ts +2 -0
  131. package/dist/hooks/embedders/index.d.ts.map +1 -0
  132. package/dist/hooks/embedders/index.js +18 -0
  133. package/dist/hooks/embedders/index.js.map +1 -0
  134. package/dist/hooks/embedders/use-embedders.d.ts +17 -0
  135. package/dist/hooks/embedders/use-embedders.d.ts.map +1 -0
  136. package/dist/hooks/experiments/index.cjs +152 -0
  137. package/dist/hooks/experiments/index.cjs.map +1 -0
  138. package/dist/hooks/experiments/index.d.ts +5 -0
  139. package/dist/hooks/experiments/index.d.ts.map +1 -0
  140. package/dist/hooks/experiments/index.js +146 -0
  141. package/dist/hooks/experiments/index.js.map +1 -0
  142. package/dist/hooks/experiments/use-experiment-metrics.d.ts +30 -0
  143. package/dist/hooks/experiments/use-experiment-metrics.d.ts.map +1 -0
  144. package/dist/hooks/experiments/use-experiment-trace.d.ts +13 -0
  145. package/dist/hooks/experiments/use-experiment-trace.d.ts.map +1 -0
  146. package/dist/hooks/experiments/use-experiments-for-dataset-filter.d.ts +22 -0
  147. package/dist/hooks/experiments/use-experiments-for-dataset-filter.d.ts.map +1 -0
  148. package/dist/hooks/experiments/use-infinite-experiments.d.ts +22 -0
  149. package/dist/hooks/experiments/use-infinite-experiments.d.ts.map +1 -0
  150. package/dist/hooks/feedback/feedback-refetch-interval.d.ts +7 -0
  151. package/dist/hooks/feedback/feedback-refetch-interval.d.ts.map +1 -0
  152. package/dist/hooks/feedback/index.cjs +22 -0
  153. package/dist/hooks/feedback/index.cjs.map +1 -0
  154. package/dist/hooks/feedback/index.d.ts +3 -0
  155. package/dist/hooks/feedback/index.d.ts.map +1 -0
  156. package/dist/hooks/feedback/index.js +20 -0
  157. package/dist/hooks/feedback/index.js.map +1 -0
  158. package/dist/hooks/feedback/use-feedback.d.ts +56 -0
  159. package/dist/hooks/feedback/use-feedback.d.ts.map +1 -0
  160. package/dist/hooks/llm/index.cjs +17 -0
  161. package/dist/hooks/llm/index.cjs.map +1 -0
  162. package/dist/hooks/llm/index.d.ts +2 -0
  163. package/dist/hooks/llm/index.d.ts.map +1 -0
  164. package/dist/hooks/llm/index.js +16 -0
  165. package/dist/hooks/llm/index.js.map +1 -0
  166. package/dist/hooks/llm/use-llm-providers.d.ts +7 -0
  167. package/dist/hooks/llm/use-llm-providers.d.ts.map +1 -0
  168. package/dist/hooks/logs/index.cjs +84 -0
  169. package/dist/hooks/logs/index.cjs.map +1 -0
  170. package/dist/hooks/logs/index.d.ts +4 -0
  171. package/dist/hooks/logs/index.d.ts.map +1 -0
  172. package/dist/hooks/logs/index.js +82 -0
  173. package/dist/hooks/logs/index.js.map +1 -0
  174. package/dist/hooks/logs/types.d.ts +36 -0
  175. package/dist/hooks/logs/types.d.ts.map +1 -0
  176. package/dist/hooks/logs/use-logs.d.ts +79 -0
  177. package/dist/hooks/logs/use-logs.d.ts.map +1 -0
  178. package/dist/hooks/mcps/index.cjs +215 -0
  179. package/dist/hooks/mcps/index.cjs.map +1 -0
  180. package/dist/hooks/mcps/index.d.ts +7 -0
  181. package/dist/hooks/mcps/index.d.ts.map +1 -0
  182. package/dist/hooks/mcps/index.js +208 -0
  183. package/dist/hooks/mcps/index.js.map +1 -0
  184. package/dist/hooks/mcps/use-mcp-app-tools.d.ts +21 -0
  185. package/dist/hooks/mcps/use-mcp-app-tools.d.ts.map +1 -0
  186. package/dist/hooks/mcps/use-mcp-server-tool.d.ts +25 -0
  187. package/dist/hooks/mcps/use-mcp-server-tool.d.ts.map +1 -0
  188. package/dist/hooks/mcps/use-mcp-server-tools-by-id.d.ts +13 -0
  189. package/dist/hooks/mcps/use-mcp-server-tools-by-id.d.ts.map +1 -0
  190. package/dist/hooks/mcps/use-mcp-server-tools.d.ts +9 -0
  191. package/dist/hooks/mcps/use-mcp-server-tools.d.ts.map +1 -0
  192. package/dist/hooks/mcps/use-mcp-servers.d.ts +8 -0
  193. package/dist/hooks/mcps/use-mcp-servers.d.ts.map +1 -0
  194. package/dist/hooks/mcps/use-try-connect-mcp.d.ts +15 -0
  195. package/dist/hooks/mcps/use-try-connect-mcp.d.ts.map +1 -0
  196. package/dist/hooks/memory/index.cjs +328 -0
  197. package/dist/hooks/memory/index.cjs.map +1 -0
  198. package/dist/hooks/memory/index.d.ts +5 -0
  199. package/dist/hooks/memory/index.d.ts.map +1 -0
  200. package/dist/hooks/memory/index.js +312 -0
  201. package/dist/hooks/memory/index.js.map +1 -0
  202. package/dist/hooks/memory/use-memory-status.d.ts +12 -0
  203. package/dist/hooks/memory/use-memory-status.d.ts.map +1 -0
  204. package/dist/hooks/memory/use-memory-thread-messages.d.ts +13 -0
  205. package/dist/hooks/memory/use-memory-thread-messages.d.ts.map +1 -0
  206. package/dist/hooks/memory/use-memory.d.ts +159 -0
  207. package/dist/hooks/memory/use-memory.d.ts.map +1 -0
  208. package/dist/hooks/memory/use-observational-memory.d.ts +13 -0
  209. package/dist/hooks/memory/use-observational-memory.d.ts.map +1 -0
  210. package/dist/hooks/metrics/index.cjs +997 -0
  211. package/dist/hooks/metrics/index.cjs.map +1 -0
  212. package/dist/hooks/metrics/index.d.ts +16 -0
  213. package/dist/hooks/metrics/index.d.ts.map +1 -0
  214. package/dist/hooks/metrics/index.js +981 -0
  215. package/dist/hooks/metrics/index.js.map +1 -0
  216. package/dist/hooks/metrics/metrics-interval.d.ts +8 -0
  217. package/dist/hooks/metrics/metrics-interval.d.ts.map +1 -0
  218. package/dist/hooks/metrics/metrics-query-filters.d.ts +62 -0
  219. package/dist/hooks/metrics/metrics-query-filters.d.ts.map +1 -0
  220. package/dist/hooks/metrics/use-active-resources-kpi-metrics.d.ts +12 -0
  221. package/dist/hooks/metrics/use-active-resources-kpi-metrics.d.ts.map +1 -0
  222. package/dist/hooks/metrics/use-active-threads-kpi-metrics.d.ts +12 -0
  223. package/dist/hooks/metrics/use-active-threads-kpi-metrics.d.ts.map +1 -0
  224. package/dist/hooks/metrics/use-agent-runs-kpi-metrics.d.ts +9 -0
  225. package/dist/hooks/metrics/use-agent-runs-kpi-metrics.d.ts.map +1 -0
  226. package/dist/hooks/metrics/use-latency-metrics.d.ts +23 -0
  227. package/dist/hooks/metrics/use-latency-metrics.d.ts.map +1 -0
  228. package/dist/hooks/metrics/use-model-cost-kpi-metrics.d.ts +14 -0
  229. package/dist/hooks/metrics/use-model-cost-kpi-metrics.d.ts.map +1 -0
  230. package/dist/hooks/metrics/use-model-usage-cost-metrics.d.ts +16 -0
  231. package/dist/hooks/metrics/use-model-usage-cost-metrics.d.ts.map +1 -0
  232. package/dist/hooks/metrics/use-scores-metrics.d.ts +24 -0
  233. package/dist/hooks/metrics/use-scores-metrics.d.ts.map +1 -0
  234. package/dist/hooks/metrics/use-token-usage-by-agent-metrics.d.ts +15 -0
  235. package/dist/hooks/metrics/use-token-usage-by-agent-metrics.d.ts.map +1 -0
  236. package/dist/hooks/metrics/use-token-usage-timeseries.d.ts +22 -0
  237. package/dist/hooks/metrics/use-token-usage-timeseries.d.ts.map +1 -0
  238. package/dist/hooks/metrics/use-top-active-threads-metrics.d.ts +21 -0
  239. package/dist/hooks/metrics/use-top-active-threads-metrics.d.ts.map +1 -0
  240. package/dist/hooks/metrics/use-top-resources-by-threads-metrics.d.ts +20 -0
  241. package/dist/hooks/metrics/use-top-resources-by-threads-metrics.d.ts.map +1 -0
  242. package/dist/hooks/metrics/use-total-tokens-kpi-metrics.d.ts +13 -0
  243. package/dist/hooks/metrics/use-total-tokens-kpi-metrics.d.ts.map +1 -0
  244. package/dist/hooks/metrics/use-trace-volume-metrics.d.ts +17 -0
  245. package/dist/hooks/metrics/use-trace-volume-metrics.d.ts.map +1 -0
  246. package/dist/hooks/processors/index.cjs +43 -0
  247. package/dist/hooks/processors/index.cjs.map +1 -0
  248. package/dist/hooks/processors/index.d.ts +2 -0
  249. package/dist/hooks/processors/index.d.ts.map +1 -0
  250. package/dist/hooks/processors/index.js +40 -0
  251. package/dist/hooks/processors/index.js.map +1 -0
  252. package/dist/hooks/processors/use-processors.d.ts +64 -0
  253. package/dist/hooks/processors/use-processors.d.ts.map +1 -0
  254. package/dist/hooks/prompt-blocks/index.cjs +181 -0
  255. package/dist/hooks/prompt-blocks/index.cjs.map +1 -0
  256. package/dist/hooks/prompt-blocks/index.d.ts +3 -0
  257. package/dist/hooks/prompt-blocks/index.d.ts.map +1 -0
  258. package/dist/hooks/prompt-blocks/index.js +172 -0
  259. package/dist/hooks/prompt-blocks/index.js.map +1 -0
  260. package/dist/hooks/prompt-blocks/use-prompt-block-versions.d.ts +59 -0
  261. package/dist/hooks/prompt-blocks/use-prompt-block-versions.d.ts.map +1 -0
  262. package/dist/hooks/prompt-blocks/use-stored-prompt-blocks.d.ts +180 -0
  263. package/dist/hooks/prompt-blocks/use-stored-prompt-blocks.d.ts.map +1 -0
  264. package/dist/hooks/query/index.cjs +34 -0
  265. package/dist/hooks/query/index.cjs.map +1 -0
  266. package/dist/hooks/query/index.d.ts +4 -0
  267. package/dist/hooks/query/index.d.ts.map +1 -0
  268. package/dist/hooks/query/index.js +25 -0
  269. package/dist/hooks/query/index.js.map +1 -0
  270. package/dist/hooks/query/query-client-provider.d.ts +8 -0
  271. package/dist/hooks/query/query-client-provider.d.ts.map +1 -0
  272. package/dist/hooks/query/query-utils.d.ts +48 -0
  273. package/dist/hooks/query/query-utils.d.ts.map +1 -0
  274. package/dist/hooks/review/index.cjs +89 -0
  275. package/dist/hooks/review/index.cjs.map +1 -0
  276. package/dist/hooks/review/index.d.ts +4 -0
  277. package/dist/hooks/review/index.d.ts.map +1 -0
  278. package/dist/hooks/review/index.js +86 -0
  279. package/dist/hooks/review/index.js.map +1 -0
  280. package/dist/hooks/review/types.d.ts +21 -0
  281. package/dist/hooks/review/types.d.ts.map +1 -0
  282. package/dist/hooks/review/use-dataset-review-items.d.ts +19 -0
  283. package/dist/hooks/review/use-dataset-review-items.d.ts.map +1 -0
  284. package/dist/hooks/review/use-review-summary.d.ts +9 -0
  285. package/dist/hooks/review/use-review-summary.d.ts.map +1 -0
  286. package/dist/hooks/schedules/index.cjs +110 -0
  287. package/dist/hooks/schedules/index.cjs.map +1 -0
  288. package/dist/hooks/schedules/index.d.ts +5 -0
  289. package/dist/hooks/schedules/index.d.ts.map +1 -0
  290. package/dist/hooks/schedules/index.js +106 -0
  291. package/dist/hooks/schedules/index.js.map +1 -0
  292. package/dist/hooks/schedules/use-schedule-triggers.d.ts +18 -0
  293. package/dist/hooks/schedules/use-schedule-triggers.d.ts.map +1 -0
  294. package/dist/hooks/schedules/use-schedule.d.ts +11 -0
  295. package/dist/hooks/schedules/use-schedule.d.ts.map +1 -0
  296. package/dist/hooks/schedules/use-schedules.d.ts +7 -0
  297. package/dist/hooks/schedules/use-schedules.d.ts.map +1 -0
  298. package/dist/hooks/schedules/use-toggle-schedule.d.ts +13 -0
  299. package/dist/hooks/schedules/use-toggle-schedule.d.ts.map +1 -0
  300. package/dist/hooks/scores/index.cjs +339 -0
  301. package/dist/hooks/scores/index.cjs.map +1 -0
  302. package/dist/hooks/scores/index.d.ts +6 -0
  303. package/dist/hooks/scores/index.d.ts.map +1 -0
  304. package/dist/hooks/scores/index.js +323 -0
  305. package/dist/hooks/scores/index.js.map +1 -0
  306. package/dist/hooks/scores/use-scorer-versions.d.ts +71 -0
  307. package/dist/hooks/scores/use-scorer-versions.d.ts.map +1 -0
  308. package/dist/hooks/scores/use-scorers.d.ts +34 -0
  309. package/dist/hooks/scores/use-scorers.d.ts.map +1 -0
  310. package/dist/hooks/scores/use-stored-scorers.d.ts +151 -0
  311. package/dist/hooks/scores/use-stored-scorers.d.ts.map +1 -0
  312. package/dist/hooks/scores/use-trace-span-scores.d.ts +20 -0
  313. package/dist/hooks/scores/use-trace-span-scores.d.ts.map +1 -0
  314. package/dist/hooks/scores/use-trigger-scorer.d.ts +17 -0
  315. package/dist/hooks/scores/use-trigger-scorer.d.ts.map +1 -0
  316. package/dist/hooks/shared/cost.d.ts +7 -0
  317. package/dist/hooks/shared/cost.d.ts.map +1 -0
  318. package/dist/hooks/shared/date-format.d.ts +30 -0
  319. package/dist/hooks/shared/date-format.d.ts.map +1 -0
  320. package/dist/hooks/shared/map.d.ts +2 -0
  321. package/dist/hooks/shared/map.d.ts.map +1 -0
  322. package/dist/hooks/shared/query-options.d.ts +19 -0
  323. package/dist/hooks/shared/query-options.d.ts.map +1 -0
  324. package/dist/hooks/shared/use-in-view.d.ts +23 -0
  325. package/dist/hooks/shared/use-in-view.d.ts.map +1 -0
  326. package/dist/hooks/templates/index.cjs +464 -0
  327. package/dist/hooks/templates/index.cjs.map +1 -0
  328. package/dist/hooks/templates/index.d.ts +2 -0
  329. package/dist/hooks/templates/index.d.ts.map +1 -0
  330. package/dist/hooks/templates/index.js +456 -0
  331. package/dist/hooks/templates/index.js.map +1 -0
  332. package/dist/hooks/templates/use-templates.d.ts +139 -0
  333. package/dist/hooks/templates/use-templates.d.ts.map +1 -0
  334. package/dist/hooks/tool-providers/index.cjs +342 -0
  335. package/dist/hooks/tool-providers/index.cjs.map +1 -0
  336. package/dist/hooks/tool-providers/index.d.ts +10 -0
  337. package/dist/hooks/tool-providers/index.d.ts.map +1 -0
  338. package/dist/hooks/tool-providers/index.js +332 -0
  339. package/dist/hooks/tool-providers/index.js.map +1 -0
  340. package/dist/hooks/tool-providers/use-all-connections.d.ts +41 -0
  341. package/dist/hooks/tool-providers/use-all-connections.d.ts.map +1 -0
  342. package/dist/hooks/tool-providers/use-all-provider-tools.d.ts +25 -0
  343. package/dist/hooks/tool-providers/use-all-provider-tools.d.ts.map +1 -0
  344. package/dist/hooks/tool-providers/use-authorize.d.ts +45 -0
  345. package/dist/hooks/tool-providers/use-authorize.d.ts.map +1 -0
  346. package/dist/hooks/tool-providers/use-disconnect-connection.d.ts +24 -0
  347. package/dist/hooks/tool-providers/use-disconnect-connection.d.ts.map +1 -0
  348. package/dist/hooks/tool-providers/use-existing-connections.d.ts +33 -0
  349. package/dist/hooks/tool-providers/use-existing-connections.d.ts.map +1 -0
  350. package/dist/hooks/tool-providers/use-provider-tools.d.ts +17 -0
  351. package/dist/hooks/tool-providers/use-provider-tools.d.ts.map +1 -0
  352. package/dist/hooks/tool-providers/use-tool-providers.d.ts +23 -0
  353. package/dist/hooks/tool-providers/use-tool-providers.d.ts.map +1 -0
  354. package/dist/hooks/tool-providers/use-toolkits.d.ts +13 -0
  355. package/dist/hooks/tool-providers/use-toolkits.d.ts.map +1 -0
  356. package/dist/hooks/tool-providers/use-update-connection.d.ts +24 -0
  357. package/dist/hooks/tool-providers/use-update-connection.d.ts.map +1 -0
  358. package/dist/hooks/tools/index.cjs +49 -0
  359. package/dist/hooks/tools/index.cjs.map +1 -0
  360. package/dist/hooks/tools/index.d.ts +3 -0
  361. package/dist/hooks/tools/index.d.ts.map +1 -0
  362. package/dist/hooks/tools/index.js +46 -0
  363. package/dist/hooks/tools/index.js.map +1 -0
  364. package/dist/hooks/tools/use-all-tools.d.ts +16 -0
  365. package/dist/hooks/tools/use-all-tools.d.ts.map +1 -0
  366. package/dist/hooks/tools/use-execute-tool.d.ts +13 -0
  367. package/dist/hooks/tools/use-execute-tool.d.ts.map +1 -0
  368. package/dist/hooks/traces/discovery-cache.d.ts +12 -0
  369. package/dist/hooks/traces/discovery-cache.d.ts.map +1 -0
  370. package/dist/hooks/traces/index.cjs +1168 -0
  371. package/dist/hooks/traces/index.cjs.map +1 -0
  372. package/dist/hooks/traces/index.d.ts +22 -0
  373. package/dist/hooks/traces/index.d.ts.map +1 -0
  374. package/dist/hooks/traces/index.js +1129 -0
  375. package/dist/hooks/traces/index.js.map +1 -0
  376. package/dist/hooks/traces/types.d.ts +20 -0
  377. package/dist/hooks/traces/types.d.ts.map +1 -0
  378. package/dist/hooks/traces/use-branch.d.ts +18 -0
  379. package/dist/hooks/traces/use-branch.d.ts.map +1 -0
  380. package/dist/hooks/traces/use-create-feedback.d.ts +21 -0
  381. package/dist/hooks/traces/use-create-feedback.d.ts.map +1 -0
  382. package/dist/hooks/traces/use-delete-feedback.d.ts +21 -0
  383. package/dist/hooks/traces/use-delete-feedback.d.ts.map +1 -0
  384. package/dist/hooks/traces/use-entity-names.d.ts +14 -0
  385. package/dist/hooks/traces/use-entity-names.d.ts.map +1 -0
  386. package/dist/hooks/traces/use-environments.d.ts +10 -0
  387. package/dist/hooks/traces/use-environments.d.ts.map +1 -0
  388. package/dist/hooks/traces/use-service-names.d.ts +10 -0
  389. package/dist/hooks/traces/use-service-names.d.ts.map +1 -0
  390. package/dist/hooks/traces/use-span-detail.d.ts +14 -0
  391. package/dist/hooks/traces/use-span-detail.d.ts.map +1 -0
  392. package/dist/hooks/traces/use-span-feedback.d.ts +19 -0
  393. package/dist/hooks/traces/use-span-feedback.d.ts.map +1 -0
  394. package/dist/hooks/traces/use-tags.d.ts +10 -0
  395. package/dist/hooks/traces/use-tags.d.ts.map +1 -0
  396. package/dist/hooks/traces/use-thread-has-other-traces.d.ts +17 -0
  397. package/dist/hooks/traces/use-thread-has-other-traces.d.ts.map +1 -0
  398. package/dist/hooks/traces/use-trace-column-preferences-storage-key.d.ts +6 -0
  399. package/dist/hooks/traces/use-trace-column-preferences-storage-key.d.ts.map +1 -0
  400. package/dist/hooks/traces/use-trace-feedback.d.ts +16 -0
  401. package/dist/hooks/traces/use-trace-feedback.d.ts.map +1 -0
  402. package/dist/hooks/traces/use-trace-light-spans.d.ts +16 -0
  403. package/dist/hooks/traces/use-trace-light-spans.d.ts.map +1 -0
  404. package/dist/hooks/traces/use-trace-metadata-filter-fields.d.ts +36 -0
  405. package/dist/hooks/traces/use-trace-metadata-filter-fields.d.ts.map +1 -0
  406. package/dist/hooks/traces/use-trace-or-branch-spans.d.ts +39 -0
  407. package/dist/hooks/traces/use-trace-or-branch-spans.d.ts.map +1 -0
  408. package/dist/hooks/traces/use-trace-query.d.ts +57 -0
  409. package/dist/hooks/traces/use-trace-query.d.ts.map +1 -0
  410. package/dist/hooks/traces/use-trace-spans.d.ts +46 -0
  411. package/dist/hooks/traces/use-trace-spans.d.ts.map +1 -0
  412. package/dist/hooks/traces/use-trace-usage.d.ts +10 -0
  413. package/dist/hooks/traces/use-trace-usage.d.ts.map +1 -0
  414. package/dist/hooks/traces/use-traces.d.ts +292 -0
  415. package/dist/hooks/traces/use-traces.d.ts.map +1 -0
  416. package/dist/hooks/vectors/index.cjs +19 -0
  417. package/dist/hooks/vectors/index.cjs.map +1 -0
  418. package/dist/hooks/vectors/index.d.ts +2 -0
  419. package/dist/hooks/vectors/index.d.ts.map +1 -0
  420. package/dist/hooks/vectors/index.js +18 -0
  421. package/dist/hooks/vectors/index.js.map +1 -0
  422. package/dist/hooks/vectors/use-vectors.d.ts +14 -0
  423. package/dist/hooks/vectors/use-vectors.d.ts.map +1 -0
  424. package/dist/hooks/voice/index.cjs +87 -0
  425. package/dist/hooks/voice/index.cjs.map +1 -0
  426. package/dist/hooks/voice/index.d.ts +2 -0
  427. package/dist/hooks/voice/index.d.ts.map +1 -0
  428. package/dist/hooks/voice/index.js +86 -0
  429. package/dist/hooks/voice/index.js.map +1 -0
  430. package/dist/hooks/voice/use-read-aloud.d.ts +20 -0
  431. package/dist/hooks/voice/use-read-aloud.d.ts.map +1 -0
  432. package/dist/hooks/workflows/index.cjs +173 -0
  433. package/dist/hooks/workflows/index.cjs.map +1 -0
  434. package/dist/hooks/workflows/index.d.ts +7 -0
  435. package/dist/hooks/workflows/index.d.ts.map +1 -0
  436. package/dist/hooks/workflows/index.js +157 -0
  437. package/dist/hooks/workflows/index.js.map +1 -0
  438. package/dist/hooks/workflows/use-workflow-runs.d.ts +51 -0
  439. package/dist/hooks/workflows/use-workflow-runs.d.ts.map +1 -0
  440. package/dist/hooks/workflows/use-workflow.d.ts +14 -0
  441. package/dist/hooks/workflows/use-workflow.d.ts.map +1 -0
  442. package/dist/hooks/workflows/use-workflows-run-counts.d.ts +25 -0
  443. package/dist/hooks/workflows/use-workflows-run-counts.d.ts.map +1 -0
  444. package/dist/hooks/workflows/use-workflows.d.ts +10 -0
  445. package/dist/hooks/workflows/use-workflows.d.ts.map +1 -0
  446. package/dist/hooks/workspace/client-utils.d.ts +5 -0
  447. package/dist/hooks/workspace/client-utils.d.ts.map +1 -0
  448. package/dist/hooks/workspace/compatibility.d.ts +22 -0
  449. package/dist/hooks/workspace/compatibility.d.ts.map +1 -0
  450. package/dist/hooks/workspace/file-type.d.ts +7 -0
  451. package/dist/hooks/workspace/file-type.d.ts.map +1 -0
  452. package/dist/hooks/workspace/index.cjs +624 -0
  453. package/dist/hooks/workspace/index.cjs.map +1 -0
  454. package/dist/hooks/workspace/index.d.ts +11 -0
  455. package/dist/hooks/workspace/index.d.ts.map +1 -0
  456. package/dist/hooks/workspace/index.js +594 -0
  457. package/dist/hooks/workspace/index.js.map +1 -0
  458. package/dist/hooks/workspace/types.d.ts +199 -0
  459. package/dist/hooks/workspace/types.d.ts.map +1 -0
  460. package/dist/hooks/workspace/use-skills-sh.d.ts +104 -0
  461. package/dist/hooks/workspace/use-skills-sh.d.ts.map +1 -0
  462. package/dist/hooks/workspace/use-stored-workspaces.d.ts +12 -0
  463. package/dist/hooks/workspace/use-stored-workspaces.d.ts.map +1 -0
  464. package/dist/hooks/workspace/use-workspace-directory.d.ts +13 -0
  465. package/dist/hooks/workspace/use-workspace-directory.d.ts.map +1 -0
  466. package/dist/hooks/workspace/use-workspace-file-content.d.ts +15 -0
  467. package/dist/hooks/workspace/use-workspace-file-content.d.ts.map +1 -0
  468. package/dist/hooks/workspace/use-workspace-search.d.ts +20 -0
  469. package/dist/hooks/workspace/use-workspace-search.d.ts.map +1 -0
  470. package/dist/hooks/workspace/use-workspace-skills.d.ts +23 -0
  471. package/dist/hooks/workspace/use-workspace-skills.d.ts.map +1 -0
  472. package/dist/hooks/workspace/use-workspace.d.ts +56 -0
  473. package/dist/hooks/workspace/use-workspace.d.ts.map +1 -0
  474. package/dist/hooks-BFQK_s4g.js +1231 -0
  475. package/dist/hooks-BFQK_s4g.js.map +1 -0
  476. package/dist/hooks-CMjizg6y.cjs +1248 -0
  477. package/dist/hooks-CMjizg6y.cjs.map +1 -0
  478. package/dist/hooks-CjULNHpJ.js +252 -0
  479. package/dist/hooks-CjULNHpJ.js.map +1 -0
  480. package/dist/hooks-DsDYaJ3T.cjs +269 -0
  481. package/dist/hooks-DsDYaJ3T.cjs.map +1 -0
  482. package/dist/index.cjs +21 -3434
  483. package/dist/index.cjs.map +1 -1
  484. package/dist/index.d.ts +1 -0
  485. package/dist/index.d.ts.map +1 -1
  486. package/dist/index.js +6 -3419
  487. package/dist/index.js.map +1 -1
  488. package/dist/lib/mastra-db/fromCoreUserMessage.d.ts +3 -4
  489. package/dist/lib/mastra-db/fromCoreUserMessage.d.ts.map +1 -1
  490. package/dist/map-CDv4fbu4.js +12 -0
  491. package/dist/map-CDv4fbu4.js.map +1 -0
  492. package/dist/map-wjmL1y5O.cjs +17 -0
  493. package/dist/map-wjmL1y5O.cjs.map +1 -0
  494. package/dist/mastra-client-context-Bx_g84YB.js +50 -0
  495. package/dist/mastra-client-context-Bx_g84YB.js.map +1 -0
  496. package/dist/mastra-client-context-DzX3f0RF.cjs +61 -0
  497. package/dist/mastra-client-context-DzX3f0RF.cjs.map +1 -0
  498. package/dist/query-utils-CcrChYgz.cjs +174 -0
  499. package/dist/query-utils-CcrChYgz.cjs.map +1 -0
  500. package/dist/query-utils-D1NgFnWU.js +127 -0
  501. package/dist/query-utils-D1NgFnWU.js.map +1 -0
  502. package/dist/use-in-view-B6eJO9Zi.cjs +37 -0
  503. package/dist/use-in-view-B6eJO9Zi.cjs.map +1 -0
  504. package/dist/use-in-view-C9sYPGRm.js +32 -0
  505. package/dist/use-in-view-C9sYPGRm.js.map +1 -0
  506. package/dist/voice-BOtUdMi8.cjs +281 -0
  507. package/dist/voice-BOtUdMi8.cjs.map +1 -0
  508. package/dist/voice-DgirjEyH.js +264 -0
  509. package/dist/voice-DgirjEyH.js.map +1 -0
  510. package/package.json +32 -3
@@ -0,0 +1,981 @@
1
+ import { n as useMastraClient } from "../../mastra-client-context-Bx_g84YB.js";
2
+ import { t as getOrCreate } from "../../map-CDv4fbu4.js";
3
+ import { useMemo, useRef } from "react";
4
+ import { useQuery } from "@tanstack/react-query";
5
+ //#region src/hooks/metrics/metrics-query-filters.ts
6
+ const DEFAULT_WINDOW_MS = 1440 * 60 * 1e3;
7
+ const PRESET_MS = {
8
+ "24h": DEFAULT_WINDOW_MS,
9
+ "3d": 4320 * 60 * 1e3,
10
+ "7d": 10080 * 60 * 1e3,
11
+ "14d": 336 * 60 * 60 * 1e3,
12
+ "30d": 720 * 60 * 60 * 1e3
13
+ };
14
+ function buildTimestamp(preset, customRange, anchor) {
15
+ if (preset !== "custom") {
16
+ const ms = PRESET_MS[preset] ?? DEFAULT_WINDOW_MS;
17
+ return {
18
+ start: new Date(anchor - ms),
19
+ end: new Date(anchor)
20
+ };
21
+ }
22
+ return {
23
+ start: customRange?.from ?? /* @__PURE__ */ new Date(anchor - DEFAULT_WINDOW_MS),
24
+ end: customRange?.to ?? new Date(anchor)
25
+ };
26
+ }
27
+ /**
28
+ * Compose a ready-to-use metrics filter object from a date window and a
29
+ * dimensional filter. Pass the result to the metrics hooks.
30
+ *
31
+ * Stability guarantees (important for react-query):
32
+ * - `timestamp` is frozen at the moment the inputs change and does NOT update
33
+ * on every render. Otherwise each render would mint a new `new Date()` and
34
+ * every metrics query would re-fetch on every keystroke.
35
+ * - `filters` and `filterKey` are referentially stable while inputs are
36
+ * unchanged, so `queryKey` hashing is cheap and caches hit.
37
+ */
38
+ function useMetricsQueryFilters({ datePreset, customRange, dimensionalFilter, dimensionalFilterKey }) {
39
+ const anchorRef = useRef(null);
40
+ const windowKey = datePreset === "custom" ? `custom:${customRange?.from?.getTime() ?? ""}:${customRange?.to?.getTime() ?? ""}` : `preset:${datePreset}`;
41
+ if (!anchorRef.current || anchorRef.current.key !== windowKey) anchorRef.current = {
42
+ key: windowKey,
43
+ anchor: Date.now()
44
+ };
45
+ const anchor = anchorRef.current.anchor;
46
+ const timestamp = useMemo(() => buildTimestamp(datePreset, customRange, anchor), [
47
+ datePreset,
48
+ customRange,
49
+ anchor
50
+ ]);
51
+ return {
52
+ datePreset,
53
+ customRange,
54
+ timestamp,
55
+ filters: useMemo(() => ({
56
+ timestamp,
57
+ ...dimensionalFilter
58
+ }), [timestamp, dimensionalFilterKey]),
59
+ dimensionalFilter,
60
+ filterKey: useMemo(() => `${windowKey}|${dimensionalFilterKey}`, [windowKey, dimensionalFilterKey])
61
+ };
62
+ }
63
+ //#endregion
64
+ //#region src/hooks/shared/date-format.ts
65
+ function toDate(value) {
66
+ if (value == null) return void 0;
67
+ const date = value instanceof Date ? value : new Date(value);
68
+ return Number.isNaN(date.getTime()) ? void 0 : date;
69
+ }
70
+ const PRESET_OPTIONS = {
71
+ time: {
72
+ hour: "numeric",
73
+ minute: "2-digit"
74
+ },
75
+ "time-seconds": {
76
+ hour: "numeric",
77
+ minute: "2-digit",
78
+ second: "2-digit"
79
+ },
80
+ "date-time": {
81
+ month: "short",
82
+ day: "numeric",
83
+ year: "numeric",
84
+ hour: "numeric",
85
+ minute: "2-digit"
86
+ },
87
+ "date-time-seconds": {
88
+ month: "short",
89
+ day: "numeric",
90
+ year: "numeric",
91
+ hour: "numeric",
92
+ minute: "2-digit",
93
+ second: "2-digit"
94
+ },
95
+ "day-time-seconds": {
96
+ month: "short",
97
+ day: "numeric",
98
+ hour: "numeric",
99
+ minute: "2-digit",
100
+ second: "2-digit"
101
+ },
102
+ calendar: {
103
+ year: "numeric",
104
+ month: "numeric",
105
+ day: "numeric",
106
+ calendar: "gregory",
107
+ numberingSystem: "latn"
108
+ },
109
+ dayMonth: {
110
+ month: "short",
111
+ day: "numeric"
112
+ },
113
+ dayMonthYear: {
114
+ month: "short",
115
+ day: "numeric",
116
+ year: "numeric"
117
+ },
118
+ precise: {
119
+ month: "short",
120
+ day: "numeric",
121
+ year: "numeric",
122
+ hour: "numeric",
123
+ minute: "2-digit",
124
+ second: "2-digit",
125
+ fractionalSecondDigits: 3
126
+ },
127
+ timePrecise: {
128
+ hour: "numeric",
129
+ minute: "2-digit",
130
+ second: "2-digit",
131
+ fractionalSecondDigits: 3
132
+ }
133
+ };
134
+ const formatters = /* @__PURE__ */ new Map();
135
+ function getFormatter(key, locale, timeZone) {
136
+ const cacheKey = `${locale ?? ""}|${timeZone ?? ""}|${key}`;
137
+ let formatter = formatters.get(cacheKey);
138
+ if (!formatter) {
139
+ formatter = new Intl.DateTimeFormat(locale, {
140
+ ...PRESET_OPTIONS[key],
141
+ timeZone
142
+ });
143
+ formatters.set(cacheKey, formatter);
144
+ }
145
+ return formatter;
146
+ }
147
+ function calendarDate(date, timeZone) {
148
+ const parts = getFormatter("calendar", "en-US", timeZone).formatToParts(date);
149
+ return {
150
+ year: parts.find((part) => part.type === "year")?.value,
151
+ month: parts.find((part) => part.type === "month")?.value,
152
+ day: parts.find((part) => part.type === "day")?.value
153
+ };
154
+ }
155
+ /** Short absolute date without time: `Sep 24` this year, `Sep 24, 2025` otherwise. */
156
+ function formatShortDate(value, { locale, now, timeZone } = {}) {
157
+ const date = toDate(value);
158
+ if (!date) return void 0;
159
+ const reference = new Date(now ?? Date.now());
160
+ return getFormatter(calendarDate(date, timeZone).year === calendarDate(reference, timeZone).year ? "dayMonth" : "dayMonthYear", locale, timeZone).format(date);
161
+ }
162
+ const LONG_RELATIVE_UNITS = [
163
+ ["year", 365 * 86400],
164
+ ["month", 30 * 86400],
165
+ ["week", 7 * 86400],
166
+ ["day", 86400],
167
+ ["hour", 3600],
168
+ ["minute", 60]
169
+ ];
170
+ const relativeFormatters = /* @__PURE__ */ new Map();
171
+ function getRelativeFormatter(locale) {
172
+ const key = locale ?? "";
173
+ let formatter = relativeFormatters.get(key);
174
+ if (!formatter) {
175
+ formatter = new Intl.RelativeTimeFormat(locale, { numeric: "auto" });
176
+ relativeFormatters.set(key, formatter);
177
+ }
178
+ return formatter;
179
+ }
180
+ /**
181
+ * Uses the browser locale unless `locale` is given.
182
+ * - `date`: date only; omits the year when it matches `now` in the requested timezone
183
+ * - `date-time`: date, year and time to minutes, including historical dates
184
+ * - `date-time-seconds`: date, year and time to seconds
185
+ * - `day-time-seconds`: month, day and time to seconds, without the year
186
+ * - `time`: time to minutes, without a date
187
+ * - `time-seconds`: time to seconds, without a date
188
+ * - `relative-time`: short relative label; delegates to `date` at seven days
189
+ */
190
+ function formatDate(value, preset, options = {}) {
191
+ const date = toDate(value);
192
+ if (!date) return void 0;
193
+ const { locale, now, timeZone } = options;
194
+ if (preset === "relative-time") {
195
+ const diff = date.getTime() - new Date(now ?? Date.now()).getTime();
196
+ const abs = Math.abs(diff);
197
+ if (abs < 5e3) return "just now";
198
+ const match = [
199
+ {
200
+ limit: 6e4,
201
+ size: 1e3,
202
+ unit: "s"
203
+ },
204
+ {
205
+ limit: 36e5,
206
+ size: 6e4,
207
+ unit: "m"
208
+ },
209
+ {
210
+ limit: 864e5,
211
+ size: 36e5,
212
+ unit: "h"
213
+ },
214
+ {
215
+ limit: 7 * 864e5,
216
+ size: 864e5,
217
+ unit: "d"
218
+ }
219
+ ].find(({ limit }) => abs < limit);
220
+ if (!match) return formatDate(date, "date", options);
221
+ const label = `${Math.floor(abs / match.size)}${match.unit}`;
222
+ return diff < 0 ? `${label} ago` : `in ${label}`;
223
+ }
224
+ if (preset === "relative-long") {
225
+ const seconds = (date.getTime() - new Date(now ?? Date.now()).getTime()) / 1e3;
226
+ const [unit, size] = LONG_RELATIVE_UNITS.find(([, size]) => Math.abs(seconds) >= size) ?? ["second", 1];
227
+ return getRelativeFormatter(locale).format(Math.round(seconds / size), unit);
228
+ }
229
+ if (preset === "date") return formatShortDate(date, options);
230
+ return getFormatter(preset, locale, timeZone).format(date);
231
+ }
232
+ //#endregion
233
+ //#region src/hooks/metrics/metrics-interval.ts
234
+ const HOURLY_MAX_RANGE_MS = 2880 * 60 * 1e3;
235
+ /** Hourly buckets up to 48h, daily buckets beyond, so long ranges stay readable. */
236
+ function chooseMetricsInterval({ start, end }) {
237
+ return end.getTime() - start.getTime() <= HOURLY_MAX_RANGE_MS ? "1h" : "1d";
238
+ }
239
+ function formatMetricsBucketLabel(ts, interval) {
240
+ if (interval === "1h") return formatDate(ts, "time") ?? "";
241
+ return formatShortDate(ts) ?? "";
242
+ }
243
+ //#endregion
244
+ //#region src/hooks/metrics/use-active-resources-kpi-metrics.tsx
245
+ /** Active Resources — number of distinct resource IDs observed in agent runs.
246
+ * Uses approximate `count_distinct` (HyperLogLog on ClickHouse,
247
+ * `approx_count_distinct` on DuckDB) so the query stays fast even on
248
+ * tens of millions of rows. */
249
+ function useActiveResourcesKpiMetrics(params) {
250
+ const client = useMastraClient();
251
+ const { filters, filterKey, queryOptions } = params;
252
+ return useQuery({
253
+ queryKey: [
254
+ "metrics",
255
+ "active-resources-kpi",
256
+ filterKey
257
+ ],
258
+ queryFn: () => client.getMetricAggregate({
259
+ name: ["mastra_agent_duration_ms"],
260
+ aggregation: "count_distinct",
261
+ distinctColumn: "resourceId",
262
+ filters,
263
+ comparePeriod: "previous_period"
264
+ }),
265
+ ...queryOptions
266
+ });
267
+ }
268
+ //#endregion
269
+ //#region src/hooks/metrics/use-active-threads-kpi-metrics.tsx
270
+ /** Active Threads — number of distinct thread IDs observed in agent runs.
271
+ * Uses approximate `count_distinct` (HyperLogLog on ClickHouse,
272
+ * `approx_count_distinct` on DuckDB) so the query stays fast even on
273
+ * tens of millions of rows. */
274
+ function useActiveThreadsKpiMetrics(params) {
275
+ const client = useMastraClient();
276
+ const { filters, filterKey, queryOptions } = params;
277
+ return useQuery({
278
+ queryKey: [
279
+ "metrics",
280
+ "active-threads-kpi",
281
+ filterKey
282
+ ],
283
+ queryFn: () => client.getMetricAggregate({
284
+ name: ["mastra_agent_duration_ms"],
285
+ aggregation: "count_distinct",
286
+ distinctColumn: "threadId",
287
+ filters,
288
+ comparePeriod: "previous_period"
289
+ }),
290
+ ...queryOptions
291
+ });
292
+ }
293
+ //#endregion
294
+ //#region src/hooks/metrics/use-agent-runs-kpi-metrics.tsx
295
+ /** Total Agent Runs — count of agent duration metric observations */
296
+ function useAgentRunsKpiMetrics(params) {
297
+ const client = useMastraClient();
298
+ const { filters, filterKey, queryOptions } = params;
299
+ return useQuery({
300
+ queryKey: [
301
+ "metrics",
302
+ "agent-runs-kpi",
303
+ filterKey
304
+ ],
305
+ queryFn: () => client.getMetricAggregate({
306
+ name: ["mastra_agent_duration_ms"],
307
+ aggregation: "count",
308
+ filters,
309
+ comparePeriod: "previous_period"
310
+ }),
311
+ ...queryOptions
312
+ });
313
+ }
314
+ //#endregion
315
+ //#region src/hooks/metrics/use-latency-metrics.tsx
316
+ async function fetchPercentiles(client, metricName, filters, interval) {
317
+ const res = await client.getMetricPercentiles({
318
+ name: metricName,
319
+ percentiles: [.5, .95],
320
+ interval,
321
+ filters
322
+ });
323
+ const p50Series = res.series.find((s) => s.percentile === .5);
324
+ const p95Series = res.series.find((s) => s.percentile === .95);
325
+ if (!p50Series || !p95Series) return [];
326
+ const p95Map = new Map(p95Series.points.map((p) => [new Date(p.timestamp).getTime(), p.value]));
327
+ return p50Series.points.map((p) => {
328
+ const ts = new Date(p.timestamp);
329
+ const tsMs = ts.getTime();
330
+ return {
331
+ time: formatMetricsBucketLabel(ts, interval),
332
+ tsMs,
333
+ p50: Math.round(p.value),
334
+ p95: Math.round(p95Map.get(tsMs) ?? 0)
335
+ };
336
+ });
337
+ }
338
+ function useLatencyMetrics(params) {
339
+ const client = useMastraClient();
340
+ const { timestamp, filters, filterKey, queryOptions } = params;
341
+ const interval = chooseMetricsInterval(timestamp);
342
+ return useQuery({
343
+ queryKey: [
344
+ "metrics",
345
+ "latency",
346
+ filterKey,
347
+ interval
348
+ ],
349
+ queryFn: async () => {
350
+ const [agentData, workflowData, toolData] = await Promise.all([
351
+ fetchPercentiles(client, "mastra_agent_duration_ms", filters, interval),
352
+ fetchPercentiles(client, "mastra_workflow_duration_ms", filters, interval),
353
+ fetchPercentiles(client, "mastra_tool_duration_ms", filters, interval)
354
+ ]);
355
+ return {
356
+ agentData,
357
+ workflowData,
358
+ toolData,
359
+ interval
360
+ };
361
+ },
362
+ ...queryOptions
363
+ });
364
+ }
365
+ //#endregion
366
+ //#region src/hooks/metrics/use-model-cost-kpi-metrics.tsx
367
+ function useModelCostKpiMetrics(params) {
368
+ const client = useMastraClient();
369
+ const { filters, filterKey, queryOptions } = params;
370
+ return useQuery({
371
+ queryKey: [
372
+ "metrics",
373
+ "model-cost-kpi",
374
+ filterKey
375
+ ],
376
+ queryFn: async () => {
377
+ const res = await client.getMetricAggregate({
378
+ name: ["mastra_model_total_input_tokens", "mastra_model_total_output_tokens"],
379
+ aggregation: "sum",
380
+ filters,
381
+ comparePeriod: "previous_period"
382
+ });
383
+ return {
384
+ cost: res.estimatedCost ?? null,
385
+ costUnit: res.costUnit ?? null,
386
+ previousCost: res.previousEstimatedCost ?? null,
387
+ costChangePercent: res.costChangePercent ?? null
388
+ };
389
+ },
390
+ ...queryOptions
391
+ });
392
+ }
393
+ //#endregion
394
+ //#region src/hooks/shared/cost.ts
395
+ const compactNumber = new Intl.NumberFormat("en-US", {
396
+ notation: "compact",
397
+ maximumSignificantDigits: 3
398
+ });
399
+ const fullNumber = new Intl.NumberFormat("en-US");
400
+ const currencyCodes = new Set(Intl.supportedValuesOf("currency"));
401
+ function isCurrency(code) {
402
+ return code !== void 0 && currencyCodes.has(code.toUpperCase());
403
+ }
404
+ function money(currency, options) {
405
+ return new Intl.NumberFormat("en-US", {
406
+ style: "currency",
407
+ currency,
408
+ ...options
409
+ });
410
+ }
411
+ function formatCompactNumber(value, { currency } = {}) {
412
+ if (!isCurrency(currency)) return compactNumber.format(value);
413
+ const size = Math.abs(value);
414
+ if (size < 100) return formatFullNumber(value, { currency });
415
+ if (size < 1e3) return money(currency, { maximumFractionDigits: 0 }).format(value);
416
+ return money(currency, {
417
+ notation: "compact",
418
+ maximumSignificantDigits: 3
419
+ }).format(value);
420
+ }
421
+ function formatFullNumber(value, { currency } = {}) {
422
+ if (!isCurrency(currency)) return fullNumber.format(value);
423
+ const formatter = money(currency, {});
424
+ const smallestUnit = 10 ** -(formatter.resolvedOptions().maximumFractionDigits ?? 2);
425
+ if (value !== 0 && Math.abs(value) < smallestUnit) return `${value < 0 ? "-" : ""}<${formatter.format(smallestUnit)}`;
426
+ return formatter.format(value);
427
+ }
428
+ //#endregion
429
+ //#region src/hooks/metrics/use-model-usage-cost-metrics.tsx
430
+ function useModelUsageCostMetrics(params) {
431
+ const client = useMastraClient();
432
+ const { filters, filterKey, queryOptions } = params;
433
+ return useQuery({
434
+ queryKey: [
435
+ "metrics",
436
+ "model-usage-cost",
437
+ filterKey
438
+ ],
439
+ queryFn: async () => {
440
+ const [inputRes, outputRes, cacheReadRes, cacheWriteRes] = await Promise.all([
441
+ "mastra_model_total_input_tokens",
442
+ "mastra_model_total_output_tokens",
443
+ "mastra_model_input_cache_read_tokens",
444
+ "mastra_model_input_cache_write_tokens"
445
+ ].map((name) => client.getMetricBreakdown({
446
+ name: [name],
447
+ groupBy: ["model"],
448
+ aggregation: "sum",
449
+ orderDirection: "DESC",
450
+ filters
451
+ })));
452
+ if (!inputRes || !outputRes || !cacheReadRes || !cacheWriteRes) return [];
453
+ const modelMap = /* @__PURE__ */ new Map();
454
+ const ensureModel = (model) => getOrCreate(modelMap, model, () => ({
455
+ input: 0,
456
+ output: 0,
457
+ cacheRead: 0,
458
+ cacheWrite: 0,
459
+ cost: null,
460
+ costUnit: null
461
+ }));
462
+ const addCost = (entry, group) => {
463
+ if (group.estimatedCost != null) {
464
+ entry.cost = (entry.cost ?? 0) + group.estimatedCost;
465
+ if (group.costUnit) entry.costUnit = group.costUnit;
466
+ }
467
+ };
468
+ for (const group of inputRes.groups) {
469
+ const entry = ensureModel(group.dimensions.model ?? "unknown");
470
+ entry.input = group.value;
471
+ addCost(entry, group);
472
+ }
473
+ for (const group of outputRes.groups) {
474
+ const entry = ensureModel(group.dimensions.model ?? "unknown");
475
+ entry.output = group.value;
476
+ addCost(entry, group);
477
+ }
478
+ for (const group of cacheReadRes.groups) {
479
+ const entry = ensureModel(group.dimensions.model ?? "unknown");
480
+ entry.cacheRead = group.value;
481
+ }
482
+ for (const group of cacheWriteRes.groups) {
483
+ const entry = ensureModel(group.dimensions.model ?? "unknown");
484
+ entry.cacheWrite = group.value;
485
+ }
486
+ return Array.from(modelMap.entries()).map(([model, vals]) => ({
487
+ model,
488
+ input: formatCompactNumber(vals.input),
489
+ output: formatCompactNumber(vals.output),
490
+ cacheRead: formatCompactNumber(vals.cacheRead),
491
+ cacheWrite: formatCompactNumber(vals.cacheWrite),
492
+ cost: vals.cost,
493
+ costUnit: vals.costUnit
494
+ })).sort((a, b) => a.model.localeCompare(b.model));
495
+ },
496
+ ...queryOptions
497
+ });
498
+ }
499
+ //#endregion
500
+ //#region src/hooks/metrics/use-scores-metrics.tsx
501
+ function useScoresMetrics(params) {
502
+ const client = useMastraClient();
503
+ const { datePreset, customRange, timestamp, queryOptions } = params;
504
+ return useQuery({
505
+ queryKey: [
506
+ "metrics",
507
+ "scores-card",
508
+ datePreset,
509
+ customRange
510
+ ],
511
+ queryFn: async () => {
512
+ const filters = { timestamp: {
513
+ start: timestamp.start,
514
+ end: timestamp.end
515
+ } };
516
+ const scorersMap = await client.listScorers();
517
+ const scorerIds = Object.keys(scorersMap ?? {});
518
+ if (scorerIds.length === 0) return {
519
+ summaryData: [],
520
+ overTimeData: [],
521
+ scorerNames: [],
522
+ avgScore: null
523
+ };
524
+ const summaryData = (await Promise.all(scorerIds.map(async (scorerId) => {
525
+ const [avg, min, max, count] = await Promise.all([
526
+ client.getScoreAggregate({
527
+ scorerId,
528
+ aggregation: "avg",
529
+ filters
530
+ }),
531
+ client.getScoreAggregate({
532
+ scorerId,
533
+ aggregation: "min",
534
+ filters
535
+ }),
536
+ client.getScoreAggregate({
537
+ scorerId,
538
+ aggregation: "max",
539
+ filters
540
+ }),
541
+ client.getScoreAggregate({
542
+ scorerId,
543
+ aggregation: "count",
544
+ filters
545
+ })
546
+ ]);
547
+ return {
548
+ scorer: scorerId,
549
+ avg: avg.value ?? 0,
550
+ min: min.value ?? 0,
551
+ max: max.value ?? 0,
552
+ count: count.value ?? 0
553
+ };
554
+ }))).filter((s) => s.count > 0);
555
+ const scorerNames = summaryData.map((s) => s.scorer);
556
+ if (summaryData.length === 0) return {
557
+ summaryData: [],
558
+ overTimeData: [],
559
+ scorerNames: [],
560
+ avgScore: null
561
+ };
562
+ const totalWeighted = summaryData.reduce((s, d) => s + d.avg * d.count, 0);
563
+ const totalCount = summaryData.reduce((s, d) => s + d.count, 0);
564
+ const avgScore = totalCount ? Math.round(totalWeighted / totalCount * 100) / 100 : 0;
565
+ const interval = "1h";
566
+ const timeSeriesResults = await Promise.all(scorerNames.map((scorerId) => client.getScoreTimeSeries({
567
+ scorerId,
568
+ interval,
569
+ aggregation: "avg",
570
+ filters
571
+ })));
572
+ const hourBuckets = /* @__PURE__ */ new Map();
573
+ for (let i = 0; i < scorerNames.length; i++) {
574
+ const scorerId = scorerNames[i];
575
+ const series = timeSeriesResults[i]?.series ?? [];
576
+ for (const s of series) for (const point of s.points) {
577
+ const ts = new Date(point.timestamp);
578
+ const acc = getOrCreate(getOrCreate(hourBuckets, ts.getHours() * 60 + ts.getMinutes(), () => /* @__PURE__ */ new Map()), scorerId, () => ({
579
+ sum: 0,
580
+ count: 0
581
+ }));
582
+ acc.sum += point.value;
583
+ acc.count += 1;
584
+ }
585
+ }
586
+ return {
587
+ summaryData,
588
+ overTimeData: Array.from(hourBuckets.entries()).sort(([a], [b]) => a - b).map(([hourKey, scorerMap]) => {
589
+ const point = { time: formatDate(new Date(2e3, 0, 1, Math.floor(hourKey / 60), hourKey % 60), "time") ?? "" };
590
+ for (const [scorerId, acc] of scorerMap) point[scorerId] = +(acc.sum / acc.count).toFixed(2);
591
+ return point;
592
+ }),
593
+ scorerNames,
594
+ avgScore
595
+ };
596
+ },
597
+ ...queryOptions
598
+ });
599
+ }
600
+ //#endregion
601
+ //#region src/hooks/metrics/use-token-usage-by-agent-metrics.tsx
602
+ function useTokenUsageByAgentMetrics(params) {
603
+ const client = useMastraClient();
604
+ const { filters, filterKey, queryOptions } = params;
605
+ return useQuery({
606
+ queryKey: [
607
+ "metrics",
608
+ "token-usage-by-agent",
609
+ filterKey
610
+ ],
611
+ queryFn: async () => {
612
+ const breakdownBase = {
613
+ groupBy: ["entityName"],
614
+ aggregation: "sum",
615
+ orderDirection: "DESC",
616
+ filters
617
+ };
618
+ const [inputRes, outputRes] = await Promise.all([client.getMetricBreakdown({
619
+ ...breakdownBase,
620
+ name: ["mastra_model_total_input_tokens"]
621
+ }), client.getMetricBreakdown({
622
+ ...breakdownBase,
623
+ name: ["mastra_model_total_output_tokens"]
624
+ })]);
625
+ const agentMap = /* @__PURE__ */ new Map();
626
+ const ensure = (name) => getOrCreate(agentMap, name, () => ({
627
+ input: 0,
628
+ output: 0,
629
+ cost: null,
630
+ costUnit: null
631
+ }));
632
+ const addCost = (entry, group) => {
633
+ if (group.estimatedCost != null) {
634
+ entry.cost = (entry.cost ?? 0) + group.estimatedCost;
635
+ if (group.costUnit) entry.costUnit = group.costUnit;
636
+ }
637
+ };
638
+ for (const group of inputRes.groups) {
639
+ const entry = ensure(group.dimensions.entityName ?? "unknown");
640
+ entry.input = group.value;
641
+ addCost(entry, group);
642
+ }
643
+ for (const group of outputRes.groups) {
644
+ const entry = ensure(group.dimensions.entityName ?? "unknown");
645
+ entry.output = group.value;
646
+ addCost(entry, group);
647
+ }
648
+ return Array.from(agentMap.entries()).map(([name, vals]) => ({
649
+ name,
650
+ input: vals.input,
651
+ output: vals.output,
652
+ total: vals.input + vals.output,
653
+ cost: vals.cost,
654
+ costUnit: vals.costUnit
655
+ })).sort((a, b) => b.total - a.total);
656
+ },
657
+ ...queryOptions
658
+ });
659
+ }
660
+ //#endregion
661
+ //#region src/hooks/metrics/use-token-usage-timeseries.tsx
662
+ function addSeriesPoints(pointMap, series, key) {
663
+ for (const point of series?.points ?? []) {
664
+ const tsMs = new Date(point.timestamp).getTime();
665
+ if (!Number.isFinite(tsMs)) continue;
666
+ const existing = pointMap.get(tsMs) ?? {
667
+ tsMs,
668
+ input: 0,
669
+ output: 0,
670
+ cost: null,
671
+ costUnits: /* @__PURE__ */ new Set(),
672
+ hasUnknownCostUnit: false
673
+ };
674
+ existing[key] += point.value;
675
+ if (point.estimatedCost != null) {
676
+ existing.cost = (existing.cost ?? 0) + point.estimatedCost;
677
+ if (series?.costUnit) existing.costUnits.add(series.costUnit);
678
+ else existing.hasUnknownCostUnit = true;
679
+ }
680
+ pointMap.set(tsMs, existing);
681
+ }
682
+ }
683
+ function toCostUnit(entry) {
684
+ if (entry.cost == null || entry.hasUnknownCostUnit || entry.costUnits.size !== 1) return null;
685
+ return [...entry.costUnits][0] ?? null;
686
+ }
687
+ function useTokenUsageTimeSeries(params) {
688
+ const client = useMastraClient();
689
+ const { timestamp, filters, filterKey, queryOptions } = params;
690
+ const interval = chooseMetricsInterval(timestamp);
691
+ return useQuery({
692
+ queryKey: [
693
+ "metrics",
694
+ "token-usage-timeseries",
695
+ filterKey,
696
+ interval
697
+ ],
698
+ queryFn: async () => {
699
+ const [inputRes, outputRes] = await Promise.all([client.getMetricTimeSeries({
700
+ name: ["mastra_model_total_input_tokens"],
701
+ interval,
702
+ aggregation: "sum",
703
+ filters
704
+ }), client.getMetricTimeSeries({
705
+ name: ["mastra_model_total_output_tokens"],
706
+ interval,
707
+ aggregation: "sum",
708
+ filters
709
+ })]);
710
+ const pointMap = /* @__PURE__ */ new Map();
711
+ addSeriesPoints(pointMap, inputRes.series[0], "input");
712
+ addSeriesPoints(pointMap, outputRes.series[0], "output");
713
+ return {
714
+ data: Array.from(pointMap.values()).sort((a, b) => a.tsMs - b.tsMs).map((point) => {
715
+ return {
716
+ time: formatMetricsBucketLabel(new Date(point.tsMs), interval),
717
+ tsMs: point.tsMs,
718
+ input: point.input,
719
+ output: point.output,
720
+ total: point.input + point.output,
721
+ cost: point.cost,
722
+ costUnit: toCostUnit(point)
723
+ };
724
+ }),
725
+ interval
726
+ };
727
+ },
728
+ ...queryOptions
729
+ });
730
+ }
731
+ //#endregion
732
+ //#region src/hooks/metrics/use-top-active-threads-metrics.tsx
733
+ const TOP_N$1 = 20;
734
+ /** Top Active Threads — the threads with the most agent runs in the selected
735
+ * range. Server-side TopK (`ORDER BY value DESC LIMIT 20`) is required so the
736
+ * query never returns the full thread set when cardinality is in the millions.
737
+ *
738
+ * Tokens + cost are joined in from parallel breakdowns on the same `threadId`
739
+ * grouping so we don't need any new backend aggregation support. */
740
+ function useTopActiveThreadsMetrics(params) {
741
+ const client = useMastraClient();
742
+ const { filters, filterKey, queryOptions } = params;
743
+ return useQuery({
744
+ queryKey: [
745
+ "metrics",
746
+ "top-active-threads",
747
+ filterKey
748
+ ],
749
+ queryFn: async () => {
750
+ const breakdownBase = {
751
+ groupBy: ["threadId", "resourceId"],
752
+ orderDirection: "DESC",
753
+ filters
754
+ };
755
+ const [runsRes, inputRes, outputRes] = await Promise.all([
756
+ client.getMetricBreakdown({
757
+ ...breakdownBase,
758
+ name: ["mastra_agent_duration_ms"],
759
+ aggregation: "count",
760
+ limit: TOP_N$1
761
+ }),
762
+ client.getMetricBreakdown({
763
+ ...breakdownBase,
764
+ name: ["mastra_model_total_input_tokens"],
765
+ aggregation: "sum",
766
+ limit: TOP_N$1
767
+ }),
768
+ client.getMetricBreakdown({
769
+ ...breakdownBase,
770
+ name: ["mastra_model_total_output_tokens"],
771
+ aggregation: "sum",
772
+ limit: TOP_N$1
773
+ })
774
+ ]);
775
+ const byThread = /* @__PURE__ */ new Map();
776
+ const ensure = (threadId) => getOrCreate(byThread, threadId, () => ({
777
+ tokens: 0,
778
+ cost: null,
779
+ costUnit: null
780
+ }));
781
+ const foldTokens = (groups) => {
782
+ for (const group of groups) {
783
+ const threadId = group.dimensions.threadId;
784
+ if (!threadId) continue;
785
+ const entry = ensure(threadId);
786
+ entry.tokens += group.value;
787
+ if (group.estimatedCost != null) {
788
+ entry.cost = (entry.cost ?? 0) + group.estimatedCost;
789
+ if (group.costUnit) entry.costUnit = group.costUnit;
790
+ }
791
+ }
792
+ };
793
+ foldTokens(inputRes.groups);
794
+ foldTokens(outputRes.groups);
795
+ return runsRes.groups.filter((group) => !!group.dimensions.threadId).map((group) => {
796
+ const threadId = group.dimensions.threadId;
797
+ const extra = byThread.get(threadId);
798
+ return {
799
+ threadId,
800
+ resourceId: group.dimensions.resourceId ?? null,
801
+ runs: group.value,
802
+ tokens: extra?.tokens ?? 0,
803
+ cost: extra?.cost ?? null,
804
+ costUnit: extra?.costUnit ?? null
805
+ };
806
+ });
807
+ },
808
+ ...queryOptions
809
+ });
810
+ }
811
+ //#endregion
812
+ //#region src/hooks/metrics/use-top-resources-by-threads-metrics.tsx
813
+ const TOP_N = 20;
814
+ /** Top Resources by Thread Count — the resources with the most distinct threads
815
+ * in the selected range. Uses `count_distinct(threadId)` per `resourceId`,
816
+ * with server-side TopK (`ORDER BY value DESC LIMIT 20`).
817
+ *
818
+ * Tokens + cost are joined in from parallel breakdowns on `resourceId` so the
819
+ * table can show cost/usage without a separate backend aggregation. */
820
+ function useTopResourcesByThreadsMetrics(params) {
821
+ const client = useMastraClient();
822
+ const { filters, filterKey, queryOptions } = params;
823
+ return useQuery({
824
+ queryKey: [
825
+ "metrics",
826
+ "top-resources-by-threads",
827
+ filterKey
828
+ ],
829
+ queryFn: async () => {
830
+ const breakdownBase = {
831
+ groupBy: ["resourceId"],
832
+ orderDirection: "DESC",
833
+ filters
834
+ };
835
+ const [threadsRes, inputRes, outputRes] = await Promise.all([
836
+ client.getMetricBreakdown({
837
+ ...breakdownBase,
838
+ name: ["mastra_agent_duration_ms"],
839
+ aggregation: "count_distinct",
840
+ distinctColumn: "threadId",
841
+ limit: TOP_N
842
+ }),
843
+ client.getMetricBreakdown({
844
+ ...breakdownBase,
845
+ name: ["mastra_model_total_input_tokens"],
846
+ aggregation: "sum",
847
+ limit: TOP_N
848
+ }),
849
+ client.getMetricBreakdown({
850
+ ...breakdownBase,
851
+ name: ["mastra_model_total_output_tokens"],
852
+ aggregation: "sum",
853
+ limit: TOP_N
854
+ })
855
+ ]);
856
+ const byResource = /* @__PURE__ */ new Map();
857
+ const ensure = (resourceId) => getOrCreate(byResource, resourceId, () => ({
858
+ tokens: 0,
859
+ cost: null,
860
+ costUnit: null
861
+ }));
862
+ const foldTokens = (groups) => {
863
+ for (const group of groups) {
864
+ const resourceId = group.dimensions.resourceId;
865
+ if (!resourceId) continue;
866
+ const entry = ensure(resourceId);
867
+ entry.tokens += group.value;
868
+ if (group.estimatedCost != null) {
869
+ entry.cost = (entry.cost ?? 0) + group.estimatedCost;
870
+ if (group.costUnit) entry.costUnit = group.costUnit;
871
+ }
872
+ }
873
+ };
874
+ foldTokens(inputRes.groups);
875
+ foldTokens(outputRes.groups);
876
+ return threadsRes.groups.filter((group) => !!group.dimensions.resourceId).map((group) => {
877
+ const resourceId = group.dimensions.resourceId;
878
+ const extra = byResource.get(resourceId);
879
+ return {
880
+ resourceId,
881
+ threadCount: group.value,
882
+ tokens: extra?.tokens ?? 0,
883
+ cost: extra?.cost ?? null,
884
+ costUnit: extra?.costUnit ?? null
885
+ };
886
+ });
887
+ },
888
+ ...queryOptions
889
+ });
890
+ }
891
+ //#endregion
892
+ //#region src/hooks/metrics/use-total-tokens-kpi-metrics.tsx
893
+ function useTotalTokensKpiMetrics(params) {
894
+ const client = useMastraClient();
895
+ const { filters, filterKey, queryOptions } = params;
896
+ return useQuery({
897
+ queryKey: [
898
+ "metrics",
899
+ "total-tokens-kpi",
900
+ filterKey
901
+ ],
902
+ queryFn: async () => {
903
+ const [input, output] = await Promise.all([client.getMetricAggregate({
904
+ name: ["mastra_model_total_input_tokens"],
905
+ aggregation: "sum",
906
+ filters,
907
+ comparePeriod: "previous_period"
908
+ }), client.getMetricAggregate({
909
+ name: ["mastra_model_total_output_tokens"],
910
+ aggregation: "sum",
911
+ filters,
912
+ comparePeriod: "previous_period"
913
+ })]);
914
+ const hasCurrent = input.value != null || output.value != null;
915
+ const hasPrevious = input.previousValue != null || output.previousValue != null;
916
+ const value = (input.value ?? 0) + (output.value ?? 0);
917
+ const previousValue = (input.previousValue ?? 0) + (output.previousValue ?? 0);
918
+ const changePercent = hasPrevious && previousValue > 0 ? (value - previousValue) / previousValue * 100 : null;
919
+ return {
920
+ value: hasCurrent ? value : null,
921
+ previousValue: hasPrevious ? previousValue : null,
922
+ changePercent
923
+ };
924
+ },
925
+ ...queryOptions
926
+ });
927
+ }
928
+ //#endregion
929
+ //#region src/hooks/metrics/use-trace-volume-metrics.tsx
930
+ async function fetchVolume(client, metricName, filters) {
931
+ const res = await client.getMetricBreakdown({
932
+ name: [metricName],
933
+ groupBy: ["entityName", "status"],
934
+ aggregation: "count",
935
+ orderDirection: "DESC",
936
+ filters
937
+ });
938
+ const map = /* @__PURE__ */ new Map();
939
+ for (const group of res.groups) {
940
+ const name = group.dimensions.entityName ?? "unknown";
941
+ const status = group.dimensions.status ?? "ok";
942
+ const entry = getOrCreate(map, name, () => ({
943
+ completed: 0,
944
+ errors: 0
945
+ }));
946
+ if (status === "error") entry.errors += group.value;
947
+ else entry.completed += group.value;
948
+ }
949
+ return Array.from(map.entries()).map(([name, vals]) => ({
950
+ name,
951
+ ...vals
952
+ })).sort((a, b) => b.completed + b.errors - (a.completed + a.errors));
953
+ }
954
+ function useTraceVolumeMetrics(params) {
955
+ const client = useMastraClient();
956
+ const { filters, filterKey, queryOptions } = params;
957
+ return useQuery({
958
+ queryKey: [
959
+ "metrics",
960
+ "trace-volume",
961
+ filterKey
962
+ ],
963
+ queryFn: async () => {
964
+ const [agentData, workflowData, toolData] = await Promise.all([
965
+ fetchVolume(client, "mastra_agent_duration_ms", filters),
966
+ fetchVolume(client, "mastra_workflow_duration_ms", filters),
967
+ fetchVolume(client, "mastra_tool_duration_ms", filters)
968
+ ]);
969
+ return {
970
+ agentData,
971
+ workflowData,
972
+ toolData
973
+ };
974
+ },
975
+ ...queryOptions
976
+ });
977
+ }
978
+ //#endregion
979
+ export { chooseMetricsInterval, formatMetricsBucketLabel, useActiveResourcesKpiMetrics, useActiveThreadsKpiMetrics, useAgentRunsKpiMetrics, useLatencyMetrics, useMetricsQueryFilters, useModelCostKpiMetrics, useModelUsageCostMetrics, useScoresMetrics, useTokenUsageByAgentMetrics, useTokenUsageTimeSeries, useTopActiveThreadsMetrics, useTopResourcesByThreadsMetrics, useTotalTokensKpiMetrics, useTraceVolumeMetrics };
980
+
981
+ //# sourceMappingURL=index.js.map