@copilotkit/vue 1.60.1 → 1.61.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.
@@ -1,4 +1,4 @@
1
- import { type Ref } from "vue";
1
+ import type { Ref } from "vue";
2
2
  export interface UsePinToSendOptions {
3
3
  scrollRef: Ref<HTMLElement | null>;
4
4
  contentRef: Ref<HTMLElement | null>;
@@ -19,8 +19,9 @@ export interface UsePinToSendOptions {
19
19
  * `viewportHeight - bubbleHeight - topOffset` and scrolls so the bubble
20
20
  * sits `topOffset` from the viewport top (padding above the bubble is
21
21
  * pushed off-screen).
22
- * - Installs a shrink-only `ResizeObserver` on `contentRef` that collapses
23
- * the spacer as the assistant response grows; never grows it back.
22
+ * - Installs a `ResizeObserver` on `contentRef` that adjusts the spacer in
23
+ * both directions as content below the anchored message changes, keeping
24
+ * the bubble pinned.
24
25
  * - Cancels the scheduled `requestAnimationFrame` and disconnects the
25
26
  * `ResizeObserver` on subsequent re-runs and on scope dispose.
26
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"use-pin-to-send.d.ts","sourceRoot":"","sources":["../../../src/v2/hooks/use-pin-to-send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAM9C,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACnC,UAAU,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACpC,SAAS,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAc,GACf,EAAE,mBAAmB,GAAG,IAAI,CAkH5B"}
1
+ {"version":3,"file":"use-pin-to-send.d.ts","sourceRoot":"","sources":["../../../src/v2/hooks/use-pin-to-send.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAM/B,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACnC,UAAU,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACpC,SAAS,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAc,GACf,EAAE,mBAAmB,GAAG,IAAI,CA4G5B"}
package/dist/v2/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@copilotkit/core"),i=require("@ag-ui/client"),e=require("../use-render-activity-message-9WEAK73b.cjs"),n=require("@copilotkit/shared");exports.A2UIActivityContentSchema=e.A2UIActivityContentSchema;exports.A2UISurfaceActivityRenderer=e._sfc_main;exports.A2UISurfaceActivityType=e.A2UISurfaceActivityType;exports.CopilotChat=e.CopilotChat;exports.CopilotChatAssistantMessage=e._sfc_main$1;exports.CopilotChatAttachmentQueue=e._sfc_main$2;exports.CopilotChatAttachmentRenderer=e._sfc_main$3;exports.CopilotChatAudioRecorder=e._sfc_main$4;exports.CopilotChatConfigurationProvider=e._sfc_main$5;exports.CopilotChatDefaultLabels=e.CopilotChatDefaultLabels;exports.CopilotChatInput=e._sfc_main$6;exports.CopilotChatMessageView=e._sfc_main$7;exports.CopilotChatReasoningMessage=e._sfc_main$8;exports.CopilotChatSuggestionPill=e._sfc_main$9;exports.CopilotChatSuggestionView=e._sfc_main$10;exports.CopilotChatToggleButton=e.CopilotChatToggleButton;exports.CopilotChatToggleButtonCloseIcon=e.CopilotChatToggleButtonCloseIcon;exports.CopilotChatToggleButtonOpenIcon=e.CopilotChatToggleButtonOpenIcon;exports.CopilotChatToolCallsView=e._sfc_main$11;exports.CopilotChatUserMessage=e._sfc_main$12;exports.CopilotChatView=e._sfc_main$13;exports.CopilotKitCoreVue=e.CopilotKitCoreVue;exports.CopilotKitInspector=e._sfc_main$14;exports.CopilotKitProvider=e._sfc_main$15;exports.CopilotModalHeader=e.CopilotModalHeader;exports.CopilotPopup=e._sfc_main$16;exports.CopilotPopupView=e.CopilotPopupView;exports.CopilotSidebar=e._sfc_main$17;exports.CopilotSidebarView=e.CopilotSidebarView;exports.GenerateSandboxedUiArgsSchema=e.GenerateSandboxedUiArgsSchema;exports.LicenseContextKey=e.LicenseContextKey;exports.MCPAppsActivityContentSchema=e.MCPAppsActivityContentSchema;exports.MCPAppsActivityRenderer=e.MCPAppsActivityRenderer;exports.MCPAppsActivityType=e.MCPAppsActivityType;exports.OpenGenerativeUIActivityRenderer=e.OpenGenerativeUIActivityRenderer;exports.OpenGenerativeUIActivityType=e.OpenGenerativeUIActivityType;exports.OpenGenerativeUIContentSchema=e.OpenGenerativeUIContentSchema;exports.OpenGenerativeUIRenderer=e.OpenGenerativeUIRenderer;exports.OpenGenerativeUIToolRenderer=e.OpenGenerativeUIToolRenderer;exports.UseAgentUpdate=e.UseAgentUpdate;exports.createA2UIMessageRenderer=e.createA2UIMessageRenderer;exports.createDefaultLicenseRef=e.createDefaultLicenseRef;exports.defineToolCallRenderer=e.defineToolCallRenderer;exports.extractCompleteStyles=e.extractCompleteStyles;exports.getOperationSurfaceId=e.getOperationSurfaceId;exports.processPartialHtml=e.processPartialHtml;exports.useAgent=e.useAgent;exports.useAgentContext=e.useAgentContext;exports.useAttachments=e.useAttachments;exports.useCapabilities=e.useCapabilities;exports.useComponent=e.useComponent;exports.useConfigureSuggestions=e.useConfigureSuggestions;exports.useCopilotChatConfiguration=e.useCopilotChatConfiguration;exports.useCopilotKit=e.useCopilotKit;exports.useDefaultRenderTool=e.useDefaultRenderTool;exports.useFrontendTool=e.useFrontendTool;exports.useHumanInTheLoop=e.useHumanInTheLoop;exports.useInterrupt=e.useInterrupt;exports.useKatexStyles=e.useKatexStyles;exports.useKeyboardHeight=e.useKeyboardHeight;exports.useLicenseContext=e.useLicenseContext;exports.useRenderActivityMessage=e.useRenderActivityMessage;exports.useRenderCustomMessages=e.useRenderCustomMessages;exports.useRenderTool=e.useRenderTool;exports.useSandboxFunctions=e.useSandboxFunctions;exports.useSuggestions=e.useSuggestions;exports.useThreads=e.useThreads;Object.defineProperty(exports,"createLicenseContextValue",{enumerable:!0,get:()=>n.createLicenseContextValue});Object.keys(o).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>o[t]})});Object.keys(i).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>i[t]})});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@copilotkit/core"),i=require("@ag-ui/client"),e=require("../use-render-activity-message-B0zDl3Lc.cjs"),n=require("@copilotkit/shared");exports.A2UIActivityContentSchema=e.A2UIActivityContentSchema;exports.A2UISurfaceActivityRenderer=e._sfc_main;exports.A2UISurfaceActivityType=e.A2UISurfaceActivityType;exports.CopilotChat=e.CopilotChat;exports.CopilotChatAssistantMessage=e._sfc_main$1;exports.CopilotChatAttachmentQueue=e._sfc_main$2;exports.CopilotChatAttachmentRenderer=e._sfc_main$3;exports.CopilotChatAudioRecorder=e._sfc_main$4;exports.CopilotChatConfigurationProvider=e._sfc_main$5;exports.CopilotChatDefaultLabels=e.CopilotChatDefaultLabels;exports.CopilotChatInput=e._sfc_main$6;exports.CopilotChatMessageView=e._sfc_main$7;exports.CopilotChatReasoningMessage=e._sfc_main$8;exports.CopilotChatSuggestionPill=e._sfc_main$9;exports.CopilotChatSuggestionView=e._sfc_main$10;exports.CopilotChatToggleButton=e.CopilotChatToggleButton;exports.CopilotChatToggleButtonCloseIcon=e.CopilotChatToggleButtonCloseIcon;exports.CopilotChatToggleButtonOpenIcon=e.CopilotChatToggleButtonOpenIcon;exports.CopilotChatToolCallsView=e._sfc_main$11;exports.CopilotChatUserMessage=e._sfc_main$12;exports.CopilotChatView=e._sfc_main$13;exports.CopilotKitCoreVue=e.CopilotKitCoreVue;exports.CopilotKitInspector=e._sfc_main$14;exports.CopilotKitProvider=e._sfc_main$15;exports.CopilotModalHeader=e.CopilotModalHeader;exports.CopilotPopup=e._sfc_main$16;exports.CopilotPopupView=e.CopilotPopupView;exports.CopilotSidebar=e._sfc_main$17;exports.CopilotSidebarView=e.CopilotSidebarView;exports.GenerateSandboxedUiArgsSchema=e.GenerateSandboxedUiArgsSchema;exports.LicenseContextKey=e.LicenseContextKey;exports.MCPAppsActivityContentSchema=e.MCPAppsActivityContentSchema;exports.MCPAppsActivityRenderer=e.MCPAppsActivityRenderer;exports.MCPAppsActivityType=e.MCPAppsActivityType;exports.OpenGenerativeUIActivityRenderer=e.OpenGenerativeUIActivityRenderer;exports.OpenGenerativeUIActivityType=e.OpenGenerativeUIActivityType;exports.OpenGenerativeUIContentSchema=e.OpenGenerativeUIContentSchema;exports.OpenGenerativeUIRenderer=e.OpenGenerativeUIRenderer;exports.OpenGenerativeUIToolRenderer=e.OpenGenerativeUIToolRenderer;exports.UseAgentUpdate=e.UseAgentUpdate;exports.createA2UIMessageRenderer=e.createA2UIMessageRenderer;exports.createDefaultLicenseRef=e.createDefaultLicenseRef;exports.defineToolCallRenderer=e.defineToolCallRenderer;exports.extractCompleteStyles=e.extractCompleteStyles;exports.getOperationSurfaceId=e.getOperationSurfaceId;exports.processPartialHtml=e.processPartialHtml;exports.useAgent=e.useAgent;exports.useAgentContext=e.useAgentContext;exports.useAttachments=e.useAttachments;exports.useCapabilities=e.useCapabilities;exports.useComponent=e.useComponent;exports.useConfigureSuggestions=e.useConfigureSuggestions;exports.useCopilotChatConfiguration=e.useCopilotChatConfiguration;exports.useCopilotKit=e.useCopilotKit;exports.useDefaultRenderTool=e.useDefaultRenderTool;exports.useFrontendTool=e.useFrontendTool;exports.useHumanInTheLoop=e.useHumanInTheLoop;exports.useInterrupt=e.useInterrupt;exports.useKatexStyles=e.useKatexStyles;exports.useKeyboardHeight=e.useKeyboardHeight;exports.useLicenseContext=e.useLicenseContext;exports.useRenderActivityMessage=e.useRenderActivityMessage;exports.useRenderCustomMessages=e.useRenderCustomMessages;exports.useRenderTool=e.useRenderTool;exports.useSandboxFunctions=e.useSandboxFunctions;exports.useSuggestions=e.useSuggestions;exports.useThreads=e.useThreads;Object.defineProperty(exports,"createLicenseContextValue",{enumerable:!0,get:()=>n.createLicenseContextValue});Object.keys(o).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>o[t]})});Object.keys(i).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>i[t]})});
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/v2/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from "@copilotkit/core";
2
2
  export * from "@ag-ui/client";
3
- import { A as o, _ as i, a as n, C, b as r, c as p, d as l, e as u, f as c, g, h as d, i as h, j as A, k as S, l as m, m as v, n as y, o as I, p as f, q as R, r as T, s as U, t as x, u as M, v as P, w as b, x as V, y as K, z as O, G as w, L as G, M as L, B as H, D as B, O as D, E as F, F as Q, H as j, I as k, U as q, J as z, K as E, N as J, P as N, Q as W, R as X, S as Y, T as Z, V as _, W as $, X as ee, Y as ae, Z as te, $ as se, a0 as oe, a1 as ie, a2 as ne, a3 as Ce, a4 as re, a5 as pe, a6 as le, a7 as ue, a8 as ce, a9 as ge, aa as de, ab as he, ac as Ae } from "../use-render-activity-message-Dw44JCPl.js";
3
+ import { A as o, _ as i, a as n, C, b as r, c as p, d as l, e as u, f as c, g, h as d, i as h, j as A, k as S, l as m, m as v, n as y, o as I, p as f, q as R, r as T, s as U, t as x, u as M, v as P, w as b, x as V, y as K, z as O, G as w, L as G, M as L, B as H, D as B, O as D, E as F, F as Q, H as j, I as k, U as q, J as z, K as E, N as J, P as N, Q as W, R as X, S as Y, T as Z, V as _, W as $, X as ee, Y as ae, Z as te, $ as se, a0 as oe, a1 as ie, a2 as ne, a3 as Ce, a4 as re, a5 as pe, a6 as le, a7 as ue, a8 as ce, a9 as ge, aa as de, ab as he, ac as Ae } from "../use-render-activity-message-BB43N8wJ.js";
4
4
  import { createLicenseContextValue as me } from "@copilotkit/shared";
5
5
  export {
6
6
  o as A2UIActivityContentSchema,
@@ -11,7 +11,7 @@ export interface CopilotKitProviderProps {
11
11
  publicApiKey?: string;
12
12
  publicLicenseKey?: string;
13
13
  /**
14
- * Signed license token for offline verification of premium features.
14
+ * Signed license token for offline verification of Enterprise Intelligence Platform features.
15
15
  * Obtain from https://dashboard.operations.copilotkit.ai.
16
16
  */
17
17
  licenseToken?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"CopilotKitProvider.vue.d.ts","sourceRoot":"","sources":["../../../src/v2/providers/CopilotKitProvider.vue"],"names":[],"mappings":"AAypBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgCnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EAElB,MAAM,UAAU,CAAC;AA2pBlB,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AA2B/C,QAAA,MAAM,eAAe;;;;;;;;;;;wBAzuBrB,CAtmBQ;mBAsmBR,CAtmB6C;;;;aAsmB7C,CAjmBC;eAimBD,CAjmB0B;wBAimB1B,CA/lBK;qBA+lBL,CA9lBe;;6EA80Cb,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAa1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"CopilotKitProvider.vue.d.ts","sourceRoot":"","sources":["../../../src/v2/providers/CopilotKitProvider.vue"],"names":[],"mappings":"AAypBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgCnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EAElB,MAAM,UAAU,CAAC;AA2pBlB,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AA2B/C,QAAA,MAAM,eAAe;;;;;;;;;;;wBAzuBrB,CAtmBiC;mBAsmBjC,CAtmBsE;;;;aAsmBtE,CAjmB0B;eAimB1B,CA/lBE;wBA+lBF,CA9lBS;qBA8lBT,CA7lBiB;;6EA60Cf,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAa1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@copilotkit/vue",
3
- "version": "1.60.1",
3
+ "version": "1.61.0",
4
4
  "private": false,
5
5
  "description": "Vue 3 components and composables for CopilotKit",
6
6
  "keywords": [
@@ -70,9 +70,9 @@
70
70
  "streamdown-vue": "^1.0.29",
71
71
  "zod": "^3.25.75",
72
72
  "zod-to-json-schema": "^3.24.5",
73
- "@copilotkit/core": "1.60.1",
74
- "@copilotkit/shared": "1.60.1",
75
- "@copilotkit/web-inspector": "1.60.1"
73
+ "@copilotkit/core": "1.61.0",
74
+ "@copilotkit/web-inspector": "1.61.0",
75
+ "@copilotkit/shared": "1.61.0"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@eslint/js": "^9.39.2",
@@ -13,7 +13,7 @@ export interface CopilotKitProps extends CopilotKitProviderProps {
13
13
  publicApiKey?: string;
14
14
 
15
15
  /**
16
- * Your public license key for accessing premium CopilotKit features.
16
+ * Your public license key for accessing Enterprise Intelligence Platform features.
17
17
  */
18
18
  publicLicenseKey?: string;
19
19
 
@@ -2,10 +2,8 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
2
  import { defineComponent, h, nextTick, provide, ref } from "vue";
3
3
  import { mount } from "@vue/test-utils";
4
4
  import { usePinToSend } from "../use-pin-to-send";
5
- import {
6
- LastUserMessageKey,
7
- type LastUserMessageState,
8
- } from "../../components/chat/last-user-message-context";
5
+ import { LastUserMessageKey } from "../../components/chat/last-user-message-context";
6
+ import type { LastUserMessageState } from "../../components/chat/last-user-message-context";
9
7
 
10
8
  // Strict counterpart of React `use-pin-to-send.test.tsx`.
11
9
  // Keep case order, wording, and harness shape aligned 1:1 with the React suite.
@@ -179,7 +177,7 @@ describe("usePinToSend", () => {
179
177
  });
180
178
  });
181
179
 
182
- it("shrinks spacer as content height grows (does not grow it)", async () => {
180
+ it("adjusts spacer as content height changes to keep the user message pinned", async () => {
183
181
  let observed: (() => void) | null = null;
184
182
  // Must use a class (not an arrow function) so `new ResizeObserver(...)` works in jsdom.
185
183
  class ROStub {
@@ -216,11 +214,14 @@ describe("usePinToSend", () => {
216
214
  observed?.();
217
215
  expect(parseInt(harness.spacer.style.height, 10)).toBeLessThan(744);
218
216
 
219
- // Simulate content shrinking — spacer should NOT grow back
217
+ // Simulate content shrinking — spacer should grow back to preserve the
218
+ // original anchor instead of leaving the user message shifted.
220
219
  setHeight(harness.content, 100);
221
220
  const shrunkHeight = harness.spacer.style.height;
222
221
  observed?.();
223
- expect(harness.spacer.style.height).toBe(shrunkHeight);
222
+ expect(parseInt(harness.spacer.style.height, 10)).toBeGreaterThan(
223
+ parseInt(shrunkHeight, 10),
224
+ );
224
225
  } finally {
225
226
  wrapper?.unmount();
226
227
  global.ResizeObserver = prevRO;
@@ -1,4 +1,5 @@
1
- import { inject, watch, type Ref } from "vue";
1
+ import { inject, watch } from "vue";
2
+ import type { Ref } from "vue";
2
3
  import {
3
4
  LastUserMessageKey,
4
5
  createDefaultLastUserMessageRef,
@@ -25,8 +26,9 @@ export interface UsePinToSendOptions {
25
26
  * `viewportHeight - bubbleHeight - topOffset` and scrolls so the bubble
26
27
  * sits `topOffset` from the viewport top (padding above the bubble is
27
28
  * pushed off-screen).
28
- * - Installs a shrink-only `ResizeObserver` on `contentRef` that collapses
29
- * the spacer as the assistant response grows; never grows it back.
29
+ * - Installs a `ResizeObserver` on `contentRef` that adjusts the spacer in
30
+ * both directions as content below the anchored message changes, keeping
31
+ * the bubble pinned.
30
32
  * - Cancels the scheduled `requestAnimationFrame` and disconnects the
31
33
  * `ResizeObserver` on subsequent re-runs and on scope dispose.
32
34
  */
@@ -43,7 +45,6 @@ export function usePinToSend({
43
45
  );
44
46
 
45
47
  let lastNonce = -1;
46
- let currentSpacerHeight = 0;
47
48
  let raf: number | null = null;
48
49
  let ro: ResizeObserver | null = null;
49
50
 
@@ -109,7 +110,6 @@ export function usePinToSend({
109
110
  );
110
111
 
111
112
  spacerEl.style.height = `${spacerHeight}px`;
112
- currentSpacerHeight = spacerHeight;
113
113
 
114
114
  if (typeof requestAnimationFrame === "function") {
115
115
  raf = requestAnimationFrame(() => {
@@ -124,10 +124,9 @@ export function usePinToSend({
124
124
  });
125
125
  }
126
126
 
127
- // Shrink-only ResizeObserver: as the assistant response grows below the
128
- // anchored user message, collapse the spacer by the same amount so total
129
- // scrollable space below the bubble stays constant (and the bubble stays
130
- // pinned). Never grow the spacer after initial sizing.
127
+ // As content below the anchored user message changes, adjust the spacer
128
+ // by the same amount so total scrollable space below the bubble stays
129
+ // constant and the bubble stays pinned.
131
130
  if (typeof ResizeObserver !== "undefined") {
132
131
  ro = new ResizeObserver(() => {
133
132
  if (!contentEl || !spacerEl || !scrollEl) return;
@@ -139,10 +138,7 @@ export function usePinToSend({
139
138
  const consumedBelow =
140
139
  contentHeight - targetOffsetWithinContent - userMessageHeight;
141
140
  const remaining = Math.max(0, spacerHeight - consumedBelow);
142
- if (remaining < currentSpacerHeight) {
143
- spacerEl.style.height = `${remaining}px`;
144
- currentSpacerHeight = remaining;
145
- }
141
+ spacerEl.style.height = `${remaining}px`;
146
142
  });
147
143
  ro.observe(contentEl);
148
144
  }
@@ -20,7 +20,7 @@ export interface CopilotKitProviderProps {
20
20
  publicApiKey?: string;
21
21
  publicLicenseKey?: string;
22
22
  /**
23
- * Signed license token for offline verification of premium features.
23
+ * Signed license token for offline verification of Enterprise Intelligence Platform features.
24
24
  * Obtain from https://dashboard.operations.copilotkit.ai.
25
25
  */
26
26
  licenseToken?: string;