@kopai/ui 0.6.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 +7 -7
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +7 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +20 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/components/observability/DynamicDashboard/DynamicDashboard.test.tsx +5 -0
- 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 +16 -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
|
@@ -222,9 +222,9 @@ declare const observabilityCatalog: {
|
|
|
222
222
|
label: "label";
|
|
223
223
|
}>>;
|
|
224
224
|
color: z.ZodNullable<z.ZodEnum<{
|
|
225
|
+
success: "success";
|
|
225
226
|
default: "default";
|
|
226
227
|
muted: "muted";
|
|
227
|
-
success: "success";
|
|
228
228
|
warning: "warning";
|
|
229
229
|
danger: "danger";
|
|
230
230
|
}>>;
|
|
@@ -236,8 +236,8 @@ declare const observabilityCatalog: {
|
|
|
236
236
|
props: z.ZodObject<{
|
|
237
237
|
text: z.ZodString;
|
|
238
238
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
239
|
-
default: "default";
|
|
240
239
|
success: "success";
|
|
240
|
+
default: "default";
|
|
241
241
|
warning: "warning";
|
|
242
242
|
danger: "danger";
|
|
243
243
|
info: "info";
|
|
@@ -400,9 +400,9 @@ declare const observabilityCatalog: {
|
|
|
400
400
|
label: "label";
|
|
401
401
|
}>>;
|
|
402
402
|
color: z.ZodNullable<z.ZodEnum<{
|
|
403
|
+
success: "success";
|
|
403
404
|
default: "default";
|
|
404
405
|
muted: "muted";
|
|
405
|
-
success: "success";
|
|
406
406
|
warning: "warning";
|
|
407
407
|
danger: "danger";
|
|
408
408
|
}>>;
|
|
@@ -416,8 +416,8 @@ declare const observabilityCatalog: {
|
|
|
416
416
|
props: z.ZodObject<{
|
|
417
417
|
text: z.ZodString;
|
|
418
418
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
419
|
-
default: "default";
|
|
420
419
|
success: "success";
|
|
420
|
+
default: "default";
|
|
421
421
|
warning: "warning";
|
|
422
422
|
danger: "danger";
|
|
423
423
|
info: "info";
|
|
@@ -592,9 +592,9 @@ declare const observabilityCatalog: {
|
|
|
592
592
|
label: "label";
|
|
593
593
|
}>>;
|
|
594
594
|
color: z.ZodNullable<z.ZodEnum<{
|
|
595
|
+
success: "success";
|
|
595
596
|
default: "default";
|
|
596
597
|
muted: "muted";
|
|
597
|
-
success: "success";
|
|
598
598
|
warning: "warning";
|
|
599
599
|
danger: "danger";
|
|
600
600
|
}>>;
|
|
@@ -608,8 +608,8 @@ declare const observabilityCatalog: {
|
|
|
608
608
|
props: z.ZodObject<{
|
|
609
609
|
text: z.ZodString;
|
|
610
610
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
611
|
-
default: "default";
|
|
612
611
|
success: "success";
|
|
612
|
+
default: "default";
|
|
613
613
|
warning: "warning";
|
|
614
614
|
danger: "danger";
|
|
615
615
|
info: "info";
|
|
@@ -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
|
@@ -223,9 +223,9 @@ declare const observabilityCatalog: {
|
|
|
223
223
|
label: "label";
|
|
224
224
|
}>>;
|
|
225
225
|
color: z.ZodNullable<z.ZodEnum<{
|
|
226
|
+
success: "success";
|
|
226
227
|
default: "default";
|
|
227
228
|
muted: "muted";
|
|
228
|
-
success: "success";
|
|
229
229
|
warning: "warning";
|
|
230
230
|
danger: "danger";
|
|
231
231
|
}>>;
|
|
@@ -237,8 +237,8 @@ declare const observabilityCatalog: {
|
|
|
237
237
|
props: z.ZodObject<{
|
|
238
238
|
text: z.ZodString;
|
|
239
239
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
240
|
-
default: "default";
|
|
241
240
|
success: "success";
|
|
241
|
+
default: "default";
|
|
242
242
|
warning: "warning";
|
|
243
243
|
danger: "danger";
|
|
244
244
|
info: "info";
|
|
@@ -401,9 +401,9 @@ declare const observabilityCatalog: {
|
|
|
401
401
|
label: "label";
|
|
402
402
|
}>>;
|
|
403
403
|
color: z.ZodNullable<z.ZodEnum<{
|
|
404
|
+
success: "success";
|
|
404
405
|
default: "default";
|
|
405
406
|
muted: "muted";
|
|
406
|
-
success: "success";
|
|
407
407
|
warning: "warning";
|
|
408
408
|
danger: "danger";
|
|
409
409
|
}>>;
|
|
@@ -417,8 +417,8 @@ declare const observabilityCatalog: {
|
|
|
417
417
|
props: z.ZodObject<{
|
|
418
418
|
text: z.ZodString;
|
|
419
419
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
420
|
-
default: "default";
|
|
421
420
|
success: "success";
|
|
421
|
+
default: "default";
|
|
422
422
|
warning: "warning";
|
|
423
423
|
danger: "danger";
|
|
424
424
|
info: "info";
|
|
@@ -593,9 +593,9 @@ declare const observabilityCatalog: {
|
|
|
593
593
|
label: "label";
|
|
594
594
|
}>>;
|
|
595
595
|
color: z.ZodNullable<z.ZodEnum<{
|
|
596
|
+
success: "success";
|
|
596
597
|
default: "default";
|
|
597
598
|
muted: "muted";
|
|
598
|
-
success: "success";
|
|
599
599
|
warning: "warning";
|
|
600
600
|
danger: "danger";
|
|
601
601
|
}>>;
|
|
@@ -609,8 +609,8 @@ declare const observabilityCatalog: {
|
|
|
609
609
|
props: z.ZodObject<{
|
|
610
610
|
text: z.ZodString;
|
|
611
611
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
612
|
-
default: "default";
|
|
613
612
|
success: "success";
|
|
613
|
+
default: "default";
|
|
614
614
|
warning: "warning";
|
|
615
615
|
danger: "danger";
|
|
616
616
|
info: "info";
|
|
@@ -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..."
|