@apteva/apteva-kit 0.1.39 → 0.1.41
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.js +95 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +111 -39
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1290,21 +1290,50 @@ function Message({ message, onAction, enableWidgets, onWidgetRender }) {
|
|
|
1290
1290
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: text });
|
|
1291
1291
|
}
|
|
1292
1292
|
const parsed = parseWidgetsFromText(text);
|
|
1293
|
-
|
|
1293
|
+
const cleanedText = parsed.segments.filter((seg) => seg.type === "text" && seg.content).map((seg) => seg.content).join("");
|
|
1294
|
+
if (!cleanedText.trim()) {
|
|
1294
1295
|
return null;
|
|
1295
1296
|
}
|
|
1296
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1297
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: cleanedText });
|
|
1298
|
+
};
|
|
1299
|
+
const renderContentWithWidgets = () => {
|
|
1300
|
+
if (!enableWidgets || isUser || !message.content) {
|
|
1301
|
+
return null;
|
|
1302
|
+
}
|
|
1303
|
+
const parsed = parseWidgetsFromText(message.content);
|
|
1304
|
+
const elements = [];
|
|
1305
|
+
let textBuffer = "";
|
|
1306
|
+
parsed.segments.forEach((segment, index) => {
|
|
1297
1307
|
if (segment.type === "text" && segment.content) {
|
|
1298
|
-
|
|
1299
|
-
}
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1308
|
+
textBuffer += segment.content;
|
|
1309
|
+
} else if (segment.type === "widget" && segment.widget) {
|
|
1310
|
+
if (textBuffer.trim()) {
|
|
1311
|
+
elements.push(
|
|
1312
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, `text-${index}`)
|
|
1313
|
+
);
|
|
1314
|
+
textBuffer = "";
|
|
1315
|
+
}
|
|
1316
|
+
elements.push(
|
|
1317
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetRenderer, { widget: segment.widget, onAction }) }, `widget-${index}`)
|
|
1318
|
+
);
|
|
1319
|
+
} else if (segment.type === "widget_pending" && segment.pendingType) {
|
|
1320
|
+
if (textBuffer.trim()) {
|
|
1321
|
+
elements.push(
|
|
1322
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, `text-${index}`)
|
|
1323
|
+
);
|
|
1324
|
+
textBuffer = "";
|
|
1325
|
+
}
|
|
1326
|
+
elements.push(
|
|
1327
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetSkeleton, { type: segment.pendingType }) }, `pending-${index}`)
|
|
1328
|
+
);
|
|
1305
1329
|
}
|
|
1306
|
-
|
|
1307
|
-
|
|
1330
|
+
});
|
|
1331
|
+
if (textBuffer.trim()) {
|
|
1332
|
+
elements.push(
|
|
1333
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, "text-final")
|
|
1334
|
+
);
|
|
1335
|
+
}
|
|
1336
|
+
return elements.length > 0 ? elements : null;
|
|
1308
1337
|
};
|
|
1309
1338
|
const renderContent = () => {
|
|
1310
1339
|
if (isUser) {
|
|
@@ -1322,6 +1351,45 @@ function Message({ message, onAction, enableWidgets, onWidgetRender }) {
|
|
|
1322
1351
|
}
|
|
1323
1352
|
return renderTextContent(message.content);
|
|
1324
1353
|
};
|
|
1354
|
+
const renderTextSegmentWithWidgets = (text, keyPrefix) => {
|
|
1355
|
+
if (!enableWidgets) {
|
|
1356
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: text }) }) }, keyPrefix);
|
|
1357
|
+
}
|
|
1358
|
+
const parsed = parseWidgetsFromText(text);
|
|
1359
|
+
const elements = [];
|
|
1360
|
+
let textBuffer = "";
|
|
1361
|
+
parsed.segments.forEach((seg, idx) => {
|
|
1362
|
+
if (seg.type === "text" && seg.content) {
|
|
1363
|
+
textBuffer += seg.content;
|
|
1364
|
+
} else if (seg.type === "widget" && seg.widget) {
|
|
1365
|
+
if (textBuffer.trim()) {
|
|
1366
|
+
elements.push(
|
|
1367
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, `${keyPrefix}-text-${idx}`)
|
|
1368
|
+
);
|
|
1369
|
+
textBuffer = "";
|
|
1370
|
+
}
|
|
1371
|
+
elements.push(
|
|
1372
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetRenderer, { widget: seg.widget, onAction }) }, `${keyPrefix}-widget-${idx}`)
|
|
1373
|
+
);
|
|
1374
|
+
} else if (seg.type === "widget_pending" && seg.pendingType) {
|
|
1375
|
+
if (textBuffer.trim()) {
|
|
1376
|
+
elements.push(
|
|
1377
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, `${keyPrefix}-text-${idx}`)
|
|
1378
|
+
);
|
|
1379
|
+
textBuffer = "";
|
|
1380
|
+
}
|
|
1381
|
+
elements.push(
|
|
1382
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetSkeleton, { type: seg.pendingType }) }, `${keyPrefix}-pending-${idx}`)
|
|
1383
|
+
);
|
|
1384
|
+
}
|
|
1385
|
+
});
|
|
1386
|
+
if (textBuffer.trim()) {
|
|
1387
|
+
elements.push(
|
|
1388
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, `${keyPrefix}-text-final`)
|
|
1389
|
+
);
|
|
1390
|
+
}
|
|
1391
|
+
return elements;
|
|
1392
|
+
};
|
|
1325
1393
|
const renderSegmentedContent = () => {
|
|
1326
1394
|
if (!contentSegments || contentSegments.length === 0) {
|
|
1327
1395
|
return null;
|
|
@@ -1329,16 +1397,12 @@ function Message({ message, onAction, enableWidgets, onWidgetRender }) {
|
|
|
1329
1397
|
const elements = [];
|
|
1330
1398
|
contentSegments.forEach((segment, index) => {
|
|
1331
1399
|
if (segment.type === "text" && segment.content) {
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
},
|
|
1339
|
-
`text-${index}`
|
|
1340
|
-
)
|
|
1341
|
-
);
|
|
1400
|
+
const textElements = renderTextSegmentWithWidgets(segment.content, `seg-${index}`);
|
|
1401
|
+
if (Array.isArray(textElements)) {
|
|
1402
|
+
elements.push(...textElements);
|
|
1403
|
+
} else {
|
|
1404
|
+
elements.push(textElements);
|
|
1405
|
+
}
|
|
1342
1406
|
} else if (segment.type === "tool") {
|
|
1343
1407
|
elements.push(
|
|
1344
1408
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-tool-call-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -1356,7 +1420,15 @@ function Message({ message, onAction, enableWidgets, onWidgetRender }) {
|
|
|
1356
1420
|
if (!isUser && contentSegments && contentSegments.length > 0) {
|
|
1357
1421
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "apteva-message-segmented", children: [
|
|
1358
1422
|
renderSegmentedContent(),
|
|
1359
|
-
message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-
|
|
1423
|
+
message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Widgets, { widgets: message.widgets, onAction, layout: "stack" }) }),
|
|
1424
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-timestamp apteva-message-timestamp-assistant", suppressHydrationWarning: true, children: message.timestamp.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) })
|
|
1425
|
+
] });
|
|
1426
|
+
}
|
|
1427
|
+
const widgetContent = renderContentWithWidgets();
|
|
1428
|
+
if (!isUser && enableWidgets && widgetContent) {
|
|
1429
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "apteva-message-segmented", children: [
|
|
1430
|
+
widgetContent,
|
|
1431
|
+
message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Widgets, { widgets: message.widgets, onAction, layout: "stack" }) }),
|
|
1360
1432
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-timestamp apteva-message-timestamp-assistant", suppressHydrationWarning: true, children: message.timestamp.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) })
|
|
1361
1433
|
] });
|
|
1362
1434
|
}
|
|
@@ -1369,7 +1441,7 @@ function Message({ message, onAction, enableWidgets, onWidgetRender }) {
|
|
|
1369
1441
|
),
|
|
1370
1442
|
children: [
|
|
1371
1443
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: isUser ? "apteva-message-content-user" : "apteva-message-content-assistant", children: renderContent() }),
|
|
1372
|
-
message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-
|
|
1444
|
+
message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Widgets, { widgets: message.widgets, onAction, layout: "stack" }) }),
|
|
1373
1445
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: cn("apteva-message-timestamp", isUser ? "apteva-message-timestamp-user" : "apteva-message-timestamp-assistant"), suppressHydrationWarning: true, children: message.timestamp.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) })
|
|
1374
1446
|
]
|
|
1375
1447
|
}
|