@webless/agent 0.2.9 → 0.2.11
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/{chunk-7XB5OBTP.js → chunk-XAUJPXWR.js} +359 -114
- package/dist/chunk-XAUJPXWR.js.map +1 -0
- package/dist/embed.cjs +344 -96
- package/dist/embed.cjs.map +1 -1
- package/dist/embed.css +46 -0
- package/dist/embed.css.map +1 -1
- package/dist/embed.js +1 -1
- package/dist/index.cjs +146 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +146 -26
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +341 -96
- package/dist/react.cjs.map +1 -1
- package/dist/react.css +46 -0
- package/dist/react.css.map +1 -1
- package/dist/react.js +1 -1
- package/package.json +3 -2
- package/dist/chunk-7XB5OBTP.js.map +0 -1
package/dist/embed.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react/styles/tokens.css","../src/react/styles/widget.css","../src/react/components/ToolTimeline/ToolTimeline.css","../src/react/components/AgentActivityBubble/AgentActivityBubble.css","../src/react/components/Composer/Composer.css","../src/react/components/FollowUpChips/FollowUpChips.css","../src/react/components/MessageBubble/MessageBubble.css","../src/react/components/AgentRail/AgentRail.css","../src/react/components/AssistEdgeTab/AssistEdgeTab.css"],"sourcesContent":[":root {\n --as-rail-max-width: 450px;\n --as-brand: #6f16ff;\n --as-brand-soft: #f3edff;\n --as-brand-light: #c4b0ff;\n --as-brand-deep: #12043e;\n --as-surface: #ffffff;\n --as-surface-muted: #f4f6fb;\n --as-text: #171b2a;\n --as-text-muted: #5a6378;\n --as-text-subtle: #8a94a8;\n --as-border: rgb(42 51 70 / 0.1);\n --as-visitor-bubble: #6f16ff;\n --as-visitor-text: #ffffff;\n --as-success: #18794e;\n --as-danger: #c94b63;\n --as-radius-sm: 8px;\n --as-radius-md: 12px;\n --as-radius-lg: 16px;\n --as-font-body: \"Mulish\", \"Avenir Next\", \"Segoe UI\", sans-serif;\n --as-font-display: \"Space Grotesk\", sans-serif;\n --as-shadow-rail: 0 0 0 1px rgb(42 51 70 / 0.06), -8px 0 24px -12px rgb(18 4 62 / 0.12);\n --as-z-rail: 40;\n --as-z-mobile: 1000;\n}\n\n.webless-agent-root,\n.webless-agent-root *,\n.webless-agent-root *::before,\n.webless-agent-root *::after {\n box-sizing: border-box;\n}\n\n.webless-agent-root {\n font-family: var(--as-font-body);\n color: var(--as-text);\n -webkit-font-smoothing: antialiased;\n}\n\n.webless-agent-root button,\n.webless-agent-root input,\n.webless-agent-root textarea {\n font: inherit;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .webless-agent-root *,\n .webless-agent-root *::before,\n .webless-agent-root *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n}\n",".webless-agent-root {\n --rail-track: var(--as-rail-max-width);\n --rail-ease: cubic-bezier(0.22, 1, 0.36, 1);\n --rail-duration: 420ms;\n position: fixed;\n inset: 0;\n pointer-events: none;\n z-index: var(--as-z-mobile);\n}\n\n.webless-agent-root__shell {\n position: fixed;\n inset: 0;\n display: grid;\n grid-template-columns: minmax(0, 1fr) var(--rail-track);\n pointer-events: none;\n transition: grid-template-columns var(--rail-duration) var(--rail-ease);\n}\n\n.webless-agent-root__rail-slot {\n grid-column: 2;\n min-width: 0;\n height: 100%;\n overflow: hidden;\n justify-self: end;\n pointer-events: auto;\n transform: translateX(0);\n opacity: 1;\n transition:\n transform var(--rail-duration) var(--rail-ease),\n opacity 220ms ease;\n}\n\n.webless-agent-root__shell--collapsed {\n --rail-track: 0px;\n}\n\n.webless-agent-root__shell--collapsed .webless-agent-root__rail-slot {\n transform: translateX(100%);\n opacity: 0;\n pointer-events: none;\n}\n\n.webless-agent-root__shell--expanded:not(.webless-agent-root__shell--collapsed) {\n --rail-track: 0px;\n}\n\n.webless-agent-root__shell--expanded:not(.webless-agent-root__shell--collapsed) .webless-agent-root__rail-slot {\n position: fixed;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: visible;\n transform: none;\n opacity: 1;\n pointer-events: none;\n z-index: calc(var(--as-z-mobile) + 1);\n}\n\n.webless-agent-root__shell--expanded:not(.webless-agent-root__shell--collapsed) .agent-rail {\n pointer-events: auto;\n width: 95vw;\n min-width: 0;\n max-width: none;\n height: 95dvh;\n max-height: 95dvh;\n}\n\n.webless-agent-root__rail-slot .agent-rail {\n min-width: 0;\n width: var(--as-rail-max-width);\n max-width: none;\n height: 100%;\n}\n\n.webless-agent-root__backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--as-z-mobile);\n border: none;\n padding: 0;\n margin: 0;\n background: rgb(18 4 62 / 0.18);\n cursor: pointer;\n pointer-events: auto;\n}\n\n@media (max-width: 767px) {\n .webless-agent-root__shell {\n grid-template-columns: 1fr;\n }\n\n .webless-agent-root__shell:not(.webless-agent-root__shell--collapsed) .webless-agent-root__rail-slot {\n grid-column: 1;\n position: fixed;\n inset: 0;\n width: 100%;\n height: 100%;\n transform: none;\n opacity: 1;\n pointer-events: auto;\n z-index: calc(var(--as-z-mobile) + 1);\n }\n}\n",".tool-timeline {\n width: fit-content;\n max-width: 100%;\n}\n\n.tool-timeline--inline {\n background: transparent;\n border: none;\n border-radius: 0;\n padding: 0;\n}\n\n.tool-timeline:not(.tool-timeline--inline) {\n background: var(--as-surface-muted);\n border: 1px solid var(--as-border);\n border-radius: var(--as-radius-md);\n padding: 12px;\n}\n\n.agent-status {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n min-width: 0;\n animation: agent-status-in 0.22s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n@keyframes agent-status-in {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-status__icon {\n width: 16px;\n height: 16px;\n display: grid;\n place-items: center;\n flex-shrink: 0;\n margin-top: 2px;\n color: var(--as-brand);\n}\n\n.agent-status__icon--error {\n font-size: 12px;\n font-weight: 700;\n color: var(--as-danger);\n}\n\n.agent-status__spinner {\n width: 14px;\n height: 14px;\n animation: as-spin 0.9s linear infinite;\n}\n\n@keyframes as-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.agent-status__copy {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.agent-status__label {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.4;\n color: var(--as-text-muted);\n word-break: break-word;\n}\n\n.agent-status__detail {\n font-size: 12px;\n line-height: 1.35;\n color: var(--as-text-subtle);\n word-break: break-word;\n}\n\n.tool-timeline__streaming-text {\n display: inline-block;\n width: fit-content;\n max-width: 100%;\n font-size: 13px;\n line-height: 1.5;\n color: var(--as-text);\n word-break: break-word;\n margin: 0;\n padding: 10px 12px;\n background: var(--as-surface-muted);\n border: 1px solid var(--as-border);\n border-radius: var(--as-radius-md);\n border-bottom-left-radius: 4px;\n}\n\n.tool-timeline__streaming-text:not(:first-child) {\n margin-top: 10px;\n}\n\n.tool-timeline__cursor {\n display: inline-block;\n width: 2px;\n height: 14px;\n margin-left: 1px;\n vertical-align: text-bottom;\n background: var(--as-brand);\n animation: as-blink 1s step-end infinite;\n}\n\n@keyframes as-blink {\n 50% {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .agent-status {\n animation: none;\n }\n\n .agent-status__spinner {\n animation: none;\n }\n}\n",".agent-activity-bubble {\n align-self: flex-start;\n width: 100%;\n max-width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.agent-activity-bubble__shell {\n width: fit-content;\n max-width: 100%;\n padding: 0;\n background: transparent;\n border: none;\n}\n",".composer {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.composer__field {\n display: flex;\n align-items: flex-end;\n gap: 6px;\n padding: 6px;\n border: 1px solid var(--as-border);\n border-radius: var(--as-radius-lg);\n background: var(--as-surface-muted);\n}\n\n.composer__field:focus-within {\n border-color: rgb(111 22 255 / 0.35);\n box-shadow: 0 0 0 3px rgb(111 22 255 / 0.1);\n}\n\n.composer__input {\n flex: 1;\n min-width: 0;\n border: none;\n background: transparent;\n resize: none;\n padding: 8px 6px 8px 8px;\n font-size: 13px;\n line-height: 1.45;\n color: var(--as-text);\n max-height: 96px;\n}\n\n.composer__input::placeholder {\n color: var(--as-text-subtle);\n}\n\n.composer__input:focus {\n outline: none;\n}\n\n.composer__send {\n appearance: none;\n border: none;\n width: 34px;\n height: 34px;\n border-radius: 999px;\n background: var(--as-brand);\n color: #fff;\n display: grid;\n place-items: center;\n cursor: pointer;\n flex-shrink: 0;\n transition: opacity 0.15s ease, transform 0.15s ease;\n}\n\n.composer__send:hover:not(:disabled) {\n transform: translateY(-1px);\n}\n\n.composer__send:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.composer__send svg {\n width: 14px;\n height: 14px;\n}\n\n.composer--dock .composer__field {\n align-items: center;\n padding: 5px 5px 5px 13px;\n background: var(--as-surface-muted);\n border: 1px solid var(--as-border);\n border-radius: 999px;\n box-shadow: none;\n}\n\n.composer--dock .composer__field:focus-within {\n border-color: rgb(111 22 255 / 0.35);\n box-shadow: 0 0 0 3px rgb(111 22 255 / 0.1);\n}\n\n.composer--dock .composer__input {\n padding: 11px 0;\n font-size: 15px;\n max-height: 48px;\n}\n\n.composer--dock .composer__send {\n width: 40px;\n height: 40px;\n}\n\n.composer--dock .composer__send svg {\n width: 15px;\n height: 15px;\n}\n",".followups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.followups__label {\n font-size: 12px;\n font-weight: 700;\n color: var(--as-text-subtle);\n letter-spacing: 0.02em;\n}\n\n.followups__list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.followups__chip {\n appearance: none;\n border: 1px solid var(--as-border);\n background: var(--as-surface);\n color: var(--as-text);\n font-size: 13px;\n font-weight: 600;\n line-height: 1.4;\n text-align: left;\n border-radius: var(--as-radius-sm);\n padding: 10px 12px;\n cursor: pointer;\n transition: border-color 0.15s ease, background 0.15s ease;\n word-break: break-word;\n}\n\n.followups__chip:hover:not(:disabled) {\n border-color: rgb(111 22 255 / 0.25);\n background: var(--as-brand-soft);\n}\n\n.followups__chip:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.followups--dock {\n width: 100%;\n gap: 0;\n}\n\n.followups__scroll {\n display: flex;\n gap: 8px;\n justify-content: flex-start;\n overflow-x: auto;\n padding: 2px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.followups__scroll::-webkit-scrollbar {\n display: none;\n}\n\n.followups__chip--dock {\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n padding: 8px 12px;\n border-radius: 999px;\n font-size: 12px;\n font-weight: 600;\n white-space: nowrap;\n text-align: left;\n}\n",".message-bubble {\n display: flex;\n flex-direction: column;\n gap: 8px;\n max-width: 92%;\n}\n\n.message-bubble--visitor {\n align-self: flex-end;\n align-items: flex-end;\n}\n\n.message-bubble--agent {\n align-self: flex-start;\n align-items: flex-start;\n max-width: 100%;\n}\n\n.message-bubble__text {\n margin: 0;\n padding: 10px 12px;\n border-radius: var(--as-radius-md);\n font-size: 13px;\n line-height: 1.5;\n word-break: break-word;\n}\n\n.message-bubble--visitor .message-bubble__text {\n background: var(--as-visitor-bubble);\n color: var(--as-visitor-text);\n border-bottom-right-radius: 4px;\n}\n\n.message-bubble--agent .message-bubble__text {\n background: var(--as-surface-muted);\n color: var(--as-text);\n border: 1px solid var(--as-border);\n border-bottom-left-radius: 4px;\n}\n",".agent-rail {\n --rail-width: var(--as-rail-max-width);\n display: flex;\n flex-direction: column;\n width: var(--rail-width);\n max-width: var(--rail-width);\n min-width: var(--rail-width);\n height: 100%;\n max-height: 100dvh;\n overflow: hidden;\n background: var(--as-surface);\n border-left: 1px solid var(--as-border);\n box-shadow: var(--as-shadow-rail);\n color: var(--as-text);\n font-family: var(--as-font-body);\n position: relative;\n z-index: var(--as-z-rail);\n}\n\n.agent-rail__header {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px;\n}\n\n.agent-rail__brand-row {\n display: grid;\n grid-template-columns: 32px 1fr 32px;\n align-items: center;\n min-height: 32px;\n min-width: 0;\n}\n\n.agent-rail__brand-label {\n grid-column: 2;\n grid-row: 1;\n font-family: var(--as-font-display);\n font-size: 14px;\n font-weight: 600;\n letter-spacing: -0.01em;\n line-height: 1;\n text-align: center;\n}\n\n.agent-rail__brand-spacer {\n width: 32px;\n height: 32px;\n}\n\n.agent-rail__collapse,\n.agent-rail__close,\n.agent-rail__expand {\n appearance: none;\n border: none;\n background: transparent;\n color: var(--as-text-subtle);\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 0;\n border-radius: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n flex-shrink: 0;\n grid-row: 1;\n}\n\n.agent-rail__collapse,\n.agent-rail__close {\n grid-column: 1;\n justify-self: start;\n}\n\n.agent-rail__expand {\n grid-column: 3;\n justify-self: end;\n}\n\n.agent-rail__collapse:hover,\n.agent-rail__close:hover,\n.agent-rail__expand:hover {\n background: var(--as-surface-muted);\n color: var(--as-text);\n}\n\n.agent-rail__collapse svg,\n.agent-rail__close svg,\n.agent-rail__expand svg {\n width: 16px;\n height: 16px;\n}\n\n.agent-rail__transcript {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n overscroll-behavior: contain;\n padding: 14px 12px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n scroll-behavior: smooth;\n -webkit-overflow-scrolling: touch;\n}\n\n.agent-rail__timeline-slot,\n.agent-rail__followups-slot {\n flex-shrink: 0;\n}\n\n.agent-rail__composer-wrap {\n flex-shrink: 0;\n padding: 12px 12px 14px;\n border-top: 1px solid var(--as-border);\n background: var(--as-surface);\n}\n\n.agent-rail__footer {\n margin-top: 8px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.agent-rail__footer-disclaimer {\n margin: 0;\n text-align: center;\n font-size: 11px;\n color: var(--as-text-subtle);\n line-height: 1.35;\n}\n\n.agent-rail__footer-note {\n margin: 0;\n text-align: center;\n font-size: 11px;\n color: var(--as-text-subtle);\n line-height: 1.35;\n}\n\n.agent-rail--mobile-fullscreen {\n position: fixed;\n inset: 0;\n width: 100%;\n max-width: none;\n min-width: 0;\n height: 100dvh;\n max-height: 100dvh;\n overflow: hidden;\n z-index: var(--as-z-mobile);\n border-left: none;\n box-shadow: none;\n}\n\n.agent-rail--expanded {\n position: fixed;\n top: 50%;\n left: 50%;\n width: 95vw;\n height: 95dvh;\n max-width: none;\n min-width: 0;\n max-height: 95dvh;\n transform: translate(-50%, -50%);\n z-index: calc(var(--as-z-mobile) + 1);\n background: var(--as-surface);\n border: 1px solid var(--as-border);\n border-radius: var(--as-radius-lg);\n box-shadow:\n 0 0 0 1px rgb(42 51 70 / 0.04),\n 0 28px 80px -24px rgb(18 4 62 / 0.35);\n transition:\n width 320ms cubic-bezier(0.22, 1, 0.36, 1),\n height 320ms cubic-bezier(0.22, 1, 0.36, 1),\n transform 320ms cubic-bezier(0.22, 1, 0.36, 1),\n border-radius 320ms cubic-bezier(0.22, 1, 0.36, 1),\n box-shadow 320ms cubic-bezier(0.22, 1, 0.36, 1);\n overflow: hidden;\n}\n\n.agent-rail--expanded .agent-rail__header,\n.agent-rail--expanded .agent-rail__transcript,\n.agent-rail--expanded .agent-rail__dock-wrap {\n background: var(--as-surface);\n}\n\n.agent-rail--expanded .agent-rail__transcript {\n padding: 20px 24px 25px;\n align-items: center;\n}\n\n.agent-rail--expanded .agent-rail__transcript .message-bubble {\n width: 85%;\n max-width: 85%;\n}\n\n.agent-rail--expanded .agent-rail__transcript .message-bubble__text {\n font-size: 16px;\n padding: 12px 14px;\n}\n\n.agent-rail--expanded .agent-rail__transcript .tool-timeline__streaming-text {\n font-size: 16px;\n padding: 12px 14px;\n}\n\n.agent-rail--expanded .agent-rail__transcript .message-bubble--visitor {\n align-self: center;\n align-items: flex-end;\n}\n\n.agent-rail--expanded .agent-rail__transcript .message-bubble--agent {\n align-self: center;\n align-items: flex-start;\n}\n\n.agent-rail--expanded .agent-rail__transcript .agent-activity-bubble,\n.agent-rail--expanded .agent-rail__transcript [role=\"alert\"] {\n align-self: center;\n align-items: flex-start;\n width: 85%;\n max-width: 85%;\n}\n\n.agent-rail--expanded .agent-rail__dock-wrap {\n flex-shrink: 0;\n width: 70%;\n max-width: 70%;\n align-self: center;\n padding: 18px 0 24px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n}\n\n.agent-rail--expanded .agent-rail__dock-followups {\n width: 100%;\n}\n\n.agent-rail--expanded .agent-rail__dock-followups .followups__scroll {\n justify-content: flex-start;\n}\n\n.agent-rail--expanded .agent-rail__dock {\n display: flex;\n flex-direction: column;\n gap: 10px;\n width: 100%;\n padding: 12px;\n border: 1px solid var(--as-border);\n border-radius: calc(var(--as-radius-lg) + 4px);\n background: var(--as-surface);\n}\n\n.agent-rail--expanded .agent-rail__footer {\n margin-top: 0;\n width: 100%;\n}\n\n.agent-rail--mobile-fullscreen .agent-rail__close {\n display: grid;\n}\n\n.agent-rail--mobile-fullscreen .agent-rail__collapse {\n display: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .agent-rail--expanded {\n transition: none;\n }\n}\n\n@media (max-width: 767px) {\n .agent-rail {\n position: fixed;\n inset: 0;\n width: 100%;\n max-width: none;\n min-width: 0;\n height: 100dvh;\n max-height: 100dvh;\n overflow: hidden;\n z-index: var(--as-z-mobile);\n border-left: none;\n box-shadow: none;\n }\n\n .agent-rail .agent-rail__close {\n display: grid;\n }\n\n .agent-rail .agent-rail__collapse {\n display: none;\n }\n}\n\n@media (min-width: 768px) {\n .agent-rail .agent-rail__close {\n display: none !important;\n }\n}\n",".assist-edge-tab {\n --tab-ink: var(--as-brand);\n --tab-fill: #fff;\n --tab-line: rgb(111 22 255 / 0.35);\n --tab-along: 50%;\n --tab-inset: 0px;\n position: fixed;\n top: auto;\n right: auto;\n bottom: auto;\n left: auto;\n z-index: calc(var(--as-z-rail) + 1);\n appearance: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n border: 1px solid var(--tab-line);\n background: var(--tab-fill);\n color: var(--tab-ink);\n cursor: pointer;\n opacity: 0;\n pointer-events: none;\n box-shadow: -6px 0 20px -12px rgb(18 4 62 / 0.28);\n transition:\n transform 420ms cubic-bezier(0.22, 1, 0.36, 1),\n opacity 240ms ease,\n box-shadow 180ms ease;\n}\n\n.assist-edge-tab.is-visible {\n opacity: 1;\n pointer-events: auto;\n}\n\n.assist-edge-tab:focus-visible {\n outline: 2px solid var(--as-brand);\n outline-offset: 3px;\n}\n\n.assist-edge-tab svg {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n\n.assist-edge-tab__sparkles {\n width: 18px;\n height: 16px;\n}\n\n.assist-edge-tab__label {\n font-family: var(--as-font-display);\n font-size: 13px;\n font-weight: 600;\n letter-spacing: 0.02em;\n line-height: 1;\n white-space: nowrap;\n}\n\n.assist-edge-tab--right,\n.assist-edge-tab--left {\n flex-direction: column;\n width: 40px;\n min-height: 168px;\n padding: 14px 0 12px;\n}\n\n.assist-edge-tab--right .assist-edge-tab__label,\n.assist-edge-tab--left .assist-edge-tab__label {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n}\n\n.assist-edge-tab--top,\n.assist-edge-tab--bottom {\n flex-direction: row;\n height: 40px;\n min-width: 168px;\n width: auto;\n padding: 0 14px;\n}\n\n.assist-edge-tab--right {\n top: var(--tab-along);\n right: var(--tab-inset);\n border-right: none;\n border-radius: 999px 0 0 999px;\n transform: translateY(-50%) translateX(calc(100% + 18px));\n}\n\n.assist-edge-tab--right.is-visible {\n transform: translateY(-50%) translateX(0);\n}\n\n.assist-edge-tab--right.is-visible:hover {\n transform: translateY(-50%) translateX(-2px);\n}\n\n.assist-edge-tab--left {\n top: var(--tab-along);\n left: var(--tab-inset);\n border-left: none;\n border-radius: 0 999px 999px 0;\n transform: translateY(-50%) translateX(calc(-100% - 18px));\n}\n\n.assist-edge-tab--left.is-visible {\n transform: translateY(-50%) translateX(0);\n}\n\n.assist-edge-tab--left.is-visible:hover {\n transform: translateY(-50%) translateX(2px);\n}\n\n.assist-edge-tab--top {\n left: var(--tab-along);\n top: var(--tab-inset);\n border-top: none;\n border-radius: 0 0 999px 999px;\n transform: translateX(-50%) translateY(calc(-100% - 18px));\n}\n\n.assist-edge-tab--top.is-visible {\n transform: translateX(-50%) translateY(0);\n}\n\n.assist-edge-tab--top.is-visible:hover {\n transform: translateX(-50%) translateY(2px);\n}\n\n.assist-edge-tab--bottom {\n left: var(--tab-along);\n bottom: var(--tab-inset);\n border-bottom: none;\n border-radius: 999px 999px 0 0;\n transform: translateX(-50%) translateY(calc(100% + 18px));\n}\n\n.assist-edge-tab--bottom.is-visible {\n transform: translateX(-50%) translateY(0);\n}\n\n.assist-edge-tab--bottom.is-visible:hover {\n transform: translateX(-50%) translateY(-2px);\n}\n\n.assist-edge-tab--outline {\n --tab-fill: #f7f6fa;\n --tab-line: rgb(111 22 255 / 0.45);\n}\n\n.assist-edge-tab--outline.assist-edge-tab--right,\n.assist-edge-tab--outline.assist-edge-tab--left {\n min-height: 176px;\n border-radius: 999px;\n border-right: 1px solid var(--tab-line);\n border-left: 1px solid var(--tab-line);\n}\n\n.assist-edge-tab--outline.assist-edge-tab--top,\n.assist-edge-tab--outline.assist-edge-tab--bottom {\n border-radius: 999px;\n border-top: 1px solid var(--tab-line);\n border-bottom: 1px solid var(--tab-line);\n}\n\n.assist-edge-tab--ask {\n --tab-fill: #efe8fb;\n --tab-line: transparent;\n}\n\n.assist-edge-tab--ask.assist-edge-tab--right,\n.assist-edge-tab--ask.assist-edge-tab--left {\n min-height: 196px;\n width: 42px;\n}\n\n.assist-edge-tab--ask.assist-edge-tab--right {\n border-radius: 18px 0 0 18px;\n}\n\n.assist-edge-tab--ask.assist-edge-tab--left {\n border-radius: 0 18px 18px 0;\n}\n\n.assist-edge-tab--fill {\n --tab-fill: var(--as-brand);\n --tab-ink: #fff;\n --tab-line: transparent;\n box-shadow: -8px 0 22px -10px rgb(111 22 255 / 0.55);\n}\n\n.assist-edge-tab--fill.assist-edge-tab--right,\n.assist-edge-tab--fill.assist-edge-tab--left {\n min-height: 180px;\n}\n\n.assist-edge-tab__dots {\n display: grid;\n grid-template-columns: repeat(3, 3px);\n gap: 3px;\n}\n\n.assist-edge-tab--top .assist-edge-tab__dots,\n.assist-edge-tab--bottom .assist-edge-tab__dots {\n grid-template-columns: repeat(4, 3px);\n grid-template-rows: repeat(3, 3px);\n}\n\n.assist-edge-tab__dots i {\n width: 3px;\n height: 3px;\n border-radius: 999px;\n background: currentColor;\n opacity: 0.55;\n}\n\n@media (max-width: 767px) {\n .assist-edge-tab {\n z-index: calc(var(--as-z-mobile) + 2);\n }\n\n .assist-edge-tab--right,\n .assist-edge-tab--left {\n min-height: 148px;\n width: 36px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .assist-edge-tab,\n .assist-edge-tab.is-visible,\n .assist-edge-tab.is-visible:hover {\n transition: none;\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/react/styles/tokens.css","../src/react/styles/widget.css","../src/react/components/ToolTimeline/ToolTimeline.css","../src/react/components/AgentActivityBubble/AgentActivityBubble.css","../src/react/components/Composer/Composer.css","../src/react/components/FollowUpChips/FollowUpChips.css","../src/react/components/MessageBubble/MessageBubble.css","../src/react/components/AgentRail/AgentRail.css","../src/react/components/AssistEdgeTab/AssistEdgeTab.css"],"sourcesContent":[":root {\n --as-rail-max-width: 450px;\n --as-brand: #6f16ff;\n --as-brand-soft: #f3edff;\n --as-brand-light: #c4b0ff;\n --as-brand-deep: #12043e;\n --as-surface: #ffffff;\n --as-surface-muted: #f4f6fb;\n --as-text: #171b2a;\n --as-text-muted: #5a6378;\n --as-text-subtle: #8a94a8;\n --as-border: rgb(42 51 70 / 0.1);\n --as-visitor-bubble: #6f16ff;\n --as-visitor-text: #ffffff;\n --as-success: #18794e;\n --as-danger: #c94b63;\n --as-radius-sm: 8px;\n --as-radius-md: 12px;\n --as-radius-lg: 16px;\n --as-font-body: \"Mulish\", \"Avenir Next\", \"Segoe UI\", sans-serif;\n --as-font-display: \"Space Grotesk\", sans-serif;\n --as-shadow-rail: 0 0 0 1px rgb(42 51 70 / 0.06), -8px 0 24px -12px rgb(18 4 62 / 0.12);\n --as-z-rail: 40;\n --as-z-mobile: 1000;\n}\n\n.webless-agent-root,\n.webless-agent-root *,\n.webless-agent-root *::before,\n.webless-agent-root *::after {\n box-sizing: border-box;\n}\n\n.webless-agent-root {\n font-family: var(--as-font-body);\n color: var(--as-text);\n -webkit-font-smoothing: antialiased;\n}\n\n.webless-agent-root button,\n.webless-agent-root input,\n.webless-agent-root textarea {\n font: inherit;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .webless-agent-root *,\n .webless-agent-root *::before,\n .webless-agent-root *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n}\n",".webless-agent-root {\n --rail-track: var(--as-rail-max-width);\n --rail-ease: cubic-bezier(0.22, 1, 0.36, 1);\n --rail-duration: 420ms;\n position: fixed;\n inset: 0;\n pointer-events: none;\n z-index: var(--as-z-mobile);\n}\n\n.webless-agent-root__shell {\n position: fixed;\n inset: 0;\n display: grid;\n grid-template-columns: minmax(0, 1fr) var(--rail-track);\n pointer-events: none;\n transition: grid-template-columns var(--rail-duration) var(--rail-ease);\n}\n\n.webless-agent-root__rail-slot {\n grid-column: 2;\n min-width: 0;\n height: 100%;\n overflow: hidden;\n justify-self: end;\n pointer-events: auto;\n transform: translateX(0);\n opacity: 1;\n transition:\n transform var(--rail-duration) var(--rail-ease),\n opacity 220ms ease;\n}\n\n.webless-agent-root__shell--collapsed {\n --rail-track: 0px;\n}\n\n.webless-agent-root__shell--collapsed .webless-agent-root__rail-slot {\n transform: translateX(100%);\n opacity: 0;\n pointer-events: none;\n}\n\n.webless-agent-root__shell--expanded:not(.webless-agent-root__shell--collapsed) {\n --rail-track: 0px;\n}\n\n.webless-agent-root__shell--expanded:not(.webless-agent-root__shell--collapsed) .webless-agent-root__rail-slot {\n position: fixed;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: visible;\n transform: none;\n opacity: 1;\n pointer-events: none;\n z-index: calc(var(--as-z-mobile) + 1);\n}\n\n.webless-agent-root__shell--expanded:not(.webless-agent-root__shell--collapsed) .agent-rail {\n pointer-events: auto;\n width: 95vw;\n min-width: 0;\n max-width: none;\n height: 95dvh;\n max-height: 95dvh;\n}\n\n.webless-agent-root__rail-slot .agent-rail {\n min-width: 0;\n width: var(--as-rail-max-width);\n max-width: none;\n height: 100%;\n}\n\n.webless-agent-root__backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--as-z-mobile);\n border: none;\n padding: 0;\n margin: 0;\n background: rgb(18 4 62 / 0.18);\n cursor: pointer;\n pointer-events: auto;\n}\n\n@media (max-width: 767px) {\n .webless-agent-root__shell {\n grid-template-columns: 1fr;\n }\n\n .webless-agent-root__shell:not(.webless-agent-root__shell--collapsed) .webless-agent-root__rail-slot {\n grid-column: 1;\n position: fixed;\n inset: 0;\n width: 100%;\n height: 100%;\n transform: none;\n opacity: 1;\n pointer-events: auto;\n z-index: calc(var(--as-z-mobile) + 1);\n }\n}\n",".tool-timeline {\n width: fit-content;\n max-width: 100%;\n}\n\n.tool-timeline--inline {\n background: transparent;\n border: none;\n border-radius: 0;\n padding: 0;\n}\n\n.tool-timeline:not(.tool-timeline--inline) {\n background: var(--as-surface-muted);\n border: 1px solid var(--as-border);\n border-radius: var(--as-radius-md);\n padding: 12px;\n}\n\n.agent-status {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n min-width: 0;\n animation: agent-status-in 0.22s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n@keyframes agent-status-in {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-status__icon {\n width: 16px;\n height: 16px;\n display: grid;\n place-items: center;\n flex-shrink: 0;\n margin-top: 2px;\n color: var(--as-brand);\n}\n\n.agent-status__icon--error {\n font-size: 12px;\n font-weight: 700;\n color: var(--as-danger);\n}\n\n.agent-status__spinner {\n width: 14px;\n height: 14px;\n animation: as-spin 0.9s linear infinite;\n}\n\n@keyframes as-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.agent-status__copy {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.agent-status__label {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.4;\n color: var(--as-text-muted);\n word-break: break-word;\n}\n\n.agent-status__detail {\n font-size: 12px;\n line-height: 1.35;\n color: var(--as-text-subtle);\n word-break: break-word;\n}\n\n.tool-timeline__streaming-text {\n display: inline-block;\n width: fit-content;\n max-width: 100%;\n font-size: 13px;\n line-height: 1.5;\n color: var(--as-text);\n word-break: break-word;\n margin: 0;\n padding: 10px 12px;\n background: var(--as-surface-muted);\n border: 1px solid var(--as-border);\n border-radius: var(--as-radius-md);\n border-bottom-left-radius: 4px;\n}\n\n.tool-timeline__streaming-text:not(:first-child) {\n margin-top: 10px;\n}\n\n.tool-timeline__cursor {\n display: inline-block;\n width: 2px;\n height: 14px;\n margin-left: 1px;\n vertical-align: text-bottom;\n background: var(--as-brand);\n animation: as-blink 1s step-end infinite;\n}\n\n@keyframes as-blink {\n 50% {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .agent-status {\n animation: none;\n }\n\n .agent-status__spinner {\n animation: none;\n }\n}\n",".agent-activity-bubble {\n align-self: flex-start;\n width: 100%;\n max-width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.agent-activity-bubble__shell {\n width: fit-content;\n max-width: 100%;\n padding: 0;\n background: transparent;\n border: none;\n}\n",".composer {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.composer__field {\n display: flex;\n align-items: flex-end;\n gap: 6px;\n padding: 6px;\n border: 1px solid var(--as-border);\n border-radius: var(--as-radius-lg);\n background: var(--as-surface-muted);\n}\n\n.composer__field:focus-within {\n border-color: rgb(111 22 255 / 0.35);\n box-shadow: 0 0 0 3px rgb(111 22 255 / 0.1);\n}\n\n.composer__input {\n flex: 1;\n min-width: 0;\n border: none;\n background: transparent;\n resize: none;\n padding: 8px 6px 8px 8px;\n font-size: 13px;\n line-height: 1.45;\n color: var(--as-text);\n max-height: 96px;\n}\n\n.composer__input::placeholder {\n color: var(--as-text-subtle);\n}\n\n.composer__input:focus {\n outline: none;\n}\n\n.composer__send {\n appearance: none;\n border: none;\n width: 34px;\n height: 34px;\n border-radius: 999px;\n background: var(--as-brand);\n color: #fff;\n display: grid;\n place-items: center;\n cursor: pointer;\n flex-shrink: 0;\n transition: opacity 0.15s ease, transform 0.15s ease;\n}\n\n.composer__send:hover:not(:disabled) {\n transform: translateY(-1px);\n}\n\n.composer__send:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.composer__send svg {\n width: 14px;\n height: 14px;\n}\n\n.composer--dock .composer__field {\n align-items: center;\n padding: 5px 5px 5px 13px;\n background: var(--as-surface-muted);\n border: 1px solid var(--as-border);\n border-radius: 999px;\n box-shadow: none;\n}\n\n.composer--dock .composer__field:focus-within {\n border-color: rgb(111 22 255 / 0.35);\n box-shadow: 0 0 0 3px rgb(111 22 255 / 0.1);\n}\n\n.composer--dock .composer__input {\n padding: 11px 0;\n font-size: 15px;\n max-height: 48px;\n}\n\n.composer--dock .composer__send {\n width: 40px;\n height: 40px;\n}\n\n.composer--dock .composer__send svg {\n width: 15px;\n height: 15px;\n}\n",".followups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.followups__label {\n font-size: 12px;\n font-weight: 700;\n color: var(--as-text-subtle);\n letter-spacing: 0.02em;\n}\n\n.followups__list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.followups__chip {\n appearance: none;\n border: 1px solid var(--as-border);\n background: var(--as-surface);\n color: var(--as-text);\n font-size: 13px;\n font-weight: 600;\n line-height: 1.4;\n text-align: left;\n border-radius: var(--as-radius-sm);\n padding: 10px 12px;\n cursor: pointer;\n transition: border-color 0.15s ease, background 0.15s ease;\n word-break: break-word;\n}\n\n.followups__chip:hover:not(:disabled) {\n border-color: rgb(111 22 255 / 0.25);\n background: var(--as-brand-soft);\n}\n\n.followups__chip:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.followups--dock {\n width: 100%;\n gap: 0;\n}\n\n.followups__scroll {\n display: flex;\n gap: 8px;\n justify-content: flex-start;\n overflow-x: auto;\n padding: 2px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.followups__scroll::-webkit-scrollbar {\n display: none;\n}\n\n.followups__chip--dock {\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n padding: 8px 12px;\n border-radius: 999px;\n font-size: 12px;\n font-weight: 600;\n white-space: nowrap;\n text-align: left;\n}\n",".message-bubble {\n display: flex;\n flex-direction: column;\n gap: 8px;\n max-width: 92%;\n}\n\n.message-bubble--visitor {\n align-self: flex-end;\n align-items: flex-end;\n}\n\n.message-bubble--agent {\n align-self: flex-start;\n align-items: flex-start;\n max-width: 100%;\n}\n\n.message-bubble__text {\n margin: 0;\n padding: 10px 12px;\n border-radius: var(--as-radius-md);\n font-size: 13px;\n line-height: 1.5;\n word-break: break-word;\n}\n\n.message-bubble--visitor .message-bubble__text {\n background: var(--as-visitor-bubble);\n color: var(--as-visitor-text);\n border-bottom-right-radius: 4px;\n}\n\n.message-bubble--agent .message-bubble__text {\n background: var(--as-surface-muted);\n color: var(--as-text);\n border: 1px solid var(--as-border);\n border-bottom-left-radius: 4px;\n}\n\n.message-bubble__markdown > :first-child {\n margin-top: 0;\n}\n\n.message-bubble__markdown > :last-child {\n margin-bottom: 0;\n}\n\n.message-bubble__markdown p,\n.message-bubble__markdown ol,\n.message-bubble__markdown ul {\n margin: 0 0 8px;\n}\n\n.message-bubble__markdown ol,\n.message-bubble__markdown ul {\n padding-left: 20px;\n}\n\n.message-bubble__markdown ol {\n list-style: decimal outside;\n}\n\n.message-bubble__markdown ul {\n list-style: disc outside;\n}\n\n.message-bubble__markdown [data-streamdown=\"strong\"] {\n font-weight: 650;\n}\n\n.message-bubble__markdown li + li {\n margin-top: 4px;\n}\n\n.message-bubble__markdown [data-streamdown=\"link\"] {\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n.message-bubble__markdown code {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 0.92em;\n}\n",".agent-rail {\n --rail-width: var(--as-rail-max-width);\n display: flex;\n flex-direction: column;\n width: var(--rail-width);\n max-width: var(--rail-width);\n min-width: var(--rail-width);\n height: 100%;\n max-height: 100dvh;\n overflow: hidden;\n background: var(--as-surface);\n border-left: 1px solid var(--as-border);\n box-shadow: var(--as-shadow-rail);\n color: var(--as-text);\n font-family: var(--as-font-body);\n position: relative;\n z-index: var(--as-z-rail);\n}\n\n.agent-rail__header {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px;\n}\n\n.agent-rail__brand-row {\n display: grid;\n grid-template-columns: 32px 1fr 32px;\n align-items: center;\n min-height: 32px;\n min-width: 0;\n}\n\n.agent-rail__brand-label {\n grid-column: 2;\n grid-row: 1;\n font-family: var(--as-font-display);\n font-size: 14px;\n font-weight: 600;\n letter-spacing: -0.01em;\n line-height: 1;\n text-align: center;\n}\n\n.agent-rail__brand-spacer {\n width: 32px;\n height: 32px;\n}\n\n.agent-rail__collapse,\n.agent-rail__close,\n.agent-rail__expand {\n appearance: none;\n border: none;\n background: transparent;\n color: var(--as-text-subtle);\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 0;\n border-radius: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n flex-shrink: 0;\n grid-row: 1;\n}\n\n.agent-rail__collapse,\n.agent-rail__close {\n grid-column: 1;\n justify-self: start;\n}\n\n.agent-rail__expand {\n grid-column: 3;\n justify-self: end;\n}\n\n.agent-rail__collapse:hover,\n.agent-rail__close:hover,\n.agent-rail__expand:hover {\n background: var(--as-surface-muted);\n color: var(--as-text);\n}\n\n.agent-rail__collapse svg,\n.agent-rail__close svg,\n.agent-rail__expand svg {\n width: 16px;\n height: 16px;\n}\n\n.agent-rail__transcript {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n overscroll-behavior: contain;\n padding: 14px 12px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n scroll-behavior: smooth;\n -webkit-overflow-scrolling: touch;\n}\n\n.agent-rail__timeline-slot,\n.agent-rail__followups-slot {\n flex-shrink: 0;\n}\n\n.agent-rail__composer-wrap {\n flex-shrink: 0;\n padding: 12px 12px 14px;\n border-top: 1px solid var(--as-border);\n background: var(--as-surface);\n}\n\n.agent-rail__footer {\n margin-top: 8px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.agent-rail__footer-disclaimer {\n margin: 0;\n text-align: center;\n font-size: 11px;\n color: var(--as-text-subtle);\n line-height: 1.35;\n}\n\n.agent-rail__footer-note {\n margin: 0;\n text-align: center;\n font-size: 11px;\n color: var(--as-text-subtle);\n line-height: 1.35;\n}\n\n.agent-rail--mobile-fullscreen {\n position: fixed;\n inset: 0;\n width: 100%;\n max-width: none;\n min-width: 0;\n height: 100dvh;\n max-height: 100dvh;\n overflow: hidden;\n z-index: var(--as-z-mobile);\n border-left: none;\n box-shadow: none;\n}\n\n.agent-rail--expanded {\n position: fixed;\n top: 50%;\n left: 50%;\n width: 95vw;\n height: 95dvh;\n max-width: none;\n min-width: 0;\n max-height: 95dvh;\n transform: translate(-50%, -50%);\n z-index: calc(var(--as-z-mobile) + 1);\n background: var(--as-surface);\n border: 1px solid var(--as-border);\n border-radius: var(--as-radius-lg);\n box-shadow:\n 0 0 0 1px rgb(42 51 70 / 0.04),\n 0 28px 80px -24px rgb(18 4 62 / 0.35);\n transition:\n width 320ms cubic-bezier(0.22, 1, 0.36, 1),\n height 320ms cubic-bezier(0.22, 1, 0.36, 1),\n transform 320ms cubic-bezier(0.22, 1, 0.36, 1),\n border-radius 320ms cubic-bezier(0.22, 1, 0.36, 1),\n box-shadow 320ms cubic-bezier(0.22, 1, 0.36, 1);\n overflow: hidden;\n}\n\n.agent-rail--expanded .agent-rail__header,\n.agent-rail--expanded .agent-rail__transcript,\n.agent-rail--expanded .agent-rail__dock-wrap {\n background: var(--as-surface);\n}\n\n.agent-rail--expanded .agent-rail__transcript {\n padding: 20px 24px 25px;\n align-items: center;\n}\n\n.agent-rail--expanded .agent-rail__transcript .message-bubble {\n width: 85%;\n max-width: 85%;\n}\n\n.agent-rail--expanded .agent-rail__transcript .message-bubble__text {\n font-size: 16px;\n padding: 12px 14px;\n}\n\n.agent-rail--expanded .agent-rail__transcript .tool-timeline__streaming-text {\n font-size: 16px;\n padding: 12px 14px;\n}\n\n.agent-rail--expanded .agent-rail__transcript .message-bubble--visitor {\n align-self: center;\n align-items: flex-end;\n}\n\n.agent-rail--expanded .agent-rail__transcript .message-bubble--agent {\n align-self: center;\n align-items: flex-start;\n}\n\n.agent-rail--expanded .agent-rail__transcript .agent-activity-bubble,\n.agent-rail--expanded .agent-rail__transcript [role=\"alert\"] {\n align-self: center;\n align-items: flex-start;\n width: 85%;\n max-width: 85%;\n}\n\n.agent-rail--expanded .agent-rail__dock-wrap {\n flex-shrink: 0;\n width: 70%;\n max-width: 70%;\n align-self: center;\n padding: 18px 0 24px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n}\n\n.agent-rail--expanded .agent-rail__dock-followups {\n width: 100%;\n}\n\n.agent-rail--expanded .agent-rail__dock-followups .followups__scroll {\n justify-content: flex-start;\n}\n\n.agent-rail--expanded .agent-rail__dock {\n display: flex;\n flex-direction: column;\n gap: 10px;\n width: 100%;\n padding: 12px;\n border: 1px solid var(--as-border);\n border-radius: calc(var(--as-radius-lg) + 4px);\n background: var(--as-surface);\n}\n\n.agent-rail--expanded .agent-rail__footer {\n margin-top: 0;\n width: 100%;\n}\n\n.agent-rail--mobile-fullscreen .agent-rail__close {\n display: grid;\n}\n\n.agent-rail--mobile-fullscreen .agent-rail__collapse {\n display: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .agent-rail--expanded {\n transition: none;\n }\n}\n\n@media (max-width: 767px) {\n .agent-rail {\n position: fixed;\n inset: 0;\n width: 100%;\n max-width: none;\n min-width: 0;\n height: 100dvh;\n max-height: 100dvh;\n overflow: hidden;\n z-index: var(--as-z-mobile);\n border-left: none;\n box-shadow: none;\n }\n\n .agent-rail .agent-rail__close {\n display: grid;\n }\n\n .agent-rail .agent-rail__collapse {\n display: none;\n }\n}\n\n@media (min-width: 768px) {\n .agent-rail .agent-rail__close {\n display: none !important;\n }\n}\n",".assist-edge-tab {\n --tab-ink: var(--as-brand);\n --tab-fill: #fff;\n --tab-line: rgb(111 22 255 / 0.35);\n --tab-along: 50%;\n --tab-inset: 0px;\n position: fixed;\n top: auto;\n right: auto;\n bottom: auto;\n left: auto;\n z-index: calc(var(--as-z-rail) + 1);\n appearance: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n border: 1px solid var(--tab-line);\n background: var(--tab-fill);\n color: var(--tab-ink);\n cursor: pointer;\n opacity: 0;\n pointer-events: none;\n box-shadow: -6px 0 20px -12px rgb(18 4 62 / 0.28);\n transition:\n transform 420ms cubic-bezier(0.22, 1, 0.36, 1),\n opacity 240ms ease,\n box-shadow 180ms ease;\n}\n\n.assist-edge-tab.is-visible {\n opacity: 1;\n pointer-events: auto;\n}\n\n.assist-edge-tab:focus-visible {\n outline: 2px solid var(--as-brand);\n outline-offset: 3px;\n}\n\n.assist-edge-tab svg {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n\n.assist-edge-tab__sparkles {\n width: 18px;\n height: 16px;\n}\n\n.assist-edge-tab__label {\n font-family: var(--as-font-display);\n font-size: 13px;\n font-weight: 600;\n letter-spacing: 0.02em;\n line-height: 1;\n white-space: nowrap;\n}\n\n.assist-edge-tab--right,\n.assist-edge-tab--left {\n flex-direction: column;\n width: 40px;\n min-height: 168px;\n padding: 14px 0 12px;\n}\n\n.assist-edge-tab--right .assist-edge-tab__label,\n.assist-edge-tab--left .assist-edge-tab__label {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n}\n\n.assist-edge-tab--top,\n.assist-edge-tab--bottom {\n flex-direction: row;\n height: 40px;\n min-width: 168px;\n width: auto;\n padding: 0 14px;\n}\n\n.assist-edge-tab--right {\n top: var(--tab-along);\n right: var(--tab-inset);\n border-right: none;\n border-radius: 999px 0 0 999px;\n transform: translateY(-50%) translateX(calc(100% + 18px));\n}\n\n.assist-edge-tab--right.is-visible {\n transform: translateY(-50%) translateX(0);\n}\n\n.assist-edge-tab--right.is-visible:hover {\n transform: translateY(-50%) translateX(-2px);\n}\n\n.assist-edge-tab--left {\n top: var(--tab-along);\n left: var(--tab-inset);\n border-left: none;\n border-radius: 0 999px 999px 0;\n transform: translateY(-50%) translateX(calc(-100% - 18px));\n}\n\n.assist-edge-tab--left.is-visible {\n transform: translateY(-50%) translateX(0);\n}\n\n.assist-edge-tab--left.is-visible:hover {\n transform: translateY(-50%) translateX(2px);\n}\n\n.assist-edge-tab--top {\n left: var(--tab-along);\n top: var(--tab-inset);\n border-top: none;\n border-radius: 0 0 999px 999px;\n transform: translateX(-50%) translateY(calc(-100% - 18px));\n}\n\n.assist-edge-tab--top.is-visible {\n transform: translateX(-50%) translateY(0);\n}\n\n.assist-edge-tab--top.is-visible:hover {\n transform: translateX(-50%) translateY(2px);\n}\n\n.assist-edge-tab--bottom {\n left: var(--tab-along);\n bottom: var(--tab-inset);\n border-bottom: none;\n border-radius: 999px 999px 0 0;\n transform: translateX(-50%) translateY(calc(100% + 18px));\n}\n\n.assist-edge-tab--bottom.is-visible {\n transform: translateX(-50%) translateY(0);\n}\n\n.assist-edge-tab--bottom.is-visible:hover {\n transform: translateX(-50%) translateY(-2px);\n}\n\n.assist-edge-tab--outline {\n --tab-fill: #f7f6fa;\n --tab-line: rgb(111 22 255 / 0.45);\n}\n\n.assist-edge-tab--outline.assist-edge-tab--right,\n.assist-edge-tab--outline.assist-edge-tab--left {\n min-height: 176px;\n border-radius: 999px;\n border-right: 1px solid var(--tab-line);\n border-left: 1px solid var(--tab-line);\n}\n\n.assist-edge-tab--outline.assist-edge-tab--top,\n.assist-edge-tab--outline.assist-edge-tab--bottom {\n border-radius: 999px;\n border-top: 1px solid var(--tab-line);\n border-bottom: 1px solid var(--tab-line);\n}\n\n.assist-edge-tab--ask {\n --tab-fill: #efe8fb;\n --tab-line: transparent;\n}\n\n.assist-edge-tab--ask.assist-edge-tab--right,\n.assist-edge-tab--ask.assist-edge-tab--left {\n min-height: 196px;\n width: 42px;\n}\n\n.assist-edge-tab--ask.assist-edge-tab--right {\n border-radius: 18px 0 0 18px;\n}\n\n.assist-edge-tab--ask.assist-edge-tab--left {\n border-radius: 0 18px 18px 0;\n}\n\n.assist-edge-tab--fill {\n --tab-fill: var(--as-brand);\n --tab-ink: #fff;\n --tab-line: transparent;\n box-shadow: -8px 0 22px -10px rgb(111 22 255 / 0.55);\n}\n\n.assist-edge-tab--fill.assist-edge-tab--right,\n.assist-edge-tab--fill.assist-edge-tab--left {\n min-height: 180px;\n}\n\n.assist-edge-tab__dots {\n display: grid;\n grid-template-columns: repeat(3, 3px);\n gap: 3px;\n}\n\n.assist-edge-tab--top .assist-edge-tab__dots,\n.assist-edge-tab--bottom .assist-edge-tab__dots {\n grid-template-columns: repeat(4, 3px);\n grid-template-rows: repeat(3, 3px);\n}\n\n.assist-edge-tab__dots i {\n width: 3px;\n height: 3px;\n border-radius: 999px;\n background: currentColor;\n opacity: 0.55;\n}\n\n@media (max-width: 767px) {\n .assist-edge-tab {\n z-index: calc(var(--as-z-mobile) + 2);\n }\n\n .assist-edge-tab--right,\n .assist-edge-tab--left {\n min-height: 148px;\n width: 36px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .assist-edge-tab,\n .assist-edge-tab.is-visible,\n .assist-edge-tab.is-visible:hover {\n transition: none;\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/embed.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -227,6 +227,54 @@ function clearPersistedAgentSession(visitorSessionId, options) {
|
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
// src/runtime/client.ts
|
|
230
|
+
function isTurnBoundary(event) {
|
|
231
|
+
return event.type === "session.waiting" || event.type === "session.completed" || event.type === "session.failed";
|
|
232
|
+
}
|
|
233
|
+
function applyMessageEvent(event, rendered, handlers) {
|
|
234
|
+
const step = mapStepLabel(event);
|
|
235
|
+
if (step) handlers.onStep?.(step.label, step.detail);
|
|
236
|
+
if (event.type === "session.failed") {
|
|
237
|
+
throw new Error(event.data.message || event.data.code);
|
|
238
|
+
}
|
|
239
|
+
if (event.type === "message.completed") {
|
|
240
|
+
handlers.onComplete?.();
|
|
241
|
+
}
|
|
242
|
+
if (event.type !== "message.appended") return rendered;
|
|
243
|
+
const { messageDelta, messageSoFar } = event.data;
|
|
244
|
+
let delta = messageDelta;
|
|
245
|
+
let next = rendered;
|
|
246
|
+
if (messageSoFar.startsWith(rendered)) {
|
|
247
|
+
delta = messageSoFar.slice(rendered.length);
|
|
248
|
+
next = messageSoFar;
|
|
249
|
+
} else if (messageDelta) {
|
|
250
|
+
next += messageDelta;
|
|
251
|
+
}
|
|
252
|
+
if (delta) handlers.onDelta(delta);
|
|
253
|
+
return next;
|
|
254
|
+
}
|
|
255
|
+
function latestTurnEvents(events) {
|
|
256
|
+
let startIndex = -1;
|
|
257
|
+
for (let index = events.length - 1; index >= 0; index -= 1) {
|
|
258
|
+
if (events[index]?.type === "message.received") {
|
|
259
|
+
startIndex = index;
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return startIndex >= 0 ? events.slice(startIndex) : [];
|
|
264
|
+
}
|
|
265
|
+
function renderTurn(events) {
|
|
266
|
+
let rendered = "";
|
|
267
|
+
for (const event of events) {
|
|
268
|
+
if (event.type !== "message.appended") continue;
|
|
269
|
+
const { messageDelta, messageSoFar } = event.data;
|
|
270
|
+
if (messageSoFar.startsWith(rendered)) {
|
|
271
|
+
rendered = messageSoFar;
|
|
272
|
+
} else if (messageDelta) {
|
|
273
|
+
rendered += messageDelta;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return rendered;
|
|
277
|
+
}
|
|
230
278
|
function mapStepLabel(event) {
|
|
231
279
|
if (event.type !== "step.started") return null;
|
|
232
280
|
const stepIndex = event.data.stepIndex;
|
|
@@ -262,8 +310,13 @@ var AgentSession = class {
|
|
|
262
310
|
return this.session?.state.sessionId ?? loadPersistedAgentSession(this.visitorSessionId, this.storeOptions)?.sessionId;
|
|
263
311
|
}
|
|
264
312
|
reset() {
|
|
265
|
-
|
|
266
|
-
|
|
313
|
+
if (this.activeResponse) {
|
|
314
|
+
void this.activeResponse.cancel().catch(() => {
|
|
315
|
+
});
|
|
316
|
+
} else {
|
|
317
|
+
void this.session?.cancel().catch(() => {
|
|
318
|
+
});
|
|
319
|
+
}
|
|
267
320
|
this.activeResponse = void 0;
|
|
268
321
|
this.session = void 0;
|
|
269
322
|
clearPersistedAgentSession(this.visitorSessionId, this.storeOptions);
|
|
@@ -288,7 +341,8 @@ var AgentSession = class {
|
|
|
288
341
|
if (this.client && this.clientHost === config.host) {
|
|
289
342
|
return this.client;
|
|
290
343
|
}
|
|
291
|
-
this.
|
|
344
|
+
this.activeResponse = void 0;
|
|
345
|
+
this.session = void 0;
|
|
292
346
|
this.client = new import_client2.Client({
|
|
293
347
|
auth: { bearer: () => this.capability.getAccessToken() },
|
|
294
348
|
host: config.host,
|
|
@@ -337,28 +391,20 @@ var AgentSession = class {
|
|
|
337
391
|
this.persistSessionCursor(session);
|
|
338
392
|
}
|
|
339
393
|
this.activeResponse = response;
|
|
394
|
+
let streamIndex = session?.state.streamIndex ?? 0;
|
|
340
395
|
let rendered = "";
|
|
341
396
|
try {
|
|
342
397
|
for await (const event of response) {
|
|
343
398
|
if (signal.aborted) break;
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
if (
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
rendered += messageDelta;
|
|
354
|
-
}
|
|
355
|
-
if (delta) handlers.onDelta(delta);
|
|
356
|
-
}
|
|
357
|
-
if (event.type === "message.completed") {
|
|
358
|
-
handlers.onComplete?.();
|
|
359
|
-
}
|
|
360
|
-
if (event.type === "session.failed") {
|
|
361
|
-
throw new Error(event.data.message || event.data.code);
|
|
399
|
+
rendered = applyMessageEvent(event, rendered, handlers);
|
|
400
|
+
streamIndex += 1;
|
|
401
|
+
if (session) {
|
|
402
|
+
savePersistedAgentSession(
|
|
403
|
+
this.visitorSessionId,
|
|
404
|
+
session.state.sessionId,
|
|
405
|
+
streamIndex,
|
|
406
|
+
this.storeOptions
|
|
407
|
+
);
|
|
362
408
|
}
|
|
363
409
|
}
|
|
364
410
|
} finally {
|
|
@@ -370,15 +416,83 @@ var AgentSession = class {
|
|
|
370
416
|
if (!rendered.trim() && !signal.aborted) {
|
|
371
417
|
throw new Error("Empty response from runtime");
|
|
372
418
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
419
|
+
return rendered.trim();
|
|
420
|
+
}
|
|
421
|
+
async resumeTurn(message, signal, handlers, initialText = "") {
|
|
422
|
+
const persisted = loadPersistedAgentSession(this.visitorSessionId, this.storeOptions);
|
|
423
|
+
if (!persisted) return null;
|
|
424
|
+
const client = this.ensureClient();
|
|
425
|
+
const attached = client.sessions.attach(persisted.sessionId, {
|
|
426
|
+
streamIndex: persisted.streamIndex
|
|
427
|
+
});
|
|
428
|
+
const snapshot = await withCapabilityRefresh(
|
|
429
|
+
this.capability,
|
|
430
|
+
() => attached.snapshot({ signal })
|
|
431
|
+
);
|
|
432
|
+
const turnEvents = latestTurnEvents(snapshot.events);
|
|
433
|
+
const received = turnEvents[0];
|
|
434
|
+
if (received?.type !== "message.received" || received.data.message !== message) {
|
|
435
|
+
return null;
|
|
436
|
+
}
|
|
437
|
+
let rendered = renderTurn(turnEvents);
|
|
438
|
+
if (rendered.startsWith(initialText)) {
|
|
439
|
+
const missedText = rendered.slice(initialText.length);
|
|
440
|
+
if (missedText) handlers.onDelta(missedText);
|
|
441
|
+
} else if (initialText.startsWith(rendered)) {
|
|
442
|
+
rendered = initialText;
|
|
443
|
+
} else if (!initialText.startsWith(rendered)) {
|
|
444
|
+
rendered = initialText + rendered;
|
|
445
|
+
}
|
|
446
|
+
let session = client.sessions.attach(snapshot.session.sessionId, {
|
|
447
|
+
streamIndex: snapshot.session.streamIndex
|
|
448
|
+
});
|
|
449
|
+
this.session = session;
|
|
450
|
+
this.persistSessionCursor(session);
|
|
451
|
+
let snapshotBoundary;
|
|
452
|
+
for (let index = turnEvents.length - 1; index >= 0; index -= 1) {
|
|
453
|
+
const event = turnEvents[index];
|
|
454
|
+
if (event && isTurnBoundary(event)) {
|
|
455
|
+
snapshotBoundary = event;
|
|
456
|
+
break;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
if (snapshotBoundary) {
|
|
460
|
+
if (snapshotBoundary.type === "session.failed") {
|
|
461
|
+
throw new Error(snapshotBoundary.data.message || snapshotBoundary.data.code);
|
|
462
|
+
}
|
|
463
|
+
handlers.onComplete?.();
|
|
464
|
+
if (!rendered.trim()) throw new Error("Empty response from runtime");
|
|
465
|
+
return rendered.trim();
|
|
466
|
+
}
|
|
467
|
+
let streamIndex = snapshot.session.streamIndex;
|
|
468
|
+
for await (const event of session.stream({ signal })) {
|
|
469
|
+
if (signal.aborted) break;
|
|
470
|
+
rendered = applyMessageEvent(event, rendered, handlers);
|
|
471
|
+
streamIndex += 1;
|
|
472
|
+
savePersistedAgentSession(
|
|
473
|
+
this.visitorSessionId,
|
|
474
|
+
session.state.sessionId,
|
|
475
|
+
streamIndex,
|
|
476
|
+
this.storeOptions
|
|
477
|
+
);
|
|
478
|
+
if (isTurnBoundary(event)) break;
|
|
479
|
+
}
|
|
480
|
+
session = client.sessions.attach(session.state.sessionId, { streamIndex });
|
|
481
|
+
this.session = session;
|
|
482
|
+
this.persistSessionCursor(session);
|
|
483
|
+
if (!rendered.trim() && !signal.aborted) {
|
|
484
|
+
throw new Error("Empty response from runtime");
|
|
376
485
|
}
|
|
377
486
|
return rendered.trim();
|
|
378
487
|
}
|
|
379
488
|
cancelActive() {
|
|
380
|
-
this.activeResponse
|
|
381
|
-
|
|
489
|
+
if (this.activeResponse) {
|
|
490
|
+
this.activeResponse.cancel().catch(() => {
|
|
491
|
+
});
|
|
492
|
+
} else {
|
|
493
|
+
this.session?.cancel().catch(() => {
|
|
494
|
+
});
|
|
495
|
+
}
|
|
382
496
|
}
|
|
383
497
|
};
|
|
384
498
|
function createAgentClient(options) {
|
|
@@ -412,6 +526,12 @@ function createAgentClient(options) {
|
|
|
412
526
|
sendOptions.signal ?? new AbortController().signal,
|
|
413
527
|
sendOptions.handlers
|
|
414
528
|
),
|
|
529
|
+
resumeTurn: (resumeOptions) => session.resumeTurn(
|
|
530
|
+
resumeOptions.message,
|
|
531
|
+
resumeOptions.signal ?? new AbortController().signal,
|
|
532
|
+
resumeOptions.handlers,
|
|
533
|
+
resumeOptions.initialText
|
|
534
|
+
),
|
|
415
535
|
reset: () => session.reset(),
|
|
416
536
|
cancelActive: () => session.cancelActive(),
|
|
417
537
|
getActiveSessionId: () => session.getActiveSessionId()
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/runtime/client.ts","../src/runtime/capability.ts","../src/runtime/config.ts","../src/runtime/session-store.ts","../src/runtime/errors.ts","../src/runtime/health.ts"],"sourcesContent":["export { createAgentClient } from \"./runtime/client\";\nexport {\n DEFAULT_RUNTIME_ORIGIN,\n agentHealthUrl,\n buildEveHost,\n resolveAgentRuntimeConfig,\n} from \"./runtime/config\";\nexport { formatAgentError } from \"./runtime/errors\";\nexport { pingAgentHealth } from \"./runtime/health\";\nexport {\n buildAgentStorageKeyPrefix,\n clearPersistedAgentSession,\n clearVisitorSessionId,\n getOrCreateVisitorSessionId,\n loadPersistedAgentSession,\n savePersistedAgentSession,\n} from \"./runtime/session-store\";\nexport type { SessionStoreOptions } from \"./runtime/session-store\";\nexport type {\n AgentClient,\n AgentClientOptions,\n AgentHealthResult,\n AgentIndexVersion,\n AgentRuntimeConfig,\n AgentSendTurnOptions,\n AgentStreamHandlers,\n PersistedAgentSession,\n} from \"./runtime/types\";\n","import {\n Client,\n ClientError,\n type ClientSession,\n type MessageResponse,\n type MessageStreamEvent,\n} from \"eve/client\";\nimport {\n createAgentRuntimeCapability,\n type AgentRuntimeCapability,\n withCapabilityRefresh,\n} from \"./capability\";\nimport { resolveAgentRuntimeConfig } from \"./config\";\nimport {\n buildAgentStorageKeyPrefix,\n clearPersistedAgentSession,\n getOrCreateVisitorSessionId,\n loadPersistedAgentSession,\n savePersistedAgentSession,\n type SessionStoreOptions,\n} from \"./session-store\";\nimport type {\n AgentClient,\n AgentClientOptions,\n AgentIndexVersion,\n AgentSendTurnOptions,\n AgentStreamHandlers,\n} from \"./types\";\n\nfunction mapStepLabel(event: MessageStreamEvent): { label: string; detail?: string } | null {\n if (event.type !== \"step.started\") return null;\n const stepIndex = event.data.stepIndex;\n return {\n label: \"Model step running\",\n detail: typeof stepIndex === \"number\" ? `Step ${stepIndex + 1}` : undefined,\n };\n}\n\nclass AgentSession {\n private client: Client | undefined;\n private clientHost: string | undefined;\n private session: ClientSession | undefined;\n private activeResponse: MessageResponse | undefined;\n private readonly capability: AgentRuntimeCapability;\n\n constructor(\n private readonly indexId: string,\n private readonly version: AgentIndexVersion,\n private readonly runtimeOrigin: string,\n private readonly visitorSessionId: string,\n private readonly storeOptions: SessionStoreOptions,\n ) {\n this.capability = createAgentRuntimeCapability({\n indexId,\n runtimeOrigin,\n visitorSessionId,\n });\n }\n\n getActiveSessionId(): string | undefined {\n return (\n this.session?.state.sessionId ??\n loadPersistedAgentSession(this.visitorSessionId, this.storeOptions)?.sessionId\n );\n }\n\n reset() {\n void this.activeResponse?.cancel().catch(() => {});\n this.activeResponse = undefined;\n this.session = undefined;\n clearPersistedAgentSession(this.visitorSessionId, this.storeOptions);\n }\n\n private persistSessionCursor(session: ClientSession) {\n savePersistedAgentSession(\n this.visitorSessionId,\n session.state.sessionId,\n session.state.streamIndex,\n this.storeOptions,\n );\n }\n\n private ensureClient(): Client {\n const config = resolveAgentRuntimeConfig({\n indexId: this.indexId,\n version: this.version,\n runtimeOrigin: this.runtimeOrigin,\n });\n if (!config.indexId) {\n throw new Error(\"indexId is required.\");\n }\n\n if (this.client && this.clientHost === config.host) {\n return this.client;\n }\n\n this.reset();\n this.client = new Client({\n auth: { bearer: () => this.capability.getAccessToken() },\n host: config.host,\n redirect: \"error\",\n });\n this.clientHost = config.host;\n return this.client;\n }\n\n private attachPersistedSession(client: Client): ClientSession | undefined {\n const persisted = loadPersistedAgentSession(this.visitorSessionId, this.storeOptions);\n if (!persisted?.sessionId) return undefined;\n\n return client.sessions.attach(persisted.sessionId, {\n streamIndex: persisted.streamIndex,\n });\n }\n\n async sendTurn(\n message: string,\n signal: AbortSignal,\n handlers: AgentStreamHandlers,\n ): Promise<string> {\n const client = this.ensureClient();\n let response: MessageResponse | undefined;\n let session = this.session ?? this.attachPersistedSession(client);\n\n if (session) {\n this.session = session;\n try {\n const activeSession = session;\n response = await withCapabilityRefresh(this.capability, () =>\n activeSession.send(message, { signal }),\n );\n } catch (error) {\n if (\n error instanceof ClientError &&\n error.status === 409 &&\n error.code === \"session_not_active\"\n ) {\n clearPersistedAgentSession(this.visitorSessionId, this.storeOptions);\n this.session = undefined;\n session = undefined;\n } else {\n throw error;\n }\n }\n }\n\n if (!response) {\n const created = await withCapabilityRefresh(this.capability, () =>\n client.sessions.create({ message, signal }),\n );\n response = created.response;\n session = created.session;\n this.session = session;\n this.persistSessionCursor(session);\n }\n\n this.activeResponse = response;\n let rendered = \"\";\n\n try {\n for await (const event of response) {\n if (signal.aborted) break;\n\n const step = mapStepLabel(event);\n if (step) handlers.onStep?.(step.label, step.detail);\n\n if (event.type === \"message.appended\") {\n const { messageDelta, messageSoFar } = event.data;\n let delta = messageDelta;\n if (messageSoFar.startsWith(rendered)) {\n delta = messageSoFar.slice(rendered.length);\n rendered = messageSoFar;\n } else if (messageDelta) {\n rendered += messageDelta;\n }\n if (delta) handlers.onDelta(delta);\n }\n\n if (event.type === \"message.completed\") {\n handlers.onComplete?.();\n }\n\n if (event.type === \"session.failed\") {\n throw new Error(event.data.message || event.data.code);\n }\n }\n } finally {\n this.activeResponse = undefined;\n if (session) {\n this.persistSessionCursor(session);\n }\n }\n\n if (!rendered.trim() && !signal.aborted) {\n throw new Error(\"Empty response from runtime\");\n }\n\n if (signal.aborted) {\n await response.cancel().catch(() => {});\n }\n\n return rendered.trim();\n }\n\n cancelActive() {\n this.activeResponse?.cancel().catch(() => {});\n }\n}\n\nexport function createAgentClient(options: AgentClientOptions): AgentClient {\n const indexId = options.indexId.trim();\n if (!indexId) {\n throw new Error(\"indexId is required.\");\n }\n\n const version = options.version ?? \"published\";\n const runtimeOrigin = resolveAgentRuntimeConfig({\n indexId,\n runtimeOrigin: options.runtimeOrigin,\n version,\n }).origin;\n const storeOptions: SessionStoreOptions = {\n storageKeyPrefix:\n options.storageKeyPrefix?.trim() ||\n buildAgentStorageKeyPrefix({\n customerId: options.customerId,\n indexId,\n version,\n runtimeOrigin,\n }),\n };\n const visitorSessionId =\n options.visitorSessionId?.trim() || getOrCreateVisitorSessionId(storeOptions);\n\n const session = new AgentSession(indexId, version, runtimeOrigin, visitorSessionId, storeOptions);\n\n return {\n indexId,\n version,\n runtimeOrigin,\n visitorSessionId,\n sendTurn: (message, sendOptions: AgentSendTurnOptions) =>\n session.sendTurn(\n message,\n sendOptions.signal ?? new AbortController().signal,\n sendOptions.handlers,\n ),\n reset: () => session.reset(),\n cancelActive: () => session.cancelActive(),\n getActiveSessionId: () => session.getActiveSessionId(),\n };\n}\n","import { ClientError } from \"eve/client\";\n\ntype RuntimeCapability = {\n accessToken: string;\n refreshAt: number;\n};\n\ntype AgentRuntimeCapabilityOptions = {\n indexId: string;\n runtimeOrigin: string;\n visitorSessionId: string;\n fetchImplementation?: typeof fetch;\n now?: () => number;\n};\n\nconst MAX_REFRESH_SKEW_MS = 30_000;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseBootstrapResponse(value: unknown, indexId: string, now: number): RuntimeCapability {\n if (\n !isRecord(value) ||\n value.apiVersion !== \"webless.ai/agent-runtime-bootstrap/v1\" ||\n typeof value.accessToken !== \"string\" ||\n !value.accessToken ||\n typeof value.expiresAt !== \"string\" ||\n !isRecord(value.identity) ||\n value.identity.indexId !== indexId ||\n typeof value.identity.revision !== \"string\" ||\n !value.identity.revision ||\n typeof value.identity.tenantId !== \"string\" ||\n !value.identity.tenantId ||\n typeof value.origin !== \"string\" ||\n !value.origin ||\n value.tokenType !== \"Bearer\" ||\n typeof value.visitorSubject !== \"string\" ||\n !value.visitorSubject\n ) {\n throw new Error(\"Agent Runtime returned an invalid access response.\");\n }\n\n const expiresAt = Date.parse(value.expiresAt);\n if (!Number.isFinite(expiresAt) || expiresAt <= now) {\n throw new Error(\"Agent Runtime returned an expired access response.\");\n }\n\n const refreshSkew = Math.min(MAX_REFRESH_SKEW_MS, Math.floor((expiresAt - now) / 10));\n return {\n accessToken: value.accessToken,\n refreshAt: expiresAt - refreshSkew,\n };\n}\n\nasync function readBootstrapError(response: Response): Promise<string> {\n const fallback = `Agent Runtime is unavailable (${response.status}).`;\n try {\n const value: unknown = await response.json();\n return isRecord(value) && typeof value.error === \"string\" && value.error\n ? value.error\n : fallback;\n } catch {\n return fallback;\n }\n}\n\nexport function createAgentRuntimeCapability(options: AgentRuntimeCapabilityOptions) {\n const fetchImplementation = options.fetchImplementation ?? fetch;\n const now = options.now ?? Date.now;\n let capability: RuntimeCapability | undefined;\n let pendingBootstrap: Promise<RuntimeCapability> | undefined;\n\n const bootstrap = async (): Promise<RuntimeCapability> => {\n const response = await fetchImplementation(`${options.runtimeOrigin}/webless/v1/bootstrap`, {\n body: JSON.stringify({\n clientSessionId: options.visitorSessionId,\n indexId: options.indexId,\n }),\n headers: { \"content-type\": \"application/json\" },\n method: \"POST\",\n });\n if (!response.ok) {\n throw new Error(await readBootstrapError(response));\n }\n\n let value: unknown;\n try {\n value = await response.json();\n } catch {\n throw new Error(\"Agent Runtime returned an invalid access response.\");\n }\n return parseBootstrapResponse(value, options.indexId, now());\n };\n\n return {\n getAccessToken: async (): Promise<string> => {\n if (capability && capability.refreshAt > now()) {\n return capability.accessToken;\n }\n\n pendingBootstrap ??= bootstrap().finally(() => {\n pendingBootstrap = undefined;\n });\n capability = await pendingBootstrap;\n return capability.accessToken;\n },\n invalidate: () => {\n capability = undefined;\n },\n };\n}\n\nexport type AgentRuntimeCapability = ReturnType<typeof createAgentRuntimeCapability>;\n\nexport async function withCapabilityRefresh<T>(\n capability: AgentRuntimeCapability,\n request: () => Promise<T>,\n): Promise<T> {\n try {\n return await request();\n } catch (error) {\n if (!(error instanceof ClientError) || error.status !== 401) {\n throw error;\n }\n capability.invalidate();\n return await request();\n }\n}\n","import type { AgentIndexVersion, AgentRuntimeConfig } from \"./types\";\n\nexport const DEFAULT_RUNTIME_ORIGIN = \"https://runtime.staging.webless.ai\";\n\nconst trimTrailingSlash = (value: string) => value.replace(/\\/+$/, \"\");\n\nexport function buildEveHost(\n origin: string,\n indexId: string,\n version: AgentIndexVersion = \"published\",\n): string {\n const base = trimTrailingSlash(origin);\n const searchParams = new URLSearchParams({ indexId: indexId.trim() });\n if (version === \"unpublished\") {\n searchParams.set(\"version\", version);\n }\n return `${base}?${searchParams.toString()}`;\n}\n\nexport function resolveAgentRuntimeConfig(input: {\n indexId: string;\n runtimeOrigin?: string;\n version?: AgentIndexVersion;\n}): AgentRuntimeConfig {\n const origin = trimTrailingSlash(input.runtimeOrigin?.trim() || DEFAULT_RUNTIME_ORIGIN);\n const resolvedIndexId = input.indexId.trim();\n const version = input.version ?? \"published\";\n\n return {\n origin,\n indexId: resolvedIndexId,\n version,\n host: resolvedIndexId ? buildEveHost(origin, resolvedIndexId, version) : origin,\n };\n}\n\nexport function agentHealthUrl(runtimeOrigin?: string): string {\n const origin = trimTrailingSlash(runtimeOrigin?.trim() || DEFAULT_RUNTIME_ORIGIN);\n return `${origin}/eve/v1/health`;\n}\n","import type { AgentIndexVersion, PersistedAgentSession } from \"./types\";\n\nconst DEFAULT_STORAGE_KEY_PREFIX = \"webless:agent\";\n\nexport type SessionStoreOptions = {\n storageKeyPrefix?: string;\n};\n\nfunction normalizeRuntimeOrigin(runtimeOrigin?: string) {\n const trimmed = runtimeOrigin?.trim();\n if (!trimmed) return \"_\";\n return trimmed.replace(/\\/+$/, \"\");\n}\n\nexport function buildAgentStorageKeyPrefix(input: {\n customerId?: string;\n indexId: string;\n runtimeOrigin?: string;\n version?: AgentIndexVersion;\n}) {\n const customerId = input.customerId?.trim() || \"_\";\n const indexId = input.indexId.trim();\n if (!indexId) {\n throw new Error(\"indexId is required to build agent storage keys.\");\n }\n\n const versionSuffix = input.version === \"unpublished\" ? \":unpublished\" : \"\";\n return `${DEFAULT_STORAGE_KEY_PREFIX}:${customerId}:${indexId}${versionSuffix}:${normalizeRuntimeOrigin(input.runtimeOrigin)}`;\n}\n\nfunction createSessionId(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n return `sess_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;\n}\n\nfunction resolvePrefix(options?: SessionStoreOptions) {\n return options?.storageKeyPrefix?.trim() || DEFAULT_STORAGE_KEY_PREFIX;\n}\n\nexport function getOrCreateVisitorSessionId(options?: SessionStoreOptions): string {\n const prefix = resolvePrefix(options);\n const visitorKey = `${prefix}:visitorSessionId`;\n\n if (typeof sessionStorage === \"undefined\") {\n return createSessionId();\n }\n\n const existing = sessionStorage.getItem(visitorKey)?.trim();\n if (existing) return existing;\n\n const next = createSessionId();\n sessionStorage.setItem(visitorKey, next);\n return next;\n}\n\nexport function clearVisitorSessionId(options?: SessionStoreOptions) {\n if (typeof sessionStorage === \"undefined\") return;\n\n const prefix = resolvePrefix(options);\n sessionStorage.removeItem(`${prefix}:visitorSessionId`);\n}\n\nfunction runtimeSessionIdKey(visitorSessionId: string, prefix: string) {\n return `${prefix}:eve:${visitorSessionId}:sessionId`;\n}\n\nfunction runtimeStreamIndexKey(visitorSessionId: string, prefix: string) {\n return `${prefix}:eve:${visitorSessionId}:streamIndex`;\n}\n\nexport function loadPersistedAgentSession(\n visitorSessionId: string,\n options?: SessionStoreOptions,\n): PersistedAgentSession | null {\n if (typeof sessionStorage === \"undefined\" || !visitorSessionId.trim()) return null;\n\n const prefix = resolvePrefix(options);\n const sessionId = sessionStorage.getItem(runtimeSessionIdKey(visitorSessionId, prefix))?.trim();\n if (!sessionId) return null;\n\n const rawIndex = sessionStorage.getItem(runtimeStreamIndexKey(visitorSessionId, prefix));\n const streamIndex = rawIndex ? Number.parseInt(rawIndex, 10) : 0;\n\n return {\n sessionId,\n streamIndex: Number.isFinite(streamIndex) && streamIndex >= 0 ? streamIndex : 0,\n };\n}\n\nexport function savePersistedAgentSession(\n visitorSessionId: string,\n sessionId: string,\n streamIndex: number,\n options?: SessionStoreOptions,\n) {\n if (typeof sessionStorage === \"undefined\" || !visitorSessionId.trim() || !sessionId.trim()) {\n return;\n }\n\n const prefix = resolvePrefix(options);\n sessionStorage.setItem(runtimeSessionIdKey(visitorSessionId, prefix), sessionId);\n sessionStorage.setItem(\n runtimeStreamIndexKey(visitorSessionId, prefix),\n String(Math.max(0, streamIndex)),\n );\n}\n\nexport function clearPersistedAgentSession(\n visitorSessionId: string,\n options?: SessionStoreOptions,\n) {\n if (typeof sessionStorage === \"undefined\" || !visitorSessionId.trim()) return;\n const prefix = resolvePrefix(options);\n sessionStorage.removeItem(runtimeSessionIdKey(visitorSessionId, prefix));\n sessionStorage.removeItem(runtimeStreamIndexKey(visitorSessionId, prefix));\n}\n","import { ClientError } from \"eve/client\";\n\nexport function formatAgentError(error: unknown): string {\n if (error instanceof ClientError) {\n if (error.status === 401 && error.code === \"index_required\") {\n return \"Missing indexId — pass a published index id to createAgentClient().\";\n }\n if (error.status === 403 && error.code === \"agent_unavailable\") {\n return \"Agent unavailable for this index (disabled or unpublished).\";\n }\n if (error.status === 409 && error.code === \"session_not_active\") {\n return \"Session expired — send a new message to start again.\";\n }\n return error.message || `Runtime error (${error.status})`;\n }\n if (error instanceof DOMException && error.name === \"AbortError\") {\n return \"\";\n }\n if (error instanceof Error) return error.message;\n return \"Runtime request failed\";\n}\n","import { formatAgentError } from \"./errors\";\nimport { agentHealthUrl } from \"./config\";\nimport type { AgentHealthResult } from \"./types\";\n\nexport async function pingAgentHealth(\n runtimeOrigin?: string,\n fetchImpl: typeof fetch = fetch,\n): Promise<AgentHealthResult> {\n const healthUrl = agentHealthUrl(runtimeOrigin);\n\n try {\n const response = await fetchImpl(healthUrl, {\n headers: { Accept: \"application/json\" },\n cache: \"no-store\",\n });\n if (!response.ok) {\n return { ok: false, detail: `Health check failed (${response.status})` };\n }\n const payload = (await response.json()) as { status?: string; ok?: boolean };\n if (payload.ok === true) {\n return { ok: true, detail: payload.status ?? \"ready\" };\n }\n return { ok: false, detail: \"Runtime health response was not ok\" };\n } catch (error) {\n return { ok: false, detail: formatAgentError(error) || \"Health check failed\" };\n }\n}\n"],"mappings":"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","names":["import_client","import_client"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/runtime/client.ts","../src/runtime/capability.ts","../src/runtime/config.ts","../src/runtime/session-store.ts","../src/runtime/errors.ts","../src/runtime/health.ts"],"sourcesContent":["export { createAgentClient } from \"./runtime/client\";\nexport {\n DEFAULT_RUNTIME_ORIGIN,\n agentHealthUrl,\n buildEveHost,\n resolveAgentRuntimeConfig,\n} from \"./runtime/config\";\nexport { formatAgentError } from \"./runtime/errors\";\nexport { pingAgentHealth } from \"./runtime/health\";\nexport {\n buildAgentStorageKeyPrefix,\n clearPersistedAgentSession,\n clearVisitorSessionId,\n getOrCreateVisitorSessionId,\n loadPersistedAgentSession,\n savePersistedAgentSession,\n} from \"./runtime/session-store\";\nexport type { SessionStoreOptions } from \"./runtime/session-store\";\nexport type {\n AgentClient,\n AgentClientOptions,\n AgentHealthResult,\n AgentIndexVersion,\n AgentRuntimeConfig,\n AgentResumeTurnOptions,\n AgentSendTurnOptions,\n AgentStreamHandlers,\n PersistedAgentSession,\n} from \"./runtime/types\";\n","import {\n Client,\n ClientError,\n type ClientSession,\n type MessageResponse,\n type MessageStreamEvent,\n} from \"eve/client\";\nimport {\n createAgentRuntimeCapability,\n type AgentRuntimeCapability,\n withCapabilityRefresh,\n} from \"./capability\";\nimport { resolveAgentRuntimeConfig } from \"./config\";\nimport {\n buildAgentStorageKeyPrefix,\n clearPersistedAgentSession,\n getOrCreateVisitorSessionId,\n loadPersistedAgentSession,\n savePersistedAgentSession,\n type SessionStoreOptions,\n} from \"./session-store\";\nimport type {\n AgentClient,\n AgentClientOptions,\n AgentIndexVersion,\n AgentResumeTurnOptions,\n AgentSendTurnOptions,\n AgentStreamHandlers,\n} from \"./types\";\n\nfunction isTurnBoundary(event: MessageStreamEvent) {\n return (\n event.type === \"session.waiting\" ||\n event.type === \"session.completed\" ||\n event.type === \"session.failed\"\n );\n}\n\nfunction applyMessageEvent(\n event: MessageStreamEvent,\n rendered: string,\n handlers: AgentStreamHandlers,\n) {\n const step = mapStepLabel(event);\n if (step) handlers.onStep?.(step.label, step.detail);\n\n if (event.type === \"session.failed\") {\n throw new Error(event.data.message || event.data.code);\n }\n\n if (event.type === \"message.completed\") {\n handlers.onComplete?.();\n }\n\n if (event.type !== \"message.appended\") return rendered;\n\n const { messageDelta, messageSoFar } = event.data;\n let delta = messageDelta;\n let next = rendered;\n if (messageSoFar.startsWith(rendered)) {\n delta = messageSoFar.slice(rendered.length);\n next = messageSoFar;\n } else if (messageDelta) {\n next += messageDelta;\n }\n if (delta) handlers.onDelta(delta);\n return next;\n}\n\nfunction latestTurnEvents(events: readonly MessageStreamEvent[]) {\n let startIndex = -1;\n for (let index = events.length - 1; index >= 0; index -= 1) {\n if (events[index]?.type === \"message.received\") {\n startIndex = index;\n break;\n }\n }\n return startIndex >= 0 ? events.slice(startIndex) : [];\n}\n\nfunction renderTurn(events: readonly MessageStreamEvent[]) {\n let rendered = \"\";\n for (const event of events) {\n if (event.type !== \"message.appended\") continue;\n const { messageDelta, messageSoFar } = event.data;\n if (messageSoFar.startsWith(rendered)) {\n rendered = messageSoFar;\n } else if (messageDelta) {\n rendered += messageDelta;\n }\n }\n return rendered;\n}\n\nfunction mapStepLabel(event: MessageStreamEvent): { label: string; detail?: string } | null {\n if (event.type !== \"step.started\") return null;\n const stepIndex = event.data.stepIndex;\n return {\n label: \"Model step running\",\n detail: typeof stepIndex === \"number\" ? `Step ${stepIndex + 1}` : undefined,\n };\n}\n\nclass AgentSession {\n private client: Client | undefined;\n private clientHost: string | undefined;\n private session: ClientSession | undefined;\n private activeResponse: MessageResponse | undefined;\n private readonly capability: AgentRuntimeCapability;\n\n constructor(\n private readonly indexId: string,\n private readonly version: AgentIndexVersion,\n private readonly runtimeOrigin: string,\n private readonly visitorSessionId: string,\n private readonly storeOptions: SessionStoreOptions,\n ) {\n this.capability = createAgentRuntimeCapability({\n indexId,\n runtimeOrigin,\n visitorSessionId,\n });\n }\n\n getActiveSessionId(): string | undefined {\n return (\n this.session?.state.sessionId ??\n loadPersistedAgentSession(this.visitorSessionId, this.storeOptions)?.sessionId\n );\n }\n\n reset() {\n if (this.activeResponse) {\n void this.activeResponse.cancel().catch(() => {});\n } else {\n void this.session?.cancel().catch(() => {});\n }\n this.activeResponse = undefined;\n this.session = undefined;\n clearPersistedAgentSession(this.visitorSessionId, this.storeOptions);\n }\n\n private persistSessionCursor(session: ClientSession) {\n savePersistedAgentSession(\n this.visitorSessionId,\n session.state.sessionId,\n session.state.streamIndex,\n this.storeOptions,\n );\n }\n\n private ensureClient(): Client {\n const config = resolveAgentRuntimeConfig({\n indexId: this.indexId,\n version: this.version,\n runtimeOrigin: this.runtimeOrigin,\n });\n if (!config.indexId) {\n throw new Error(\"indexId is required.\");\n }\n\n if (this.client && this.clientHost === config.host) {\n return this.client;\n }\n\n this.activeResponse = undefined;\n this.session = undefined;\n this.client = new Client({\n auth: { bearer: () => this.capability.getAccessToken() },\n host: config.host,\n redirect: \"error\",\n });\n this.clientHost = config.host;\n return this.client;\n }\n\n private attachPersistedSession(client: Client): ClientSession | undefined {\n const persisted = loadPersistedAgentSession(this.visitorSessionId, this.storeOptions);\n if (!persisted?.sessionId) return undefined;\n\n return client.sessions.attach(persisted.sessionId, {\n streamIndex: persisted.streamIndex,\n });\n }\n\n async sendTurn(\n message: string,\n signal: AbortSignal,\n handlers: AgentStreamHandlers,\n ): Promise<string> {\n const client = this.ensureClient();\n let response: MessageResponse | undefined;\n let session = this.session ?? this.attachPersistedSession(client);\n\n if (session) {\n this.session = session;\n try {\n const activeSession = session;\n response = await withCapabilityRefresh(this.capability, () =>\n activeSession.send(message, { signal }),\n );\n } catch (error) {\n if (\n error instanceof ClientError &&\n error.status === 409 &&\n error.code === \"session_not_active\"\n ) {\n clearPersistedAgentSession(this.visitorSessionId, this.storeOptions);\n this.session = undefined;\n session = undefined;\n } else {\n throw error;\n }\n }\n }\n\n if (!response) {\n const created = await withCapabilityRefresh(this.capability, () =>\n client.sessions.create({ message, signal }),\n );\n response = created.response;\n session = created.session;\n this.session = session;\n this.persistSessionCursor(session);\n }\n\n this.activeResponse = response;\n let streamIndex = session?.state.streamIndex ?? 0;\n let rendered = \"\";\n\n try {\n for await (const event of response) {\n if (signal.aborted) break;\n rendered = applyMessageEvent(event, rendered, handlers);\n streamIndex += 1;\n if (session) {\n savePersistedAgentSession(\n this.visitorSessionId,\n session.state.sessionId,\n streamIndex,\n this.storeOptions,\n );\n }\n }\n } finally {\n this.activeResponse = undefined;\n if (session) {\n this.persistSessionCursor(session);\n }\n }\n\n if (!rendered.trim() && !signal.aborted) {\n throw new Error(\"Empty response from runtime\");\n }\n\n return rendered.trim();\n }\n\n async resumeTurn(\n message: string,\n signal: AbortSignal,\n handlers: AgentStreamHandlers,\n initialText = \"\",\n ): Promise<string | null> {\n const persisted = loadPersistedAgentSession(this.visitorSessionId, this.storeOptions);\n if (!persisted) return null;\n\n const client = this.ensureClient();\n const attached = client.sessions.attach(persisted.sessionId, {\n streamIndex: persisted.streamIndex,\n });\n const snapshot = await withCapabilityRefresh(this.capability, () =>\n attached.snapshot({ signal }),\n );\n const turnEvents = latestTurnEvents(snapshot.events);\n const received = turnEvents[0];\n if (received?.type !== \"message.received\" || received.data.message !== message) {\n return null;\n }\n let rendered = renderTurn(turnEvents);\n\n if (rendered.startsWith(initialText)) {\n const missedText = rendered.slice(initialText.length);\n if (missedText) handlers.onDelta(missedText);\n } else if (initialText.startsWith(rendered)) {\n rendered = initialText;\n } else if (!initialText.startsWith(rendered)) {\n rendered = initialText + rendered;\n }\n\n let session = client.sessions.attach(snapshot.session.sessionId, {\n streamIndex: snapshot.session.streamIndex,\n });\n this.session = session;\n this.persistSessionCursor(session);\n\n let snapshotBoundary: MessageStreamEvent | undefined;\n for (let index = turnEvents.length - 1; index >= 0; index -= 1) {\n const event = turnEvents[index];\n if (event && isTurnBoundary(event)) {\n snapshotBoundary = event;\n break;\n }\n }\n if (snapshotBoundary) {\n if (snapshotBoundary.type === \"session.failed\") {\n throw new Error(snapshotBoundary.data.message || snapshotBoundary.data.code);\n }\n handlers.onComplete?.();\n if (!rendered.trim()) throw new Error(\"Empty response from runtime\");\n return rendered.trim();\n }\n\n let streamIndex = snapshot.session.streamIndex;\n for await (const event of session.stream({ signal })) {\n if (signal.aborted) break;\n rendered = applyMessageEvent(event, rendered, handlers);\n streamIndex += 1;\n savePersistedAgentSession(\n this.visitorSessionId,\n session.state.sessionId,\n streamIndex,\n this.storeOptions,\n );\n if (isTurnBoundary(event)) break;\n }\n\n session = client.sessions.attach(session.state.sessionId, { streamIndex });\n this.session = session;\n this.persistSessionCursor(session);\n\n if (!rendered.trim() && !signal.aborted) {\n throw new Error(\"Empty response from runtime\");\n }\n return rendered.trim();\n }\n\n cancelActive() {\n if (this.activeResponse) {\n this.activeResponse.cancel().catch(() => {});\n } else {\n this.session?.cancel().catch(() => {});\n }\n }\n}\n\nexport function createAgentClient(options: AgentClientOptions): AgentClient {\n const indexId = options.indexId.trim();\n if (!indexId) {\n throw new Error(\"indexId is required.\");\n }\n\n const version = options.version ?? \"published\";\n const runtimeOrigin = resolveAgentRuntimeConfig({\n indexId,\n runtimeOrigin: options.runtimeOrigin,\n version,\n }).origin;\n const storeOptions: SessionStoreOptions = {\n storageKeyPrefix:\n options.storageKeyPrefix?.trim() ||\n buildAgentStorageKeyPrefix({\n customerId: options.customerId,\n indexId,\n version,\n runtimeOrigin,\n }),\n };\n const visitorSessionId =\n options.visitorSessionId?.trim() || getOrCreateVisitorSessionId(storeOptions);\n\n const session = new AgentSession(indexId, version, runtimeOrigin, visitorSessionId, storeOptions);\n\n return {\n indexId,\n version,\n runtimeOrigin,\n visitorSessionId,\n sendTurn: (message, sendOptions: AgentSendTurnOptions) =>\n session.sendTurn(\n message,\n sendOptions.signal ?? new AbortController().signal,\n sendOptions.handlers,\n ),\n resumeTurn: (resumeOptions: AgentResumeTurnOptions) =>\n session.resumeTurn(\n resumeOptions.message,\n resumeOptions.signal ?? new AbortController().signal,\n resumeOptions.handlers,\n resumeOptions.initialText,\n ),\n reset: () => session.reset(),\n cancelActive: () => session.cancelActive(),\n getActiveSessionId: () => session.getActiveSessionId(),\n };\n}\n","import { ClientError } from \"eve/client\";\n\ntype RuntimeCapability = {\n accessToken: string;\n refreshAt: number;\n};\n\ntype AgentRuntimeCapabilityOptions = {\n indexId: string;\n runtimeOrigin: string;\n visitorSessionId: string;\n fetchImplementation?: typeof fetch;\n now?: () => number;\n};\n\nconst MAX_REFRESH_SKEW_MS = 30_000;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseBootstrapResponse(value: unknown, indexId: string, now: number): RuntimeCapability {\n if (\n !isRecord(value) ||\n value.apiVersion !== \"webless.ai/agent-runtime-bootstrap/v1\" ||\n typeof value.accessToken !== \"string\" ||\n !value.accessToken ||\n typeof value.expiresAt !== \"string\" ||\n !isRecord(value.identity) ||\n value.identity.indexId !== indexId ||\n typeof value.identity.revision !== \"string\" ||\n !value.identity.revision ||\n typeof value.identity.tenantId !== \"string\" ||\n !value.identity.tenantId ||\n typeof value.origin !== \"string\" ||\n !value.origin ||\n value.tokenType !== \"Bearer\" ||\n typeof value.visitorSubject !== \"string\" ||\n !value.visitorSubject\n ) {\n throw new Error(\"Agent Runtime returned an invalid access response.\");\n }\n\n const expiresAt = Date.parse(value.expiresAt);\n if (!Number.isFinite(expiresAt) || expiresAt <= now) {\n throw new Error(\"Agent Runtime returned an expired access response.\");\n }\n\n const refreshSkew = Math.min(MAX_REFRESH_SKEW_MS, Math.floor((expiresAt - now) / 10));\n return {\n accessToken: value.accessToken,\n refreshAt: expiresAt - refreshSkew,\n };\n}\n\nasync function readBootstrapError(response: Response): Promise<string> {\n const fallback = `Agent Runtime is unavailable (${response.status}).`;\n try {\n const value: unknown = await response.json();\n return isRecord(value) && typeof value.error === \"string\" && value.error\n ? value.error\n : fallback;\n } catch {\n return fallback;\n }\n}\n\nexport function createAgentRuntimeCapability(options: AgentRuntimeCapabilityOptions) {\n const fetchImplementation = options.fetchImplementation ?? fetch;\n const now = options.now ?? Date.now;\n let capability: RuntimeCapability | undefined;\n let pendingBootstrap: Promise<RuntimeCapability> | undefined;\n\n const bootstrap = async (): Promise<RuntimeCapability> => {\n const response = await fetchImplementation(`${options.runtimeOrigin}/webless/v1/bootstrap`, {\n body: JSON.stringify({\n clientSessionId: options.visitorSessionId,\n indexId: options.indexId,\n }),\n headers: { \"content-type\": \"application/json\" },\n method: \"POST\",\n });\n if (!response.ok) {\n throw new Error(await readBootstrapError(response));\n }\n\n let value: unknown;\n try {\n value = await response.json();\n } catch {\n throw new Error(\"Agent Runtime returned an invalid access response.\");\n }\n return parseBootstrapResponse(value, options.indexId, now());\n };\n\n return {\n getAccessToken: async (): Promise<string> => {\n if (capability && capability.refreshAt > now()) {\n return capability.accessToken;\n }\n\n pendingBootstrap ??= bootstrap().finally(() => {\n pendingBootstrap = undefined;\n });\n capability = await pendingBootstrap;\n return capability.accessToken;\n },\n invalidate: () => {\n capability = undefined;\n },\n };\n}\n\nexport type AgentRuntimeCapability = ReturnType<typeof createAgentRuntimeCapability>;\n\nexport async function withCapabilityRefresh<T>(\n capability: AgentRuntimeCapability,\n request: () => Promise<T>,\n): Promise<T> {\n try {\n return await request();\n } catch (error) {\n if (!(error instanceof ClientError) || error.status !== 401) {\n throw error;\n }\n capability.invalidate();\n return await request();\n }\n}\n","import type { AgentIndexVersion, AgentRuntimeConfig } from \"./types\";\n\nexport const DEFAULT_RUNTIME_ORIGIN = \"https://runtime.staging.webless.ai\";\n\nconst trimTrailingSlash = (value: string) => value.replace(/\\/+$/, \"\");\n\nexport function buildEveHost(\n origin: string,\n indexId: string,\n version: AgentIndexVersion = \"published\",\n): string {\n const base = trimTrailingSlash(origin);\n const searchParams = new URLSearchParams({ indexId: indexId.trim() });\n if (version === \"unpublished\") {\n searchParams.set(\"version\", version);\n }\n return `${base}?${searchParams.toString()}`;\n}\n\nexport function resolveAgentRuntimeConfig(input: {\n indexId: string;\n runtimeOrigin?: string;\n version?: AgentIndexVersion;\n}): AgentRuntimeConfig {\n const origin = trimTrailingSlash(input.runtimeOrigin?.trim() || DEFAULT_RUNTIME_ORIGIN);\n const resolvedIndexId = input.indexId.trim();\n const version = input.version ?? \"published\";\n\n return {\n origin,\n indexId: resolvedIndexId,\n version,\n host: resolvedIndexId ? buildEveHost(origin, resolvedIndexId, version) : origin,\n };\n}\n\nexport function agentHealthUrl(runtimeOrigin?: string): string {\n const origin = trimTrailingSlash(runtimeOrigin?.trim() || DEFAULT_RUNTIME_ORIGIN);\n return `${origin}/eve/v1/health`;\n}\n","import type { AgentIndexVersion, PersistedAgentSession } from \"./types\";\n\nconst DEFAULT_STORAGE_KEY_PREFIX = \"webless:agent\";\n\nexport type SessionStoreOptions = {\n storageKeyPrefix?: string;\n};\n\nfunction normalizeRuntimeOrigin(runtimeOrigin?: string) {\n const trimmed = runtimeOrigin?.trim();\n if (!trimmed) return \"_\";\n return trimmed.replace(/\\/+$/, \"\");\n}\n\nexport function buildAgentStorageKeyPrefix(input: {\n customerId?: string;\n indexId: string;\n runtimeOrigin?: string;\n version?: AgentIndexVersion;\n}) {\n const customerId = input.customerId?.trim() || \"_\";\n const indexId = input.indexId.trim();\n if (!indexId) {\n throw new Error(\"indexId is required to build agent storage keys.\");\n }\n\n const versionSuffix = input.version === \"unpublished\" ? \":unpublished\" : \"\";\n return `${DEFAULT_STORAGE_KEY_PREFIX}:${customerId}:${indexId}${versionSuffix}:${normalizeRuntimeOrigin(input.runtimeOrigin)}`;\n}\n\nfunction createSessionId(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n return `sess_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;\n}\n\nfunction resolvePrefix(options?: SessionStoreOptions) {\n return options?.storageKeyPrefix?.trim() || DEFAULT_STORAGE_KEY_PREFIX;\n}\n\nexport function getOrCreateVisitorSessionId(options?: SessionStoreOptions): string {\n const prefix = resolvePrefix(options);\n const visitorKey = `${prefix}:visitorSessionId`;\n\n if (typeof sessionStorage === \"undefined\") {\n return createSessionId();\n }\n\n const existing = sessionStorage.getItem(visitorKey)?.trim();\n if (existing) return existing;\n\n const next = createSessionId();\n sessionStorage.setItem(visitorKey, next);\n return next;\n}\n\nexport function clearVisitorSessionId(options?: SessionStoreOptions) {\n if (typeof sessionStorage === \"undefined\") return;\n\n const prefix = resolvePrefix(options);\n sessionStorage.removeItem(`${prefix}:visitorSessionId`);\n}\n\nfunction runtimeSessionIdKey(visitorSessionId: string, prefix: string) {\n return `${prefix}:eve:${visitorSessionId}:sessionId`;\n}\n\nfunction runtimeStreamIndexKey(visitorSessionId: string, prefix: string) {\n return `${prefix}:eve:${visitorSessionId}:streamIndex`;\n}\n\nexport function loadPersistedAgentSession(\n visitorSessionId: string,\n options?: SessionStoreOptions,\n): PersistedAgentSession | null {\n if (typeof sessionStorage === \"undefined\" || !visitorSessionId.trim()) return null;\n\n const prefix = resolvePrefix(options);\n const sessionId = sessionStorage.getItem(runtimeSessionIdKey(visitorSessionId, prefix))?.trim();\n if (!sessionId) return null;\n\n const rawIndex = sessionStorage.getItem(runtimeStreamIndexKey(visitorSessionId, prefix));\n const streamIndex = rawIndex ? Number.parseInt(rawIndex, 10) : 0;\n\n return {\n sessionId,\n streamIndex: Number.isFinite(streamIndex) && streamIndex >= 0 ? streamIndex : 0,\n };\n}\n\nexport function savePersistedAgentSession(\n visitorSessionId: string,\n sessionId: string,\n streamIndex: number,\n options?: SessionStoreOptions,\n) {\n if (typeof sessionStorage === \"undefined\" || !visitorSessionId.trim() || !sessionId.trim()) {\n return;\n }\n\n const prefix = resolvePrefix(options);\n sessionStorage.setItem(runtimeSessionIdKey(visitorSessionId, prefix), sessionId);\n sessionStorage.setItem(\n runtimeStreamIndexKey(visitorSessionId, prefix),\n String(Math.max(0, streamIndex)),\n );\n}\n\nexport function clearPersistedAgentSession(\n visitorSessionId: string,\n options?: SessionStoreOptions,\n) {\n if (typeof sessionStorage === \"undefined\" || !visitorSessionId.trim()) return;\n const prefix = resolvePrefix(options);\n sessionStorage.removeItem(runtimeSessionIdKey(visitorSessionId, prefix));\n sessionStorage.removeItem(runtimeStreamIndexKey(visitorSessionId, prefix));\n}\n","import { ClientError } from \"eve/client\";\n\nexport function formatAgentError(error: unknown): string {\n if (error instanceof ClientError) {\n if (error.status === 401 && error.code === \"index_required\") {\n return \"Missing indexId — pass a published index id to createAgentClient().\";\n }\n if (error.status === 403 && error.code === \"agent_unavailable\") {\n return \"Agent unavailable for this index (disabled or unpublished).\";\n }\n if (error.status === 409 && error.code === \"session_not_active\") {\n return \"Session expired — send a new message to start again.\";\n }\n return error.message || `Runtime error (${error.status})`;\n }\n if (error instanceof DOMException && error.name === \"AbortError\") {\n return \"\";\n }\n if (error instanceof Error) return error.message;\n return \"Runtime request failed\";\n}\n","import { formatAgentError } from \"./errors\";\nimport { agentHealthUrl } from \"./config\";\nimport type { AgentHealthResult } from \"./types\";\n\nexport async function pingAgentHealth(\n runtimeOrigin?: string,\n fetchImpl: typeof fetch = fetch,\n): Promise<AgentHealthResult> {\n const healthUrl = agentHealthUrl(runtimeOrigin);\n\n try {\n const response = await fetchImpl(healthUrl, {\n headers: { Accept: \"application/json\" },\n cache: \"no-store\",\n });\n if (!response.ok) {\n return { ok: false, detail: `Health check failed (${response.status})` };\n }\n const payload = (await response.json()) as { status?: string; ok?: boolean };\n if (payload.ok === true) {\n return { ok: true, detail: payload.status ?? \"ready\" };\n }\n return { ok: false, detail: \"Runtime health response was not ok\" };\n } catch (error) {\n return { ok: false, detail: formatAgentError(error) || \"Health check failed\" };\n }\n}\n"],"mappings":"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","names":["import_client","import_client"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -14,6 +14,10 @@ type AgentSendTurnOptions = {
|
|
|
14
14
|
signal?: AbortSignal;
|
|
15
15
|
handlers: AgentStreamHandlers;
|
|
16
16
|
};
|
|
17
|
+
type AgentResumeTurnOptions = AgentSendTurnOptions & {
|
|
18
|
+
initialText?: string;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
17
21
|
type PersistedAgentSession = {
|
|
18
22
|
sessionId: string;
|
|
19
23
|
streamIndex: number;
|
|
@@ -38,6 +42,7 @@ type AgentClient = {
|
|
|
38
42
|
readonly runtimeOrigin: string;
|
|
39
43
|
readonly visitorSessionId: string;
|
|
40
44
|
sendTurn: (message: string, options: AgentSendTurnOptions) => Promise<string>;
|
|
45
|
+
resumeTurn: (options: AgentResumeTurnOptions) => Promise<string | null>;
|
|
41
46
|
reset: () => void;
|
|
42
47
|
cancelActive: () => void;
|
|
43
48
|
getActiveSessionId: () => string | undefined;
|
|
@@ -77,4 +82,4 @@ declare function loadPersistedAgentSession(visitorSessionId: string, options?: S
|
|
|
77
82
|
declare function savePersistedAgentSession(visitorSessionId: string, sessionId: string, streamIndex: number, options?: SessionStoreOptions): void;
|
|
78
83
|
declare function clearPersistedAgentSession(visitorSessionId: string, options?: SessionStoreOptions): void;
|
|
79
84
|
|
|
80
|
-
export { type AgentClient, type AgentClientOptions, type AgentHealthResult, type AgentIndexVersion, type AgentRuntimeConfig, type AgentSendTurnOptions, type AgentStreamHandlers, DEFAULT_RUNTIME_ORIGIN, type PersistedAgentSession, type SessionStoreOptions, agentHealthUrl, buildAgentStorageKeyPrefix, buildEveHost, clearPersistedAgentSession, clearVisitorSessionId, createAgentClient, formatAgentError, getOrCreateVisitorSessionId, loadPersistedAgentSession, pingAgentHealth, resolveAgentRuntimeConfig, savePersistedAgentSession };
|
|
85
|
+
export { type AgentClient, type AgentClientOptions, type AgentHealthResult, type AgentIndexVersion, type AgentResumeTurnOptions, type AgentRuntimeConfig, type AgentSendTurnOptions, type AgentStreamHandlers, DEFAULT_RUNTIME_ORIGIN, type PersistedAgentSession, type SessionStoreOptions, agentHealthUrl, buildAgentStorageKeyPrefix, buildEveHost, clearPersistedAgentSession, clearVisitorSessionId, createAgentClient, formatAgentError, getOrCreateVisitorSessionId, loadPersistedAgentSession, pingAgentHealth, resolveAgentRuntimeConfig, savePersistedAgentSession };
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ type AgentSendTurnOptions = {
|
|
|
14
14
|
signal?: AbortSignal;
|
|
15
15
|
handlers: AgentStreamHandlers;
|
|
16
16
|
};
|
|
17
|
+
type AgentResumeTurnOptions = AgentSendTurnOptions & {
|
|
18
|
+
initialText?: string;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
17
21
|
type PersistedAgentSession = {
|
|
18
22
|
sessionId: string;
|
|
19
23
|
streamIndex: number;
|
|
@@ -38,6 +42,7 @@ type AgentClient = {
|
|
|
38
42
|
readonly runtimeOrigin: string;
|
|
39
43
|
readonly visitorSessionId: string;
|
|
40
44
|
sendTurn: (message: string, options: AgentSendTurnOptions) => Promise<string>;
|
|
45
|
+
resumeTurn: (options: AgentResumeTurnOptions) => Promise<string | null>;
|
|
41
46
|
reset: () => void;
|
|
42
47
|
cancelActive: () => void;
|
|
43
48
|
getActiveSessionId: () => string | undefined;
|
|
@@ -77,4 +82,4 @@ declare function loadPersistedAgentSession(visitorSessionId: string, options?: S
|
|
|
77
82
|
declare function savePersistedAgentSession(visitorSessionId: string, sessionId: string, streamIndex: number, options?: SessionStoreOptions): void;
|
|
78
83
|
declare function clearPersistedAgentSession(visitorSessionId: string, options?: SessionStoreOptions): void;
|
|
79
84
|
|
|
80
|
-
export { type AgentClient, type AgentClientOptions, type AgentHealthResult, type AgentIndexVersion, type AgentRuntimeConfig, type AgentSendTurnOptions, type AgentStreamHandlers, DEFAULT_RUNTIME_ORIGIN, type PersistedAgentSession, type SessionStoreOptions, agentHealthUrl, buildAgentStorageKeyPrefix, buildEveHost, clearPersistedAgentSession, clearVisitorSessionId, createAgentClient, formatAgentError, getOrCreateVisitorSessionId, loadPersistedAgentSession, pingAgentHealth, resolveAgentRuntimeConfig, savePersistedAgentSession };
|
|
85
|
+
export { type AgentClient, type AgentClientOptions, type AgentHealthResult, type AgentIndexVersion, type AgentResumeTurnOptions, type AgentRuntimeConfig, type AgentSendTurnOptions, type AgentStreamHandlers, DEFAULT_RUNTIME_ORIGIN, type PersistedAgentSession, type SessionStoreOptions, agentHealthUrl, buildAgentStorageKeyPrefix, buildEveHost, clearPersistedAgentSession, clearVisitorSessionId, createAgentClient, formatAgentError, getOrCreateVisitorSessionId, loadPersistedAgentSession, pingAgentHealth, resolveAgentRuntimeConfig, savePersistedAgentSession };
|