@kopai/ui 0.9.0 → 0.11.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 +187 -8
- package/dist/index.d.cts +20 -13
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +20 -12
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +187 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -14
- package/src/components/observability/DynamicDashboard/DynamicDashboard.test.tsx +175 -1
- package/src/components/observability/MetricStat/index.tsx +12 -4
- package/src/components/observability/renderers/OtelMetricStat.tsx +40 -0
- package/src/components/observability/renderers/OtelTraceDetail.tsx +88 -2
- package/src/hooks/use-kopai-data.test.ts +31 -0
- package/src/hooks/use-kopai-data.ts +12 -5
- package/src/hooks/use-live-logs.test.ts +1 -0
- package/src/lib/__snapshots__/generate-prompt-instructions.test.ts.snap +1 -1
- package/src/lib/renderer.test.tsx +2 -0
- package/src/pages/observability.test.tsx +3 -0
- package/src/pages/observability.tsx +83 -1
- package/src/providers/kopai-provider.tsx +1 -0
package/dist/index.cjs
CHANGED
|
@@ -59,16 +59,20 @@ function fetchForDataSource(client, dataSource, signal) {
|
|
|
59
59
|
switch (dataSource.method) {
|
|
60
60
|
case "searchTracesPage": return client.searchTracesPage(dataSource.params, { signal });
|
|
61
61
|
case "searchLogsPage": return client.searchLogsPage(dataSource.params, { signal });
|
|
62
|
-
case "searchMetricsPage":
|
|
62
|
+
case "searchMetricsPage": {
|
|
63
|
+
const params = dataSource.params;
|
|
64
|
+
if (params.aggregate) return client.searchAggregatedMetrics({
|
|
65
|
+
...params,
|
|
66
|
+
aggregate: params.aggregate
|
|
67
|
+
}, { signal });
|
|
68
|
+
return client.searchMetricsPage(params, { signal });
|
|
69
|
+
}
|
|
63
70
|
case "getTrace": return client.getTrace(dataSource.params.traceId, { signal });
|
|
64
71
|
case "discoverMetrics": return client.discoverMetrics({ signal });
|
|
65
72
|
case "getServices": return client.getServices({ signal });
|
|
66
73
|
case "getOperations": return client.getOperations(dataSource.params.serviceName, { signal });
|
|
67
74
|
case "searchTraceSummariesPage": return client.searchTraceSummariesPage(dataSource.params, { signal });
|
|
68
|
-
default: {
|
|
69
|
-
const exhaustiveCheck = dataSource;
|
|
70
|
-
throw new Error(`Unknown method: ${exhaustiveCheck.method}`);
|
|
71
|
-
}
|
|
75
|
+
default: throw new Error(`Unknown method: ${dataSource.method}`);
|
|
72
76
|
}
|
|
73
77
|
}
|
|
74
78
|
function useKopaiData(dataSource) {
|
|
@@ -5725,8 +5729,11 @@ function buildStatData(rows) {
|
|
|
5725
5729
|
metricName
|
|
5726
5730
|
};
|
|
5727
5731
|
}
|
|
5728
|
-
function MetricStat({ rows, isLoading = false, error, label, formatValue = defaultFormatValue$1, showTimestamp = false, trend, trendValue, className = "", showSparkline = false, sparklinePoints = 20, sparklineHeight = 40, thresholds, colorBackground, colorValue = false }) {
|
|
5729
|
-
const
|
|
5732
|
+
function MetricStat({ rows, value: directValue, unit: directUnit, isLoading = false, error, label, formatValue = defaultFormatValue$1, showTimestamp = false, trend, trendValue, className = "", showSparkline = false, sparklinePoints = 20, sparklineHeight = 40, thresholds, colorBackground, colorValue = false }) {
|
|
5733
|
+
const statData = (0, react.useMemo)(() => buildStatData(rows), [rows]);
|
|
5734
|
+
const latestValue = directValue ?? statData.latestValue;
|
|
5735
|
+
const unit = directUnit ?? statData.unit;
|
|
5736
|
+
const { timestamp, dataPoints, metricName } = statData;
|
|
5730
5737
|
const sparklineData = (0, react.useMemo)(() => {
|
|
5731
5738
|
if (!showSparkline || dataPoints.length === 0) return [];
|
|
5732
5739
|
return dataPoints.slice(-sparklinePoints).map((dp) => ({ value: dp.value }));
|
|
@@ -6611,6 +6618,13 @@ function OtelMetricHistogram(props) {
|
|
|
6611
6618
|
}
|
|
6612
6619
|
//#endregion
|
|
6613
6620
|
//#region src/components/observability/renderers/OtelMetricStat.tsx
|
|
6621
|
+
const EMPTY_ROWS = [];
|
|
6622
|
+
const GROUPED_AGGREGATE_ERROR = /* @__PURE__ */ new Error("MetricStat cannot display grouped aggregates. Remove groupBy or use MetricTable.");
|
|
6623
|
+
function isAggregatedRequest(props) {
|
|
6624
|
+
const ds = props.element.dataSource;
|
|
6625
|
+
if (!ds || ds.method !== "searchMetricsPage" || !ds.params) return false;
|
|
6626
|
+
return !!ds.params.aggregate;
|
|
6627
|
+
}
|
|
6614
6628
|
function OtelMetricStat(props) {
|
|
6615
6629
|
if (!props.hasData) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
6616
6630
|
style: {
|
|
@@ -6619,6 +6633,24 @@ function OtelMetricStat(props) {
|
|
|
6619
6633
|
},
|
|
6620
6634
|
children: "No data source"
|
|
6621
6635
|
});
|
|
6636
|
+
if (isAggregatedRequest(props)) {
|
|
6637
|
+
const rows = props.data?.data ?? [];
|
|
6638
|
+
if (rows.length > 1) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MetricStat, {
|
|
6639
|
+
rows: EMPTY_ROWS,
|
|
6640
|
+
error: GROUPED_AGGREGATE_ERROR,
|
|
6641
|
+
label: props.element.props.label ?? void 0,
|
|
6642
|
+
formatValue: formatOtelValue
|
|
6643
|
+
});
|
|
6644
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MetricStat, {
|
|
6645
|
+
rows: EMPTY_ROWS,
|
|
6646
|
+
value: rows[0]?.value,
|
|
6647
|
+
isLoading: props.loading,
|
|
6648
|
+
error: props.error ?? void 0,
|
|
6649
|
+
label: props.element.props.label ?? void 0,
|
|
6650
|
+
showSparkline: false,
|
|
6651
|
+
formatValue: formatOtelValue
|
|
6652
|
+
});
|
|
6653
|
+
}
|
|
6622
6654
|
const response = props.data;
|
|
6623
6655
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MetricStat, {
|
|
6624
6656
|
rows: response?.data ?? [],
|
|
@@ -6670,6 +6702,54 @@ function OtelMetricTimeSeries(props) {
|
|
|
6670
6702
|
}
|
|
6671
6703
|
//#endregion
|
|
6672
6704
|
//#region src/components/observability/renderers/OtelTraceDetail.tsx
|
|
6705
|
+
function isTraceSummariesSource(props) {
|
|
6706
|
+
return props.element.dataSource?.method === "searchTraceSummariesPage";
|
|
6707
|
+
}
|
|
6708
|
+
function TraceSummariesView({ data, loading, error }) {
|
|
6709
|
+
const [selectedTraceId, setSelectedTraceId] = (0, react.useState)(null);
|
|
6710
|
+
const client = useKopaiSDK();
|
|
6711
|
+
const response = data;
|
|
6712
|
+
const traces = (0, react.useMemo)(() => {
|
|
6713
|
+
const rows = response?.data;
|
|
6714
|
+
if (!Array.isArray(rows)) return [];
|
|
6715
|
+
return rows.map((row) => ({
|
|
6716
|
+
traceId: row.traceId,
|
|
6717
|
+
rootSpanName: row.rootSpanName,
|
|
6718
|
+
serviceName: row.rootServiceName,
|
|
6719
|
+
durationMs: parseInt(row.durationNs, 10) / 1e6,
|
|
6720
|
+
statusCode: row.errorCount > 0 ? "ERROR" : "OK",
|
|
6721
|
+
timestampMs: parseInt(row.startTimeNs, 10) / 1e6,
|
|
6722
|
+
spanCount: row.spanCount,
|
|
6723
|
+
services: row.services,
|
|
6724
|
+
errorCount: row.errorCount
|
|
6725
|
+
}));
|
|
6726
|
+
}, [response]);
|
|
6727
|
+
const { data: traceRows, isFetching: traceLoading, error: traceError } = (0, _tanstack_react_query.useQuery)({
|
|
6728
|
+
queryKey: [
|
|
6729
|
+
"kopai",
|
|
6730
|
+
"getTrace",
|
|
6731
|
+
selectedTraceId
|
|
6732
|
+
],
|
|
6733
|
+
queryFn: ({ signal }) => client.getTrace(selectedTraceId, { signal }),
|
|
6734
|
+
enabled: !!selectedTraceId
|
|
6735
|
+
});
|
|
6736
|
+
const handleBack = (0, react.useCallback)(() => setSelectedTraceId(null), []);
|
|
6737
|
+
if (selectedTraceId) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TraceDetail, {
|
|
6738
|
+
traceId: selectedTraceId,
|
|
6739
|
+
rows: traceRows ?? [],
|
|
6740
|
+
isLoading: traceLoading,
|
|
6741
|
+
error: traceError ?? void 0,
|
|
6742
|
+
onBack: handleBack
|
|
6743
|
+
});
|
|
6744
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TraceSearch, {
|
|
6745
|
+
services: [],
|
|
6746
|
+
service: "",
|
|
6747
|
+
traces,
|
|
6748
|
+
isLoading: loading,
|
|
6749
|
+
error: error ?? void 0,
|
|
6750
|
+
onSelectTrace: setSelectedTraceId
|
|
6751
|
+
});
|
|
6752
|
+
}
|
|
6673
6753
|
function OtelTraceDetail(props) {
|
|
6674
6754
|
if (!props.hasData) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
6675
6755
|
style: {
|
|
@@ -6678,7 +6758,13 @@ function OtelTraceDetail(props) {
|
|
|
6678
6758
|
},
|
|
6679
6759
|
children: "No data source"
|
|
6680
6760
|
});
|
|
6681
|
-
|
|
6761
|
+
if (isTraceSummariesSource(props)) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TraceSummariesView, {
|
|
6762
|
+
data: props.data,
|
|
6763
|
+
loading: props.loading,
|
|
6764
|
+
error: props.error
|
|
6765
|
+
});
|
|
6766
|
+
const response = props.data;
|
|
6767
|
+
const rows = Array.isArray(response?.data) ? response.data : [];
|
|
6682
6768
|
const traceId = rows[0]?.TraceId ?? "";
|
|
6683
6769
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TraceDetail, {
|
|
6684
6770
|
rows,
|
|
@@ -7416,6 +7502,9 @@ const METRICS_TREE = {
|
|
|
7416
7502
|
type: "Stack",
|
|
7417
7503
|
children: [
|
|
7418
7504
|
"heading",
|
|
7505
|
+
"ingestion-heading",
|
|
7506
|
+
"ingestion-grid",
|
|
7507
|
+
"discovery-heading",
|
|
7419
7508
|
"description",
|
|
7420
7509
|
"discovery-card"
|
|
7421
7510
|
],
|
|
@@ -7436,6 +7525,96 @@ const METRICS_TREE = {
|
|
|
7436
7525
|
level: "h2"
|
|
7437
7526
|
}
|
|
7438
7527
|
},
|
|
7528
|
+
"ingestion-heading": {
|
|
7529
|
+
key: "ingestion-heading",
|
|
7530
|
+
type: "Heading",
|
|
7531
|
+
children: [],
|
|
7532
|
+
parentKey: "root",
|
|
7533
|
+
props: {
|
|
7534
|
+
text: "OTEL Ingestion",
|
|
7535
|
+
level: "h3"
|
|
7536
|
+
}
|
|
7537
|
+
},
|
|
7538
|
+
"ingestion-grid": {
|
|
7539
|
+
key: "ingestion-grid",
|
|
7540
|
+
type: "Grid",
|
|
7541
|
+
children: ["card-bytes", "card-requests"],
|
|
7542
|
+
parentKey: "root",
|
|
7543
|
+
props: {
|
|
7544
|
+
columns: 2,
|
|
7545
|
+
gap: "md"
|
|
7546
|
+
}
|
|
7547
|
+
},
|
|
7548
|
+
"card-bytes": {
|
|
7549
|
+
key: "card-bytes",
|
|
7550
|
+
type: "Card",
|
|
7551
|
+
children: ["stat-bytes"],
|
|
7552
|
+
parentKey: "ingestion-grid",
|
|
7553
|
+
props: {
|
|
7554
|
+
title: "Total Bytes Ingested",
|
|
7555
|
+
description: null,
|
|
7556
|
+
padding: null
|
|
7557
|
+
}
|
|
7558
|
+
},
|
|
7559
|
+
"stat-bytes": {
|
|
7560
|
+
key: "stat-bytes",
|
|
7561
|
+
type: "MetricStat",
|
|
7562
|
+
children: [],
|
|
7563
|
+
parentKey: "card-bytes",
|
|
7564
|
+
dataSource: {
|
|
7565
|
+
method: "searchMetricsPage",
|
|
7566
|
+
params: {
|
|
7567
|
+
metricType: "Sum",
|
|
7568
|
+
metricName: "kopai.ingestion.bytes",
|
|
7569
|
+
aggregate: "sum"
|
|
7570
|
+
},
|
|
7571
|
+
refetchIntervalMs: 1e4
|
|
7572
|
+
},
|
|
7573
|
+
props: {
|
|
7574
|
+
label: "Bytes",
|
|
7575
|
+
showSparkline: false
|
|
7576
|
+
}
|
|
7577
|
+
},
|
|
7578
|
+
"card-requests": {
|
|
7579
|
+
key: "card-requests",
|
|
7580
|
+
type: "Card",
|
|
7581
|
+
children: ["stat-requests"],
|
|
7582
|
+
parentKey: "ingestion-grid",
|
|
7583
|
+
props: {
|
|
7584
|
+
title: "Total Requests",
|
|
7585
|
+
description: null,
|
|
7586
|
+
padding: null
|
|
7587
|
+
}
|
|
7588
|
+
},
|
|
7589
|
+
"stat-requests": {
|
|
7590
|
+
key: "stat-requests",
|
|
7591
|
+
type: "MetricStat",
|
|
7592
|
+
children: [],
|
|
7593
|
+
parentKey: "card-requests",
|
|
7594
|
+
dataSource: {
|
|
7595
|
+
method: "searchMetricsPage",
|
|
7596
|
+
params: {
|
|
7597
|
+
metricType: "Sum",
|
|
7598
|
+
metricName: "kopai.ingestion.requests",
|
|
7599
|
+
aggregate: "sum"
|
|
7600
|
+
},
|
|
7601
|
+
refetchIntervalMs: 1e4
|
|
7602
|
+
},
|
|
7603
|
+
props: {
|
|
7604
|
+
label: "Requests",
|
|
7605
|
+
showSparkline: false
|
|
7606
|
+
}
|
|
7607
|
+
},
|
|
7608
|
+
"discovery-heading": {
|
|
7609
|
+
key: "discovery-heading",
|
|
7610
|
+
type: "Heading",
|
|
7611
|
+
children: [],
|
|
7612
|
+
parentKey: "root",
|
|
7613
|
+
props: {
|
|
7614
|
+
text: "Discovered Metrics",
|
|
7615
|
+
level: "h3"
|
|
7616
|
+
}
|
|
7617
|
+
},
|
|
7439
7618
|
description: {
|
|
7440
7619
|
key: "description",
|
|
7441
7620
|
type: "Text",
|
package/dist/index.d.cts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
1
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
2
|
import { KopaiClient as KopaiClient$1 } from "@kopai/sdk";
|
|
3
3
|
import z$1, { z } from "zod";
|
|
4
4
|
import { ComponentType, ReactNode } from "react";
|
|
5
|
-
|
|
6
5
|
//#region src/pages/observability.d.ts
|
|
7
6
|
interface ObservabilityPageProps {
|
|
8
7
|
client?: KopaiClient$1;
|
|
9
8
|
}
|
|
10
9
|
declare function ObservabilityPage({
|
|
11
10
|
client
|
|
12
|
-
}: ObservabilityPageProps): react_jsx_runtime0.JSX.Element;
|
|
11
|
+
}: ObservabilityPageProps): _$react_jsx_runtime0.JSX.Element;
|
|
13
12
|
//#endregion
|
|
14
13
|
//#region src/lib/component-catalog.d.ts
|
|
15
14
|
declare const dataSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -81,6 +80,14 @@ declare const dataSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
81
80
|
attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
82
81
|
resourceAttributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
83
82
|
scopeAttributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
83
|
+
aggregate: z.ZodOptional<z.ZodEnum<{
|
|
84
|
+
sum: "sum";
|
|
85
|
+
avg: "avg";
|
|
86
|
+
min: "min";
|
|
87
|
+
max: "max";
|
|
88
|
+
count: "count";
|
|
89
|
+
}>>;
|
|
90
|
+
groupBy: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
84
91
|
limit: z.ZodOptional<z.ZodNumber>;
|
|
85
92
|
cursor: z.ZodOptional<z.ZodString>;
|
|
86
93
|
sortOrder: z.ZodOptional<z.ZodEnum<{
|
|
@@ -251,9 +258,9 @@ declare const observabilityCatalog: {
|
|
|
251
258
|
label: "label";
|
|
252
259
|
}>>;
|
|
253
260
|
color: z.ZodNullable<z.ZodEnum<{
|
|
261
|
+
success: "success";
|
|
254
262
|
default: "default";
|
|
255
263
|
muted: "muted";
|
|
256
|
-
success: "success";
|
|
257
264
|
warning: "warning";
|
|
258
265
|
danger: "danger";
|
|
259
266
|
}>>;
|
|
@@ -265,8 +272,8 @@ declare const observabilityCatalog: {
|
|
|
265
272
|
props: z.ZodObject<{
|
|
266
273
|
text: z.ZodString;
|
|
267
274
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
268
|
-
default: "default";
|
|
269
275
|
success: "success";
|
|
276
|
+
default: "default";
|
|
270
277
|
warning: "warning";
|
|
271
278
|
danger: "danger";
|
|
272
279
|
info: "info";
|
|
@@ -429,9 +436,9 @@ declare const observabilityCatalog: {
|
|
|
429
436
|
label: "label";
|
|
430
437
|
}>>;
|
|
431
438
|
color: z.ZodNullable<z.ZodEnum<{
|
|
439
|
+
success: "success";
|
|
432
440
|
default: "default";
|
|
433
441
|
muted: "muted";
|
|
434
|
-
success: "success";
|
|
435
442
|
warning: "warning";
|
|
436
443
|
danger: "danger";
|
|
437
444
|
}>>;
|
|
@@ -445,8 +452,8 @@ declare const observabilityCatalog: {
|
|
|
445
452
|
props: z.ZodObject<{
|
|
446
453
|
text: z.ZodString;
|
|
447
454
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
448
|
-
default: "default";
|
|
449
455
|
success: "success";
|
|
456
|
+
default: "default";
|
|
450
457
|
warning: "warning";
|
|
451
458
|
danger: "danger";
|
|
452
459
|
info: "info";
|
|
@@ -621,9 +628,9 @@ declare const observabilityCatalog: {
|
|
|
621
628
|
label: "label";
|
|
622
629
|
}>>;
|
|
623
630
|
color: z.ZodNullable<z.ZodEnum<{
|
|
631
|
+
success: "success";
|
|
624
632
|
default: "default";
|
|
625
633
|
muted: "muted";
|
|
626
|
-
success: "success";
|
|
627
634
|
warning: "warning";
|
|
628
635
|
danger: "danger";
|
|
629
636
|
}>>;
|
|
@@ -637,8 +644,8 @@ declare const observabilityCatalog: {
|
|
|
637
644
|
props: z.ZodObject<{
|
|
638
645
|
text: z.ZodString;
|
|
639
646
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
640
|
-
default: "default";
|
|
641
647
|
success: "success";
|
|
648
|
+
default: "default";
|
|
642
649
|
warning: "warning";
|
|
643
650
|
danger: "danger";
|
|
644
651
|
info: "info";
|
|
@@ -861,7 +868,7 @@ declare function createRendererFromCatalog<C extends {
|
|
|
861
868
|
}: {
|
|
862
869
|
tree: UITree | null;
|
|
863
870
|
fallback?: ComponentRenderer;
|
|
864
|
-
}) => react_jsx_runtime0.JSX.Element;
|
|
871
|
+
}) => _$react_jsx_runtime0.JSX.Element;
|
|
865
872
|
/**
|
|
866
873
|
* Renders a UITree using a component registry.
|
|
867
874
|
* Prefer using {@link createRendererFromCatalog} for type-safe rendering.
|
|
@@ -876,10 +883,10 @@ declare function Renderer<C extends {
|
|
|
876
883
|
tree: z$1.infer<ReturnType<typeof createCatalog>["uiTreeSchema"]> | null;
|
|
877
884
|
registry: RegistryFromCatalog<C>;
|
|
878
885
|
fallback?: ComponentRenderer;
|
|
879
|
-
}): react_jsx_runtime0.JSX.Element | null;
|
|
886
|
+
}): _$react_jsx_runtime0.JSX.Element | null;
|
|
880
887
|
//#endregion
|
|
881
888
|
//#region src/providers/kopai-provider.d.ts
|
|
882
|
-
type KopaiClient = Pick<KopaiClient$1, "searchTracesPage" | "searchLogsPage" | "searchMetricsPage" | "getTrace" | "discoverMetrics" | "getDashboard" | "getServices" | "getOperations" | "searchTraceSummariesPage">;
|
|
889
|
+
type KopaiClient = Pick<KopaiClient$1, "searchTracesPage" | "searchLogsPage" | "searchMetricsPage" | "searchAggregatedMetrics" | "getTrace" | "discoverMetrics" | "getDashboard" | "getServices" | "getOperations" | "searchTraceSummariesPage">;
|
|
883
890
|
interface KopaiSDKProviderProps {
|
|
884
891
|
client: KopaiClient;
|
|
885
892
|
children: ReactNode;
|
|
@@ -887,7 +894,7 @@ interface KopaiSDKProviderProps {
|
|
|
887
894
|
declare function KopaiSDKProvider({
|
|
888
895
|
client,
|
|
889
896
|
children
|
|
890
|
-
}: KopaiSDKProviderProps): react_jsx_runtime0.JSX.Element;
|
|
897
|
+
}: KopaiSDKProviderProps): _$react_jsx_runtime0.JSX.Element;
|
|
891
898
|
declare function useKopaiSDK(): KopaiClient;
|
|
892
899
|
//#endregion
|
|
893
900
|
export { type ComponentRenderProps, type ComponentRenderer, type KopaiClient, KopaiSDKProvider, ObservabilityPage, Renderer, type RendererComponentProps, createCatalog, createRendererFromCatalog, generatePromptInstructions, observabilityCatalog, useKopaiSDK };
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComponentType, ReactNode } from "react";
|
|
2
2
|
import { QueryClient } from "@tanstack/react-query";
|
|
3
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
import { KopaiClient as KopaiClient$1 } from "@kopai/sdk";
|
|
5
5
|
import z$1, { z } from "zod";
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ interface ObservabilityPageProps {
|
|
|
10
10
|
}
|
|
11
11
|
declare function ObservabilityPage({
|
|
12
12
|
client
|
|
13
|
-
}: ObservabilityPageProps): react_jsx_runtime0.JSX.Element;
|
|
13
|
+
}: ObservabilityPageProps): _$react_jsx_runtime0.JSX.Element;
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/lib/component-catalog.d.ts
|
|
16
16
|
declare const dataSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -82,6 +82,14 @@ declare const dataSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
82
82
|
attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
83
83
|
resourceAttributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
84
84
|
scopeAttributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
85
|
+
aggregate: z.ZodOptional<z.ZodEnum<{
|
|
86
|
+
sum: "sum";
|
|
87
|
+
avg: "avg";
|
|
88
|
+
min: "min";
|
|
89
|
+
max: "max";
|
|
90
|
+
count: "count";
|
|
91
|
+
}>>;
|
|
92
|
+
groupBy: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
85
93
|
limit: z.ZodOptional<z.ZodNumber>;
|
|
86
94
|
cursor: z.ZodOptional<z.ZodString>;
|
|
87
95
|
sortOrder: z.ZodOptional<z.ZodEnum<{
|
|
@@ -252,9 +260,9 @@ declare const observabilityCatalog: {
|
|
|
252
260
|
label: "label";
|
|
253
261
|
}>>;
|
|
254
262
|
color: z.ZodNullable<z.ZodEnum<{
|
|
263
|
+
success: "success";
|
|
255
264
|
default: "default";
|
|
256
265
|
muted: "muted";
|
|
257
|
-
success: "success";
|
|
258
266
|
warning: "warning";
|
|
259
267
|
danger: "danger";
|
|
260
268
|
}>>;
|
|
@@ -266,8 +274,8 @@ declare const observabilityCatalog: {
|
|
|
266
274
|
props: z.ZodObject<{
|
|
267
275
|
text: z.ZodString;
|
|
268
276
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
269
|
-
default: "default";
|
|
270
277
|
success: "success";
|
|
278
|
+
default: "default";
|
|
271
279
|
warning: "warning";
|
|
272
280
|
danger: "danger";
|
|
273
281
|
info: "info";
|
|
@@ -430,9 +438,9 @@ declare const observabilityCatalog: {
|
|
|
430
438
|
label: "label";
|
|
431
439
|
}>>;
|
|
432
440
|
color: z.ZodNullable<z.ZodEnum<{
|
|
441
|
+
success: "success";
|
|
433
442
|
default: "default";
|
|
434
443
|
muted: "muted";
|
|
435
|
-
success: "success";
|
|
436
444
|
warning: "warning";
|
|
437
445
|
danger: "danger";
|
|
438
446
|
}>>;
|
|
@@ -446,8 +454,8 @@ declare const observabilityCatalog: {
|
|
|
446
454
|
props: z.ZodObject<{
|
|
447
455
|
text: z.ZodString;
|
|
448
456
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
449
|
-
default: "default";
|
|
450
457
|
success: "success";
|
|
458
|
+
default: "default";
|
|
451
459
|
warning: "warning";
|
|
452
460
|
danger: "danger";
|
|
453
461
|
info: "info";
|
|
@@ -622,9 +630,9 @@ declare const observabilityCatalog: {
|
|
|
622
630
|
label: "label";
|
|
623
631
|
}>>;
|
|
624
632
|
color: z.ZodNullable<z.ZodEnum<{
|
|
633
|
+
success: "success";
|
|
625
634
|
default: "default";
|
|
626
635
|
muted: "muted";
|
|
627
|
-
success: "success";
|
|
628
636
|
warning: "warning";
|
|
629
637
|
danger: "danger";
|
|
630
638
|
}>>;
|
|
@@ -638,8 +646,8 @@ declare const observabilityCatalog: {
|
|
|
638
646
|
props: z.ZodObject<{
|
|
639
647
|
text: z.ZodString;
|
|
640
648
|
variant: z.ZodNullable<z.ZodEnum<{
|
|
641
|
-
default: "default";
|
|
642
649
|
success: "success";
|
|
650
|
+
default: "default";
|
|
643
651
|
warning: "warning";
|
|
644
652
|
danger: "danger";
|
|
645
653
|
info: "info";
|
|
@@ -862,7 +870,7 @@ declare function createRendererFromCatalog<C extends {
|
|
|
862
870
|
}: {
|
|
863
871
|
tree: UITree | null;
|
|
864
872
|
fallback?: ComponentRenderer;
|
|
865
|
-
}) => react_jsx_runtime0.JSX.Element;
|
|
873
|
+
}) => _$react_jsx_runtime0.JSX.Element;
|
|
866
874
|
/**
|
|
867
875
|
* Renders a UITree using a component registry.
|
|
868
876
|
* Prefer using {@link createRendererFromCatalog} for type-safe rendering.
|
|
@@ -877,10 +885,10 @@ declare function Renderer<C extends {
|
|
|
877
885
|
tree: z$1.infer<ReturnType<typeof createCatalog>["uiTreeSchema"]> | null;
|
|
878
886
|
registry: RegistryFromCatalog<C>;
|
|
879
887
|
fallback?: ComponentRenderer;
|
|
880
|
-
}): react_jsx_runtime0.JSX.Element | null;
|
|
888
|
+
}): _$react_jsx_runtime0.JSX.Element | null;
|
|
881
889
|
//#endregion
|
|
882
890
|
//#region src/providers/kopai-provider.d.ts
|
|
883
|
-
type KopaiClient = Pick<KopaiClient$1, "searchTracesPage" | "searchLogsPage" | "searchMetricsPage" | "getTrace" | "discoverMetrics" | "getDashboard" | "getServices" | "getOperations" | "searchTraceSummariesPage">;
|
|
891
|
+
type KopaiClient = Pick<KopaiClient$1, "searchTracesPage" | "searchLogsPage" | "searchMetricsPage" | "searchAggregatedMetrics" | "getTrace" | "discoverMetrics" | "getDashboard" | "getServices" | "getOperations" | "searchTraceSummariesPage">;
|
|
884
892
|
interface KopaiSDKProviderProps {
|
|
885
893
|
client: KopaiClient;
|
|
886
894
|
children: ReactNode;
|
|
@@ -888,7 +896,7 @@ interface KopaiSDKProviderProps {
|
|
|
888
896
|
declare function KopaiSDKProvider({
|
|
889
897
|
client,
|
|
890
898
|
children
|
|
891
|
-
}: KopaiSDKProviderProps): react_jsx_runtime0.JSX.Element;
|
|
899
|
+
}: KopaiSDKProviderProps): _$react_jsx_runtime0.JSX.Element;
|
|
892
900
|
declare function useKopaiSDK(): KopaiClient;
|
|
893
901
|
//#endregion
|
|
894
902
|
export { type ComponentRenderProps, type ComponentRenderer, type KopaiClient, KopaiSDKProvider, ObservabilityPage, Renderer, type RendererComponentProps, createCatalog, createRendererFromCatalog, generatePromptInstructions, observabilityCatalog, useKopaiSDK };
|
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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"}
|