@kopai/ui 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +20 -14
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +20 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/components/observability/MetricTimeSeries/index.tsx +17 -5
- package/src/components/observability/renderers/OtelLogTimeline.tsx +9 -5
- package/src/hooks/use-kopai-data.test.ts +1 -0
- package/src/hooks/use-live-logs.test.ts +1 -0
- package/src/pages/observability.test.tsx +11 -12
- package/src/pages/observability.tsx +9 -10
- package/src/providers/kopai-provider.tsx +1 -0
package/dist/index.cjs
CHANGED
|
@@ -4039,7 +4039,14 @@ function buildMetrics(rows) {
|
|
|
4039
4039
|
for (const row of rows) {
|
|
4040
4040
|
const name = row.MetricName ?? "unknown";
|
|
4041
4041
|
const type = row.MetricType;
|
|
4042
|
-
|
|
4042
|
+
let value;
|
|
4043
|
+
if (type === "Gauge" || type === "Sum") value = "Value" in row ? row.Value : void 0;
|
|
4044
|
+
else if (type === "Histogram" || type === "ExponentialHistogram" || type === "Summary") {
|
|
4045
|
+
const sum = "Sum" in row ? row.Sum : void 0;
|
|
4046
|
+
const count = "Count" in row ? row.Count : void 0;
|
|
4047
|
+
if (sum != null && count != null && count > 0) value = sum / count;
|
|
4048
|
+
}
|
|
4049
|
+
if (value === void 0) continue;
|
|
4043
4050
|
if (!metricMap.has(name)) metricMap.set(name, /* @__PURE__ */ new Map());
|
|
4044
4051
|
if (!metricMeta.has(name)) metricMeta.set(name, {
|
|
4045
4052
|
description: row.MetricDescription ?? "",
|
|
@@ -4058,8 +4065,6 @@ function buildMetrics(rows) {
|
|
|
4058
4065
|
dataPoints: []
|
|
4059
4066
|
});
|
|
4060
4067
|
}
|
|
4061
|
-
if (!("Value" in row)) continue;
|
|
4062
|
-
const value = row.Value;
|
|
4063
4068
|
const timestamp = parseInt(row.TimeUnix, 10) / 1e6;
|
|
4064
4069
|
seriesMap.get(seriesKey).dataPoints.push({
|
|
4065
4070
|
timestamp,
|
|
@@ -5491,10 +5496,14 @@ function OtelLogTimeline(props) {
|
|
|
5491
5496
|
children: "No data source"
|
|
5492
5497
|
});
|
|
5493
5498
|
const response = props.data;
|
|
5494
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5499
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
5500
|
+
style: { height: props.element.props.height ?? 600 },
|
|
5501
|
+
className: "flex flex-col min-h-0",
|
|
5502
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LogTimeline, {
|
|
5503
|
+
rows: response?.data ?? [],
|
|
5504
|
+
isLoading: props.loading,
|
|
5505
|
+
error: props.error ?? void 0
|
|
5506
|
+
})
|
|
5498
5507
|
});
|
|
5499
5508
|
}
|
|
5500
5509
|
|
|
@@ -6125,7 +6134,6 @@ function ServicesTab({ selectedService, selectedTraceId, selectedSpanId, onSelec
|
|
|
6125
6134
|
});
|
|
6126
6135
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ServiceListView, { onSelect: onSelectService });
|
|
6127
6136
|
}
|
|
6128
|
-
const DASHBOARDS_API_BASE = "/dashboards";
|
|
6129
6137
|
const METRICS_TREE = {
|
|
6130
6138
|
root: "root",
|
|
6131
6139
|
elements: {
|
|
@@ -6186,14 +6194,12 @@ const METRICS_TREE = {
|
|
|
6186
6194
|
}
|
|
6187
6195
|
}
|
|
6188
6196
|
};
|
|
6189
|
-
function useDashboardTree(dashboardId) {
|
|
6197
|
+
function useDashboardTree(client, dashboardId) {
|
|
6190
6198
|
const { data, isFetching, error } = (0, _tanstack_react_query.useQuery)({
|
|
6191
6199
|
queryKey: ["dashboard-tree", dashboardId],
|
|
6192
6200
|
queryFn: async ({ signal }) => {
|
|
6193
|
-
const
|
|
6194
|
-
|
|
6195
|
-
const json = await res.json();
|
|
6196
|
-
const parsed = observabilityCatalog.uiTreeSchema.safeParse(json.uiTree);
|
|
6201
|
+
const dashboard = await client.getDashboard(dashboardId, { signal });
|
|
6202
|
+
const parsed = observabilityCatalog.uiTreeSchema.safeParse(dashboard.uiTree);
|
|
6197
6203
|
if (!parsed.success) {
|
|
6198
6204
|
const issue = parsed.error.issues[0];
|
|
6199
6205
|
const path = issue?.path.length ? issue.path.join(".") + ": " : "";
|
|
@@ -6212,7 +6218,7 @@ function useDashboardTree(dashboardId) {
|
|
|
6212
6218
|
function MetricsTab() {
|
|
6213
6219
|
const kopaiClient = useKopaiSDK();
|
|
6214
6220
|
const { dashboardId } = useURLState();
|
|
6215
|
-
const { loading, error, tree } = useDashboardTree(dashboardId);
|
|
6221
|
+
const { loading, error, tree } = useDashboardTree(kopaiClient, dashboardId);
|
|
6216
6222
|
if (loading) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
6217
6223
|
className: "text-muted-foreground text-sm",
|
|
6218
6224
|
children: "Loading dashboard..."
|
package/dist/index.d.cts
CHANGED
|
@@ -850,7 +850,7 @@ declare function Renderer<C extends {
|
|
|
850
850
|
}): react_jsx_runtime0.JSX.Element | null;
|
|
851
851
|
//#endregion
|
|
852
852
|
//#region src/providers/kopai-provider.d.ts
|
|
853
|
-
type KopaiClient = Pick<KopaiClient$1, "searchTracesPage" | "searchLogsPage" | "searchMetricsPage" | "getTrace" | "discoverMetrics">;
|
|
853
|
+
type KopaiClient = Pick<KopaiClient$1, "searchTracesPage" | "searchLogsPage" | "searchMetricsPage" | "getTrace" | "discoverMetrics" | "getDashboard">;
|
|
854
854
|
interface KopaiSDKProviderProps {
|
|
855
855
|
client: KopaiClient;
|
|
856
856
|
children: ReactNode;
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/pages/observability.tsx","../src/lib/component-catalog.ts","../src/lib/observability-catalog.ts","../src/lib/generate-prompt-instructions.ts","../src/lib/renderer.tsx","../src/providers/kopai-provider.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/pages/observability.tsx","../src/lib/component-catalog.ts","../src/lib/observability-catalog.ts","../src/lib/generate-prompt-instructions.ts","../src/lib/renderer.tsx","../src/providers/kopai-provider.tsx"],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -851,7 +851,7 @@ declare function Renderer<C extends {
|
|
|
851
851
|
}): react_jsx_runtime0.JSX.Element | null;
|
|
852
852
|
//#endregion
|
|
853
853
|
//#region src/providers/kopai-provider.d.ts
|
|
854
|
-
type KopaiClient = Pick<KopaiClient$1, "searchTracesPage" | "searchLogsPage" | "searchMetricsPage" | "getTrace" | "discoverMetrics">;
|
|
854
|
+
type KopaiClient = Pick<KopaiClient$1, "searchTracesPage" | "searchLogsPage" | "searchMetricsPage" | "getTrace" | "discoverMetrics" | "getDashboard">;
|
|
855
855
|
interface KopaiSDKProviderProps {
|
|
856
856
|
client: KopaiClient;
|
|
857
857
|
children: ReactNode;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/pages/observability.tsx","../src/lib/component-catalog.ts","../src/lib/observability-catalog.ts","../src/lib/generate-prompt-instructions.ts","../src/lib/renderer.tsx","../src/providers/kopai-provider.tsx"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/pages/observability.tsx","../src/lib/component-catalog.ts","../src/lib/observability-catalog.ts","../src/lib/generate-prompt-instructions.ts","../src/lib/renderer.tsx","../src/providers/kopai-provider.tsx"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -4009,7 +4009,14 @@ function buildMetrics(rows) {
|
|
|
4009
4009
|
for (const row of rows) {
|
|
4010
4010
|
const name = row.MetricName ?? "unknown";
|
|
4011
4011
|
const type = row.MetricType;
|
|
4012
|
-
|
|
4012
|
+
let value;
|
|
4013
|
+
if (type === "Gauge" || type === "Sum") value = "Value" in row ? row.Value : void 0;
|
|
4014
|
+
else if (type === "Histogram" || type === "ExponentialHistogram" || type === "Summary") {
|
|
4015
|
+
const sum = "Sum" in row ? row.Sum : void 0;
|
|
4016
|
+
const count = "Count" in row ? row.Count : void 0;
|
|
4017
|
+
if (sum != null && count != null && count > 0) value = sum / count;
|
|
4018
|
+
}
|
|
4019
|
+
if (value === void 0) continue;
|
|
4013
4020
|
if (!metricMap.has(name)) metricMap.set(name, /* @__PURE__ */ new Map());
|
|
4014
4021
|
if (!metricMeta.has(name)) metricMeta.set(name, {
|
|
4015
4022
|
description: row.MetricDescription ?? "",
|
|
@@ -4028,8 +4035,6 @@ function buildMetrics(rows) {
|
|
|
4028
4035
|
dataPoints: []
|
|
4029
4036
|
});
|
|
4030
4037
|
}
|
|
4031
|
-
if (!("Value" in row)) continue;
|
|
4032
|
-
const value = row.Value;
|
|
4033
4038
|
const timestamp = parseInt(row.TimeUnix, 10) / 1e6;
|
|
4034
4039
|
seriesMap.get(seriesKey).dataPoints.push({
|
|
4035
4040
|
timestamp,
|
|
@@ -5461,10 +5466,14 @@ function OtelLogTimeline(props) {
|
|
|
5461
5466
|
children: "No data source"
|
|
5462
5467
|
});
|
|
5463
5468
|
const response = props.data;
|
|
5464
|
-
return /* @__PURE__ */ jsx(
|
|
5465
|
-
|
|
5466
|
-
|
|
5467
|
-
|
|
5469
|
+
return /* @__PURE__ */ jsx("div", {
|
|
5470
|
+
style: { height: props.element.props.height ?? 600 },
|
|
5471
|
+
className: "flex flex-col min-h-0",
|
|
5472
|
+
children: /* @__PURE__ */ jsx(LogTimeline, {
|
|
5473
|
+
rows: response?.data ?? [],
|
|
5474
|
+
isLoading: props.loading,
|
|
5475
|
+
error: props.error ?? void 0
|
|
5476
|
+
})
|
|
5468
5477
|
});
|
|
5469
5478
|
}
|
|
5470
5479
|
|
|
@@ -6095,7 +6104,6 @@ function ServicesTab({ selectedService, selectedTraceId, selectedSpanId, onSelec
|
|
|
6095
6104
|
});
|
|
6096
6105
|
return /* @__PURE__ */ jsx(ServiceListView, { onSelect: onSelectService });
|
|
6097
6106
|
}
|
|
6098
|
-
const DASHBOARDS_API_BASE = "/dashboards";
|
|
6099
6107
|
const METRICS_TREE = {
|
|
6100
6108
|
root: "root",
|
|
6101
6109
|
elements: {
|
|
@@ -6156,14 +6164,12 @@ const METRICS_TREE = {
|
|
|
6156
6164
|
}
|
|
6157
6165
|
}
|
|
6158
6166
|
};
|
|
6159
|
-
function useDashboardTree(dashboardId) {
|
|
6167
|
+
function useDashboardTree(client, dashboardId) {
|
|
6160
6168
|
const { data, isFetching, error } = useQuery({
|
|
6161
6169
|
queryKey: ["dashboard-tree", dashboardId],
|
|
6162
6170
|
queryFn: async ({ signal }) => {
|
|
6163
|
-
const
|
|
6164
|
-
|
|
6165
|
-
const json = await res.json();
|
|
6166
|
-
const parsed = observabilityCatalog.uiTreeSchema.safeParse(json.uiTree);
|
|
6171
|
+
const dashboard = await client.getDashboard(dashboardId, { signal });
|
|
6172
|
+
const parsed = observabilityCatalog.uiTreeSchema.safeParse(dashboard.uiTree);
|
|
6167
6173
|
if (!parsed.success) {
|
|
6168
6174
|
const issue = parsed.error.issues[0];
|
|
6169
6175
|
const path = issue?.path.length ? issue.path.join(".") + ": " : "";
|
|
@@ -6182,7 +6188,7 @@ function useDashboardTree(dashboardId) {
|
|
|
6182
6188
|
function MetricsTab() {
|
|
6183
6189
|
const kopaiClient = useKopaiSDK();
|
|
6184
6190
|
const { dashboardId } = useURLState();
|
|
6185
|
-
const { loading, error, tree } = useDashboardTree(dashboardId);
|
|
6191
|
+
const { loading, error, tree } = useDashboardTree(kopaiClient, dashboardId);
|
|
6186
6192
|
if (loading) return /* @__PURE__ */ jsx("p", {
|
|
6187
6193
|
className: "text-muted-foreground text-sm",
|
|
6188
6194
|
children: "Loading dashboard..."
|