@xpert-ai/chatkit-web-component 0.0.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.
- package/README.md +172 -0
- package/dist/xpert-chatkit.d.ts +1 -0
- package/dist/xpert-chatkit.js +1261 -0
- package/dist/xpert-chatkit.js.map +1 -0
- package/dist/xpert-chatkit.umd.cjs +1266 -0
- package/dist/xpert-chatkit.umd.cjs.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xpert-chatkit.js","sources":["../../chatkit-web-shared/dist/index.js","../src/ChatFrameMessenger.ts","../src/helpers.ts","../src/ChatKitElementBase.ts","../src/ChatKitElement.ts","../src/xpert-chatkit.ts"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a, _b;\nclass EventEmitter {\n constructor() {\n __publicField(this, \"callbacks\", /* @__PURE__ */ new Map());\n }\n on(event, callback) {\n if (!this.callbacks.has(event)) {\n this.callbacks.set(event, /* @__PURE__ */ new Set());\n }\n this.callbacks.get(event).add(callback);\n }\n emit(event, ...args) {\n var _a2;\n const data = args[0];\n (_a2 = this.callbacks.get(event)) == null ? void 0 : _a2.forEach((callback) => callback(data));\n }\n off(event, callback) {\n var _a2;\n if (!callback) {\n this.callbacks.delete(event);\n } else {\n (_a2 = this.callbacks.get(event)) == null ? void 0 : _a2.delete(callback);\n }\n }\n allOff() {\n this.callbacks.clear();\n }\n}\nasync function getBytes(stream, onChunk) {\n const reader = stream.getReader();\n let result;\n while (!(result = await reader.read()).done) {\n onChunk(result.value);\n }\n}\nfunction getLines(onLine) {\n let buffer;\n let position;\n let fieldLength;\n let discardTrailingNewline = false;\n return function onChunk(arr) {\n if (buffer === void 0) {\n buffer = arr;\n position = 0;\n fieldLength = -1;\n } else {\n buffer = concat(buffer, arr);\n }\n const bufLength = buffer.length;\n let lineStart = 0;\n while (position < bufLength) {\n if (discardTrailingNewline) {\n if (buffer[position] === 10) {\n lineStart = ++position;\n }\n discardTrailingNewline = false;\n }\n let lineEnd = -1;\n for (; position < bufLength && lineEnd === -1; ++position) {\n switch (buffer[position]) {\n case 58:\n if (fieldLength === -1) {\n fieldLength = position - lineStart;\n }\n break;\n case 13:\n discardTrailingNewline = true;\n case 10:\n lineEnd = position;\n break;\n }\n }\n if (lineEnd === -1) {\n break;\n }\n onLine(buffer.subarray(lineStart, lineEnd), fieldLength);\n lineStart = position;\n fieldLength = -1;\n }\n if (lineStart === bufLength) {\n buffer = void 0;\n } else if (lineStart !== 0) {\n buffer = buffer.subarray(lineStart);\n position -= lineStart;\n }\n };\n}\nfunction getMessages(onId, onRetry, onMessage) {\n let message = newMessage();\n const decoder = new TextDecoder();\n return function onLine(line, fieldLength) {\n if (line.length === 0) {\n onMessage === null || onMessage === void 0 ? void 0 : onMessage(message);\n message = newMessage();\n } else if (fieldLength > 0) {\n const field = decoder.decode(line.subarray(0, fieldLength));\n const valueOffset = fieldLength + (line[fieldLength + 1] === 32 ? 2 : 1);\n const value = decoder.decode(line.subarray(valueOffset));\n switch (field) {\n case \"data\":\n message.data = message.data ? message.data + \"\\n\" + value : value;\n break;\n case \"event\":\n message.event = value;\n break;\n case \"id\":\n onId(message.id = value);\n break;\n case \"retry\":\n const retry = parseInt(value, 10);\n if (!isNaN(retry)) {\n onRetry(message.retry = retry);\n }\n break;\n }\n }\n };\n}\nfunction concat(a, b) {\n const res = new Uint8Array(a.length + b.length);\n res.set(a);\n res.set(b, a.length);\n return res;\n}\nfunction newMessage() {\n return {\n data: \"\",\n event: \"\",\n id: \"\",\n retry: void 0\n };\n}\nvar __rest = function(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nconst EventStreamContentType = \"text/event-stream\";\nconst DefaultRetryInterval = 1e3;\nconst LastEventId = \"last-event-id\";\nfunction fetchEventSource(input, _a2) {\n var { signal: inputSignal, headers: inputHeaders, onopen: inputOnOpen, onmessage, onclose, onerror, openWhenHidden, fetch: inputFetch } = _a2, rest = __rest(_a2, [\"signal\", \"headers\", \"onopen\", \"onmessage\", \"onclose\", \"onerror\", \"openWhenHidden\", \"fetch\"]);\n return new Promise((resolve, reject) => {\n const headers = Object.assign({}, inputHeaders);\n if (!headers.accept) {\n headers.accept = EventStreamContentType;\n }\n let curRequestController;\n function onVisibilityChange() {\n curRequestController.abort();\n if (!document.hidden) {\n create();\n }\n }\n if (!openWhenHidden) {\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n }\n let retryInterval = DefaultRetryInterval;\n let retryTimer = 0;\n function dispose() {\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n window.clearTimeout(retryTimer);\n curRequestController.abort();\n }\n inputSignal === null || inputSignal === void 0 ? void 0 : inputSignal.addEventListener(\"abort\", () => {\n dispose();\n resolve();\n });\n const fetch = inputFetch !== null && inputFetch !== void 0 ? inputFetch : window.fetch;\n const onopen = inputOnOpen !== null && inputOnOpen !== void 0 ? inputOnOpen : defaultOnOpen;\n async function create() {\n var _a3;\n curRequestController = new AbortController();\n try {\n const response = await fetch(input, Object.assign(Object.assign({}, rest), { headers, signal: curRequestController.signal }));\n await onopen(response);\n await getBytes(response.body, getLines(getMessages((id) => {\n if (id) {\n headers[LastEventId] = id;\n } else {\n delete headers[LastEventId];\n }\n }, (retry) => {\n retryInterval = retry;\n }, onmessage)));\n onclose === null || onclose === void 0 ? void 0 : onclose();\n dispose();\n resolve();\n } catch (err) {\n if (!curRequestController.signal.aborted) {\n try {\n const interval = (_a3 = onerror === null || onerror === void 0 ? void 0 : onerror(err)) !== null && _a3 !== void 0 ? _a3 : retryInterval;\n window.clearTimeout(retryTimer);\n retryTimer = window.setTimeout(create, interval);\n } catch (innerErr) {\n dispose();\n reject(innerErr);\n }\n }\n }\n }\n create();\n });\n}\nfunction defaultOnOpen(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(EventStreamContentType))) {\n throw new Error(`Expected content-type to be ${EventStreamContentType}, Actual: ${contentType}`);\n }\n}\nconst FRAME_SAFE_ERROR_KEY = \"__chatkit_error__\";\nclass HttpError extends Error {\n constructor(message, res, metadata) {\n super(message);\n __publicField(this, \"status\");\n __publicField(this, \"statusText\");\n __publicField(this, \"metadata\");\n this.name = \"HttpError\";\n this.statusText = res.statusText;\n this.status = res.status;\n this.metadata = metadata;\n }\n static fromPossibleFrameSafeError(error) {\n if (error instanceof HttpError) {\n return error;\n }\n if (error && typeof error === \"object\" && FRAME_SAFE_ERROR_KEY in error && error[FRAME_SAFE_ERROR_KEY] === \"HttpError\") {\n const safeError = error;\n const parsedError = new HttpError(\n safeError.message,\n {\n status: safeError.status,\n statusText: safeError.statusText\n },\n safeError.metadata\n );\n parsedError.stack = safeError.stack;\n return parsedError;\n }\n return null;\n }\n}\n_a = FRAME_SAFE_ERROR_KEY;\nconst _FrameSafeHttpError = class _FrameSafeHttpError {\n constructor(message, res, metadata) {\n __publicField(this, _a, \"HttpError\");\n __publicField(this, \"message\");\n __publicField(this, \"stack\");\n __publicField(this, \"status\");\n __publicField(this, \"statusText\");\n __publicField(this, \"metadata\");\n this.message = message;\n this.stack = new Error(message).stack;\n this.status = res.status;\n this.statusText = res.statusText;\n this.metadata = metadata;\n }\n static fromHttpError(error) {\n return new _FrameSafeHttpError(\n error.message,\n {\n status: error.status,\n statusText: error.statusText\n },\n error.metadata\n );\n }\n};\nlet FrameSafeHttpError = _FrameSafeHttpError;\nconst BASE_RETRY_DELAY_MS = 1e3;\nconst MAX_RETRY_DELAY_MS = 1e4;\nconst MAX_RETRY_ATTEMPTS = 5;\nconst nextDelay = (attempt, maxRetryDelay = MAX_RETRY_DELAY_MS, baseDelayMs = BASE_RETRY_DELAY_MS) => {\n const max = Math.min(maxRetryDelay, baseDelayMs * 2 ** attempt);\n return Math.floor(max * (0.5 + Math.random() * 0.5));\n};\nclass RetryableError extends Error {\n constructor(cause) {\n super();\n this.cause = cause;\n }\n}\nconst fetchEventSourceWithRetry = async (url, params) => {\n let retryAttempt = 0;\n const { onopen, ...restParams } = params;\n await fetchEventSource(url, {\n ...restParams,\n onopen: async (res) => {\n var _a2;\n onopen == null ? void 0 : onopen(res);\n if (res.ok && ((_a2 = res.headers.get(\"content-type\")) == null ? void 0 : _a2.startsWith(\"text/event-stream\"))) {\n retryAttempt = 0;\n return;\n }\n const httpError = new FrameSafeHttpError(`Streaming failed: ${res.statusText}`, res);\n if (res.status >= 400 && res.status < 500) {\n throw httpError;\n } else {\n throw new RetryableError(httpError);\n }\n },\n onerror: (error) => {\n if (error instanceof RetryableError) {\n if (retryAttempt >= MAX_RETRY_ATTEMPTS) {\n throw error.cause;\n }\n retryAttempt += 1;\n return nextDelay(retryAttempt);\n }\n throw error;\n }\n });\n};\nlet IntegrationError$1 = class IntegrationError extends Error {\n constructor(message) {\n super(message);\n __publicField(this, \"_name\");\n this.name = \"IntegrationError\";\n this._name = this.name;\n }\n static fromPossibleFrameSafeError(error) {\n if (error && typeof error === \"object\" && FRAME_SAFE_ERROR_KEY in error && error[FRAME_SAFE_ERROR_KEY] === \"IntegrationError\") {\n const safeError = error;\n const parsedError = new IntegrationError(safeError.message);\n parsedError.stack = safeError.stack;\n return parsedError;\n }\n return null;\n }\n};\n_b = FRAME_SAFE_ERROR_KEY;\nclass FrameSafeIntegrationError {\n constructor(message) {\n __publicField(this, _b, \"IntegrationError\");\n __publicField(this, \"message\");\n __publicField(this, \"stack\");\n this.message = message;\n this.stack = new Error(message).stack;\n }\n}\nclass BaseMessenger {\n constructor({\n handlers,\n target,\n targetOrigin,\n fetch = window.fetch\n }) {\n __publicField(this, \"targetOrigin\");\n __publicField(this, \"target\");\n __publicField(this, \"commandHandlers\");\n __publicField(this, \"_fetch\");\n __publicField(this, \"emitter\", new EventEmitter());\n __publicField(this, \"handlers\", /* @__PURE__ */ new Map());\n __publicField(this, \"fetchEventSourceHandlers\", /* @__PURE__ */ new Map());\n __publicField(this, \"abortControllers\", /* @__PURE__ */ new Map());\n __publicField(this, \"commands\", new Proxy(\n {},\n {\n get: (_, command) => {\n return (data, transfer) => {\n return new Promise((resolve, reject) => {\n const nonce = crypto.randomUUID();\n this.handlers.set(nonce, { resolve, reject, stack: new Error().stack || \"\" });\n this.sendMessage(\n {\n type: \"command\",\n nonce,\n command: `on${command.charAt(0).toUpperCase()}${command.slice(1)}`,\n data\n },\n transfer\n );\n });\n };\n }\n }\n ));\n __publicField(this, \"handleMessage\", async (event) => {\n var _a2, _b2, _c, _d;\n console.log(\"Received message\", event.data, event.origin, this.targetOrigin, event.source, this.target());\n if (!event.data || event.data.__xpaiChatKit !== true || event.origin !== this.targetOrigin || event.source !== this.target()) {\n return;\n }\n const data = event.data;\n switch (data.type) {\n case \"event\": {\n this.emitter.emit(data.event, data.data);\n break;\n }\n case \"fetch\": {\n try {\n if (data.formData) {\n const formData = new FormData();\n for (const [key, value] of Object.entries(data.formData)) {\n formData.append(key, value);\n }\n data.params.body = formData;\n }\n const controller = new AbortController();\n this.abortControllers.set(data.nonce, controller);\n data.params.signal = controller.signal;\n const res = await this._fetch(data.url, data.params);\n if (!res.ok) {\n const message = await res.json().then((json2) => json2.message || res.statusText).catch(() => res.statusText);\n throw new FrameSafeHttpError(message, res);\n }\n const json = await res.json().catch(() => ({}));\n this.sendMessage({\n type: \"response\",\n response: json,\n nonce: data.nonce\n });\n } catch (error) {\n this.sendMessage({\n type: \"response\",\n error,\n nonce: data.nonce\n });\n }\n break;\n }\n case \"fetchEventSource\": {\n try {\n const controller = new AbortController();\n this.abortControllers.set(data.nonce, controller);\n await fetchEventSourceWithRetry(data.url, {\n ...data.params,\n signal: controller.signal,\n fetch: this._fetch,\n onmessage: (message) => {\n this.sendMessage({\n type: \"fetchEventSourceMessage\",\n message,\n nonce: data.nonce\n });\n }\n });\n this.sendMessage({\n type: \"response\",\n response: void 0,\n nonce: data.nonce\n });\n } catch (error) {\n this.sendMessage({\n type: \"response\",\n error,\n nonce: data.nonce\n });\n }\n break;\n }\n case \"command\": {\n console.log(\"Received command\", data.command, data.data);\n if (!this.canReceiveCommand(data.command)) {\n this.sendMessage({\n type: \"response\",\n error: new FrameSafeIntegrationError(`Command ${data.command} not supported`),\n nonce: data.nonce\n });\n return;\n }\n try {\n const response = await ((_b2 = (_a2 = this.commandHandlers)[data.command]) == null ? void 0 : _b2.call(_a2, data.data));\n this.sendMessage({\n type: \"response\",\n response,\n nonce: data.nonce\n });\n } catch (error) {\n this.sendMessage({\n type: \"response\",\n error,\n nonce: data.nonce\n });\n }\n break;\n }\n case \"response\": {\n const handler = this.handlers.get(data.nonce);\n if (!handler) {\n console.error(\"No handler found for nonce\", data.nonce);\n return;\n }\n if (data.error) {\n const integrationError = IntegrationError$1.fromPossibleFrameSafeError(data.error);\n const httpError = HttpError.fromPossibleFrameSafeError(data.error);\n if (integrationError) {\n integrationError.stack = handler.stack;\n handler.reject(integrationError);\n } else if (httpError) {\n handler.reject(httpError);\n } else {\n handler.reject(data.error);\n }\n } else {\n handler.resolve(data.response);\n }\n this.handlers.delete(data.nonce);\n break;\n }\n case \"fetchEventSourceMessage\": {\n const handler = this.fetchEventSourceHandlers.get(data.nonce);\n if (!handler) {\n console.error(\"No handler found for nonce\", data.nonce);\n return;\n }\n (_d = (_c = this.fetchEventSourceHandlers.get(data.nonce)) == null ? void 0 : _c.onmessage) == null ? void 0 : _d.call(_c, data.message);\n break;\n }\n case \"abortSignal\": {\n const controller = this.abortControllers.get(data.nonce);\n if (controller) {\n controller.abort(data.reason);\n this.abortControllers.delete(data.nonce);\n }\n break;\n }\n }\n });\n this.commandHandlers = handlers;\n this.target = target;\n this.targetOrigin = targetOrigin;\n this._fetch = (...args) => fetch(...args);\n }\n setTargetOrigin(targetOrigin) {\n this.targetOrigin = targetOrigin;\n }\n sendMessage(data, transfer) {\n var _a2;\n const message = {\n __xpaiChatKit: true,\n ...data\n };\n (_a2 = this.target()) == null ? void 0 : _a2.postMessage(message, this.targetOrigin, transfer);\n }\n connect() {\n window.addEventListener(\"message\", this.handleMessage);\n }\n disconnect() {\n window.removeEventListener(\"message\", this.handleMessage);\n }\n fetch(url, params) {\n return new Promise((resolve, reject) => {\n const nonce = crypto.randomUUID();\n this.handlers.set(nonce, { resolve, reject, stack: new Error().stack || \"\" });\n let formData;\n if (params.body instanceof FormData) {\n formData = {};\n for (const [key, value] of params.body.entries()) {\n formData[key] = value;\n }\n params.body = void 0;\n }\n if (params.signal) {\n params.signal.addEventListener(\"abort\", () => {\n var _a2;\n this.sendMessage({\n type: \"abortSignal\",\n nonce,\n reason: (_a2 = params.signal) == null ? void 0 : _a2.reason\n });\n });\n params.signal = void 0;\n }\n this.sendMessage({ type: \"fetch\", nonce, params, formData, url });\n });\n }\n // Supporting onopen would require a good way for us to serialize the Response object\n // across the iframe boundary, which is not trivial and also not really necessary.\n fetchEventSource(url, params) {\n return new Promise((resolve, reject) => {\n const { onmessage, signal, ...rest } = params;\n const nonce = crypto.randomUUID();\n this.handlers.set(nonce, { resolve, reject, stack: new Error().stack || \"\" });\n this.fetchEventSourceHandlers.set(nonce, {\n onmessage\n });\n if (signal) {\n signal.addEventListener(\"abort\", () => {\n this.sendMessage({\n type: \"abortSignal\",\n nonce,\n reason: signal.reason\n });\n });\n }\n this.sendMessage({ type: \"fetchEventSource\", nonce, params: rest, url });\n });\n }\n emit(...[event, data, transfer]) {\n this.sendMessage(\n {\n type: \"event\",\n event,\n data\n },\n transfer\n );\n }\n on(...[event, callback]) {\n this.emitter.on(event, callback);\n }\n destroy() {\n window.removeEventListener(\"message\", this.handleMessage);\n this.emitter.allOff();\n this.handlers.clear();\n }\n}\nconst toUrlBase64 = (bin) => btoa(bin).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\nconst fromUrlBase64 = (b64) => atob(b64.replace(/-/g, \"+\").replace(/_/g, \"/\"));\nconst encodeBase64 = (value) => {\n if (value === void 0) {\n throw new TypeError(\n \"encodeBase64: `undefined` cannot be encoded to valid JSON. Pass null instead.\"\n );\n }\n const json = JSON.stringify(value);\n const bytes = new TextEncoder().encode(json);\n let bin = \"\";\n for (const b of bytes) bin += String.fromCharCode(b);\n return toUrlBase64(bin);\n};\nconst decodeBase64 = (b64) => {\n const bin = fromUrlBase64(b64);\n const bytes = Uint8Array.from(bin, (c) => c.charCodeAt(0));\n const json = new TextDecoder().decode(bytes);\n return JSON.parse(json);\n};\nclass IntegrationError2 extends Error {\n}\nfunction fromPossibleFrameSafeError(err) {\n return err.message;\n}\nconst BASE_CAPABILITY_ALLOWLIST = [\n // commands\n \"command.setOptions\",\n \"command.sendUserMessage\",\n \"command.setComposerValue\",\n \"command.setThreadId\",\n \"command.focusComposer\",\n \"command.fetchUpdates\",\n \"command.sendCustomAction\",\n \"command.showHistory\",\n \"command.hideHistory\",\n // events\n \"event.ready\",\n \"event.error\",\n \"event.log\",\n \"event.response.start\",\n \"event.response.end\",\n \"event.response.stop\",\n \"event.thread.change\",\n \"event.tool.change\",\n \"event.thread.load.start\",\n \"event.thread.load.end\",\n \"event.deeplink\",\n \"event.effect\",\n // errors\n \"error.StreamError\",\n \"error.StreamEventParsingError\",\n \"error.WidgetItemError\",\n \"error.InitialThreadLoadError\",\n \"error.FileAttachmentError\",\n \"error.HistoryViewError\",\n \"error.FatalAppError\",\n \"error.IntegrationError\",\n \"error.EntitySearchError\",\n \"error.DomainVerificationRequestError\",\n // backend\n \"backend.threads.get_by_id\",\n \"backend.threads.list\",\n \"backend.threads.update\",\n \"backend.threads.delete\",\n \"backend.threads.create\",\n \"backend.threads.add_user_message\",\n \"backend.threads.add_client_tool_output\",\n \"backend.threads.retry_after_item\",\n \"backend.threads.custom_action\",\n \"backend.attachments.create\",\n \"backend.attachments.get_preview\",\n \"backend.attachments.delete\",\n \"backend.items.list\",\n \"backend.items.feedback\",\n // thread item types\n \"thread.item.generated_image\",\n \"thread.item.user_message\",\n \"thread.item.assistant_message\",\n \"thread.item.client_tool_call\",\n \"thread.item.widget\",\n \"thread.item.task\",\n \"thread.item.workflow\",\n \"thread.item.end_of_turn\",\n \"thread.item.image_generation\",\n // widgets\n \"widget.Basic\",\n \"widget.Card\",\n \"widget.ListView\",\n \"widget.ListViewItem\",\n \"widget.Badge\",\n \"widget.Box\",\n \"widget.Row\",\n \"widget.Col\",\n \"widget.Button\",\n \"widget.Caption\",\n \"widget.Chart\",\n \"widget.Checkbox\",\n \"widget.DatePicker\",\n \"widget.Divider\",\n \"widget.Form\",\n \"widget.Icon\",\n \"widget.Image\",\n \"widget.Input\",\n \"widget.Label\",\n \"widget.Markdown\",\n \"widget.RadioGroup\",\n \"widget.Select\",\n \"widget.Spacer\",\n \"widget.Text\",\n \"widget.Textarea\",\n \"widget.Title\",\n \"widget.Transition\"\n];\nconst BASE_CAPABILITY_DENYLIST = [\n // --- commands\n \"command.shareThread\",\n \"command.setTrainingOptOut\",\n // --- events\n \"event.thread.restore\",\n \"event.message.share\",\n \"event.image.download\",\n \"event.history.open\",\n \"event.history.close\",\n \"event.log.chatgpt\",\n // --- errors\n // These errors considered internal and are not exposed to the user by default.\n \"error.HttpError\",\n \"error.NetworkError\",\n \"error.UnhandledError\",\n \"error.UnhandledPromiseRejectionError\",\n \"error.StreamEventHandlingError\",\n \"error.StreamStopError\",\n \"error.ThreadRenderingError\",\n \"error.IntlError\",\n \"error.AppError\",\n // --- backend\n \"backend.threads.stop\",\n \"backend.threads.share\",\n \"backend.threads.create_from_shared\",\n \"backend.threads.init\",\n \"backend.attachments.process\",\n // widgets\n \"widget.CardCarousel\",\n \"widget.Favicon\",\n \"widget.CardLinkItem\",\n \"widget.Map\"\n];\nconst PROFILE_TO_RULES = {\n \"chatkit\": {\n allow: [...BASE_CAPABILITY_ALLOWLIST, \"thread.item.image_generation\"],\n deny: BASE_CAPABILITY_DENYLIST\n }\n};\nconst getCapabilities = (profile) => {\n const rules = PROFILE_TO_RULES[profile];\n const effective = new Set(rules.allow);\n for (const capability of rules.deny ?? []) {\n effective.delete(capability);\n }\n const commands = /* @__PURE__ */ new Set();\n const events = /* @__PURE__ */ new Set();\n const backend = /* @__PURE__ */ new Set();\n const threadItems = /* @__PURE__ */ new Set();\n const errors = /* @__PURE__ */ new Set();\n const widgets = /* @__PURE__ */ new Set();\n for (const capability of effective) {\n if (capability.startsWith(\"command.\")) {\n commands.add(capability.slice(\"command.\".length));\n continue;\n }\n if (capability.startsWith(\"event.\")) {\n events.add(capability.slice(\"event.\".length));\n continue;\n }\n if (capability.startsWith(\"backend.\")) {\n backend.add(capability.slice(\"backend.\".length));\n continue;\n }\n if (capability.startsWith(\"thread.item.\")) {\n threadItems.add(capability.slice(\"thread.item.\".length));\n }\n if (capability.startsWith(\"error.\")) {\n errors.add(capability.slice(\"error.\".length));\n continue;\n }\n if (capability.startsWith(\"widget.\")) {\n widgets.add(capability.slice(\"widget.\".length));\n continue;\n }\n }\n return { commands, events, backend, threadItems, errors, widgets };\n};\nexport {\n BASE_CAPABILITY_ALLOWLIST,\n BASE_CAPABILITY_DENYLIST,\n BaseMessenger,\n IntegrationError2 as IntegrationError,\n PROFILE_TO_RULES,\n decodeBase64,\n encodeBase64,\n fromPossibleFrameSafeError,\n getCapabilities\n};\n//# sourceMappingURL=index.js.map\n","import { BaseMessenger } from \"@xpert-ai/chatkit-web-shared\"\nimport { InnerCommands, InnerEvents, OuterCommands, OuterEvents } from \"@xpert-ai/chatkit-web-shared\"\n\nexport class ChatFrameMessenger extends BaseMessenger<\n OuterCommands,\n InnerCommands,\n OuterEvents,\n InnerEvents\n> {\n // Messenger running in outer can always handle commands coming from inner\n canReceiveCommand(_: string) {\n return true\n }\n}\n","// ChatKitElement.ts\n\nimport type { RemoveMethods } from \"@xpert-ai/chatkit-web-shared\"\n\nexport const removeMethods = <T>(obj: T, seen = new WeakSet<object>()): RemoveMethods<T> => {\n if (typeof obj === \"function\") return \"[ChatKitMethod]\" as RemoveMethods<T>\n if (typeof obj !== \"object\" || obj === null) return obj as RemoveMethods<T>\n if (seen.has(obj)) return obj as RemoveMethods<T>\n seen.add(obj)\n\n if (Array.isArray(obj)) {\n return obj.map((c) => removeMethods(c, seen)) as RemoveMethods<T>\n }\n\n const result: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(obj)) {\n if (typeof value !== \"function\") {\n result[key] = removeMethods(value as unknown, seen)\n } else {\n result[key] = \"[ChatKitMethod]\"\n }\n }\n return result as RemoveMethods<T>\n}\n\nexport const debounce = (fn: () => void, delay = 150) => {\n let timer: ReturnType<typeof setTimeout>\n return () => {\n clearTimeout(timer)\n timer = setTimeout(fn, delay)\n }\n}\n","import { encodeBase64 } from \"@xpert-ai/chatkit-web-shared\"\n\nimport { ChatFrameMessenger } from \"./ChatFrameMessenger\"\nimport { Card, ChatKitOptions, Entity, ListView } from \"@xpert-ai/chatkit-types\"\nimport { removeMethods } from \"./helpers\"\n\nimport type {\n Attachment,\n ChatKitFrameParams,\n ChatKitProfile,\n ChatKitInnerOptions,\n ChatKitReq,\n UserMessageContent,\n ToolChoice,\n} from \"@xpert-ai/chatkit-web-shared\"\nimport { getCapabilities } from \"@xpert-ai/chatkit-web-shared\"\nimport type { Capabilities, Capability } from \"@xpert-ai/chatkit-web-shared\"\nimport { IntegrationError, fromPossibleFrameSafeError } from \"@xpert-ai/chatkit-web-shared\"\n\n// Compute inner options by removing methods (to make options serializable)\nfunction getInnerOptions(options: ChatKitOptions): ChatKitInnerOptions {\n return removeMethods(options) as ChatKitInnerOptions\n}\n\n// Decorator to assert that a command is available for the current capabilities profile\nexport function requireCommandCapability<\n This extends ChatKitElementBase<unknown>,\n Args extends unknown[],\n Return,\n>(\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n) {\n const command = String(context.name)\n return function (this: This, ...args: Args) {\n if (!this.capabilities.commands.has(command as Capability.Command)) {\n throw new IntegrationError(\n `ChatKit command \"${String(command)}\" is not available for the \"${this.profile}\" profile.`,\n )\n }\n return value.apply(this, args)\n }\n}\n\ninterface ChatKitBaseElementEventMap {\n \"chatkit.ready\": CustomEvent<void>\n \"chatkit.error\": CustomEvent<{ error: Error }>\n \"chatkit.response.start\": CustomEvent<void>\n \"chatkit.response.end\": CustomEvent<void>\n \"chatkit.thread.change\": CustomEvent<{ threadId: string | null }>\n \"chatkit.log\": CustomEvent<{ name: string; data?: Record<string, unknown> }>\n \"chatkit.deeplink\": CustomEvent<{ name: string; data?: Record<string, unknown> }>\n \"chatkit.widget.action\": CustomEvent<{ action: string; payload?: Record<string, unknown> }>\n}\n\nexport abstract class ChatKitElementBase<TRawOptions> extends HTMLElement {\n protected profile: ChatKitProfile\n protected capabilities: Capabilities\n protected abstract sanitizeOptions(options: TRawOptions): ChatKitOptions\n\n #opts?: ChatKitOptions\n #frameUrl?: string\n #frame?: HTMLIFrameElement\n #wrapper?: HTMLDivElement\n\n #shadow = this.attachShadow({ mode: \"open\" })\n\n #resolveLoaded?: () => void\n #loaded = new Promise<void>((resolve) => {\n this.#resolveLoaded = resolve\n })\n\n #messenger = new ChatFrameMessenger({\n fetch: ((...args) => {\n const customFetch = this.#opts?.api && \"fetch\" in this.#opts.api && this.#opts.api.fetch\n return customFetch ? customFetch(...args) : fetch(...args)\n }) as typeof fetch,\n target: () => this.#frame?.contentWindow ?? null,\n targetOrigin: window.location.origin,\n handlers: {\n onFileInputClick: ({ inputAttributes }: { inputAttributes: Record<string, string> }) => {\n return new Promise<File[]>((resolve) => {\n const input = document.createElement(\"input\")\n for (const [key, value] of Object.entries(inputAttributes)) {\n input.setAttribute(key, String(value))\n }\n const respond = () => {\n resolve(Array.from(input.files || []))\n if (this.#shadow.contains(input)) {\n this.#shadow.removeChild(input)\n }\n }\n input.addEventListener(\"cancel\", respond)\n input.addEventListener(\"change\", respond)\n this.#shadow.appendChild(input)\n input.click()\n })\n },\n onClientToolCall: async ({\n name,\n params,\n id,\n tool_call_id,\n }: {\n name: string\n params: Record<string, unknown>\n id?: string\n tool_call_id?: string\n }) => {\n const onClientTool = this.#opts?.onClientTool\n if (!onClientTool) {\n this.#emitAndThrow(\n new IntegrationError(\n `No handler for client tool calls. You'll need to add onClientTool to your ChatKit options.`,\n ),\n )\n }\n return onClientTool({ name, params, id, tool_call_id })\n },\n onWidgetAction: async ({ action, widgetItem }: { action: {\n type: string;\n payload?: Record<string, unknown> | undefined;\n }; widgetItem: {\n id: string;\n widget: Card | ListView;\n } }) => {\n const onAction = this.#opts?.widgets?.onAction\n if (!onAction) {\n this.#emitAndThrow(\n new IntegrationError(\n `No handler for widget actions. You'll need to add widgets.onAction to your ChatKit options.`,\n ),\n )\n }\n return onAction(action, widgetItem)\n },\n onEntitySearch: async ({ query }: { query: string }) => this.#opts?.entities?.onTagSearch?.(query) ?? [],\n onEntityClick: async ({ entity }: { entity: Entity }) => this.#opts?.entities?.onClick?.(entity),\n onEntityPreview: async ({ entity }: { entity: Entity }) =>\n this.#opts?.entities?.onRequestPreview?.(entity) ?? { preview: null },\n onGetClientSecret: async (currentClientSecret: string | null) => {\n if (\n !this.#opts ||\n !(\"getClientSecret\" in this.#opts.api) ||\n !this.#opts.api.getClientSecret\n ) {\n // ~Impossible since the existence of this handler is the only way\n // that we end up creating the kind of ApiClient that would call this handler in the first place.\n this.#emitAndThrow(\n new IntegrationError(\n \"Could not refresh the session because ChatKitOptions.api.getClientSecret is not configured.\",\n ),\n )\n }\n\n return this.#opts.api.getClientSecret(currentClientSecret ?? null)\n },\n onAddMetadataToRequest: ({\n op,\n params,\n }: {\n op: ChatKitReq[\"type\"]\n params: Record<string, unknown>\n }): void => {\n throw new IntegrationError('ChatKit: onAddMetadataToRequest is unimplemented.')\n // if (!this.#opts) return null\n // if (!(\"addMetadataToRequest\" in this.#opts.api) || !this.#opts.api.addMetadataToRequest)\n // return null\n\n // const result = this.#opts.api.addMetadataToRequest({ op, params })\n // if (!result) return null\n\n // return result.then((value) => {\n // if (!value) return null\n // if (typeof value !== \"object\" || Array.isArray(value)) {\n // throw new IntegrationError(\n // \"ChatKit: addMetadataToRequest must return an object or null.\",\n // )\n // }\n // return value as Record<string, unknown>\n // })\n },\n },\n })\n\n constructor({ profile }: { profile: ChatKitProfile }) {\n super()\n this.profile = profile\n this.capabilities = getCapabilities(profile)\n }\n\n protected setProfile(profile: ChatKitProfile) {\n this.profile = profile\n this.capabilities = getCapabilities(profile)\n }\n\n #emitAndThrow(error: Error): never {\n this.dispatchEvent(new CustomEvent(\"chatkit.error\", { detail: { error } }))\n throw error\n }\n\n #setOptionsDataAttributes(options: ChatKitOptions) {\n this.dataset.colorScheme =\n typeof options.theme === \"string\" ? options.theme : options.theme?.colorScheme ?? \"light\"\n }\n\n #getFrameUrl() {\n if (!this.#frameUrl) {\n throw new IntegrationError(\n \"ChatKit frameUrl is not configured. Provide it via setOptions({ frameUrl }) before mounting.\",\n )\n }\n return this.#frameUrl\n }\n\n #setFrameUrl(frameUrl: string) {\n if (this.#initialized && this.#frameUrl && this.#frameUrl !== frameUrl) {\n throw new IntegrationError(\n \"ChatKit frameUrl cannot be changed after initialization. Create a new element to use a different URL.\",\n )\n }\n this.#frameUrl = frameUrl\n }\n\n #consumeFrameUrl(options: ChatKitOptions) {\n if (!(\"frameUrl\" in options)) return\n const frameUrl = options.frameUrl\n delete options.frameUrl\n if (frameUrl == null) return\n if (typeof frameUrl !== \"string\" || frameUrl.trim() === \"\") {\n throw new IntegrationError(\"ChatKit frameUrl must be a non-empty string.\")\n }\n this.#setFrameUrl(frameUrl)\n }\n\n #handleFrameLoad = () => {\n this.dataset.loaded = \"true\"\n this.dispatchEvent(new CustomEvent(\"chatkit.ready\", { bubbles: true, composed: true }))\n this.#resolveLoaded?.()\n }\n\n connectedCallback() {\n const style = document.createElement(\"style\")\n style.textContent = `\n :host {\n display: block;\n position: relative;\n height: 100%;\n width: 100%;\n }\n .ck-iframe {\n border: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n color-scheme: light only;\n }\n .ck-wrapper {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n opacity: 0;\n }\n :host([data-color-scheme=\"dark\"]) .ck-iframe {\n color-scheme: dark only;\n }\n :host([data-loaded=\"true\"]) .ck-wrapper {\n opacity: 1;\n }\n `\n\n const frame = document.createElement(\"iframe\")\n frame.className = \"ck-iframe\"\n frame.name = \"chatkit\"\n frame.role = \"presentation\"\n frame.tabIndex = 0\n frame.setAttribute(\"allowtransparency\", \"true\")\n frame.setAttribute(\"frameborder\", \"0\")\n frame.setAttribute(\"scrolling\", \"no\")\n frame.setAttribute(\"allow\", \"clipboard-read; clipboard-write\")\n this.#frame = frame\n\n // not sure we still need this..\n const wrapper = document.createElement(\"div\")\n wrapper.className = \"ck-wrapper\"\n wrapper.appendChild(frame)\n this.#wrapper = wrapper\n\n this.#shadow.append(style)\n\n if (import.meta.env.DEV) {\n this.#messenger.on(\"development_only_force_page_reload\", () => {\n window.location.reload()\n })\n }\n this.#messenger.on(\"left_header_icon_click\", () => {\n this.#opts?.header?.leftAction?.onClick()\n })\n this.#messenger.on(\"right_header_icon_click\", () => {\n this.#opts?.header?.rightAction?.onClick()\n })\n this.#messenger.on(\"public_event\", ([event, data]) => {\n if (!this.capabilities.events.has(event)) return\n if (event === \"error\" && \"error\" in data) {\n // Custom error handling to convert frame-safe errors back into real Errors\n const error = fromPossibleFrameSafeError(data.error)\n this.dispatchEvent(new CustomEvent(\"chatkit.error\", { detail: { error } }))\n // IntegrationErrors should throw\n if (error instanceof IntegrationError) {\n throw error\n }\n return\n }\n\n this.dispatchEvent(new CustomEvent(`chatkit.${event}`, { detail: data }))\n })\n this.#messenger.on(\"unmount\", () => {\n // Remove the iframe and wrapper from the shadow DOM if they exist\n if (this.#wrapper && this.#shadow.contains(this.#wrapper)) {\n this.#shadow.removeChild(this.#wrapper)\n this.#wrapper = undefined\n this.#frame = undefined\n }\n })\n this.#messenger.on(\n \"capabilities_profile_change\",\n ({ profile }: { profile: ChatKitProfile }) => {\n this.setProfile(profile)\n },\n )\n\n frame.addEventListener(\"load\", this.#handleFrameLoad, { once: true })\n\n try {\n this.#maybeInit()\n } catch (error) {\n console.error(error)\n this.#emitAndThrow(\n error instanceof Error ? error : new IntegrationError(\"Failed to initialize ChatKit\"),\n )\n }\n }\n\n #initialized = false\n #maybeInit() {\n if (this.#initialized || !this.#frame || !this.#opts) {\n return\n }\n this.#initialized = true\n this.#setOptionsDataAttributes(this.#opts)\n const frameURL = new URL(this.#getFrameUrl(), window.location.origin)\n this.#messenger.setTargetOrigin(frameURL.origin)\n frameURL.hash = encodeBase64({\n options: getInnerOptions(this.#opts),\n referrer: window.location.origin,\n profile: this.profile,\n } satisfies ChatKitFrameParams)\n this.#messenger.connect()\n this.#frame.src = frameURL.toString()\n // Impossible to not exist\n if (this.#wrapper) {\n this.#shadow.append(this.#wrapper)\n }\n }\n\n disconnectedCallback() {\n this.#frame?.removeEventListener(\"load\", this.#handleFrameLoad)\n this.#messenger.disconnect()\n }\n\n protected applySanitizedOptions(newOptions: ChatKitOptions) {\n this.#opts = newOptions\n if (this.#initialized) {\n this.#setOptionsDataAttributes(this.#opts)\n this.#loaded.then(() => {\n this.#messenger.commands.setOptions(getInnerOptions(newOptions))\n })\n } else {\n this.#maybeInit()\n }\n }\n\n setOptions(newOptions: TRawOptions) {\n try {\n const sanitized = this.sanitizeOptions(newOptions)\n this.#consumeFrameUrl(sanitized)\n this.applySanitizedOptions(sanitized)\n } catch (error) {\n this.#emitAndThrow(\n error instanceof Error ? error : new IntegrationError(\"Failed to parse options\"),\n )\n }\n }\n\n @requireCommandCapability\n async focusComposer() {\n await this.#loaded\n this.#frame?.focus()\n await this.#messenger?.commands.focusComposer()\n }\n\n @requireCommandCapability\n async fetchUpdates() {\n await this.#loaded\n await this.#messenger?.commands.fetchUpdates()\n }\n\n @requireCommandCapability\n async sendUserMessage(params: {\n text?: string\n content?: UserMessageContent[]\n reply?: string\n attachments?: Attachment[]\n toolChoice?: ToolChoice\n model?: string\n newThread?: boolean\n }) {\n await this.#loaded\n await this.#messenger?.commands.sendUserMessage(params)\n }\n\n @requireCommandCapability\n async setComposerValue(params: {\n text?: string\n content?: UserMessageContent[]\n reply?: string\n attachments?: Attachment[]\n files?: File[]\n selectedToolId?: string\n selectedModelId?: string\n }) {\n await this.#loaded\n await this.#messenger?.commands.setComposerValue(params)\n }\n\n @requireCommandCapability\n async setThreadId(threadId: string | null) {\n await this.#loaded\n await this.#messenger?.commands.setThreadId({ threadId })\n }\n\n @requireCommandCapability\n async shareThread() {\n await this.#loaded\n return this.#messenger?.commands.shareThread()\n }\n\n @requireCommandCapability\n async sendCustomAction(\n action: { type: string; payload?: Record<string, unknown> },\n itemId?: string,\n ) {\n await this.#loaded\n return this.#messenger?.commands.sendCustomAction({ action, itemId })\n }\n\n @requireCommandCapability\n async showHistory() {\n await this.#loaded\n return this.#messenger?.commands.showHistory()\n }\n\n @requireCommandCapability\n async hideHistory() {\n await this.#loaded\n return this.#messenger?.commands.hideHistory()\n }\n\n @requireCommandCapability\n async setTrainingOptOut(value: boolean) {\n await this.#loaded\n return this.#messenger?.commands.setTrainingOptOut({ value })\n }\n}\n\nexport interface ChatKitBaseElement<TRawOptions, TSanitizedOptions extends ChatKitOptions>\n extends HTMLElement {\n addEventListener<K extends keyof ChatKitBaseElementEventMap>(\n type: K,\n listener: (\n this: ChatKitBaseElement<TRawOptions, TSanitizedOptions>,\n ev: ChatKitBaseElementEventMap[K],\n ) => void,\n options?: boolean | AddEventListenerOptions,\n ): void\n\n removeEventListener<K extends keyof ChatKitBaseElementEventMap>(\n type: K,\n listener: (\n this: ChatKitBaseElement<TRawOptions, TSanitizedOptions>,\n ev: ChatKitBaseElementEventMap[K],\n ) => void,\n options?: boolean | EventListenerOptions,\n ): void\n}\n","import { ChatKitElementBase } from \"./ChatKitElementBase\"\n\nimport type { ChatKitOptions } from \"@xpert-ai/chatkit-types\"\n\nexport class ChatKitElement extends ChatKitElementBase<ChatKitOptions> {\n constructor() {\n super({ profile: \"chatkit\" })\n }\n\n override sanitizeOptions(options: ChatKitOptions) {\n // TODO: Sanitize unknown options instead of assuming it is of type ChatKitOptions.\n // The below deletions are expedient for now to prevent ChatGPTShell-only options from\n // being passed to ChatKit.\n delete options.threadItemActions?.share\n return options\n }\n}\n\nexport function registerChatKitElement(tag = \"xpertai-chatkit\") {\n // SSR-safe guard\n if (!(\"customElements\" in globalThis)) return\n\n if (!customElements.get(tag)) {\n customElements.define(tag, ChatKitElement)\n }\n}\n","import { registerChatKitElement } from './ChatKitElement'\n\nregisterChatKitElement()"],"names":["_a","__defProp","__defNormalProp","_a2","fetch","_FrameSafeHttpError","IntegrationError","_b"],"mappings":"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"}
|