@seed-ship/mcp-ui-solid 5.5.0 → 5.6.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/CHANGELOG.md +62 -0
- package/dist/components/FormRenderer.cjs +13 -2
- package/dist/components/FormRenderer.cjs.map +1 -1
- package/dist/components/FormRenderer.d.ts.map +1 -1
- package/dist/components/FormRenderer.js +13 -2
- package/dist/components/FormRenderer.js.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.cjs +11 -0
- package/dist/components/GenerativeUIErrorBoundary.cjs.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.d.ts.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.js +11 -0
- package/dist/components/GenerativeUIErrorBoundary.js.map +1 -1
- package/dist/components/StreamingUIRenderer.cjs +49 -3
- package/dist/components/StreamingUIRenderer.cjs.map +1 -1
- package/dist/components/StreamingUIRenderer.d.ts.map +1 -1
- package/dist/components/StreamingUIRenderer.js +51 -5
- package/dist/components/StreamingUIRenderer.js.map +1 -1
- package/dist/components/UIResourceRenderer.cjs +62 -3
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +64 -5
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/dist/context/MCPUITelemetryContext.cjs +25 -0
- package/dist/context/MCPUITelemetryContext.cjs.map +1 -0
- package/dist/context/MCPUITelemetryContext.d.ts +36 -0
- package/dist/context/MCPUITelemetryContext.d.ts.map +1 -0
- package/dist/context/MCPUITelemetryContext.js +25 -0
- package/dist/context/MCPUITelemetryContext.js.map +1 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-ui-spec/dist/schemas.cjs +16 -5
- package/dist/mcp-ui-spec/dist/schemas.cjs.map +1 -1
- package/dist/mcp-ui-spec/dist/schemas.js +16 -5
- package/dist/mcp-ui-spec/dist/schemas.js.map +1 -1
- package/dist/services/telemetry.cjs +56 -0
- package/dist/services/telemetry.cjs.map +1 -0
- package/dist/services/telemetry.d.ts +87 -0
- package/dist/services/telemetry.d.ts.map +1 -0
- package/dist/services/telemetry.js +56 -0
- package/dist/services/telemetry.js.map +1 -0
- package/dist/services/validation.cjs +28 -26
- package/dist/services/validation.cjs.map +1 -1
- package/dist/services/validation.d.ts.map +1 -1
- package/dist/services/validation.js +29 -27
- package/dist/services/validation.js.map +1 -1
- package/package.json +2 -2
- package/src/components/FormRenderer.tsx +14 -0
- package/src/components/GenerativeUIErrorBoundary.tsx +17 -1
- package/src/components/StreamingUIRenderer.tsx +55 -3
- package/src/components/UIResourceRenderer.tsx +79 -3
- package/src/context/MCPUITelemetryContext.test.tsx +119 -0
- package/src/context/MCPUITelemetryContext.tsx +71 -0
- package/src/index.ts +15 -0
- package/src/services/telemetry.test.ts +134 -0
- package/src/services/telemetry.ts +149 -0
- package/src/services/validation.test.ts +53 -3
- package/src/services/validation.ts +54 -44
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -6,6 +6,7 @@ const solidJs = require("solid-js");
|
|
|
6
6
|
const validation = require("../services/validation.cjs");
|
|
7
7
|
const GenerativeUIErrorBoundary = require("./GenerativeUIErrorBoundary.cjs");
|
|
8
8
|
const perf = require("../utils/perf.cjs");
|
|
9
|
+
const MCPUITelemetryContext = require("../context/MCPUITelemetryContext.cjs");
|
|
9
10
|
const GridRenderer = require("./GridRenderer.cjs");
|
|
10
11
|
const FooterRenderer = require("./FooterRenderer.cjs");
|
|
11
12
|
const CarouselRenderer = require("./CarouselRenderer.cjs");
|
|
@@ -1055,9 +1056,44 @@ function LinkRenderer(props) {
|
|
|
1055
1056
|
})();
|
|
1056
1057
|
}
|
|
1057
1058
|
function ComponentRenderer(props) {
|
|
1058
|
-
var _a, _b, _c;
|
|
1059
|
+
var _a, _b, _c, _d, _e, _f;
|
|
1059
1060
|
perf.markRenderStart(props.component.id);
|
|
1060
|
-
|
|
1061
|
+
const telemetry = MCPUITelemetryContext.useTelemetry();
|
|
1062
|
+
solidJs.onMount(() => {
|
|
1063
|
+
perf.markRenderEnd(props.component.id);
|
|
1064
|
+
if (telemetry) {
|
|
1065
|
+
const ts = Date.now();
|
|
1066
|
+
telemetry.dispatch({
|
|
1067
|
+
type: "component:mounted",
|
|
1068
|
+
id: props.component.id,
|
|
1069
|
+
componentType: props.component.type,
|
|
1070
|
+
ts
|
|
1071
|
+
});
|
|
1072
|
+
if (typeof performance !== "undefined" && typeof performance.getEntriesByName === "function") {
|
|
1073
|
+
const entries = performance.getEntriesByName(`${perf.PERF_PREFIX}${props.component.id}:render`, "measure");
|
|
1074
|
+
const last = entries[entries.length - 1];
|
|
1075
|
+
if (last) {
|
|
1076
|
+
telemetry.dispatch({
|
|
1077
|
+
type: "component:rendered",
|
|
1078
|
+
id: props.component.id,
|
|
1079
|
+
componentType: props.component.type,
|
|
1080
|
+
durationMs: last.duration,
|
|
1081
|
+
ts
|
|
1082
|
+
});
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
});
|
|
1087
|
+
solidJs.onCleanup(() => {
|
|
1088
|
+
if (telemetry) {
|
|
1089
|
+
telemetry.dispatch({
|
|
1090
|
+
type: "component:unmounted",
|
|
1091
|
+
id: props.component.id,
|
|
1092
|
+
componentType: props.component.type,
|
|
1093
|
+
ts: Date.now()
|
|
1094
|
+
});
|
|
1095
|
+
}
|
|
1096
|
+
});
|
|
1061
1097
|
const validation$1 = validation.validateComponent(props.component);
|
|
1062
1098
|
if (!validation$1.valid) {
|
|
1063
1099
|
(_a = props.onError) == null ? void 0 : _a.call(props, {
|
|
@@ -1066,8 +1102,18 @@ function ComponentRenderer(props) {
|
|
|
1066
1102
|
componentId: props.component.id,
|
|
1067
1103
|
details: validation$1.errors
|
|
1068
1104
|
});
|
|
1105
|
+
if (telemetry) {
|
|
1106
|
+
telemetry.dispatch({
|
|
1107
|
+
type: "validation:failed",
|
|
1108
|
+
id: props.component.id,
|
|
1109
|
+
componentType: props.component.type,
|
|
1110
|
+
errorCount: ((_b = validation$1.errors) == null ? void 0 : _b.length) ?? 0,
|
|
1111
|
+
firstErrorCode: ((_d = (_c = validation$1.errors) == null ? void 0 : _c[0]) == null ? void 0 : _d.code) ?? null,
|
|
1112
|
+
ts: Date.now()
|
|
1113
|
+
});
|
|
1114
|
+
}
|
|
1069
1115
|
const mode = props.errorMode ?? "block";
|
|
1070
|
-
const firstError = ((
|
|
1116
|
+
const firstError = ((_f = (_e = validation$1.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) || "Unknown validation error";
|
|
1071
1117
|
if (mode === "silent") {
|
|
1072
1118
|
return null;
|
|
1073
1119
|
}
|
|
@@ -1319,7 +1365,20 @@ function ActionRenderer(props) {
|
|
|
1319
1365
|
execute,
|
|
1320
1366
|
isExecuting
|
|
1321
1367
|
} = useAction.useAction();
|
|
1368
|
+
const telemetry = MCPUITelemetryContext.useTelemetry();
|
|
1369
|
+
function dispatchTelemetry() {
|
|
1370
|
+
if (!telemetry) return;
|
|
1371
|
+
const actionName = params.toolName ?? params.action ?? "unknown";
|
|
1372
|
+
telemetry.dispatch({
|
|
1373
|
+
type: "action:dispatched",
|
|
1374
|
+
id: props.component.id,
|
|
1375
|
+
componentType: "action",
|
|
1376
|
+
actionName,
|
|
1377
|
+
ts: Date.now()
|
|
1378
|
+
});
|
|
1379
|
+
}
|
|
1322
1380
|
const handleClick = async (e) => {
|
|
1381
|
+
dispatchTelemetry();
|
|
1323
1382
|
if (params.action === "tool-call" && params.toolName) {
|
|
1324
1383
|
e.preventDefault();
|
|
1325
1384
|
await execute(params.toolName, params.params || {});
|