@camunda/design-system 0.35.0 → 0.37.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 (130) hide show
  1. package/dist/src/components/ui/app-header.d.ts +6 -2
  2. package/dist/src/components/ui/app-header.d.ts.map +1 -1
  3. package/dist/src/components/ui/app-header.js +1 -1
  4. package/dist/src/components/ui/app-header.js.map +1 -1
  5. package/dist/src/components/ui/app-sidebar.d.ts +44 -12
  6. package/dist/src/components/ui/app-sidebar.d.ts.map +1 -1
  7. package/dist/src/components/ui/app-sidebar.js +42 -15
  8. package/dist/src/components/ui/app-sidebar.js.map +1 -1
  9. package/dist/src/components/ui/avatar.d.ts +7 -0
  10. package/dist/src/components/ui/avatar.d.ts.map +1 -1
  11. package/dist/src/components/ui/avatar.js +1 -1
  12. package/dist/src/components/ui/avatar.js.map +1 -1
  13. package/dist/src/components/ui/bar-chart.d.ts.map +1 -1
  14. package/dist/src/components/ui/bar-chart.js +45 -7
  15. package/dist/src/components/ui/bar-chart.js.map +1 -1
  16. package/dist/src/components/ui/chart.d.ts +9 -2
  17. package/dist/src/components/ui/chart.d.ts.map +1 -1
  18. package/dist/src/components/ui/chart.js +13 -4
  19. package/dist/src/components/ui/chart.js.map +1 -1
  20. package/dist/src/components/ui/data-table.d.ts +6 -0
  21. package/dist/src/components/ui/data-table.d.ts.map +1 -1
  22. package/dist/src/components/ui/data-table.js +6 -5
  23. package/dist/src/components/ui/data-table.js.map +1 -1
  24. package/dist/src/components/ui/definition-tooltip.d.ts.map +1 -1
  25. package/dist/src/components/ui/definition-tooltip.js +37 -9
  26. package/dist/src/components/ui/definition-tooltip.js.map +1 -1
  27. package/dist/src/components/ui/line-chart.d.ts.map +1 -1
  28. package/dist/src/components/ui/line-chart.js +12 -2
  29. package/dist/src/components/ui/line-chart.js.map +1 -1
  30. package/dist/src/components/ui/meter.d.ts.map +1 -1
  31. package/dist/src/components/ui/meter.js +1 -10
  32. package/dist/src/components/ui/meter.js.map +1 -1
  33. package/dist/src/components/ui/nav-breadcrumb.d.ts +120 -2
  34. package/dist/src/components/ui/nav-breadcrumb.d.ts.map +1 -1
  35. package/dist/src/components/ui/nav-breadcrumb.js +54 -7
  36. package/dist/src/components/ui/nav-breadcrumb.js.map +1 -1
  37. package/dist/src/components/ui/nav-data.d.ts +46 -0
  38. package/dist/src/components/ui/nav-data.d.ts.map +1 -0
  39. package/dist/src/components/ui/nav-data.js +66 -0
  40. package/dist/src/components/ui/nav-data.js.map +1 -0
  41. package/dist/src/components/ui/nav-icon.assignability.d.ts +30 -0
  42. package/dist/src/components/ui/nav-icon.assignability.d.ts.map +1 -0
  43. package/dist/src/components/ui/nav-icon.assignability.js +28 -0
  44. package/dist/src/components/ui/nav-icon.assignability.js.map +1 -0
  45. package/dist/src/components/ui/nav-icon.d.ts +33 -0
  46. package/dist/src/components/ui/nav-icon.d.ts.map +1 -0
  47. package/dist/src/components/ui/nav-icon.js +20 -0
  48. package/dist/src/components/ui/nav-icon.js.map +1 -0
  49. package/dist/src/components/ui/notifications.d.ts +72 -0
  50. package/dist/src/components/ui/notifications.d.ts.map +1 -0
  51. package/dist/src/components/ui/notifications.js +53 -0
  52. package/dist/src/components/ui/notifications.js.map +1 -0
  53. package/dist/src/components/ui/scorecard.d.ts +1 -1
  54. package/dist/src/components/ui/scorecard.d.ts.map +1 -1
  55. package/dist/src/components/ui/scorecard.js +13 -8
  56. package/dist/src/components/ui/scorecard.js.map +1 -1
  57. package/dist/src/components/ui/sheet.d.ts +1 -1
  58. package/dist/src/components/ui/sparkline.d.ts.map +1 -1
  59. package/dist/src/components/ui/sparkline.js +11 -1
  60. package/dist/src/components/ui/sparkline.js.map +1 -1
  61. package/dist/src/examples/agent-control-plane-processes/DashboardPage.d.ts +3 -0
  62. package/dist/src/examples/agent-control-plane-processes/DashboardPage.d.ts.map +1 -0
  63. package/dist/src/examples/agent-control-plane-processes/DashboardPage.js +114 -0
  64. package/dist/src/examples/agent-control-plane-processes/DashboardPage.js.map +1 -0
  65. package/dist/src/examples/agent-control-plane-processes/derive.d.ts +65 -0
  66. package/dist/src/examples/agent-control-plane-processes/derive.d.ts.map +1 -0
  67. package/dist/src/examples/agent-control-plane-processes/derive.js +234 -0
  68. package/dist/src/examples/agent-control-plane-processes/derive.js.map +1 -0
  69. package/dist/src/examples/agent-control-plane-processes/mock-data.d.ts +37 -0
  70. package/dist/src/examples/agent-control-plane-processes/mock-data.d.ts.map +1 -0
  71. package/dist/src/examples/agent-control-plane-processes/mock-data.js +206 -0
  72. package/dist/src/examples/agent-control-plane-processes/mock-data.js.map +1 -0
  73. package/dist/src/examples/agent-control-plane-processes/summary-mock-data.d.ts +37 -0
  74. package/dist/src/examples/agent-control-plane-processes/summary-mock-data.d.ts.map +1 -0
  75. package/dist/src/examples/agent-control-plane-processes/summary-mock-data.js +53 -0
  76. package/dist/src/examples/agent-control-plane-processes/summary-mock-data.js.map +1 -0
  77. package/dist/src/examples/shared/DashboardSection.d.ts +9 -0
  78. package/dist/src/examples/shared/DashboardSection.d.ts.map +1 -0
  79. package/dist/src/examples/shared/DashboardSection.js +5 -0
  80. package/dist/src/examples/shared/DashboardSection.js.map +1 -0
  81. package/dist/src/examples/shared/DateRangePopover.d.ts +3 -0
  82. package/dist/src/examples/shared/DateRangePopover.d.ts.map +1 -0
  83. package/dist/src/examples/shared/DateRangePopover.js +35 -0
  84. package/dist/src/examples/shared/DateRangePopover.js.map +1 -0
  85. package/dist/src/examples/shared/agent-control-plane-nav.d.ts +4 -0
  86. package/dist/src/examples/shared/agent-control-plane-nav.d.ts.map +1 -0
  87. package/dist/src/examples/shared/agent-control-plane-nav.js +25 -0
  88. package/dist/src/examples/shared/agent-control-plane-nav.js.map +1 -0
  89. package/dist/src/examples/shared/date-range-utils.d.ts +10 -0
  90. package/dist/src/examples/shared/date-range-utils.d.ts.map +1 -0
  91. package/dist/src/examples/shared/date-range-utils.js +75 -0
  92. package/dist/src/examples/shared/date-range-utils.js.map +1 -0
  93. package/dist/src/icons/camunda-app-icons.d.ts +19 -0
  94. package/dist/src/icons/camunda-app-icons.d.ts.map +1 -0
  95. package/dist/src/icons/camunda-app-icons.js +26 -0
  96. package/dist/src/icons/camunda-app-icons.js.map +1 -0
  97. package/dist/src/icons/index.d.ts +1 -0
  98. package/dist/src/icons/index.d.ts.map +1 -1
  99. package/dist/src/icons/index.js +1 -0
  100. package/dist/src/icons/index.js.map +1 -1
  101. package/dist/src/index.d.ts +6 -3
  102. package/dist/src/index.d.ts.map +1 -1
  103. package/dist/src/index.js +4 -2
  104. package/dist/src/index.js.map +1 -1
  105. package/dist/styles.css +77 -25
  106. package/package.json +1 -1
  107. package/dist/src/examples/cost-dashboard/CostBreakdownChart.d.ts +0 -2
  108. package/dist/src/examples/cost-dashboard/CostBreakdownChart.d.ts.map +0 -1
  109. package/dist/src/examples/cost-dashboard/CostBreakdownChart.js +0 -21
  110. package/dist/src/examples/cost-dashboard/CostBreakdownChart.js.map +0 -1
  111. package/dist/src/examples/cost-dashboard/CostDashboardPage.d.ts +0 -2
  112. package/dist/src/examples/cost-dashboard/CostDashboardPage.d.ts.map +0 -1
  113. package/dist/src/examples/cost-dashboard/CostDashboardPage.js +0 -56
  114. package/dist/src/examples/cost-dashboard/CostDashboardPage.js.map +0 -1
  115. package/dist/src/examples/cost-dashboard/TrendChart.d.ts +0 -2
  116. package/dist/src/examples/cost-dashboard/TrendChart.d.ts.map +0 -1
  117. package/dist/src/examples/cost-dashboard/TrendChart.js +0 -19
  118. package/dist/src/examples/cost-dashboard/TrendChart.js.map +0 -1
  119. package/dist/src/examples/cost-dashboard/mock-data.d.ts +0 -34
  120. package/dist/src/examples/cost-dashboard/mock-data.d.ts.map +0 -1
  121. package/dist/src/examples/cost-dashboard/mock-data.js +0 -120
  122. package/dist/src/examples/cost-dashboard/mock-data.js.map +0 -1
  123. package/dist/src/examples/projects-list/ProjectsListPage.d.ts +0 -4
  124. package/dist/src/examples/projects-list/ProjectsListPage.d.ts.map +0 -1
  125. package/dist/src/examples/projects-list/ProjectsListPage.js +0 -58
  126. package/dist/src/examples/projects-list/ProjectsListPage.js.map +0 -1
  127. package/dist/src/examples/projects-list/mock-data.d.ts +0 -10
  128. package/dist/src/examples/projects-list/mock-data.d.ts.map +0 -1
  129. package/dist/src/examples/projects-list/mock-data.js +0 -83
  130. package/dist/src/examples/projects-list/mock-data.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sparkline.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,SAAS,CAAC,EACjB,IAAI,EACJ,OAAO,EACP,OAAe,EACf,SAAS,GACV,EAAE,cAAc,qBAgDhB;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"sparkline.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,SAAS,CAAC,EACjB,IAAI,EACJ,OAAO,EACP,OAAe,EACf,SAAS,GACV,EAAE,cAAc,qBA0DhB;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -13,7 +13,17 @@ function Sparkline({ data, dataKey, loading = false, className, }) {
13
13
  // BarChart/LineChart, which enable this unconditionally, the
14
14
  // default `true` here would otherwise make the SVG an unexpected
15
15
  // tab stop (role="application", tabIndex=0) with nothing to do.
16
- accessibilityLayer: false, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "0%", stopColor: "var(--chart-1)", stopOpacity: 0.25 }), _jsx("stop", { offset: "100%", stopColor: "var(--chart-1)", stopOpacity: 0 })] }) }), _jsx(YAxis, { hide: true, domain: ["dataMin", "dataMax"] }), _jsx(Area, { dataKey: dataKey, stroke: "var(--chart-1)", strokeWidth: 2, fill: `url(#${gradientId})`, isAnimationActive: false })] }) })) }));
16
+ accessibilityLayer: false,
17
+ // Recharts' own default chart margin otherwise leaves ~5px of
18
+ // gutter on every side — invisible when Scorecard's Card padding
19
+ // dwarfed it, but exactly the gap that kept the trend from truly
20
+ // reaching the card's edges once that padding was canceled.
21
+ // Left/right stay at 0 for a true edge-to-edge bleed. Top/bottom
22
+ // keep a sliver matching the stroke's half-width: with
23
+ // domain=["dataMin", "dataMax"] the highest/lowest point's line
24
+ // is centered exactly on the plot's top/bottom edge, so zero
25
+ // margin there clips half the stroke at that point.
26
+ margin: { top: 2, right: 0, bottom: 2, left: 0 }, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "0%", stopColor: "var(--chart-1)", stopOpacity: "var(--chart-area-fill-opacity)" }), _jsx("stop", { offset: "100%", stopColor: "var(--chart-1)", stopOpacity: 0 })] }) }), _jsx(YAxis, { hide: true, domain: ["dataMin", "dataMax"] }), _jsx(Area, { dataKey: dataKey, stroke: "var(--chart-1)", strokeWidth: 2, fill: `url(#${gradientId})`, isAnimationActive: false })] }) })) }));
17
27
  }
18
28
  export { Sparkline };
19
29
  //# sourceMappingURL=sparkline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sparkline.js","sourceRoot":"","sources":["../../../../src/components/ui/sparkline.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,IAAI,EACJ,SAAS,IAAI,iBAAiB,EAC9B,mBAAmB,EACnB,KAAK,GACN,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC,SAAS,SAAS,CAAC,EACjB,IAAI,EACJ,OAAO,EACP,OAAO,GAAG,KAAK,EACf,SAAS,GACM;IACf,yEAAyE;IACzE,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,UAAU,GAAG,sBAAsB,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;IAE3E,OAAO,CACL,2BAAe,WAAW,EAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAC9D,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,QAAQ,IAAC,SAAS,EAAC,eAAe,GAAG,CACvC,CAAC,CAAC,CAAC,CACF,KAAC,mBAAmB,cAClB,MAAC,iBAAiB,IAChB,IAAI,EAAE,IAAI,iBACE,MAAM;gBAClB,8DAA8D;gBAC9D,6DAA6D;gBAC7D,iEAAiE;gBACjE,gEAAgE;gBAChE,kBAAkB,EAAE,KAAK,aAEzB,yBACE,0BAAgB,EAAE,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,aACzD,eACE,MAAM,EAAC,IAAI,EACX,SAAS,EAAC,gBAAgB,EAC1B,WAAW,EAAE,IAAI,GACjB,EACF,eACE,MAAM,EAAC,MAAM,EACb,SAAS,EAAC,gBAAgB,EAC1B,WAAW,EAAE,CAAC,GACd,IACa,GACZ,EACP,KAAC,KAAK,IAAC,IAAI,QAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,GAAI,EAC9C,KAAC,IAAI,IACH,OAAO,EAAE,OAAO,EAChB,MAAM,EAAC,gBAAgB,EACvB,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,QAAQ,UAAU,GAAG,EAC3B,iBAAiB,EAAE,KAAK,GACxB,IACgB,GACA,CACvB,GACG,CACP,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"sparkline.js","sourceRoot":"","sources":["../../../../src/components/ui/sparkline.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,IAAI,EACJ,SAAS,IAAI,iBAAiB,EAC9B,mBAAmB,EACnB,KAAK,GACN,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC,SAAS,SAAS,CAAC,EACjB,IAAI,EACJ,OAAO,EACP,OAAO,GAAG,KAAK,EACf,SAAS,GACM;IACf,yEAAyE;IACzE,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,UAAU,GAAG,sBAAsB,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;IAE3E,OAAO,CACL,2BAAe,WAAW,EAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAC9D,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,QAAQ,IAAC,SAAS,EAAC,eAAe,GAAG,CACvC,CAAC,CAAC,CAAC,CACF,KAAC,mBAAmB,cAClB,MAAC,iBAAiB,IAChB,IAAI,EAAE,IAAI,iBACE,MAAM;gBAClB,8DAA8D;gBAC9D,6DAA6D;gBAC7D,iEAAiE;gBACjE,gEAAgE;gBAChE,kBAAkB,EAAE,KAAK;gBACzB,8DAA8D;gBAC9D,iEAAiE;gBACjE,iEAAiE;gBACjE,4DAA4D;gBAC5D,iEAAiE;gBACjE,uDAAuD;gBACvD,gEAAgE;gBAChE,6DAA6D;gBAC7D,oDAAoD;gBACpD,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aAEhD,yBACE,0BAAgB,EAAE,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,aACzD,eACE,MAAM,EAAC,IAAI,EACX,SAAS,EAAC,gBAAgB,EAC1B,WAAW,EAAC,gCAAgC,GAC5C,EACF,eACE,MAAM,EAAC,MAAM,EACb,SAAS,EAAC,gBAAgB,EAC1B,WAAW,EAAE,CAAC,GACd,IACa,GACZ,EACP,KAAC,KAAK,IAAC,IAAI,QAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,GAAI,EAC9C,KAAC,IAAI,IACH,OAAO,EAAE,OAAO,EAChB,MAAM,EAAC,gBAAgB,EACvB,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,QAAQ,UAAU,GAAG,EAC3B,iBAAiB,EAAE,KAAK,GACxB,IACgB,GACA,CACvB,GACG,CACP,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ export declare function DashboardPage(): React.JSX.Element;
3
+ //# sourceMappingURL=DashboardPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.d.ts","sourceRoot":"","sources":["../../../../src/examples/agent-control-plane-processes/DashboardPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAwF/B,wBAAgB,aAAa,sBAmW5B"}
@@ -0,0 +1,114 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { ArrowRight, Workflow } from "lucide-react";
4
+ import { Card, CardHeader, CardTitle, CardContent, Scorecard, LineChart, BarChart, Button, DataTable, Combobox, PageLayout, PageHeader, } from "../../index.js";
5
+ import { AppShell } from "../shared/AppShell.js";
6
+ import { DashboardSection } from "../shared/DashboardSection.js";
7
+ import { agentControlPlaneNavFor, agentControlPlaneBreadcrumb, } from "../shared/agent-control-plane-nav.js";
8
+ import { DateRangePopover } from "../shared/DateRangePopover.js";
9
+ import { ALL, getProcessOptions, getSelectedProcess, getVersionOptions, getAgentOptions, getVisibleAgents, computeKpis, computeTokenTrend, computeTokenBreakdown, computeToolCallFrequency, computeInstanceRows, categoryChartHeight, } from "./derive.js";
10
+ import { topProcessesByInstances, topProcessesByTokens, } from "./summary-mock-data.js";
11
+ const preserveOrder = () => 0;
12
+ const kpiGridClass = "grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4";
13
+ const instancesRankingConfig = {
14
+ instances: { label: "Instances", color: "var(--chart-1)" },
15
+ };
16
+ const tokensRankingConfig = {
17
+ tokens: { label: "Tokens", color: "var(--chart-1)" },
18
+ };
19
+ const instanceColumns = [
20
+ { accessorKey: "key", header: "Instance key" },
21
+ { accessorKey: "started", header: "Started" },
22
+ {
23
+ accessorKey: "agentNames",
24
+ header: "Agents",
25
+ cell: ({ row }) => row.original.agentNames.join(", "),
26
+ },
27
+ {
28
+ accessorKey: "inputTokens",
29
+ header: "Input tokens",
30
+ meta: { align: "right" },
31
+ cell: ({ row }) => (_jsx("span", { className: "block text-right tabular-nums", children: row.original.inputTokens.toLocaleString() })),
32
+ },
33
+ {
34
+ accessorKey: "outputTokens",
35
+ header: "Output tokens",
36
+ meta: { align: "right" },
37
+ cell: ({ row }) => (_jsx("span", { className: "block text-right tabular-nums", children: row.original.outputTokens.toLocaleString() })),
38
+ },
39
+ ];
40
+ export function DashboardPage() {
41
+ const [processFilter, setProcessFilter] = React.useState(ALL);
42
+ const [versionFilter, setVersionFilter] = React.useState("");
43
+ const [agentFilter, setAgentFilter] = React.useState(ALL);
44
+ const [prevProcessFilter, setPrevProcessFilter] = React.useState(processFilter);
45
+ let effectiveVersionFilter = versionFilter;
46
+ let effectiveAgentFilter = agentFilter;
47
+ if (processFilter !== prevProcessFilter) {
48
+ setPrevProcessFilter(processFilter);
49
+ const process = processFilter === ALL ? undefined : getSelectedProcess(processFilter);
50
+ if (process) {
51
+ effectiveVersionFilter = String(process.latestVersion);
52
+ effectiveAgentFilter =
53
+ process.agents.length === 1 ? process.agents[0].name : ALL;
54
+ }
55
+ else {
56
+ effectiveVersionFilter = "";
57
+ effectiveAgentFilter = ALL;
58
+ }
59
+ setVersionFilter(effectiveVersionFilter);
60
+ setAgentFilter(effectiveAgentFilter);
61
+ }
62
+ const selectedProcess = processFilter === ALL ? undefined : getSelectedProcess(processFilter);
63
+ const visibleAgents = getVisibleAgents(processFilter, effectiveAgentFilter);
64
+ const kpis = computeKpis(processFilter, visibleAgents);
65
+ const trend = computeTokenTrend(processFilter, effectiveAgentFilter, visibleAgents);
66
+ const breakdown = computeTokenBreakdown(visibleAgents);
67
+ const toolFrequency = computeToolCallFrequency(visibleAgents);
68
+ const instanceRows = computeInstanceRows(processFilter, effectiveAgentFilter);
69
+ const processOptions = React.useMemo(() => getProcessOptions().map((opt) => ({ ...opt })), []);
70
+ const versionOptions = React.useMemo(() => selectedProcess
71
+ ? getVersionOptions(selectedProcess).map((opt) => ({ ...opt }))
72
+ : [], [selectedProcess]);
73
+ const agentOptions = React.useMemo(() => selectedProcess
74
+ ? getAgentOptions(selectedProcess).map((opt) => ({ ...opt }))
75
+ : [], [selectedProcess]);
76
+ const scopeFilters = (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Combobox, { options: processOptions, value: processFilter, onValueChange: (value) => setProcessFilter(value ?? ALL), placeholder: "Select process\u2026", searchPlaceholder: "Search processes\u2026", sortFn: preserveOrder, "aria-label": "Process", className: "w-56" }), selectedProcess ? (_jsx(Combobox, { options: versionOptions, value: effectiveVersionFilter,
77
+ // TODO: model per-version metrics; this filter is currently
78
+ // cosmetic — every version of a process shares the same mock
79
+ // dataset in this pass.
80
+ onValueChange: (value) => {
81
+ if (value)
82
+ setVersionFilter(value);
83
+ }, placeholder: "Select version\u2026", searchPlaceholder: "Search versions\u2026", sortFn: preserveOrder, "aria-label": "Version", className: "w-36" })) : null, selectedProcess ? (_jsx(Combobox, { options: agentOptions, value: effectiveAgentFilter, onValueChange: (value) => setAgentFilter(value ?? ALL), placeholder: "Select agent\u2026", searchPlaceholder: "Search agents\u2026", sortFn: preserveOrder, "aria-label": "Agent", className: "w-48" })) : null] }));
84
+ return (_jsx(AppShell, { sidebarLabel: "Agent Control Plane navigation", items: agentControlPlaneNavFor("processes"), breadcrumb: agentControlPlaneBreadcrumb, children: _jsxs(PageLayout, { tabIndex: -1, width: "constrained", children: [_jsx(PageHeader, { title: "Processes", description: "Drill into process and agent performance, token usage, and running instances.", actions: _jsx(DateRangePopover, {}) }), _jsxs("div", { className: "mt-6 space-y-8", children: [scopeFilters, _jsxs("div", { className: kpiGridClass, children: [_jsx(Scorecard, { label: "Total process instances", value: kpis.totalInstances.toLocaleString(), delta: kpis.deltas.totalInstances, sparkline: {
85
+ data: kpis.sparklines.totalInstances,
86
+ dataKey: "value",
87
+ } }), _jsx(Scorecard, { label: "Total agent runs", value: kpis.totalAgentRuns.toLocaleString(), delta: kpis.deltas.totalAgentRuns, sparkline: {
88
+ data: kpis.sparklines.totalAgentRuns,
89
+ dataKey: "value",
90
+ } }), _jsx(Scorecard, { label: "Total tokens", value: kpis.totalTokens.toLocaleString(), delta: kpis.deltas.totalTokens, sparkline: {
91
+ data: kpis.sparklines.totalTokens,
92
+ dataKey: "value",
93
+ } }), _jsx(Scorecard, { label: "Agent execution duration", value: `${kpis.medianResponseMs.toLocaleString()} ms`, delta: kpis.deltas.medianResponseMs, tooltip: "Median time from agent task activation to completion, across agent runs.", sparkline: {
94
+ data: kpis.sparklines.medianResponseMs,
95
+ dataKey: "value",
96
+ } })] }), processFilter === ALL ? (_jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-2", children: [_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Top processes by instances" }) }), _jsxs(CardContent, { children: [_jsx("div", { className: "w-full", style: {
97
+ height: categoryChartHeight(topProcessesByInstances.length),
98
+ }, children: _jsx(BarChart, { data: topProcessesByInstances.map((d) => ({ ...d })), categoryKey: "process", config: instancesRankingConfig, orientation: "horizontal", className: "aspect-auto h-full w-full" }) }), _jsxs(Button, { type: "button", variant: "secondary", size: "sm", className: "mt-2",
99
+ // TODO: navigate to a filtered view of processes
100
+ onClick: () => { }, children: ["All processes", _jsx(ArrowRight, {})] })] })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Top processes by tokens" }) }), _jsx(CardContent, { children: _jsx("div", { className: "w-full", style: {
101
+ height: categoryChartHeight(topProcessesByTokens.length),
102
+ }, children: _jsx(BarChart, { data: topProcessesByTokens.map((d) => ({ ...d })), categoryKey: "process", config: tokensRankingConfig, orientation: "horizontal", className: "aspect-auto h-full w-full" }) }) })] })] })) : null, _jsx(DashboardSection, { title: "Model & token usage", children: _jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: kpiGridClass, children: _jsx(Scorecard, { label: "Model calls", value: kpis.modelCalls.toLocaleString(), delta: kpis.deltas.modelCalls, sparkline: {
103
+ data: kpis.sparklines.modelCalls,
104
+ dataKey: "value",
105
+ } }) }), _jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-2", children: [_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Token trend" }) }), _jsx(CardContent, { children: _jsx(LineChart, { data: trend.data, categoryKey: "date", config: trend.config, curve: "linear", className: "h-56 w-full" }) })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Token usage by agent" }) }), _jsx(CardContent, { children: _jsx("div", { className: "w-full", style: {
106
+ height: categoryChartHeight(breakdown.data.length),
107
+ }, children: _jsx(BarChart, { data: breakdown.data, categoryKey: "agent", config: breakdown.config, orientation: "horizontal", stacked: true, className: "aspect-auto h-full w-full" }) }) })] })] })] }) }), _jsx(DashboardSection, { title: "Tool calls", children: _jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: kpiGridClass, children: _jsx(Scorecard, { label: "Tool calls", value: kpis.toolCalls.toLocaleString(), delta: kpis.deltas.toolCalls, sparkline: {
108
+ data: kpis.sparklines.toolCalls,
109
+ dataKey: "value",
110
+ } }) }), _jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-2", children: [_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Tool-call frequency" }) }), _jsx(CardContent, { children: _jsx("div", { className: "w-full", style: {
111
+ height: categoryChartHeight(toolFrequency.data.length),
112
+ }, children: _jsx(BarChart, { data: toolFrequency.data, categoryKey: "tool", config: toolFrequency.config, orientation: "horizontal", className: "aspect-auto h-full w-full" }) }) })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Tool-call heatmap" }) }), _jsxs(CardContent, { className: "flex flex-1 flex-col items-center justify-center gap-2 py-12 text-center", children: [_jsx(Workflow, { className: "size-8 text-neutral-foreground-subtle", "aria-hidden": "true" }), processFilter === ALL ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: "Select a process" }), _jsx("p", { className: "max-w-xs text-sm text-neutral-foreground-subtle", children: "See its tool-call heatmap by process step." })] })) : (_jsxs(_Fragment, { children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: "Not available" }), _jsx("p", { className: "max-w-xs text-sm text-neutral-foreground-subtle", children: "Needs a BPMN diagram renderer this design system doesn't have." })] }))] })] })] })] }) }), _jsx(DashboardSection, { title: "Instances", children: _jsx(DataTable, { columns: instanceColumns, data: instanceRows, sorting: true, getRowId: (row) => row.key }) })] })] }) }));
113
+ }
114
+ //# sourceMappingURL=DashboardPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.js","sourceRoot":"","sources":["../../../../src/examples/agent-control-plane-processes/DashboardPage.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,SAAS,EACT,QAAQ,EACR,UAAU,EACV,UAAU,GAEX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AAE9B,MAAM,YAAY,GAAG,sDAAsD,CAAC;AAE5E,MAAM,sBAAsB,GAAG;IAC7B,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE;CACrC,CAAC;AAExB,MAAM,mBAAmB,GAAG;IAC1B,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;CAC/B,CAAC;AAExB,MAAM,eAAe,GAA6B;IAChD,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE;IAC9C,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC7C;QACE,WAAW,EAAE,YAAY;QACzB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;KACtD;IACD;QACE,WAAW,EAAE,aAAa;QAC1B,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QACxB,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CACjB,eAAM,SAAS,EAAC,+BAA+B,YAC5C,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,GACrC,CACR;KACF;IACD;QACE,WAAW,EAAE,cAAc;QAC3B,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QACxB,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CACjB,eAAM,SAAS,EAAC,+BAA+B,YAC5C,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,GACtC,CACR;KACF;CACF,CAAC;AAEF,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,GAAG,CAAC,CAAC;IACtE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,GAAG,CAAC,CAAC;IAClE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAC7C,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEhC,IAAI,sBAAsB,GAAG,aAAa,CAAC;IAC3C,IAAI,oBAAoB,GAAG,WAAW,CAAC;IACvC,IAAI,aAAa,KAAK,iBAAiB,EAAE,CAAC;QACxC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACpC,MAAM,OAAO,GACX,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,OAAO,EAAE,CAAC;YACZ,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACvD,oBAAoB;gBAClB,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,sBAAsB,GAAG,EAAE,CAAC;YAC5B,oBAAoB,GAAG,GAAG,CAAC;QAC7B,CAAC;QACD,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;QACzC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,eAAe,GACnB,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,iBAAiB,CAC7B,aAAa,EACb,oBAAoB,EACpB,aAAa,CACd,CAAC;IACF,MAAM,SAAS,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;IAE9E,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,EACpD,EAAE,CACH,CAAC;IACF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CACH,eAAe;QACb,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,EAAE,EACR,CAAC,eAAe,CAAC,CAClB,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CACH,eAAe;QACb,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,EAAE,EACR,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,MAAM,YAAY,GAAG,CACnB,eAAK,SAAS,EAAC,mCAAmC,aAChD,KAAC,QAAQ,IACP,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,CAAC,EACxD,WAAW,EAAC,sBAAiB,EAC7B,iBAAiB,EAAC,wBAAmB,EACrC,MAAM,EAAE,aAAa,gBACV,SAAS,EACpB,SAAS,EAAC,MAAM,GAChB,EACD,eAAe,CAAC,CAAC,CAAC,CACjB,KAAC,QAAQ,IACP,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,sBAAsB;gBAC7B,4DAA4D;gBAC5D,6DAA6D;gBAC7D,wBAAwB;gBACxB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,IAAI,KAAK;wBAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC,EACD,WAAW,EAAC,sBAAiB,EAC7B,iBAAiB,EAAC,uBAAkB,EACpC,MAAM,EAAE,aAAa,gBACV,SAAS,EACpB,SAAS,EAAC,MAAM,GAChB,CACH,CAAC,CAAC,CAAC,IAAI,EACP,eAAe,CAAC,CAAC,CAAC,CACjB,KAAC,QAAQ,IACP,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,oBAAoB,EAC3B,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,CAAC,EACtD,WAAW,EAAC,oBAAe,EAC3B,iBAAiB,EAAC,qBAAgB,EAClC,MAAM,EAAE,aAAa,gBACV,OAAO,EAClB,SAAS,EAAC,MAAM,GAChB,CACH,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;IAEF,OAAO,CACL,KAAC,QAAQ,IACP,YAAY,EAAC,gCAAgC,EAC7C,KAAK,EAAE,uBAAuB,CAAC,WAAW,CAAC,EAC3C,UAAU,EAAE,2BAA2B,YAEvC,MAAC,UAAU,IAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAC,aAAa,aAC3C,KAAC,UAAU,IACT,KAAK,EAAC,WAAW,EACjB,WAAW,EAAC,+EAA+E,EAC3F,OAAO,EAAE,KAAC,gBAAgB,KAAG,GAC7B,EAEF,eAAK,SAAS,EAAC,gBAAgB,aAC5B,YAAY,EAEb,eAAK,SAAS,EAAE,YAAY,aAC1B,KAAC,SAAS,IACR,KAAK,EAAC,yBAAyB,EAC/B,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAC3C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EACjC,SAAS,EAAE;wCACT,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;wCACpC,OAAO,EAAE,OAAO;qCACjB,GACD,EACF,KAAC,SAAS,IACR,KAAK,EAAC,kBAAkB,EACxB,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAC3C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EACjC,SAAS,EAAE;wCACT,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;wCACpC,OAAO,EAAE,OAAO;qCACjB,GACD,EACF,KAAC,SAAS,IACR,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EACxC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAC9B,SAAS,EAAE;wCACT,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;wCACjC,OAAO,EAAE,OAAO;qCACjB,GACD,EACF,KAAC,SAAS,IACR,KAAK,EAAC,0BAA0B,EAChC,KAAK,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,EACrD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EACnC,OAAO,EAAC,0EAA0E,EAClF,SAAS,EAAE;wCACT,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB;wCACtC,OAAO,EAAE,OAAO;qCACjB,GACD,IAEE,EAEL,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,CACvB,eAAK,SAAS,EAAC,uCAAuC,aACpD,MAAC,IAAI,eACH,KAAC,UAAU,cACT,KAAC,SAAS,6CAAuC,GACtC,EACb,MAAC,WAAW,eACV,cACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE;wDACL,MAAM,EAAE,mBAAmB,CACzB,uBAAuB,CAAC,MAAM,CAC/B;qDACF,YAED,KAAC,QAAQ,IACP,IAAI,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EACpD,WAAW,EAAC,SAAS,EACrB,MAAM,EAAE,sBAAsB,EAC9B,WAAW,EAAC,YAAY,EACxB,SAAS,EAAC,2BAA2B,GACrC,GACE,EACN,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,MAAM;oDAChB,iDAAiD;oDACjD,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,8BAGjB,KAAC,UAAU,KAAG,IACP,IACG,IACT,EACP,MAAC,IAAI,eACH,KAAC,UAAU,cACT,KAAC,SAAS,0CAAoC,GACnC,EACb,KAAC,WAAW,cACV,cACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE;oDACL,MAAM,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,MAAM,CAAC;iDACzD,YAED,KAAC,QAAQ,IACP,IAAI,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EACjD,WAAW,EAAC,SAAS,EACrB,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAC,YAAY,EACxB,SAAS,EAAC,2BAA2B,GACrC,GACE,GACM,IACT,IACH,CACP,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,gBAAgB,IAAC,KAAK,EAAC,qBAAqB,YAC3C,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAE,YAAY,YAC1B,KAAC,SAAS,IACR,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EACvC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAC7B,SAAS,EAAE;gDACT,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU;gDAChC,OAAO,EAAE,OAAO;6CACjB,GACD,GACE,EAEN,eAAK,SAAS,EAAC,uCAAuC,aACpD,MAAC,IAAI,eACH,KAAC,UAAU,cACT,KAAC,SAAS,8BAAwB,GACvB,EACb,KAAC,WAAW,cACV,KAAC,SAAS,IACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,WAAW,EAAC,MAAM,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,KAAK,EAAC,QAAQ,EACd,SAAS,EAAC,aAAa,GACvB,GACU,IACT,EACP,MAAC,IAAI,eACH,KAAC,UAAU,cACT,KAAC,SAAS,uCAAiC,GAChC,EACb,KAAC,WAAW,cACV,cACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE;gEACL,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;6DACnD,YAED,KAAC,QAAQ,IACP,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,WAAW,EAAC,OAAO,EACnB,MAAM,EAAE,SAAS,CAAC,MAAM,EACxB,WAAW,EAAC,YAAY,EACxB,OAAO,QACP,SAAS,EAAC,2BAA2B,GACrC,GACE,GACM,IACT,IACH,IACF,GACW,EAEnB,KAAC,gBAAgB,IAAC,KAAK,EAAC,YAAY,YAClC,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAE,YAAY,YAC1B,KAAC,SAAS,IACR,KAAK,EAAC,YAAY,EAClB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EACtC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAC5B,SAAS,EAAE;gDACT,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;gDAC/B,OAAO,EAAE,OAAO;6CACjB,GACD,GACE,EACN,eAAK,SAAS,EAAC,uCAAuC,aACpD,MAAC,IAAI,eACH,KAAC,UAAU,cACT,KAAC,SAAS,sCAAgC,GAC/B,EACb,KAAC,WAAW,cACV,cACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE;gEACL,MAAM,EAAE,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;6DACvD,YAED,KAAC,QAAQ,IACP,IAAI,EAAE,aAAa,CAAC,IAAI,EACxB,WAAW,EAAC,MAAM,EAClB,MAAM,EAAE,aAAa,CAAC,MAAM,EAC5B,WAAW,EAAC,YAAY,EACxB,SAAS,EAAC,2BAA2B,GACrC,GACE,GACM,IACT,EACP,MAAC,IAAI,eACH,KAAC,UAAU,cACT,KAAC,SAAS,oCAA8B,GAC7B,EACb,MAAC,WAAW,IAAC,SAAS,EAAC,0EAA0E,aAC/F,KAAC,QAAQ,IACP,SAAS,EAAC,uCAAuC,iBACrC,MAAM,GAClB,EACD,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,CACvB,8BACE,YAAG,SAAS,EAAC,qCAAqC,iCAE9C,EACJ,YAAG,SAAS,EAAC,iDAAiD,2DAE1D,IACH,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,YAAG,SAAS,EAAC,qCAAqC,8BAE9C,EACJ,YAAG,SAAS,EAAC,iDAAiD,+EAG1D,IACH,CACJ,IACW,IACT,IACH,IACF,GACW,EAEnB,KAAC,gBAAgB,IAAC,KAAK,EAAC,WAAW,YACjC,KAAC,SAAS,IACR,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,EAClB,OAAO,QACP,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAC1B,GACe,IACf,IACK,GACJ,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { ChartConfig } from "../../index.js";
2
+ import { type ProcessDefinition, type Agent, type InstanceRow } from "./mock-data.js";
3
+ export declare const ALL = "all";
4
+ export declare function getProcessOptions(): {
5
+ value: string;
6
+ label: string;
7
+ }[];
8
+ export declare function getSelectedProcess(processName: string): ProcessDefinition | undefined;
9
+ export declare function getVersionOptions(process: ProcessDefinition): {
10
+ value: string;
11
+ label: string;
12
+ }[];
13
+ export declare function getAgentOptions(process: ProcessDefinition): {
14
+ value: string;
15
+ label: string;
16
+ }[];
17
+ export declare function getVisibleAgents(processFilter: string, agentFilter: string): Agent[];
18
+ export declare function categoryChartHeight(rowCount: number): string;
19
+ export interface KpiDelta {
20
+ value: string;
21
+ direction: "increase" | "decrease";
22
+ variant?: "success" | "danger" | "neutral";
23
+ }
24
+ export interface KpiSparklines {
25
+ totalInstances: Record<string, unknown>[];
26
+ totalAgentRuns: Record<string, unknown>[];
27
+ totalTokens: Record<string, unknown>[];
28
+ medianResponseMs: Record<string, unknown>[];
29
+ modelCalls: Record<string, unknown>[];
30
+ toolCalls: Record<string, unknown>[];
31
+ }
32
+ export interface KpiDeltas {
33
+ totalInstances: KpiDelta;
34
+ totalAgentRuns: KpiDelta;
35
+ totalTokens: KpiDelta;
36
+ medianResponseMs: KpiDelta;
37
+ modelCalls: KpiDelta;
38
+ toolCalls: KpiDelta;
39
+ }
40
+ export interface Kpis {
41
+ totalInstances: number;
42
+ totalAgentRuns: number;
43
+ totalTokens: number;
44
+ medianResponseMs: number;
45
+ modelCalls: number;
46
+ toolCalls: number;
47
+ sparklines: KpiSparklines;
48
+ deltas: KpiDeltas;
49
+ }
50
+ export declare function computeKpis(processFilter: string, visibleAgents: Agent[]): Kpis;
51
+ export interface ModelCallCount {
52
+ model: string;
53
+ calls: number;
54
+ }
55
+ export declare function computeModelBreakdown(visibleAgents: Agent[]): ModelCallCount[];
56
+ export declare function computeMedianResponseSparkline(visibleAgents: Agent[]): Record<string, unknown>[];
57
+ export interface TrendSeries {
58
+ data: Record<string, unknown>[];
59
+ config: ChartConfig;
60
+ }
61
+ export declare function computeTokenTrend(processFilter: string, agentFilter: string, visibleAgents: Agent[]): TrendSeries;
62
+ export declare function computeTokenBreakdown(visibleAgents: Agent[]): TrendSeries;
63
+ export declare function computeToolCallFrequency(visibleAgents: Agent[]): TrendSeries;
64
+ export declare function computeInstanceRows(processFilter: string, agentFilter: string): InstanceRow[];
65
+ //# sourceMappingURL=derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../../src/examples/agent-control-plane-processes/derive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,GAAG,QAAQ,CAAC;AAEzB,wBAAgB,iBAAiB,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAKtE;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAClB,iBAAiB,GAAG,SAAS,CAE/B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,GACzB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAKpC;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,GACzB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAQpC;AAED,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,KAAK,EAAE,CAQT;AA8BD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,QAAQ,CAAC;IACzB,cAAc,EAAE,QAAQ,CAAC;IACzB,WAAW,EAAE,QAAQ,CAAC;IACtB,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,UAAU,EAAE,QAAQ,CAAC;IACrB,SAAS,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,aAAa,CAAC;IAC1B,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,KAAK,EAAE,GACrB,IAAI,CA8EN;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,KAAK,EAAE,GACrB,cAAc,EAAE,CAQlB;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,KAAK,EAAE,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAW3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;CACrB;AAoBD,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,KAAK,EAAE,GACrB,WAAW,CAuDb;AASD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,WAAW,CASzE;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,WAAW,CAc5E;AAED,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,WAAW,EAAE,CAQf"}
@@ -0,0 +1,234 @@
1
+ import { processes, } from "./mock-data.js";
2
+ export const ALL = "all";
3
+ export function getProcessOptions() {
4
+ return [
5
+ { value: ALL, label: `All processes (${processes.length})` },
6
+ ...processes.map((p) => ({ value: p.name, label: p.name })),
7
+ ];
8
+ }
9
+ export function getSelectedProcess(processName) {
10
+ return processes.find((p) => p.name === processName);
11
+ }
12
+ export function getVersionOptions(process) {
13
+ return process.versions.map((v) => ({
14
+ value: String(v),
15
+ label: v === process.latestVersion ? `Latest (v${v})` : `v${v}`,
16
+ }));
17
+ }
18
+ export function getAgentOptions(process) {
19
+ if (process.agents.length === 1) {
20
+ return [{ value: process.agents[0].name, label: process.agents[0].name }];
21
+ }
22
+ return [
23
+ { value: ALL, label: `All agents (${process.agents.length})` },
24
+ ...process.agents.map((a) => ({ value: a.name, label: a.name })),
25
+ ];
26
+ }
27
+ export function getVisibleAgents(processFilter, agentFilter) {
28
+ const scopedProcesses = processFilter === ALL
29
+ ? processes
30
+ : processes.filter((p) => p.name === processFilter);
31
+ const allAgents = scopedProcesses.flatMap((p) => p.agents);
32
+ if (agentFilter === ALL)
33
+ return allAgents;
34
+ return allAgents.filter((a) => a.name === agentFilter);
35
+ }
36
+ const DAY_COUNT = 7;
37
+ function buildDailySparkline(visibleAgents, dayValue, scopedProcesses) {
38
+ if (visibleAgents.length) {
39
+ return Array.from({ length: DAY_COUNT }, (_, i) => ({
40
+ day: i + 1,
41
+ value: visibleAgents.reduce((sum, agent) => sum + dayValue(agent, i), 0),
42
+ }));
43
+ }
44
+ if (!scopedProcesses?.length)
45
+ return [];
46
+ return Array.from({ length: DAY_COUNT }, (_, i) => ({
47
+ day: i + 1,
48
+ value: Math.round(scopedProcesses.reduce((sum, process) => sum +
49
+ (process.instanceCount / DAY_COUNT) *
50
+ (1 + 0.1 * Math.sin(i * 1.05 + process.name.length)), 0)),
51
+ }));
52
+ }
53
+ export function categoryChartHeight(rowCount) {
54
+ return `${Math.min(288, Math.max(96, rowCount * 36 + 24))}px`;
55
+ }
56
+ export function computeKpis(processFilter, visibleAgents) {
57
+ const scopedProcesses = processFilter === ALL
58
+ ? processes
59
+ : processes.filter((p) => p.name === processFilter);
60
+ const totalInstances = scopedProcesses.reduce((sum, p) => sum + p.instanceCount, 0);
61
+ const totalAgentRuns = visibleAgents.reduce((sum, a) => sum + a.runs, 0);
62
+ const totalTokens = visibleAgents.reduce((sum, a) => sum + a.totalTokens, 0);
63
+ const modelCalls = visibleAgents.reduce((sum, a) => sum + a.modelCalls, 0);
64
+ const toolCalls = visibleAgents.reduce((sum, a) => sum + a.toolCalls, 0);
65
+ // Approximation: averaging each visible agent's own median is not the
66
+ // statistically exact median across their combined runs, but is a
67
+ // reasonable stand-in for mock data with no per-run distribution to
68
+ // compute a true combined median from.
69
+ const medianResponseMs = visibleAgents.length
70
+ ? Math.round(visibleAgents.reduce((sum, a) => sum + a.medianResponseMs, 0) /
71
+ visibleAgents.length)
72
+ : 0;
73
+ const sparklines = {
74
+ totalInstances: buildDailySparkline([], () => 0, scopedProcesses),
75
+ totalAgentRuns: buildDailySparkline(visibleAgents, (agent, i) => Math.round((agent.runs / DAY_COUNT) *
76
+ (1 + 0.08 * Math.sin(i * 1.2 + agent.name.length)))),
77
+ totalTokens: buildDailySparkline(visibleAgents, (agent, i) => Math.round((agent.tokenTrend[i]?.input ?? 0) + (agent.tokenTrend[i]?.output ?? 0))),
78
+ medianResponseMs: computeMedianResponseSparkline(visibleAgents).map(({ day, ms }) => ({ day, value: ms })),
79
+ modelCalls: buildDailySparkline(visibleAgents, (agent, i) => Math.round((agent.modelCalls / DAY_COUNT) *
80
+ (1 + 0.06 * Math.sin(i * 0.95 + agent.name.length)))),
81
+ toolCalls: buildDailySparkline(visibleAgents, (agent, i) => Math.round((agent.toolCalls / DAY_COUNT) *
82
+ (1 + 0.07 * Math.sin(i * 1.05 + agent.name.length)))),
83
+ };
84
+ // Mock period-over-period deltas — replace with API comparison values.
85
+ const deltas = {
86
+ totalInstances: { value: "4.1%", direction: "increase" },
87
+ totalAgentRuns: { value: "6.3%", direction: "increase" },
88
+ totalTokens: { value: "8.7%", direction: "increase" },
89
+ medianResponseMs: {
90
+ value: "5.2%",
91
+ direction: "decrease",
92
+ variant: "success",
93
+ },
94
+ modelCalls: { value: "6.3%", direction: "increase" },
95
+ toolCalls: { value: "11%", direction: "increase" },
96
+ };
97
+ return {
98
+ totalInstances,
99
+ totalAgentRuns,
100
+ totalTokens,
101
+ medianResponseMs,
102
+ modelCalls,
103
+ toolCalls,
104
+ sparklines,
105
+ deltas,
106
+ };
107
+ }
108
+ export function computeModelBreakdown(visibleAgents) {
109
+ const totals = new Map();
110
+ visibleAgents.forEach((agent) => {
111
+ totals.set(agent.model, (totals.get(agent.model) ?? 0) + agent.modelCalls);
112
+ });
113
+ return Array.from(totals.entries())
114
+ .map(([model, calls]) => ({ model, calls }))
115
+ .sort((a, b) => b.calls - a.calls);
116
+ }
117
+ export function computeMedianResponseSparkline(visibleAgents) {
118
+ if (!visibleAgents.length)
119
+ return [];
120
+ return Array.from({ length: DAY_COUNT }, (_, i) => ({
121
+ day: i + 1,
122
+ ms: Math.round(visibleAgents.reduce((sum, agent) => {
123
+ const wobble = 1 + 0.08 * Math.sin(i * 1.1 + agent.name.length);
124
+ return sum + agent.medianResponseMs * wobble;
125
+ }, 0) / visibleAgents.length),
126
+ }));
127
+ }
128
+ const chartColors = [
129
+ "var(--chart-1)",
130
+ "var(--chart-2)",
131
+ "var(--chart-3)",
132
+ "var(--chart-4)",
133
+ "var(--chart-5)",
134
+ ];
135
+ // ChartContainer generates a `--color-<key>` CSS custom property literally
136
+ // from each ChartConfig key (see chart.tsx). Agent names contain spaces
137
+ // ("Validate order"), and a space inside a CSS custom-property name is
138
+ // invalid syntax — using the raw name as a key would silently break that
139
+ // series' color. Slugify to a safe identifier; the human-readable name
140
+ // still appears in `label`, which has no such restriction.
141
+ function slugify(name) {
142
+ return name.toLowerCase().replace(/[^a-z0-9]+/g, "-");
143
+ }
144
+ export function computeTokenTrend(processFilter, agentFilter, visibleAgents) {
145
+ const isSpecificProcess = processFilter !== ALL;
146
+ const isAllAgents = agentFilter === ALL;
147
+ if (isSpecificProcess && isAllAgents && visibleAgents.length > 1) {
148
+ // Specific process, all its agents: one input/output line-pair per agent.
149
+ const dates = visibleAgents[0].tokenTrend.map((t) => t.date);
150
+ const data = dates.map((date, i) => {
151
+ const row = { date };
152
+ visibleAgents.forEach((agent) => {
153
+ const slug = slugify(agent.name);
154
+ row[`${slug}_input`] = agent.tokenTrend[i].input;
155
+ row[`${slug}_output`] = agent.tokenTrend[i].output;
156
+ });
157
+ return row;
158
+ });
159
+ const config = {};
160
+ visibleAgents.forEach((agent, i) => {
161
+ const slug = slugify(agent.name);
162
+ config[`${slug}_input`] = {
163
+ label: `${agent.name} (input)`,
164
+ color: chartColors[(i * 2) % chartColors.length],
165
+ };
166
+ config[`${slug}_output`] = {
167
+ label: `${agent.name} (output)`,
168
+ color: chartColors[(i * 2 + 1) % chartColors.length],
169
+ };
170
+ });
171
+ return { data, config };
172
+ }
173
+ if (!isSpecificProcess || (isAllAgents && visibleAgents.length <= 1)) {
174
+ // "All processes" (any agent filter), or a single-agent process still
175
+ // set to "all": aggregate every visible agent's trend into one pair.
176
+ const dates = visibleAgents[0]?.tokenTrend.map((t) => t.date) ?? [];
177
+ const data = dates.map((date, i) => ({
178
+ date,
179
+ input: visibleAgents.reduce((sum, a) => sum + a.tokenTrend[i].input, 0),
180
+ output: visibleAgents.reduce((sum, a) => sum + a.tokenTrend[i].output, 0),
181
+ }));
182
+ const config = {
183
+ input: { label: "Input tokens", color: "var(--chart-1)" },
184
+ output: { label: "Output tokens", color: "var(--chart-2)" },
185
+ };
186
+ return { data, config };
187
+ }
188
+ // Specific process + specific single agent: just that agent's 2 lines.
189
+ const agent = visibleAgents[0];
190
+ const data = agent.tokenTrend.map((t) => ({ ...t }));
191
+ const config = {
192
+ input: { label: "Input tokens", color: "var(--chart-1)" },
193
+ output: { label: "Output tokens", color: "var(--chart-2)" },
194
+ };
195
+ return { data, config };
196
+ }
197
+ function sumTrend(agent) {
198
+ return agent.tokenTrend.reduce((acc, t) => ({ input: acc.input + t.input, output: acc.output + t.output }), { input: 0, output: 0 });
199
+ }
200
+ export function computeTokenBreakdown(visibleAgents) {
201
+ const data = visibleAgents
202
+ .map((a) => ({ agent: a.name, ...sumTrend(a) }))
203
+ .sort((a, b) => b.input + b.output - (a.input + a.output));
204
+ const config = {
205
+ input: { label: "Input tokens", color: "var(--chart-1)" },
206
+ output: { label: "Output tokens", color: "var(--chart-2)" },
207
+ };
208
+ return { data, config };
209
+ }
210
+ export function computeToolCallFrequency(visibleAgents) {
211
+ const totals = new Map();
212
+ visibleAgents.forEach((agent) => {
213
+ agent.toolCallsByName.forEach(({ tool, count }) => {
214
+ totals.set(tool, (totals.get(tool) ?? 0) + count);
215
+ });
216
+ });
217
+ const data = Array.from(totals.entries())
218
+ .map(([tool, count]) => ({ tool, count }))
219
+ .sort((a, b) => b.count - a.count);
220
+ const config = {
221
+ count: { label: "Tool calls", color: "var(--chart-1)" },
222
+ };
223
+ return { data, config };
224
+ }
225
+ export function computeInstanceRows(processFilter, agentFilter) {
226
+ const scopedProcesses = processFilter === ALL
227
+ ? processes
228
+ : processes.filter((p) => p.name === processFilter);
229
+ const rows = scopedProcesses.flatMap((p) => p.instances);
230
+ if (agentFilter === ALL)
231
+ return rows;
232
+ return rows.filter((row) => row.agentNames.includes(agentFilter));
233
+ }
234
+ //# sourceMappingURL=derive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.js","sourceRoot":"","sources":["../../../../src/examples/agent-control-plane-processes/derive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export interface TokenTrendPoint {
2
+ date: string;
3
+ input: number;
4
+ output: number;
5
+ }
6
+ export interface ToolCallCount {
7
+ tool: string;
8
+ count: number;
9
+ }
10
+ export interface InstanceRow {
11
+ key: string;
12
+ started: string;
13
+ agentNames: string[];
14
+ inputTokens: number;
15
+ outputTokens: number;
16
+ }
17
+ export interface Agent {
18
+ name: string;
19
+ model: string;
20
+ tokenTrend: TokenTrendPoint[];
21
+ totalTokens: number;
22
+ runs: number;
23
+ medianResponseMs: number;
24
+ modelCalls: number;
25
+ toolCalls: number;
26
+ toolCallsByName: ToolCallCount[];
27
+ }
28
+ export interface ProcessDefinition {
29
+ name: string;
30
+ versions: number[];
31
+ latestVersion: number;
32
+ instanceCount: number;
33
+ instances: InstanceRow[];
34
+ agents: Agent[];
35
+ }
36
+ export declare const processes: ProcessDefinition[];
37
+ //# sourceMappingURL=mock-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-data.d.ts","sourceRoot":"","sources":["../../../../src/examples/agent-control-plane-processes/mock-data.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,aAAa,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAiBD,eAAO,MAAM,SAAS,EAAE,iBAAiB,EA8LxC,CAAC"}