@xpert-ai/chatkit-web-component 0.4.1 → 0.5.1
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.
|
@@ -51,7 +51,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
|
|
|
51
51
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
52
52
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
53
53
|
|
|
54
|
-
var _a, _b, _setTrainingOptOut_dec, _hideHistory_dec, _showHistory_dec, _sendCustomAction_dec, _shareThread_dec, _setThreadId_dec, _setRuntimeCapabilities_dec, _setComposerValue_dec, _sendUserMessage_dec, _fetchUpdates_dec, _focusComposer_dec, _c, _opts, _frameUrl, _frame, _wrapper, _launcherCloseButton, _launcherOpen, _chatMinimizedToPet, _framePetOptionsOverride, _petClosedByContextMenu, _shadow, _petOverlay, _resolveLoaded, _loaded, _messenger, _ChatKitElementBase_instances, emitAndThrow_fn, setOptionsDataAttributes_fn, getDisplayMode_fn, getConfiguredPetOptions_fn, mergeConfiguredPetPositionDefaults_fn, getOverlayPetOptions_fn, resolvePetAssetUrl_fn, resolveOverlayPetOptions_fn, getFrameOptions_fn, setLauncherOpen_fn, setChatMinimizedToPet_fn, syncPetOverlayOptions_fn, handlePetActivate_fn, handlePetClose_fn, handlePetReply_fn, handlePetThreadSummaryActivate_fn, _handleLauncherClose, getFrameUrl_fn, setFrameUrl_fn, consumeFrameUrl_fn, _handleFrameLoad, _initialized, maybeInit_fn, _init;
|
|
54
|
+
var _a, _b, _setTrainingOptOut_dec, _hideHistory_dec, _showHistory_dec, _sendCustomAction_dec, _shareThread_dec, _setThreadId_dec, _setRuntimeCapabilities_dec, _setComposerValue_dec, _sendUserMessage_dec, _fetchUpdates_dec, _focusComposer_dec, _c, _opts, _frameUrl, _frame, _wrapper, _launcherCloseButton, _launcherOpen, _chatMinimizedToPet, _framePetOptionsOverride, _petClosedByContextMenu, _shadow, _petOverlay, _resolveLoaded, _loaded, _channelId, _messenger, _ChatKitElementBase_instances, emitAndThrow_fn, setOptionsDataAttributes_fn, getDisplayMode_fn, getConfiguredPetOptions_fn, mergeConfiguredPetPositionDefaults_fn, getOverlayPetOptions_fn, resolvePetAssetUrl_fn, resolveOverlayPetOptions_fn, getFrameOptions_fn, setLauncherOpen_fn, setChatMinimizedToPet_fn, syncPetOverlayOptions_fn, handlePetActivate_fn, handlePetClose_fn, handlePetReply_fn, handlePetThreadSummaryActivate_fn, _handleLauncherClose, getFrameUrl_fn, setFrameUrl_fn, consumeFrameUrl_fn, _handleFrameLoad, _initialized, maybeInit_fn, _init;
|
|
55
55
|
class EventEmitter {
|
|
56
56
|
constructor() {
|
|
57
57
|
__publicField(this, "callbacks", /* @__PURE__ */ new Map());
|
|
@@ -370,7 +370,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
370
370
|
}
|
|
371
371
|
});
|
|
372
372
|
};
|
|
373
|
-
function
|
|
373
|
+
function createSecureChannelId() {
|
|
374
374
|
const cryptoRef = globalThis.crypto;
|
|
375
375
|
if (typeof (cryptoRef == null ? void 0 : cryptoRef.randomUUID) === "function") {
|
|
376
376
|
return cryptoRef.randomUUID();
|
|
@@ -382,7 +382,30 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
382
382
|
bytes[8] = bytes[8] & 63 | 128;
|
|
383
383
|
return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("").replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, "$1-$2-$3-$4-$5");
|
|
384
384
|
}
|
|
385
|
-
return
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
function safeRandomUUID() {
|
|
388
|
+
return createSecureChannelId() ?? `ck_${Date.now()}_${Math.random().toString(16).slice(2)}`;
|
|
389
|
+
}
|
|
390
|
+
function isTrustedChatKitMessageEvent(event, { channelId, expectedOrigin, expectedSource }) {
|
|
391
|
+
const payload = event.data;
|
|
392
|
+
if (!payload || typeof payload !== "object" || !("__xpaiChatKit" in payload)) {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
if (payload.__xpaiChatKit !== true) {
|
|
396
|
+
return false;
|
|
397
|
+
}
|
|
398
|
+
if (expectedOrigin !== "*" && event.origin !== expectedOrigin) {
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
if (event.source === expectedSource) {
|
|
402
|
+
return true;
|
|
403
|
+
}
|
|
404
|
+
const normalizedChannelId = channelId == null ? void 0 : channelId.trim();
|
|
405
|
+
if (normalizedChannelId) {
|
|
406
|
+
return "channelId" in payload && payload.channelId === normalizedChannelId;
|
|
407
|
+
}
|
|
408
|
+
return false;
|
|
386
409
|
}
|
|
387
410
|
let IntegrationError$1 = class IntegrationError2 extends Error {
|
|
388
411
|
constructor(message) {
|
|
@@ -416,10 +439,12 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
416
439
|
handlers,
|
|
417
440
|
target,
|
|
418
441
|
targetOrigin,
|
|
442
|
+
channelId,
|
|
419
443
|
fetch: fetch2 = window.fetch
|
|
420
444
|
}) {
|
|
421
445
|
__publicField(this, "targetOrigin");
|
|
422
446
|
__publicField(this, "target");
|
|
447
|
+
__publicField(this, "channelId");
|
|
423
448
|
__publicField(this, "commandHandlers");
|
|
424
449
|
__publicField(this, "_fetch");
|
|
425
450
|
__publicField(this, "emitter", new EventEmitter());
|
|
@@ -450,7 +475,11 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
450
475
|
));
|
|
451
476
|
__publicField(this, "handleMessage", async (event) => {
|
|
452
477
|
var _a2, _b2, _c2, _d;
|
|
453
|
-
if (!event
|
|
478
|
+
if (!isTrustedChatKitMessageEvent(event, {
|
|
479
|
+
channelId: this.channelId,
|
|
480
|
+
expectedOrigin: this.targetOrigin,
|
|
481
|
+
expectedSource: this.target()
|
|
482
|
+
})) {
|
|
454
483
|
return;
|
|
455
484
|
}
|
|
456
485
|
const data = event.data;
|
|
@@ -591,6 +620,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
591
620
|
this.commandHandlers = handlers;
|
|
592
621
|
this.target = target;
|
|
593
622
|
this.targetOrigin = targetOrigin;
|
|
623
|
+
this.channelId = (channelId == null ? void 0 : channelId.trim()) || void 0;
|
|
594
624
|
this._fetch = (...args) => fetch2(...args);
|
|
595
625
|
}
|
|
596
626
|
setTargetOrigin(targetOrigin) {
|
|
@@ -600,6 +630,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
600
630
|
var _a2;
|
|
601
631
|
const message = {
|
|
602
632
|
__xpaiChatKit: true,
|
|
633
|
+
...this.channelId ? { channelId: this.channelId } : {},
|
|
603
634
|
...data
|
|
604
635
|
};
|
|
605
636
|
(_a2 = this.target()) == null ? void 0 : _a2.postMessage(message, this.targetOrigin, transfer);
|
|
@@ -2607,7 +2638,9 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
2607
2638
|
__privateAdd(this, _loaded, new Promise((resolve) => {
|
|
2608
2639
|
__privateSet(this, _resolveLoaded, resolve);
|
|
2609
2640
|
}));
|
|
2641
|
+
__privateAdd(this, _channelId, createSecureChannelId());
|
|
2610
2642
|
__privateAdd(this, _messenger, new ChatFrameMessenger({
|
|
2643
|
+
channelId: __privateGet(this, _channelId) ?? void 0,
|
|
2611
2644
|
fetch: (...args) => {
|
|
2612
2645
|
var _a2;
|
|
2613
2646
|
const customFetch = ((_a2 = __privateGet(this, _opts)) == null ? void 0 : _a2.api) && "fetch" in __privateGet(this, _opts).api && __privateGet(this, _opts).api.fetch;
|
|
@@ -2654,6 +2687,16 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
2654
2687
|
}
|
|
2655
2688
|
return onClientTool({ name, params, id, tool_call_id });
|
|
2656
2689
|
},
|
|
2690
|
+
onToolOutputAttachmentPreview: async (request) => {
|
|
2691
|
+
var _a2, _b2;
|
|
2692
|
+
const onRequestPreview = (_b2 = (_a2 = __privateGet(this, _opts)) == null ? void 0 : _a2.toolOutputAttachments) == null ? void 0 : _b2.onRequestPreview;
|
|
2693
|
+
if (!onRequestPreview) {
|
|
2694
|
+
__privateMethod(this, _ChatKitElementBase_instances, emitAndThrow_fn).call(this, new IntegrationError(
|
|
2695
|
+
"No handler for tool-output attachment previews. Add toolOutputAttachments.onRequestPreview to your ChatKit options."
|
|
2696
|
+
));
|
|
2697
|
+
}
|
|
2698
|
+
return onRequestPreview(request);
|
|
2699
|
+
},
|
|
2657
2700
|
onWorkbenchClientCommand: async ({
|
|
2658
2701
|
commandKey,
|
|
2659
2702
|
payload,
|
|
@@ -3096,6 +3139,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
3096
3139
|
_petOverlay = new WeakMap();
|
|
3097
3140
|
_resolveLoaded = new WeakMap();
|
|
3098
3141
|
_loaded = new WeakMap();
|
|
3142
|
+
_channelId = new WeakMap();
|
|
3099
3143
|
_messenger = new WeakMap();
|
|
3100
3144
|
_ChatKitElementBase_instances = new WeakSet();
|
|
3101
3145
|
emitAndThrow_fn = function(error) {
|
|
@@ -3306,7 +3350,8 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
3306
3350
|
frameURL.hash = encodeBase64({
|
|
3307
3351
|
options: getInnerOptions(__privateMethod(this, _ChatKitElementBase_instances, getFrameOptions_fn).call(this, __privateGet(this, _opts))),
|
|
3308
3352
|
referrer: window.location.origin,
|
|
3309
|
-
profile: this.profile
|
|
3353
|
+
profile: this.profile,
|
|
3354
|
+
...__privateGet(this, _channelId) ? { channelId: __privateGet(this, _channelId) } : {}
|
|
3310
3355
|
});
|
|
3311
3356
|
__privateGet(this, _messenger).connect();
|
|
3312
3357
|
__privateGet(this, _frame).src = frameURL.toString();
|