@smooai/chat-widget 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -113,6 +113,8 @@ declare class SmoothAgentChatElement extends HTMLElement {
113
113
  private hasSent;
114
114
  /** Starter prompts shown as chips in the empty state. */
115
115
  private examplePrompts;
116
+ /** Resolved greeting text, cached so async (rAF) renders can reuse it. */
117
+ private greeting;
116
118
  /** Current mid-turn interrupt (OTP / tool-confirmation), or null. */
117
119
  private interrupt;
118
120
  private interruptEl;
@@ -123,6 +125,15 @@ declare class SmoothAgentChatElement extends HTMLElement {
123
125
  private dotEl;
124
126
  private inputEl;
125
127
  private sendBtn;
128
+ /** The live streaming assistant bubble whose textContent the rAF loop drives. */
129
+ private streamBubbleEl;
130
+ /** Message id the reveal is bound to (guards against stale frames after rebuilds). */
131
+ private streamMsgId;
132
+ /** Full buffered target text for the streaming message (grows as tokens arrive). */
133
+ private streamTarget;
134
+ /** How many chars of {@link streamTarget} are currently shown. */
135
+ private displayedLength;
136
+ private rafId;
126
137
  constructor();
127
138
  connectedCallback(): void;
128
139
  disconnectedCallback(): void;
@@ -151,7 +162,46 @@ declare class SmoothAgentChatElement extends HTMLElement {
151
162
  private syncOpenState;
152
163
  /** Grow the textarea with its content, up to the CSS max-height. */
153
164
  private autosize;
165
+ /**
166
+ * Receive a new message snapshot from the controller and update the view.
167
+ *
168
+ * `onMessages` fires on *every* `stream_token` delta. Rebuilding the whole
169
+ * list each frame is wasteful and fights the smooth reveal, so we take the
170
+ * cheap path when the only change is the trailing streaming assistant message
171
+ * growing: just bump the reveal *target* (the rAF loop drains it). Any
172
+ * structural change (new message, finalize, citations) triggers a full
173
+ * rebuild via {@link renderMessages}.
174
+ */
175
+ private handleMessages;
154
176
  private renderMessages;
177
+ /** True when the host/user prefers reduced motion (snap, no typewriter). */
178
+ private prefersReducedMotion;
179
+ /**
180
+ * Bind the rAF typewriter to a freshly built streaming bubble. Preserves the
181
+ * already-revealed prefix across rebuilds (so a structural rebuild mid-stream
182
+ * doesn't restart the reveal from zero), then resumes the loop.
183
+ */
184
+ private bindReveal;
185
+ /** Start the rAF loop if it isn't already running. */
186
+ private ensureRevealLoop;
187
+ /**
188
+ * One animation frame of the reveal. Advances `displayedLength` toward the
189
+ * buffered target at an ADAPTIVE rate — the deeper the backlog, the more
190
+ * chars per frame — so the reveal stays smooth yet never falls behind the
191
+ * network. Updates ONLY the bound bubble's textContent (no list rebuild).
192
+ */
193
+ private tickReveal;
194
+ /** Snap the bound bubble to the full buffered text immediately (reduced-motion / no-rAF). */
195
+ private snapReveal;
196
+ /** Cancel any in-flight reveal loop and clear its state (called on full rebuild). */
197
+ private resetReveal;
198
+ /**
199
+ * Auto-scroll the message list to the bottom — but don't fight a visitor who
200
+ * has scrolled up to read history. When `force` (a structural rebuild) we
201
+ * always pin to bottom; during the streaming reveal we only follow if the
202
+ * viewport is already near the bottom.
203
+ */
204
+ private scrollToBottom;
155
205
  /** Wrap a bubble in a `.row`, prefixing assistant rows with a mini avatar. */
156
206
  private buildRow;
157
207
  private greetingBubble;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/element.ts","../src/loader-core.ts","../src/conversation.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/element.ts","../src/loader-core.ts","../src/conversation.ts"],"mappings":"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"}