@cimulate/copilot-widget 1.7.9 → 1.8.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.
@@ -0,0 +1 @@
1
+ .cim-widget-icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;background-color:transparent;border:1px solid transparent;border-radius:4px;padding:0;cursor:pointer;color:#333;font-size:18px;svg{padding:6px;height:100%;width:100%}&:hover{background-color:#f0f0f0}&:disabled,&[disabled]{opacity:.6;background-color:#f9f9f9;cursor:not-allowed}}.cim-widget-icon-image{object-fit:contain;padding:6px;width:.875em;height:.875em}.cim-widget-minimized-container{--base-color: var(--cim-widget-primary-color, #3182ce);--base-color-darken: color-mix(in srgb, var(--base-color), black 20%);position:fixed;bottom:1rem;right:1rem;display:flex;align-items:center;justify-content:center;.cim-widget-minimized-button{height:3rem;width:3rem;border-radius:2rem;padding:.5rem;color:#fff;box-shadow:0 4px 6px #00000040,0 1px 3px #00000050;background-color:var(--base-color);transition:background-color .1s ease-in-out;&:active{transform:translateY(1px);box-shadow:0 4px 6px #00000020,0 1px 3px #00000030}&:hover{background-color:var(--base-color-darken)}}.cim-widget-minimized-icon-img{object-fit:contain;width:stretch;height:stretch}}.cim-widget-button{--base-color: var(--cim-widget-primary-color, #3182ce);padding:.25rem .5rem;min-height:32px;background-color:var(--base-color);border-radius:4px;border-color:var(--base-color);border-style:solid;color:#fff;font-family:var(--cim-widget-font-family, inherit);cursor:pointer;&:disabled,&[disabled]{cursor:not-allowed;opacity:.6}&:hover{background-color:color-mix(in srgb,var(--base-color),black 20%);border-color:color-mix(in srgb,var(--base-color),black 20%)}&:focus-visible{outline:2px solid color-mix(in srgb,var(--base-color),white 25%)}}.cim-widget-disclaimer{display:flex;flex-direction:column;padding:0 .5rem .5rem;gap:.5rem}.cim-widget-disclaimer-text{font-size:.75rem;color:#00000090;margin:0}.cim-widget-disclaimer-image{object-fit:contain;height:100%;width:100%}.cim-widget-search-bar-wrapper{display:flex;flex-direction:column;padding:.5rem;gap:.5rem;&.with-attachments{border-top:1px solid var(--cim-widget-border-color)}}.cim-widget-search-bar{display:flex;align-items:center;gap:4px;font-family:var(--cim-widget-font-family)}.cim-widget-image-file-preview{display:inline-flex;align-items:center;gap:8px;padding-left:.5rem}.cim-widget-image-preview{object-fit:contain;max-height:2.5rem;&.modal{max-height:3.5rem}}.cim-widget-image-file-name{width:100%;font-size:.8rem;color:#00000090;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-clamp:3;overflow:hidden}.cim-widget-close-button.clear-attachment{padding:.15rem;color:#00000090}.cim-widget-search-input{width:100%;height:100%;min-height:2rem;padding:0 8px;background-color:transparent;border:1px solid #00000040;border-radius:4px}.cim-widget-connection-status-icon{display:inline-block;min-width:8px;width:.6rem;height:.5rem;border-radius:50%;margin:.35rem;vertical-align:middle;&.connected{background-color:#00d60080}&.disconnected{background-color:#c9c7c7}}.cim-widget-image-upload-button{display:inline-flex;height:100%;border-radius:4px;cursor:pointer;&:hover{background-color:#f0f0f0}&.disabled{opacity:.6;background-color:#f9f9f9;cursor:not-allowed}}.cim-widget-image-upload-label{display:inline-flex;justify-content:center;align-items:center;padding:8px;margin-bottom:0;cursor:pointer;&.disabled{cursor:not-allowed}}.cim-widget-search-button{display:inline-flex;align-items:center;white-space:nowrap;gap:.25rem}.cim-widget-search-button-icon{--base-color: var(--cim-widget-primary-color, #3182ce);background-color:var(--base-color);border-color:var(--base-color);color:#fff;&:disabled,&[disabled]{background-color:var(--base-color);border-color:var(--base-color);opacity:.6}&:hover{background-color:color-mix(in srgb,var(--base-color),black 20%);border-color:color-mix(in srgb,var(--base-color),black 20%)}}.cim-widget-search-button-icon-image{object-fit:contain;width:1.25em;height:1.25em}.cim-widget-file-input{display:none}.cim-widget-escalate-btn{display:inline-flex;align-items:center;justify-content:center;padding:6px;border:none;border-radius:4px;background:transparent;color:var(--cim-widget-primary-color, #6b7280);cursor:pointer;transition:background-color .15s ease,color .15s ease}.cim-widget-escalate-btn:hover:not(:disabled){background-color:#f3f4f6;color:var(--cim-widget-primary-color, #3182ce)}.cim-widget-escalate-btn:disabled{opacity:.4;cursor:not-allowed}.cim-widget-overflow-menu{position:relative;height:auto;width:auto}.cim-widget-overflow-menu-list{width:130px;background:#fff;padding:.25rem 0;border-radius:.5rem;border:1px solid var(--cim-widget-border-color)}.cim-widget-overflow-menu-button-trigger,.cim-widget-overflow-menu-button{display:inline-flex;align-items:center;width:100%;background-color:#fff;border:1px solid transparent;border-radius:4px;cursor:pointer;color:#333;&:hover{background-color:#f0f0f0}}.cim-widget-overflow-menu-button{gap:.5rem;padding:.5rem .75rem;svg{font-size:.75rem}}.cim-widget-carousel{position:relative;width:100%}.cim-widget-carousel__item-group{padding:4px 0;justify-content:flex-start}.cim-widget-carousel__item{flex-shrink:0;>*{height:100%}}.cim-widget-carousel__control{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);display:flex;justify-content:space-between;pointer-events:none;padding:0 4px}.cim-widget-carousel__prev-trigger,.cim-widget-carousel__next-trigger{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:1px solid var(--cim-widget-border-color, #d1d5db);background-color:var(--cim-widget-background-color, #ffffff);color:var(--cim-widget-font-color, #3f3f46);cursor:pointer;box-shadow:0 1px 3px #0000001a;transition:background-color .15s ease,box-shadow .15s ease}.cim-widget-carousel__prev-trigger:hover,.cim-widget-carousel__next-trigger:hover{background-color:#f9fafb;box-shadow:0 2px 6px #0000001f}.cim-widget-carousel__prev-trigger:disabled,.cim-widget-carousel__next-trigger:disabled{opacity:.4;cursor:not-allowed}.cim-widget-carousel__indicator-group{display:flex;justify-content:center;gap:6px;padding-top:12px}.cim-widget-carousel__indicator{width:8px;height:8px;border-radius:50%;border:none;background-color:var(--cim-widget-border-color, #d1d5db);cursor:pointer;padding:0;transition:background-color .2s ease,transform .2s ease}.cim-widget-carousel__indicator[data-current]{background-color:var(--cim-widget-font-color, #1a202c);transform:scale(1.25)}.cim-widget-carousel__indicator:hover:not([data-current]){background-color:var(--cim-widget-font-color, #1a202c);opacity:.5}.cim-widget-close-button{display:flex;align-items:center;justify-content:center;padding:.5rem;border-radius:4px;border:1px solid transparent;background-color:transparent;cursor:pointer;&:hover{background-color:#f0f0f0}}.cim-widget-clear-chat-icon-button{min-height:32px}.cim-widget-toggle-modal-button.dialog{display:none}@media(min-width:576px){.cim-widget-toggle-modal-button.dialog{display:inline-flex}}.cim-widget-blinking-cursor{display:inline-flex;margin-left:2px;line-height:0;animation:cursor-blink 1.5s steps(2) infinite}@keyframes cursor-blink{0%{opacity:0}}.cim-widget-ul{list-style-type:disc;padding-left:1.5rem}.cim-widget-ol{list-style-type:decimal;padding-left:1.5rem}.cim-widget-table-container{margin-top:1rem;margin-bottom:1rem;margin-right:.5rem;overflow-x:auto}.cim-widget-table{border-radius:.5rem;border-width:1px;border-style:solid;border-color:var(--cim-widget-border-color);border-collapse:collapse;width:100%}.cim-widget-thead{background-color:color-mix(in hsl decreasing hue,var(--cim-widget-secondary-color) 5%,transparent);border-bottom-width:2px;border-color:var(--cim-widget-border-color)}.cim-widget-tbody{border-width:0px;box-sizing:border-box;background-color:#ffffff90;overflow-wrap:break-word}.cim-widget-tr{border-style:solid;border-bottom-width:1px;border-color:var(--cim-widget-border-color)}.cim-widget-th{padding:.5rem 1rem;text-align:left;font-weight:700;border-bottom-width:1px;border-color:var(--cim-widget-border-color)}.cim-widget-td{padding:.5rem 1rem;border-bottom-width:1px;border-color:var(--cim-widget-border-color)}.cim-widget-message-container pre{margin:0}.cim-widget-connecting-indicator{--cim-loader-color: var(--cim-widget-primary-color);--cim-loader-size: 8px;--cim-loader-speed: 1.4s;--cim-loader-gap: .5rem;display:flex;align-items:center;gap:var(--cim-loader-gap)}.cim-widget-connecting-indicator.embedded{padding:12px 4px}.cim-widget-connecting-indicator.standalone{padding:12px 1rem}.cim-widget-connecting-pulse-wrapper{position:relative;width:calc(var(--cim-loader-size) * 2);height:calc(var(--cim-loader-size) * 2);display:flex;align-items:center;justify-content:center}.cim-widget-connecting-pulse{width:var(--cim-loader-size);height:var(--cim-loader-size);border-radius:50%;background-color:var(--cim-loader-color);animation:cim-widget-pulse var(--cim-loader-speed) ease-in-out infinite}.cim-widget-connecting-ring{position:absolute;width:var(--cim-loader-size);height:var(--cim-loader-size);border-radius:50%;border:1.5px solid var(--cim-loader-color);animation:cim-widget-ring-expand var(--cim-loader-speed) ease-out infinite}.cim-widget-connecting-text{font-size:12px;color:var(--cim-widget-font-color);font-family:var(--cim-widget-font-family, inherit);opacity:0;transform:translateY(4px);transition:opacity .4s ease,transform .4s ease}.cim-widget-connecting-text--visible{opacity:1;transform:translateY(0)}@keyframes cim-widget-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.6);opacity:.4}}@keyframes cim-widget-ring-expand{0%{transform:scale(1);opacity:.6}to{transform:scale(2.8);opacity:0}}@media(prefers-reduced-motion:reduce){.cim-widget-connecting-pulse,.cim-widget-connecting-ring{animation:none!important}.cim-widget-connecting-pulse{opacity:.6}.cim-widget-connecting-text{animation:none!important;transition:none!important}}.cim-widget-processing-indicator{--cim-loader-color: var(--cim-widget-primary-color);--cim-loader-speed: 1.8s;display:flex;flex-direction:column;gap:8px}.cim-widget-processing-indicator.embedded{max-width:80%;padding:1rem;border-radius:8px;background-color:color-mix(in hsl decreasing hue,var(--cim-widget-secondary-color) 5%,transparent)}.cim-widget-processing-indicator.standalone{padding:0 1rem}.cim-widget-processing-shimmer-bar{height:10px;border-radius:4px;background:linear-gradient(90deg,var(--cim-widget-border-color) 25%,color-mix(in srgb,var(--cim-loader-color) 15%,var(--cim-widget-background-color)) 50%,var(--cim-widget-border-color) 75%);background-size:200% 100%;animation:cim-widget-shimmer var(--cim-loader-speed) ease-in-out infinite}.cim-widget-processing-shimmer-bar:nth-child(2){width:75%;animation-delay:.15s}.cim-widget-processing-shimmer-bar:nth-child(3){width:50%;animation-delay:.3s}@keyframes cim-widget-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@media(prefers-reduced-motion:reduce){.cim-widget-processing-shimmer-bar{animation:none!important;background:var(--cim-widget-border-color)!important}}.cim-widget-msg-product-card{display:flex;flex-direction:column;width:180px;min-width:180px;height:100%;background-color:var(--cim-widget-background-color, #ffffff);border:1px solid var(--cim-widget-border-color, #d1d5db);border-radius:4px;overflow:hidden;transition:box-shadow .2s ease}.cim-widget-msg-product-card:hover{box-shadow:0 2px 8px #0000001f}.cim-widget-msg-product-card__image-wrapper{position:relative;width:100%;height:100%;aspect-ratio:1 / 1;overflow:hidden;background-color:#f9fafb}.cim-widget-msg-product-card__image{width:100%;height:100%;object-fit:contain;display:block}.cim-widget-msg-product-card__content{display:flex;flex-direction:column;justify-content:space-between;gap:8px;padding:12px;height:40%}.cim-widget-msg-product-card__title,.cim-widget-msg-product-card__title-link{font-family:var(--cim-widget-font-family, "Inter", sans-serif);font-weight:600;font-size:14px;line-height:1.3;letter-spacing:-.3px;color:var(--cim-widget-font-color, #3f3f46);margin:0;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cim-widget-msg-product-card__title-link{text-decoration:none}.cim-widget-msg-product-card__title-link:hover{text-decoration:underline}.cim-widget-msg-product-card__price-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.cim-widget-msg-product-card__prices{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.cim-widget-msg-product-card__price{font-family:var(--cim-widget-font-family, "Inter", sans-serif);font-weight:600;font-size:14px;line-height:1.2;letter-spacing:-.3px;color:var(--cim-widget-font-color, #3f3f46)}.cim-widget-msg-product-card__compare-price{font-family:var(--cim-widget-font-family, "Inter", sans-serif);font-weight:400;font-size:13px;line-height:1.2;color:var(--cim-widget-font-color, #3f3f46);opacity:.6;text-decoration:line-through}.cim-widget-msg-product-card__add-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;border:none;border-radius:4px;background-color:var(--cim-widget-primary-color, #141415);color:#fff;cursor:pointer;transition:opacity .15s ease}.cim-widget-msg-product-card__add-btn:hover{opacity:.85}.cim-widget-msg-product-card__add-btn svg{width:14px;height:14px}.cim-widget-message-group,.cim-widget-message{display:flex;flex-direction:column}.cim-widget-message-group{gap:.5rem;padding:1rem;margin-bottom:1rem;border-radius:8px;&.standalone{padding:0 1rem}.cim-widget-message-group-child{max-width:100%;margin-bottom:.25rem}}.cim-widget-message-group.embedded{max-width:80%;background-color:color-mix(in hsl decreasing hue,var(--cim-widget-secondary-color) 5%,transparent)}.cim-widget-message{margin-bottom:1rem}.cim-widget-message.standalone{border-radius:0;background-color:transparent;padding:0 1rem}.cim-widget-message.embedded{margin-bottom:1rem}.message{border-radius:.5rem}.widget-message{display:flex;align-self:flex-start}.user-message{display:flex;align-self:flex-end;padding:1rem}.cim-widget-reset-message{font-size:.75rem;font-style:italic;color:color-mix(in hsl decreasing hue,var(--cim-widget-font-color) 75%,white)}.cim-widget-start-search-message{font-size:.875rem;font-weight:700;color:var(--cim-widget-font-color)}.cim-widget-user-message{display:flex;flex-direction:column;gap:.5rem;.cim-widget-user-message-row{display:inline-flex;align-items:center;gap:.5rem}}.cim-widget-user-message.embedded{display:inline-flex;align-self:flex-end;border-radius:8px;padding:.5rem 1rem;background-color:color-mix(in hsl decreasing hue,var(--cim-widget-primary-color) 10%,transparent);max-width:80%;min-width:50%}.cim-widget-user-message.standalone{margin:.5rem 0}.cim-widget-user-message-image{object-fit:contain;border-radius:8px;&.embedded{max-height:2.5rem}&.standalone{max-height:3.5rem}}.cim-widget-user-message-text{font-weight:700}.cim-widget-user-message-text.standalone{font-size:1.125rem;margin:0}.cim-widget-user-message-text.embedded{margin:0}.cim-widget-message-icon.user-message-icon.embedded{color:var(--cim-widget-primary-color)}.cim-widget-message-group-child{display:flex;flex-direction:column;gap:.25rem}.cim-widget-embedded-chat{position:relative;width:100%;height:100%;margin:0 auto;border-radius:8px;border:1px solid var(--cim-widget-border-color)}.cim-widget-embedded-chat>.cim-widget-message-container{padding-top:2rem;padding-left:1rem;padding-right:1rem}.cim-widget-embedded-chat-menu{position:absolute;top:.25rem;right:.25rem}.cim-widget-overflow-menu-button-trigger.chat{border:1px solid var(--cim-widget-border-color)}.cim-widget-left-right-toggle-button{display:none}@media(min-width:576px){.cim-widget-left-right-toggle-button{display:inline-flex}}.cim-widget-dialog{position:fixed;width:35dvw;height:55dvh;border-radius:.5rem;border:1px solid var(--cim-widget-border-color);font-size:.875rem;z-index:9999;&.bottom-left{bottom:.5rem;left:.5rem}&.bottom-right{bottom:.5rem;right:.5rem}}.cim-widget-dialog-content{display:flex;flex-direction:column;height:100%}.cim-widget-dialog-header{display:inline-flex;align-items:center;padding:1rem 1rem 0;margin-bottom:.5rem;gap:8px}.cim-widget-dialog-controls{position:absolute;top:4px;right:4px;display:inline-flex;align-items:center}.cim-widget-dialog-logo{object-fit:contain;max-width:50%;max-height:3rem}.cim-widget-dialog-title{margin-top:0;margin-bottom:0}@media(576px<=width<=768px){.cim-widget-dialog{width:50%}}@media(max-width:576px){.cim-widget-dialog{height:100%;width:100%;border-radius:0;&.bottom-left{bottom:0;left:0}&.bottom-right{bottom:0;right:0}}}.cim-widget-modal-container{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;height:100dvh;width:100dvw;z-index:9999}.cim-widget-modal-backdrop{position:absolute;top:0;left:0;height:100%;width:100%;background:#00000080}.cim-widget-modal{position:fixed;width:70dvw;height:80dvh;border-radius:.5rem;border:1px solid var(--cim-widget-border-color);overflow-y:hidden;&.fullscreen{height:100%;width:100%;border-radius:0}}.cim-widget-modal-content{display:flex;flex-direction:column;height:100%}.cim-widget-modal-header{display:inline-flex;align-items:center;padding:1rem 1rem 0;margin-bottom:1rem;gap:8px}.cim-widget-modal-controls{position:absolute;top:4px;right:4px;display:inline-flex;align-items:center}.cim-widget-modal-logo{object-fit:contain;max-width:50%;max-height:3rem}.cim-widget-modal-title{margin-top:0;margin-bottom:0}.cim-widget-modal-fullscreen-button,.cim-widget-modal-toggle-dialog-button{display:none}@media(max-width:576px){.cim-widget-modal{height:100%;width:100%;border-radius:0}}@media(min-width:576px){.cim-widget-modal-fullscreen-button,.cim-widget-modal-toggle-dialog-button{display:inline-flex}}.cim-widget-container{box-sizing:border-box;display:flex;flex-direction:column;background-color:var(--cim-widget-background-color);font-family:var(--cim-widget-font-family, inherit);color:var(--cim-widget-font-color, inherit)}.cim-widget-message-container p{margin:.25rem 0;padding:0;+p{margin-top:.5rem}}.cim-widget-message-container span{line-height:1}.cim-widget-header{font-weight:700;color:inherit}.cim-widget-header.h1{margin-top:2rem;margin-bottom:2rem;font-size:1rem}.cim-widget-header.h2{margin-top:1.5rem;margin-bottom:1.5rem;font-size:1rem}.cim-widget-header.h3{margin-top:1rem;margin-bottom:1rem;font-size:1rem}.cim-widget-link{color:var(--cim-widget-primary-color);text-decoration:underline;cursor:pointer}.cim-widget-link:hover{color:var(--cim-widget-secondary-color);text-decoration:none}.cim-widget-text{line-height:1.5;color:inherit;margin-bottom:.25rem}.cim-widget-text.italic{font-style:italic}.cim-widget-text.bold{font-weight:700}.cim-widget-message-container{flex:1;overflow-y:auto;padding:1rem}.cim-widget-message-icon{display:inline-flex;align-items:center;margin-right:.25rem}.cim-widget-message-icon.embedded{font-size:1rem;color:var(--cim-widget-secondary-color)}.cim-widget-message-icon.standalone{font-size:1.5rem;color:var(--cim-widget-primary-color)}.cim-widget-suggestion-container.embedded{display:inline-flex;flex-wrap:wrap;gap:.5rem}.cim-widget-suggestion-button.embedded{height:auto;padding:.2rem .5rem;border:1px solid var(--cim-widget-primary-color);border-radius:4px;background-color:transparent;font-size:.875rem;font-weight:600;font-family:inherit;color:var(--cim-widget-primary-color);white-space:normal;word-break:break-word;text-align:left;cursor:pointer}.cim-widget-suggestion-button.embedded:hover{background-color:#fff;color:color-mix(in hsl decreasing hue,var(--cim-widget-primary-color) 85%,black)}.cim-widget-suggestion-container.standalone{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.5rem;padding:.5rem 0}@media(max-width:768px){.cim-widget-suggestion-container.standalone{grid-template-columns:repeat(1,1fr)}}.cim-widget-suggestion-button.standalone{display:inline-flex;align-items:center;padding:.5rem 1rem;border:1px solid var(--cim-widget-primary-color);background-color:color-mix(in hsl decreasing hue,var(--cim-widget-primary-color) 5%,transparent);font-weight:700;color:var(--cim-widget-primary-color);text-align:left;white-space:normal;word-break:break-word}.cim-widget-suggestion-button.standalone:hover{background-color:color-mix(in hsl decreasing hue,var(--cim-widget-primary-color) 15%,transparent);color:color-mix(in hsl decreasing hue,var(--cim-widget-primary-color) 85%,black)}.cim-widget-suggestion-button:disabled{border-color:#8a8a8a;background-color:#f9f9f9;color:#8a8a8a;cursor:not-allowed}.cim-widget-suggestion-button:disabled:hover{border-color:#8a8a8a;background-color:#f9f9f9;color:#8a8a8a}
@@ -0,0 +1,324 @@
1
+ import { AgentforceMessageEvent } from '@cimulate/agentforce-sdk';
2
+ import { AgentforceRoutingResultEvent } from '@cimulate/agentforce-sdk';
3
+ import { AskCim } from '@cimulate/copilot-sdk';
4
+ import { AskCimAck } from '@cimulate/copilot-sdk';
5
+ import { AskCimSuggestions } from '@cimulate/copilot-sdk';
6
+ import { BrowseParams } from '@cimulate/copilot-sdk';
7
+ import { ConnectAck } from '@cimulate/copilot-sdk';
8
+ import { ConversationResetAck } from '@cimulate/copilot-sdk';
9
+ import { CopilotBrowse } from '@cimulate/copilot-sdk';
10
+ import { CopilotBrowseAck } from '@cimulate/copilot-sdk';
11
+ import { CopilotBrowseSuggestion } from '@cimulate/copilot-sdk';
12
+ import { CopilotBrowseSuggestions } from '@cimulate/copilot-sdk';
13
+ import { CopilotError } from '@cimulate/copilot-sdk';
14
+ import { CopilotEvent } from '@cimulate/copilot-sdk';
15
+ import { CopilotSearch } from '@cimulate/copilot-sdk';
16
+ import { CopilotSearchSuggestion } from '@cimulate/copilot-sdk';
17
+ import { CopilotSearchSuggestions } from '@cimulate/copilot-sdk';
18
+ import { DisplayProducts } from '@cimulate/copilot-sdk';
19
+ import { FacetedNavigationSuggestion } from '@cimulate/copilot-sdk';
20
+ import { FollowUp } from '@cimulate/copilot-sdk';
21
+ import { Inquiry } from '@cimulate/copilot-sdk';
22
+ import { JSX as JSX_2 } from 'react/jsx-runtime';
23
+ import { PartialInquiry } from '@cimulate/copilot-sdk';
24
+ import { ProductView } from '@cimulate/copilot-sdk';
25
+ import { ProductViewAck } from '@cimulate/copilot-sdk';
26
+ import { ProductViewSuggestion } from '@cimulate/copilot-sdk';
27
+ import { ProductViewSuggestions } from '@cimulate/copilot-sdk';
28
+ import { Progress } from '@cimulate/copilot-sdk';
29
+ import { ReactNode } from 'react';
30
+ import { RefinedBrowse } from '@cimulate/copilot-sdk';
31
+ import { RefinedSearch } from '@cimulate/copilot-sdk';
32
+ import { SearchParams } from '@cimulate/copilot-sdk';
33
+
34
+ /**
35
+ * A fully self-contained Agentforce widget component.
36
+ * This component includes all necessary context providers and UI components.
37
+ * Its behaviors can be controlled via events.
38
+ *
39
+ *
40
+ * @param {CopilotWidgetProps} props - Properties for the Agentforce widget
41
+ * @returns JSX.Element
42
+ */
43
+ export declare const AgentForceWidget: (props: CopilotWidgetProps) => JSX_2.Element;
44
+
45
+ /**
46
+ * Contains all of the context providers needed for the widget.
47
+ *
48
+ * Config >
49
+ * UIStateContext >
50
+ * MessagingProvider (Agentforce/SCRT2 SDK)
51
+ */
52
+ export declare const AgentforceWidgetProvider: ({ mode, apiKey, apiToken, baseUrl, logoUrl, headerText, theme, openLinksInNewTab, globalClassName, isDevelopment, componentType, componentConfig, entryType, entryMessage, disclaimerText, disclaimerMarkdown, clientContext, searchPlaceholder, searchButtonLabel, searchConfig, resetConversationMessage, conversationHistory, messagingConfig, __features, children, }: CopilotWidgetProps & {
53
+ children: ReactNode;
54
+ }) => JSX_2.Element;
55
+
56
+ declare type AllCopilotEvents = {
57
+ message: string;
58
+ request?: (AskCim | CopilotSearch | CopilotBrowse | ProductView) & {
59
+ label?: string;
60
+ };
61
+ searchParams?: SearchParams;
62
+ browseParams?: BrowseParams;
63
+ suggestions?: Suggestion[];
64
+ eventSourceId?: string;
65
+ toolName?: string;
66
+ thought?: string;
67
+ bypassHandlers?: boolean;
68
+ } & (AskCimAck | CopilotEvent | ConversationResetAck | Inquiry | DisplayProducts | FollowUp | PartialInquiry | RefinedSearch | RefinedBrowse | CopilotBrowseAck | Progress | ProductViewAck | CopilotError);
69
+
70
+ declare type CimCopilotSdkConfig = {
71
+ apiKey?: string;
72
+ apiToken?: string;
73
+ baseUrl?: string;
74
+ };
75
+
76
+ declare interface ClientContext {
77
+ [key: string]: string | number;
78
+ }
79
+
80
+ export declare type ComponentType = "chat" | "dialog" | "modal";
81
+
82
+ declare interface CopilotWidgetProps extends CimCopilotSdkConfig {
83
+ isDevelopment?: boolean;
84
+ globalClassName?: string;
85
+ logoUrl?: string;
86
+ headerText?: string;
87
+ theme?: ThemeConfig;
88
+ openLinksInNewTab?: boolean;
89
+ entryType?: EntryType;
90
+ entryMessage?: string;
91
+ disclaimerText?: string;
92
+ disclaimerMarkdown?: string;
93
+ clientContext?: ClientContext;
94
+ /**
95
+ * @deprecated
96
+ *
97
+ * This setting has been moved to the componentConfig object. Please use componentConfig.type instead.
98
+ */
99
+ componentType?: ComponentType;
100
+ componentConfig?: WidgetComponentConfig;
101
+ /**
102
+ * @deprecated
103
+ *
104
+ * This setting has been moved to the searchConfig object. Please use searchConfig.placeholder instead.
105
+ */
106
+ searchPlaceholder?: string;
107
+ /**
108
+ * @deprecated
109
+ *
110
+ * This setting has been moved to the searchConfig object. Please use searchConfig.buttonLabel instead.
111
+ */
112
+ searchButtonLabel?: string;
113
+ searchConfig?: WidgetSearchConfig;
114
+ resetConversationMessage?: string;
115
+ conversationHistory?: {
116
+ sinceHours?: number;
117
+ limit?: number;
118
+ };
119
+ promptsConfig?: PromptsExtensionConfig;
120
+ onConnect?: (event: ConnectAck) => void;
121
+ onCopilotEvent?: (event: AllCopilotEvents) => void;
122
+ onRefinedSearch?: (event: AllCopilotEvents) => void;
123
+ onRefinedBrowse?: (event: AllCopilotEvents) => void;
124
+ /**
125
+ * Widget operating mode.
126
+ * - 'copilot' (default): Uses the Cimulate Copilot SDK (Socket.IO)
127
+ * - 'messaging': Uses the Agentforce SDK (SCRT2 SSE)
128
+ */
129
+ mode?: WidgetMode;
130
+ /**
131
+ * Configuration for messaging mode. Required when mode is 'messaging'.
132
+ */
133
+ messagingConfig?: MessagingModeConfig;
134
+ /**
135
+ *
136
+ * Enables features not yet released. They may require additional backend support and are subject to change.
137
+ */
138
+ __features?: Record<string, boolean>;
139
+ }
140
+
141
+ declare type DialogPosition = "top" | "top-left" | "top-right" | "bottom" | "bottom-left" | "bottom-right" | "left" | "right" | "center";
142
+
143
+ declare type EntryType = "search" | "browse" | "pdp" | "ask_cim";
144
+
145
+ export declare const eventHandlers: {
146
+ components: {
147
+ setEntryType: (entryType: EntryType) => void;
148
+ toggleWidgetOpen: (isOpen?: boolean) => void;
149
+ toggleWidgetMinimized: (isMinimized?: boolean) => void;
150
+ toggleModalFullscreen: (isFullscreen: boolean) => void;
151
+ setWidgetType: (type: "chat" | "dialog" | "modal") => void;
152
+ setWidgetDialogPosition: (position: DialogPosition) => void;
153
+ };
154
+ };
155
+
156
+ export declare const injectMessagingWidget: ({ timeout, elementId, ...props }: InjectMessagingWidgetOptions) => void;
157
+
158
+ declare interface InjectMessagingWidgetOptions extends Omit<CopilotWidgetProps, "apiKey" | "apiToken" | "baseUrl" | "mode"> {
159
+ /** ID of the DOM element to render the widget into */
160
+ elementId: string;
161
+ /** Timeout in ms for observing the DOM element (default: 5000) */
162
+ timeout?: number;
163
+ /** SCRT2 messaging configuration (required) */
164
+ messagingConfig: MessagingModeConfig;
165
+ }
166
+
167
+ /**
168
+ * Connection state for the messaging client.
169
+ */
170
+ export declare type MessagingConnectionStatus = "disconnected" | "connecting" | "connected" | "reconnecting" | "error";
171
+
172
+ export declare interface MessagingContextType {
173
+ connectionStatus: MessagingState["connectionStatus"];
174
+ isConnected: boolean;
175
+ isAgentTyping: boolean;
176
+ conversationId: string | null;
177
+ messages: MessagingMessage[];
178
+ streamingContent: string;
179
+ loading: boolean;
180
+ error: string | null;
181
+ sendMessage: (text: string) => void;
182
+ resetConversation: () => void;
183
+ }
184
+
185
+ /**
186
+ * Messaging mode Dialog — mirrors CopilotDialog with the same CSS and layout,
187
+ * but consumes from the messaging (SCRT2/Agentforce) context.
188
+ */
189
+ export declare const MessagingDialog: () => JSX_2.Element | null;
190
+
191
+ /**
192
+ * Messaging mode Embed — mirrors CopilotEmbed with the same CSS and layout,
193
+ * but consumes from the messaging (SCRT2/Agentforce) context.
194
+ */
195
+ export declare const MessagingEmbed: () => JSX_2.Element;
196
+
197
+ /**
198
+ * A single message in the messaging conversation.
199
+ */
200
+ export declare interface MessagingMessage {
201
+ type?: "ADD_MESSAGE" | "APPEND_STREAMING_TOKEN" | "FLUSH_STREAMING" | "SET_AGENT_TYPING" | "SET_ROUTING_RESULT" | "SET_ERROR" | "RESET";
202
+ id: string;
203
+ role: "user" | "agent" | "system";
204
+ content: string;
205
+ timestamp: string;
206
+ sender?: {
207
+ role: string;
208
+ name?: string;
209
+ };
210
+ /** The raw event data for advanced consumers */
211
+ raw?: AgentforceMessageEvent;
212
+ }
213
+
214
+ /**
215
+ * Messaging mode Modal — mirrors CopilotModal with the same CSS and layout,
216
+ * but consumes from the messaging (SCRT2/Agentforce) context.
217
+ */
218
+ export declare const MessagingModal: () => JSX_2.Element | null;
219
+
220
+ /**
221
+ * Configuration for messaging mode (SCRT2 Agentforce).
222
+ */
223
+ export declare interface MessagingModeConfig {
224
+ /** SCRT2 instance URL (e.g. "https://xyz.salesforce-scrt.com") */
225
+ scrt2Url: string;
226
+ /** Salesforce Organization ID */
227
+ orgId: string;
228
+ /** Embedded Service developer name */
229
+ esDeveloperName: string;
230
+ /** Optional routing attributes for the conversation */
231
+ routingAttributes?: Record<string, string>;
232
+ }
233
+
234
+ export declare const MessagingProvider: ({ scrt2Url, orgId, esDeveloperName, routingAttributes, enableLogging, onConnect, onMessage, onError, children, }: MessagingProviderProps) => JSX_2.Element;
235
+
236
+ declare interface MessagingProviderProps {
237
+ scrt2Url: string;
238
+ orgId: string;
239
+ esDeveloperName: string;
240
+ routingAttributes?: Record<string, string>;
241
+ enableLogging?: boolean;
242
+ onConnect?: () => void;
243
+ onMessage?: (message: MessagingMessage) => void;
244
+ onError?: (error: string) => void;
245
+ children: ReactNode;
246
+ }
247
+
248
+ /**
249
+ * Full state shape for the messaging reducer.
250
+ */
251
+ declare interface MessagingState {
252
+ connectionStatus: MessagingConnectionStatus;
253
+ loading: boolean;
254
+ conversationId: string | null;
255
+ messages: MessagingMessage[];
256
+ streamingContent: string;
257
+ isAgentTyping: boolean;
258
+ routingResult: AgentforceRoutingResultEvent | null;
259
+ error: string | null;
260
+ }
261
+
262
+ declare type PromptsExtensionConfig = Omit<PromptsExtensionState, "isInitialized" | "activePromptsId" | "userPrompt" | "promptsMessage" | "responseMessage" | "isResponseLoading">;
263
+
264
+ declare type PromptsExtensionState = {
265
+ isInitialized: boolean;
266
+ isOpen: boolean;
267
+ isInline: boolean;
268
+ elementId: string | null;
269
+ entryType: EntryType | null;
270
+ placeholder: string | null;
271
+ params: PromptsParams | null;
272
+ activePromptsId: string | null;
273
+ userPrompt: string | null;
274
+ promptsMessage: AllCopilotEvents | null;
275
+ isResponseLoading: boolean;
276
+ responseMessage: AllCopilotEvents | null;
277
+ };
278
+
279
+ declare type PromptsParams = AskCimSuggestions | CopilotSearchSuggestions | CopilotBrowseSuggestions | ProductViewSuggestions;
280
+
281
+ declare type Suggestion = CopilotSearchSuggestion | FacetedNavigationSuggestion | ProductViewSuggestion | CopilotBrowseSuggestion;
282
+
283
+ declare interface ThemeConfig {
284
+ primaryColor?: string;
285
+ secondaryColor?: string;
286
+ fontColor?: string;
287
+ fontFamily?: string;
288
+ backgroundColor?: string;
289
+ borderColor?: string;
290
+ }
291
+
292
+ export declare function useMessaging(): MessagingContextType;
293
+
294
+ declare interface WidgetComponentConfig {
295
+ isOpen?: boolean;
296
+ isMinimized?: boolean;
297
+ type?: ComponentType;
298
+ enableMinimize?: boolean;
299
+ options?: {
300
+ dialogPosition?: DialogPosition;
301
+ isModalFullscreen?: boolean;
302
+ };
303
+ }
304
+
305
+ /**
306
+ * Widget operating mode.
307
+ * - 'copilot' (default): Uses the Cimulate Copilot SDK (Socket.IO)
308
+ * - 'messaging': Uses the Agentforce SDK (SCRT2 SSE)
309
+ */
310
+ export declare type WidgetMode = "copilot" | "messaging";
311
+
312
+ declare interface WidgetSearchConfig {
313
+ placeholder?: string;
314
+ /**
315
+ * This should be a URL to an icon image (e.g. a magnifying glass) that will be displayed on the search button. If not provided, a default search icon will be used.
316
+ */
317
+ buttonIconUrl?: string;
318
+ buttonLabel?: string;
319
+ buttonAriaLabel?: string;
320
+ buttonType?: "icon" | "text" | "icon-text";
321
+ enableCancelSearch?: boolean;
322
+ }
323
+
324
+ export { }